summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--.gitignore4
-rw-r--r--ChangeLog527
-rw-r--r--Checklist10
-rw-r--r--Makefile.am26
-rw-r--r--Makefile.in102
-rw-r--r--NEWS49
-rw-r--r--README28
-rw-r--r--README_d/ChangeLog33
-rw-r--r--README_d/README.VMS155
-rw-r--r--README_d/README.gcc-311
-rw-r--r--README_d/README.pc2
-rw-r--r--README_d/README.solaris18
-rw-r--r--TODO186
-rw-r--r--aclocal.m4170
-rw-r--r--array.c22
-rw-r--r--awk.h36
-rw-r--r--awkgram.c2659
-rw-r--r--awkgram.y88
-rw-r--r--awklib/ChangeLog9
-rw-r--r--awklib/Makefile.am1
-rw-r--r--awklib/Makefile.in61
-rw-r--r--awklib/eg/data/BBS-list11
-rw-r--r--awklib/eg/data/mail-list11
-rw-r--r--awklib/eg/lib/getopt.awk2
-rw-r--r--awklib/eg/lib/quicksort.awk3
-rw-r--r--awklib/eg/lib/readfile.awk15
-rw-r--r--awklib/eg/prog/cut.awk2
-rwxr-xr-xbootstrap.sh3
-rw-r--r--builtin.c117
-rw-r--r--cint_array.c4
-rw-r--r--cmd.h5
-rw-r--r--command.c1437
-rw-r--r--command.y10
-rwxr-xr-xconfig.guess177
-rwxr-xr-xconfig.rpath106
-rwxr-xr-xconfig.sub70
-rw-r--r--configh.in9
-rwxr-xr-xconfigure401
-rw-r--r--configure.ac95
-rw-r--r--debug.c124
-rwxr-xr-xdepcomp433
-rw-r--r--dfa.c1221
-rw-r--r--dfa.h12
-rw-r--r--doc/ChangeLog222
-rw-r--r--doc/Makefile.in60
-rw-r--r--doc/awkcard.in13
-rw-r--r--doc/gawk.126
-rw-r--r--doc/gawk.info4793
-rw-r--r--doc/gawk.texi4132
-rw-r--r--doc/gawkinet.info72
-rw-r--r--doc/gawkinet.texi6
-rw-r--r--doc/gawktexi.in4096
-rw-r--r--doc/texinfo.tex257
-rw-r--r--eval.c5
-rw-r--r--ext.c27
-rw-r--r--extension/ChangeLog120
-rw-r--r--extension/Makefile.am27
-rw-r--r--extension/Makefile.in112
-rw-r--r--extension/aclocal.m4170
-rw-r--r--extension/build-aux/ChangeLog17
-rwxr-xr-xextension/build-aux/config.guess188
-rwxr-xr-xextension/build-aux/config.rpath106
-rwxr-xr-xextension/build-aux/config.sub99
-rwxr-xr-xextension/build-aux/depcomp442
-rwxr-xr-xextension/build-aux/install-sh337
-rw-r--r--extension/build-aux/ltmain.sh5169
-rw-r--r--extension/configh.in23
-rwxr-xr-xextension/configure1766
-rw-r--r--extension/configure.ac22
-rw-r--r--extension/filefuncs.c36
-rw-r--r--extension/fnmatch.c14
-rw-r--r--extension/gawkdirfd.h14
-rw-r--r--extension/gawkfts.c10
-rw-r--r--extension/inplace.c18
-rw-r--r--extension/m4/ChangeLog9
-rw-r--r--extension/m4/libtool.m41971
-rw-r--r--extension/m4/ltoptions.m472
-rw-r--r--extension/m4/ltversion.m412
-rw-r--r--extension/readdir.c13
-rw-r--r--extension/readfile.3am20
-rw-r--r--extension/readfile.c151
-rw-r--r--extension/revtwoway.c9
-rw-r--r--extension/rwarray.c8
-rw-r--r--extension/testext.c10
-rw-r--r--extension/time.c49
-rw-r--r--field.c17
-rw-r--r--floatcomp.c24
-rw-r--r--gawkapi.c125
-rw-r--r--gawkapi.h24
-rw-r--r--getopt.c10
-rw-r--r--getopt.h2
-rw-r--r--getopt1.c2
-rw-r--r--getopt_int.h2
-rw-r--r--helpers/ChangeLog21
-rwxr-xr-xhelpers/do.outline102
-rwxr-xr-xhelpers/quoteconvert2.sh49
-rw-r--r--helpers/scanfmt.c22
-rw-r--r--helpers/testdfa.c12
-rw-r--r--helpers/tryfmt.c23
-rwxr-xr-xinstall-sh337
-rw-r--r--interpret.h4
-rw-r--r--io.c59
-rw-r--r--m4/ChangeLog24
-rw-r--r--m4/readline.m415
-rw-r--r--main.c86
-rw-r--r--missing_d/ChangeLog4
-rw-r--r--msg.c17
-rw-r--r--nonposix.h31
-rw-r--r--old-extension/ChangeLog7
-rw-r--r--old-extension/dbarray.awk2
-rw-r--r--old-extension/record.awk4
-rw-r--r--old-extension/spec_array.c4
-rw-r--r--old-extension/testsparr.awk2
-rw-r--r--pc/ChangeLog49
-rw-r--r--pc/Makefile11
-rw-r--r--pc/Makefile.tst1714
-rw-r--r--pc/config.h15
-rw-r--r--pc/gawkmisc.pc31
-rw-r--r--pc/popen.c23
-rw-r--r--po/ChangeLog4
-rw-r--r--po/LINGUAS1
-rw-r--r--po/ca.gmobin0 -> 83005 bytes
-rw-r--r--po/ca.po3734
-rw-r--r--po/da.gmobin42270 -> 42160 bytes
-rw-r--r--po/da.po1157
-rw-r--r--po/de.gmobin45338 -> 45199 bytes
-rw-r--r--po/de.po1159
-rw-r--r--po/es.gmobin44713 -> 44600 bytes
-rw-r--r--po/es.po1157
-rw-r--r--po/fi.gmobin45006 -> 84555 bytes
-rw-r--r--po/fi.po2274
-rw-r--r--po/fr.gmobin85144 -> 85628 bytes
-rw-r--r--po/fr.po1167
-rw-r--r--po/gawk.pot1155
-rw-r--r--po/it.gmobin80497 -> 81018 bytes
-rw-r--r--po/it.po1160
-rw-r--r--po/ja.gmobin47970 -> 47970 bytes
-rw-r--r--po/ja.po1158
-rw-r--r--po/ms.gmobin1184 -> 1184 bytes
-rw-r--r--po/ms.po1153
-rw-r--r--po/nl.gmobin69748 -> 80863 bytes
-rw-r--r--po/nl.po1379
-rw-r--r--po/pl.gmobin70599 -> 71101 bytes
-rw-r--r--po/pl.po1167
-rw-r--r--po/sv.gmobin80433 -> 80916 bytes
-rw-r--r--po/sv.po1172
-rw-r--r--po/vi.gmobin92142 -> 93025 bytes
-rw-r--r--po/vi.po1466
-rw-r--r--posix/ChangeLog4
-rw-r--r--re.c9
-rw-r--r--regcomp.c100
-rw-r--r--regex.c6
-rw-r--r--regex.h5
-rw-r--r--regex_internal.c30
-rw-r--r--regex_internal.h23
-rw-r--r--regexec.c2
-rw-r--r--str_array.c79
-rw-r--r--symbol.c9
-rw-r--r--test/ChangeLog200
-rwxr-xr-xtest/Gentests12
-rw-r--r--test/Makefile.am610
-rw-r--r--test/Makefile.in1746
-rw-r--r--test/Maketests1077
-rw-r--r--test/backbigs1.awk1
-rw-r--r--test/backbigs1.in1
-rw-r--r--test/backbigs1.ok0
-rw-r--r--test/backsmalls1.awk1
-rw-r--r--test/backsmalls1.in36
-rw-r--r--test/backsmalls1.ok14
-rw-r--r--test/backsmalls2.awk10
-rw-r--r--test/backsmalls2.ok0
-rw-r--r--test/badassign1.awk1
-rw-r--r--test/badassign1.ok3
-rw-r--r--test/fts.awk31
-rw-r--r--test/mpfrnegzero.awk15
-rw-r--r--test/mpfrnegzero.ok9
-rw-r--r--test/nfloop.awk8
-rw-r--r--test/nfloop.ok1
-rw-r--r--test/rand.ok2
-rw-r--r--test/randtest.ok0
-rwxr-xr-xtest/randtest.sh113
-rw-r--r--test/readdir0.awk36
-rw-r--r--test/readfile2.awk12
-rw-r--r--test/readfile2.ok21
-rw-r--r--test/regrange.ok2
-rw-r--r--test/rwarray.awk25
-rw-r--r--test/split_after_fpat.awk11
-rw-r--r--test/split_after_fpat.in1
-rw-r--r--test/split_after_fpat.ok4
-rw-r--r--test/strftime.awk42
-rw-r--r--version.c2
-rw-r--r--version.in3
-rw-r--r--vms/ChangeLog138
-rw-r--r--vms/backup_gawk_src.com113
-rw-r--r--vms/build_gawk_pcsi_desc.com428
-rw-r--r--vms/build_gawk_pcsi_text.com179
-rw-r--r--vms/build_gawk_release_notes.com67
-rw-r--r--vms/compare_gawk_source.com367
-rw-r--r--vms/config_h.com1661
-rw-r--r--vms/descrip.mms167
-rw-r--r--vms/fcntl.h10
-rw-r--r--vms/gawk.hlp34
-rw-r--r--vms/gawk_alias_setup.com110
-rw-r--r--vms/gawk_build_steps.txt220
-rw-r--r--vms/gawk_ident.com21
-rw-r--r--vms/gawk_plugin.opt5
-rw-r--r--vms/gawk_release_note_start.txt189
-rw-r--r--vms/gawk_verb.com26
-rw-r--r--vms/gawkmisc.vms457
-rw-r--r--vms/generate_config_vms_h_gawk.com298
-rw-r--r--vms/gnv_gawk_startup.com75
-rw-r--r--vms/make_pcsi_gawk_kit_name.com189
-rw-r--r--vms/pcsi_gawk_file_list.txt120
-rw-r--r--vms/pcsi_product_gawk.com187
-rw-r--r--vms/remove_old_gawk.com113
-rw-r--r--vms/stage_gawk_install.com300
-rw-r--r--vms/vax/ChangeLog11
-rw-r--r--vms/vax/gawk_plugin_xfer.mar_exact13
-rw-r--r--vms/vax/gawk_plugin_xfer.opt5
-rw-r--r--vms/vax/macro32_exactcase.com16
-rw-r--r--vms/vax/macro32_exactcase.patch11
-rw-r--r--vms/vms-conf.h684
-rw-r--r--vms/vms-notes8
-rw-r--r--vms/vms.h24
-rw-r--r--vms/vms_args.c24
-rw-r--r--vms/vms_cli.c32
-rw-r--r--vms/vms_crtl_init.c470
-rw-r--r--vms/vms_fwrite.c14
-rw-r--r--vms/vms_gawk.c17
-rw-r--r--vms/vms_misc.c29
-rw-r--r--vms/vms_popen.c17
-rw-r--r--vms/vmsbuild.com56
-rw-r--r--vms/vmstest.com176
233 files changed, 41716 insertions, 26207 deletions
diff --git a/.gitignore b/.gitignore
index 1d665c4d..72445191 100644
--- a/.gitignore
+++ b/.gitignore
@@ -5,16 +5,14 @@
# Directories
autom4te.cache
.deps
+*.dSYM
# Single files.
Makefile
config.h
config.log
config.status
-dgawk
gawk
-pgawk
stamp-h1
-libtool
test/fmtspcl.ok
diff --git a/ChangeLog b/ChangeLog
index 2ac1a580..a5b83af0 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,530 @@
+2014-04-11 Arnold D. Robbins <arnold@skeeve.com>
+
+ * io.c (closemabyesocket): Define if not defined, e.g. building
+ without socket code. Thanks to dave.gma@googlemail.com (Dave Sines)
+ for the report.
+
+2014-04-08 Arnold D. Robbins <arnold@skeeve.com>
+
+ * 4.1.1: Release tar ball made.
+
+2014-04-08 Arnold D. Robbins <arnold@skeeve.com>
+
+ * README: Update.
+ * configure.ac: Bump version.
+
+2014-04-03 Arnold D. Robbins <arnold@skeeve.com>
+
+ * regcomp.c (parse_bracket_exp): Move a call to `re_free' inside
+ an ifdef. Makes the code marginally cleaner.
+
+2014-03-30 Arnold D. Robbins <arnold@skeeve.com>
+
+ * dfa.c: Sync with GNU grep.
+
+2014-03-28 Arnold D. Robbins <arnold@skeeve.com>
+
+ * configure.ac: Remove duplicate AC_HEADER_TIME and rearrange
+ order of macros some. May help on older systems.
+
+2014-03-23 Arnold D. Robbins <arnold@skeeve.com>
+
+ * dfa.c: Move include of dfa.h around for correct building
+ on Irix. Thanks to Nelson H.F. Beebe for the report.
+
+ Unrelated:
+
+ * .gitignore: Simplify .dSYM pattern for Mac OS X.
+
+2014-03-21 Arnold D. Robbins <arnold@skeeve.com>
+
+ * dfa.c (using_simple_locale): Add ifdefs in case there is no
+ locale support at all. Thanks to Scott Deifik for the report.
+
+ Unrelated:
+
+ * main.c (UPDATE_YEAR): Set to 2014.
+
+2014-03-17 Arnold D. Robbins <arnold@skeeve.com>
+
+ * .gitignore: Add .dSYM directories for Mac OS X.
+ Thanks to Hermann Peifer for the suggestion.
+
+2014-03-10 Arnold D. Robbins <arnold@skeeve.com>
+
+ * dfa.h, dfa.c: Sync with grep. Yet again.
+ * regex_internal.c (built_wcs_upper_buffer, build_upper_buffer):
+ Fixes from GNULIB for mixed case matching on Mac OS X.
+
+ Unrelated:
+
+ * builtin.c (format_tree): Smarten handling of %' flag. Always
+ pass it in for floating point formats. Then only add the
+ thousands_sep if there is one. Also, allow for thousands_sep
+ to be a string, not just one character. Thanks to Michal Jaegermann
+ for the report.
+
+2014-03-08 Andrew J. Schorr <aschorr@telemetry-investments.com>
+
+ * gawkapi.c (api_impl): Add memory allocation function pointers.
+ * gawkapi.h (GAWK_API_MINOR_VERSION): Bump.
+ (gawk_api_t): Add memory allocation function pointers api_malloc,
+ api_calloc, api_realloc, and api_free.
+ (gawk_malloc, gawk_calloc, gawk_realloc, gawk_free): New macros.
+ (emalloc): Replace malloc with gawk_malloc.
+ (erealloc): Replace erealloc with gawk_erealloc.
+
+2014-03-05 Arnold D. Robbins <arnold@skeeve.com>
+
+ Straighten out enumerated types some more.
+
+ * awk.h (add_srcfile): Fix type of first parameter.
+ * awkgram.y (add_srcfile, do_add_srcfile): Ditto.
+ * cmd.h (A_NONE): New enum nametypeval.
+ * command.y (argtab): Use it in final value.
+ * ext.c (make_builtin): Use awk_false, awk_true.
+ * io.c (init_output_wrapper): Use awk_false.
+
+ Unrelated:
+
+ * debug.c (do_commands): Initialize num to silence warnings.
+ Thanks to Michal Jaegermann.
+
+ Unrelated:
+
+ * builtin.c (do_mktime): Change lint warning for minutes to
+ check against 59, not 60. Thanks to Hermann Peifer for the report.
+
+2014-03-03 Arnold D. Robbins <arnold@skeeve.com>
+
+ * dfa.c: Sync with grep. Yet again.
+
+2014-02-28 Arnold D. Robbins <arnold@skeeve.com>
+
+ * dfa.c: Sync with grep. Looks like good improvement with
+ respect to bracket expressions.
+
+2014-02-27 Arnold D. Robbins <arnold@skeeve.com>
+
+ Fixes for enum/int mismatches as warned by some compilers.
+
+ * awk.h (ANONE): New enum for array sorting.
+ * array.c (assoc_list): Use it.
+ * builtin.c (format_tree): New MP_NONE value.
+ * gawkapi.c: Use awk_false and awk_true everywhere instead of
+ false and true.
+
+2014-02-26 Arnold D. Robbins <arnold@skeeve.com>
+
+ * configure.ac: Set up do-nothing extension/Makefile on
+ MirBSD also.
+
+2014-02-21 Arnold D. Robbins <arnold@skeeve.com>
+
+ * dfa.h, dfa.c (parse_bracket_exp): Sync with grep.
+
+2014-02-20 Arnold D. Robbins <arnold@skeeve.com>
+
+ * regex.h, regex.c, regex_internal.c, regex_internal.h: Sync
+ with GLIBC. Mainly copyright updates.
+ * getopt.c, getopt.h, getopt1.c, getopt_int.h: Ditto.
+ * dfa.c (parse_bracket_exp): Sync with grep, where they restored
+ the buggy code. Sigh.
+
+ Unrelated:
+
+ * NEWS: Typo fix.
+ * interpret.h (r_interpret): Init a variable for BEGINFILE to avoid
+ compiler warnings. Thanks to Michal Jaegermann.
+
+2014-02-15 Arnold D. Robbins <arnold@skeeve.com>
+
+ * awkgram.c, command.c: Regenerated - Bison 3.0.2.
+
+2014-02-04 Arnold D. Robbins <arnold@skeeve.com>
+
+ * dfa.c (to_uchar): Make use of this. Syncs with GNU grep.
+
+2014-02-03 Arnold D. Robbins <arnold@skeeve.com>
+
+ * awkgram.y (negate_num): Bracket `tval' in #ifdef MPFR since it's
+ only used in that code.
+
+2014-01-31 Arnold D. Robbins <arnold@skeeve.com>
+
+ * Makefile.am (dist-hook): Improve creation of pc/config.h. We
+ have to jump through a lot of hoops for 'make distcheck' to
+ actually work.
+
+2014-01-30 Arnold D. Robbins <arnold@skeeve.com>
+
+ * Makefile.am (dist-hook): Improve creation of pc/config.h to copy
+ the new file into the distribution directory being created.
+ Also, put the temporary files into /tmp.
+
+2014-01-28 Arnold D. Robbins <arnold@skeeve.com>
+
+ * awkgram.y (negate_num): If just a double, return. Fixes a bug
+ that showed up on 32-bit systems with MPFR. Thanks to Eli Zaretskii
+ and Corinna Vinschen for the report. Also, free the MPZ integer.
+ Thanks to valgrind for the report.
+
+ Unrelated:
+
+ * dfa.c: Sync with GNU grep - removed some special cased code
+ for grep.
+
+2014-01-24 Arnold D. Robbins <arnold@skeeve.com>
+
+ * configure.ac, field.c: Update copyright year.
+
+2014-01-19 Arnold D. Robbins <arnold@skeeve.com>
+
+ * awkgram.y (negate_num): Handle the case of -0 for MPFR; the sign
+ was getting lost. Thanks to Hermann Peifer for the report.
+
+2014-01-18 Arnold D. Robbins <arnold@skeeve.com>
+
+ * dfa.c (parse_bracket_exp): Sync with GNU grep, which now uses
+ gawk's code for RRI in single-byte locales! Hurray.
+
+2014-01-16 Arnold D. Robbins <arnold@skeeve.com>
+
+ * configure.ac: For z/OS, restore creation of do-nothing
+ Makefile in extension directory.
+
+2014-01-14 Arnold D. Robbins <arnold@skeeve.com>
+
+ * field.c (do_split): Make sure split() gets FS value if no
+ third arg even after FPAT was set. Thanks to Janis Papanagnou
+ for the report.
+
+2014-01-13 Arnold D. Robbins <arnold@skeeve.com>
+
+ * README: Fix John Malmberg's email address.
+
+2014-01-12 Arnold D. Robbins <arnold@skeeve.com>
+
+ * awkgram.y: Update copyright year.
+ (func_use): Simplify code.
+ * command.y: Update copyright year.
+ * ext.c: Update copyright year.
+ (make_builtin): Small simplification.
+ (make_old_builtin): Make code consistent with make_builtin(), add
+ call to track_ext_func().
+ * bootstrap.sh: Update copyright year. Remove touch of version.c
+ since that file is no longer autogenerated.
+
+2014-01-07 Arnold D. Robbins <arnold@skeeve.com>
+
+ * command.y (next_word): Move into ifdef for HAVE_LIBREADLINE,
+ since it's only used by that code.
+ * ext.c (load_old_ext): Minor improvements.
+
+2014-01-03 Arnold D. Robbins <arnold@skeeve.com>
+
+ * config.guess, config.rpath, config.sub, depcomp,
+ install-sh: Updated.
+ * dfa.h, dfa.c: Sync with GNU grep; comment fix and copyright year.
+ * NEWS: Updated some, including copyright year.
+
+2013-12-26 Arnold D. Robbins <arnold@skeeve.com>
+
+ * README: Add John Malmberg for VMS.
+
+2013-12-24 Arnold D. Robbins <arnold@skeeve.com>
+
+ * getopt.h: Add `defined(__sun)' to list of system that do get to
+ include stdlib.h. Needed for Illumos. Thanks to
+ Richard Palo <richard.palo@free.fr> for the report.
+
+2013-12-21 Mike Frysinger <vapier@gentoo.org>
+
+ * configure.ac: Add --disable-extensions flag to control
+ compiling extensions. Better for cross-compiling.
+ (AC_CANONICAL_HOST): Added. Changed case statments appropriately.
+ * Makefile.am (check-for-shared-lib-support): Removed.
+ (check-recursive, all-recursive): Removed.
+
+2013-12-21 Arnold D. Robbins <arnold@skeeve.com>
+
+ * config.guess: Updated.
+ * configure, aclocal.m4: Updated based on automake 1.13.4.
+
+2013-12-19 Arnold D. Robbins <arnold@skeeve.com>
+
+ * regexec.c (re_search_internal): Make sure `dfa' pointer is
+ not NULL before trying to dereference it.
+
+2013-12-16 Arnold D. Robbins <arnold@skeeve.com>
+
+ * configure.ac (AC_FUNC_VPRINTF): Remove. Not needed on current
+ systems.
+ * awk.h (HAVE_VPRINTF): Remove check.
+
+2013-12-12 John E. Malmberg <wb8tyw@qsl.net>
+
+ * io.c (redirect): Add additional VMS error codes.
+ (nextfile): Retry open after closing some files.
+
+2013-12-10 Scott Deifik <scottd.mail@sbcglobal.net>
+
+ * io.c (closemaybesocket): Add definition for DJGPP.
+
+2013-12-10 Arnold D. Robbins <arnold@skeeve.com>
+
+ * awk.h (Floor, Ceil): Remove declarations and VMS redefinitions.
+ * floatcomp.c (Floor, Ceil): Removed, not needed. Move bracketing
+ ifdef to the top of the file.
+ * builtin.c (double_to_int): Use floor() and ceil().
+
+2013-12-07 Arnold D. Robbins <arnold@skeeve.com>
+
+ * regex_internal.h (__attribute__): Define to empty if not GCC.
+ * custom.h (__attribute__): Remove the definition from here; the
+ right place was regex_internal.h.
+
+2013-12-06 Arnold D. Robbins <arnold@skeeve.com>
+
+ No need to generate version.c from version.in.
+ Thanks to John E. Malmberg <wb8tyw@qsl.net> for the suggestion.
+
+ * version.in: Removed.
+ * version.c: Use PACKAGE_STRING directly.
+ * Makefile.am (EXTRA_DIST): Remove version.in.
+ (distcleancheck_listfiles): Remove this rule.
+ (MAINTAINERCLEANFILES): Remove this definition.
+ (version.c): Remove the rule to create it.
+
+2013-12-05 Arnold D. Robbins <arnold@skeeve.com>
+
+ Fixes for Z/OS.
+
+ * custom.h (__attribute__): Define to empty.
+ * dfa.c (parse_bracket_exp): Add a cast to quiet a warning.
+ * regex.c: Correctly bracket include of <sys/param.h>.
+
+ Unrelated:
+
+ * debug.c (find_rule): Add a FIXME comment.
+
+2013-12-03 John E. Malmberg <wb8tyw@qsl.net>
+
+ * io.c (redirect): Add additional VMS error code to check.
+ (do_find_source): Append "/" if not a VMS filename.
+
+2013-12-01 Andrew J. Schorr <aschorr@telemetry-investments.com>
+
+ * main.c (optab): Sort by long option name.
+
+2013-11-27 Andrew J. Schorr <aschorr@telemetry-investments.com>
+
+ * main.c (optab): Add entry for --include.
+
+2013-11-23 Arnold D. Robbins <arnold@skeeve.com>
+
+ * dfa.c: Merge from grep; minor fixes in how bit twiddling
+ is done.
+
+2013-11-01 Arnold D. Robbins <arnold@skeeve.com>
+
+ * dfa.c (lex): Reset laststart so that stuff like \s* works.
+ Fix from grep.
+
+2013-10-31 Arnold D. Robbins <arnold@skeeve.com>
+
+ * builtin.c (efwrite): If write error to stdout is EPIPE,
+ die silently. Thanks to Hermann Peifer for helping find this.
+
+2013-10-22 Arnold D. Robbins <arnold@skeeve.com>
+
+ Revise error messages when writing to standard output or standard
+ error to ignore EPIPE. Add the ability based on an environment
+ variable to get the source file and line number.
+
+ * awk.h (r_warning): Renamed from warning.
+ (warning): New macro to set location and call warning.
+ * io.c (flush_io): Print errors only if not EPIPE.
+ (close_io): Ditto.
+ * main.c (lintfunc): Init to r_warning.
+ (main): Enhance explanatory comment.
+ (usage): Print errors only if not EPIPE.
+ (copyleft): Ditto.
+ * msg.c (err): Make printing srcfile and srcline depend upon
+ GAWK_MSG_SRC environment variable.
+ (r_warning): Renamed from warning.
+
+2013-10-17 Arnold D. Robbins <arnold@skeeve.com>
+
+ * main.c (main): Ignore SIGPIPE. See the comment in the code.
+ Thanks to Alan Broder for reporting the issue.
+
+ Unrelated:
+
+ * rand.c (do_rand): Fix computation and loop checking against
+ 1.0 to use do..while.
+
+2013-10-16 Arnold D. Robbins <arnold@skeeve.com>
+
+ Make -O work again. Turns out that C99 bool variables
+ are clamped to zero or one.
+
+ * main.c (do_optimize): Init to false.
+ (main): Set do_optimize to true on -O.
+ * eval.c (setup_frame): Change all uses of do_optimize to be
+ a boolean check instead of a test > 1.
+ * awkgram.y: Ditto.
+ (optimize_assignment): Remove check against do_optimize since
+ it was inited to true anyway.
+
+ Unrelated:
+
+ * re.c (resetup): Add a comment about the joy of syntax bits.
+
+ Unrelated:
+
+ * builtin.c (do_rand): If result is exactly 1.0, keep trying.
+ Thanks to Nelson Beebe.
+
+2013-10-10 Arnold D. Robbins <arnold@skeeve.com>
+
+ * dfa.c (lex): Sync with GNU grep. Handle multibyte \s and \S.
+
+ Unrelated:
+
+ * awk.h [ARRAY_MAXED]: Fix value of this and subsequent flags
+ after addition of NULL_FIELD.
+ * eval.c (flags2str): Add NULL_FIELD. Duh.
+
+2013-10-09 Arnold D. Robbins <arnold@skeeve.com>
+
+ * awkgram.y (mk_assignment): Rework switch to handle Op_assign,
+ and to provide a better error message upon unknown opcode.
+
+2013-09-28 Arnold D. Robbins <arnold@skeeve.com>
+
+ * dfa.c: Sync with GNU grep.
+
+2013-09-25 Arnold D. Robbins <arnold@skeeve.com>
+
+ * builtin.c (do_rand): Make the result more random by calling
+ random() twice. See the comment in the code. Thanks to
+ Bob Jewett <jewett@bill.scs.agilent.com> for the report and
+ the fix.
+
+2013-09-24 Arnold D. Robbins <arnold@skeeve.com>
+
+ * debug.c (find_rule): Handle case where lineno is zero. Can happen
+ if break is given without a line number on a current line. Thanks
+ to Ray Song <i@maskray.me> for the report.
+
+2013-09-19 Arnold D. Robbins <arnold@skeeve.com>
+
+ * dfa.c (parse_bracket_exp): Use code from grep to keep things within
+ range (updates change of 2013-09-08). Fix whitespace in one of the
+ gawk-only additions.
+
+2013-09-13 Arnold D. Robbins <arnold@skeeve.com>
+
+ Fix use of NF after it's extended, e.g. see test/nfloop.awk.
+
+ * awk.h (NULL_FIELD): New flag
+ * builtin.c (do_print_rec): Check f0->flags instead of if
+ equal to Nnull_string.
+ * eval.c (r_get_field): Check (*lhs)->flags instead of if
+ equal to Nnull_string or Null_field.
+ * field.c (init_fields): Init field zero and Null_field with
+ NULL_FIELD flag.
+ (set_NF): Set parse_high_water = NF in case NF extended past the
+ end. This is the actual bug fix.
+
+2013-09-08 Arnold D. Robbins <arnold@skeeve.com>
+
+ Fixes based on reports from a static code checker. Thanks to
+ Anders Wallin for sending in the list.
+
+ * array.c (asort_actual): Free list if it's not NULL.
+ * builtin.c (do_sub): Set buf to NULL and assert on it before using
+ it.
+ * cint_array.c (cint_array_init): Clamp any value of NHAT from the
+ environment such that it won't overflow power_two_table when used as
+ an index.
+ * dfa.c (parse_bracket_exp): Check that len is in range before using it
+ to index buf.
+ * getopt.c (_getopt_internal_r): Change call to alloca to use malloc.
+ * io.c (socket_open): Init read_len to zero.
+ (two_way_open): Upon failure to fork, close the slave fd also.
+ * re.c (research): Init try_backref to false.
+ * regcomp.c (build_range_exp): Free any items that were allocated in
+ the case where not all items were.
+ (build_charclass_op): Same. Init br_token to zero with memset.
+ (create_tree): Init token t to zero with memset.
+ * regex_internal.c (re_dfa_add_node): Free any items that were
+ allocated in the case where not all items were.
+ * symbol.c (destroy_symbol): On default, break, to fall into releasing
+ of resources.
+
+2013-08-29 Arnold D. Robbins <arnold@skeeve.com>
+
+ * debug.c (HAVE_HISTORY_LIST): Move checks and defines to the top.
+ (do_save, serialize): Adjust #if checks to depend on having both
+ readline and the history functions. Needed for Mac OS X whose
+ native readline is a very old version. Sigh.
+ * configh.in, configure: Regenerated due to change in m4/readline.m4.
+ Issue reported by Hermann Peifer and Larry Baker.
+
+ Unrelated:
+
+ * getopt.c: Sync with GLIBC, changes are minor.
+
+ Unrelated:
+
+ * dfa.c: Sync with version in grep. Primarily whitespace / comment
+ wording changes.
+
+2013-08-26 Arnold D. Robbins <arnold@skeeve.com>
+
+ * regcomp.c (parse_dup_op): Remove RE_TOKEN_INIT_BUG code (change of
+ Feb 19 2005) since it's no longer needed.
+
+ * regcomp.c (re_fastmap_iter): Undo addition of volatile from
+ Jan 18 2007; no longer needed and is one less change to have to
+ maintain aginst the upstream.
+
+ * regcomp.c, regex.h, regex_internal.h: Sync with GLIBC.
+
+2013-08-22 Arnold D. Robbins <arnold@skeeve.com>
+
+ * str_array.c (env_store): If the new value being stored is NULL,
+ pass in "" instead. Avoids core dump on Mac OS X.
+ Thanks to Hermann Peifer for the bug report.
+
+2013-08-20 Arnold D. Robbins <arnold@skeeve.com>
+
+ * nonposix.h: New file. Contains FAKE_FD_VALUE.
+ * awk.h: Include it if MinGW or EMX.
+ * Makefile.am (base_sources): Add nonposix.h.
+
+2013-08-18 Arnold D. Robbins <arnold@skeeve.com>
+
+ Reflect updates to ENVIRON into the real environment.
+
+ * awk.h (init_env_array): Add declaration.
+ * main.c (load_environ): Call init_env_array.
+ * str_array.c (env_remove, env_store, env_clear, init_env_array):
+ New functions.
+ (env_array_func): New array vtable.
+
+2013-08-18 Arnold D. Robbins <arnold@skeeve.com>
+
+ * array.c (force_array): Set symbol->xarray to NULL before
+ initing the array if it was Node_var_new.
+ (null_array): Restore assert, undoing change of 2013-05-27.
+
+2013-08-15 Arnold D. Robbins <arnold@skeeve.com>
+
+ * debug.c (print_memory): Fix whitespace / indentation.
+
2013-07-24 Arnold D. Robbins <arnold@skeeve.com>
* io.c (FAKE_FD_VALUE): Move definition from here ...
diff --git a/Checklist b/Checklist
index 98faf6cb..e0e1ffec 100644
--- a/Checklist
+++ b/Checklist
@@ -1,4 +1,4 @@
-Sun Apr 21 23:14:21 IDT 2013
+Fri Apr 4 11:43:29 IDT 2014
============================
A checklist for making releases
@@ -12,20 +12,18 @@ README_d/* edited
VMS/* version stuff up to date
vms/vmsbuild.com
vms/descrip.mms
- vms/vms-conf.h: update VERSION and PACKAGE_VERSION
NEWS is up to date
Any new options have been added to usage function
All paper work signed and sent in
All files checked in
Version information is correct in
- version.c
doc/gawk.1
doc/awkcard.in
- doc/gawk.texi
+ doc/gawktexi.in
doc/gawkinet.texi
extension/configure.ac
doc/texinfo.tex is up to date
-doc/gawk.texi is up to date
+doc/gawktexi.in is up to date
doc/gawkinet.texi is up to date
doc/gawk.1 is up to date
doc/awkcard.in is up to date
@@ -43,6 +41,8 @@ Testing on
compile with tcc
compile with clang
+ compile 32 bit tests - clang and gcc
+
configure --disable-lint
configure --disable-nls
configure --with-whiny-user-strftime
diff --git a/Makefile.am b/Makefile.am
index 8d977d75..6e5715d7 100644
--- a/Makefile.am
+++ b/Makefile.am
@@ -1,7 +1,7 @@
#
# Makefile.am --- automake input file for gawk
#
-# Copyright (C) 2000-2013 the Free Software Foundation, Inc.
+# Copyright (C) 2000-2014 the Free Software Foundation, Inc.
#
# This file is part of GAWK, the GNU implementation of the
# AWK Programming Language.
@@ -55,15 +55,9 @@ EXTRA_DIST = \
regex_internal.c \
regex_internal.h \
regexec.c \
- version.in \
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.
@@ -113,6 +107,7 @@ base_sources = \
mpfr.c \
msg.c \
node.c \
+ nonposix.h \
profile.c \
protos.h \
random.c \
@@ -146,8 +141,6 @@ DEFS= -DDEFPATH=$(DEFPATH) -DDEFLIBPATH=$(DEFLIBPATH) -DSHLIBEXT=$(SHLIBEXT) -DH
# Get rid of core files when cleaning
CLEANFILES = core core.*
-MAINTAINERCLEANFILES = version.c
-
# We want hard links for install-exec-hook, below
LN= ln
@@ -179,10 +172,14 @@ check-local: gawk$(EXEEXT)
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
+ chmod u+w config.h ; \
+ sed -n -f configpk.sed < ../configure.ac > /tmp/tmp.sed ; \
+ sed -f config.sed < ../configh.in > /tmp/config.tmp ; \
+ sed -f /tmp/tmp.sed < /tmp/config.tmp > config.h ; \
+ $(RM) /tmp/tmp.sed /tmp/config.tmp
+ pwd
+ chmod u+w $(distdir)/pc/config.h
+ cp $(srcdir)/pc/config.h $(distdir)/pc/config.h
# Special rules for individual files
# Use of awk instead of $(AWK) is deliberate, in case gawk doesn't build
@@ -195,9 +192,6 @@ awkgram.c: awkgram.y
if cmp -s y.tab.h $*.h; then rm -f y.tab.h; else mv y.tab.h $*.h; fi; \
else :; fi
-version.c: config.status version.in
- $(SHELL) ./config.status --file=version.c:version.in
-
command.c: command.y
$(YACC) -p zz $<
sed 's/parse error/syntax error/g' < y.tab.c | awk -f $(srcdir)/bisonfix.awk command > $*.c && rm y.tab.c
diff --git a/Makefile.in b/Makefile.in
index ff055c14..2abf5b46 100644
--- a/Makefile.in
+++ b/Makefile.in
@@ -1,7 +1,7 @@
-# Makefile.in generated by automake 1.13.1 from Makefile.am.
+# Makefile.in generated by automake 1.13.4 from Makefile.am.
# @configure_input@
-# Copyright (C) 1994-2012 Free Software Foundation, Inc.
+# Copyright (C) 1994-2013 Free Software Foundation, Inc.
# This Makefile.in is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
@@ -17,7 +17,7 @@
#
# Makefile.am --- automake input file for gawk
#
-# Copyright (C) 2000-2013 the Free Software Foundation, Inc.
+# Copyright (C) 2000-2014 the Free Software Foundation, Inc.
#
# This file is part of GAWK, the GNU implementation of the
# AWK Programming Language.
@@ -39,23 +39,51 @@
VPATH = @srcdir@
-am__make_dryrun = \
- { \
- am__dry=no; \
+am__is_gnu_make = test -n '$(MAKEFILE_LIST)' && test -n '$(MAKELEVEL)'
+am__make_running_with_option = \
+ case $${target_option-} in \
+ ?) ;; \
+ *) echo "am__make_running_with_option: internal error: invalid" \
+ "target option '$${target_option-}' specified" >&2; \
+ exit 1;; \
+ esac; \
+ has_opt=no; \
+ sane_makeflags=$$MAKEFLAGS; \
+ if $(am__is_gnu_make); then \
+ sane_makeflags=$$MFLAGS; \
+ else \
case $$MAKEFLAGS in \
*\\[\ \ ]*) \
- echo 'am--echo: ; @echo "AM" OK' | $(MAKE) -f - 2>/dev/null \
- | grep '^AM OK$$' >/dev/null || am__dry=yes;; \
- *) \
- for am__flg in $$MAKEFLAGS; do \
- case $$am__flg in \
- *=*|--*) ;; \
- *n*) am__dry=yes; break;; \
- esac; \
- done;; \
+ bs=\\; \
+ sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \
+ | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \
esac; \
- test $$am__dry = yes; \
- }
+ fi; \
+ skip_next=no; \
+ strip_trailopt () \
+ { \
+ flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \
+ }; \
+ for flg in $$sane_makeflags; do \
+ test $$skip_next = yes && { skip_next=no; continue; }; \
+ case $$flg in \
+ *=*|--*) continue;; \
+ -*I) strip_trailopt 'I'; skip_next=yes;; \
+ -*I?*) strip_trailopt 'I';; \
+ -*O) strip_trailopt 'O'; skip_next=yes;; \
+ -*O?*) strip_trailopt 'O';; \
+ -*l) strip_trailopt 'l'; skip_next=yes;; \
+ -*l?*) strip_trailopt 'l';; \
+ -[dEDm]) skip_next=yes;; \
+ -[JT]) skip_next=yes;; \
+ esac; \
+ case $$flg in \
+ *$$target_option*) has_opt=yes; break;; \
+ esac; \
+ done; \
+ test $$has_opt = yes
+am__make_dryrun = (target_option=n; $(am__make_running_with_option))
+am__make_keepgoing = (target_option=k; $(am__make_running_with_option))
pkgincludedir = $(includedir)/@PACKAGE@
pkglibdir = $(libdir)/@PACKAGE@
pkglibexecdir = $(libexecdir)/@PACKAGE@
@@ -269,6 +297,7 @@ DIST_TARGETS = dist-lzip dist-xz dist-gzip
distuninstallcheck_listfiles = find . -type f -print
am__distuninstallcheck_listfiles = $(distuninstallcheck_listfiles) \
| sed 's|^\./|$(prefix)/|' | grep -v '$(infodir)/dir$$'
+distcleancheck_listfiles = find . -type f -print
# Directory for gawk's data files. Automake supplies datadir.
pkgdatadir = $(datadir)/awk
@@ -431,17 +460,10 @@ EXTRA_DIST = \
regex_internal.c \
regex_internal.h \
regexec.c \
- version.in \
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.
@@ -489,6 +511,7 @@ base_sources = \
mpfr.c \
msg.c \
node.c \
+ nonposix.h \
profile.c \
protos.h \
random.c \
@@ -516,7 +539,6 @@ DEFLIBPATH = "\"$(pkgextensiondir)\""
# Get rid of core files when cleaning
CLEANFILES = core core.*
-MAINTAINERCLEANFILES = version.c
# We want hard links for install-exec-hook, below
LN = ln
@@ -616,6 +638,7 @@ uninstall-binPROGRAMS:
clean-binPROGRAMS:
-test -z "$(bin_PROGRAMS)" || rm -f $(bin_PROGRAMS)
+
gawk$(EXEEXT): $(gawk_OBJECTS) $(gawk_DEPENDENCIES) $(EXTRA_gawk_DEPENDENCIES)
@rm -f gawk$(EXEEXT)
$(AM_V_CCLD)$(LINK) $(gawk_OBJECTS) $(gawk_LDADD) $(LIBS)
@@ -701,13 +724,12 @@ uninstall-includeHEADERS:
# (which will cause the Makefiles to be regenerated when you run 'make');
# (2) otherwise, pass the desired values on the 'make' command line.
$(am__recursive_targets):
- @fail= failcom='exit 1'; \
- for f in x $$MAKEFLAGS; do \
- case $$f in \
- *=* | --[!k]*);; \
- *k*) failcom='fail=yes';; \
- esac; \
- done; \
+ @fail=; \
+ if $(am__make_keepgoing); then \
+ failcom='fail=yes'; \
+ else \
+ failcom='exit 1'; \
+ fi; \
dot_seen=no; \
target=`echo $@ | sed s/-recursive//`; \
case "$@" in \
@@ -1025,7 +1047,6 @@ maintainer-clean-generic:
@echo "it deletes files that may require special tools to rebuild."
-rm -f awkgram.c
-rm -f command.c
- -test -z "$(MAINTAINERCLEANFILES)" || rm -f $(MAINTAINERCLEANFILES)
clean: clean-recursive
clean-am: clean-binPROGRAMS clean-generic mostlyclean-am
@@ -1150,10 +1171,14 @@ check-local: gawk$(EXEEXT)
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
+ chmod u+w config.h ; \
+ sed -n -f configpk.sed < ../configure.ac > /tmp/tmp.sed ; \
+ sed -f config.sed < ../configh.in > /tmp/config.tmp ; \
+ sed -f /tmp/tmp.sed < /tmp/config.tmp > config.h ; \
+ $(RM) /tmp/tmp.sed /tmp/config.tmp
+ pwd
+ chmod u+w $(distdir)/pc/config.h
+ cp $(srcdir)/pc/config.h $(distdir)/pc/config.h
# Special rules for individual files
# Use of awk instead of $(AWK) is deliberate, in case gawk doesn't build
@@ -1166,9 +1191,6 @@ awkgram.c: awkgram.y
if cmp -s y.tab.h $*.h; then rm -f y.tab.h; else mv y.tab.h $*.h; fi; \
else :; fi
-version.c: config.status version.in
- $(SHELL) ./config.status --file=version.c:version.in
-
command.c: command.y
$(YACC) -p zz $<
sed 's/parse error/syntax error/g' < y.tab.c | awk -f $(srcdir)/bisonfix.awk command > $*.c && rm y.tab.c
diff --git a/NEWS b/NEWS
index e0a4ffa9..fab31af4 100644
--- a/NEWS
+++ b/NEWS
@@ -1,16 +1,28 @@
- Copyright (C) 2010, 2011, 2012, 2013 Free Software Foundation, Inc.
+ Copyright (C) 2010, 2011, 2012, 2013, 2014 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.1.1 to 4.2.0
+---------------------------
+
+1. If not in POSIX mode, changes to ENVIRON are reflected into
+ gawk's environment, affecting any programs run by system()
+ or for piped redirections.
+
+2. The series of numbers returned by rand() should now be "more
+ random" than previously. Gawk's rand() remains repeatable; you will
+ get the same series of numbers each time you call rand() repeatedly,
+ but this will be a different series than previously.
+
Changes from 4.1.0 to 4.1.1
---------------------------
1. The "stat" extension now includes a "devbsize" element which indicates
- the units for the "nblocks" element
+ the units for the "nblocks" element.
-2. The extension facility works on MinGW. Many of the extensions can be
+2. The extension facility now works on MinGW. Many of the extensions can be
built and used directly.
3. A number of bugs in the pretty-printing / profiling code have been fixed.
@@ -19,7 +31,36 @@ Changes from 4.1.0 to 4.1.1
5. The debugger now lists source code correctly under Cygwin.
-XXX. A number of bugs have been fixed. See the ChangeLog.
+6. Configuration and building with the Mac OS X libreadline should work now.
+
+7. The -O option now works again.
+
+8. The --include option, documented since 4.0, now actually works.
+
+9. Infrastructure updated to automake 1.13.4, bison 3.0.2, and
+ libtool 2.4.2.418.
+
+10. The configure script now accepts a --disable-extensions option,
+ which disables checking for and building the extensions.
+
+11. The VMS port has been considerably improved. In particular config.h
+ is now generated by a DCL script. Also, the extension facility works
+ and several of the extensions can be built and used. Currently, the
+ extension facility only works on Alpha and Itanium.
+
+12. The API now provides functions pointers for malloc(), calloc(),
+ realloc() and free(), to insure that the same memory allocation
+ functions are always used. This bumps the minor version by one.
+
+13. The printf quote flag now works correctly in locales with a different
+ decimal point character but without a thousands separator character.
+ If the thousands separator is a string, it will be correctly added
+ to decimal numbers.
+
+14. The readfile extension now has an input parser that will read whole
+ files as a single record.
+
+15. A number of bugs have been fixed. See the ChangeLog.
Changes from 4.0.2 to 4.1.0
---------------------------
diff --git a/README b/README
index eaf11a44..028637ec 100644
--- a/README
+++ b/README
@@ -1,4 +1,4 @@
- Copyright (C) 2005, 2006, 2007, 2009, 2010, 2011, 2012, 2013
+ Copyright (C) 2005, 2006, 2007, 2009, 2010, 2011, 2012, 2013, 2014
Free Software Foundation, Inc.
Copying and distribution of this file, with or without modification,
@@ -7,19 +7,21 @@
README:
-This is GNU Awk 4.1.0. It is upwardly compatible with Brian Kernighan's
+This is GNU Awk 4.1.1. It is upwardly compatible with Brian Kernighan's
version of Unix awk. It is almost completely compliant with the
2008 POSIX 1003.1 standard for awk. (See the note below about POSIX.)
-This is a major new release. See NEWS and ChangeLog for details.
+This is a bug-fix release. See NEWS and ChangeLog for details.
-Work to be done is described briefly in the TODO file. Changes in this
-version are summarized in the NEWS file.
+Work to be done is described briefly in the TODO file, which is available
+only in the 'master' branch in the Git repo.
+
+Changes in this version are summarized in the NEWS file.
Read the file POSIX.STD for a discussion of issues where the standard
says one thing but gawk does something different.
-To format the documentation with TeX, use at least version 2013-03-19.11
+To format the documentation with TeX, use at least version 2014-03-18.17
of texinfo.tex. There is a usable copy of texinfo.tex in the doc directory.
INSTALLATION:
@@ -45,9 +47,12 @@ Automake.
After successful compilation, do `make check' to run the test suite.
There should be no output from the `cmp' invocations except in the
cases where there are small differences in floating point values, and
-possibly in the case of strftime. Several of the tests ignore errors
-on purpose; those are not a problem. If there are other differences,
-please investigate and report the problem.
+possibly in the case of strftime. There may be differences based on
+installed (or not installed) locales and the quality of multibyte
+character support on your system.
+
+Several of the tests ignore errors on purpose; those are not a problem.
+If there are other differences, please investigate and report the problem.
PRINTING THE MANUAL
@@ -65,7 +70,7 @@ the section in the manual on reporting bugs. Note that comp.lang.awk
is about the worst place to post a gawk bug report. Please, use the
mechanisms outlined in the manual.
-Email should be sent to bug-gawk@gnu.org. This is now a separate mailing
+Email should be sent to bug-gawk@gnu.org. This is a separate mailing
list at GNU Central. The advantage to using this address is that bug
reports are archived at GNU Central.
@@ -89,6 +94,9 @@ VMS:
Pat Rankin
r.pat.rankin@gmail.com
+ John Malmberg
+ wb8tyw@qsl.net
+
z/OS (OS/390):
Dave Pitts
dpitts@cozx.com
diff --git a/README_d/ChangeLog b/README_d/ChangeLog
index 49c30f13..6bc828d9 100644
--- a/README_d/ChangeLog
+++ b/README_d/ChangeLog
@@ -1,3 +1,36 @@
+2014-04-08 Arnold D. Robbins <arnold@skeeve.com>
+
+ * 4.1.1: Release tar ball made.
+
+2014-04-02 Arnold D. Robbins <arnold@skeeve.com>
+
+ * README.gcc-3: New file.
+
+2014-01-22 Arnold D. Robbins <arnold@skeeve.com>
+
+ * README.solaris: Updated.
+
+2014-01-12 John E. Malmberg <wb8tyw@qsl.net>
+
+ * README.VMS: document that the gawk.cld needs a fix.
+
+2013-12-23 John E. Malmberg <wb8tyw@qsl.net>
+
+ * README.VMS: Add documentation about building dynamic
+ extensions.
+
+2013-12-23 John E. Malmberg <wb8tyw@qsl.net>
+
+ * README.VMS: Document decoding Gawk VMS exit codes.
+
+2013-12-16 John E. Malmberg <wb8tyw@qsl.net>
+
+ * README.VMS: Further updates.
+
+2013-12-05 John E. Malmberg <wb8tyw@qsl.net>
+
+ * README.VMS: updated with current build information.
+
2013-07-02 Arnold D. Robbins <arnold@skeeve.com>
* README.pc: Update that |& also now works on MinGW.
diff --git a/README_d/README.VMS b/README_d/README.VMS
index b47cb0f7..0faabbc2 100644
--- a/README_d/README.VMS
+++ b/README_d/README.VMS
@@ -6,21 +6,112 @@ CC and LINK commands, and there's also a Makefile for use with the MMS
utility. From the source directory, use either
|$ @[.VMS]VMSBUILD.COM
or
- |$ MMS/DECRIPTION=[.VMS]DECSRIP.MMS GAWK
+ |$ MMS/DESCRIPTION=[.VMS]DESCRIP.MMS gawk
+or
+ |$ MMK/DESCRIPTION=[.VMS]DESCRIP.MMS gawk
+
+Note that on IA64 and Alpha the case of the target may be important.
+MMS has had problems on ODS-5 volumes. MMK does not have these issues.
+MMK is available free from https://github.com/endlesssoftware/mmk.
+The most recent builds of gawk on VMS used MMK.
+
+Support of the vmsbuild.com may get dropped in a future release.
DEC C -- use either vmsbuild.com or descrip.mms as is.
+ DEC C is also known as Compaq C and HP C.
+
VAX C -- use `@vmsbuild VAXC' or `MMS/MACRO=("VAXC")'. On a system
with both VAX C and DEC C installed where DEC C is the default,
use `MMS/MACRO=("VAXC","CC=CC/VAXC")' for the MMS variant; for
the vmsbuild.com variant, any need for `/VAXC' will be detected
automatically.
+ * IMPORTANT NOTE * VAX C should not be used on VAX/VMS 5.5-2 and
+ later. Use DEC C instead.
+
GNU C -- use `@vmsbuild GNUC' or `MMS/MACRO=("GNUC")'. On a system
where the GCC command is not already defined, use either
`@vmsbuild GNUC DO_GNUC_SETUP' or
`MMS/MACRO=("GNUC","DO_GNUC_SETUP")'.
- Tested under Alpha/VMS V7.1 using DEC C V6.4. GAWK should work
-without modifications for VMS V4.6 and up.
+Most recent builds are using:
+ OpenVMS VAX 7.3 using DEC C 6.4
+ OpenVMS Alpha 8.3 using HP C V 7.3
+ OpenVMS Alpha 8.4 using HP C V 7.3
+ OpenVMS IA64 8.4 using HP C V 7.3
+
+GAWK was originally ported for VMS V4.6 and up. It has not been tested
+with a release that old for some time.
+
+Compiling dynamic extensions on VMS:
+
+GAWK comes with some dynamic extensions. The extensions that have been
+ported to VMS can be built using one of the following commands.
+
+ |$ MMS/DESCRIPTION=[.VMS]DESCRIP.MMS extensions
+or
+ |$ MMK/DESCRIPTION=[.VMS]DESCRIP.MMS extensions
+
+GAWK uses AWKLIBPATH as either an environment variable or a logical name
+to find the dynamic extensions.
+
+Dynamic extensions need to be compiled with the same compiler options for
+floating point, pointer size, and symbol name handling as gawk.
+Alpha and Itanium should use IEEE floating point. The pointer size is 32 bits,
+and the symbol name handling is to be exact case with CRC shortening for
+symbols longer than 32 bits.
+
+Currently dynamic extensions have only been tested to work on VMS 8.3 and later
+on both Alpha and Itanium. Dynamic extensions are not currently working on
+VAX/VMS 7.3.
+
+Compile time are macros needed to be defined before the first VMS supplied
+header file is included. Usually this will be done with a config.h file.
+
+#if (__CRTL_VER >= 70200000) && !defined (__VAX)
+#define _LARGEFILE 1
+#endif
+
+#ifndef __VAX
+#ifdef __CRTL_VER
+#if __CRTL_VER >= 80200000
+#define _USE_STD_STAT 1
+#endif
+#endif
+#endif
+
+Alpha and Itanium:
+
+/name=(as_is,short)
+/float=ieee/ieee_mode=denorm_results
+
+VAX:
+
+/name=(as_is,short)
+
+The linker option files are [.vms]gawk_plugin.opt for Alpha and Itanium.
+
+As the VAX dynamic plug-in feature is not yet working, the files potentially
+needed for a future VAX plugin are in [.vms.vax] directory of the source.
+
+
+Testing GAWK on VMS:
+
+After you build gawk, you can test it with the [.vms]vmstest.com procedure.
+The procedure takes a parameter that is either for a list of tests or
+a specific test. The parameter clean cleans up files left over from running
+the tests.
+
+ $ set def [.test]
+ $ @[-.vms]vmstest.com bigtest
+ $ @[-.vms]vmstest.com clean
+ $ set def [-]
+
+To test the dynamic extensions on VMS 8.3 and later, use:
+
+ $ set def [.test]
+ $ @[-.vms]vmstest.com extension
+ $ @[-.vms]vmstest.com clean
+ $ set def [-]
Installing GAWK on VMS:
@@ -33,6 +124,11 @@ That symbol should be placed in the user's login.com or in the system-
wide sylogin.com procedure so that it will be defined every time the
user logs on.
+If your gawk was installed by a PCSI kit into the GNV$GNU: directory tree,
+the program will be known as GNV$GNU:[bin]gnv$gawk.exe and the help file
+will be GNV$GNU:[vms_help]gawk.hlp. The GNV$GNU:[vms_bin]gawk_verb.cld can be
+used to add GAWK and the alias AWK to a DCL command table.
+
Optionally, the help entry can be loaded into a VMS help library.
|$ LIBRARY/HELP SYS$HELP:HELPLIB [.VMS]GAWK.HLP
(You may want to substitute a site-specific help library rather than
@@ -79,9 +175,52 @@ separated list of directory specifications. When defining it, the
value should be quoted so that it retains a single translation, not a
multi-translation RMS searchlist.
-------------------------------
-Thu Jun 18 05:22:10 IDT 2009
-============================
+ The exit status from Gawk is encoded in the the VMS $status exit
+value so that the severity bits are set as expected and the original
+Gawk exit value can be extracted.
+
+To extract the actual gawk exit code from the VMS status use:
+ unix_status = (vms_status .and. &x7f8) / 8
+
+The exit value is encoded to comply with VMS coding standards and
+will have the C_FACILITY_NO of 0x350000 with the constant 0xA000
+added to the number shifted over by 3 bits to make room for the
+severity codes.
+
+The Gawk exit value of 1 will result in the VMS status having the
+ERROR severity status set. The Gawk exit value of 2 will result in
+the FATAL severity status set. All other Gawk exit values will have
+the Success severity status set.
+
+This change was needed to provide all Gawk exit values to VMS programs and
+for compatibilty with programs written in C and the GNV environment.
+
+Older versions of Gawk incorrectly mostly passed through the Gawk
+status values instead of encoding them. DCL scripts that were checking
+the severity values will probably not need changing. DCL scripts that
+were checking the exact exit status will need an update.
+
+VAX/VMS floating point uses unbiased rounding. This is generaly incompatible
+with the expected behavior. The ofmta test in the test directory will
+fail on VAX.
+
+Gawk needs the SYS$TIMEZONE_RULE or TZ logical name to be defined or it
+will output times in GMT.
+
+The vmstest.com script needs SYS$TIMEZONE_NAME to be defined to match
+the SYS$TIMEZONE_RULE. Older versions of VMS do not define these logical
+names.
+
+TO DO Items (not in order of priority)
+
+1. Implement dynamic plug-ins on VAX.
+
+2. With the system() function, the status for DCL commands are not being
+ returned.
+
+3. Need gawk to accept logical names GNV$AWKPATH, GNV$AWKLIB, and
+ GNV$AWK_LIBARARY in addtion to the unprefixed names. This will allow
+ system wide default values to be set by an installation kit.
-On OpenVMS V7.3 (Alpha) the "manyfiles" test is known to fail. The reason
-is not (yet) known.
+4. Need to fix the gawk.cld file to not require a parameter for the options
+ that do not use the parameter.
diff --git a/README_d/README.gcc-3 b/README_d/README.gcc-3
new file mode 100644
index 00000000..c76a9af7
--- /dev/null
+++ b/README_d/README.gcc-3
@@ -0,0 +1,11 @@
+Wed Apr 2 21:29:17 IDT 2014
+============================
+
+I have had a report that on a GNU/Linux system using gcc 3.3.6 (32 bit)
+that the aasort test fails. Compiling without -O builds a gawk that
+does pass all tests.
+
+Caveat Emptor.
+
+Arnold Robbins
+arnold@skeeve.com
diff --git a/README_d/README.pc b/README_d/README.pc
index 32a81fc1..63ba473e 100644
--- a/README_d/README.pc
+++ b/README_d/README.pc
@@ -18,7 +18,7 @@ The `configure' step takes a long time, but works otherwise.
******************************** N O T E *******************************
* The `|&' operator only works when gawk is compiled for Cygwin or for *
-* MinGW. Neither * socket support nor two-way pipes work in any other *
+* MinGW. Neither socket support nor two-way pipes work in any other *
* Windows environment! *
************************************************************************
diff --git a/README_d/README.solaris b/README_d/README.solaris
index 639ca2c6..91e0c701 100644
--- a/README_d/README.solaris
+++ b/README_d/README.solaris
@@ -1,20 +1,14 @@
-Fri Jul 15 14:24:00 IDT 2011
+Wed Jan 22 21:51:59 IST 2014
============================
-It looks like you need to use
- -Xc -D_XPG4_2
+On Solaris 10 x86, Solaris 11 x86, Solaris 10 sparc and Solaris 11 sparc,
+with the Sun compiler (Solaris Studio 12.3) you need to use
-on Solaris 10 with the Sun C compiler when compiling gawk in order for
-libsigsegv to be found correctly, and
+ c99 -Xc -D_XPG6
- -Xc -D_XPG4_2 -Duint64_t=upad64_t
+to correctly compile gawk and the extensions.
-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,
-not gawk.
+Various tests can fail if the necessary locales aren't installed.
Arnold Robbins
arnold@skeeve.com
diff --git a/TODO b/TODO
index 0b646997..f7a10ba3 100644
--- a/TODO
+++ b/TODO
@@ -1,4 +1,4 @@
-Thu May 9 15:31:55 IDT 2013
+Thu Oct 24 22:11:44 IDT 2013
============================
There were too many files tracking different thoughts and ideas for
@@ -9,20 +9,22 @@ or simply removed.
Upon creation of a release (major or patch release), items from the
previous release should be removed.
+This file should exist only in the master branch or branches based off
+of it for development, but not in the stable branch. This may require some
+careful work with Git.
+
TODO
====
Minor Cleanups and Code Improvements
------------------------------------
- Put FAKE_FD_VALUE into a head included from awk.h and extension/
- dirfd.h.
-
- Mac OS X readline doesn't have history_list which is used from debug.c
- functions do_save and serialize.
- See http://ftp.samba.org/pub/unpacked/samba_3_current/source4/lib/smbreadline/readline.m4
- for some help. Reported by Larry Baker, larry.baker@stanfordalumni.org
+ Review the bash source script for working with shared libraries in
+ order to nuke the use of libtool. [ Partially started in the
+ nolibtool branch. ]
+ Enhance profiling to save comments in a byte-code that does nothing
+ but that can be used when pretty printing the program.
API:
??? #if !defined(GAWK) && !defined(GAWK_OMIT_CONVENIENCE_MACROS)
@@ -35,28 +37,29 @@ Minor Cleanups and Code Improvements
Consider removing use of and/or need for the protos.h file.
- Review the bash source script for working with shared libraries in
- order to nuke the use of libtool.
-
- In test/Makefile.am and generation scripts, quote $(srcdir) etc.
- for windows or other systems with spaces in path names. Fun.
+ Recheck if gnulib regex can be dropped in
- Enhance profiling to same comments in a byte-code that does nothing
- but that can be used when pretty printing the program.
+ Fully synchronize whitespaces tests (for \s, \S in Unicode
+ environment) with those of GNU grep.
Minor New Features
------------------
+ Add a div() function to do integer division result. Needed
+ esp for MPFR with large ints.
+
Enhance extension/fork.c waitpid to allow the caller to specify
the options. And add an optional array argument to wait and
waitpid in which to return exit status information.
- Add a readfile() function in awk from mail.
+ Consider relaxing the strictness of --posix.
- Make writes to ENVIRON / deletions affect the real environment
- using setenv / unsetenv.
+ Make it possible to put print/printf + redirections into
+ an expression.
- Consider relaxing the strictness of --posix.
+ Have pretty printing not run the program and nuke the
+ undocumented GAWK_NO_PP_RUN env var. Requires test suite
+ adjustments.
? Add an optional base to strtonum, allowing 2-36.
@@ -74,29 +77,39 @@ Major New Features
Also needed:
- indirect calls of built-ins
- indirect calls of extension functions
- indirect through array elements, not just scalar variables
+ Indirect calls of built-ins
+ Indirect calls of extension functions
+ Indirect through array elements, not just scalar variables
+
+ Some way to make regexp constants first class citizens:
+ - Assign to variables
+ - Pass to functions
+ Tawk has this and it would also make indirect calling of builtins
+ work more reasonably. Probably would use a special syntax like
+ @/.../ for such objects.
+
+ Consider a typeof() function that returns a string (scalar, array,
+ regexp).
Fix the early chapters in the doc with more up-to-date examples.
No-one uses Bulletin Board Systems anymore.
+ Add ability to do decimal arithmetic.
+
Rework management of array index storage. (Partially DONE.)
Consider using an atom table for all string array indices.
DBM storage of awk arrays. Try to allow multiple dbm packages.
- ?? Some way to make regexp constants first class citizens
- - Assign to variables
- - Pass to functions
-
?? A RECLEN variable for fixed-length record input. PROCINFO["RS"]
would be "RS" or "RECLEN" depending upon what's in use.
- *** Could be done as an extension?
+ *** Could this be done as an extension?
?? Use a new or improved dfa and/or regex library.
+ Rewrite in C++.
+
Things To Think About That May Never Happen
-------------------------------------------
@@ -105,22 +118,11 @@ Things To Think About That May Never Happen
Similar for extra parameters in a function call.
- ?? Scope IDs for IPv6 addresses ??
-
- ??? Gnulib
-
Look at code coverage tools, like S2E: https://s2e.epfl.ch/
Try running with diehard. See http://www.diehard-software.org,
https://github.com/emeryberger/DieHard
- Change from dlopen to using the libltdl library (i.e. lt_dlopen).
- This may support more platforms.
-
- FIX regular field splitting to use FPAT algorithm.
- Note: Looked at this. Not sure it's with the trouble:
- If it ain't broke...
-
Implement namespaces. Arnold suggested the following in an email:
- Extend the definition of an 'identifier' to include "." as a valid character
although an identifier can't start with it.
@@ -140,12 +142,6 @@ Things To Think About That May Never Happen
Patch lexer for @include and @load to make quotes optional.
- Do an optimization pass over parse tree?
-
- Consider integrating Fred Fish's DBUG library into gawk.
-
- Make awk '/foo/' files... run at egrep speeds (how?)
-
? Have strftime() pay attention to the value of ENVIRON["TZ"]
Add a lint check if the return value of a function is used but
@@ -159,101 +155,53 @@ Things To Think About That May Never Happen
Enhance FIELDWIDTHS with some way to indicate "the rest of the record".
E.g., a length of 0 or -1 or something. Maybe "n"?
- Make FIELDWIDTHS be an array?
-
-Code Review
------------
-awkgram.y
-debug.c
-eval.c
-ext.c
-field.c
-floatcomp.c
-floatmagic.h
-gawkmisc.c
-profile.c
-protos.h
DONE
====
Minor Cleanups and Code Improvements
------------------------------------
-Done in 4.1:
-
- Review all FIXME and TODO comments
-
- Fix all *assoc_lookup() = xxx calls.
-
- Make GAWKDEBUG pass the test suite.
-
- Make fflush() and fflush("") both flush all files, as in BWK awk.
-
- In gawkapi.c - review switch statements and use of default.
-
- API:
- awk_true and awk_false
- Update doc to use gcc -o filefuncs.so -shared filefuncs.o
- instead of ld ...
- Have check for name not rely on isalpha, isalnum since
- the locale could botch that up. Also make it not
- fatal.
Minor New Features
------------------
-Done in 4.1:
-
- Merge the chapter and the appendix on floating-point math (for 4.1).
Major New Features
------------------
-Done in 4.1:
-
- Integration of array_iface branch.
-
- Design and implement I/O plugin API.
- Implement designed API for loadable modules
+Things That We Decided We Will Never Do
+=======================================
- Redo the loadable modules interface from the awk level.
+ Consider moving var_value info into Node_var itself to reduce
+ memory usage. This would break all uses of get_lhs in the
+ code. It's too sweeping a change.
- xgawk features (@load, -l, others)
+ Add macros for working with flags instead of using & and |
+ directly.
- Merge gawk/pgawk/dgawk into one executable
+ FIX regular field splitting to use FPAT algorithm.
+ Note: Looked at this. Not sure it's with the trouble:
+ If it ain't broke...
- Merge xmlgawk XML extensions (via source forge project that
- works with new API)
+ Scope IDs for IPv6 addresses
- Integrate MPFR to provide high precision arithmetic.
+ Gnulib
- Consider really implementing BWK awk SYMTAB for seeing what
- global variables are defined.
+ Make FIELDWIDTHS be an array?
-Things That We Decided We Will Never Do
----------------------------------------
+ "Do an optimization pass over parse tree?"
+ This isn't relevant now that we are using a byte code engine.
- Consider moving var_value info into Node_var itself to reduce
- memory usage. This would break all uses of get_lhs in the
- code. It's too sweeping a change.
+ "Consider integrating Fred Fish's DBUG library into gawk."
+ I did this once as an experiment. But I don't see a lot of value
+ to this at this stage of the development. Stepping through things
+ in a debugger is generally enough. Also, I would have to try to
+ track down the latest version of this.
- Add macros for working with flags instead of using & and |
- directly.
+ "Make awk '/foo/' files... run at egrep speeds (how?)"
+ This has been on the list since the early days (gawk 1.x or early
+ 2.x). But I am not sure how to really do this, nor have I done
+ timings, nor does there seem to be any real demand for this.
-Code Review
------------
-array.c
-awk.h
-builtin.c
-cmd.h
-command.y
-custom.h
-hard-locale.h
-io.c
-main.c
-mbsupport.h
-msg.c
-node.c
-re.c
-replace.c
-version.c
-xalloc.h
+ Change from dlopen to using the libltdl library (i.e. lt_dlopen).
+ This may support more platforms. If we move off of libtool
+ then this is the wrong direction.
diff --git a/aclocal.m4 b/aclocal.m4
index 2cf13dee..4099cd7e 100644
--- a/aclocal.m4
+++ b/aclocal.m4
@@ -1,6 +1,6 @@
-# generated automatically by aclocal 1.13.1 -*- Autoconf -*-
+# generated automatically by aclocal 1.13.4 -*- Autoconf -*-
-# Copyright (C) 1996-2012 Free Software Foundation, Inc.
+# Copyright (C) 1996-2013 Free Software Foundation, Inc.
# This file is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
@@ -35,7 +35,7 @@ AC_DEFUN([AM_AUTOMAKE_VERSION],
[am__api_version='1.13'
dnl Some users find AM_AUTOMAKE_VERSION and mistake it for a way to
dnl require some minimum version. Point them to the right macro.
-m4_if([$1], [1.13.1], [],
+m4_if([$1], [1.13.4], [],
[AC_FATAL([Do not call $0, use AM_INIT_AUTOMAKE([$1]).])])dnl
])
@@ -51,7 +51,7 @@ m4_define([_AM_AUTOCONF_VERSION], [])
# Call AM_AUTOMAKE_VERSION and AM_AUTOMAKE_VERSION so they can be traced.
# This function is AC_REQUIREd by AM_INIT_AUTOMAKE.
AC_DEFUN([AM_SET_CURRENT_AUTOMAKE_VERSION],
-[AM_AUTOMAKE_VERSION([1.13.1])dnl
+[AM_AUTOMAKE_VERSION([1.13.4])dnl
m4_ifndef([AC_AUTOCONF_VERSION],
[m4_copy([m4_PACKAGE_VERSION], [AC_AUTOCONF_VERSION])])dnl
_AM_AUTOCONF_VERSION(m4_defn([AC_AUTOCONF_VERSION]))])
@@ -373,7 +373,7 @@ AC_DEFUN([_AM_OUTPUT_DEPENDENCY_COMMANDS],
DEPDIR=`sed -n 's/^DEPDIR = //p' < "$mf"`
test -z "$DEPDIR" && continue
am__include=`sed -n 's/^am__include = //p' < "$mf"`
- test -z "am__include" && continue
+ test -z "$am__include" && continue
am__quote=`sed -n 's/^am__quote = //p' < "$mf"`
# Find all dependency output files, they are included files with
# $(DEPDIR) in their names. We invoke sed twice because it is the
@@ -925,76 +925,114 @@ AC_DEFUN([AM_SUBST_NOTMAKE], [_AM_SUBST_NOTMAKE($@)])
# Substitute a variable $(am__untar) that extract such
# a tarball read from stdin.
# $(am__untar) < result.tar
+#
AC_DEFUN([_AM_PROG_TAR],
[# Always define AMTAR for backward compatibility. Yes, it's still used
# in the wild :-( We should find a proper way to deprecate it ...
AC_SUBST([AMTAR], ['$${TAR-tar}'])
-m4_if([$1], [v7],
- [am__tar='$${TAR-tar} chof - "$$tardir"' am__untar='$${TAR-tar} xf -'],
- [m4_case([$1], [ustar],, [pax],,
- [m4_fatal([Unknown tar format])])
-AC_MSG_CHECKING([how to create a $1 tar archive])
-# Loop over all known methods to create a tar archive until one works.
+
+# We'll loop over all known methods to create a tar archive until one works.
_am_tools='gnutar m4_if([$1], [ustar], [plaintar]) pax cpio none'
-_am_tools=${am_cv_prog_tar_$1-$_am_tools}
-# Do not fold the above two line into one, because Tru64 sh and
-# Solaris sh will not grok spaces in the rhs of '-'.
-for _am_tool in $_am_tools
-do
- case $_am_tool in
- gnutar)
- for _am_tar in tar gnutar gtar;
- do
- AM_RUN_LOG([$_am_tar --version]) && break
- done
- am__tar="$_am_tar --format=m4_if([$1], [pax], [posix], [$1]) -chf - "'"$$tardir"'
- am__tar_="$_am_tar --format=m4_if([$1], [pax], [posix], [$1]) -chf - "'"$tardir"'
- am__untar="$_am_tar -xf -"
- ;;
- plaintar)
- # Must skip GNU tar: if it does not support --format= it doesn't create
- # ustar tarball either.
- (tar --version) >/dev/null 2>&1 && continue
- am__tar='tar chf - "$$tardir"'
- am__tar_='tar chf - "$tardir"'
- am__untar='tar xf -'
- ;;
- pax)
- am__tar='pax -L -x $1 -w "$$tardir"'
- am__tar_='pax -L -x $1 -w "$tardir"'
- am__untar='pax -r'
- ;;
- cpio)
- am__tar='find "$$tardir" -print | cpio -o -H $1 -L'
- am__tar_='find "$tardir" -print | cpio -o -H $1 -L'
- am__untar='cpio -i -H $1 -d'
- ;;
- none)
- am__tar=false
- am__tar_=false
- am__untar=false
- ;;
- esac
- # If the value was cached, stop now. We just wanted to have am__tar
- # and am__untar set.
- test -n "${am_cv_prog_tar_$1}" && break
+m4_if([$1], [v7],
+ [am__tar='$${TAR-tar} chof - "$$tardir"' am__untar='$${TAR-tar} xf -'],
+
+ [m4_case([$1],
+ [ustar],
+ [# The POSIX 1988 'ustar' format is defined with fixed-size fields.
+ # There is notably a 21 bits limit for the UID and the GID. In fact,
+ # the 'pax' utility can hang on bigger UID/GID (see automake bug#8343
+ # and bug#13588).
+ am_max_uid=2097151 # 2^21 - 1
+ am_max_gid=$am_max_uid
+ # The $UID and $GID variables are not portable, so we need to resort
+ # to the POSIX-mandated id(1) utility. Errors in the 'id' calls
+ # below are definitely unexpected, so allow the users to see them
+ # (that is, avoid stderr redirection).
+ am_uid=`id -u || echo unknown`
+ am_gid=`id -g || echo unknown`
+ AC_MSG_CHECKING([whether UID '$am_uid' is supported by ustar format])
+ if test $am_uid -le $am_max_uid; then
+ AC_MSG_RESULT([yes])
+ else
+ AC_MSG_RESULT([no])
+ _am_tools=none
+ fi
+ AC_MSG_CHECKING([whether GID '$am_gid' is supported by ustar format])
+ if test $am_gid -le $am_max_gid; then
+ AC_MSG_RESULT([yes])
+ else
+ AC_MSG_RESULT([no])
+ _am_tools=none
+ fi],
+
+ [pax],
+ [],
+
+ [m4_fatal([Unknown tar format])])
+
+ AC_MSG_CHECKING([how to create a $1 tar archive])
+
+ # Go ahead even if we have the value already cached. We do so because we
+ # need to set the values for the 'am__tar' and 'am__untar' variables.
+ _am_tools=${am_cv_prog_tar_$1-$_am_tools}
+
+ for _am_tool in $_am_tools; do
+ case $_am_tool in
+ gnutar)
+ for _am_tar in tar gnutar gtar; do
+ AM_RUN_LOG([$_am_tar --version]) && break
+ done
+ am__tar="$_am_tar --format=m4_if([$1], [pax], [posix], [$1]) -chf - "'"$$tardir"'
+ am__tar_="$_am_tar --format=m4_if([$1], [pax], [posix], [$1]) -chf - "'"$tardir"'
+ am__untar="$_am_tar -xf -"
+ ;;
+ plaintar)
+ # Must skip GNU tar: if it does not support --format= it doesn't create
+ # ustar tarball either.
+ (tar --version) >/dev/null 2>&1 && continue
+ am__tar='tar chf - "$$tardir"'
+ am__tar_='tar chf - "$tardir"'
+ am__untar='tar xf -'
+ ;;
+ pax)
+ am__tar='pax -L -x $1 -w "$$tardir"'
+ am__tar_='pax -L -x $1 -w "$tardir"'
+ am__untar='pax -r'
+ ;;
+ cpio)
+ am__tar='find "$$tardir" -print | cpio -o -H $1 -L'
+ am__tar_='find "$tardir" -print | cpio -o -H $1 -L'
+ am__untar='cpio -i -H $1 -d'
+ ;;
+ none)
+ am__tar=false
+ am__tar_=false
+ am__untar=false
+ ;;
+ esac
- # tar/untar a dummy directory, and stop if the command works
- rm -rf conftest.dir
- mkdir conftest.dir
- echo GrepMe > conftest.dir/file
- AM_RUN_LOG([tardir=conftest.dir && eval $am__tar_ >conftest.tar])
+ # If the value was cached, stop now. We just wanted to have am__tar
+ # and am__untar set.
+ test -n "${am_cv_prog_tar_$1}" && break
+
+ # tar/untar a dummy directory, and stop if the command works.
+ rm -rf conftest.dir
+ mkdir conftest.dir
+ echo GrepMe > conftest.dir/file
+ AM_RUN_LOG([tardir=conftest.dir && eval $am__tar_ >conftest.tar])
+ rm -rf conftest.dir
+ if test -s conftest.tar; then
+ AM_RUN_LOG([$am__untar <conftest.tar])
+ AM_RUN_LOG([cat conftest.dir/file])
+ grep GrepMe conftest.dir/file >/dev/null 2>&1 && break
+ fi
+ done
rm -rf conftest.dir
- if test -s conftest.tar; then
- AM_RUN_LOG([$am__untar <conftest.tar])
- grep GrepMe conftest.dir/file >/dev/null 2>&1 && break
- fi
-done
-rm -rf conftest.dir
-AC_CACHE_VAL([am_cv_prog_tar_$1], [am_cv_prog_tar_$1=$_am_tool])
-AC_MSG_RESULT([$am_cv_prog_tar_$1])])
+ AC_CACHE_VAL([am_cv_prog_tar_$1], [am_cv_prog_tar_$1=$_am_tool])
+ AC_MSG_RESULT([$am_cv_prog_tar_$1])])
+
AC_SUBST([am__tar])
AC_SUBST([am__untar])
]) # _AM_PROG_TAR
diff --git a/array.c b/array.c
index 92a1cb8e..682b8ddb 100644
--- a/array.c
+++ b/array.c
@@ -3,7 +3,7 @@
*/
/*
- * Copyright (C) 1986, 1988, 1989, 1991-2013 the Free Software Foundation, Inc.
+ * Copyright (C) 1986, 1988, 1989, 1991-2014 the Free Software Foundation, Inc.
*
* This file is part of GAWK, the GNU implementation of the
* AWK Programming Language.
@@ -113,21 +113,14 @@ null_array(NODE *symbol)
symbol->table_size = symbol->array_size = 0;
symbol->array_capacity = 0;
symbol->flags = 0;
- /*
- * 5/2013: This used to be
- *
- * assert(symbol->xarray == NULL);
- *
- * But that seems to cause problems for no good reason
- * that I can see. I believe it to be an artifact of the
- * union getting in the way.
- */
- symbol->xarray = NULL;
+
+ assert(symbol->xarray == NULL);
+
/* vname, parent_array not (re)initialized */
}
-/* null_lookup: assign type to an empty array. */
+/* null_lookup --- assign type to an empty array. */
static NODE **
null_lookup(NODE *symbol, NODE *subs)
@@ -349,6 +342,7 @@ force_array(NODE *symbol, bool canfatal)
switch (symbol->type) {
case Node_var_new:
+ symbol->xarray = NULL; /* make sure union is as it should be */
null_array(symbol);
symbol->parent_array = NULL; /* main array has no parent */
/* fall through */
@@ -854,6 +848,8 @@ asort_actual(int nargs, sort_context_t ctxt)
/* source array is empty */
if (dest != NULL && dest != array)
assoc_clear(dest);
+ if (list != NULL)
+ efree(list);
return make_number((AWKNUM) 0);
}
@@ -1283,7 +1279,7 @@ assoc_list(NODE *symbol, const char *sort_str, sort_context_t sort_ctxt)
INSTRUCTION *code = NULL;
extern int currule;
int save_rule = 0;
- assoc_kind_t assoc_kind = 0;
+ assoc_kind_t assoc_kind = ANONE;
elem_size = 1;
diff --git a/awk.h b/awk.h
index f8696179..759fe838 100644
--- a/awk.h
+++ b/awk.h
@@ -3,7 +3,7 @@
*/
/*
- * Copyright (C) 1986, 1988, 1989, 1991-2013 the Free Software Foundation, Inc.
+ * Copyright (C) 1986, 1988, 1989, 1991-2014 the Free Software Foundation, Inc.
*
* This file is part of GAWK, the GNU implementation of the
* AWK Programming Language.
@@ -180,10 +180,6 @@ typedef int off_t;
#define O_BINARY 0
#endif
-#ifndef HAVE_VPRINTF
-#error "you lose: you need a system with vfprintf"
-#endif /* HAVE_VPRINTF */
-
#ifndef HAVE_SETLOCALE
#define setlocale(locale, val) /* nothing */
#endif /* HAVE_SETLOCALE */
@@ -206,15 +202,15 @@ typedef void *stackoverflow_context_t;
#define stackoverflow_install_handler(catchstackoverflow, extra_stack, STACK_SIZE) 0
#endif
-/*
- * This is for fake directory file descriptors on systems that don't
- * allow to open() a directory.
- */
-#define FAKE_FD_VALUE 42
+#if defined(__EMX__) || defined(__MINGW32__)
+#include "nonposix.h"
+#endif /* defined(__EMX__) || defined(__MINGW32__) */
/* use this as lintwarn("...")
this is a hack but it gives us the right semantics */
#define lintwarn (*(set_loc(__FILE__, __LINE__),lintfunc))
+/* same thing for warning */
+#define warning (*(set_loc(__FILE__, __LINE__),r_warning))
#ifdef HAVE_MPFR
#include <gmp.h>
@@ -436,12 +432,13 @@ typedef struct exp_node {
# define MPFN 0x0800 /* arbitrary-precision floating-point number */
# define MPZN 0x1000 /* arbitrary-precision integer */
# define NO_EXT_SET 0x2000 /* extension cannot set a value for this variable */
+# define NULL_FIELD 0x4000 /* this is the null field */
/* type = Node_var_array */
-# define ARRAYMAXED 0x4000 /* array is at max size */
-# define HALFHAT 0x8000 /* half-capacity Hashed Array Tree;
+# define ARRAYMAXED 0x8000 /* array is at max size */
+# define HALFHAT 0x10000 /* half-capacity Hashed Array Tree;
* See cint_array.c */
-# define XARRAY 0x10000
+# define XARRAY 0x20000
} NODE;
#define vname sub.nodep.name
@@ -1330,6 +1327,7 @@ if (--val) \
/* array.c */
typedef enum { SORTED_IN = 1, ASORT, ASORTI } sort_context_t;
typedef enum {
+ ANONE = 0x00, /* "unused" value */
AINDEX = 0x001, /* list of indices */
AVALUE = 0x002, /* list of values */
AINUM = 0x004, /* numeric index */
@@ -1363,6 +1361,7 @@ extern NODE *do_aoption(int nargs);
extern NODE *do_asort(int nargs);
extern NODE *do_asorti(int nargs);
extern unsigned long (*hash)(const char *s, size_t len, unsigned long hsize, size_t *code);
+extern void init_env_array(NODE *env_node);
/* awkgram.c */
extern NODE *variable(int location, char *name, NODETYPE type);
extern int parse_program(INSTRUCTION **pcode);
@@ -1373,7 +1372,7 @@ extern const char *getfname(NODE *(*)(int));
extern NODE *stopme(int nargs);
extern void shadow_funcs(void);
extern int check_special(const char *name);
-extern SRCFILE *add_srcfile(int stype, char *src, SRCFILE *curr, bool *already_included, int *errcode);
+extern SRCFILE *add_srcfile(enum srctype stype, char *src, SRCFILE *curr, bool *already_included, int *errcode);
extern void register_deferred_variable(const char *name, NODE *(*load_func)(void));
extern int files_are_same(char *path, SRCFILE *src);
extern void valinfo(NODE *n, Func_print print_func, FILE *fp);
@@ -1579,7 +1578,7 @@ extern void final_exit(int status) ATTRIBUTE_NORETURN;
extern void err(bool isfatal, const char *s, const char *emsg, va_list argp) ATTRIBUTE_PRINTF(3, 0);
extern void msg (const char *mesg, ...) ATTRIBUTE_PRINTF_1;
extern void error (const char *mesg, ...) ATTRIBUTE_PRINTF_1;
-extern void warning (const char *mesg, ...) ATTRIBUTE_PRINTF_1;
+extern void r_warning (const char *mesg, ...) ATTRIBUTE_PRINTF_1;
extern void set_loc (const char *file, int line);
extern void r_fatal (const char *mesg, ...) ATTRIBUTE_PRINTF_1;
#if __GNUC__ > 3 || (__GNUC__ == 3 && __GNUC_MINOR__ >= 2)
@@ -1661,13 +1660,6 @@ extern NODE **function_list(bool sort);
extern void print_vars(NODE **table, Func_print print_func, FILE *fp);
/* floatcomp.c */
-#ifdef VMS /* VMS linker weirdness? */
-#define Ceil gawk_ceil
-#define Floor gawk_floor
-#endif
-
-extern AWKNUM Floor(AWKNUM n);
-extern AWKNUM Ceil(AWKNUM n);
#ifdef HAVE_UINTMAX_T
extern uintmax_t adjust_uint(uintmax_t n);
#else
diff --git a/awkgram.c b/awkgram.c
index c6d7aadb..9b21b282 100644
--- a/awkgram.c
+++ b/awkgram.c
@@ -1,19 +1,19 @@
-/* A Bison parser, made by GNU Bison 2.7.12-4996. */
+/* A Bison parser, made by GNU Bison 3.0.2. */
/* Bison implementation for Yacc-like parsers in C
-
- Copyright (C) 1984, 1989-1990, 2000-2013 Free Software Foundation, Inc.
-
+
+ Copyright (C) 1984, 1989-1990, 2000-2013 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 of the License, 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, see <http://www.gnu.org/licenses/>. */
@@ -26,7 +26,7 @@
special exception, which will cause the skeleton and the resulting
Bison output files to be licensed under the GNU General Public
License without this special exception.
-
+
This special exception was added by the Free Software Foundation in
version 2.2 of Bison. */
@@ -44,7 +44,7 @@
#define YYBISON 1
/* Bison version. */
-#define YYBISON_VERSION "2.7.12-4996"
+#define YYBISON_VERSION "3.0.2"
/* Skeleton name. */
#define YYSKELETON_NAME "yacc.c"
@@ -62,8 +62,7 @@
/* Copy the first part of user declarations. */
-/* Line 371 of yacc.c */
-#line 26 "awkgram.y"
+#line 26 "awkgram.y" /* yacc.c:339 */
#ifdef GAWKDEBUG
#define YYDEBUG 12
@@ -199,14 +198,13 @@ extern double fmod(double x, double y);
#define is_identchar(c) (isalnum(c) || (c) == '_')
-/* Line 371 of yacc.c */
-#line 204 "awkgram.c"
+#line 202 "awkgram.c" /* yacc.c:339 */
-# ifndef YY_NULL
+# ifndef YY_NULLPTR
# if defined __cplusplus && 201103L <= __cplusplus
-# define YY_NULL nullptr
+# define YY_NULLPTR nullptr
# else
-# define YY_NULL 0
+# define YY_NULLPTR 0
# endif
# endif
@@ -219,7 +217,7 @@ extern double fmod(double x, double y);
#endif
-/* Enabling traces. */
+/* Debug traces. */
#ifndef YYDEBUG
# define YYDEBUG 0
#endif
@@ -227,64 +225,63 @@ extern double fmod(double x, double y);
extern int yydebug;
#endif
-/* Tokens. */
+/* Token type. */
#ifndef YYTOKENTYPE
# define YYTOKENTYPE
- /* Put the tokens into the symbol table, so that GDB and other debuggers
- know about them. */
- enum yytokentype {
- FUNC_CALL = 258,
- NAME = 259,
- REGEXP = 260,
- FILENAME = 261,
- YNUMBER = 262,
- YSTRING = 263,
- RELOP = 264,
- IO_OUT = 265,
- IO_IN = 266,
- ASSIGNOP = 267,
- ASSIGN = 268,
- MATCHOP = 269,
- CONCAT_OP = 270,
- SUBSCRIPT = 271,
- LEX_BEGIN = 272,
- LEX_END = 273,
- LEX_IF = 274,
- LEX_ELSE = 275,
- LEX_RETURN = 276,
- LEX_DELETE = 277,
- LEX_SWITCH = 278,
- LEX_CASE = 279,
- LEX_DEFAULT = 280,
- LEX_WHILE = 281,
- LEX_DO = 282,
- LEX_FOR = 283,
- LEX_BREAK = 284,
- LEX_CONTINUE = 285,
- LEX_PRINT = 286,
- LEX_PRINTF = 287,
- LEX_NEXT = 288,
- LEX_EXIT = 289,
- LEX_FUNCTION = 290,
- LEX_BEGINFILE = 291,
- LEX_ENDFILE = 292,
- LEX_GETLINE = 293,
- LEX_NEXTFILE = 294,
- LEX_IN = 295,
- LEX_AND = 296,
- LEX_OR = 297,
- INCREMENT = 298,
- DECREMENT = 299,
- LEX_BUILTIN = 300,
- LEX_LENGTH = 301,
- LEX_EOF = 302,
- LEX_INCLUDE = 303,
- LEX_EVAL = 304,
- LEX_LOAD = 305,
- NEWLINE = 306,
- SLASH_BEFORE_EQUAL = 307,
- UNARY = 308
- };
+ enum yytokentype
+ {
+ FUNC_CALL = 258,
+ NAME = 259,
+ REGEXP = 260,
+ FILENAME = 261,
+ YNUMBER = 262,
+ YSTRING = 263,
+ RELOP = 264,
+ IO_OUT = 265,
+ IO_IN = 266,
+ ASSIGNOP = 267,
+ ASSIGN = 268,
+ MATCHOP = 269,
+ CONCAT_OP = 270,
+ SUBSCRIPT = 271,
+ LEX_BEGIN = 272,
+ LEX_END = 273,
+ LEX_IF = 274,
+ LEX_ELSE = 275,
+ LEX_RETURN = 276,
+ LEX_DELETE = 277,
+ LEX_SWITCH = 278,
+ LEX_CASE = 279,
+ LEX_DEFAULT = 280,
+ LEX_WHILE = 281,
+ LEX_DO = 282,
+ LEX_FOR = 283,
+ LEX_BREAK = 284,
+ LEX_CONTINUE = 285,
+ LEX_PRINT = 286,
+ LEX_PRINTF = 287,
+ LEX_NEXT = 288,
+ LEX_EXIT = 289,
+ LEX_FUNCTION = 290,
+ LEX_BEGINFILE = 291,
+ LEX_ENDFILE = 292,
+ LEX_GETLINE = 293,
+ LEX_NEXTFILE = 294,
+ LEX_IN = 295,
+ LEX_AND = 296,
+ LEX_OR = 297,
+ INCREMENT = 298,
+ DECREMENT = 299,
+ LEX_BUILTIN = 300,
+ LEX_LENGTH = 301,
+ LEX_EOF = 302,
+ LEX_INCLUDE = 303,
+ LEX_EVAL = 304,
+ LEX_LOAD = 305,
+ NEWLINE = 306,
+ SLASH_BEFORE_EQUAL = 307,
+ UNARY = 308
+ };
#endif
/* Tokens. */
#define FUNC_CALL 258
@@ -339,37 +336,23 @@ extern int yydebug;
#define SLASH_BEFORE_EQUAL 307
#define UNARY 308
-
-
+/* Value type. */
#if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED
typedef int YYSTYPE;
# define YYSTYPE_IS_TRIVIAL 1
-# define yystype YYSTYPE /* obsolescent; will be withdrawn */
# define YYSTYPE_IS_DECLARED 1
#endif
+
extern YYSTYPE yylval;
-#ifdef YYPARSE_PARAM
-#if defined __STDC__ || defined __cplusplus
-int yyparse (void *YYPARSE_PARAM);
-#else
-int yyparse ();
-#endif
-#else /* ! YYPARSE_PARAM */
-#if defined __STDC__ || defined __cplusplus
int yyparse (void);
-#else
-int yyparse ();
-#endif
-#endif /* ! YYPARSE_PARAM */
/* Copy the second part of user declarations. */
-/* Line 390 of yacc.c */
-#line 373 "awkgram.c"
+#line 356 "awkgram.c" /* yacc.c:358 */
#ifdef short
# undef short
@@ -383,11 +366,8 @@ typedef unsigned char yytype_uint8;
#ifdef YYTYPE_INT8
typedef YYTYPE_INT8 yytype_int8;
-#elif (defined __STDC__ || defined __C99__FUNC__ \
- || defined __cplusplus || defined _MSC_VER)
-typedef signed char yytype_int8;
#else
-typedef short int yytype_int8;
+typedef signed char yytype_int8;
#endif
#ifdef YYTYPE_UINT16
@@ -407,8 +387,7 @@ typedef short int yytype_int16;
# define YYSIZE_T __SIZE_TYPE__
# elif defined size_t
# define YYSIZE_T size_t
-# elif ! defined YYSIZE_T && (defined __STDC__ || defined __C99__FUNC__ \
- || defined __cplusplus || defined _MSC_VER)
+# elif ! defined YYSIZE_T
# include <stddef.h> /* INFRINGES ON USER NAME SPACE */
# define YYSIZE_T size_t
# else
@@ -430,11 +409,30 @@ typedef short int yytype_int16;
# endif
#endif
-#ifndef __attribute__
-/* This feature is available in gcc versions 2.5 and later. */
-# if (! defined __GNUC__ || __GNUC__ < 2 \
- || (__GNUC__ == 2 && __GNUC_MINOR__ < 5))
-# define __attribute__(Spec) /* empty */
+#ifndef YY_ATTRIBUTE
+# if (defined __GNUC__ \
+ && (2 < __GNUC__ || (__GNUC__ == 2 && 96 <= __GNUC_MINOR__))) \
+ || defined __SUNPRO_C && 0x5110 <= __SUNPRO_C
+# define YY_ATTRIBUTE(Spec) __attribute__(Spec)
+# else
+# define YY_ATTRIBUTE(Spec) /* empty */
+# endif
+#endif
+
+#ifndef YY_ATTRIBUTE_PURE
+# define YY_ATTRIBUTE_PURE YY_ATTRIBUTE ((__pure__))
+#endif
+
+#ifndef YY_ATTRIBUTE_UNUSED
+# define YY_ATTRIBUTE_UNUSED YY_ATTRIBUTE ((__unused__))
+#endif
+
+#if !defined _Noreturn \
+ && (!defined __STDC_VERSION__ || __STDC_VERSION__ < 201112)
+# if defined _MSC_VER && 1200 <= _MSC_VER
+# define _Noreturn __declspec (noreturn)
+# else
+# define _Noreturn YY_ATTRIBUTE ((__noreturn__))
# endif
#endif
@@ -445,24 +443,25 @@ typedef short int yytype_int16;
# define YYUSE(E) /* empty */
#endif
-
-/* Identity function, used to suppress warnings about constant conditions. */
-#ifndef lint
-# define YYID(N) (N)
+#if defined __GNUC__ && 407 <= __GNUC__ * 100 + __GNUC_MINOR__
+/* Suppress an incorrect diagnostic about yylval being uninitialized. */
+# define YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN \
+ _Pragma ("GCC diagnostic push") \
+ _Pragma ("GCC diagnostic ignored \"-Wuninitialized\"")\
+ _Pragma ("GCC diagnostic ignored \"-Wmaybe-uninitialized\"")
+# define YY_IGNORE_MAYBE_UNINITIALIZED_END \
+ _Pragma ("GCC diagnostic pop")
#else
-#if (defined __STDC__ || defined __C99__FUNC__ \
- || defined __cplusplus || defined _MSC_VER)
-static int
-YYID (int yyi)
-#else
-static int
-YYID (yyi)
- int yyi;
+# define YY_INITIAL_VALUE(Value) Value
#endif
-{
- return yyi;
-}
+#ifndef YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN
+# define YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN
+# define YY_IGNORE_MAYBE_UNINITIALIZED_END
#endif
+#ifndef YY_INITIAL_VALUE
+# define YY_INITIAL_VALUE(Value) /* Nothing. */
+#endif
+
#if ! defined yyoverflow || YYERROR_VERBOSE
@@ -481,8 +480,7 @@ YYID (yyi)
# define alloca _alloca
# else
# define YYSTACK_ALLOC alloca
-# if ! defined _ALLOCA_H && ! defined EXIT_SUCCESS && (defined __STDC__ || defined __C99__FUNC__ \
- || defined __cplusplus || defined _MSC_VER)
+# if ! defined _ALLOCA_H && ! defined EXIT_SUCCESS
# include <stdlib.h> /* INFRINGES ON USER NAME SPACE */
/* Use EXIT_SUCCESS as a witness for stdlib.h. */
# ifndef EXIT_SUCCESS
@@ -494,8 +492,8 @@ YYID (yyi)
# endif
# ifdef YYSTACK_ALLOC
- /* Pacify GCC's `empty if-body' warning. */
-# define YYSTACK_FREE(Ptr) do { /* empty */; } while (YYID (0))
+ /* Pacify GCC's 'empty if-body' warning. */
+# define YYSTACK_FREE(Ptr) do { /* empty */; } while (0)
# ifndef YYSTACK_ALLOC_MAXIMUM
/* The OS might guarantee only one guard page at the bottom of the stack,
and a page size can be as small as 4096 bytes. So we cannot safely
@@ -511,7 +509,7 @@ YYID (yyi)
# endif
# if (defined __cplusplus && ! defined EXIT_SUCCESS \
&& ! ((defined YYMALLOC || defined malloc) \
- && (defined YYFREE || defined free)))
+ && (defined YYFREE || defined free)))
# include <stdlib.h> /* INFRINGES ON USER NAME SPACE */
# ifndef EXIT_SUCCESS
# define EXIT_SUCCESS 0
@@ -519,15 +517,13 @@ YYID (yyi)
# endif
# ifndef YYMALLOC
# define YYMALLOC malloc
-# if ! defined malloc && ! defined EXIT_SUCCESS && (defined __STDC__ || defined __C99__FUNC__ \
- || defined __cplusplus || defined _MSC_VER)
+# if ! defined malloc && ! defined EXIT_SUCCESS
void *malloc (YYSIZE_T); /* INFRINGES ON USER NAME SPACE */
# endif
# endif
# ifndef YYFREE
# define YYFREE free
-# if ! defined free && ! defined EXIT_SUCCESS && (defined __STDC__ || defined __C99__FUNC__ \
- || defined __cplusplus || defined _MSC_VER)
+# if ! defined free && ! defined EXIT_SUCCESS
void free (void *); /* INFRINGES ON USER NAME SPACE */
# endif
# endif
@@ -537,7 +533,7 @@ void free (void *); /* INFRINGES ON USER NAME SPACE */
#if (! defined yyoverflow \
&& (! defined __cplusplus \
- || (defined YYSTYPE_IS_TRIVIAL && YYSTYPE_IS_TRIVIAL)))
+ || (defined YYSTYPE_IS_TRIVIAL && YYSTYPE_IS_TRIVIAL)))
/* A type that is properly aligned for any stack member. */
union yyalloc
@@ -562,16 +558,16 @@ union yyalloc
elements in the stack, and YYPTR gives the new location of the
stack. Advance YYPTR to a properly aligned location for the next
stack. */
-# define YYSTACK_RELOCATE(Stack_alloc, Stack) \
- do \
- { \
- YYSIZE_T yynewbytes; \
- YYCOPY (&yyptr->Stack_alloc, Stack, yysize); \
- Stack = &yyptr->Stack_alloc; \
- yynewbytes = yystacksize * sizeof (*Stack) + YYSTACK_GAP_MAXIMUM; \
- yyptr += yynewbytes / sizeof (*yyptr); \
- } \
- while (YYID (0))
+# define YYSTACK_RELOCATE(Stack_alloc, Stack) \
+ do \
+ { \
+ YYSIZE_T yynewbytes; \
+ YYCOPY (&yyptr->Stack_alloc, Stack, yysize); \
+ Stack = &yyptr->Stack_alloc; \
+ yynewbytes = yystacksize * sizeof (*Stack) + YYSTACK_GAP_MAXIMUM; \
+ yyptr += yynewbytes / sizeof (*yyptr); \
+ } \
+ while (0)
#endif
@@ -590,7 +586,7 @@ union yyalloc
for (yyi = 0; yyi < (Count); yyi++) \
(Dst)[yyi] = (Src)[yyi]; \
} \
- while (YYID (0))
+ while (0)
# endif
# endif
#endif /* !YYCOPY_NEEDED */
@@ -606,17 +602,19 @@ union yyalloc
#define YYNNTS 65
/* YYNRULES -- Number of rules. */
#define YYNRULES 188
-/* YYNRULES -- Number of states. */
+/* YYNSTATES -- Number of states. */
#define YYNSTATES 335
-/* YYTRANSLATE(YYLEX) -- Bison symbol number corresponding to YYLEX. */
+/* YYTRANSLATE[YYX] -- Symbol number corresponding to YYX as returned
+ by yylex, with out-of-bounds checking. */
#define YYUNDEFTOK 2
#define YYMAXUTOK 308
-#define YYTRANSLATE(YYX) \
+#define YYTRANSLATE(YYX) \
((unsigned int) (YYX) <= YYMAXUTOK ? yytranslate[YYX] : YYUNDEFTOK)
-/* YYTRANSLATE[YYLEX] -- Bison symbol number corresponding to YYLEX. */
+/* YYTRANSLATE[TOKEN-NUM] -- Symbol number corresponding to TOKEN-NUM
+ as returned by yylex, without out-of-bounds checking. */
static const yytype_uint8 yytranslate[] =
{
0, 2, 2, 2, 2, 2, 2, 2, 2, 2,
@@ -653,96 +651,7 @@ static const yytype_uint8 yytranslate[] =
};
#if YYDEBUG
-/* YYPRHS[YYN] -- Index of the first RHS symbol of rule number YYN in
- YYRHS. */
-static const yytype_uint16 yyprhs[] =
-{
- 0, 0, 3, 4, 7, 10, 13, 16, 19, 22,
- 25, 30, 35, 37, 40, 42, 44, 47, 49, 50,
- 52, 57, 59, 61, 63, 65, 71, 73, 75, 77,
- 80, 82, 84, 91, 92, 96, 98, 100, 101, 104,
- 107, 109, 112, 115, 119, 121, 131, 138, 147, 156,
- 169, 181, 183, 186, 189, 192, 195, 199, 200, 205,
- 208, 209, 214, 215, 220, 225, 227, 228, 230, 231,
- 234, 237, 243, 248, 250, 253, 256, 258, 260, 262,
- 264, 266, 270, 271, 272, 276, 283, 293, 295, 298,
- 299, 301, 302, 305, 306, 308, 310, 314, 316, 319,
- 323, 324, 326, 327, 329, 331, 335, 337, 340, 344,
- 348, 352, 356, 360, 364, 368, 372, 378, 380, 382,
- 384, 387, 389, 391, 393, 395, 397, 399, 402, 404,
- 408, 412, 416, 420, 424, 428, 432, 435, 438, 444,
- 449, 453, 457, 461, 465, 469, 473, 475, 478, 482,
- 487, 492, 494, 496, 498, 501, 504, 506, 508, 511,
- 514, 516, 519, 524, 525, 527, 528, 531, 533, 536,
- 538, 542, 544, 547, 550, 552, 555, 557, 561, 563,
- 565, 566, 569, 572, 574, 575, 577, 579, 581
-};
-
-/* YYRHS -- A `-1'-separated list of the rules' RHS. */
-static const yytype_int16 yyrhs[] =
-{
- 76, 0, -1, -1, 76, 77, -1, 76, 105, -1,
- 76, 47, -1, 76, 1, -1, 80, 81, -1, 80,
- 89, -1, 84, 81, -1, 69, 48, 78, 89, -1,
- 69, 50, 79, 89, -1, 6, -1, 6, 1, -1,
- 1, -1, 6, -1, 6, 1, -1, 1, -1, -1,
- 113, -1, 113, 55, 106, 113, -1, 17, -1, 18,
- -1, 36, -1, 37, -1, 133, 88, 134, 136, 106,
- -1, 4, -1, 3, -1, 83, -1, 69, 49, -1,
- 45, -1, 46, -1, 35, 82, 67, 108, 135, 106,
- -1, -1, 87, 86, 5, -1, 61, -1, 52, -1,
- -1, 88, 90, -1, 88, 1, -1, 105, -1, 137,
- 106, -1, 137, 106, -1, 133, 88, 134, -1, 104,
- -1, 23, 67, 113, 135, 106, 133, 97, 106, 134,
- -1, 26, 67, 113, 135, 106, 90, -1, 27, 106,
- 90, 26, 67, 113, 135, 106, -1, 28, 67, 4,
- 40, 130, 135, 106, 90, -1, 28, 67, 96, 137,
- 106, 113, 137, 106, 96, 135, 106, 90, -1, 28,
- 67, 96, 137, 106, 137, 106, 96, 135, 106, 90,
- -1, 91, -1, 29, 89, -1, 30, 89, -1, 33,
- 89, -1, 39, 89, -1, 34, 110, 89, -1, -1,
- 21, 92, 110, 89, -1, 93, 89, -1, -1, 100,
- 94, 101, 102, -1, -1, 22, 4, 95, 124, -1,
- 22, 67, 4, 68, -1, 113, -1, -1, 93, -1,
- -1, 97, 98, -1, 97, 1, -1, 24, 99, 138,
- 106, 88, -1, 25, 138, 106, 88, -1, 7, -1,
- 59, 7, -1, 58, 7, -1, 8, -1, 85, -1,
- 31, -1, 32, -1, 111, -1, 67, 112, 135, -1,
- -1, -1, 10, 103, 117, -1, 19, 67, 113, 135,
- 106, 90, -1, 19, 67, 113, 135, 106, 90, 20,
- 106, 90, -1, 51, -1, 105, 51, -1, -1, 105,
- -1, -1, 56, 118, -1, -1, 109, -1, 4, -1,
- 109, 139, 4, -1, 1, -1, 109, 1, -1, 109,
- 139, 1, -1, -1, 113, -1, -1, 112, -1, 113,
- -1, 112, 139, 113, -1, 1, -1, 112, 1, -1,
- 112, 1, 113, -1, 112, 139, 1, -1, 131, 114,
- 113, -1, 113, 41, 113, -1, 113, 42, 113, -1,
- 113, 14, 113, -1, 113, 40, 130, -1, 113, 116,
- 113, -1, 113, 53, 113, 54, 113, -1, 117, -1,
- 13, -1, 12, -1, 52, 13, -1, 9, -1, 56,
- -1, 115, -1, 57, -1, 118, -1, 119, -1, 117,
- 118, -1, 120, -1, 118, 65, 118, -1, 118, 60,
- 118, -1, 118, 61, 118, -1, 118, 62, 118, -1,
- 118, 58, 118, -1, 118, 59, 118, -1, 38, 123,
- 107, -1, 131, 43, -1, 131, 44, -1, 67, 112,
- 135, 40, 130, -1, 117, 11, 38, 123, -1, 119,
- 65, 118, -1, 119, 60, 118, -1, 119, 61, 118,
- -1, 119, 62, 118, -1, 119, 58, 118, -1, 119,
- 59, 118, -1, 85, -1, 63, 118, -1, 67, 113,
- 135, -1, 45, 67, 111, 135, -1, 46, 67, 111,
- 135, -1, 46, -1, 121, -1, 131, -1, 43, 131,
- -1, 44, 131, -1, 7, -1, 8, -1, 59, 118,
- -1, 58, 118, -1, 122, -1, 69, 122, -1, 3,
- 67, 111, 135, -1, -1, 131, -1, -1, 125, 16,
- -1, 126, -1, 125, 126, -1, 127, -1, 70, 112,
- 71, -1, 127, -1, 128, 127, -1, 128, 16, -1,
- 4, -1, 4, 129, -1, 130, -1, 66, 120, 132,
- -1, 43, -1, 44, -1, -1, 72, 106, -1, 73,
- 106, -1, 68, -1, -1, 137, -1, 74, -1, 54,
- -1, 55, 106, -1
-};
-
-/* YYRLINE[YYN] -- source line where rule number YYN was defined. */
+ /* YYRLINE[YYN] -- Source line where rule number YYN was defined. */
static const yytype_uint16 yyrline[] =
{
0, 201, 201, 203, 208, 209, 215, 227, 231, 242,
@@ -796,13 +705,13 @@ static const char *const yytname[] =
"func_call", "direct_func_call", "opt_variable", "delete_subscript_list",
"delete_subscript", "delete_exp_list", "bracketed_exp_list", "subscript",
"subscript_list", "simple_variable", "variable", "opt_incdec", "l_brace",
- "r_brace", "r_paren", "opt_semi", "semi", "colon", "comma", YY_NULL
+ "r_brace", "r_paren", "opt_semi", "semi", "colon", "comma", YY_NULLPTR
};
#endif
# ifdef YYPRINT
-/* YYTOKNUM[YYLEX-NUM] -- Internal token number corresponding to
- token YYLEX-NUM. */
+/* YYTOKNUM[NUM] -- (External) token number corresponding to the
+ (internal) symbol number NUM (which must be that of a token). */
static const yytype_uint16 yytoknum[] =
{
0, 256, 257, 258, 259, 260, 261, 262, 263, 264,
@@ -816,110 +725,18 @@ static const yytype_uint16 yytoknum[] =
};
# endif
-/* YYR1[YYN] -- Symbol number of symbol that rule YYN derives. */
-static const yytype_uint8 yyr1[] =
-{
- 0, 75, 76, 76, 76, 76, 76, 77, 77, 77,
- 77, 77, 78, 78, 78, 79, 79, 79, 80, 80,
- 80, 80, 80, 80, 80, 81, 82, 82, 82, 82,
- 83, 83, 84, 86, 85, 87, 87, 88, 88, 88,
- 89, 89, 90, 90, 90, 90, 90, 90, 90, 90,
- 90, 90, 91, 91, 91, 91, 91, 92, 91, 91,
- 94, 93, 95, 93, 93, 93, 96, 96, 97, 97,
- 97, 98, 98, 99, 99, 99, 99, 99, 100, 100,
- 101, 101, 102, 103, 102, 104, 104, 105, 105, 106,
- 106, 107, 107, 108, 108, 109, 109, 109, 109, 109,
- 110, 110, 111, 111, 112, 112, 112, 112, 112, 112,
- 113, 113, 113, 113, 113, 113, 113, 113, 114, 114,
- 114, 115, 115, 116, 116, 117, 117, 117, 118, 118,
- 118, 118, 118, 118, 118, 118, 118, 118, 118, 119,
- 119, 119, 119, 119, 119, 119, 120, 120, 120, 120,
- 120, 120, 120, 120, 120, 120, 120, 120, 120, 120,
- 121, 121, 122, 123, 123, 124, 124, 125, 125, 126,
- 127, 128, 128, 129, 130, 130, 131, 131, 132, 132,
- 132, 133, 134, 135, 136, 136, 137, 138, 139
-};
+#define YYPACT_NINF -273
-/* YYR2[YYN] -- Number of symbols composing right hand side of rule YYN. */
-static const yytype_uint8 yyr2[] =
-{
- 0, 2, 0, 2, 2, 2, 2, 2, 2, 2,
- 4, 4, 1, 2, 1, 1, 2, 1, 0, 1,
- 4, 1, 1, 1, 1, 5, 1, 1, 1, 2,
- 1, 1, 6, 0, 3, 1, 1, 0, 2, 2,
- 1, 2, 2, 3, 1, 9, 6, 8, 8, 12,
- 11, 1, 2, 2, 2, 2, 3, 0, 4, 2,
- 0, 4, 0, 4, 4, 1, 0, 1, 0, 2,
- 2, 5, 4, 1, 2, 2, 1, 1, 1, 1,
- 1, 3, 0, 0, 3, 6, 9, 1, 2, 0,
- 1, 0, 2, 0, 1, 1, 3, 1, 2, 3,
- 0, 1, 0, 1, 1, 3, 1, 2, 3, 3,
- 3, 3, 3, 3, 3, 3, 5, 1, 1, 1,
- 2, 1, 1, 1, 1, 1, 1, 2, 1, 3,
- 3, 3, 3, 3, 3, 3, 2, 2, 5, 4,
- 3, 3, 3, 3, 3, 3, 1, 2, 3, 4,
- 4, 1, 1, 1, 2, 2, 1, 1, 2, 2,
- 1, 2, 4, 0, 1, 0, 2, 1, 2, 1,
- 3, 1, 2, 2, 1, 2, 1, 3, 1, 1,
- 0, 2, 2, 1, 0, 1, 1, 1, 2
-};
+#define yypact_value_is_default(Yystate) \
+ (!!((Yystate) == (-273)))
-/* YYDEFACT[STATE-NAME] -- Default reduction number in state STATE-NUM.
- Performed when YYTABLE doesn't specify something else to do. Zero
- means the default is an error. */
-static const yytype_uint8 yydefact[] =
-{
- 2, 0, 1, 6, 0, 174, 156, 157, 21, 22,
- 0, 23, 24, 163, 0, 0, 0, 151, 5, 87,
- 36, 0, 0, 35, 0, 0, 0, 0, 3, 0,
- 0, 146, 33, 4, 19, 117, 125, 126, 128, 152,
- 160, 176, 153, 0, 0, 171, 0, 175, 27, 26,
- 30, 31, 0, 0, 28, 91, 164, 154, 155, 0,
- 0, 0, 159, 153, 158, 147, 0, 180, 153, 106,
- 0, 104, 0, 0, 161, 89, 186, 7, 8, 40,
- 37, 89, 9, 0, 88, 121, 0, 0, 0, 0,
- 0, 89, 122, 124, 123, 0, 0, 127, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 119, 118, 136, 137, 0, 0, 0, 0, 104, 0,
- 173, 172, 29, 0, 0, 135, 0, 0, 0, 178,
- 179, 177, 107, 89, 183, 0, 0, 148, 14, 0,
- 0, 17, 0, 0, 90, 181, 0, 41, 34, 113,
- 114, 111, 112, 0, 0, 115, 163, 133, 134, 130,
- 131, 132, 129, 144, 145, 141, 142, 143, 140, 120,
- 110, 162, 170, 97, 95, 0, 0, 92, 149, 150,
- 108, 188, 0, 109, 105, 13, 10, 16, 11, 39,
- 0, 57, 0, 0, 0, 89, 0, 0, 0, 78,
- 79, 0, 100, 0, 89, 38, 51, 0, 60, 44,
- 65, 37, 184, 89, 0, 20, 139, 89, 98, 0,
- 138, 0, 100, 62, 0, 0, 0, 0, 66, 52,
- 53, 54, 0, 101, 55, 182, 59, 0, 0, 89,
- 185, 42, 116, 32, 99, 96, 0, 0, 165, 0,
- 0, 0, 0, 174, 67, 0, 56, 0, 82, 80,
- 43, 25, 89, 58, 63, 0, 167, 169, 64, 89,
- 89, 0, 0, 89, 0, 83, 61, 0, 166, 168,
- 0, 0, 0, 0, 0, 81, 0, 85, 68, 46,
- 0, 89, 0, 89, 84, 89, 0, 89, 0, 89,
- 66, 0, 70, 0, 0, 69, 0, 47, 48, 66,
- 0, 86, 73, 76, 0, 0, 77, 0, 187, 89,
- 45, 0, 89, 75, 74, 89, 37, 89, 0, 37,
- 0, 0, 50, 0, 49
-};
+#define YYTABLE_NINF -104
-/* YYDEFGOTO[NTERM-NUM]. */
-static const yytype_int16 yydefgoto[] =
-{
- -1, 1, 28, 140, 143, 29, 77, 53, 54, 30,
- 31, 83, 32, 146, 78, 205, 206, 222, 207, 237,
- 248, 255, 296, 305, 317, 208, 258, 276, 286, 209,
- 144, 145, 125, 175, 176, 232, 116, 117, 210, 115,
- 94, 95, 35, 36, 37, 38, 39, 40, 55, 264,
- 265, 266, 45, 46, 47, 41, 42, 131, 211, 212,
- 137, 239, 213, 319, 136
-};
+#define yytable_value_is_error(Yytable_value) \
+ (!!((Yytable_value) == (-104)))
-/* YYPACT[STATE-NUM] -- Index in YYTABLE of the portion describing
- STATE-NUM. */
-#define YYPACT_NINF -273
+ /* YYPACT[STATE-NUM] -- Index in YYTABLE of the portion describing
+ STATE-NUM. */
static const yytype_int16 yypact[] =
{
-273, 376, -273, -273, -27, -21, -273, -273, -273, -273,
@@ -958,7 +775,48 @@ static const yytype_int16 yypact[] =
448, 710, -273, 522, -273
};
-/* YYPGOTO[NTERM-NUM]. */
+ /* YYDEFACT[STATE-NUM] -- Default reduction number in state STATE-NUM.
+ Performed when YYTABLE does not specify something else to do. Zero
+ means the default is an error. */
+static const yytype_uint8 yydefact[] =
+{
+ 2, 0, 1, 6, 0, 174, 156, 157, 21, 22,
+ 0, 23, 24, 163, 0, 0, 0, 151, 5, 87,
+ 36, 0, 0, 35, 0, 0, 0, 0, 3, 0,
+ 0, 146, 33, 4, 19, 117, 125, 126, 128, 152,
+ 160, 176, 153, 0, 0, 171, 0, 175, 27, 26,
+ 30, 31, 0, 0, 28, 91, 164, 154, 155, 0,
+ 0, 0, 159, 153, 158, 147, 0, 180, 153, 106,
+ 0, 104, 0, 0, 161, 89, 186, 7, 8, 40,
+ 37, 89, 9, 0, 88, 121, 0, 0, 0, 0,
+ 0, 89, 122, 124, 123, 0, 0, 127, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 119, 118, 136, 137, 0, 0, 0, 0, 104, 0,
+ 173, 172, 29, 0, 0, 135, 0, 0, 0, 178,
+ 179, 177, 107, 89, 183, 0, 0, 148, 14, 0,
+ 0, 17, 0, 0, 90, 181, 0, 41, 34, 113,
+ 114, 111, 112, 0, 0, 115, 163, 133, 134, 130,
+ 131, 132, 129, 144, 145, 141, 142, 143, 140, 120,
+ 110, 162, 170, 97, 95, 0, 0, 92, 149, 150,
+ 108, 188, 0, 109, 105, 13, 10, 16, 11, 39,
+ 0, 57, 0, 0, 0, 89, 0, 0, 0, 78,
+ 79, 0, 100, 0, 89, 38, 51, 0, 60, 44,
+ 65, 37, 184, 89, 0, 20, 139, 89, 98, 0,
+ 138, 0, 100, 62, 0, 0, 0, 0, 66, 52,
+ 53, 54, 0, 101, 55, 182, 59, 0, 0, 89,
+ 185, 42, 116, 32, 99, 96, 0, 0, 165, 0,
+ 0, 0, 0, 174, 67, 0, 56, 0, 82, 80,
+ 43, 25, 89, 58, 63, 0, 167, 169, 64, 89,
+ 89, 0, 0, 89, 0, 83, 61, 0, 166, 168,
+ 0, 0, 0, 0, 0, 81, 0, 85, 68, 46,
+ 0, 89, 0, 89, 84, 89, 0, 89, 0, 89,
+ 66, 0, 70, 0, 0, 69, 0, 47, 48, 66,
+ 0, 86, 73, 76, 0, 0, 77, 0, 187, 89,
+ 45, 0, 89, 75, 74, 89, 37, 89, 0, 37,
+ 0, 0, 50, 0, 49
+};
+
+ /* YYPGOTO[NTERM-NUM]. */
static const yytype_int16 yypgoto[] =
{
-273, -273, -273, -273, -273, -273, 208, -273, -273, -273,
@@ -970,10 +828,21 @@ static const yytype_int16 yypgoto[] =
-46, -273, -25, -57, 85
};
-/* YYTABLE[YYPACT[STATE-NUM]]. What to do in state STATE-NUM. If
- positive, shift that token. If negative, reduce the rule which
- number is the opposite. If YYTABLE_NINF, syntax error. */
-#define YYTABLE_NINF -104
+ /* YYDEFGOTO[NTERM-NUM]. */
+static const yytype_int16 yydefgoto[] =
+{
+ -1, 1, 28, 140, 143, 29, 77, 53, 54, 30,
+ 31, 83, 32, 146, 78, 205, 206, 222, 207, 237,
+ 248, 255, 296, 305, 317, 208, 258, 276, 286, 209,
+ 144, 145, 125, 175, 176, 232, 116, 117, 210, 115,
+ 94, 95, 35, 36, 37, 38, 39, 40, 55, 264,
+ 265, 266, 45, 46, 47, 41, 42, 131, 211, 212,
+ 137, 239, 213, 319, 136
+};
+
+ /* YYTABLE[YYPACT[STATE-NUM]] -- What to do in state STATE-NUM. If
+ positive, shift that token. If negative, reduce the rule whose
+ number is the opposite. If YYTABLE_NINF, syntax error. */
static const yytype_int16 yytable[] =
{
34, 80, 80, 70, 81, 126, 127, 260, 121, 238,
@@ -1094,12 +963,6 @@ static const yytype_int16 yytable[] =
0, 90, 214, 0, 92, 93
};
-#define yypact_value_is_default(Yystate) \
- (!!((Yystate) == (-273)))
-
-#define yytable_value_is_error(Yytable_value) \
- (!!((Yytable_value) == (-104)))
-
static const yytype_int16 yycheck[] =
{
1, 29, 30, 26, 29, 59, 60, 238, 46, 211,
@@ -1220,8 +1083,8 @@ static const yytype_int16 yycheck[] =
-1, 53, 54, -1, 56, 57
};
-/* YYSTOS[STATE-NUM] -- The (internal number of the) accessing
- symbol of state STATE-NUM. */
+ /* YYSTOS[STATE-NUM] -- The (internal number of the) accessing
+ symbol of state STATE-NUM. */
static const yytype_uint8 yystos[] =
{
0, 76, 0, 1, 3, 4, 7, 8, 17, 18,
@@ -1260,30 +1123,64 @@ static const yytype_uint8 yystos[] =
88, 106, 90, 88, 90
};
-#define yyerrok (yyerrstatus = 0)
-#define yyclearin (yychar = YYEMPTY)
-#define YYEMPTY (-2)
-#define YYEOF 0
-
-#define YYACCEPT goto yyacceptlab
-#define YYABORT goto yyabortlab
-#define YYERROR goto yyerrorlab
-
-
-/* Like YYERROR except do call yyerror. This remains here temporarily
- to ease the transition to the new meaning of YYERROR, for GCC.
- Once GCC version 2 has supplanted version 1, this can go. However,
- YYFAIL appears to be in use. Nevertheless, it is formally deprecated
- in Bison 2.4.2's NEWS entry, where a plan to phase it out is
- discussed. */
-
-#define YYFAIL goto yyerrlab
-#if defined YYFAIL
- /* This is here to suppress warnings from the GCC cpp's
- -Wunused-macros. Normally we don't worry about that warning, but
- some users do, and we want to make it easy for users to remove
- YYFAIL uses, which will produce warnings from Bison 2.5. */
-#endif
+ /* YYR1[YYN] -- Symbol number of symbol that rule YYN derives. */
+static const yytype_uint8 yyr1[] =
+{
+ 0, 75, 76, 76, 76, 76, 76, 77, 77, 77,
+ 77, 77, 78, 78, 78, 79, 79, 79, 80, 80,
+ 80, 80, 80, 80, 80, 81, 82, 82, 82, 82,
+ 83, 83, 84, 86, 85, 87, 87, 88, 88, 88,
+ 89, 89, 90, 90, 90, 90, 90, 90, 90, 90,
+ 90, 90, 91, 91, 91, 91, 91, 92, 91, 91,
+ 94, 93, 95, 93, 93, 93, 96, 96, 97, 97,
+ 97, 98, 98, 99, 99, 99, 99, 99, 100, 100,
+ 101, 101, 102, 103, 102, 104, 104, 105, 105, 106,
+ 106, 107, 107, 108, 108, 109, 109, 109, 109, 109,
+ 110, 110, 111, 111, 112, 112, 112, 112, 112, 112,
+ 113, 113, 113, 113, 113, 113, 113, 113, 114, 114,
+ 114, 115, 115, 116, 116, 117, 117, 117, 118, 118,
+ 118, 118, 118, 118, 118, 118, 118, 118, 118, 119,
+ 119, 119, 119, 119, 119, 119, 120, 120, 120, 120,
+ 120, 120, 120, 120, 120, 120, 120, 120, 120, 120,
+ 121, 121, 122, 123, 123, 124, 124, 125, 125, 126,
+ 127, 128, 128, 129, 130, 130, 131, 131, 132, 132,
+ 132, 133, 134, 135, 136, 136, 137, 138, 139
+};
+
+ /* YYR2[YYN] -- Number of symbols on the right hand side of rule YYN. */
+static const yytype_uint8 yyr2[] =
+{
+ 0, 2, 0, 2, 2, 2, 2, 2, 2, 2,
+ 4, 4, 1, 2, 1, 1, 2, 1, 0, 1,
+ 4, 1, 1, 1, 1, 5, 1, 1, 1, 2,
+ 1, 1, 6, 0, 3, 1, 1, 0, 2, 2,
+ 1, 2, 2, 3, 1, 9, 6, 8, 8, 12,
+ 11, 1, 2, 2, 2, 2, 3, 0, 4, 2,
+ 0, 4, 0, 4, 4, 1, 0, 1, 0, 2,
+ 2, 5, 4, 1, 2, 2, 1, 1, 1, 1,
+ 1, 3, 0, 0, 3, 6, 9, 1, 2, 0,
+ 1, 0, 2, 0, 1, 1, 3, 1, 2, 3,
+ 0, 1, 0, 1, 1, 3, 1, 2, 3, 3,
+ 3, 3, 3, 3, 3, 3, 5, 1, 1, 1,
+ 2, 1, 1, 1, 1, 1, 1, 2, 1, 3,
+ 3, 3, 3, 3, 3, 3, 2, 2, 5, 4,
+ 3, 3, 3, 3, 3, 3, 1, 2, 3, 4,
+ 4, 1, 1, 1, 2, 2, 1, 1, 2, 2,
+ 1, 2, 4, 0, 1, 0, 2, 1, 2, 1,
+ 3, 1, 2, 2, 1, 2, 1, 3, 1, 1,
+ 0, 2, 2, 1, 0, 1, 1, 1, 2
+};
+
+
+#define yyerrok (yyerrstatus = 0)
+#define yyclearin (yychar = YYEMPTY)
+#define YYEMPTY (-2)
+#define YYEOF 0
+
+#define YYACCEPT goto yyacceptlab
+#define YYABORT goto yyabortlab
+#define YYERROR goto yyerrorlab
+
#define YYRECOVERING() (!!yyerrstatus)
@@ -1300,27 +1197,15 @@ do \
else \
{ \
yyerror (YY_("syntax error: cannot back up")); \
- YYERROR; \
- } \
-while (YYID (0))
+ YYERROR; \
+ } \
+while (0)
/* Error token number */
-#define YYTERROR 1
-#define YYERRCODE 256
+#define YYTERROR 1
+#define YYERRCODE 256
-/* This macro is provided for backward compatibility. */
-#ifndef YY_LOCATION_PRINT
-# define YY_LOCATION_PRINT(File, Loc) ((void) 0)
-#endif
-
-
-/* YYLEX -- calling `yylex' with the right arguments. */
-#ifdef YYLEX_PARAM
-# define YYLEX yylex (YYLEX_PARAM)
-#else
-# define YYLEX yylex ()
-#endif
/* Enable debugging if requested. */
#if YYDEBUG
@@ -1330,40 +1215,36 @@ while (YYID (0))
# define YYFPRINTF fprintf
# endif
-# define YYDPRINTF(Args) \
-do { \
- if (yydebug) \
- YYFPRINTF Args; \
-} while (YYID (0))
+# define YYDPRINTF(Args) \
+do { \
+ if (yydebug) \
+ YYFPRINTF Args; \
+} while (0)
-# define YY_SYMBOL_PRINT(Title, Type, Value, Location) \
-do { \
- if (yydebug) \
- { \
- YYFPRINTF (stderr, "%s ", Title); \
- yy_symbol_print (stderr, \
- Type, Value); \
- YYFPRINTF (stderr, "\n"); \
- } \
-} while (YYID (0))
+/* This macro is provided for backward compatibility. */
+#ifndef YY_LOCATION_PRINT
+# define YY_LOCATION_PRINT(File, Loc) ((void) 0)
+#endif
-/*--------------------------------.
-| Print this symbol on YYOUTPUT. |
-`--------------------------------*/
+# define YY_SYMBOL_PRINT(Title, Type, Value, Location) \
+do { \
+ if (yydebug) \
+ { \
+ YYFPRINTF (stderr, "%s ", Title); \
+ yy_symbol_print (stderr, \
+ Type, Value); \
+ YYFPRINTF (stderr, "\n"); \
+ } \
+} while (0)
+
+
+/*----------------------------------------.
+| Print this symbol's value on YYOUTPUT. |
+`----------------------------------------*/
-/*ARGSUSED*/
-#if (defined __STDC__ || defined __C99__FUNC__ \
- || defined __cplusplus || defined _MSC_VER)
static void
yy_symbol_value_print (FILE *yyoutput, int yytype, YYSTYPE const * const yyvaluep)
-#else
-static void
-yy_symbol_value_print (yyoutput, yytype, yyvaluep)
- FILE *yyoutput;
- int yytype;
- YYSTYPE const * const yyvaluep;
-#endif
{
FILE *yyo = yyoutput;
YYUSE (yyo);
@@ -1372,8 +1253,6 @@ yy_symbol_value_print (yyoutput, yytype, yyvaluep)
# ifdef YYPRINT
if (yytype < YYNTOKENS)
YYPRINT (yyoutput, yytoknum[yytype], *yyvaluep);
-# else
- YYUSE (yyoutput);
# endif
YYUSE (yytype);
}
@@ -1383,22 +1262,11 @@ yy_symbol_value_print (yyoutput, yytype, yyvaluep)
| Print this symbol on YYOUTPUT. |
`--------------------------------*/
-#if (defined __STDC__ || defined __C99__FUNC__ \
- || defined __cplusplus || defined _MSC_VER)
static void
yy_symbol_print (FILE *yyoutput, int yytype, YYSTYPE const * const yyvaluep)
-#else
-static void
-yy_symbol_print (yyoutput, yytype, yyvaluep)
- FILE *yyoutput;
- int yytype;
- YYSTYPE const * const yyvaluep;
-#endif
{
- if (yytype < YYNTOKENS)
- YYFPRINTF (yyoutput, "token %s (", yytname[yytype]);
- else
- YYFPRINTF (yyoutput, "nterm %s (", yytname[yytype]);
+ YYFPRINTF (yyoutput, "%s %s (",
+ yytype < YYNTOKENS ? "token" : "nterm", yytname[yytype]);
yy_symbol_value_print (yyoutput, yytype, yyvaluep);
YYFPRINTF (yyoutput, ")");
@@ -1409,16 +1277,8 @@ yy_symbol_print (yyoutput, yytype, yyvaluep)
| TOP (included). |
`------------------------------------------------------------------*/
-#if (defined __STDC__ || defined __C99__FUNC__ \
- || defined __cplusplus || defined _MSC_VER)
static void
yy_stack_print (yytype_int16 *yybottom, yytype_int16 *yytop)
-#else
-static void
-yy_stack_print (yybottom, yytop)
- yytype_int16 *yybottom;
- yytype_int16 *yytop;
-#endif
{
YYFPRINTF (stderr, "Stack now");
for (; yybottom <= yytop; yybottom++)
@@ -1429,49 +1289,42 @@ yy_stack_print (yybottom, yytop)
YYFPRINTF (stderr, "\n");
}
-# define YY_STACK_PRINT(Bottom, Top) \
-do { \
- if (yydebug) \
- yy_stack_print ((Bottom), (Top)); \
-} while (YYID (0))
+# define YY_STACK_PRINT(Bottom, Top) \
+do { \
+ if (yydebug) \
+ yy_stack_print ((Bottom), (Top)); \
+} while (0)
/*------------------------------------------------.
| Report that the YYRULE is going to be reduced. |
`------------------------------------------------*/
-#if (defined __STDC__ || defined __C99__FUNC__ \
- || defined __cplusplus || defined _MSC_VER)
-static void
-yy_reduce_print (YYSTYPE *yyvsp, int yyrule)
-#else
static void
-yy_reduce_print (yyvsp, yyrule)
- YYSTYPE *yyvsp;
- int yyrule;
-#endif
+yy_reduce_print (yytype_int16 *yyssp, YYSTYPE *yyvsp, int yyrule)
{
+ unsigned long int yylno = yyrline[yyrule];
int yynrhs = yyr2[yyrule];
int yyi;
- unsigned long int yylno = yyrline[yyrule];
YYFPRINTF (stderr, "Reducing stack by rule %d (line %lu):\n",
- yyrule - 1, yylno);
+ yyrule - 1, yylno);
/* The symbols being reduced. */
for (yyi = 0; yyi < yynrhs; yyi++)
{
YYFPRINTF (stderr, " $%d = ", yyi + 1);
- yy_symbol_print (stderr, yyrhs[yyprhs[yyrule] + yyi],
- &(yyvsp[(yyi + 1) - (yynrhs)])
- );
+ yy_symbol_print (stderr,
+ yystos[yyssp[yyi + 1 - yynrhs]],
+ &(yyvsp[(yyi + 1) - (yynrhs)])
+ );
YYFPRINTF (stderr, "\n");
}
}
-# define YY_REDUCE_PRINT(Rule) \
-do { \
- if (yydebug) \
- yy_reduce_print (yyvsp, Rule); \
-} while (YYID (0))
+# define YY_REDUCE_PRINT(Rule) \
+do { \
+ if (yydebug) \
+ yy_reduce_print (yyssp, yyvsp, Rule); \
+} while (0)
/* Nonzero means print parse trace. It is left uninitialized so that
multiple parsers can coexist. */
@@ -1485,7 +1338,7 @@ int yydebug;
/* YYINITDEPTH -- initial size of the parser's stacks. */
-#ifndef YYINITDEPTH
+#ifndef YYINITDEPTH
# define YYINITDEPTH 200
#endif
@@ -1508,15 +1361,8 @@ int yydebug;
# define yystrlen strlen
# else
/* Return the length of YYSTR. */
-#if (defined __STDC__ || defined __C99__FUNC__ \
- || defined __cplusplus || defined _MSC_VER)
static YYSIZE_T
yystrlen (const char *yystr)
-#else
-static YYSIZE_T
-yystrlen (yystr)
- const char *yystr;
-#endif
{
YYSIZE_T yylen;
for (yylen = 0; yystr[yylen]; yylen++)
@@ -1532,16 +1378,8 @@ yystrlen (yystr)
# else
/* Copy YYSRC to YYDEST, returning the address of the terminating '\0' in
YYDEST. */
-#if (defined __STDC__ || defined __C99__FUNC__ \
- || defined __cplusplus || defined _MSC_VER)
static char *
yystpcpy (char *yydest, const char *yysrc)
-#else
-static char *
-yystpcpy (yydest, yysrc)
- char *yydest;
- const char *yysrc;
-#endif
{
char *yyd = yydest;
const char *yys = yysrc;
@@ -1571,27 +1409,27 @@ yytnamerr (char *yyres, const char *yystr)
char const *yyp = yystr;
for (;;)
- switch (*++yyp)
- {
- case '\'':
- case ',':
- goto do_not_strip_quotes;
-
- case '\\':
- if (*++yyp != '\\')
- goto do_not_strip_quotes;
- /* Fall through. */
- default:
- if (yyres)
- yyres[yyn] = *yyp;
- yyn++;
- break;
-
- case '"':
- if (yyres)
- yyres[yyn] = '\0';
- return yyn;
- }
+ switch (*++yyp)
+ {
+ case '\'':
+ case ',':
+ goto do_not_strip_quotes;
+
+ case '\\':
+ if (*++yyp != '\\')
+ goto do_not_strip_quotes;
+ /* Fall through. */
+ default:
+ if (yyres)
+ yyres[yyn] = *yyp;
+ yyn++;
+ break;
+
+ case '"':
+ if (yyres)
+ yyres[yyn] = '\0';
+ return yyn;
+ }
do_not_strip_quotes: ;
}
@@ -1614,11 +1452,11 @@ static int
yysyntax_error (YYSIZE_T *yymsg_alloc, char **yymsg,
yytype_int16 *yyssp, int yytoken)
{
- YYSIZE_T yysize0 = yytnamerr (YY_NULL, yytname[yytoken]);
+ YYSIZE_T yysize0 = yytnamerr (YY_NULLPTR, yytname[yytoken]);
YYSIZE_T yysize = yysize0;
enum { YYERROR_VERBOSE_ARGS_MAXIMUM = 5 };
/* Internationalized format string. */
- const char *yyformat = YY_NULL;
+ const char *yyformat = YY_NULLPTR;
/* Arguments of yyformat. */
char const *yyarg[YYERROR_VERBOSE_ARGS_MAXIMUM];
/* Number of reported tokens (one for the "unexpected", one per
@@ -1626,10 +1464,6 @@ yysyntax_error (YYSIZE_T *yymsg_alloc, char **yymsg,
int yycount = 0;
/* There are many possibilities here to consider:
- - Assume YYFAIL is not used. It's too flawed to consider. See
- <http://lists.gnu.org/archive/html/bison-patches/2009-12/msg00024.html>
- for details. YYERROR is fine as it does not invoke this
- function.
- If this state is a consistent state with a default action, then
the only way this function was invoked is if the default action
is an error action. In that case, don't check for expected
@@ -1679,7 +1513,7 @@ yysyntax_error (YYSIZE_T *yymsg_alloc, char **yymsg,
}
yyarg[yycount++] = yytname[yyx];
{
- YYSIZE_T yysize1 = yysize + yytnamerr (YY_NULL, yytname[yyx]);
+ YYSIZE_T yysize1 = yysize + yytnamerr (YY_NULLPTR, yytname[yyx]);
if (! (yysize <= yysize1
&& yysize1 <= YYSTACK_ALLOC_MAXIMUM))
return 2;
@@ -1746,26 +1580,17 @@ yysyntax_error (YYSIZE_T *yymsg_alloc, char **yymsg,
| Release the memory associated to this symbol. |
`-----------------------------------------------*/
-/*ARGSUSED*/
-#if (defined __STDC__ || defined __C99__FUNC__ \
- || defined __cplusplus || defined _MSC_VER)
static void
yydestruct (const char *yymsg, int yytype, YYSTYPE *yyvaluep)
-#else
-static void
-yydestruct (yymsg, yytype, yyvaluep)
- const char *yymsg;
- int yytype;
- YYSTYPE *yyvaluep;
-#endif
{
YYUSE (yyvaluep);
-
if (!yymsg)
yymsg = "Deleting";
YY_SYMBOL_PRINT (yymsg, yytype, yyvaluep, yylocationp);
+ YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN
YYUSE (yytype);
+ YY_IGNORE_MAYBE_UNINITIALIZED_END
}
@@ -1774,18 +1599,8 @@ yydestruct (yymsg, yytype, yyvaluep)
/* The lookahead symbol. */
int yychar;
-
-#ifndef YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN
-# define YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN
-# define YY_IGNORE_MAYBE_UNINITIALIZED_END
-#endif
-#ifndef YY_INITIAL_VALUE
-# define YY_INITIAL_VALUE(Value) /* Nothing. */
-#endif
-
/* The semantic value of the lookahead symbol. */
-YYSTYPE yylval YY_INITIAL_VALUE(yyval_default);
-
+YYSTYPE yylval;
/* Number of syntax errors so far. */
int yynerrs;
@@ -1794,35 +1609,16 @@ int yynerrs;
| yyparse. |
`----------*/
-#ifdef YYPARSE_PARAM
-#if (defined __STDC__ || defined __C99__FUNC__ \
- || defined __cplusplus || defined _MSC_VER)
-int
-yyparse (void *YYPARSE_PARAM)
-#else
-int
-yyparse (YYPARSE_PARAM)
- void *YYPARSE_PARAM;
-#endif
-#else /* ! YYPARSE_PARAM */
-#if (defined __STDC__ || defined __C99__FUNC__ \
- || defined __cplusplus || defined _MSC_VER)
int
yyparse (void)
-#else
-int
-yyparse ()
-
-#endif
-#endif
{
int yystate;
/* Number of tokens to shift before error messages enabled. */
int yyerrstatus;
/* The stacks and their tools:
- `yyss': related to states.
- `yyvs': related to semantic values.
+ 'yyss': related to states.
+ 'yyvs': related to semantic values.
Refer to the stacks through separate pointers, to allow yyoverflow
to reallocate them elsewhere. */
@@ -1890,23 +1686,23 @@ yyparse ()
#ifdef yyoverflow
{
- /* Give user a chance to reallocate the stack. Use copies of
- these so that the &'s don't force the real ones into
- memory. */
- YYSTYPE *yyvs1 = yyvs;
- yytype_int16 *yyss1 = yyss;
-
- /* Each stack pointer address is followed by the size of the
- data in use in that stack, in bytes. This used to be a
- conditional around just the two extra args, but that might
- be undefined if yyoverflow is a macro. */
- yyoverflow (YY_("memory exhausted"),
- &yyss1, yysize * sizeof (*yyssp),
- &yyvs1, yysize * sizeof (*yyvsp),
- &yystacksize);
-
- yyss = yyss1;
- yyvs = yyvs1;
+ /* Give user a chance to reallocate the stack. Use copies of
+ these so that the &'s don't force the real ones into
+ memory. */
+ YYSTYPE *yyvs1 = yyvs;
+ yytype_int16 *yyss1 = yyss;
+
+ /* Each stack pointer address is followed by the size of the
+ data in use in that stack, in bytes. This used to be a
+ conditional around just the two extra args, but that might
+ be undefined if yyoverflow is a macro. */
+ yyoverflow (YY_("memory exhausted"),
+ &yyss1, yysize * sizeof (*yyssp),
+ &yyvs1, yysize * sizeof (*yyvsp),
+ &yystacksize);
+
+ yyss = yyss1;
+ yyvs = yyvs1;
}
#else /* no yyoverflow */
# ifndef YYSTACK_RELOCATE
@@ -1914,22 +1710,22 @@ yyparse ()
# else
/* Extend the stack our own way. */
if (YYMAXDEPTH <= yystacksize)
- goto yyexhaustedlab;
+ goto yyexhaustedlab;
yystacksize *= 2;
if (YYMAXDEPTH < yystacksize)
- yystacksize = YYMAXDEPTH;
+ yystacksize = YYMAXDEPTH;
{
- yytype_int16 *yyss1 = yyss;
- union yyalloc *yyptr =
- (union yyalloc *) YYSTACK_ALLOC (YYSTACK_BYTES (yystacksize));
- if (! yyptr)
- goto yyexhaustedlab;
- YYSTACK_RELOCATE (yyss_alloc, yyss);
- YYSTACK_RELOCATE (yyvs_alloc, yyvs);
+ yytype_int16 *yyss1 = yyss;
+ union yyalloc *yyptr =
+ (union yyalloc *) YYSTACK_ALLOC (YYSTACK_BYTES (yystacksize));
+ if (! yyptr)
+ goto yyexhaustedlab;
+ YYSTACK_RELOCATE (yyss_alloc, yyss);
+ YYSTACK_RELOCATE (yyvs_alloc, yyvs);
# undef YYSTACK_RELOCATE
- if (yyss1 != yyssa)
- YYSTACK_FREE (yyss1);
+ if (yyss1 != yyssa)
+ YYSTACK_FREE (yyss1);
}
# endif
#endif /* no yyoverflow */
@@ -1938,10 +1734,10 @@ yyparse ()
yyvsp = yyvs + yysize - 1;
YYDPRINTF ((stderr, "Stack size increased to %lu\n",
- (unsigned long int) yystacksize));
+ (unsigned long int) yystacksize));
if (yyss + yystacksize - 1 <= yyssp)
- YYABORT;
+ YYABORT;
}
YYDPRINTF ((stderr, "Entering state %d\n", yystate));
@@ -1970,7 +1766,7 @@ yybackup:
if (yychar == YYEMPTY)
{
YYDPRINTF ((stderr, "Reading a token: "));
- yychar = YYLEX;
+ yychar = yylex ();
}
if (yychar <= YYEOF)
@@ -2035,7 +1831,7 @@ yyreduce:
yylen = yyr2[yyn];
/* If YYLEN is nonzero, implement the default value of the action:
- `$$ = $1'.
+ '$$ = $1'.
Otherwise, the following line sets YYVAL to garbage.
This behavior is undocumented and Bison
@@ -2049,27 +1845,26 @@ yyreduce:
switch (yyn)
{
case 3:
-/* Line 1787 of yacc.c */
-#line 204 "awkgram.y"
+#line 204 "awkgram.y" /* yacc.c:1646 */
{
rule = 0;
yyerrok;
}
+#line 1854 "awkgram.c" /* yacc.c:1646 */
break;
case 5:
-/* Line 1787 of yacc.c */
-#line 210 "awkgram.y"
+#line 210 "awkgram.y" /* yacc.c:1646 */
{
next_sourcefile();
if (sourcefile == srcfiles)
process_deferred();
}
+#line 1864 "awkgram.c" /* yacc.c:1646 */
break;
case 6:
-/* Line 1787 of yacc.c */
-#line 216 "awkgram.y"
+#line 216 "awkgram.y" /* yacc.c:1646 */
{
rule = 0;
/*
@@ -2078,277 +1873,277 @@ yyreduce:
*/
/* yyerrok; */
}
+#line 1877 "awkgram.c" /* yacc.c:1646 */
break;
case 7:
-/* Line 1787 of yacc.c */
-#line 228 "awkgram.y"
+#line 228 "awkgram.y" /* yacc.c:1646 */
{
- (void) append_rule((yyvsp[(1) - (2)]), (yyvsp[(2) - (2)]));
+ (void) append_rule((yyvsp[-1]), (yyvsp[0]));
}
+#line 1885 "awkgram.c" /* yacc.c:1646 */
break;
case 8:
-/* Line 1787 of yacc.c */
-#line 232 "awkgram.y"
+#line 232 "awkgram.y" /* yacc.c:1646 */
{
if (rule != Rule) {
msg(_("%s blocks must have an action part"), ruletab[rule]);
errcount++;
- } else if ((yyvsp[(1) - (2)]) == NULL) {
+ } else if ((yyvsp[-1]) == NULL) {
msg(_("each rule must have a pattern or an action part"));
errcount++;
} else /* pattern rule with non-empty pattern */
- (void) append_rule((yyvsp[(1) - (2)]), NULL);
+ (void) append_rule((yyvsp[-1]), NULL);
}
+#line 1900 "awkgram.c" /* yacc.c:1646 */
break;
case 9:
-/* Line 1787 of yacc.c */
-#line 243 "awkgram.y"
+#line 243 "awkgram.y" /* yacc.c:1646 */
{
in_function = NULL;
- (void) mk_function((yyvsp[(1) - (2)]), (yyvsp[(2) - (2)]));
+ (void) mk_function((yyvsp[-1]), (yyvsp[0]));
yyerrok;
}
+#line 1910 "awkgram.c" /* yacc.c:1646 */
break;
case 10:
-/* Line 1787 of yacc.c */
-#line 249 "awkgram.y"
+#line 249 "awkgram.y" /* yacc.c:1646 */
{
want_source = false;
yyerrok;
}
+#line 1919 "awkgram.c" /* yacc.c:1646 */
break;
case 11:
-/* Line 1787 of yacc.c */
-#line 254 "awkgram.y"
+#line 254 "awkgram.y" /* yacc.c:1646 */
{
want_source = false;
yyerrok;
}
+#line 1928 "awkgram.c" /* yacc.c:1646 */
break;
case 12:
-/* Line 1787 of yacc.c */
-#line 262 "awkgram.y"
+#line 262 "awkgram.y" /* yacc.c:1646 */
{
- if (include_source((yyvsp[(1) - (1)])) < 0)
+ if (include_source((yyvsp[0])) < 0)
YYABORT;
- efree((yyvsp[(1) - (1)])->lextok);
- bcfree((yyvsp[(1) - (1)]));
+ efree((yyvsp[0])->lextok);
+ bcfree((yyvsp[0]));
(yyval) = NULL;
}
+#line 1940 "awkgram.c" /* yacc.c:1646 */
break;
case 13:
-/* Line 1787 of yacc.c */
-#line 270 "awkgram.y"
+#line 270 "awkgram.y" /* yacc.c:1646 */
{ (yyval) = NULL; }
+#line 1946 "awkgram.c" /* yacc.c:1646 */
break;
case 14:
-/* Line 1787 of yacc.c */
-#line 272 "awkgram.y"
+#line 272 "awkgram.y" /* yacc.c:1646 */
{ (yyval) = NULL; }
+#line 1952 "awkgram.c" /* yacc.c:1646 */
break;
case 15:
-/* Line 1787 of yacc.c */
-#line 277 "awkgram.y"
+#line 277 "awkgram.y" /* yacc.c:1646 */
{
- if (load_library((yyvsp[(1) - (1)])) < 0)
+ if (load_library((yyvsp[0])) < 0)
YYABORT;
- efree((yyvsp[(1) - (1)])->lextok);
- bcfree((yyvsp[(1) - (1)]));
+ efree((yyvsp[0])->lextok);
+ bcfree((yyvsp[0]));
(yyval) = NULL;
}
+#line 1964 "awkgram.c" /* yacc.c:1646 */
break;
case 16:
-/* Line 1787 of yacc.c */
-#line 285 "awkgram.y"
+#line 285 "awkgram.y" /* yacc.c:1646 */
{ (yyval) = NULL; }
+#line 1970 "awkgram.c" /* yacc.c:1646 */
break;
case 17:
-/* Line 1787 of yacc.c */
-#line 287 "awkgram.y"
+#line 287 "awkgram.y" /* yacc.c:1646 */
{ (yyval) = NULL; }
+#line 1976 "awkgram.c" /* yacc.c:1646 */
break;
case 18:
-/* Line 1787 of yacc.c */
-#line 292 "awkgram.y"
+#line 292 "awkgram.y" /* yacc.c:1646 */
{ (yyval) = NULL; rule = Rule; }
+#line 1982 "awkgram.c" /* yacc.c:1646 */
break;
case 19:
-/* Line 1787 of yacc.c */
-#line 294 "awkgram.y"
- { (yyval) = (yyvsp[(1) - (1)]); rule = Rule; }
+#line 294 "awkgram.y" /* yacc.c:1646 */
+ { (yyval) = (yyvsp[0]); rule = Rule; }
+#line 1988 "awkgram.c" /* yacc.c:1646 */
break;
case 20:
-/* Line 1787 of yacc.c */
-#line 296 "awkgram.y"
+#line 296 "awkgram.y" /* yacc.c:1646 */
{
INSTRUCTION *tp;
- add_lint((yyvsp[(1) - (4)]), LINT_assign_in_cond);
- add_lint((yyvsp[(4) - (4)]), LINT_assign_in_cond);
+ add_lint((yyvsp[-3]), LINT_assign_in_cond);
+ add_lint((yyvsp[0]), LINT_assign_in_cond);
tp = instruction(Op_no_op);
- list_prepend((yyvsp[(1) - (4)]), bcalloc(Op_line_range, !!do_pretty_print + 1, 0));
- (yyvsp[(1) - (4)])->nexti->triggered = false;
- (yyvsp[(1) - (4)])->nexti->target_jmp = (yyvsp[(4) - (4)])->nexti;
+ list_prepend((yyvsp[-3]), bcalloc(Op_line_range, !!do_pretty_print + 1, 0));
+ (yyvsp[-3])->nexti->triggered = false;
+ (yyvsp[-3])->nexti->target_jmp = (yyvsp[0])->nexti;
- list_append((yyvsp[(1) - (4)]), instruction(Op_cond_pair));
- (yyvsp[(1) - (4)])->lasti->line_range = (yyvsp[(1) - (4)])->nexti;
- (yyvsp[(1) - (4)])->lasti->target_jmp = tp;
+ list_append((yyvsp[-3]), instruction(Op_cond_pair));
+ (yyvsp[-3])->lasti->line_range = (yyvsp[-3])->nexti;
+ (yyvsp[-3])->lasti->target_jmp = tp;
- list_append((yyvsp[(4) - (4)]), instruction(Op_cond_pair));
- (yyvsp[(4) - (4)])->lasti->line_range = (yyvsp[(1) - (4)])->nexti;
- (yyvsp[(4) - (4)])->lasti->target_jmp = tp;
+ list_append((yyvsp[0]), instruction(Op_cond_pair));
+ (yyvsp[0])->lasti->line_range = (yyvsp[-3])->nexti;
+ (yyvsp[0])->lasti->target_jmp = tp;
if (do_pretty_print) {
- ((yyvsp[(1) - (4)])->nexti + 1)->condpair_left = (yyvsp[(1) - (4)])->lasti;
- ((yyvsp[(1) - (4)])->nexti + 1)->condpair_right = (yyvsp[(4) - (4)])->lasti;
+ ((yyvsp[-3])->nexti + 1)->condpair_left = (yyvsp[-3])->lasti;
+ ((yyvsp[-3])->nexti + 1)->condpair_right = (yyvsp[0])->lasti;
}
- (yyval) = list_append(list_merge((yyvsp[(1) - (4)]), (yyvsp[(4) - (4)])), tp);
+ (yyval) = list_append(list_merge((yyvsp[-3]), (yyvsp[0])), tp);
rule = Rule;
}
+#line 2018 "awkgram.c" /* yacc.c:1646 */
break;
case 21:
-/* Line 1787 of yacc.c */
-#line 322 "awkgram.y"
+#line 322 "awkgram.y" /* yacc.c:1646 */
{
static int begin_seen = 0;
if (do_lint_old && ++begin_seen == 2)
- warning_ln((yyvsp[(1) - (1)])->source_line,
+ warning_ln((yyvsp[0])->source_line,
_("old awk does not support multiple `BEGIN' or `END' rules"));
- (yyvsp[(1) - (1)])->in_rule = rule = BEGIN;
- (yyvsp[(1) - (1)])->source_file = source;
- (yyval) = (yyvsp[(1) - (1)]);
+ (yyvsp[0])->in_rule = rule = BEGIN;
+ (yyvsp[0])->source_file = source;
+ (yyval) = (yyvsp[0]);
}
+#line 2033 "awkgram.c" /* yacc.c:1646 */
break;
case 22:
-/* Line 1787 of yacc.c */
-#line 333 "awkgram.y"
+#line 333 "awkgram.y" /* yacc.c:1646 */
{
static int end_seen = 0;
if (do_lint_old && ++end_seen == 2)
- warning_ln((yyvsp[(1) - (1)])->source_line,
+ warning_ln((yyvsp[0])->source_line,
_("old awk does not support multiple `BEGIN' or `END' rules"));
- (yyvsp[(1) - (1)])->in_rule = rule = END;
- (yyvsp[(1) - (1)])->source_file = source;
- (yyval) = (yyvsp[(1) - (1)]);
+ (yyvsp[0])->in_rule = rule = END;
+ (yyvsp[0])->source_file = source;
+ (yyval) = (yyvsp[0]);
}
+#line 2048 "awkgram.c" /* yacc.c:1646 */
break;
case 23:
-/* Line 1787 of yacc.c */
-#line 344 "awkgram.y"
+#line 344 "awkgram.y" /* yacc.c:1646 */
{
- (yyvsp[(1) - (1)])->in_rule = rule = BEGINFILE;
- (yyvsp[(1) - (1)])->source_file = source;
- (yyval) = (yyvsp[(1) - (1)]);
+ (yyvsp[0])->in_rule = rule = BEGINFILE;
+ (yyvsp[0])->source_file = source;
+ (yyval) = (yyvsp[0]);
}
+#line 2058 "awkgram.c" /* yacc.c:1646 */
break;
case 24:
-/* Line 1787 of yacc.c */
-#line 350 "awkgram.y"
+#line 350 "awkgram.y" /* yacc.c:1646 */
{
- (yyvsp[(1) - (1)])->in_rule = rule = ENDFILE;
- (yyvsp[(1) - (1)])->source_file = source;
- (yyval) = (yyvsp[(1) - (1)]);
+ (yyvsp[0])->in_rule = rule = ENDFILE;
+ (yyvsp[0])->source_file = source;
+ (yyval) = (yyvsp[0]);
}
+#line 2068 "awkgram.c" /* yacc.c:1646 */
break;
case 25:
-/* Line 1787 of yacc.c */
-#line 359 "awkgram.y"
+#line 359 "awkgram.y" /* yacc.c:1646 */
{
- if ((yyvsp[(2) - (5)]) == NULL)
+ if ((yyvsp[-3]) == NULL)
(yyval) = list_create(instruction(Op_no_op));
else
- (yyval) = (yyvsp[(2) - (5)]);
+ (yyval) = (yyvsp[-3]);
}
+#line 2079 "awkgram.c" /* yacc.c:1646 */
break;
case 26:
-/* Line 1787 of yacc.c */
-#line 369 "awkgram.y"
- { (yyval) = (yyvsp[(1) - (1)]); }
+#line 369 "awkgram.y" /* yacc.c:1646 */
+ { (yyval) = (yyvsp[0]); }
+#line 2085 "awkgram.c" /* yacc.c:1646 */
break;
case 27:
-/* Line 1787 of yacc.c */
-#line 371 "awkgram.y"
- { (yyval) = (yyvsp[(1) - (1)]); }
+#line 371 "awkgram.y" /* yacc.c:1646 */
+ { (yyval) = (yyvsp[0]); }
+#line 2091 "awkgram.c" /* yacc.c:1646 */
break;
case 28:
-/* Line 1787 of yacc.c */
-#line 373 "awkgram.y"
+#line 373 "awkgram.y" /* yacc.c:1646 */
{
yyerror(_("`%s' is a built-in function, it cannot be redefined"),
tokstart);
YYABORT;
}
+#line 2101 "awkgram.c" /* yacc.c:1646 */
break;
case 29:
-/* Line 1787 of yacc.c */
-#line 379 "awkgram.y"
- { (yyval) = (yyvsp[(2) - (2)]); }
+#line 379 "awkgram.y" /* yacc.c:1646 */
+ { (yyval) = (yyvsp[0]); }
+#line 2107 "awkgram.c" /* yacc.c:1646 */
break;
case 32:
-/* Line 1787 of yacc.c */
-#line 389 "awkgram.y"
+#line 389 "awkgram.y" /* yacc.c:1646 */
{
- (yyvsp[(1) - (6)])->source_file = source;
- if (install_function((yyvsp[(2) - (6)])->lextok, (yyvsp[(1) - (6)]), (yyvsp[(4) - (6)])) < 0)
+ (yyvsp[-5])->source_file = source;
+ if (install_function((yyvsp[-4])->lextok, (yyvsp[-5]), (yyvsp[-2])) < 0)
YYABORT;
- in_function = (yyvsp[(2) - (6)])->lextok;
- (yyvsp[(2) - (6)])->lextok = NULL;
- bcfree((yyvsp[(2) - (6)]));
+ in_function = (yyvsp[-4])->lextok;
+ (yyvsp[-4])->lextok = NULL;
+ bcfree((yyvsp[-4]));
/* $4 already free'd in install_function */
- (yyval) = (yyvsp[(1) - (6)]);
+ (yyval) = (yyvsp[-5]);
}
+#line 2122 "awkgram.c" /* yacc.c:1646 */
break;
case 33:
-/* Line 1787 of yacc.c */
-#line 407 "awkgram.y"
+#line 407 "awkgram.y" /* yacc.c:1646 */
{ want_regexp = true; }
+#line 2128 "awkgram.c" /* yacc.c:1646 */
break;
case 34:
-/* Line 1787 of yacc.c */
-#line 409 "awkgram.y"
+#line 409 "awkgram.y" /* yacc.c:1646 */
{
NODE *n, *exp;
char *re;
size_t len;
- re = (yyvsp[(3) - (3)])->lextok;
- (yyvsp[(3) - (3)])->lextok = NULL;
+ re = (yyvsp[0])->lextok;
+ (yyvsp[0])->lextok = NULL;
len = strlen(re);
if (do_lint) {
if (len == 0)
- lintwarn_ln((yyvsp[(3) - (3)])->source_line,
+ lintwarn_ln((yyvsp[0])->source_line,
_("regexp constant `//' looks like a C++ comment, but is not"));
else if (re[0] == '*' && re[len-1] == '*')
/* possible C comment */
- lintwarn_ln((yyvsp[(3) - (3)])->source_line,
+ lintwarn_ln((yyvsp[0])->source_line,
_("regexp constant `/%s/' looks like a C comment, but is not"), re);
}
@@ -2358,73 +2153,73 @@ yyreduce:
unref(exp);
YYABORT;
}
- (yyval) = (yyvsp[(3) - (3)]);
+ (yyval) = (yyvsp[0]);
(yyval)->opcode = Op_match_rec;
(yyval)->memory = n;
}
+#line 2161 "awkgram.c" /* yacc.c:1646 */
break;
case 35:
-/* Line 1787 of yacc.c */
-#line 441 "awkgram.y"
- { bcfree((yyvsp[(1) - (1)])); }
+#line 441 "awkgram.y" /* yacc.c:1646 */
+ { bcfree((yyvsp[0])); }
+#line 2167 "awkgram.c" /* yacc.c:1646 */
break;
case 37:
-/* Line 1787 of yacc.c */
-#line 447 "awkgram.y"
+#line 447 "awkgram.y" /* yacc.c:1646 */
{ (yyval) = NULL; }
+#line 2173 "awkgram.c" /* yacc.c:1646 */
break;
case 38:
-/* Line 1787 of yacc.c */
-#line 449 "awkgram.y"
+#line 449 "awkgram.y" /* yacc.c:1646 */
{
- if ((yyvsp[(2) - (2)]) == NULL)
- (yyval) = (yyvsp[(1) - (2)]);
+ if ((yyvsp[0]) == NULL)
+ (yyval) = (yyvsp[-1]);
else {
- add_lint((yyvsp[(2) - (2)]), LINT_no_effect);
- if ((yyvsp[(1) - (2)]) == NULL)
- (yyval) = (yyvsp[(2) - (2)]);
+ add_lint((yyvsp[0]), LINT_no_effect);
+ if ((yyvsp[-1]) == NULL)
+ (yyval) = (yyvsp[0]);
else
- (yyval) = list_merge((yyvsp[(1) - (2)]), (yyvsp[(2) - (2)]));
+ (yyval) = list_merge((yyvsp[-1]), (yyvsp[0]));
}
yyerrok;
}
+#line 2190 "awkgram.c" /* yacc.c:1646 */
break;
case 39:
-/* Line 1787 of yacc.c */
-#line 462 "awkgram.y"
+#line 462 "awkgram.y" /* yacc.c:1646 */
{ (yyval) = NULL; }
+#line 2196 "awkgram.c" /* yacc.c:1646 */
break;
case 42:
-/* Line 1787 of yacc.c */
-#line 472 "awkgram.y"
+#line 472 "awkgram.y" /* yacc.c:1646 */
{ (yyval) = NULL; }
+#line 2202 "awkgram.c" /* yacc.c:1646 */
break;
case 43:
-/* Line 1787 of yacc.c */
-#line 474 "awkgram.y"
- { (yyval) = (yyvsp[(2) - (3)]); }
+#line 474 "awkgram.y" /* yacc.c:1646 */
+ { (yyval) = (yyvsp[-1]); }
+#line 2208 "awkgram.c" /* yacc.c:1646 */
break;
case 44:
-/* Line 1787 of yacc.c */
-#line 476 "awkgram.y"
+#line 476 "awkgram.y" /* yacc.c:1646 */
{
if (do_pretty_print)
- (yyval) = list_prepend((yyvsp[(1) - (1)]), instruction(Op_exec_count));
+ (yyval) = list_prepend((yyvsp[0]), instruction(Op_exec_count));
else
- (yyval) = (yyvsp[(1) - (1)]);
+ (yyval) = (yyvsp[0]);
}
+#line 2219 "awkgram.c" /* yacc.c:1646 */
break;
case 45:
-/* Line 1787 of yacc.c */
-#line 483 "awkgram.y"
+#line 483 "awkgram.y" /* yacc.c:1646 */
{
INSTRUCTION *dflt, *curr = NULL, *cexp, *cstmt;
INSTRUCTION *ip, *nextc, *tbreak;
@@ -2439,9 +2234,9 @@ yyreduce:
dflt = instruction(Op_jmp);
dflt->target_jmp = tbreak; /* if no case match and no explicit default */
- if ((yyvsp[(7) - (9)]) != NULL) {
- curr = (yyvsp[(7) - (9)])->nexti;
- bcfree((yyvsp[(7) - (9)])); /* Op_list */
+ if ((yyvsp[-2]) != NULL) {
+ curr = (yyvsp[-2])->nexti;
+ bcfree((yyvsp[-2])); /* Op_list */
} /* else
curr = NULL; */
@@ -2497,13 +2292,13 @@ yyreduce:
if (case_values != NULL)
efree(case_values);
- ip = (yyvsp[(3) - (9)]);
+ ip = (yyvsp[-6]);
if (do_pretty_print) {
- (void) list_prepend(ip, (yyvsp[(1) - (9)]));
+ (void) list_prepend(ip, (yyvsp[-8]));
(void) list_prepend(ip, instruction(Op_exec_count));
- (yyvsp[(1) - (9)])->target_break = tbreak;
- ((yyvsp[(1) - (9)]) + 1)->switch_start = cexp->nexti;
- ((yyvsp[(1) - (9)]) + 1)->switch_end = cexp->lasti;
+ (yyvsp[-8])->target_break = tbreak;
+ ((yyvsp[-8]) + 1)->switch_start = cexp->nexti;
+ ((yyvsp[-8]) + 1)->switch_end = cexp->lasti;
}/* else
$1 is NULL */
@@ -2514,11 +2309,11 @@ yyreduce:
break_allowed--;
fix_break_continue(ip, tbreak, NULL);
}
+#line 2313 "awkgram.c" /* yacc.c:1646 */
break;
case 46:
-/* Line 1787 of yacc.c */
-#line 573 "awkgram.y"
+#line 573 "awkgram.y" /* yacc.c:1646 */
{
/*
* -----------------
@@ -2536,22 +2331,22 @@ yyreduce:
INSTRUCTION *ip, *tbreak, *tcont;
tbreak = instruction(Op_no_op);
- add_lint((yyvsp[(3) - (6)]), LINT_assign_in_cond);
- tcont = (yyvsp[(3) - (6)])->nexti;
- ip = list_append((yyvsp[(3) - (6)]), instruction(Op_jmp_false));
+ add_lint((yyvsp[-3]), LINT_assign_in_cond);
+ tcont = (yyvsp[-3])->nexti;
+ ip = list_append((yyvsp[-3]), instruction(Op_jmp_false));
ip->lasti->target_jmp = tbreak;
if (do_pretty_print) {
(void) list_append(ip, instruction(Op_exec_count));
- (yyvsp[(1) - (6)])->target_break = tbreak;
- (yyvsp[(1) - (6)])->target_continue = tcont;
- ((yyvsp[(1) - (6)]) + 1)->while_body = ip->lasti;
- (void) list_prepend(ip, (yyvsp[(1) - (6)]));
+ (yyvsp[-5])->target_break = tbreak;
+ (yyvsp[-5])->target_continue = tcont;
+ ((yyvsp[-5]) + 1)->while_body = ip->lasti;
+ (void) list_prepend(ip, (yyvsp[-5]));
}/* else
$1 is NULL */
- if ((yyvsp[(6) - (6)]) != NULL)
- (void) list_merge(ip, (yyvsp[(6) - (6)]));
+ if ((yyvsp[0]) != NULL)
+ (void) list_merge(ip, (yyvsp[0]));
(void) list_append(ip, instruction(Op_jmp));
ip->lasti->target_jmp = tcont;
(yyval) = list_append(ip, tbreak);
@@ -2560,11 +2355,11 @@ yyreduce:
continue_allowed--;
fix_break_continue(ip, tbreak, tcont);
}
+#line 2359 "awkgram.c" /* yacc.c:1646 */
break;
case 47:
-/* Line 1787 of yacc.c */
-#line 615 "awkgram.y"
+#line 615 "awkgram.y" /* yacc.c:1646 */
{
/*
* -----------------
@@ -2581,12 +2376,12 @@ yyreduce:
INSTRUCTION *ip, *tbreak, *tcont;
tbreak = instruction(Op_no_op);
- tcont = (yyvsp[(6) - (8)])->nexti;
- add_lint((yyvsp[(6) - (8)]), LINT_assign_in_cond);
- if ((yyvsp[(3) - (8)]) != NULL)
- ip = list_merge((yyvsp[(3) - (8)]), (yyvsp[(6) - (8)]));
+ tcont = (yyvsp[-2])->nexti;
+ add_lint((yyvsp[-2]), LINT_assign_in_cond);
+ if ((yyvsp[-5]) != NULL)
+ ip = list_merge((yyvsp[-5]), (yyvsp[-2]));
else
- ip = list_prepend((yyvsp[(6) - (8)]), instruction(Op_no_op));
+ ip = list_prepend((yyvsp[-2]), instruction(Op_no_op));
if (do_pretty_print)
(void) list_prepend(ip, instruction(Op_exec_count));
(void) list_append(ip, instruction(Op_jmp_true));
@@ -2598,29 +2393,29 @@ yyreduce:
fix_break_continue(ip, tbreak, tcont);
if (do_pretty_print) {
- (yyvsp[(1) - (8)])->target_break = tbreak;
- (yyvsp[(1) - (8)])->target_continue = tcont;
- ((yyvsp[(1) - (8)]) + 1)->doloop_cond = tcont;
- (yyval) = list_prepend(ip, (yyvsp[(1) - (8)]));
- bcfree((yyvsp[(4) - (8)]));
+ (yyvsp[-7])->target_break = tbreak;
+ (yyvsp[-7])->target_continue = tcont;
+ ((yyvsp[-7]) + 1)->doloop_cond = tcont;
+ (yyval) = list_prepend(ip, (yyvsp[-7]));
+ bcfree((yyvsp[-4]));
} /* else
$1 and $4 are NULLs */
}
+#line 2405 "awkgram.c" /* yacc.c:1646 */
break;
case 48:
-/* Line 1787 of yacc.c */
-#line 657 "awkgram.y"
+#line 657 "awkgram.y" /* yacc.c:1646 */
{
INSTRUCTION *ip;
- char *var_name = (yyvsp[(3) - (8)])->lextok;
-
- if ((yyvsp[(8) - (8)]) != NULL
- && (yyvsp[(8) - (8)])->lasti->opcode == Op_K_delete
- && (yyvsp[(8) - (8)])->lasti->expr_count == 1
- && (yyvsp[(8) - (8)])->nexti->opcode == Op_push
- && ((yyvsp[(8) - (8)])->nexti->memory->type != Node_var || !((yyvsp[(8) - (8)])->nexti->memory->var_update))
- && strcmp((yyvsp[(8) - (8)])->nexti->memory->vname, var_name) == 0
+ char *var_name = (yyvsp[-5])->lextok;
+
+ if ((yyvsp[0]) != NULL
+ && (yyvsp[0])->lasti->opcode == Op_K_delete
+ && (yyvsp[0])->lasti->expr_count == 1
+ && (yyvsp[0])->nexti->opcode == Op_push
+ && ((yyvsp[0])->nexti->memory->type != Node_var || !((yyvsp[0])->nexti->memory->var_update))
+ && strcmp((yyvsp[0])->nexti->memory->vname, var_name) == 0
) {
/* Efficiency hack. Recognize the special case of
@@ -2637,25 +2432,25 @@ yyreduce:
*/
NODE *arr = NULL;
- ip = (yyvsp[(8) - (8)])->nexti->nexti;
- if ((yyvsp[(5) - (8)])->nexti->opcode == Op_push && (yyvsp[(5) - (8)])->lasti == (yyvsp[(5) - (8)])->nexti)
- arr = (yyvsp[(5) - (8)])->nexti->memory;
+ ip = (yyvsp[0])->nexti->nexti;
+ if ((yyvsp[-3])->nexti->opcode == Op_push && (yyvsp[-3])->lasti == (yyvsp[-3])->nexti)
+ arr = (yyvsp[-3])->nexti->memory;
if (arr != NULL
&& ip->opcode == Op_no_op
&& ip->nexti->opcode == Op_push_array
&& strcmp(ip->nexti->memory->vname, arr->vname) == 0
- && ip->nexti->nexti == (yyvsp[(8) - (8)])->lasti
+ && ip->nexti->nexti == (yyvsp[0])->lasti
) {
- (void) make_assignable((yyvsp[(8) - (8)])->nexti);
- (yyvsp[(8) - (8)])->lasti->opcode = Op_K_delete_loop;
- (yyvsp[(8) - (8)])->lasti->expr_count = 0;
- if ((yyvsp[(1) - (8)]) != NULL)
- bcfree((yyvsp[(1) - (8)]));
+ (void) make_assignable((yyvsp[0])->nexti);
+ (yyvsp[0])->lasti->opcode = Op_K_delete_loop;
+ (yyvsp[0])->lasti->expr_count = 0;
+ if ((yyvsp[-7]) != NULL)
+ bcfree((yyvsp[-7]));
efree(var_name);
- bcfree((yyvsp[(3) - (8)]));
- bcfree((yyvsp[(4) - (8)]));
- bcfree((yyvsp[(5) - (8)]));
- (yyval) = (yyvsp[(8) - (8)]);
+ bcfree((yyvsp[-5]));
+ bcfree((yyvsp[-4]));
+ bcfree((yyvsp[-3]));
+ (yyval) = (yyvsp[0]);
} else
goto regular_loop;
} else {
@@ -2672,50 +2467,50 @@ yyreduce:
* ib:[Op_arrayfor_final ]
*/
regular_loop:
- ip = (yyvsp[(5) - (8)]);
+ ip = (yyvsp[-3]);
ip->nexti->opcode = Op_push_array;
tbreak = instruction(Op_arrayfor_final);
- (yyvsp[(4) - (8)])->opcode = Op_arrayfor_incr;
- (yyvsp[(4) - (8)])->array_var = variable((yyvsp[(3) - (8)])->source_line, var_name, Node_var);
- (yyvsp[(4) - (8)])->target_jmp = tbreak;
- tcont = (yyvsp[(4) - (8)]);
- (yyvsp[(3) - (8)])->opcode = Op_arrayfor_init;
- (yyvsp[(3) - (8)])->target_jmp = tbreak;
- (void) list_append(ip, (yyvsp[(3) - (8)]));
+ (yyvsp[-4])->opcode = Op_arrayfor_incr;
+ (yyvsp[-4])->array_var = variable((yyvsp[-5])->source_line, var_name, Node_var);
+ (yyvsp[-4])->target_jmp = tbreak;
+ tcont = (yyvsp[-4]);
+ (yyvsp[-5])->opcode = Op_arrayfor_init;
+ (yyvsp[-5])->target_jmp = tbreak;
+ (void) list_append(ip, (yyvsp[-5]));
if (do_pretty_print) {
- (yyvsp[(1) - (8)])->opcode = Op_K_arrayfor;
- (yyvsp[(1) - (8)])->target_continue = tcont;
- (yyvsp[(1) - (8)])->target_break = tbreak;
- (void) list_append(ip, (yyvsp[(1) - (8)]));
+ (yyvsp[-7])->opcode = Op_K_arrayfor;
+ (yyvsp[-7])->target_continue = tcont;
+ (yyvsp[-7])->target_break = tbreak;
+ (void) list_append(ip, (yyvsp[-7]));
} /* else
$1 is NULL */
/* add update_FOO instruction if necessary */
- if ((yyvsp[(4) - (8)])->array_var->type == Node_var && (yyvsp[(4) - (8)])->array_var->var_update) {
+ if ((yyvsp[-4])->array_var->type == Node_var && (yyvsp[-4])->array_var->var_update) {
(void) list_append(ip, instruction(Op_var_update));
- ip->lasti->update_var = (yyvsp[(4) - (8)])->array_var->var_update;
+ ip->lasti->update_var = (yyvsp[-4])->array_var->var_update;
}
- (void) list_append(ip, (yyvsp[(4) - (8)]));
+ (void) list_append(ip, (yyvsp[-4]));
/* add set_FOO instruction if necessary */
- if ((yyvsp[(4) - (8)])->array_var->type == Node_var && (yyvsp[(4) - (8)])->array_var->var_assign) {
+ if ((yyvsp[-4])->array_var->type == Node_var && (yyvsp[-4])->array_var->var_assign) {
(void) list_append(ip, instruction(Op_var_assign));
- ip->lasti->assign_var = (yyvsp[(4) - (8)])->array_var->var_assign;
+ ip->lasti->assign_var = (yyvsp[-4])->array_var->var_assign;
}
if (do_pretty_print) {
(void) list_append(ip, instruction(Op_exec_count));
- ((yyvsp[(1) - (8)]) + 1)->forloop_cond = (yyvsp[(4) - (8)]);
- ((yyvsp[(1) - (8)]) + 1)->forloop_body = ip->lasti;
+ ((yyvsp[-7]) + 1)->forloop_cond = (yyvsp[-4]);
+ ((yyvsp[-7]) + 1)->forloop_body = ip->lasti;
}
- if ((yyvsp[(8) - (8)]) != NULL)
- (void) list_merge(ip, (yyvsp[(8) - (8)]));
+ if ((yyvsp[0]) != NULL)
+ (void) list_merge(ip, (yyvsp[0]));
(void) list_append(ip, instruction(Op_jmp));
- ip->lasti->target_jmp = (yyvsp[(4) - (8)]);
+ ip->lasti->target_jmp = (yyvsp[-4]);
(yyval) = list_append(ip, tbreak);
fix_break_continue(ip, tbreak, tcont);
}
@@ -2723,157 +2518,157 @@ regular_loop:
break_allowed--;
continue_allowed--;
}
+#line 2522 "awkgram.c" /* yacc.c:1646 */
break;
case 49:
-/* Line 1787 of yacc.c */
-#line 770 "awkgram.y"
+#line 770 "awkgram.y" /* yacc.c:1646 */
{
- (yyval) = mk_for_loop((yyvsp[(1) - (12)]), (yyvsp[(3) - (12)]), (yyvsp[(6) - (12)]), (yyvsp[(9) - (12)]), (yyvsp[(12) - (12)]));
+ (yyval) = mk_for_loop((yyvsp[-11]), (yyvsp[-9]), (yyvsp[-6]), (yyvsp[-3]), (yyvsp[0]));
break_allowed--;
continue_allowed--;
}
+#line 2533 "awkgram.c" /* yacc.c:1646 */
break;
case 50:
-/* Line 1787 of yacc.c */
-#line 777 "awkgram.y"
+#line 777 "awkgram.y" /* yacc.c:1646 */
{
- (yyval) = mk_for_loop((yyvsp[(1) - (11)]), (yyvsp[(3) - (11)]), (INSTRUCTION *) NULL, (yyvsp[(8) - (11)]), (yyvsp[(11) - (11)]));
+ (yyval) = mk_for_loop((yyvsp[-10]), (yyvsp[-8]), (INSTRUCTION *) NULL, (yyvsp[-3]), (yyvsp[0]));
break_allowed--;
continue_allowed--;
}
+#line 2544 "awkgram.c" /* yacc.c:1646 */
break;
case 51:
-/* Line 1787 of yacc.c */
-#line 784 "awkgram.y"
+#line 784 "awkgram.y" /* yacc.c:1646 */
{
if (do_pretty_print)
- (yyval) = list_prepend((yyvsp[(1) - (1)]), instruction(Op_exec_count));
+ (yyval) = list_prepend((yyvsp[0]), instruction(Op_exec_count));
else
- (yyval) = (yyvsp[(1) - (1)]);
+ (yyval) = (yyvsp[0]);
}
+#line 2555 "awkgram.c" /* yacc.c:1646 */
break;
case 52:
-/* Line 1787 of yacc.c */
-#line 794 "awkgram.y"
+#line 794 "awkgram.y" /* yacc.c:1646 */
{
if (! break_allowed)
- error_ln((yyvsp[(1) - (2)])->source_line,
+ error_ln((yyvsp[-1])->source_line,
_("`break' is not allowed outside a loop or switch"));
- (yyvsp[(1) - (2)])->target_jmp = NULL;
- (yyval) = list_create((yyvsp[(1) - (2)]));
+ (yyvsp[-1])->target_jmp = NULL;
+ (yyval) = list_create((yyvsp[-1]));
}
+#line 2568 "awkgram.c" /* yacc.c:1646 */
break;
case 53:
-/* Line 1787 of yacc.c */
-#line 803 "awkgram.y"
+#line 803 "awkgram.y" /* yacc.c:1646 */
{
if (! continue_allowed)
- error_ln((yyvsp[(1) - (2)])->source_line,
+ error_ln((yyvsp[-1])->source_line,
_("`continue' is not allowed outside a loop"));
- (yyvsp[(1) - (2)])->target_jmp = NULL;
- (yyval) = list_create((yyvsp[(1) - (2)]));
+ (yyvsp[-1])->target_jmp = NULL;
+ (yyval) = list_create((yyvsp[-1]));
}
+#line 2581 "awkgram.c" /* yacc.c:1646 */
break;
case 54:
-/* Line 1787 of yacc.c */
-#line 812 "awkgram.y"
+#line 812 "awkgram.y" /* yacc.c:1646 */
{
/* if inside function (rule = 0), resolve context at run-time */
if (rule && rule != Rule)
- error_ln((yyvsp[(1) - (2)])->source_line,
+ error_ln((yyvsp[-1])->source_line,
_("`next' used in %s action"), ruletab[rule]);
- (yyvsp[(1) - (2)])->target_jmp = ip_rec;
- (yyval) = list_create((yyvsp[(1) - (2)]));
+ (yyvsp[-1])->target_jmp = ip_rec;
+ (yyval) = list_create((yyvsp[-1]));
}
+#line 2594 "awkgram.c" /* yacc.c:1646 */
break;
case 55:
-/* Line 1787 of yacc.c */
-#line 821 "awkgram.y"
+#line 821 "awkgram.y" /* yacc.c:1646 */
{
/* if inside function (rule = 0), resolve context at run-time */
if (rule == BEGIN || rule == END || rule == ENDFILE)
- error_ln((yyvsp[(1) - (2)])->source_line,
+ error_ln((yyvsp[-1])->source_line,
_("`nextfile' used in %s action"), ruletab[rule]);
- (yyvsp[(1) - (2)])->target_newfile = ip_newfile;
- (yyvsp[(1) - (2)])->target_endfile = ip_endfile;
- (yyval) = list_create((yyvsp[(1) - (2)]));
+ (yyvsp[-1])->target_newfile = ip_newfile;
+ (yyvsp[-1])->target_endfile = ip_endfile;
+ (yyval) = list_create((yyvsp[-1]));
}
+#line 2609 "awkgram.c" /* yacc.c:1646 */
break;
case 56:
-/* Line 1787 of yacc.c */
-#line 832 "awkgram.y"
+#line 832 "awkgram.y" /* yacc.c:1646 */
{
/* Initialize the two possible jump targets, the actual target
* is resolved at run-time.
*/
- (yyvsp[(1) - (3)])->target_end = ip_end; /* first instruction in end_block */
- (yyvsp[(1) - (3)])->target_atexit = ip_atexit; /* cleanup and go home */
+ (yyvsp[-2])->target_end = ip_end; /* first instruction in end_block */
+ (yyvsp[-2])->target_atexit = ip_atexit; /* cleanup and go home */
- if ((yyvsp[(2) - (3)]) == NULL) {
- (yyval) = list_create((yyvsp[(1) - (3)]));
+ if ((yyvsp[-1]) == NULL) {
+ (yyval) = list_create((yyvsp[-2]));
(void) list_prepend((yyval), instruction(Op_push_i));
(yyval)->nexti->memory = dupnode(Nnull_string);
} else
- (yyval) = list_append((yyvsp[(2) - (3)]), (yyvsp[(1) - (3)]));
+ (yyval) = list_append((yyvsp[-1]), (yyvsp[-2]));
}
+#line 2628 "awkgram.c" /* yacc.c:1646 */
break;
case 57:
-/* Line 1787 of yacc.c */
-#line 847 "awkgram.y"
+#line 847 "awkgram.y" /* yacc.c:1646 */
{
if (! in_function)
yyerror(_("`return' used outside function context"));
}
+#line 2637 "awkgram.c" /* yacc.c:1646 */
break;
case 58:
-/* Line 1787 of yacc.c */
-#line 850 "awkgram.y"
+#line 850 "awkgram.y" /* yacc.c:1646 */
{
- if ((yyvsp[(3) - (4)]) == NULL) {
- (yyval) = list_create((yyvsp[(1) - (4)]));
+ if ((yyvsp[-1]) == NULL) {
+ (yyval) = list_create((yyvsp[-3]));
(void) list_prepend((yyval), instruction(Op_push_i));
(yyval)->nexti->memory = dupnode(Nnull_string);
} else {
- if (do_optimize > 1
- && (yyvsp[(3) - (4)])->lasti->opcode == Op_func_call
- && strcmp((yyvsp[(3) - (4)])->lasti->func_name, in_function) == 0
+ if (do_optimize
+ && (yyvsp[-1])->lasti->opcode == Op_func_call
+ && strcmp((yyvsp[-1])->lasti->func_name, in_function) == 0
) {
/* Do tail recursion optimization. Tail
* call without a return value is recognized
* in mk_function().
*/
- ((yyvsp[(3) - (4)])->lasti + 1)->tail_call = true;
+ ((yyvsp[-1])->lasti + 1)->tail_call = true;
}
- (yyval) = list_append((yyvsp[(3) - (4)]), (yyvsp[(1) - (4)]));
+ (yyval) = list_append((yyvsp[-1]), (yyvsp[-3]));
}
}
+#line 2662 "awkgram.c" /* yacc.c:1646 */
break;
case 60:
-/* Line 1787 of yacc.c */
-#line 882 "awkgram.y"
+#line 882 "awkgram.y" /* yacc.c:1646 */
{ in_print = true; in_parens = 0; }
+#line 2668 "awkgram.c" /* yacc.c:1646 */
break;
case 61:
-/* Line 1787 of yacc.c */
-#line 883 "awkgram.y"
+#line 883 "awkgram.y" /* yacc.c:1646 */
{
/*
* Optimization: plain `print' has no expression list, so $3 is null.
@@ -2881,12 +2676,12 @@ regular_loop:
* which is faster for these two cases.
*/
- if ((yyvsp[(1) - (4)])->opcode == Op_K_print &&
- ((yyvsp[(3) - (4)]) == NULL
- || ((yyvsp[(3) - (4)])->lasti->opcode == Op_field_spec
- && (yyvsp[(3) - (4)])->nexti->nexti->nexti == (yyvsp[(3) - (4)])->lasti
- && (yyvsp[(3) - (4)])->nexti->nexti->opcode == Op_push_i
- && (yyvsp[(3) - (4)])->nexti->nexti->memory->type == Node_val)
+ if ((yyvsp[-3])->opcode == Op_K_print &&
+ ((yyvsp[-1]) == NULL
+ || ((yyvsp[-1])->lasti->opcode == Op_field_spec
+ && (yyvsp[-1])->nexti->nexti->nexti == (yyvsp[-1])->lasti
+ && (yyvsp[-1])->nexti->nexti->opcode == Op_push_i
+ && (yyvsp[-1])->nexti->nexti->memory->type == Node_val)
)
) {
static bool warned = false;
@@ -2899,37 +2694,37 @@ regular_loop:
* [Op_K_print_rec | NULL | redir_type | expr_count]
*/
- if ((yyvsp[(3) - (4)]) != NULL) {
- NODE *n = (yyvsp[(3) - (4)])->nexti->nexti->memory;
+ if ((yyvsp[-1]) != NULL) {
+ NODE *n = (yyvsp[-1])->nexti->nexti->memory;
if (! iszero(n))
goto regular_print;
- bcfree((yyvsp[(3) - (4)])->lasti); /* Op_field_spec */
+ bcfree((yyvsp[-1])->lasti); /* Op_field_spec */
unref(n); /* Node_val */
- bcfree((yyvsp[(3) - (4)])->nexti->nexti); /* Op_push_i */
- bcfree((yyvsp[(3) - (4)])->nexti); /* Op_list */
- bcfree((yyvsp[(3) - (4)])); /* Op_list */
+ bcfree((yyvsp[-1])->nexti->nexti); /* Op_push_i */
+ bcfree((yyvsp[-1])->nexti); /* Op_list */
+ bcfree((yyvsp[-1])); /* Op_list */
} else {
if (do_lint && (rule == BEGIN || rule == END) && ! warned) {
warned = true;
- lintwarn_ln((yyvsp[(1) - (4)])->source_line,
+ lintwarn_ln((yyvsp[-3])->source_line,
_("plain `print' in BEGIN or END rule should probably be `print \"\"'"));
}
}
- (yyvsp[(1) - (4)])->expr_count = 0;
- (yyvsp[(1) - (4)])->opcode = Op_K_print_rec;
- if ((yyvsp[(4) - (4)]) == NULL) { /* no redircetion */
- (yyvsp[(1) - (4)])->redir_type = redirect_none;
- (yyval) = list_create((yyvsp[(1) - (4)]));
+ (yyvsp[-3])->expr_count = 0;
+ (yyvsp[-3])->opcode = Op_K_print_rec;
+ if ((yyvsp[0]) == NULL) { /* no redircetion */
+ (yyvsp[-3])->redir_type = redirect_none;
+ (yyval) = list_create((yyvsp[-3]));
} else {
INSTRUCTION *ip;
- ip = (yyvsp[(4) - (4)])->nexti;
- (yyvsp[(1) - (4)])->redir_type = ip->redir_type;
- (yyvsp[(4) - (4)])->nexti = ip->nexti;
+ ip = (yyvsp[0])->nexti;
+ (yyvsp[-3])->redir_type = ip->redir_type;
+ (yyvsp[0])->nexti = ip->nexti;
bcfree(ip);
- (yyval) = list_append((yyvsp[(4) - (4)]), (yyvsp[(1) - (4)]));
+ (yyval) = list_append((yyvsp[0]), (yyvsp[-3]));
}
} else {
/* -----------------
@@ -2942,59 +2737,59 @@ regular_loop:
*
*/
regular_print:
- if ((yyvsp[(4) - (4)]) == NULL) { /* no redirection */
- if ((yyvsp[(3) - (4)]) == NULL) { /* printf without arg */
- (yyvsp[(1) - (4)])->expr_count = 0;
- (yyvsp[(1) - (4)])->redir_type = redirect_none;
- (yyval) = list_create((yyvsp[(1) - (4)]));
+ if ((yyvsp[0]) == NULL) { /* no redirection */
+ if ((yyvsp[-1]) == NULL) { /* printf without arg */
+ (yyvsp[-3])->expr_count = 0;
+ (yyvsp[-3])->redir_type = redirect_none;
+ (yyval) = list_create((yyvsp[-3]));
} else {
- INSTRUCTION *t = (yyvsp[(3) - (4)]);
- (yyvsp[(1) - (4)])->expr_count = count_expressions(&t, false);
- (yyvsp[(1) - (4)])->redir_type = redirect_none;
- (yyval) = list_append(t, (yyvsp[(1) - (4)]));
+ INSTRUCTION *t = (yyvsp[-1]);
+ (yyvsp[-3])->expr_count = count_expressions(&t, false);
+ (yyvsp[-3])->redir_type = redirect_none;
+ (yyval) = list_append(t, (yyvsp[-3]));
}
} else {
INSTRUCTION *ip;
- ip = (yyvsp[(4) - (4)])->nexti;
- (yyvsp[(1) - (4)])->redir_type = ip->redir_type;
- (yyvsp[(4) - (4)])->nexti = ip->nexti;
+ ip = (yyvsp[0])->nexti;
+ (yyvsp[-3])->redir_type = ip->redir_type;
+ (yyvsp[0])->nexti = ip->nexti;
bcfree(ip);
- if ((yyvsp[(3) - (4)]) == NULL) {
- (yyvsp[(1) - (4)])->expr_count = 0;
- (yyval) = list_append((yyvsp[(4) - (4)]), (yyvsp[(1) - (4)]));
+ if ((yyvsp[-1]) == NULL) {
+ (yyvsp[-3])->expr_count = 0;
+ (yyval) = list_append((yyvsp[0]), (yyvsp[-3]));
} else {
- INSTRUCTION *t = (yyvsp[(3) - (4)]);
- (yyvsp[(1) - (4)])->expr_count = count_expressions(&t, false);
- (yyval) = list_append(list_merge((yyvsp[(4) - (4)]), t), (yyvsp[(1) - (4)]));
+ INSTRUCTION *t = (yyvsp[-1]);
+ (yyvsp[-3])->expr_count = count_expressions(&t, false);
+ (yyval) = list_append(list_merge((yyvsp[0]), t), (yyvsp[-3]));
}
}
}
}
+#line 2769 "awkgram.c" /* yacc.c:1646 */
break;
case 62:
-/* Line 1787 of yacc.c */
-#line 980 "awkgram.y"
+#line 980 "awkgram.y" /* yacc.c:1646 */
{ sub_counter = 0; }
+#line 2775 "awkgram.c" /* yacc.c:1646 */
break;
case 63:
-/* Line 1787 of yacc.c */
-#line 981 "awkgram.y"
+#line 981 "awkgram.y" /* yacc.c:1646 */
{
- char *arr = (yyvsp[(2) - (4)])->lextok;
+ char *arr = (yyvsp[-2])->lextok;
- (yyvsp[(2) - (4)])->opcode = Op_push_array;
- (yyvsp[(2) - (4)])->memory = variable((yyvsp[(2) - (4)])->source_line, arr, Node_var_new);
+ (yyvsp[-2])->opcode = Op_push_array;
+ (yyvsp[-2])->memory = variable((yyvsp[-2])->source_line, arr, Node_var_new);
if (! do_posix && ! do_traditional) {
- if ((yyvsp[(2) - (4)])->memory == symbol_table)
+ if ((yyvsp[-2])->memory == symbol_table)
fatal(_("`delete' is not allowed with SYMTAB"));
- else if ((yyvsp[(2) - (4)])->memory == func_table)
+ else if ((yyvsp[-2])->memory == func_table)
fatal(_("`delete' is not allowed with FUNCTAB"));
}
- if ((yyvsp[(4) - (4)]) == NULL) {
+ if ((yyvsp[0]) == NULL) {
/*
* As of September 2012, POSIX has added support
* for `delete array'. See:
@@ -3006,525 +2801,525 @@ regular_print:
* Also, since BWK awk supports it, we don't have to
* check do_traditional either.
*/
- (yyvsp[(1) - (4)])->expr_count = 0;
- (yyval) = list_append(list_create((yyvsp[(2) - (4)])), (yyvsp[(1) - (4)]));
+ (yyvsp[-3])->expr_count = 0;
+ (yyval) = list_append(list_create((yyvsp[-2])), (yyvsp[-3]));
} else {
- (yyvsp[(1) - (4)])->expr_count = sub_counter;
- (yyval) = list_append(list_append((yyvsp[(4) - (4)]), (yyvsp[(2) - (4)])), (yyvsp[(1) - (4)]));
+ (yyvsp[-3])->expr_count = sub_counter;
+ (yyval) = list_append(list_append((yyvsp[0]), (yyvsp[-2])), (yyvsp[-3]));
}
}
+#line 2812 "awkgram.c" /* yacc.c:1646 */
break;
case 64:
-/* Line 1787 of yacc.c */
-#line 1018 "awkgram.y"
+#line 1018 "awkgram.y" /* yacc.c:1646 */
{
static bool warned = false;
- char *arr = (yyvsp[(3) - (4)])->lextok;
+ char *arr = (yyvsp[-1])->lextok;
if (do_lint && ! warned) {
warned = true;
- lintwarn_ln((yyvsp[(1) - (4)])->source_line,
+ lintwarn_ln((yyvsp[-3])->source_line,
_("`delete(array)' is a non-portable tawk extension"));
}
if (do_traditional) {
- error_ln((yyvsp[(1) - (4)])->source_line,
+ error_ln((yyvsp[-3])->source_line,
_("`delete(array)' is a non-portable tawk extension"));
}
- (yyvsp[(3) - (4)])->memory = variable((yyvsp[(3) - (4)])->source_line, arr, Node_var_new);
- (yyvsp[(3) - (4)])->opcode = Op_push_array;
- (yyvsp[(1) - (4)])->expr_count = 0;
- (yyval) = list_append(list_create((yyvsp[(3) - (4)])), (yyvsp[(1) - (4)]));
+ (yyvsp[-1])->memory = variable((yyvsp[-1])->source_line, arr, Node_var_new);
+ (yyvsp[-1])->opcode = Op_push_array;
+ (yyvsp[-3])->expr_count = 0;
+ (yyval) = list_append(list_create((yyvsp[-1])), (yyvsp[-3]));
if (! do_posix && ! do_traditional) {
- if ((yyvsp[(3) - (4)])->memory == symbol_table)
+ if ((yyvsp[-1])->memory == symbol_table)
fatal(_("`delete' is not allowed with SYMTAB"));
- else if ((yyvsp[(3) - (4)])->memory == func_table)
+ else if ((yyvsp[-1])->memory == func_table)
fatal(_("`delete' is not allowed with FUNCTAB"));
}
}
+#line 2842 "awkgram.c" /* yacc.c:1646 */
break;
case 65:
-/* Line 1787 of yacc.c */
-#line 1044 "awkgram.y"
- { (yyval) = optimize_assignment((yyvsp[(1) - (1)])); }
+#line 1044 "awkgram.y" /* yacc.c:1646 */
+ { (yyval) = optimize_assignment((yyvsp[0])); }
+#line 2848 "awkgram.c" /* yacc.c:1646 */
break;
case 66:
-/* Line 1787 of yacc.c */
-#line 1049 "awkgram.y"
+#line 1049 "awkgram.y" /* yacc.c:1646 */
{ (yyval) = NULL; }
+#line 2854 "awkgram.c" /* yacc.c:1646 */
break;
case 67:
-/* Line 1787 of yacc.c */
-#line 1051 "awkgram.y"
- { (yyval) = (yyvsp[(1) - (1)]); }
+#line 1051 "awkgram.y" /* yacc.c:1646 */
+ { (yyval) = (yyvsp[0]); }
+#line 2860 "awkgram.c" /* yacc.c:1646 */
break;
case 68:
-/* Line 1787 of yacc.c */
-#line 1056 "awkgram.y"
+#line 1056 "awkgram.y" /* yacc.c:1646 */
{ (yyval) = NULL; }
+#line 2866 "awkgram.c" /* yacc.c:1646 */
break;
case 69:
-/* Line 1787 of yacc.c */
-#line 1058 "awkgram.y"
+#line 1058 "awkgram.y" /* yacc.c:1646 */
{
- if ((yyvsp[(1) - (2)]) == NULL)
- (yyval) = list_create((yyvsp[(2) - (2)]));
+ if ((yyvsp[-1]) == NULL)
+ (yyval) = list_create((yyvsp[0]));
else
- (yyval) = list_prepend((yyvsp[(1) - (2)]), (yyvsp[(2) - (2)]));
+ (yyval) = list_prepend((yyvsp[-1]), (yyvsp[0]));
}
+#line 2877 "awkgram.c" /* yacc.c:1646 */
break;
case 70:
-/* Line 1787 of yacc.c */
-#line 1065 "awkgram.y"
+#line 1065 "awkgram.y" /* yacc.c:1646 */
{ (yyval) = NULL; }
+#line 2883 "awkgram.c" /* yacc.c:1646 */
break;
case 71:
-/* Line 1787 of yacc.c */
-#line 1070 "awkgram.y"
+#line 1070 "awkgram.y" /* yacc.c:1646 */
{
- INSTRUCTION *casestmt = (yyvsp[(5) - (5)]);
- if ((yyvsp[(5) - (5)]) == NULL)
+ INSTRUCTION *casestmt = (yyvsp[0]);
+ if ((yyvsp[0]) == NULL)
casestmt = list_create(instruction(Op_no_op));
if (do_pretty_print)
(void) list_prepend(casestmt, instruction(Op_exec_count));
- (yyvsp[(1) - (5)])->case_exp = (yyvsp[(2) - (5)]);
- (yyvsp[(1) - (5)])->case_stmt = casestmt;
- bcfree((yyvsp[(3) - (5)]));
- (yyval) = (yyvsp[(1) - (5)]);
+ (yyvsp[-4])->case_exp = (yyvsp[-3]);
+ (yyvsp[-4])->case_stmt = casestmt;
+ bcfree((yyvsp[-2]));
+ (yyval) = (yyvsp[-4]);
}
+#line 2899 "awkgram.c" /* yacc.c:1646 */
break;
case 72:
-/* Line 1787 of yacc.c */
-#line 1082 "awkgram.y"
+#line 1082 "awkgram.y" /* yacc.c:1646 */
{
- INSTRUCTION *casestmt = (yyvsp[(4) - (4)]);
- if ((yyvsp[(4) - (4)]) == NULL)
+ INSTRUCTION *casestmt = (yyvsp[0]);
+ if ((yyvsp[0]) == NULL)
casestmt = list_create(instruction(Op_no_op));
if (do_pretty_print)
(void) list_prepend(casestmt, instruction(Op_exec_count));
- bcfree((yyvsp[(2) - (4)]));
- (yyvsp[(1) - (4)])->case_stmt = casestmt;
- (yyval) = (yyvsp[(1) - (4)]);
+ bcfree((yyvsp[-2]));
+ (yyvsp[-3])->case_stmt = casestmt;
+ (yyval) = (yyvsp[-3]);
}
+#line 2914 "awkgram.c" /* yacc.c:1646 */
break;
case 73:
-/* Line 1787 of yacc.c */
-#line 1096 "awkgram.y"
- { (yyval) = (yyvsp[(1) - (1)]); }
+#line 1096 "awkgram.y" /* yacc.c:1646 */
+ { (yyval) = (yyvsp[0]); }
+#line 2920 "awkgram.c" /* yacc.c:1646 */
break;
case 74:
-/* Line 1787 of yacc.c */
-#line 1098 "awkgram.y"
+#line 1098 "awkgram.y" /* yacc.c:1646 */
{
- NODE *n = (yyvsp[(2) - (2)])->memory;
+ NODE *n = (yyvsp[0])->memory;
(void) force_number(n);
negate_num(n);
- bcfree((yyvsp[(1) - (2)]));
- (yyval) = (yyvsp[(2) - (2)]);
+ bcfree((yyvsp[-1]));
+ (yyval) = (yyvsp[0]);
}
+#line 2932 "awkgram.c" /* yacc.c:1646 */
break;
case 75:
-/* Line 1787 of yacc.c */
-#line 1106 "awkgram.y"
+#line 1106 "awkgram.y" /* yacc.c:1646 */
{
- bcfree((yyvsp[(1) - (2)]));
- (yyval) = (yyvsp[(2) - (2)]);
+ bcfree((yyvsp[-1]));
+ (yyval) = (yyvsp[0]);
}
+#line 2941 "awkgram.c" /* yacc.c:1646 */
break;
case 76:
-/* Line 1787 of yacc.c */
-#line 1111 "awkgram.y"
- { (yyval) = (yyvsp[(1) - (1)]); }
+#line 1111 "awkgram.y" /* yacc.c:1646 */
+ { (yyval) = (yyvsp[0]); }
+#line 2947 "awkgram.c" /* yacc.c:1646 */
break;
case 77:
-/* Line 1787 of yacc.c */
-#line 1113 "awkgram.y"
+#line 1113 "awkgram.y" /* yacc.c:1646 */
{
- (yyvsp[(1) - (1)])->opcode = Op_push_re;
- (yyval) = (yyvsp[(1) - (1)]);
+ (yyvsp[0])->opcode = Op_push_re;
+ (yyval) = (yyvsp[0]);
}
+#line 2956 "awkgram.c" /* yacc.c:1646 */
break;
case 78:
-/* Line 1787 of yacc.c */
-#line 1121 "awkgram.y"
- { (yyval) = (yyvsp[(1) - (1)]); }
+#line 1121 "awkgram.y" /* yacc.c:1646 */
+ { (yyval) = (yyvsp[0]); }
+#line 2962 "awkgram.c" /* yacc.c:1646 */
break;
case 79:
-/* Line 1787 of yacc.c */
-#line 1123 "awkgram.y"
- { (yyval) = (yyvsp[(1) - (1)]); }
+#line 1123 "awkgram.y" /* yacc.c:1646 */
+ { (yyval) = (yyvsp[0]); }
+#line 2968 "awkgram.c" /* yacc.c:1646 */
break;
case 81:
-/* Line 1787 of yacc.c */
-#line 1133 "awkgram.y"
+#line 1133 "awkgram.y" /* yacc.c:1646 */
{
- (yyval) = (yyvsp[(2) - (3)]);
+ (yyval) = (yyvsp[-1]);
}
+#line 2976 "awkgram.c" /* yacc.c:1646 */
break;
case 82:
-/* Line 1787 of yacc.c */
-#line 1140 "awkgram.y"
+#line 1140 "awkgram.y" /* yacc.c:1646 */
{
in_print = false;
in_parens = 0;
(yyval) = NULL;
}
+#line 2986 "awkgram.c" /* yacc.c:1646 */
break;
case 83:
-/* Line 1787 of yacc.c */
-#line 1145 "awkgram.y"
+#line 1145 "awkgram.y" /* yacc.c:1646 */
{ in_print = false; in_parens = 0; }
+#line 2992 "awkgram.c" /* yacc.c:1646 */
break;
case 84:
-/* Line 1787 of yacc.c */
-#line 1146 "awkgram.y"
+#line 1146 "awkgram.y" /* yacc.c:1646 */
{
- if ((yyvsp[(1) - (3)])->redir_type == redirect_twoway
- && (yyvsp[(3) - (3)])->lasti->opcode == Op_K_getline_redir
- && (yyvsp[(3) - (3)])->lasti->redir_type == redirect_twoway)
+ if ((yyvsp[-2])->redir_type == redirect_twoway
+ && (yyvsp[0])->lasti->opcode == Op_K_getline_redir
+ && (yyvsp[0])->lasti->redir_type == redirect_twoway)
yyerror(_("multistage two-way pipelines don't work"));
- (yyval) = list_prepend((yyvsp[(3) - (3)]), (yyvsp[(1) - (3)]));
+ (yyval) = list_prepend((yyvsp[0]), (yyvsp[-2]));
}
+#line 3004 "awkgram.c" /* yacc.c:1646 */
break;
case 85:
-/* Line 1787 of yacc.c */
-#line 1157 "awkgram.y"
+#line 1157 "awkgram.y" /* yacc.c:1646 */
{
- (yyval) = mk_condition((yyvsp[(3) - (6)]), (yyvsp[(1) - (6)]), (yyvsp[(6) - (6)]), NULL, NULL);
+ (yyval) = mk_condition((yyvsp[-3]), (yyvsp[-5]), (yyvsp[0]), NULL, NULL);
}
+#line 3012 "awkgram.c" /* yacc.c:1646 */
break;
case 86:
-/* Line 1787 of yacc.c */
-#line 1162 "awkgram.y"
+#line 1162 "awkgram.y" /* yacc.c:1646 */
{
- (yyval) = mk_condition((yyvsp[(3) - (9)]), (yyvsp[(1) - (9)]), (yyvsp[(6) - (9)]), (yyvsp[(7) - (9)]), (yyvsp[(9) - (9)]));
+ (yyval) = mk_condition((yyvsp[-6]), (yyvsp[-8]), (yyvsp[-3]), (yyvsp[-2]), (yyvsp[0]));
}
+#line 3020 "awkgram.c" /* yacc.c:1646 */
break;
case 91:
-/* Line 1787 of yacc.c */
-#line 1179 "awkgram.y"
+#line 1179 "awkgram.y" /* yacc.c:1646 */
{ (yyval) = NULL; }
+#line 3026 "awkgram.c" /* yacc.c:1646 */
break;
case 92:
-/* Line 1787 of yacc.c */
-#line 1181 "awkgram.y"
+#line 1181 "awkgram.y" /* yacc.c:1646 */
{
- bcfree((yyvsp[(1) - (2)]));
- (yyval) = (yyvsp[(2) - (2)]);
+ bcfree((yyvsp[-1]));
+ (yyval) = (yyvsp[0]);
}
+#line 3035 "awkgram.c" /* yacc.c:1646 */
break;
case 93:
-/* Line 1787 of yacc.c */
-#line 1189 "awkgram.y"
+#line 1189 "awkgram.y" /* yacc.c:1646 */
{ (yyval) = NULL; }
+#line 3041 "awkgram.c" /* yacc.c:1646 */
break;
case 94:
-/* Line 1787 of yacc.c */
-#line 1191 "awkgram.y"
- { (yyval) = (yyvsp[(1) - (1)]) ; }
+#line 1191 "awkgram.y" /* yacc.c:1646 */
+ { (yyval) = (yyvsp[0]) ; }
+#line 3047 "awkgram.c" /* yacc.c:1646 */
break;
case 95:
-/* Line 1787 of yacc.c */
-#line 1196 "awkgram.y"
+#line 1196 "awkgram.y" /* yacc.c:1646 */
{
- (yyvsp[(1) - (1)])->param_count = 0;
- (yyval) = list_create((yyvsp[(1) - (1)]));
+ (yyvsp[0])->param_count = 0;
+ (yyval) = list_create((yyvsp[0]));
}
+#line 3056 "awkgram.c" /* yacc.c:1646 */
break;
case 96:
-/* Line 1787 of yacc.c */
-#line 1201 "awkgram.y"
+#line 1201 "awkgram.y" /* yacc.c:1646 */
{
- (yyvsp[(3) - (3)])->param_count = (yyvsp[(1) - (3)])->lasti->param_count + 1;
- (yyval) = list_append((yyvsp[(1) - (3)]), (yyvsp[(3) - (3)]));
+ (yyvsp[0])->param_count = (yyvsp[-2])->lasti->param_count + 1;
+ (yyval) = list_append((yyvsp[-2]), (yyvsp[0]));
yyerrok;
}
+#line 3066 "awkgram.c" /* yacc.c:1646 */
break;
case 97:
-/* Line 1787 of yacc.c */
-#line 1207 "awkgram.y"
+#line 1207 "awkgram.y" /* yacc.c:1646 */
{ (yyval) = NULL; }
+#line 3072 "awkgram.c" /* yacc.c:1646 */
break;
case 98:
-/* Line 1787 of yacc.c */
-#line 1209 "awkgram.y"
- { (yyval) = (yyvsp[(1) - (2)]); }
+#line 1209 "awkgram.y" /* yacc.c:1646 */
+ { (yyval) = (yyvsp[-1]); }
+#line 3078 "awkgram.c" /* yacc.c:1646 */
break;
case 99:
-/* Line 1787 of yacc.c */
-#line 1211 "awkgram.y"
- { (yyval) = (yyvsp[(1) - (3)]); }
+#line 1211 "awkgram.y" /* yacc.c:1646 */
+ { (yyval) = (yyvsp[-2]); }
+#line 3084 "awkgram.c" /* yacc.c:1646 */
break;
case 100:
-/* Line 1787 of yacc.c */
-#line 1217 "awkgram.y"
+#line 1217 "awkgram.y" /* yacc.c:1646 */
{ (yyval) = NULL; }
+#line 3090 "awkgram.c" /* yacc.c:1646 */
break;
case 101:
-/* Line 1787 of yacc.c */
-#line 1219 "awkgram.y"
- { (yyval) = (yyvsp[(1) - (1)]); }
+#line 1219 "awkgram.y" /* yacc.c:1646 */
+ { (yyval) = (yyvsp[0]); }
+#line 3096 "awkgram.c" /* yacc.c:1646 */
break;
case 102:
-/* Line 1787 of yacc.c */
-#line 1224 "awkgram.y"
+#line 1224 "awkgram.y" /* yacc.c:1646 */
{ (yyval) = NULL; }
+#line 3102 "awkgram.c" /* yacc.c:1646 */
break;
case 103:
-/* Line 1787 of yacc.c */
-#line 1226 "awkgram.y"
- { (yyval) = (yyvsp[(1) - (1)]); }
+#line 1226 "awkgram.y" /* yacc.c:1646 */
+ { (yyval) = (yyvsp[0]); }
+#line 3108 "awkgram.c" /* yacc.c:1646 */
break;
case 104:
-/* Line 1787 of yacc.c */
-#line 1231 "awkgram.y"
- { (yyval) = mk_expression_list(NULL, (yyvsp[(1) - (1)])); }
+#line 1231 "awkgram.y" /* yacc.c:1646 */
+ { (yyval) = mk_expression_list(NULL, (yyvsp[0])); }
+#line 3114 "awkgram.c" /* yacc.c:1646 */
break;
case 105:
-/* Line 1787 of yacc.c */
-#line 1233 "awkgram.y"
+#line 1233 "awkgram.y" /* yacc.c:1646 */
{
- (yyval) = mk_expression_list((yyvsp[(1) - (3)]), (yyvsp[(3) - (3)]));
+ (yyval) = mk_expression_list((yyvsp[-2]), (yyvsp[0]));
yyerrok;
}
+#line 3123 "awkgram.c" /* yacc.c:1646 */
break;
case 106:
-/* Line 1787 of yacc.c */
-#line 1238 "awkgram.y"
+#line 1238 "awkgram.y" /* yacc.c:1646 */
{ (yyval) = NULL; }
+#line 3129 "awkgram.c" /* yacc.c:1646 */
break;
case 107:
-/* Line 1787 of yacc.c */
-#line 1240 "awkgram.y"
+#line 1240 "awkgram.y" /* yacc.c:1646 */
{
/*
* Returning the expression list instead of NULL lets
* snode get a list of arguments that it can count.
*/
- (yyval) = (yyvsp[(1) - (2)]);
+ (yyval) = (yyvsp[-1]);
}
+#line 3141 "awkgram.c" /* yacc.c:1646 */
break;
case 108:
-/* Line 1787 of yacc.c */
-#line 1248 "awkgram.y"
+#line 1248 "awkgram.y" /* yacc.c:1646 */
{
/* Ditto */
- (yyval) = mk_expression_list((yyvsp[(1) - (3)]), (yyvsp[(3) - (3)]));
+ (yyval) = mk_expression_list((yyvsp[-2]), (yyvsp[0]));
}
+#line 3150 "awkgram.c" /* yacc.c:1646 */
break;
case 109:
-/* Line 1787 of yacc.c */
-#line 1253 "awkgram.y"
+#line 1253 "awkgram.y" /* yacc.c:1646 */
{
/* Ditto */
- (yyval) = (yyvsp[(1) - (3)]);
+ (yyval) = (yyvsp[-2]);
}
+#line 3159 "awkgram.c" /* yacc.c:1646 */
break;
case 110:
-/* Line 1787 of yacc.c */
-#line 1262 "awkgram.y"
+#line 1262 "awkgram.y" /* yacc.c:1646 */
{
- if (do_lint && (yyvsp[(3) - (3)])->lasti->opcode == Op_match_rec)
- lintwarn_ln((yyvsp[(2) - (3)])->source_line,
+ if (do_lint && (yyvsp[0])->lasti->opcode == Op_match_rec)
+ lintwarn_ln((yyvsp[-1])->source_line,
_("regular expression on right of assignment"));
- (yyval) = mk_assignment((yyvsp[(1) - (3)]), (yyvsp[(3) - (3)]), (yyvsp[(2) - (3)]));
+ (yyval) = mk_assignment((yyvsp[-2]), (yyvsp[0]), (yyvsp[-1]));
}
+#line 3170 "awkgram.c" /* yacc.c:1646 */
break;
case 111:
-/* Line 1787 of yacc.c */
-#line 1269 "awkgram.y"
- { (yyval) = mk_boolean((yyvsp[(1) - (3)]), (yyvsp[(3) - (3)]), (yyvsp[(2) - (3)])); }
+#line 1269 "awkgram.y" /* yacc.c:1646 */
+ { (yyval) = mk_boolean((yyvsp[-2]), (yyvsp[0]), (yyvsp[-1])); }
+#line 3176 "awkgram.c" /* yacc.c:1646 */
break;
case 112:
-/* Line 1787 of yacc.c */
-#line 1271 "awkgram.y"
- { (yyval) = mk_boolean((yyvsp[(1) - (3)]), (yyvsp[(3) - (3)]), (yyvsp[(2) - (3)])); }
+#line 1271 "awkgram.y" /* yacc.c:1646 */
+ { (yyval) = mk_boolean((yyvsp[-2]), (yyvsp[0]), (yyvsp[-1])); }
+#line 3182 "awkgram.c" /* yacc.c:1646 */
break;
case 113:
-/* Line 1787 of yacc.c */
-#line 1273 "awkgram.y"
+#line 1273 "awkgram.y" /* yacc.c:1646 */
{
- if ((yyvsp[(1) - (3)])->lasti->opcode == Op_match_rec)
- warning_ln((yyvsp[(2) - (3)])->source_line,
+ if ((yyvsp[-2])->lasti->opcode == Op_match_rec)
+ warning_ln((yyvsp[-1])->source_line,
_("regular expression on left of `~' or `!~' operator"));
- if ((yyvsp[(3) - (3)])->lasti == (yyvsp[(3) - (3)])->nexti && (yyvsp[(3) - (3)])->nexti->opcode == Op_match_rec) {
- (yyvsp[(2) - (3)])->memory = (yyvsp[(3) - (3)])->nexti->memory;
- bcfree((yyvsp[(3) - (3)])->nexti); /* Op_match_rec */
- bcfree((yyvsp[(3) - (3)])); /* Op_list */
- (yyval) = list_append((yyvsp[(1) - (3)]), (yyvsp[(2) - (3)]));
+ if ((yyvsp[0])->lasti == (yyvsp[0])->nexti && (yyvsp[0])->nexti->opcode == Op_match_rec) {
+ (yyvsp[-1])->memory = (yyvsp[0])->nexti->memory;
+ bcfree((yyvsp[0])->nexti); /* Op_match_rec */
+ bcfree((yyvsp[0])); /* Op_list */
+ (yyval) = list_append((yyvsp[-2]), (yyvsp[-1]));
} else {
- (yyvsp[(2) - (3)])->memory = make_regnode(Node_dynregex, NULL);
- (yyval) = list_append(list_merge((yyvsp[(1) - (3)]), (yyvsp[(3) - (3)])), (yyvsp[(2) - (3)]));
+ (yyvsp[-1])->memory = make_regnode(Node_dynregex, NULL);
+ (yyval) = list_append(list_merge((yyvsp[-2]), (yyvsp[0])), (yyvsp[-1]));
}
}
+#line 3202 "awkgram.c" /* yacc.c:1646 */
break;
case 114:
-/* Line 1787 of yacc.c */
-#line 1289 "awkgram.y"
+#line 1289 "awkgram.y" /* yacc.c:1646 */
{
if (do_lint_old)
- warning_ln((yyvsp[(2) - (3)])->source_line,
+ warning_ln((yyvsp[-1])->source_line,
_("old awk does not support the keyword `in' except after `for'"));
- (yyvsp[(3) - (3)])->nexti->opcode = Op_push_array;
- (yyvsp[(2) - (3)])->opcode = Op_in_array;
- (yyvsp[(2) - (3)])->expr_count = 1;
- (yyval) = list_append(list_merge((yyvsp[(1) - (3)]), (yyvsp[(3) - (3)])), (yyvsp[(2) - (3)]));
+ (yyvsp[0])->nexti->opcode = Op_push_array;
+ (yyvsp[-1])->opcode = Op_in_array;
+ (yyvsp[-1])->expr_count = 1;
+ (yyval) = list_append(list_merge((yyvsp[-2]), (yyvsp[0])), (yyvsp[-1]));
}
+#line 3216 "awkgram.c" /* yacc.c:1646 */
break;
case 115:
-/* Line 1787 of yacc.c */
-#line 1299 "awkgram.y"
+#line 1299 "awkgram.y" /* yacc.c:1646 */
{
- if (do_lint && (yyvsp[(3) - (3)])->lasti->opcode == Op_match_rec)
- lintwarn_ln((yyvsp[(2) - (3)])->source_line,
+ if (do_lint && (yyvsp[0])->lasti->opcode == Op_match_rec)
+ lintwarn_ln((yyvsp[-1])->source_line,
_("regular expression on right of comparison"));
- (yyval) = list_append(list_merge((yyvsp[(1) - (3)]), (yyvsp[(3) - (3)])), (yyvsp[(2) - (3)]));
+ (yyval) = list_append(list_merge((yyvsp[-2]), (yyvsp[0])), (yyvsp[-1]));
}
+#line 3227 "awkgram.c" /* yacc.c:1646 */
break;
case 116:
-/* Line 1787 of yacc.c */
-#line 1306 "awkgram.y"
- { (yyval) = mk_condition((yyvsp[(1) - (5)]), (yyvsp[(2) - (5)]), (yyvsp[(3) - (5)]), (yyvsp[(4) - (5)]), (yyvsp[(5) - (5)])); }
+#line 1306 "awkgram.y" /* yacc.c:1646 */
+ { (yyval) = mk_condition((yyvsp[-4]), (yyvsp[-3]), (yyvsp[-2]), (yyvsp[-1]), (yyvsp[0])); }
+#line 3233 "awkgram.c" /* yacc.c:1646 */
break;
case 117:
-/* Line 1787 of yacc.c */
-#line 1308 "awkgram.y"
- { (yyval) = (yyvsp[(1) - (1)]); }
+#line 1308 "awkgram.y" /* yacc.c:1646 */
+ { (yyval) = (yyvsp[0]); }
+#line 3239 "awkgram.c" /* yacc.c:1646 */
break;
case 118:
-/* Line 1787 of yacc.c */
-#line 1313 "awkgram.y"
- { (yyval) = (yyvsp[(1) - (1)]); }
+#line 1313 "awkgram.y" /* yacc.c:1646 */
+ { (yyval) = (yyvsp[0]); }
+#line 3245 "awkgram.c" /* yacc.c:1646 */
break;
case 119:
-/* Line 1787 of yacc.c */
-#line 1315 "awkgram.y"
- { (yyval) = (yyvsp[(1) - (1)]); }
+#line 1315 "awkgram.y" /* yacc.c:1646 */
+ { (yyval) = (yyvsp[0]); }
+#line 3251 "awkgram.c" /* yacc.c:1646 */
break;
case 120:
-/* Line 1787 of yacc.c */
-#line 1317 "awkgram.y"
+#line 1317 "awkgram.y" /* yacc.c:1646 */
{
- (yyvsp[(2) - (2)])->opcode = Op_assign_quotient;
- (yyval) = (yyvsp[(2) - (2)]);
+ (yyvsp[0])->opcode = Op_assign_quotient;
+ (yyval) = (yyvsp[0]);
}
+#line 3260 "awkgram.c" /* yacc.c:1646 */
break;
case 121:
-/* Line 1787 of yacc.c */
-#line 1325 "awkgram.y"
- { (yyval) = (yyvsp[(1) - (1)]); }
+#line 1325 "awkgram.y" /* yacc.c:1646 */
+ { (yyval) = (yyvsp[0]); }
+#line 3266 "awkgram.c" /* yacc.c:1646 */
break;
case 122:
-/* Line 1787 of yacc.c */
-#line 1327 "awkgram.y"
- { (yyval) = (yyvsp[(1) - (1)]); }
+#line 1327 "awkgram.y" /* yacc.c:1646 */
+ { (yyval) = (yyvsp[0]); }
+#line 3272 "awkgram.c" /* yacc.c:1646 */
break;
case 123:
-/* Line 1787 of yacc.c */
-#line 1332 "awkgram.y"
- { (yyval) = (yyvsp[(1) - (1)]); }
+#line 1332 "awkgram.y" /* yacc.c:1646 */
+ { (yyval) = (yyvsp[0]); }
+#line 3278 "awkgram.c" /* yacc.c:1646 */
break;
case 124:
-/* Line 1787 of yacc.c */
-#line 1334 "awkgram.y"
- { (yyval) = (yyvsp[(1) - (1)]); }
+#line 1334 "awkgram.y" /* yacc.c:1646 */
+ { (yyval) = (yyvsp[0]); }
+#line 3284 "awkgram.c" /* yacc.c:1646 */
break;
case 125:
-/* Line 1787 of yacc.c */
-#line 1339 "awkgram.y"
- { (yyval) = (yyvsp[(1) - (1)]); }
+#line 1339 "awkgram.y" /* yacc.c:1646 */
+ { (yyval) = (yyvsp[0]); }
+#line 3290 "awkgram.c" /* yacc.c:1646 */
break;
case 126:
-/* Line 1787 of yacc.c */
-#line 1341 "awkgram.y"
- { (yyval) = (yyvsp[(1) - (1)]); }
+#line 1341 "awkgram.y" /* yacc.c:1646 */
+ { (yyval) = (yyvsp[0]); }
+#line 3296 "awkgram.c" /* yacc.c:1646 */
break;
case 127:
-/* Line 1787 of yacc.c */
-#line 1343 "awkgram.y"
+#line 1343 "awkgram.y" /* yacc.c:1646 */
{
int count = 2;
bool is_simple_var = false;
- if ((yyvsp[(1) - (2)])->lasti->opcode == Op_concat) {
+ if ((yyvsp[-1])->lasti->opcode == Op_concat) {
/* multiple (> 2) adjacent strings optimization */
- is_simple_var = ((yyvsp[(1) - (2)])->lasti->concat_flag & CSVAR);
- count = (yyvsp[(1) - (2)])->lasti->expr_count + 1;
- (yyvsp[(1) - (2)])->lasti->opcode = Op_no_op;
+ is_simple_var = ((yyvsp[-1])->lasti->concat_flag & CSVAR);
+ count = (yyvsp[-1])->lasti->expr_count + 1;
+ (yyvsp[-1])->lasti->opcode = Op_no_op;
} else {
- is_simple_var = ((yyvsp[(1) - (2)])->nexti->opcode == Op_push
- && (yyvsp[(1) - (2)])->lasti == (yyvsp[(1) - (2)])->nexti); /* first exp. is a simple
+ is_simple_var = ((yyvsp[-1])->nexti->opcode == Op_push
+ && (yyvsp[-1])->lasti == (yyvsp[-1])->nexti); /* first exp. is a simple
* variable?; kludge for use
* in Op_assign_concat.
*/
}
- if (do_optimize > 1
- && (yyvsp[(1) - (2)])->nexti == (yyvsp[(1) - (2)])->lasti && (yyvsp[(1) - (2)])->nexti->opcode == Op_push_i
- && (yyvsp[(2) - (2)])->nexti == (yyvsp[(2) - (2)])->lasti && (yyvsp[(2) - (2)])->nexti->opcode == Op_push_i
+ if (do_optimize
+ && (yyvsp[-1])->nexti == (yyvsp[-1])->lasti && (yyvsp[-1])->nexti->opcode == Op_push_i
+ && (yyvsp[0])->nexti == (yyvsp[0])->lasti && (yyvsp[0])->nexti->opcode == Op_push_i
) {
- NODE *n1 = (yyvsp[(1) - (2)])->nexti->memory;
- NODE *n2 = (yyvsp[(2) - (2)])->nexti->memory;
+ NODE *n1 = (yyvsp[-1])->nexti->memory;
+ NODE *n2 = (yyvsp[0])->nexti->memory;
size_t nlen;
n1 = force_string(n1);
@@ -3537,193 +3332,193 @@ regular_print:
n1->flags &= ~(NUMCUR|NUMBER|NUMINT);
n1->flags |= (STRING|STRCUR);
unref(n2);
- bcfree((yyvsp[(2) - (2)])->nexti);
- bcfree((yyvsp[(2) - (2)]));
- (yyval) = (yyvsp[(1) - (2)]);
+ bcfree((yyvsp[0])->nexti);
+ bcfree((yyvsp[0]));
+ (yyval) = (yyvsp[-1]);
} else {
- (yyval) = list_append(list_merge((yyvsp[(1) - (2)]), (yyvsp[(2) - (2)])), instruction(Op_concat));
+ (yyval) = list_append(list_merge((yyvsp[-1]), (yyvsp[0])), instruction(Op_concat));
(yyval)->lasti->concat_flag = (is_simple_var ? CSVAR : 0);
(yyval)->lasti->expr_count = count;
if (count > max_args)
max_args = count;
}
}
+#line 3347 "awkgram.c" /* yacc.c:1646 */
break;
case 129:
-/* Line 1787 of yacc.c */
-#line 1395 "awkgram.y"
- { (yyval) = mk_binary((yyvsp[(1) - (3)]), (yyvsp[(3) - (3)]), (yyvsp[(2) - (3)])); }
+#line 1395 "awkgram.y" /* yacc.c:1646 */
+ { (yyval) = mk_binary((yyvsp[-2]), (yyvsp[0]), (yyvsp[-1])); }
+#line 3353 "awkgram.c" /* yacc.c:1646 */
break;
case 130:
-/* Line 1787 of yacc.c */
-#line 1397 "awkgram.y"
- { (yyval) = mk_binary((yyvsp[(1) - (3)]), (yyvsp[(3) - (3)]), (yyvsp[(2) - (3)])); }
+#line 1397 "awkgram.y" /* yacc.c:1646 */
+ { (yyval) = mk_binary((yyvsp[-2]), (yyvsp[0]), (yyvsp[-1])); }
+#line 3359 "awkgram.c" /* yacc.c:1646 */
break;
case 131:
-/* Line 1787 of yacc.c */
-#line 1399 "awkgram.y"
- { (yyval) = mk_binary((yyvsp[(1) - (3)]), (yyvsp[(3) - (3)]), (yyvsp[(2) - (3)])); }
+#line 1399 "awkgram.y" /* yacc.c:1646 */
+ { (yyval) = mk_binary((yyvsp[-2]), (yyvsp[0]), (yyvsp[-1])); }
+#line 3365 "awkgram.c" /* yacc.c:1646 */
break;
case 132:
-/* Line 1787 of yacc.c */
-#line 1401 "awkgram.y"
- { (yyval) = mk_binary((yyvsp[(1) - (3)]), (yyvsp[(3) - (3)]), (yyvsp[(2) - (3)])); }
+#line 1401 "awkgram.y" /* yacc.c:1646 */
+ { (yyval) = mk_binary((yyvsp[-2]), (yyvsp[0]), (yyvsp[-1])); }
+#line 3371 "awkgram.c" /* yacc.c:1646 */
break;
case 133:
-/* Line 1787 of yacc.c */
-#line 1403 "awkgram.y"
- { (yyval) = mk_binary((yyvsp[(1) - (3)]), (yyvsp[(3) - (3)]), (yyvsp[(2) - (3)])); }
+#line 1403 "awkgram.y" /* yacc.c:1646 */
+ { (yyval) = mk_binary((yyvsp[-2]), (yyvsp[0]), (yyvsp[-1])); }
+#line 3377 "awkgram.c" /* yacc.c:1646 */
break;
case 134:
-/* Line 1787 of yacc.c */
-#line 1405 "awkgram.y"
- { (yyval) = mk_binary((yyvsp[(1) - (3)]), (yyvsp[(3) - (3)]), (yyvsp[(2) - (3)])); }
+#line 1405 "awkgram.y" /* yacc.c:1646 */
+ { (yyval) = mk_binary((yyvsp[-2]), (yyvsp[0]), (yyvsp[-1])); }
+#line 3383 "awkgram.c" /* yacc.c:1646 */
break;
case 135:
-/* Line 1787 of yacc.c */
-#line 1407 "awkgram.y"
+#line 1407 "awkgram.y" /* yacc.c:1646 */
{
/*
* In BEGINFILE/ENDFILE, allow `getline var < file'
*/
if (rule == BEGINFILE || rule == ENDFILE) {
- if ((yyvsp[(2) - (3)]) != NULL && (yyvsp[(3) - (3)]) != NULL)
+ if ((yyvsp[-1]) != NULL && (yyvsp[0]) != NULL)
; /* all ok */
else {
- if ((yyvsp[(2) - (3)]) != NULL)
- error_ln((yyvsp[(1) - (3)])->source_line,
+ if ((yyvsp[-1]) != NULL)
+ error_ln((yyvsp[-2])->source_line,
_("`getline var' invalid inside `%s' rule"), ruletab[rule]);
else
- error_ln((yyvsp[(1) - (3)])->source_line,
+ error_ln((yyvsp[-2])->source_line,
_("`getline' invalid inside `%s' rule"), ruletab[rule]);
}
}
- if (do_lint && rule == END && (yyvsp[(3) - (3)]) == NULL)
- lintwarn_ln((yyvsp[(1) - (3)])->source_line,
+ if (do_lint && rule == END && (yyvsp[0]) == NULL)
+ lintwarn_ln((yyvsp[-2])->source_line,
_("non-redirected `getline' undefined inside END action"));
- (yyval) = mk_getline((yyvsp[(1) - (3)]), (yyvsp[(2) - (3)]), (yyvsp[(3) - (3)]), redirect_input);
+ (yyval) = mk_getline((yyvsp[-2]), (yyvsp[-1]), (yyvsp[0]), redirect_input);
}
+#line 3410 "awkgram.c" /* yacc.c:1646 */
break;
case 136:
-/* Line 1787 of yacc.c */
-#line 1430 "awkgram.y"
+#line 1430 "awkgram.y" /* yacc.c:1646 */
{
- (yyvsp[(2) - (2)])->opcode = Op_postincrement;
- (yyval) = mk_assignment((yyvsp[(1) - (2)]), NULL, (yyvsp[(2) - (2)]));
+ (yyvsp[0])->opcode = Op_postincrement;
+ (yyval) = mk_assignment((yyvsp[-1]), NULL, (yyvsp[0]));
}
+#line 3419 "awkgram.c" /* yacc.c:1646 */
break;
case 137:
-/* Line 1787 of yacc.c */
-#line 1435 "awkgram.y"
+#line 1435 "awkgram.y" /* yacc.c:1646 */
{
- (yyvsp[(2) - (2)])->opcode = Op_postdecrement;
- (yyval) = mk_assignment((yyvsp[(1) - (2)]), NULL, (yyvsp[(2) - (2)]));
+ (yyvsp[0])->opcode = Op_postdecrement;
+ (yyval) = mk_assignment((yyvsp[-1]), NULL, (yyvsp[0]));
}
+#line 3428 "awkgram.c" /* yacc.c:1646 */
break;
case 138:
-/* Line 1787 of yacc.c */
-#line 1440 "awkgram.y"
+#line 1440 "awkgram.y" /* yacc.c:1646 */
{
if (do_lint_old) {
- warning_ln((yyvsp[(4) - (5)])->source_line,
+ warning_ln((yyvsp[-1])->source_line,
_("old awk does not support the keyword `in' except after `for'"));
- warning_ln((yyvsp[(4) - (5)])->source_line,
+ warning_ln((yyvsp[-1])->source_line,
_("old awk does not support multidimensional arrays"));
}
- (yyvsp[(5) - (5)])->nexti->opcode = Op_push_array;
- (yyvsp[(4) - (5)])->opcode = Op_in_array;
- if ((yyvsp[(2) - (5)]) == NULL) { /* error */
+ (yyvsp[0])->nexti->opcode = Op_push_array;
+ (yyvsp[-1])->opcode = Op_in_array;
+ if ((yyvsp[-3]) == NULL) { /* error */
errcount++;
- (yyvsp[(4) - (5)])->expr_count = 0;
- (yyval) = list_merge((yyvsp[(5) - (5)]), (yyvsp[(4) - (5)]));
+ (yyvsp[-1])->expr_count = 0;
+ (yyval) = list_merge((yyvsp[0]), (yyvsp[-1]));
} else {
- INSTRUCTION *t = (yyvsp[(2) - (5)]);
- (yyvsp[(4) - (5)])->expr_count = count_expressions(&t, false);
- (yyval) = list_append(list_merge(t, (yyvsp[(5) - (5)])), (yyvsp[(4) - (5)]));
+ INSTRUCTION *t = (yyvsp[-3]);
+ (yyvsp[-1])->expr_count = count_expressions(&t, false);
+ (yyval) = list_append(list_merge(t, (yyvsp[0])), (yyvsp[-1]));
}
}
+#line 3452 "awkgram.c" /* yacc.c:1646 */
break;
case 139:
-/* Line 1787 of yacc.c */
-#line 1465 "awkgram.y"
+#line 1465 "awkgram.y" /* yacc.c:1646 */
{
- (yyval) = mk_getline((yyvsp[(3) - (4)]), (yyvsp[(4) - (4)]), (yyvsp[(1) - (4)]), (yyvsp[(2) - (4)])->redir_type);
- bcfree((yyvsp[(2) - (4)]));
+ (yyval) = mk_getline((yyvsp[-1]), (yyvsp[0]), (yyvsp[-3]), (yyvsp[-2])->redir_type);
+ bcfree((yyvsp[-2]));
}
+#line 3461 "awkgram.c" /* yacc.c:1646 */
break;
case 140:
-/* Line 1787 of yacc.c */
-#line 1471 "awkgram.y"
- { (yyval) = mk_binary((yyvsp[(1) - (3)]), (yyvsp[(3) - (3)]), (yyvsp[(2) - (3)])); }
+#line 1471 "awkgram.y" /* yacc.c:1646 */
+ { (yyval) = mk_binary((yyvsp[-2]), (yyvsp[0]), (yyvsp[-1])); }
+#line 3467 "awkgram.c" /* yacc.c:1646 */
break;
case 141:
-/* Line 1787 of yacc.c */
-#line 1473 "awkgram.y"
- { (yyval) = mk_binary((yyvsp[(1) - (3)]), (yyvsp[(3) - (3)]), (yyvsp[(2) - (3)])); }
+#line 1473 "awkgram.y" /* yacc.c:1646 */
+ { (yyval) = mk_binary((yyvsp[-2]), (yyvsp[0]), (yyvsp[-1])); }
+#line 3473 "awkgram.c" /* yacc.c:1646 */
break;
case 142:
-/* Line 1787 of yacc.c */
-#line 1475 "awkgram.y"
- { (yyval) = mk_binary((yyvsp[(1) - (3)]), (yyvsp[(3) - (3)]), (yyvsp[(2) - (3)])); }
+#line 1475 "awkgram.y" /* yacc.c:1646 */
+ { (yyval) = mk_binary((yyvsp[-2]), (yyvsp[0]), (yyvsp[-1])); }
+#line 3479 "awkgram.c" /* yacc.c:1646 */
break;
case 143:
-/* Line 1787 of yacc.c */
-#line 1477 "awkgram.y"
- { (yyval) = mk_binary((yyvsp[(1) - (3)]), (yyvsp[(3) - (3)]), (yyvsp[(2) - (3)])); }
+#line 1477 "awkgram.y" /* yacc.c:1646 */
+ { (yyval) = mk_binary((yyvsp[-2]), (yyvsp[0]), (yyvsp[-1])); }
+#line 3485 "awkgram.c" /* yacc.c:1646 */
break;
case 144:
-/* Line 1787 of yacc.c */
-#line 1479 "awkgram.y"
- { (yyval) = mk_binary((yyvsp[(1) - (3)]), (yyvsp[(3) - (3)]), (yyvsp[(2) - (3)])); }
+#line 1479 "awkgram.y" /* yacc.c:1646 */
+ { (yyval) = mk_binary((yyvsp[-2]), (yyvsp[0]), (yyvsp[-1])); }
+#line 3491 "awkgram.c" /* yacc.c:1646 */
break;
case 145:
-/* Line 1787 of yacc.c */
-#line 1481 "awkgram.y"
- { (yyval) = mk_binary((yyvsp[(1) - (3)]), (yyvsp[(3) - (3)]), (yyvsp[(2) - (3)])); }
+#line 1481 "awkgram.y" /* yacc.c:1646 */
+ { (yyval) = mk_binary((yyvsp[-2]), (yyvsp[0]), (yyvsp[-1])); }
+#line 3497 "awkgram.c" /* yacc.c:1646 */
break;
case 146:
-/* Line 1787 of yacc.c */
-#line 1486 "awkgram.y"
+#line 1486 "awkgram.y" /* yacc.c:1646 */
{
- (yyval) = list_create((yyvsp[(1) - (1)]));
+ (yyval) = list_create((yyvsp[0]));
}
+#line 3505 "awkgram.c" /* yacc.c:1646 */
break;
case 147:
-/* Line 1787 of yacc.c */
-#line 1490 "awkgram.y"
+#line 1490 "awkgram.y" /* yacc.c:1646 */
{
- if ((yyvsp[(2) - (2)])->opcode == Op_match_rec) {
- (yyvsp[(2) - (2)])->opcode = Op_nomatch;
- (yyvsp[(1) - (2)])->opcode = Op_push_i;
- (yyvsp[(1) - (2)])->memory = make_number(0.0);
- (yyval) = list_append(list_append(list_create((yyvsp[(1) - (2)])),
- instruction(Op_field_spec)), (yyvsp[(2) - (2)]));
+ if ((yyvsp[0])->opcode == Op_match_rec) {
+ (yyvsp[0])->opcode = Op_nomatch;
+ (yyvsp[-1])->opcode = Op_push_i;
+ (yyvsp[-1])->memory = make_number(0.0);
+ (yyval) = list_append(list_append(list_create((yyvsp[-1])),
+ instruction(Op_field_spec)), (yyvsp[0]));
} else {
- if (do_optimize > 1 && (yyvsp[(2) - (2)])->nexti == (yyvsp[(2) - (2)])->lasti
- && (yyvsp[(2) - (2)])->nexti->opcode == Op_push_i
- && ((yyvsp[(2) - (2)])->nexti->memory->flags & (MPFN|MPZN)) == 0
+ if (do_optimize && (yyvsp[0])->nexti == (yyvsp[0])->lasti
+ && (yyvsp[0])->nexti->opcode == Op_push_i
+ && ((yyvsp[0])->nexti->memory->flags & (MPFN|MPZN)) == 0
) {
- NODE *n = (yyvsp[(2) - (2)])->nexti->memory;
+ NODE *n = (yyvsp[0])->nexti->memory;
if ((n->flags & (STRCUR|STRING)) != 0) {
n->numbr = (AWKNUM) (n->stlen == 0);
n->flags &= ~(STRCUR|STRING);
@@ -3733,139 +3528,139 @@ regular_print:
n->stlen = 0;
} else
n->numbr = (AWKNUM) (n->numbr == 0.0);
- bcfree((yyvsp[(1) - (2)]));
- (yyval) = (yyvsp[(2) - (2)]);
+ bcfree((yyvsp[-1]));
+ (yyval) = (yyvsp[0]);
} else {
- (yyvsp[(1) - (2)])->opcode = Op_not;
- add_lint((yyvsp[(2) - (2)]), LINT_assign_in_cond);
- (yyval) = list_append((yyvsp[(2) - (2)]), (yyvsp[(1) - (2)]));
+ (yyvsp[-1])->opcode = Op_not;
+ add_lint((yyvsp[0]), LINT_assign_in_cond);
+ (yyval) = list_append((yyvsp[0]), (yyvsp[-1]));
}
}
}
+#line 3541 "awkgram.c" /* yacc.c:1646 */
break;
case 148:
-/* Line 1787 of yacc.c */
-#line 1522 "awkgram.y"
- { (yyval) = (yyvsp[(2) - (3)]); }
+#line 1522 "awkgram.y" /* yacc.c:1646 */
+ { (yyval) = (yyvsp[-1]); }
+#line 3547 "awkgram.c" /* yacc.c:1646 */
break;
case 149:
-/* Line 1787 of yacc.c */
-#line 1524 "awkgram.y"
+#line 1524 "awkgram.y" /* yacc.c:1646 */
{
- (yyval) = snode((yyvsp[(3) - (4)]), (yyvsp[(1) - (4)]));
+ (yyval) = snode((yyvsp[-1]), (yyvsp[-3]));
if ((yyval) == NULL)
YYABORT;
}
+#line 3557 "awkgram.c" /* yacc.c:1646 */
break;
case 150:
-/* Line 1787 of yacc.c */
-#line 1530 "awkgram.y"
+#line 1530 "awkgram.y" /* yacc.c:1646 */
{
- (yyval) = snode((yyvsp[(3) - (4)]), (yyvsp[(1) - (4)]));
+ (yyval) = snode((yyvsp[-1]), (yyvsp[-3]));
if ((yyval) == NULL)
YYABORT;
}
+#line 3567 "awkgram.c" /* yacc.c:1646 */
break;
case 151:
-/* Line 1787 of yacc.c */
-#line 1536 "awkgram.y"
+#line 1536 "awkgram.y" /* yacc.c:1646 */
{
static bool warned = false;
if (do_lint && ! warned) {
warned = true;
- lintwarn_ln((yyvsp[(1) - (1)])->source_line,
+ lintwarn_ln((yyvsp[0])->source_line,
_("call of `length' without parentheses is not portable"));
}
- (yyval) = snode(NULL, (yyvsp[(1) - (1)]));
+ (yyval) = snode(NULL, (yyvsp[0]));
if ((yyval) == NULL)
YYABORT;
}
+#line 3584 "awkgram.c" /* yacc.c:1646 */
break;
case 154:
-/* Line 1787 of yacc.c */
-#line 1551 "awkgram.y"
+#line 1551 "awkgram.y" /* yacc.c:1646 */
{
- (yyvsp[(1) - (2)])->opcode = Op_preincrement;
- (yyval) = mk_assignment((yyvsp[(2) - (2)]), NULL, (yyvsp[(1) - (2)]));
+ (yyvsp[-1])->opcode = Op_preincrement;
+ (yyval) = mk_assignment((yyvsp[0]), NULL, (yyvsp[-1]));
}
+#line 3593 "awkgram.c" /* yacc.c:1646 */
break;
case 155:
-/* Line 1787 of yacc.c */
-#line 1556 "awkgram.y"
+#line 1556 "awkgram.y" /* yacc.c:1646 */
{
- (yyvsp[(1) - (2)])->opcode = Op_predecrement;
- (yyval) = mk_assignment((yyvsp[(2) - (2)]), NULL, (yyvsp[(1) - (2)]));
+ (yyvsp[-1])->opcode = Op_predecrement;
+ (yyval) = mk_assignment((yyvsp[0]), NULL, (yyvsp[-1]));
}
+#line 3602 "awkgram.c" /* yacc.c:1646 */
break;
case 156:
-/* Line 1787 of yacc.c */
-#line 1561 "awkgram.y"
+#line 1561 "awkgram.y" /* yacc.c:1646 */
{
- (yyval) = list_create((yyvsp[(1) - (1)]));
+ (yyval) = list_create((yyvsp[0]));
}
+#line 3610 "awkgram.c" /* yacc.c:1646 */
break;
case 157:
-/* Line 1787 of yacc.c */
-#line 1565 "awkgram.y"
+#line 1565 "awkgram.y" /* yacc.c:1646 */
{
- (yyval) = list_create((yyvsp[(1) - (1)]));
+ (yyval) = list_create((yyvsp[0]));
}
+#line 3618 "awkgram.c" /* yacc.c:1646 */
break;
case 158:
-/* Line 1787 of yacc.c */
-#line 1569 "awkgram.y"
+#line 1569 "awkgram.y" /* yacc.c:1646 */
{
- if ((yyvsp[(2) - (2)])->lasti->opcode == Op_push_i
- && ((yyvsp[(2) - (2)])->lasti->memory->flags & (STRCUR|STRING)) == 0
+ if ((yyvsp[0])->lasti->opcode == Op_push_i
+ && ((yyvsp[0])->lasti->memory->flags & (STRCUR|STRING)) == 0
) {
- NODE *n = (yyvsp[(2) - (2)])->lasti->memory;
+ NODE *n = (yyvsp[0])->lasti->memory;
(void) force_number(n);
negate_num(n);
- (yyval) = (yyvsp[(2) - (2)]);
- bcfree((yyvsp[(1) - (2)]));
+ (yyval) = (yyvsp[0]);
+ bcfree((yyvsp[-1]));
} else {
- (yyvsp[(1) - (2)])->opcode = Op_unary_minus;
- (yyval) = list_append((yyvsp[(2) - (2)]), (yyvsp[(1) - (2)]));
+ (yyvsp[-1])->opcode = Op_unary_minus;
+ (yyval) = list_append((yyvsp[0]), (yyvsp[-1]));
}
}
+#line 3637 "awkgram.c" /* yacc.c:1646 */
break;
case 159:
-/* Line 1787 of yacc.c */
-#line 1584 "awkgram.y"
+#line 1584 "awkgram.y" /* yacc.c:1646 */
{
/*
* was: $$ = $2
* POSIX semantics: force a conversion to numeric type
*/
- (yyvsp[(1) - (2)])->opcode = Op_plus_i;
- (yyvsp[(1) - (2)])->memory = make_number(0.0);
- (yyval) = list_append((yyvsp[(2) - (2)]), (yyvsp[(1) - (2)]));
+ (yyvsp[-1])->opcode = Op_plus_i;
+ (yyvsp[-1])->memory = make_number(0.0);
+ (yyval) = list_append((yyvsp[0]), (yyvsp[-1]));
}
+#line 3651 "awkgram.c" /* yacc.c:1646 */
break;
case 160:
-/* Line 1787 of yacc.c */
-#line 1597 "awkgram.y"
+#line 1597 "awkgram.y" /* yacc.c:1646 */
{
- func_use((yyvsp[(1) - (1)])->lasti->func_name, FUNC_USE);
- (yyval) = (yyvsp[(1) - (1)]);
+ func_use((yyvsp[0])->lasti->func_name, FUNC_USE);
+ (yyval) = (yyvsp[0]);
}
+#line 3660 "awkgram.c" /* yacc.c:1646 */
break;
case 161:
-/* Line 1787 of yacc.c */
-#line 1602 "awkgram.y"
+#line 1602 "awkgram.y" /* yacc.c:1646 */
{
/* indirect function call */
INSTRUCTION *f, *t;
@@ -3881,7 +3676,7 @@ regular_print:
lintwarn("%s", msg);
}
- f = (yyvsp[(2) - (2)])->lasti;
+ f = (yyvsp[0])->lasti;
f->opcode = Op_indirect_func_call;
name = estrdup(f->func_name, strlen(f->func_name));
if (is_std_var(name))
@@ -3896,71 +3691,71 @@ regular_print:
* @f(f="real_fun")
*/
- (yyval) = list_prepend((yyvsp[(2) - (2)]), t);
+ (yyval) = list_prepend((yyvsp[0]), t);
}
+#line 3697 "awkgram.c" /* yacc.c:1646 */
break;
case 162:
-/* Line 1787 of yacc.c */
-#line 1638 "awkgram.y"
+#line 1638 "awkgram.y" /* yacc.c:1646 */
{
- param_sanity((yyvsp[(3) - (4)]));
- (yyvsp[(1) - (4)])->opcode = Op_func_call;
- (yyvsp[(1) - (4)])->func_body = NULL;
- if ((yyvsp[(3) - (4)]) == NULL) { /* no argument or error */
- ((yyvsp[(1) - (4)]) + 1)->expr_count = 0;
- (yyval) = list_create((yyvsp[(1) - (4)]));
+ param_sanity((yyvsp[-1]));
+ (yyvsp[-3])->opcode = Op_func_call;
+ (yyvsp[-3])->func_body = NULL;
+ if ((yyvsp[-1]) == NULL) { /* no argument or error */
+ ((yyvsp[-3]) + 1)->expr_count = 0;
+ (yyval) = list_create((yyvsp[-3]));
} else {
- INSTRUCTION *t = (yyvsp[(3) - (4)]);
- ((yyvsp[(1) - (4)]) + 1)->expr_count = count_expressions(&t, true);
- (yyval) = list_append(t, (yyvsp[(1) - (4)]));
+ INSTRUCTION *t = (yyvsp[-1]);
+ ((yyvsp[-3]) + 1)->expr_count = count_expressions(&t, true);
+ (yyval) = list_append(t, (yyvsp[-3]));
}
}
+#line 3715 "awkgram.c" /* yacc.c:1646 */
break;
case 163:
-/* Line 1787 of yacc.c */
-#line 1655 "awkgram.y"
+#line 1655 "awkgram.y" /* yacc.c:1646 */
{ (yyval) = NULL; }
+#line 3721 "awkgram.c" /* yacc.c:1646 */
break;
case 164:
-/* Line 1787 of yacc.c */
-#line 1657 "awkgram.y"
- { (yyval) = (yyvsp[(1) - (1)]); }
+#line 1657 "awkgram.y" /* yacc.c:1646 */
+ { (yyval) = (yyvsp[0]); }
+#line 3727 "awkgram.c" /* yacc.c:1646 */
break;
case 165:
-/* Line 1787 of yacc.c */
-#line 1662 "awkgram.y"
+#line 1662 "awkgram.y" /* yacc.c:1646 */
{ (yyval) = NULL; }
+#line 3733 "awkgram.c" /* yacc.c:1646 */
break;
case 166:
-/* Line 1787 of yacc.c */
-#line 1664 "awkgram.y"
- { (yyval) = (yyvsp[(1) - (2)]); }
+#line 1664 "awkgram.y" /* yacc.c:1646 */
+ { (yyval) = (yyvsp[-1]); }
+#line 3739 "awkgram.c" /* yacc.c:1646 */
break;
case 167:
-/* Line 1787 of yacc.c */
-#line 1669 "awkgram.y"
- { (yyval) = (yyvsp[(1) - (1)]); }
+#line 1669 "awkgram.y" /* yacc.c:1646 */
+ { (yyval) = (yyvsp[0]); }
+#line 3745 "awkgram.c" /* yacc.c:1646 */
break;
case 168:
-/* Line 1787 of yacc.c */
-#line 1671 "awkgram.y"
+#line 1671 "awkgram.y" /* yacc.c:1646 */
{
- (yyval) = list_merge((yyvsp[(1) - (2)]), (yyvsp[(2) - (2)]));
+ (yyval) = list_merge((yyvsp[-1]), (yyvsp[0]));
}
+#line 3753 "awkgram.c" /* yacc.c:1646 */
break;
case 169:
-/* Line 1787 of yacc.c */
-#line 1678 "awkgram.y"
+#line 1678 "awkgram.y" /* yacc.c:1646 */
{
- INSTRUCTION *ip = (yyvsp[(1) - (1)])->lasti;
+ INSTRUCTION *ip = (yyvsp[0])->lasti;
int count = ip->sub_count; /* # of SUBSEP-seperated expressions */
if (count > 1) {
/* change Op_subscript or Op_sub_array to Op_concat */
@@ -3970,152 +3765,152 @@ regular_print:
} else
ip->opcode = Op_no_op;
sub_counter++; /* count # of dimensions */
- (yyval) = (yyvsp[(1) - (1)]);
+ (yyval) = (yyvsp[0]);
}
+#line 3771 "awkgram.c" /* yacc.c:1646 */
break;
case 170:
-/* Line 1787 of yacc.c */
-#line 1695 "awkgram.y"
+#line 1695 "awkgram.y" /* yacc.c:1646 */
{
- INSTRUCTION *t = (yyvsp[(2) - (3)]);
- if ((yyvsp[(2) - (3)]) == NULL) {
- error_ln((yyvsp[(3) - (3)])->source_line,
+ INSTRUCTION *t = (yyvsp[-1]);
+ if ((yyvsp[-1]) == NULL) {
+ error_ln((yyvsp[0])->source_line,
_("invalid subscript expression"));
/* install Null string as subscript. */
t = list_create(instruction(Op_push_i));
t->nexti->memory = dupnode(Nnull_string);
- (yyvsp[(3) - (3)])->sub_count = 1;
+ (yyvsp[0])->sub_count = 1;
} else
- (yyvsp[(3) - (3)])->sub_count = count_expressions(&t, false);
- (yyval) = list_append(t, (yyvsp[(3) - (3)]));
+ (yyvsp[0])->sub_count = count_expressions(&t, false);
+ (yyval) = list_append(t, (yyvsp[0]));
}
+#line 3789 "awkgram.c" /* yacc.c:1646 */
break;
case 171:
-/* Line 1787 of yacc.c */
-#line 1712 "awkgram.y"
- { (yyval) = (yyvsp[(1) - (1)]); }
+#line 1712 "awkgram.y" /* yacc.c:1646 */
+ { (yyval) = (yyvsp[0]); }
+#line 3795 "awkgram.c" /* yacc.c:1646 */
break;
case 172:
-/* Line 1787 of yacc.c */
-#line 1714 "awkgram.y"
+#line 1714 "awkgram.y" /* yacc.c:1646 */
{
- (yyval) = list_merge((yyvsp[(1) - (2)]), (yyvsp[(2) - (2)]));
+ (yyval) = list_merge((yyvsp[-1]), (yyvsp[0]));
}
+#line 3803 "awkgram.c" /* yacc.c:1646 */
break;
case 173:
-/* Line 1787 of yacc.c */
-#line 1721 "awkgram.y"
- { (yyval) = (yyvsp[(1) - (2)]); }
+#line 1721 "awkgram.y" /* yacc.c:1646 */
+ { (yyval) = (yyvsp[-1]); }
+#line 3809 "awkgram.c" /* yacc.c:1646 */
break;
case 174:
-/* Line 1787 of yacc.c */
-#line 1726 "awkgram.y"
+#line 1726 "awkgram.y" /* yacc.c:1646 */
{
- char *var_name = (yyvsp[(1) - (1)])->lextok;
+ char *var_name = (yyvsp[0])->lextok;
- (yyvsp[(1) - (1)])->opcode = Op_push;
- (yyvsp[(1) - (1)])->memory = variable((yyvsp[(1) - (1)])->source_line, var_name, Node_var_new);
- (yyval) = list_create((yyvsp[(1) - (1)]));
+ (yyvsp[0])->opcode = Op_push;
+ (yyvsp[0])->memory = variable((yyvsp[0])->source_line, var_name, Node_var_new);
+ (yyval) = list_create((yyvsp[0]));
}
+#line 3821 "awkgram.c" /* yacc.c:1646 */
break;
case 175:
-/* Line 1787 of yacc.c */
-#line 1734 "awkgram.y"
+#line 1734 "awkgram.y" /* yacc.c:1646 */
{
- char *arr = (yyvsp[(1) - (2)])->lextok;
- (yyvsp[(1) - (2)])->memory = variable((yyvsp[(1) - (2)])->source_line, arr, Node_var_new);
- (yyvsp[(1) - (2)])->opcode = Op_push_array;
- (yyval) = list_prepend((yyvsp[(2) - (2)]), (yyvsp[(1) - (2)]));
+ char *arr = (yyvsp[-1])->lextok;
+ (yyvsp[-1])->memory = variable((yyvsp[-1])->source_line, arr, Node_var_new);
+ (yyvsp[-1])->opcode = Op_push_array;
+ (yyval) = list_prepend((yyvsp[0]), (yyvsp[-1]));
}
+#line 3832 "awkgram.c" /* yacc.c:1646 */
break;
case 176:
-/* Line 1787 of yacc.c */
-#line 1744 "awkgram.y"
+#line 1744 "awkgram.y" /* yacc.c:1646 */
{
- INSTRUCTION *ip = (yyvsp[(1) - (1)])->nexti;
+ INSTRUCTION *ip = (yyvsp[0])->nexti;
if (ip->opcode == Op_push
&& ip->memory->type == Node_var
&& ip->memory->var_update
) {
- (yyval) = list_prepend((yyvsp[(1) - (1)]), instruction(Op_var_update));
+ (yyval) = list_prepend((yyvsp[0]), instruction(Op_var_update));
(yyval)->nexti->update_var = ip->memory->var_update;
} else
- (yyval) = (yyvsp[(1) - (1)]);
+ (yyval) = (yyvsp[0]);
}
+#line 3848 "awkgram.c" /* yacc.c:1646 */
break;
case 177:
-/* Line 1787 of yacc.c */
-#line 1756 "awkgram.y"
+#line 1756 "awkgram.y" /* yacc.c:1646 */
{
- (yyval) = list_append((yyvsp[(2) - (3)]), (yyvsp[(1) - (3)]));
- if ((yyvsp[(3) - (3)]) != NULL)
- mk_assignment((yyvsp[(2) - (3)]), NULL, (yyvsp[(3) - (3)]));
+ (yyval) = list_append((yyvsp[-1]), (yyvsp[-2]));
+ if ((yyvsp[0]) != NULL)
+ mk_assignment((yyvsp[-1]), NULL, (yyvsp[0]));
}
+#line 3858 "awkgram.c" /* yacc.c:1646 */
break;
case 178:
-/* Line 1787 of yacc.c */
-#line 1765 "awkgram.y"
+#line 1765 "awkgram.y" /* yacc.c:1646 */
{
- (yyvsp[(1) - (1)])->opcode = Op_postincrement;
+ (yyvsp[0])->opcode = Op_postincrement;
}
+#line 3866 "awkgram.c" /* yacc.c:1646 */
break;
case 179:
-/* Line 1787 of yacc.c */
-#line 1769 "awkgram.y"
+#line 1769 "awkgram.y" /* yacc.c:1646 */
{
- (yyvsp[(1) - (1)])->opcode = Op_postdecrement;
+ (yyvsp[0])->opcode = Op_postdecrement;
}
+#line 3874 "awkgram.c" /* yacc.c:1646 */
break;
case 180:
-/* Line 1787 of yacc.c */
-#line 1772 "awkgram.y"
+#line 1772 "awkgram.y" /* yacc.c:1646 */
{ (yyval) = NULL; }
+#line 3880 "awkgram.c" /* yacc.c:1646 */
break;
case 182:
-/* Line 1787 of yacc.c */
-#line 1780 "awkgram.y"
+#line 1780 "awkgram.y" /* yacc.c:1646 */
{ yyerrok; }
+#line 3886 "awkgram.c" /* yacc.c:1646 */
break;
case 183:
-/* Line 1787 of yacc.c */
-#line 1784 "awkgram.y"
+#line 1784 "awkgram.y" /* yacc.c:1646 */
{ yyerrok; }
+#line 3892 "awkgram.c" /* yacc.c:1646 */
break;
case 186:
-/* Line 1787 of yacc.c */
-#line 1793 "awkgram.y"
+#line 1793 "awkgram.y" /* yacc.c:1646 */
{ yyerrok; }
+#line 3898 "awkgram.c" /* yacc.c:1646 */
break;
case 187:
-/* Line 1787 of yacc.c */
-#line 1797 "awkgram.y"
- { (yyval) = (yyvsp[(1) - (1)]); yyerrok; }
+#line 1797 "awkgram.y" /* yacc.c:1646 */
+ { (yyval) = (yyvsp[0]); yyerrok; }
+#line 3904 "awkgram.c" /* yacc.c:1646 */
break;
case 188:
-/* Line 1787 of yacc.c */
-#line 1801 "awkgram.y"
+#line 1801 "awkgram.y" /* yacc.c:1646 */
{ yyerrok; }
+#line 3910 "awkgram.c" /* yacc.c:1646 */
break;
-/* Line 1787 of yacc.c */
-#line 4119 "awkgram.c"
+#line 3914 "awkgram.c" /* yacc.c:1646 */
default: break;
}
/* User semantic actions sometimes alter yychar, and that requires
@@ -4137,7 +3932,7 @@ regular_print:
*++yyvsp = yyval;
- /* Now `shift' the result of the reduction. Determine what state
+ /* Now 'shift' the result of the reduction. Determine what state
that goes to, based on the state we popped back to and the rule
number reduced by. */
@@ -4152,9 +3947,9 @@ regular_print:
goto yynewstate;
-/*------------------------------------.
-| yyerrlab -- here on detecting error |
-`------------------------------------*/
+/*--------------------------------------.
+| yyerrlab -- here on detecting error. |
+`--------------------------------------*/
yyerrlab:
/* Make sure we have latest lookahead translation. See comments at
user semantic actions for why this is necessary. */
@@ -4205,20 +4000,20 @@ yyerrlab:
if (yyerrstatus == 3)
{
/* If just tried and failed to reuse lookahead token after an
- error, discard it. */
+ error, discard it. */
if (yychar <= YYEOF)
- {
- /* Return failure if at end of input. */
- if (yychar == YYEOF)
- YYABORT;
- }
+ {
+ /* Return failure if at end of input. */
+ if (yychar == YYEOF)
+ YYABORT;
+ }
else
- {
- yydestruct ("Error: discarding",
- yytoken, &yylval);
- yychar = YYEMPTY;
- }
+ {
+ yydestruct ("Error: discarding",
+ yytoken, &yylval);
+ yychar = YYEMPTY;
+ }
}
/* Else will try to reuse lookahead token after shifting the error
@@ -4237,7 +4032,7 @@ yyerrorlab:
if (/*CONSTCOND*/ 0)
goto yyerrorlab;
- /* Do not reclaim the symbols of the rule which action triggered
+ /* Do not reclaim the symbols of the rule whose action triggered
this YYERROR. */
YYPOPSTACK (yylen);
yylen = 0;
@@ -4250,29 +4045,29 @@ yyerrorlab:
| yyerrlab1 -- common code for both syntax error and YYERROR. |
`-------------------------------------------------------------*/
yyerrlab1:
- yyerrstatus = 3; /* Each real token shifted decrements this. */
+ yyerrstatus = 3; /* Each real token shifted decrements this. */
for (;;)
{
yyn = yypact[yystate];
if (!yypact_value_is_default (yyn))
- {
- yyn += YYTERROR;
- if (0 <= yyn && yyn <= YYLAST && yycheck[yyn] == YYTERROR)
- {
- yyn = yytable[yyn];
- if (0 < yyn)
- break;
- }
- }
+ {
+ yyn += YYTERROR;
+ if (0 <= yyn && yyn <= YYLAST && yycheck[yyn] == YYTERROR)
+ {
+ yyn = yytable[yyn];
+ if (0 < yyn)
+ break;
+ }
+ }
/* Pop the current state because it cannot handle the error token. */
if (yyssp == yyss)
- YYABORT;
+ YYABORT;
yydestruct ("Error: popping",
- yystos[yystate], yyvsp);
+ yystos[yystate], yyvsp);
YYPOPSTACK (1);
yystate = *yyssp;
YY_STACK_PRINT (yyss, yyssp);
@@ -4323,14 +4118,14 @@ yyreturn:
yydestruct ("Cleanup: discarding lookahead",
yytoken, &yylval);
}
- /* Do not reclaim the symbols of the rule which action triggered
+ /* Do not reclaim the symbols of the rule whose action triggered
this YYABORT or YYACCEPT. */
YYPOPSTACK (yylen);
YY_STACK_PRINT (yyss, yyssp);
while (yyssp != yyss)
{
yydestruct ("Cleanup: popping",
- yystos[*yyssp], yyvsp);
+ yystos[*yyssp], yyvsp);
YYPOPSTACK (1);
}
#ifndef yyoverflow
@@ -4341,13 +4136,9 @@ yyreturn:
if (yymsg != yymsgbuf)
YYSTACK_FREE (yymsg);
#endif
- /* Make sure YYID is used. */
- return YYID (yyresult);
+ return yyresult;
}
-
-
-/* Line 2050 of yacc.c */
-#line 1803 "awkgram.y"
+#line 1803 "awkgram.y" /* yacc.c:1906 */
struct token {
@@ -4514,15 +4305,39 @@ void
negate_num(NODE *n)
{
#ifdef HAVE_MPFR
- if (is_mpg_float(n)) {
- int tval;
- tval = mpfr_neg(n->mpg_numbr, n->mpg_numbr, ROUND_MODE);
- IEEE_FMT(n->mpg_numbr, tval);
- } else if (is_mpg_integer(n)) {
- mpz_neg(n->mpg_i, n->mpg_i);
- } else
+ int tval = 0;
#endif
+
+ if (! is_mpg_number(n)) {
n->numbr = -n->numbr;
+ return;
+ }
+
+#ifdef HAVE_MPFR
+ if (is_mpg_integer(n)) {
+ if (! iszero(n)) {
+ mpz_neg(n->mpg_i, n->mpg_i);
+ return;
+ }
+
+ /*
+ * 0 --> -0 conversion. Requires turning the MPG integer
+ * into an MPFR float.
+ */
+
+ mpz_clear(n->mpg_i); /* release the integer storage */
+
+ /* Convert and fall through. */
+ tval = mpfr_set_d(n->mpg_numbr, 0.0, ROUND_MODE);
+ IEEE_FMT(n->mpg_numbr, tval);
+ n->flags &= ~MPZN;
+ n->flags |= MPFN;
+ }
+
+ /* mpfr float case */
+ tval = mpfr_neg(n->mpg_numbr, n->mpg_numbr, ROUND_MODE);
+ IEEE_FMT(n->mpg_numbr, tval);
+#endif
}
/* print_included_from --- print `Included from ..' file names and locations */
@@ -4861,7 +4676,7 @@ parse_program(INSTRUCTION **pcode)
/* do_add_srcfile --- add one item to srcfiles */
static SRCFILE *
-do_add_srcfile(int stype, char *src, char *path, SRCFILE *thisfile)
+do_add_srcfile(enum srctype stype, char *src, char *path, SRCFILE *thisfile)
{
SRCFILE *s;
@@ -4883,7 +4698,7 @@ do_add_srcfile(int stype, char *src, char *path, SRCFILE *thisfile)
*/
SRCFILE *
-add_srcfile(int stype, char *src, SRCFILE *thisfile, bool *already_included, int *errcode)
+add_srcfile(enum srctype stype, char *src, SRCFILE *thisfile, bool *already_included, int *errcode)
{
SRCFILE *s;
struct stat sbuf;
@@ -6706,7 +6521,7 @@ mk_function(INSTRUCTION *fi, INSTRUCTION *def)
thisfunc = fi->func_body;
assert(thisfunc != NULL);
- if (do_optimize > 1 && def->lasti->opcode == Op_pop) {
+ if (do_optimize && def->lasti->opcode == Op_pop) {
/* tail call which does not return any value. */
INSTRUCTION *t;
@@ -6857,18 +6672,9 @@ func_use(const char *name, enum defref how)
len = strlen(name);
ind = hash(name, len, HASHSIZE, NULL);
- for (fp = ftable[ind]; fp != NULL; fp = fp->next) {
- if (strcmp(fp->name, name) == 0) {
- if (how == FUNC_DEFINE)
- fp->defined++;
- else if (how == FUNC_EXT) {
- fp->defined++;
- fp->extension++;
- } else
- fp->used++;
- return;
- }
- }
+ for (fp = ftable[ind]; fp != NULL; fp = fp->next)
+ if (strcmp(fp->name, name) == 0)
+ goto update_value;
/* not in the table, fall through to allocate a new one */
@@ -6876,6 +6682,10 @@ func_use(const char *name, enum defref how)
memset(fp, '\0', sizeof(struct fdesc));
emalloc(fp->name, char *, len + 1, "func_use");
strcpy(fp->name, name);
+ fp->next = ftable[ind];
+ ftable[ind] = fp;
+
+update_value:
if (how == FUNC_DEFINE)
fp->defined++;
else if (how == FUNC_EXT) {
@@ -6883,8 +6693,6 @@ func_use(const char *name, enum defref how)
fp->extension++;
} else
fp->used++;
- fp->next = ftable[ind];
- ftable[ind] = fp;
}
/* track_ext_func --- add an extension function to the table */
@@ -7234,7 +7042,7 @@ mk_binary(INSTRUCTION *s1, INSTRUCTION *s2, INSTRUCTION *op)
if (s2->lasti == ip2 && ip2->opcode == Op_push_i) {
/* do any numeric constant folding */
ip1 = s1->nexti;
- if (do_optimize > 1
+ if (do_optimize
&& ip1 == s1->lasti && ip1->opcode == Op_push_i
&& (ip1->memory->flags & (MPFN|MPZN|STRCUR|STRING)) == 0
&& (ip2->memory->flags & (MPFN|MPZN|STRCUR|STRING)) == 0
@@ -7577,8 +7385,13 @@ mk_assignment(INSTRUCTION *lhs, INSTRUCTION *rhs, INSTRUCTION *op)
case Op_push_array:
tp->opcode = Op_push_lhs;
break;
+ case Op_field_assign:
+ yyerror(_("cannot assign a value to the result of a field post-increment expression"));
+ break;
default:
- cant_happen();
+ yyerror(_("invalid target of assignment (opcode %s)"),
+ opcode2str(tp->opcode));
+ break;
}
tp->do_reference = (op->opcode != Op_assign); /* check for uninitialized reference */
@@ -7648,10 +7461,8 @@ optimize_assignment(INSTRUCTION *exp)
i2 = NULL;
i1 = exp->lasti;
- if ( ! do_optimize
- || ( i1->opcode != Op_assign
- && i1->opcode != Op_field_assign)
- )
+ if ( i1->opcode != Op_assign
+ && i1->opcode != Op_field_assign)
return list_append(exp, instruction(Op_pop));
for (i2 = exp->nexti; i2 != i1; i2 = i2->nexti) {
diff --git a/awkgram.y b/awkgram.y
index ab813543..14121f55 100644
--- a/awkgram.y
+++ b/awkgram.y
@@ -3,7 +3,7 @@
*/
/*
- * Copyright (C) 1986, 1988, 1989, 1991-2013 the Free Software Foundation, Inc.
+ * Copyright (C) 1986, 1988, 1989, 1991-2014 the Free Software Foundation, Inc.
*
* This file is part of GAWK, the GNU implementation of the
* AWK Programming Language.
@@ -853,7 +853,7 @@ non_compound_stmt
(void) list_prepend($$, instruction(Op_push_i));
$$->nexti->memory = dupnode(Nnull_string);
} else {
- if (do_optimize > 1
+ if (do_optimize
&& $3->lasti->opcode == Op_func_call
&& strcmp($3->lasti->func_name, in_function) == 0
) {
@@ -1357,7 +1357,7 @@ common_exp
*/
}
- if (do_optimize > 1
+ if (do_optimize
&& $1->nexti == $1->lasti && $1->nexti->opcode == Op_push_i
&& $2->nexti == $2->lasti && $2->nexti->opcode == Op_push_i
) {
@@ -1495,7 +1495,7 @@ non_post_simp_exp
$$ = list_append(list_append(list_create($1),
instruction(Op_field_spec)), $2);
} else {
- if (do_optimize > 1 && $2->nexti == $2->lasti
+ if (do_optimize && $2->nexti == $2->lasti
&& $2->nexti->opcode == Op_push_i
&& ($2->nexti->memory->flags & (MPFN|MPZN)) == 0
) {
@@ -1966,15 +1966,39 @@ void
negate_num(NODE *n)
{
#ifdef HAVE_MPFR
- if (is_mpg_float(n)) {
- int tval;
- tval = mpfr_neg(n->mpg_numbr, n->mpg_numbr, ROUND_MODE);
- IEEE_FMT(n->mpg_numbr, tval);
- } else if (is_mpg_integer(n)) {
- mpz_neg(n->mpg_i, n->mpg_i);
- } else
+ int tval = 0;
#endif
+
+ if (! is_mpg_number(n)) {
n->numbr = -n->numbr;
+ return;
+ }
+
+#ifdef HAVE_MPFR
+ if (is_mpg_integer(n)) {
+ if (! iszero(n)) {
+ mpz_neg(n->mpg_i, n->mpg_i);
+ return;
+ }
+
+ /*
+ * 0 --> -0 conversion. Requires turning the MPG integer
+ * into an MPFR float.
+ */
+
+ mpz_clear(n->mpg_i); /* release the integer storage */
+
+ /* Convert and fall through. */
+ tval = mpfr_set_d(n->mpg_numbr, 0.0, ROUND_MODE);
+ IEEE_FMT(n->mpg_numbr, tval);
+ n->flags &= ~MPZN;
+ n->flags |= MPFN;
+ }
+
+ /* mpfr float case */
+ tval = mpfr_neg(n->mpg_numbr, n->mpg_numbr, ROUND_MODE);
+ IEEE_FMT(n->mpg_numbr, tval);
+#endif
}
/* print_included_from --- print `Included from ..' file names and locations */
@@ -2313,7 +2337,7 @@ parse_program(INSTRUCTION **pcode)
/* do_add_srcfile --- add one item to srcfiles */
static SRCFILE *
-do_add_srcfile(int stype, char *src, char *path, SRCFILE *thisfile)
+do_add_srcfile(enum srctype stype, char *src, char *path, SRCFILE *thisfile)
{
SRCFILE *s;
@@ -2335,7 +2359,7 @@ do_add_srcfile(int stype, char *src, char *path, SRCFILE *thisfile)
*/
SRCFILE *
-add_srcfile(int stype, char *src, SRCFILE *thisfile, bool *already_included, int *errcode)
+add_srcfile(enum srctype stype, char *src, SRCFILE *thisfile, bool *already_included, int *errcode)
{
SRCFILE *s;
struct stat sbuf;
@@ -4158,7 +4182,7 @@ mk_function(INSTRUCTION *fi, INSTRUCTION *def)
thisfunc = fi->func_body;
assert(thisfunc != NULL);
- if (do_optimize > 1 && def->lasti->opcode == Op_pop) {
+ if (do_optimize && def->lasti->opcode == Op_pop) {
/* tail call which does not return any value. */
INSTRUCTION *t;
@@ -4309,18 +4333,9 @@ func_use(const char *name, enum defref how)
len = strlen(name);
ind = hash(name, len, HASHSIZE, NULL);
- for (fp = ftable[ind]; fp != NULL; fp = fp->next) {
- if (strcmp(fp->name, name) == 0) {
- if (how == FUNC_DEFINE)
- fp->defined++;
- else if (how == FUNC_EXT) {
- fp->defined++;
- fp->extension++;
- } else
- fp->used++;
- return;
- }
- }
+ for (fp = ftable[ind]; fp != NULL; fp = fp->next)
+ if (strcmp(fp->name, name) == 0)
+ goto update_value;
/* not in the table, fall through to allocate a new one */
@@ -4328,6 +4343,10 @@ func_use(const char *name, enum defref how)
memset(fp, '\0', sizeof(struct fdesc));
emalloc(fp->name, char *, len + 1, "func_use");
strcpy(fp->name, name);
+ fp->next = ftable[ind];
+ ftable[ind] = fp;
+
+update_value:
if (how == FUNC_DEFINE)
fp->defined++;
else if (how == FUNC_EXT) {
@@ -4335,8 +4354,6 @@ func_use(const char *name, enum defref how)
fp->extension++;
} else
fp->used++;
- fp->next = ftable[ind];
- ftable[ind] = fp;
}
/* track_ext_func --- add an extension function to the table */
@@ -4686,7 +4703,7 @@ mk_binary(INSTRUCTION *s1, INSTRUCTION *s2, INSTRUCTION *op)
if (s2->lasti == ip2 && ip2->opcode == Op_push_i) {
/* do any numeric constant folding */
ip1 = s1->nexti;
- if (do_optimize > 1
+ if (do_optimize
&& ip1 == s1->lasti && ip1->opcode == Op_push_i
&& (ip1->memory->flags & (MPFN|MPZN|STRCUR|STRING)) == 0
&& (ip2->memory->flags & (MPFN|MPZN|STRCUR|STRING)) == 0
@@ -5029,8 +5046,13 @@ mk_assignment(INSTRUCTION *lhs, INSTRUCTION *rhs, INSTRUCTION *op)
case Op_push_array:
tp->opcode = Op_push_lhs;
break;
+ case Op_field_assign:
+ yyerror(_("cannot assign a value to the result of a field post-increment expression"));
+ break;
default:
- cant_happen();
+ yyerror(_("invalid target of assignment (opcode %s)"),
+ opcode2str(tp->opcode));
+ break;
}
tp->do_reference = (op->opcode != Op_assign); /* check for uninitialized reference */
@@ -5100,10 +5122,8 @@ optimize_assignment(INSTRUCTION *exp)
i2 = NULL;
i1 = exp->lasti;
- if ( ! do_optimize
- || ( i1->opcode != Op_assign
- && i1->opcode != Op_field_assign)
- )
+ if ( i1->opcode != Op_assign
+ && i1->opcode != Op_field_assign)
return list_append(exp, instruction(Op_pop));
for (i2 = exp->nexti; i2 != i1; i2 = i2->nexti) {
diff --git a/awklib/ChangeLog b/awklib/ChangeLog
index e47d37b2..6ef0bbde 100644
--- a/awklib/ChangeLog
+++ b/awklib/ChangeLog
@@ -1,3 +1,12 @@
+2014-04-08 Arnold D. Robbins <arnold@skeeve.com>
+
+ * 4.1.1: Release tar ball made.
+
+2014-03-17 Arnold D. Robbins <arnold@skeeve.com>
+
+ * Makefile.am (clean-local): Clean up .dSYM directories for Mac OS X.
+ Thanks to Hermann Piefer for the suggestion.
+
2013-05-09 Arnold D. Robbins <arnold@skeeve.com>
* 4.1.0: Release tar ball made.
diff --git a/awklib/Makefile.am b/awklib/Makefile.am
index b10fa644..6ffbea81 100644
--- a/awklib/Makefile.am
+++ b/awklib/Makefile.am
@@ -62,6 +62,7 @@ uninstall-local:
clean-local:
rm -f $(AUXAWK) igawk *.exe
rm -fr eg.old
+ rm -fr grcat.dSYM pwcat.dSYM
$(srcdir)/stamp-eg: $(srcdir)/../doc/gawk.texi $(srcdir)/../doc/gawkinet.texi
cd $(srcdir) && \
diff --git a/awklib/Makefile.in b/awklib/Makefile.in
index 068a9057..d32ae04a 100644
--- a/awklib/Makefile.in
+++ b/awklib/Makefile.in
@@ -1,7 +1,7 @@
-# Makefile.in generated by automake 1.13.1 from Makefile.am.
+# Makefile.in generated by automake 1.13.4 from Makefile.am.
# @configure_input@
-# Copyright (C) 1994-2012 Free Software Foundation, Inc.
+# Copyright (C) 1994-2013 Free Software Foundation, Inc.
# This Makefile.in is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
@@ -39,23 +39,51 @@
VPATH = @srcdir@
-am__make_dryrun = \
- { \
- am__dry=no; \
+am__is_gnu_make = test -n '$(MAKEFILE_LIST)' && test -n '$(MAKELEVEL)'
+am__make_running_with_option = \
+ case $${target_option-} in \
+ ?) ;; \
+ *) echo "am__make_running_with_option: internal error: invalid" \
+ "target option '$${target_option-}' specified" >&2; \
+ exit 1;; \
+ esac; \
+ has_opt=no; \
+ sane_makeflags=$$MAKEFLAGS; \
+ if $(am__is_gnu_make); then \
+ sane_makeflags=$$MFLAGS; \
+ else \
case $$MAKEFLAGS in \
*\\[\ \ ]*) \
- echo 'am--echo: ; @echo "AM" OK' | $(MAKE) -f - 2>/dev/null \
- | grep '^AM OK$$' >/dev/null || am__dry=yes;; \
- *) \
- for am__flg in $$MAKEFLAGS; do \
- case $$am__flg in \
- *=*|--*) ;; \
- *n*) am__dry=yes; break;; \
- esac; \
- done;; \
+ bs=\\; \
+ sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \
+ | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \
esac; \
- test $$am__dry = yes; \
- }
+ fi; \
+ skip_next=no; \
+ strip_trailopt () \
+ { \
+ flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \
+ }; \
+ for flg in $$sane_makeflags; do \
+ test $$skip_next = yes && { skip_next=no; continue; }; \
+ case $$flg in \
+ *=*|--*) continue;; \
+ -*I) strip_trailopt 'I'; skip_next=yes;; \
+ -*I?*) strip_trailopt 'I';; \
+ -*O) strip_trailopt 'O'; skip_next=yes;; \
+ -*O?*) strip_trailopt 'O';; \
+ -*l) strip_trailopt 'l'; skip_next=yes;; \
+ -*l?*) strip_trailopt 'l';; \
+ -[dEDm]) skip_next=yes;; \
+ -[JT]) skip_next=yes;; \
+ esac; \
+ case $$flg in \
+ *$$target_option*) has_opt=yes; break;; \
+ esac; \
+ done; \
+ test $$has_opt = yes
+am__make_dryrun = (target_option=n; $(am__make_running_with_option))
+am__make_keepgoing = (target_option=k; $(am__make_running_with_option))
pkgincludedir = $(includedir)/@PACKAGE@
pkglibdir = $(libdir)/@PACKAGE@
am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
@@ -687,6 +715,7 @@ uninstall-local:
clean-local:
rm -f $(AUXAWK) igawk *.exe
rm -fr eg.old
+ rm -fr grcat.dSYM pwcat.dSYM
$(srcdir)/stamp-eg: $(srcdir)/../doc/gawk.texi $(srcdir)/../doc/gawkinet.texi
cd $(srcdir) && \
diff --git a/awklib/eg/data/BBS-list b/awklib/eg/data/BBS-list
deleted file mode 100644
index 1007417f..00000000
--- a/awklib/eg/data/BBS-list
+++ /dev/null
@@ -1,11 +0,0 @@
-aardvark 555-5553 1200/300 B
-alpo-net 555-3412 2400/1200/300 A
-barfly 555-7685 1200/300 A
-bites 555-1675 2400/1200/300 A
-camelot 555-0542 300 C
-core 555-2912 1200/300 C
-fooey 555-1234 2400/1200/300 B
-foot 555-6699 1200/300 B
-macfoo 555-6480 1200/300 A
-sdace 555-3430 2400/1200/300 A
-sabafoo 555-2127 1200/300 C
diff --git a/awklib/eg/data/mail-list b/awklib/eg/data/mail-list
new file mode 100644
index 00000000..37ff350a
--- /dev/null
+++ b/awklib/eg/data/mail-list
@@ -0,0 +1,11 @@
+Amelia 555-5553 amelia.zodiacusque@gmail.com F
+Anthony 555-3412 anthony.asserturo@hotmail.com A
+Becky 555-7685 becky.algebrarum@gmail.com A
+Bill 555-1675 bill.drowning@hotmail.com A
+Broderick 555-0542 broderick.aliquotiens@yahoo.com R
+Camilla 555-2912 camilla.infusarum@skynet.be R
+Fabius 555-1234 fabius.undevicesimus@ucb.edu F
+Julie 555-6699 julie.perscrutabor@skeeve.com F
+Martin 555-6480 martin.codicibus@hotmail.com A
+Samuel 555-3430 samuel.lanceolis@shu.edu A
+Jean-Paul 555-2127 jeanpaul.campanorum@nyu.edu R
diff --git a/awklib/eg/lib/getopt.awk b/awklib/eg/lib/getopt.awk
index 0b81aa09..4283a7e1 100644
--- a/awklib/eg/lib/getopt.awk
+++ b/awklib/eg/lib/getopt.awk
@@ -17,7 +17,7 @@
# <c> a character representing the current option
# Private Data:
-# _opti -- index in multi-flag option, e.g., -abc
+# _opti -- index in multiflag option, e.g., -abc
function getopt(argc, argv, options, thisopt, i)
{
if (length(options) == 0) # no options given
diff --git a/awklib/eg/lib/quicksort.awk b/awklib/eg/lib/quicksort.awk
index 7a635d6f..43357ac6 100644
--- a/awklib/eg/lib/quicksort.awk
+++ b/awklib/eg/lib/quicksort.awk
@@ -1,8 +1,9 @@
# quicksort.awk --- Quicksort algorithm, with user-supplied
# comparison function
#
-# Arnold Robbins, arnoldskeeve.com, Public Domain
+# Arnold Robbins, arnold@skeeve.com, Public Domain
# January 2009
+
# quicksort --- C.A.R. Hoare's quick sort algorithm. See Wikipedia
# or almost any algorithms or computer science text
#
diff --git a/awklib/eg/lib/readfile.awk b/awklib/eg/lib/readfile.awk
new file mode 100644
index 00000000..9137b26d
--- /dev/null
+++ b/awklib/eg/lib/readfile.awk
@@ -0,0 +1,15 @@
+# readfile.awk --- read an entire file at once
+#
+# Original idea by Denis Shirokov, cosmogen@gmail.com, April 2013
+#
+
+function readfile(file, tmp, save_rs)
+{
+ save_rs = RS
+ RS = "^$"
+ getline tmp < file
+ close(file)
+ RS = save_rs
+
+ return tmp
+}
diff --git a/awklib/eg/prog/cut.awk b/awklib/eg/prog/cut.awk
index 16b4bdaa..1399411e 100644
--- a/awklib/eg/prog/cut.awk
+++ b/awklib/eg/prog/cut.awk
@@ -86,7 +86,7 @@ function set_fieldlist( n, m, i, j, k, f, g)
}
nfields = j - 1
}
-function set_charlist( field, i, j, f, g, t,
+function set_charlist( field, i, j, f, g, n, m, t,
filler, last, len)
{
field = 1 # count total fields
diff --git a/bootstrap.sh b/bootstrap.sh
index 496d8a03..85cdd196 100755
--- a/bootstrap.sh
+++ b/bootstrap.sh
@@ -3,7 +3,7 @@
# bootstrap.sh --- touch relevant files to avoid out-of-date issues in
# Git sandboxes
-# Copyright (C) 2007, 2009-2013 the Free Software Foundation, Inc.
+# Copyright (C) 2007, 2009-2014 the Free Software Foundation, Inc.
#
# This file is part of GAWK, the GNU implementation of the
# AWK Programming Language.
@@ -41,4 +41,3 @@ touch po/*.gmo
touch po/stamp-po
touch awkgram.c
touch command.c
-touch version.c
diff --git a/builtin.c b/builtin.c
index b8e24cb3..875b3e5c 100644
--- a/builtin.c
+++ b/builtin.c
@@ -3,7 +3,7 @@
*/
/*
- * Copyright (C) 1986, 1988, 1989, 1991-2013 the Free Software Foundation, Inc.
+ * Copyright (C) 1986, 1988, 1989, 1991-2014 the Free Software Foundation, Inc.
*
* This file is part of GAWK, the GNU implementation of the
* AWK Programming Language.
@@ -125,6 +125,11 @@ efwrite(const void *ptr,
return;
wrerror:
+ /* die silently on EPIPE to stdout */
+ if (fp == stdout && errno == EPIPE)
+ gawk_exit(EXIT_FATAL);
+
+ /* otherwise die verbosely */
fatal(_("%s to \"%s\" failed (%s)"), from,
rp ? rp->value : _("standard output"),
errno ? strerror(errno) : _("reason unknown"));
@@ -464,9 +469,9 @@ double
double_to_int(double d)
{
if (d >= 0)
- d = Floor(d);
+ d = floor(d);
else
- d = Ceil(d);
+ d = ceil(d);
return d;
}
@@ -714,7 +719,7 @@ format_tree(
mpz_ptr zi;
mpfr_ptr mf;
#endif
- enum { MP_INT_WITH_PREC = 1, MP_INT_WITHOUT_PREC, MP_FLOAT } fmt_type;
+ enum { MP_NONE = 0, MP_INT_WITH_PREC = 1, MP_INT_WITHOUT_PREC, MP_FLOAT } fmt_type;
static const char sp[] = " ";
static const char zero_string[] = "0";
@@ -812,7 +817,7 @@ format_tree(
mf = NULL;
zi = NULL;
#endif
- fmt_type = 0;
+ fmt_type = MP_NONE;
lj = alt = big_flag = bigbig_flag = small_flag = false;
fill = sp;
@@ -989,9 +994,7 @@ check_pos:
goto check_pos;
case '\'':
#if defined(HAVE_LOCALE_H)
- /* allow quote_flag if there is a thousands separator. */
- if (loc.thousands_sep[0] != '\0')
- quote_flag = true;
+ quote_flag = true;
goto check_pos;
#else
goto retry;
@@ -1191,6 +1194,9 @@ out0:
}
if (i < 1)
goto out_of_range;
+#if defined(HAVE_LOCALE_H)
+ quote_flag = (quote_flag && loc.thousands_sep[0] != 0);
+#endif
chp = &cpbufs[1].buf[i-1];
ii = jj = 0;
do {
@@ -1198,8 +1204,14 @@ out0:
chp--; i--;
#if defined(HAVE_LOCALE_H)
if (quote_flag && loc.grouping[ii] && ++jj == loc.grouping[ii]) {
- if (i) /* only add if more digits coming */
- PREPEND(loc.thousands_sep[0]); /* XXX - assumption it's one char */
+ if (i) { /* only add if more digits coming */
+ int k;
+ const char *ts = loc.thousands_sep;
+
+ for (k = strlen(ts) - 1; k >= 0; k--) {
+ PREPEND(ts[k]);
+ }
+ }
if (loc.grouping[ii+1] == 0)
jj = 0; /* keep using current val in loc.grouping[ii] */
else if (loc.grouping[ii+1] == CHAR_MAX)
@@ -1355,6 +1367,9 @@ mpf1:
#ifdef HAVE_MPFR
int0:
#endif
+#if defined(HAVE_LOCALE_H)
+ quote_flag = (quote_flag && loc.thousands_sep[0] != 0);
+#endif
/*
* When to fill with zeroes is of course not simple.
* First: No zero fill if left-justifying.
@@ -1373,8 +1388,14 @@ mpf1:
uval /= base;
#if defined(HAVE_LOCALE_H)
if (base == 10 && quote_flag && loc.grouping[ii] && ++jj == loc.grouping[ii]) {
- if (uval) /* only add if more digits coming */
- PREPEND(loc.thousands_sep[0]); /* XXX --- assumption it's one char */
+ if (uval) { /* only add if more digits coming */
+ int k;
+ const char *ts = loc.thousands_sep;
+
+ for (k = strlen(ts) - 1; k >= 0; k--) {
+ PREPEND(ts[k]);
+ }
+ }
if (loc.grouping[ii+1] == 0)
jj = 0; /* keep using current val in loc.grouping[ii] */
else if (loc.grouping[ii+1] == CHAR_MAX)
@@ -1994,10 +2015,10 @@ do_mktime(int nargs)
& hour, & minute, & second,
& dst);
- if (do_lint /* Ready? Set! Go: */
- && ( (second < 0 || second > 60)
- || (minute < 0 || minute > 60)
- || (hour < 0 || hour > 23)
+ if ( do_lint /* Ready? Set! Go: */
+ && ( (second < 0 || second > 60)
+ || (minute < 0 || minute > 59)
+ || (hour < 0 || hour > 23) /* FIXME ISO 8601 allows 24 ? */
|| (day < 1 || day > 31)
|| (month < 1 || month > 12) ))
lintwarn(_("mktime: at least one of the values is out of the default range"));
@@ -2159,7 +2180,7 @@ do_print_rec(int nargs, int redirtype)
f0 = fields_arr[0];
- if (do_lint && f0 == Nnull_string)
+ if (do_lint && (f0->flags & NULL_FIELD) != 0)
lintwarn(_("reference to uninitialized field `$%d'"), 0);
efwrite(f0->stptr, sizeof(char), f0->stlen, fp, "print", rp, false);
@@ -2372,6 +2393,8 @@ static char *const state = (char *const) istate;
NODE *
do_rand(int nargs ATTRIBUTE_UNUSED)
{
+ double tmprand;
+#define RAND_DIVISOR ((double)GAWK_RANDOM_MAX+1.0)
if (firstrand) {
(void) initstate((unsigned) 1, state, SIZEOF_STATE);
/* don't need to srandom(1), initstate() does it for us. */
@@ -2383,7 +2406,60 @@ do_rand(int nargs ATTRIBUTE_UNUSED)
*
* 0 <= n < 1
*/
- return make_number((AWKNUM) (random() % GAWK_RANDOM_MAX) / GAWK_RANDOM_MAX);
+ /*
+ * Date: Wed, 28 Aug 2013 17:52:46 -0700
+ * From: Bob Jewett <jewett@bill.scs.agilent.com>
+ *
+ * Call random() twice to fill in more bits in the value
+ * of the double. Also, there is a bug in random() such
+ * that when the values of successive values are combined
+ * like (rand1*rand2)^2, (rand3*rand4)^2, ... the
+ * resulting time series is not white noise. The
+ * following also seems to fix that bug.
+ *
+ * The add/subtract 0.5 keeps small bits from filling
+ * below 2^-53 in the double, not that anyone should be
+ * looking down there.
+ *
+ * Date: Wed, 25 Sep 2013 10:45:38 -0600 (MDT)
+ * From: "Nelson H. F. Beebe" <beebe@math.utah.edu>
+ * (4) The code is typical of many published fragments for converting
+ * from integer to floating-point, and I discuss the serious pitfalls
+ * in my book, because it leads to platform-dependent behavior at the
+ * end points of the interval [0,1]
+ *
+ * (5) the documentation in the gawk info node says
+ *
+ * `rand()'
+ * Return a random number. The values of `rand()' are uniformly
+ * distributed between zero and one. The value could be zero but is
+ * never one.(1)
+ *
+ * The division by RAND_DIVISOR may not guarantee that 1.0 is never
+ * returned: the programmer forgot the platform-dependent issue of
+ * rounding.
+ *
+ * For points 4 and 5, the safe way is a loop:
+ *
+ * double
+ * rand(void) // return value in [0.0, 1.0)
+ * {
+ * value = internal_rand();
+ *
+ * while (value == 1.0)
+ * value = internal_rand();
+ *
+ * return (value);
+ * }
+ */
+
+ do {
+ tmprand = 0.5 + ( (random()/RAND_DIVISOR + random())
+ / RAND_DIVISOR);
+ tmprand -= 0.5;
+ } while (tmprand == 1.0);
+
+ return make_number((AWKNUM) tmprand);
}
/* do_srand --- seed the random number generator */
@@ -2955,13 +3031,16 @@ set_how_many:
done:
DEREF(s);
- if ((matches == 0 || (flags & LITERAL) != 0) && buf != NULL)
+ if ((matches == 0 || (flags & LITERAL) != 0) && buf != NULL) {
efree(buf);
+ buf = NULL;
+ }
if (flags & GENSUB) {
if (matches > 0) {
/* return the result string */
DEREF(t);
+ assert(buf != NULL);
return make_str_node(buf, textlen, ALREADY_MALLOCED);
}
diff --git a/cint_array.c b/cint_array.c
index 1d34c2f7..3945e6e7 100644
--- a/cint_array.c
+++ b/cint_array.c
@@ -150,10 +150,14 @@ cint_array_init(NODE *symbol ATTRIBUTE_UNUSED, NODE *subs ATTRIBUTE_UNUSED)
{
if (symbol == NULL) {
long newval;
+ size_t nelems = (sizeof(power_two_table) / sizeof(power_two_table[0]));
/* check relevant environment variables */
if ((newval = getenv_long("NHAT")) > 1 && newval < INT32_BIT)
NHAT = newval;
+ /* don't allow overflow off the end of the table */
+ if (NHAT >= nelems)
+ NHAT = nelems - 2;
THRESHOLD = power_two_table[NHAT + 1];
} else
null_array(symbol);
diff --git a/cmd.h b/cmd.h
index 5a5fd294..6fca6d0a 100644
--- a/cmd.h
+++ b/cmd.h
@@ -3,7 +3,7 @@
*/
/*
- * Copyright (C) 2004, 2010, 2011, 2013 the Free Software Foundation, Inc.
+ * Copyright (C) 2004, 2010, 2011, 2013, 2014 the Free Software Foundation, Inc.
*
* This file is part of GAWK, the GNU implementation of the
* AWK Programming Language.
@@ -109,7 +109,8 @@ enum argtype {
/* non-number arguments to commands */
enum nametypeval {
- A_ARGS = 1,
+ A_NONE = 0,
+ A_ARGS,
A_BREAK,
A_DEL,
A_DISPLAY,
diff --git a/command.c b/command.c
index d170e4c1..2d4ccf8c 100644
--- a/command.c
+++ b/command.c
@@ -1,19 +1,19 @@
-/* A Bison parser, made by GNU Bison 2.7.12-4996. */
+/* A Bison parser, made by GNU Bison 3.0.2. */
/* Bison implementation for Yacc-like parsers in C
-
- Copyright (C) 1984, 1989-1990, 2000-2013 Free Software Foundation, Inc.
-
+
+ Copyright (C) 1984, 1989-1990, 2000-2013 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 of the License, 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, see <http://www.gnu.org/licenses/>. */
@@ -26,7 +26,7 @@
special exception, which will cause the skeleton and the resulting
Bison output files to be licensed under the GNU General Public
License without this special exception.
-
+
This special exception was added by the Free Software Foundation in
version 2.2 of Bison. */
@@ -44,7 +44,7 @@
#define YYBISON 1
/* Bison version. */
-#define YYBISON_VERSION "2.7.12-4996"
+#define YYBISON_VERSION "3.0.2"
/* Skeleton name. */
#define YYSKELETON_NAME "yacc.c"
@@ -63,14 +63,14 @@
#define yyparse zzparse
#define yylex zzlex
#define yyerror zzerror
-#define yylval zzlval
-#define yychar zzchar
#define yydebug zzdebug
#define yynerrs zznerrs
+#define yylval zzlval
+#define yychar zzchar
+
/* Copy the first part of user declarations. */
-/* Line 371 of yacc.c */
-#line 26 "command.y"
+#line 26 "command.y" /* yacc.c:339 */
#include "awk.h"
#include "cmd.h"
@@ -99,10 +99,10 @@ static bool in_eval = false;
static const char start_EVAL[] = "function @eval(){";
static const char end_EVAL[] = "}";
static CMDARG *append_statement(CMDARG *stmt_list, char *stmt);
-static char *next_word(char *p, int len, char **endp);
static NODE *concat_args(CMDARG *a, int count);
#ifdef HAVE_LIBREADLINE
+static char *next_word(char *p, int len, char **endp);
static void history_expand_line(char **line);
static char *command_generator(const char *text, int state);
static char *srcfile_generator(const char *text, int state);
@@ -137,14 +137,13 @@ static void append_cmdarg(CMDARG *arg);
static int find_argument(CMDARG *arg);
#define YYSTYPE CMDARG *
-/* Line 371 of yacc.c */
-#line 142 "command.c"
+#line 141 "command.c" /* yacc.c:339 */
-# ifndef YY_NULL
+# ifndef YY_NULLPTR
# if defined __cplusplus && 201103L <= __cplusplus
-# define YY_NULL nullptr
+# define YY_NULLPTR nullptr
# else
-# define YY_NULL 0
+# define YY_NULLPTR 0
# endif
# endif
@@ -157,7 +156,7 @@ static int find_argument(CMDARG *arg);
#endif
-/* Enabling traces. */
+/* Debug traces. */
#ifndef YYDEBUG
# define YYDEBUG 0
#endif
@@ -165,59 +164,58 @@ static int find_argument(CMDARG *arg);
extern int zzdebug;
#endif
-/* Tokens. */
+/* Token type. */
#ifndef YYTOKENTYPE
# define YYTOKENTYPE
- /* Put the tokens into the symbol table, so that GDB and other debuggers
- know about them. */
- enum yytokentype {
- D_BACKTRACE = 258,
- D_BREAK = 259,
- D_CLEAR = 260,
- D_CONTINUE = 261,
- D_DELETE = 262,
- D_DISABLE = 263,
- D_DOWN = 264,
- D_ENABLE = 265,
- D_FINISH = 266,
- D_FRAME = 267,
- D_HELP = 268,
- D_IGNORE = 269,
- D_INFO = 270,
- D_LIST = 271,
- D_NEXT = 272,
- D_NEXTI = 273,
- D_PRINT = 274,
- D_PRINTF = 275,
- D_QUIT = 276,
- D_RETURN = 277,
- D_RUN = 278,
- D_SET = 279,
- D_STEP = 280,
- D_STEPI = 281,
- D_TBREAK = 282,
- D_UP = 283,
- D_UNTIL = 284,
- D_DISPLAY = 285,
- D_UNDISPLAY = 286,
- D_WATCH = 287,
- D_UNWATCH = 288,
- D_DUMP = 289,
- D_TRACE = 290,
- D_INT = 291,
- D_STRING = 292,
- D_NODE = 293,
- D_VARIABLE = 294,
- D_OPTION = 295,
- D_COMMANDS = 296,
- D_END = 297,
- D_SILENT = 298,
- D_SOURCE = 299,
- D_SAVE = 300,
- D_EVAL = 301,
- D_CONDITION = 302,
- D_STATEMENT = 303
- };
+ enum yytokentype
+ {
+ D_BACKTRACE = 258,
+ D_BREAK = 259,
+ D_CLEAR = 260,
+ D_CONTINUE = 261,
+ D_DELETE = 262,
+ D_DISABLE = 263,
+ D_DOWN = 264,
+ D_ENABLE = 265,
+ D_FINISH = 266,
+ D_FRAME = 267,
+ D_HELP = 268,
+ D_IGNORE = 269,
+ D_INFO = 270,
+ D_LIST = 271,
+ D_NEXT = 272,
+ D_NEXTI = 273,
+ D_PRINT = 274,
+ D_PRINTF = 275,
+ D_QUIT = 276,
+ D_RETURN = 277,
+ D_RUN = 278,
+ D_SET = 279,
+ D_STEP = 280,
+ D_STEPI = 281,
+ D_TBREAK = 282,
+ D_UP = 283,
+ D_UNTIL = 284,
+ D_DISPLAY = 285,
+ D_UNDISPLAY = 286,
+ D_WATCH = 287,
+ D_UNWATCH = 288,
+ D_DUMP = 289,
+ D_TRACE = 290,
+ D_INT = 291,
+ D_STRING = 292,
+ D_NODE = 293,
+ D_VARIABLE = 294,
+ D_OPTION = 295,
+ D_COMMANDS = 296,
+ D_END = 297,
+ D_SILENT = 298,
+ D_SOURCE = 299,
+ D_SAVE = 300,
+ D_EVAL = 301,
+ D_CONDITION = 302,
+ D_STATEMENT = 303
+ };
#endif
/* Tokens. */
#define D_BACKTRACE 258
@@ -267,37 +265,23 @@ extern int zzdebug;
#define D_CONDITION 302
#define D_STATEMENT 303
-
-
+/* Value type. */
#if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED
typedef int YYSTYPE;
# define YYSTYPE_IS_TRIVIAL 1
-# define yystype YYSTYPE /* obsolescent; will be withdrawn */
# define YYSTYPE_IS_DECLARED 1
#endif
+
extern YYSTYPE zzlval;
-#ifdef YYPARSE_PARAM
-#if defined __STDC__ || defined __cplusplus
-int zzparse (void *YYPARSE_PARAM);
-#else
-int zzparse ();
-#endif
-#else /* ! YYPARSE_PARAM */
-#if defined __STDC__ || defined __cplusplus
int zzparse (void);
-#else
-int zzparse ();
-#endif
-#endif /* ! YYPARSE_PARAM */
/* Copy the second part of user declarations. */
-/* Line 390 of yacc.c */
-#line 301 "command.c"
+#line 285 "command.c" /* yacc.c:358 */
#ifdef short
# undef short
@@ -311,11 +295,8 @@ typedef unsigned char yytype_uint8;
#ifdef YYTYPE_INT8
typedef YYTYPE_INT8 yytype_int8;
-#elif (defined __STDC__ || defined __C99__FUNC__ \
- || defined __cplusplus || defined _MSC_VER)
-typedef signed char yytype_int8;
#else
-typedef short int yytype_int8;
+typedef signed char yytype_int8;
#endif
#ifdef YYTYPE_UINT16
@@ -335,8 +316,7 @@ typedef short int yytype_int16;
# define YYSIZE_T __SIZE_TYPE__
# elif defined size_t
# define YYSIZE_T size_t
-# elif ! defined YYSIZE_T && (defined __STDC__ || defined __C99__FUNC__ \
- || defined __cplusplus || defined _MSC_VER)
+# elif ! defined YYSIZE_T
# include <stddef.h> /* INFRINGES ON USER NAME SPACE */
# define YYSIZE_T size_t
# else
@@ -358,11 +338,30 @@ typedef short int yytype_int16;
# endif
#endif
-#ifndef __attribute__
-/* This feature is available in gcc versions 2.5 and later. */
-# if (! defined __GNUC__ || __GNUC__ < 2 \
- || (__GNUC__ == 2 && __GNUC_MINOR__ < 5))
-# define __attribute__(Spec) /* empty */
+#ifndef YY_ATTRIBUTE
+# if (defined __GNUC__ \
+ && (2 < __GNUC__ || (__GNUC__ == 2 && 96 <= __GNUC_MINOR__))) \
+ || defined __SUNPRO_C && 0x5110 <= __SUNPRO_C
+# define YY_ATTRIBUTE(Spec) __attribute__(Spec)
+# else
+# define YY_ATTRIBUTE(Spec) /* empty */
+# endif
+#endif
+
+#ifndef YY_ATTRIBUTE_PURE
+# define YY_ATTRIBUTE_PURE YY_ATTRIBUTE ((__pure__))
+#endif
+
+#ifndef YY_ATTRIBUTE_UNUSED
+# define YY_ATTRIBUTE_UNUSED YY_ATTRIBUTE ((__unused__))
+#endif
+
+#if !defined _Noreturn \
+ && (!defined __STDC_VERSION__ || __STDC_VERSION__ < 201112)
+# if defined _MSC_VER && 1200 <= _MSC_VER
+# define _Noreturn __declspec (noreturn)
+# else
+# define _Noreturn YY_ATTRIBUTE ((__noreturn__))
# endif
#endif
@@ -373,24 +372,25 @@ typedef short int yytype_int16;
# define YYUSE(E) /* empty */
#endif
-
-/* Identity function, used to suppress warnings about constant conditions. */
-#ifndef lint
-# define YYID(N) (N)
+#if defined __GNUC__ && 407 <= __GNUC__ * 100 + __GNUC_MINOR__
+/* Suppress an incorrect diagnostic about yylval being uninitialized. */
+# define YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN \
+ _Pragma ("GCC diagnostic push") \
+ _Pragma ("GCC diagnostic ignored \"-Wuninitialized\"")\
+ _Pragma ("GCC diagnostic ignored \"-Wmaybe-uninitialized\"")
+# define YY_IGNORE_MAYBE_UNINITIALIZED_END \
+ _Pragma ("GCC diagnostic pop")
#else
-#if (defined __STDC__ || defined __C99__FUNC__ \
- || defined __cplusplus || defined _MSC_VER)
-static int
-YYID (int yyi)
-#else
-static int
-YYID (yyi)
- int yyi;
+# define YY_INITIAL_VALUE(Value) Value
#endif
-{
- return yyi;
-}
+#ifndef YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN
+# define YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN
+# define YY_IGNORE_MAYBE_UNINITIALIZED_END
#endif
+#ifndef YY_INITIAL_VALUE
+# define YY_INITIAL_VALUE(Value) /* Nothing. */
+#endif
+
#if ! defined yyoverflow || YYERROR_VERBOSE
@@ -409,8 +409,7 @@ YYID (yyi)
# define alloca _alloca
# else
# define YYSTACK_ALLOC alloca
-# if ! defined _ALLOCA_H && ! defined EXIT_SUCCESS && (defined __STDC__ || defined __C99__FUNC__ \
- || defined __cplusplus || defined _MSC_VER)
+# if ! defined _ALLOCA_H && ! defined EXIT_SUCCESS
# include <stdlib.h> /* INFRINGES ON USER NAME SPACE */
/* Use EXIT_SUCCESS as a witness for stdlib.h. */
# ifndef EXIT_SUCCESS
@@ -422,8 +421,8 @@ YYID (yyi)
# endif
# ifdef YYSTACK_ALLOC
- /* Pacify GCC's `empty if-body' warning. */
-# define YYSTACK_FREE(Ptr) do { /* empty */; } while (YYID (0))
+ /* Pacify GCC's 'empty if-body' warning. */
+# define YYSTACK_FREE(Ptr) do { /* empty */; } while (0)
# ifndef YYSTACK_ALLOC_MAXIMUM
/* The OS might guarantee only one guard page at the bottom of the stack,
and a page size can be as small as 4096 bytes. So we cannot safely
@@ -439,7 +438,7 @@ YYID (yyi)
# endif
# if (defined __cplusplus && ! defined EXIT_SUCCESS \
&& ! ((defined YYMALLOC || defined malloc) \
- && (defined YYFREE || defined free)))
+ && (defined YYFREE || defined free)))
# include <stdlib.h> /* INFRINGES ON USER NAME SPACE */
# ifndef EXIT_SUCCESS
# define EXIT_SUCCESS 0
@@ -447,15 +446,13 @@ YYID (yyi)
# endif
# ifndef YYMALLOC
# define YYMALLOC malloc
-# if ! defined malloc && ! defined EXIT_SUCCESS && (defined __STDC__ || defined __C99__FUNC__ \
- || defined __cplusplus || defined _MSC_VER)
+# if ! defined malloc && ! defined EXIT_SUCCESS
void *malloc (YYSIZE_T); /* INFRINGES ON USER NAME SPACE */
# endif
# endif
# ifndef YYFREE
# define YYFREE free
-# if ! defined free && ! defined EXIT_SUCCESS && (defined __STDC__ || defined __C99__FUNC__ \
- || defined __cplusplus || defined _MSC_VER)
+# if ! defined free && ! defined EXIT_SUCCESS
void free (void *); /* INFRINGES ON USER NAME SPACE */
# endif
# endif
@@ -465,7 +462,7 @@ void free (void *); /* INFRINGES ON USER NAME SPACE */
#if (! defined yyoverflow \
&& (! defined __cplusplus \
- || (defined YYSTYPE_IS_TRIVIAL && YYSTYPE_IS_TRIVIAL)))
+ || (defined YYSTYPE_IS_TRIVIAL && YYSTYPE_IS_TRIVIAL)))
/* A type that is properly aligned for any stack member. */
union yyalloc
@@ -490,16 +487,16 @@ union yyalloc
elements in the stack, and YYPTR gives the new location of the
stack. Advance YYPTR to a properly aligned location for the next
stack. */
-# define YYSTACK_RELOCATE(Stack_alloc, Stack) \
- do \
- { \
- YYSIZE_T yynewbytes; \
- YYCOPY (&yyptr->Stack_alloc, Stack, yysize); \
- Stack = &yyptr->Stack_alloc; \
- yynewbytes = yystacksize * sizeof (*Stack) + YYSTACK_GAP_MAXIMUM; \
- yyptr += yynewbytes / sizeof (*yyptr); \
- } \
- while (YYID (0))
+# define YYSTACK_RELOCATE(Stack_alloc, Stack) \
+ do \
+ { \
+ YYSIZE_T yynewbytes; \
+ YYCOPY (&yyptr->Stack_alloc, Stack, yysize); \
+ Stack = &yyptr->Stack_alloc; \
+ yynewbytes = yystacksize * sizeof (*Stack) + YYSTACK_GAP_MAXIMUM; \
+ yyptr += yynewbytes / sizeof (*yyptr); \
+ } \
+ while (0)
#endif
@@ -518,7 +515,7 @@ union yyalloc
for (yyi = 0; yyi < (Count); yyi++) \
(Dst)[yyi] = (Src)[yyi]; \
} \
- while (YYID (0))
+ while (0)
# endif
# endif
#endif /* !YYCOPY_NEEDED */
@@ -534,17 +531,19 @@ union yyalloc
#define YYNNTS 55
/* YYNRULES -- Number of rules. */
#define YYNRULES 156
-/* YYNRULES -- Number of states. */
+/* YYNSTATES -- Number of states. */
#define YYNSTATES 203
-/* YYTRANSLATE(YYLEX) -- Bison symbol number corresponding to YYLEX. */
+/* YYTRANSLATE[YYX] -- Symbol number corresponding to YYX as returned
+ by yylex, with out-of-bounds checking. */
#define YYUNDEFTOK 2
#define YYMAXUTOK 303
-#define YYTRANSLATE(YYX) \
+#define YYTRANSLATE(YYX) \
((unsigned int) (YYX) <= YYMAXUTOK ? yytranslate[YYX] : YYUNDEFTOK)
-/* YYTRANSLATE[YYLEX] -- Bison symbol number corresponding to YYLEX. */
+/* YYTRANSLATE[TOKEN-NUM] -- Symbol number corresponding to TOKEN-NUM
+ as returned by yylex, without out-of-bounds checking. */
static const yytype_uint8 yytranslate[] =
{
0, 2, 2, 2, 2, 2, 2, 2, 2, 2,
@@ -581,73 +580,7 @@ static const yytype_uint8 yytranslate[] =
};
#if YYDEBUG
-/* YYPRHS[YYN] -- Index of the first RHS symbol of rule number YYN in
- YYRHS. */
-static const yytype_uint16 yyprhs[] =
-{
- 0, 0, 3, 4, 7, 9, 12, 15, 17, 19,
- 21, 23, 25, 27, 29, 31, 33, 35, 37, 39,
- 41, 43, 45, 46, 51, 52, 53, 58, 62, 66,
- 69, 71, 73, 75, 78, 81, 84, 88, 91, 92,
- 96, 97, 101, 104, 107, 110, 113, 114, 120, 123,
- 124, 128, 129, 133, 134, 139, 142, 145, 148, 151,
- 154, 156, 158, 161, 162, 167, 169, 171, 173, 175,
- 176, 178, 180, 183, 187, 189, 190, 192, 194, 196,
- 197, 199, 203, 205, 206, 208, 210, 214, 218, 219,
- 220, 224, 226, 227, 233, 237, 238, 240, 241, 243,
- 244, 246, 247, 249, 251, 254, 256, 259, 263, 265,
- 268, 272, 274, 276, 278, 280, 284, 286, 287, 289,
- 291, 293, 295, 297, 301, 305, 309, 313, 314, 316,
- 318, 320, 322, 325, 328, 330, 334, 336, 340, 344,
- 346, 349, 351, 354, 357, 359, 362, 365, 366, 368,
- 369, 371, 373, 376, 378, 381, 384
-};
-
-/* YYRHS -- A `-1'-separated list of the rules' RHS. */
-static const yytype_int8 yyrhs[] =
-{
- 60, 0, -1, -1, 60, 61, -1, 113, -1, 71,
- 113, -1, 1, 113, -1, 6, -1, 17, -1, 18,
- -1, 25, -1, 26, -1, 31, -1, 33, -1, 8,
- -1, 7, -1, 28, -1, 9, -1, 3, -1, 12,
- -1, 4, -1, 27, -1, -1, 46, 66, 81, 113,
- -1, -1, -1, 68, 48, 69, 113, -1, 67, 68,
- 42, -1, 46, 66, 84, -1, 13, 94, -1, 21,
- -1, 23, -1, 11, -1, 62, 109, -1, 64, 110,
- -1, 15, 37, -1, 14, 111, 36, -1, 10, 95,
- -1, -1, 19, 72, 97, -1, -1, 20, 73, 99,
- -1, 16, 100, -1, 29, 87, -1, 5, 87, -1,
- 65, 88, -1, -1, 24, 74, 107, 49, 108, -1,
- 40, 85, -1, -1, 22, 75, 93, -1, -1, 30,
- 76, 91, -1, -1, 32, 77, 107, 79, -1, 63,
- 102, -1, 34, 92, -1, 44, 37, -1, 45, 37,
- -1, 41, 80, -1, 42, -1, 43, -1, 35, 37,
- -1, -1, 47, 111, 78, 79, -1, 70, -1, 83,
- -1, 109, -1, 1, -1, -1, 82, -1, 39, -1,
- 82, 39, -1, 82, 50, 39, -1, 1, -1, -1,
- 84, -1, 1, -1, 38, -1, -1, 37, -1, 37,
- 49, 37, -1, 37, -1, -1, 111, -1, 86, -1,
- 37, 51, 111, -1, 37, 51, 86, -1, -1, -1,
- 111, 89, 79, -1, 86, -1, -1, 37, 51, 111,
- 90, 79, -1, 37, 51, 86, -1, -1, 107, -1,
- -1, 37, -1, -1, 108, -1, -1, 37, -1, 102,
- -1, 37, 102, -1, 107, -1, 52, 39, -1, 52,
- 39, 106, -1, 96, -1, 97, 96, -1, 97, 50,
- 96, -1, 1, -1, 38, -1, 107, -1, 98, -1,
- 99, 50, 98, -1, 1, -1, -1, 53, -1, 54,
- -1, 111, -1, 86, -1, 101, -1, 37, 51, 111,
- -1, 37, 51, 86, -1, 37, 51, 101, -1, 111,
- 54, 111, -1, -1, 103, -1, 1, -1, 111, -1,
- 101, -1, 103, 111, -1, 103, 101, -1, 108, -1,
- 104, 50, 108, -1, 1, -1, 55, 104, 56, -1,
- 55, 104, 1, -1, 105, -1, 106, 105, -1, 39,
- -1, 57, 38, -1, 39, 106, -1, 38, -1, 53,
- 38, -1, 54, 38, -1, -1, 111, -1, -1, 112,
- -1, 36, -1, 53, 36, -1, 36, -1, 53, 36,
- -1, 54, 36, -1, 58, -1
-};
-
-/* YYRLINE[YYN] -- source line where rule number YYN was defined. */
+ /* YYRLINE[YYN] -- Source line where rule number YYN was defined. */
static const yytype_uint16 yyrline[] =
{
0, 106, 106, 108, 126, 127, 177, 184, 185, 186,
@@ -693,13 +626,13 @@ static const char *const yytname[] =
"printf_args", "list_args", "integer_range", "opt_integer_list",
"integer_list", "exp_list", "subscript", "subscript_list", "variable",
"node", "opt_plus_integer", "opt_integer", "plus_integer", "integer",
- "nls", YY_NULL
+ "nls", YY_NULLPTR
};
#endif
# ifdef YYPRINT
-/* YYTOKNUM[YYLEX-NUM] -- Internal token number corresponding to
- token YYLEX-NUM. */
+/* YYTOKNUM[NUM] -- (External) token number corresponding to the
+ (internal) symbol number NUM (which must be that of a token). */
static const yytype_uint16 yytoknum[] =
{
0, 256, 257, 258, 259, 260, 261, 262, 263, 264,
@@ -711,90 +644,18 @@ static const yytype_uint16 yytoknum[] =
};
# endif
-/* YYR1[YYN] -- Symbol number of symbol that rule YYN derives. */
-static const yytype_uint8 yyr1[] =
-{
- 0, 59, 60, 60, 61, 61, 61, 62, 62, 62,
- 62, 62, 63, 63, 63, 63, 64, 64, 64, 64,
- 65, 65, 66, 67, 68, 69, 68, 70, 70, 71,
- 71, 71, 71, 71, 71, 71, 71, 71, 72, 71,
- 73, 71, 71, 71, 71, 71, 74, 71, 71, 75,
- 71, 76, 71, 77, 71, 71, 71, 71, 71, 71,
- 71, 71, 71, 78, 71, 71, 79, 80, 80, 81,
- 81, 82, 82, 82, 82, 83, 83, 83, 84, 85,
- 85, 85, 86, 87, 87, 87, 87, 87, 88, 89,
- 88, 88, 90, 88, 88, 91, 91, 92, 92, 93,
- 93, 94, 94, 95, 95, 96, 96, 96, 97, 97,
- 97, 97, 98, 98, 99, 99, 99, 100, 100, 100,
- 100, 100, 100, 100, 100, 100, 101, 102, 102, 102,
- 103, 103, 103, 103, 104, 104, 104, 105, 105, 106,
- 106, 107, 107, 107, 108, 108, 108, 109, 109, 110,
- 110, 111, 111, 112, 112, 112, 113
-};
+#define YYPACT_NINF -151
-/* YYR2[YYN] -- Number of symbols composing right hand side of rule YYN. */
-static const yytype_uint8 yyr2[] =
-{
- 0, 2, 0, 2, 1, 2, 2, 1, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 0, 4, 0, 0, 4, 3, 3, 2,
- 1, 1, 1, 2, 2, 2, 3, 2, 0, 3,
- 0, 3, 2, 2, 2, 2, 0, 5, 2, 0,
- 3, 0, 3, 0, 4, 2, 2, 2, 2, 2,
- 1, 1, 2, 0, 4, 1, 1, 1, 1, 0,
- 1, 1, 2, 3, 1, 0, 1, 1, 1, 0,
- 1, 3, 1, 0, 1, 1, 3, 3, 0, 0,
- 3, 1, 0, 5, 3, 0, 1, 0, 1, 0,
- 1, 0, 1, 1, 2, 1, 2, 3, 1, 2,
- 3, 1, 1, 1, 1, 3, 1, 0, 1, 1,
- 1, 1, 1, 3, 3, 3, 3, 0, 1, 1,
- 1, 1, 2, 2, 1, 3, 1, 3, 3, 1,
- 2, 1, 2, 2, 1, 2, 2, 0, 1, 0,
- 1, 1, 2, 1, 2, 2, 1
-};
+#define yypact_value_is_default(Yystate) \
+ (!!((Yystate) == (-151)))
-/* YYDEFACT[STATE-NAME] -- Default reduction number in state STATE-NUM.
- Performed when YYTABLE doesn't specify something else to do. Zero
- means the default is an error. */
-static const yytype_uint8 yydefact[] =
-{
- 2, 0, 1, 0, 18, 20, 83, 7, 15, 14,
- 17, 0, 32, 19, 101, 0, 0, 117, 8, 9,
- 38, 40, 30, 49, 31, 46, 10, 11, 21, 16,
- 83, 51, 12, 53, 13, 97, 0, 79, 0, 60,
- 61, 0, 0, 22, 0, 156, 3, 147, 0, 149,
- 88, 24, 65, 0, 4, 6, 151, 82, 0, 85,
- 44, 84, 129, 0, 37, 131, 103, 128, 130, 102,
- 29, 0, 35, 82, 118, 119, 121, 42, 122, 120,
- 0, 0, 99, 0, 43, 95, 0, 98, 56, 62,
- 80, 48, 68, 59, 67, 148, 57, 58, 0, 63,
- 33, 55, 153, 0, 0, 34, 150, 82, 91, 45,
- 89, 0, 5, 0, 152, 104, 133, 132, 0, 36,
- 0, 111, 141, 0, 0, 108, 39, 105, 116, 112,
- 114, 41, 113, 144, 0, 0, 50, 100, 0, 52,
- 96, 0, 0, 74, 78, 71, 0, 70, 28, 0,
- 154, 155, 0, 0, 27, 25, 82, 87, 86, 126,
- 124, 125, 123, 0, 139, 143, 106, 142, 0, 109,
- 0, 145, 146, 0, 77, 54, 66, 76, 81, 23,
- 72, 0, 64, 94, 92, 90, 0, 136, 0, 134,
- 140, 107, 110, 115, 47, 73, 0, 26, 138, 0,
- 137, 93, 135
-};
+#define YYTABLE_NINF -148
-/* YYDEFGOTO[NTERM-NUM]. */
-static const yytype_int16 yydefgoto[] =
-{
- -1, 1, 46, 47, 48, 49, 50, 98, 51, 111,
- 186, 52, 53, 80, 81, 83, 82, 85, 86, 149,
- 175, 93, 146, 147, 176, 177, 91, 59, 60, 109,
- 153, 196, 139, 88, 136, 70, 64, 125, 126, 130,
- 131, 77, 65, 66, 67, 188, 164, 165, 127, 137,
- 94, 105, 68, 106, 54
-};
+#define yytable_value_is_error(Yytable_value) \
+ 0
-/* YYPACT[STATE-NUM] -- Index in YYTABLE of the portion describing
- STATE-NUM. */
-#define YYPACT_NINF -151
+ /* YYPACT[STATE-NUM] -- Index in YYTABLE of the portion describing
+ STATE-NUM. */
static const yytype_int16 yypact[] =
{
-151, 145, -151, -34, -151, -151, 50, -151, -151, -151,
@@ -820,7 +681,35 @@ static const yytype_int16 yypact[] =
-151, -151, -151
};
-/* YYPGOTO[NTERM-NUM]. */
+ /* YYDEFACT[STATE-NUM] -- Default reduction number in state STATE-NUM.
+ Performed when YYTABLE does not specify something else to do. Zero
+ means the default is an error. */
+static const yytype_uint8 yydefact[] =
+{
+ 2, 0, 1, 0, 18, 20, 83, 7, 15, 14,
+ 17, 0, 32, 19, 101, 0, 0, 117, 8, 9,
+ 38, 40, 30, 49, 31, 46, 10, 11, 21, 16,
+ 83, 51, 12, 53, 13, 97, 0, 79, 0, 60,
+ 61, 0, 0, 22, 0, 156, 3, 147, 0, 149,
+ 88, 24, 65, 0, 4, 6, 151, 82, 0, 85,
+ 44, 84, 129, 0, 37, 131, 103, 128, 130, 102,
+ 29, 0, 35, 82, 118, 119, 121, 42, 122, 120,
+ 0, 0, 99, 0, 43, 95, 0, 98, 56, 62,
+ 80, 48, 68, 59, 67, 148, 57, 58, 0, 63,
+ 33, 55, 153, 0, 0, 34, 150, 82, 91, 45,
+ 89, 0, 5, 0, 152, 104, 133, 132, 0, 36,
+ 0, 111, 141, 0, 0, 108, 39, 105, 116, 112,
+ 114, 41, 113, 144, 0, 0, 50, 100, 0, 52,
+ 96, 0, 0, 74, 78, 71, 0, 70, 28, 0,
+ 154, 155, 0, 0, 27, 25, 82, 87, 86, 126,
+ 124, 125, 123, 0, 139, 143, 106, 142, 0, 109,
+ 0, 145, 146, 0, 77, 54, 66, 76, 81, 23,
+ 72, 0, 64, 94, 92, 90, 0, 136, 0, 134,
+ 140, 107, 110, 115, 47, 73, 0, 26, 138, 0,
+ 137, 93, 135
+};
+
+ /* YYPGOTO[NTERM-NUM]. */
static const yytype_int16 yypgoto[] =
{
-151, -151, -151, -151, -151, -151, -151, -151, -151, -151,
@@ -831,10 +720,20 @@ static const yytype_int16 yypgoto[] =
97, -151, -5, -151, -3
};
-/* YYTABLE[YYPACT[STATE-NUM]]. What to do in state STATE-NUM. If
- positive, shift that token. If negative, reduce the rule which
- number is the opposite. If YYTABLE_NINF, syntax error. */
-#define YYTABLE_NINF -148
+ /* YYDEFGOTO[NTERM-NUM]. */
+static const yytype_int16 yydefgoto[] =
+{
+ -1, 1, 46, 47, 48, 49, 50, 98, 51, 111,
+ 186, 52, 53, 80, 81, 83, 82, 85, 86, 149,
+ 175, 93, 146, 147, 176, 177, 91, 59, 60, 109,
+ 153, 196, 139, 88, 136, 70, 64, 125, 126, 130,
+ 131, 77, 65, 66, 67, 188, 164, 165, 127, 137,
+ 94, 105, 68, 106, 54
+};
+
+ /* YYTABLE[YYPACT[STATE-NUM]] -- What to do in state STATE-NUM. If
+ positive, shift that token. If negative, reduce the rule whose
+ number is the opposite. If YYTABLE_NINF, syntax error. */
static const yytype_int16 yytable[] =
{
55, 61, 76, 78, 132, 121, 138, 174, 140, 141,
@@ -860,12 +759,6 @@ static const yytype_int16 yytable[] =
0, 0, 0, 45
};
-#define yypact_value_is_default(Yystate) \
- (!!((Yystate) == (-151)))
-
-#define yytable_value_is_error(Yytable_value) \
- YYID (0)
-
static const yytype_int16 yycheck[] =
{
3, 6, 17, 17, 81, 1, 83, 1, 85, 86,
@@ -891,8 +784,8 @@ static const yytype_int16 yycheck[] =
-1, -1, -1, 58
};
-/* YYSTOS[STATE-NUM] -- The (internal number of the) accessing
- symbol of state STATE-NUM. */
+ /* YYSTOS[STATE-NUM] -- The (internal number of the) accessing
+ symbol of state STATE-NUM. */
static const yytype_uint8 yystos[] =
{
0, 60, 0, 1, 3, 4, 5, 6, 7, 8,
@@ -918,30 +811,58 @@ static const yytype_uint8 yystos[] =
56, 79, 108
};
-#define yyerrok (yyerrstatus = 0)
-#define yyclearin (yychar = YYEMPTY)
-#define YYEMPTY (-2)
-#define YYEOF 0
-
-#define YYACCEPT goto yyacceptlab
-#define YYABORT goto yyabortlab
-#define YYERROR goto yyerrorlab
-
-
-/* Like YYERROR except do call yyerror. This remains here temporarily
- to ease the transition to the new meaning of YYERROR, for GCC.
- Once GCC version 2 has supplanted version 1, this can go. However,
- YYFAIL appears to be in use. Nevertheless, it is formally deprecated
- in Bison 2.4.2's NEWS entry, where a plan to phase it out is
- discussed. */
-
-#define YYFAIL goto yyerrlab
-#if defined YYFAIL
- /* This is here to suppress warnings from the GCC cpp's
- -Wunused-macros. Normally we don't worry about that warning, but
- some users do, and we want to make it easy for users to remove
- YYFAIL uses, which will produce warnings from Bison 2.5. */
-#endif
+ /* YYR1[YYN] -- Symbol number of symbol that rule YYN derives. */
+static const yytype_uint8 yyr1[] =
+{
+ 0, 59, 60, 60, 61, 61, 61, 62, 62, 62,
+ 62, 62, 63, 63, 63, 63, 64, 64, 64, 64,
+ 65, 65, 66, 67, 68, 69, 68, 70, 70, 71,
+ 71, 71, 71, 71, 71, 71, 71, 71, 72, 71,
+ 73, 71, 71, 71, 71, 71, 74, 71, 71, 75,
+ 71, 76, 71, 77, 71, 71, 71, 71, 71, 71,
+ 71, 71, 71, 78, 71, 71, 79, 80, 80, 81,
+ 81, 82, 82, 82, 82, 83, 83, 83, 84, 85,
+ 85, 85, 86, 87, 87, 87, 87, 87, 88, 89,
+ 88, 88, 90, 88, 88, 91, 91, 92, 92, 93,
+ 93, 94, 94, 95, 95, 96, 96, 96, 97, 97,
+ 97, 97, 98, 98, 99, 99, 99, 100, 100, 100,
+ 100, 100, 100, 100, 100, 100, 101, 102, 102, 102,
+ 103, 103, 103, 103, 104, 104, 104, 105, 105, 106,
+ 106, 107, 107, 107, 108, 108, 108, 109, 109, 110,
+ 110, 111, 111, 112, 112, 112, 113
+};
+
+ /* YYR2[YYN] -- Number of symbols on the right hand side of rule YYN. */
+static const yytype_uint8 yyr2[] =
+{
+ 0, 2, 0, 2, 1, 2, 2, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 0, 4, 0, 0, 4, 3, 3, 2,
+ 1, 1, 1, 2, 2, 2, 3, 2, 0, 3,
+ 0, 3, 2, 2, 2, 2, 0, 5, 2, 0,
+ 3, 0, 3, 0, 4, 2, 2, 2, 2, 2,
+ 1, 1, 2, 0, 4, 1, 1, 1, 1, 0,
+ 1, 1, 2, 3, 1, 0, 1, 1, 1, 0,
+ 1, 3, 1, 0, 1, 1, 3, 3, 0, 0,
+ 3, 1, 0, 5, 3, 0, 1, 0, 1, 0,
+ 1, 0, 1, 1, 2, 1, 2, 3, 1, 2,
+ 3, 1, 1, 1, 1, 3, 1, 0, 1, 1,
+ 1, 1, 1, 3, 3, 3, 3, 0, 1, 1,
+ 1, 1, 2, 2, 1, 3, 1, 3, 3, 1,
+ 2, 1, 2, 2, 1, 2, 2, 0, 1, 0,
+ 1, 1, 2, 1, 2, 2, 1
+};
+
+
+#define yyerrok (yyerrstatus = 0)
+#define yyclearin (yychar = YYEMPTY)
+#define YYEMPTY (-2)
+#define YYEOF 0
+
+#define YYACCEPT goto yyacceptlab
+#define YYABORT goto yyabortlab
+#define YYERROR goto yyerrorlab
+
#define YYRECOVERING() (!!yyerrstatus)
@@ -958,27 +879,15 @@ do \
else \
{ \
yyerror (YY_("syntax error: cannot back up")); \
- YYERROR; \
- } \
-while (YYID (0))
+ YYERROR; \
+ } \
+while (0)
/* Error token number */
-#define YYTERROR 1
-#define YYERRCODE 256
+#define YYTERROR 1
+#define YYERRCODE 256
-/* This macro is provided for backward compatibility. */
-#ifndef YY_LOCATION_PRINT
-# define YY_LOCATION_PRINT(File, Loc) ((void) 0)
-#endif
-
-
-/* YYLEX -- calling `yylex' with the right arguments. */
-#ifdef YYLEX_PARAM
-# define YYLEX yylex (YYLEX_PARAM)
-#else
-# define YYLEX yylex ()
-#endif
/* Enable debugging if requested. */
#if YYDEBUG
@@ -988,40 +897,36 @@ while (YYID (0))
# define YYFPRINTF fprintf
# endif
-# define YYDPRINTF(Args) \
-do { \
- if (yydebug) \
- YYFPRINTF Args; \
-} while (YYID (0))
+# define YYDPRINTF(Args) \
+do { \
+ if (yydebug) \
+ YYFPRINTF Args; \
+} while (0)
+
+/* This macro is provided for backward compatibility. */
+#ifndef YY_LOCATION_PRINT
+# define YY_LOCATION_PRINT(File, Loc) ((void) 0)
+#endif
-# define YY_SYMBOL_PRINT(Title, Type, Value, Location) \
-do { \
- if (yydebug) \
- { \
- YYFPRINTF (stderr, "%s ", Title); \
- yy_symbol_print (stderr, \
- Type, Value); \
- YYFPRINTF (stderr, "\n"); \
- } \
-} while (YYID (0))
+# define YY_SYMBOL_PRINT(Title, Type, Value, Location) \
+do { \
+ if (yydebug) \
+ { \
+ YYFPRINTF (stderr, "%s ", Title); \
+ yy_symbol_print (stderr, \
+ Type, Value); \
+ YYFPRINTF (stderr, "\n"); \
+ } \
+} while (0)
-/*--------------------------------.
-| Print this symbol on YYOUTPUT. |
-`--------------------------------*/
-/*ARGSUSED*/
-#if (defined __STDC__ || defined __C99__FUNC__ \
- || defined __cplusplus || defined _MSC_VER)
+/*----------------------------------------.
+| Print this symbol's value on YYOUTPUT. |
+`----------------------------------------*/
+
static void
yy_symbol_value_print (FILE *yyoutput, int yytype, YYSTYPE const * const yyvaluep)
-#else
-static void
-yy_symbol_value_print (yyoutput, yytype, yyvaluep)
- FILE *yyoutput;
- int yytype;
- YYSTYPE const * const yyvaluep;
-#endif
{
FILE *yyo = yyoutput;
YYUSE (yyo);
@@ -1030,8 +935,6 @@ yy_symbol_value_print (yyoutput, yytype, yyvaluep)
# ifdef YYPRINT
if (yytype < YYNTOKENS)
YYPRINT (yyoutput, yytoknum[yytype], *yyvaluep);
-# else
- YYUSE (yyoutput);
# endif
YYUSE (yytype);
}
@@ -1041,22 +944,11 @@ yy_symbol_value_print (yyoutput, yytype, yyvaluep)
| Print this symbol on YYOUTPUT. |
`--------------------------------*/
-#if (defined __STDC__ || defined __C99__FUNC__ \
- || defined __cplusplus || defined _MSC_VER)
static void
yy_symbol_print (FILE *yyoutput, int yytype, YYSTYPE const * const yyvaluep)
-#else
-static void
-yy_symbol_print (yyoutput, yytype, yyvaluep)
- FILE *yyoutput;
- int yytype;
- YYSTYPE const * const yyvaluep;
-#endif
{
- if (yytype < YYNTOKENS)
- YYFPRINTF (yyoutput, "token %s (", yytname[yytype]);
- else
- YYFPRINTF (yyoutput, "nterm %s (", yytname[yytype]);
+ YYFPRINTF (yyoutput, "%s %s (",
+ yytype < YYNTOKENS ? "token" : "nterm", yytname[yytype]);
yy_symbol_value_print (yyoutput, yytype, yyvaluep);
YYFPRINTF (yyoutput, ")");
@@ -1067,16 +959,8 @@ yy_symbol_print (yyoutput, yytype, yyvaluep)
| TOP (included). |
`------------------------------------------------------------------*/
-#if (defined __STDC__ || defined __C99__FUNC__ \
- || defined __cplusplus || defined _MSC_VER)
static void
yy_stack_print (yytype_int16 *yybottom, yytype_int16 *yytop)
-#else
-static void
-yy_stack_print (yybottom, yytop)
- yytype_int16 *yybottom;
- yytype_int16 *yytop;
-#endif
{
YYFPRINTF (stderr, "Stack now");
for (; yybottom <= yytop; yybottom++)
@@ -1087,49 +971,42 @@ yy_stack_print (yybottom, yytop)
YYFPRINTF (stderr, "\n");
}
-# define YY_STACK_PRINT(Bottom, Top) \
-do { \
- if (yydebug) \
- yy_stack_print ((Bottom), (Top)); \
-} while (YYID (0))
+# define YY_STACK_PRINT(Bottom, Top) \
+do { \
+ if (yydebug) \
+ yy_stack_print ((Bottom), (Top)); \
+} while (0)
/*------------------------------------------------.
| Report that the YYRULE is going to be reduced. |
`------------------------------------------------*/
-#if (defined __STDC__ || defined __C99__FUNC__ \
- || defined __cplusplus || defined _MSC_VER)
-static void
-yy_reduce_print (YYSTYPE *yyvsp, int yyrule)
-#else
static void
-yy_reduce_print (yyvsp, yyrule)
- YYSTYPE *yyvsp;
- int yyrule;
-#endif
+yy_reduce_print (yytype_int16 *yyssp, YYSTYPE *yyvsp, int yyrule)
{
+ unsigned long int yylno = yyrline[yyrule];
int yynrhs = yyr2[yyrule];
int yyi;
- unsigned long int yylno = yyrline[yyrule];
YYFPRINTF (stderr, "Reducing stack by rule %d (line %lu):\n",
- yyrule - 1, yylno);
+ yyrule - 1, yylno);
/* The symbols being reduced. */
for (yyi = 0; yyi < yynrhs; yyi++)
{
YYFPRINTF (stderr, " $%d = ", yyi + 1);
- yy_symbol_print (stderr, yyrhs[yyprhs[yyrule] + yyi],
- &(yyvsp[(yyi + 1) - (yynrhs)])
- );
+ yy_symbol_print (stderr,
+ yystos[yyssp[yyi + 1 - yynrhs]],
+ &(yyvsp[(yyi + 1) - (yynrhs)])
+ );
YYFPRINTF (stderr, "\n");
}
}
-# define YY_REDUCE_PRINT(Rule) \
-do { \
- if (yydebug) \
- yy_reduce_print (yyvsp, Rule); \
-} while (YYID (0))
+# define YY_REDUCE_PRINT(Rule) \
+do { \
+ if (yydebug) \
+ yy_reduce_print (yyssp, yyvsp, Rule); \
+} while (0)
/* Nonzero means print parse trace. It is left uninitialized so that
multiple parsers can coexist. */
@@ -1143,7 +1020,7 @@ int yydebug;
/* YYINITDEPTH -- initial size of the parser's stacks. */
-#ifndef YYINITDEPTH
+#ifndef YYINITDEPTH
# define YYINITDEPTH 200
#endif
@@ -1166,15 +1043,8 @@ int yydebug;
# define yystrlen strlen
# else
/* Return the length of YYSTR. */
-#if (defined __STDC__ || defined __C99__FUNC__ \
- || defined __cplusplus || defined _MSC_VER)
static YYSIZE_T
yystrlen (const char *yystr)
-#else
-static YYSIZE_T
-yystrlen (yystr)
- const char *yystr;
-#endif
{
YYSIZE_T yylen;
for (yylen = 0; yystr[yylen]; yylen++)
@@ -1190,16 +1060,8 @@ yystrlen (yystr)
# else
/* Copy YYSRC to YYDEST, returning the address of the terminating '\0' in
YYDEST. */
-#if (defined __STDC__ || defined __C99__FUNC__ \
- || defined __cplusplus || defined _MSC_VER)
static char *
yystpcpy (char *yydest, const char *yysrc)
-#else
-static char *
-yystpcpy (yydest, yysrc)
- char *yydest;
- const char *yysrc;
-#endif
{
char *yyd = yydest;
const char *yys = yysrc;
@@ -1229,27 +1091,27 @@ yytnamerr (char *yyres, const char *yystr)
char const *yyp = yystr;
for (;;)
- switch (*++yyp)
- {
- case '\'':
- case ',':
- goto do_not_strip_quotes;
-
- case '\\':
- if (*++yyp != '\\')
- goto do_not_strip_quotes;
- /* Fall through. */
- default:
- if (yyres)
- yyres[yyn] = *yyp;
- yyn++;
- break;
-
- case '"':
- if (yyres)
- yyres[yyn] = '\0';
- return yyn;
- }
+ switch (*++yyp)
+ {
+ case '\'':
+ case ',':
+ goto do_not_strip_quotes;
+
+ case '\\':
+ if (*++yyp != '\\')
+ goto do_not_strip_quotes;
+ /* Fall through. */
+ default:
+ if (yyres)
+ yyres[yyn] = *yyp;
+ yyn++;
+ break;
+
+ case '"':
+ if (yyres)
+ yyres[yyn] = '\0';
+ return yyn;
+ }
do_not_strip_quotes: ;
}
@@ -1272,11 +1134,11 @@ static int
yysyntax_error (YYSIZE_T *yymsg_alloc, char **yymsg,
yytype_int16 *yyssp, int yytoken)
{
- YYSIZE_T yysize0 = yytnamerr (YY_NULL, yytname[yytoken]);
+ YYSIZE_T yysize0 = yytnamerr (YY_NULLPTR, yytname[yytoken]);
YYSIZE_T yysize = yysize0;
enum { YYERROR_VERBOSE_ARGS_MAXIMUM = 5 };
/* Internationalized format string. */
- const char *yyformat = YY_NULL;
+ const char *yyformat = YY_NULLPTR;
/* Arguments of yyformat. */
char const *yyarg[YYERROR_VERBOSE_ARGS_MAXIMUM];
/* Number of reported tokens (one for the "unexpected", one per
@@ -1284,10 +1146,6 @@ yysyntax_error (YYSIZE_T *yymsg_alloc, char **yymsg,
int yycount = 0;
/* There are many possibilities here to consider:
- - Assume YYFAIL is not used. It's too flawed to consider. See
- <http://lists.gnu.org/archive/html/bison-patches/2009-12/msg00024.html>
- for details. YYERROR is fine as it does not invoke this
- function.
- If this state is a consistent state with a default action, then
the only way this function was invoked is if the default action
is an error action. In that case, don't check for expected
@@ -1337,7 +1195,7 @@ yysyntax_error (YYSIZE_T *yymsg_alloc, char **yymsg,
}
yyarg[yycount++] = yytname[yyx];
{
- YYSIZE_T yysize1 = yysize + yytnamerr (YY_NULL, yytname[yyx]);
+ YYSIZE_T yysize1 = yysize + yytnamerr (YY_NULLPTR, yytname[yyx]);
if (! (yysize <= yysize1
&& yysize1 <= YYSTACK_ALLOC_MAXIMUM))
return 2;
@@ -1404,26 +1262,17 @@ yysyntax_error (YYSIZE_T *yymsg_alloc, char **yymsg,
| Release the memory associated to this symbol. |
`-----------------------------------------------*/
-/*ARGSUSED*/
-#if (defined __STDC__ || defined __C99__FUNC__ \
- || defined __cplusplus || defined _MSC_VER)
static void
yydestruct (const char *yymsg, int yytype, YYSTYPE *yyvaluep)
-#else
-static void
-yydestruct (yymsg, yytype, yyvaluep)
- const char *yymsg;
- int yytype;
- YYSTYPE *yyvaluep;
-#endif
{
YYUSE (yyvaluep);
-
if (!yymsg)
yymsg = "Deleting";
YY_SYMBOL_PRINT (yymsg, yytype, yyvaluep, yylocationp);
+ YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN
YYUSE (yytype);
+ YY_IGNORE_MAYBE_UNINITIALIZED_END
}
@@ -1432,18 +1281,8 @@ yydestruct (yymsg, yytype, yyvaluep)
/* The lookahead symbol. */
int yychar;
-
-#ifndef YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN
-# define YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN
-# define YY_IGNORE_MAYBE_UNINITIALIZED_END
-#endif
-#ifndef YY_INITIAL_VALUE
-# define YY_INITIAL_VALUE(Value) /* Nothing. */
-#endif
-
/* The semantic value of the lookahead symbol. */
-YYSTYPE yylval YY_INITIAL_VALUE(yyval_default);
-
+YYSTYPE yylval;
/* Number of syntax errors so far. */
int yynerrs;
@@ -1452,35 +1291,16 @@ int yynerrs;
| yyparse. |
`----------*/
-#ifdef YYPARSE_PARAM
-#if (defined __STDC__ || defined __C99__FUNC__ \
- || defined __cplusplus || defined _MSC_VER)
-int
-yyparse (void *YYPARSE_PARAM)
-#else
-int
-yyparse (YYPARSE_PARAM)
- void *YYPARSE_PARAM;
-#endif
-#else /* ! YYPARSE_PARAM */
-#if (defined __STDC__ || defined __C99__FUNC__ \
- || defined __cplusplus || defined _MSC_VER)
int
yyparse (void)
-#else
-int
-yyparse ()
-
-#endif
-#endif
{
int yystate;
/* Number of tokens to shift before error messages enabled. */
int yyerrstatus;
/* The stacks and their tools:
- `yyss': related to states.
- `yyvs': related to semantic values.
+ 'yyss': related to states.
+ 'yyvs': related to semantic values.
Refer to the stacks through separate pointers, to allow yyoverflow
to reallocate them elsewhere. */
@@ -1548,23 +1368,23 @@ yyparse ()
#ifdef yyoverflow
{
- /* Give user a chance to reallocate the stack. Use copies of
- these so that the &'s don't force the real ones into
- memory. */
- YYSTYPE *yyvs1 = yyvs;
- yytype_int16 *yyss1 = yyss;
-
- /* Each stack pointer address is followed by the size of the
- data in use in that stack, in bytes. This used to be a
- conditional around just the two extra args, but that might
- be undefined if yyoverflow is a macro. */
- yyoverflow (YY_("memory exhausted"),
- &yyss1, yysize * sizeof (*yyssp),
- &yyvs1, yysize * sizeof (*yyvsp),
- &yystacksize);
-
- yyss = yyss1;
- yyvs = yyvs1;
+ /* Give user a chance to reallocate the stack. Use copies of
+ these so that the &'s don't force the real ones into
+ memory. */
+ YYSTYPE *yyvs1 = yyvs;
+ yytype_int16 *yyss1 = yyss;
+
+ /* Each stack pointer address is followed by the size of the
+ data in use in that stack, in bytes. This used to be a
+ conditional around just the two extra args, but that might
+ be undefined if yyoverflow is a macro. */
+ yyoverflow (YY_("memory exhausted"),
+ &yyss1, yysize * sizeof (*yyssp),
+ &yyvs1, yysize * sizeof (*yyvsp),
+ &yystacksize);
+
+ yyss = yyss1;
+ yyvs = yyvs1;
}
#else /* no yyoverflow */
# ifndef YYSTACK_RELOCATE
@@ -1572,22 +1392,22 @@ yyparse ()
# else
/* Extend the stack our own way. */
if (YYMAXDEPTH <= yystacksize)
- goto yyexhaustedlab;
+ goto yyexhaustedlab;
yystacksize *= 2;
if (YYMAXDEPTH < yystacksize)
- yystacksize = YYMAXDEPTH;
+ yystacksize = YYMAXDEPTH;
{
- yytype_int16 *yyss1 = yyss;
- union yyalloc *yyptr =
- (union yyalloc *) YYSTACK_ALLOC (YYSTACK_BYTES (yystacksize));
- if (! yyptr)
- goto yyexhaustedlab;
- YYSTACK_RELOCATE (yyss_alloc, yyss);
- YYSTACK_RELOCATE (yyvs_alloc, yyvs);
+ yytype_int16 *yyss1 = yyss;
+ union yyalloc *yyptr =
+ (union yyalloc *) YYSTACK_ALLOC (YYSTACK_BYTES (yystacksize));
+ if (! yyptr)
+ goto yyexhaustedlab;
+ YYSTACK_RELOCATE (yyss_alloc, yyss);
+ YYSTACK_RELOCATE (yyvs_alloc, yyvs);
# undef YYSTACK_RELOCATE
- if (yyss1 != yyssa)
- YYSTACK_FREE (yyss1);
+ if (yyss1 != yyssa)
+ YYSTACK_FREE (yyss1);
}
# endif
#endif /* no yyoverflow */
@@ -1596,10 +1416,10 @@ yyparse ()
yyvsp = yyvs + yysize - 1;
YYDPRINTF ((stderr, "Stack size increased to %lu\n",
- (unsigned long int) yystacksize));
+ (unsigned long int) yystacksize));
if (yyss + yystacksize - 1 <= yyssp)
- YYABORT;
+ YYABORT;
}
YYDPRINTF ((stderr, "Entering state %d\n", yystate));
@@ -1628,7 +1448,7 @@ yybackup:
if (yychar == YYEMPTY)
{
YYDPRINTF ((stderr, "Reading a token: "));
- yychar = YYLEX;
+ yychar = yylex ();
}
if (yychar <= YYEOF)
@@ -1693,7 +1513,7 @@ yyreduce:
yylen = yyr2[yyn];
/* If YYLEN is nonzero, implement the default value of the action:
- `$$ = $1'.
+ '$$ = $1'.
Otherwise, the following line sets YYVAL to garbage.
This behavior is undocumented and Bison
@@ -1707,8 +1527,7 @@ yyreduce:
switch (yyn)
{
case 3:
-/* Line 1787 of yacc.c */
-#line 109 "command.y"
+#line 109 "command.y" /* yacc.c:1646 */
{
cmd_idx = -1;
want_nodeval = false;
@@ -1723,11 +1542,11 @@ yyreduce:
arg_list = NULL;
}
}
+#line 1546 "command.c" /* yacc.c:1646 */
break;
case 5:
-/* Line 1787 of yacc.c */
-#line 128 "command.y"
+#line 128 "command.y" /* yacc.c:1646 */
{
if (errcount == 0 && cmd_idx >= 0) {
Func_cmd cmdfunc;
@@ -1777,25 +1596,25 @@ yyreduce:
YYACCEPT;
}
}
+#line 1600 "command.c" /* yacc.c:1646 */
break;
case 6:
-/* Line 1787 of yacc.c */
-#line 178 "command.y"
+#line 178 "command.y" /* yacc.c:1646 */
{
yyerrok;
}
+#line 1608 "command.c" /* yacc.c:1646 */
break;
case 22:
-/* Line 1787 of yacc.c */
-#line 212 "command.y"
+#line 212 "command.y" /* yacc.c:1646 */
{ want_nodeval = true; }
+#line 1614 "command.c" /* yacc.c:1646 */
break;
case 23:
-/* Line 1787 of yacc.c */
-#line 217 "command.y"
+#line 217 "command.y" /* yacc.c:1646 */
{
if (errcount == 0) {
/* don't free arg_list; passed on to statement_list
@@ -1811,11 +1630,11 @@ yyreduce:
in_eval = true;
}
}
+#line 1634 "command.c" /* yacc.c:1646 */
break;
case 24:
-/* Line 1787 of yacc.c */
-#line 236 "command.y"
+#line 236 "command.y" /* yacc.c:1646 */
{
(yyval) = append_statement(arg_list, (char *) start_EVAL);
if (read_a_line == read_commands_string) /* unserializing 'eval' in 'commands' */
@@ -1823,27 +1642,27 @@ yyreduce:
free_cmdarg(arg_list);
arg_list = NULL;
}
+#line 1646 "command.c" /* yacc.c:1646 */
break;
case 25:
-/* Line 1787 of yacc.c */
-#line 243 "command.y"
- { (yyval) = append_statement((yyvsp[(1) - (2)]), lexptr_begin); }
+#line 243 "command.y" /* yacc.c:1646 */
+ { (yyval) = append_statement((yyvsp[-1]), lexptr_begin); }
+#line 1652 "command.c" /* yacc.c:1646 */
break;
case 26:
-/* Line 1787 of yacc.c */
-#line 244 "command.y"
+#line 244 "command.y" /* yacc.c:1646 */
{
- (yyval) = (yyvsp[(3) - (4)]);
+ (yyval) = (yyvsp[-1]);
}
+#line 1660 "command.c" /* yacc.c:1646 */
break;
case 27:
-/* Line 1787 of yacc.c */
-#line 251 "command.y"
+#line 251 "command.y" /* yacc.c:1646 */
{
- arg_list = append_statement((yyvsp[(2) - (3)]), (char *) end_EVAL);
+ arg_list = append_statement((yyvsp[-1]), (char *) end_EVAL);
if (read_a_line == read_commands_string) { /* unserializing 'eval' in 'commands' */
char *str = arg_list->a_string;
size_t len = strlen(str);
@@ -1857,120 +1676,120 @@ yyreduce:
cmd_idx = find_command("eval", 4);
in_eval = false;
}
+#line 1680 "command.c" /* yacc.c:1646 */
break;
case 28:
-/* Line 1787 of yacc.c */
-#line 267 "command.y"
+#line 267 "command.y" /* yacc.c:1646 */
{
NODE *n;
CMDARG *arg;
- n = (yyvsp[(3) - (3)])->a_node;
+ n = (yyvsp[0])->a_node;
arg = append_statement(NULL, (char *) start_EVAL);
(void) append_statement(arg, n->stptr);
(void) append_statement(arg, (char *) end_EVAL);
free_cmdarg(arg_list);
arg_list = arg;
}
+#line 1695 "command.c" /* yacc.c:1646 */
break;
case 34:
-/* Line 1787 of yacc.c */
-#line 286 "command.y"
+#line 286 "command.y" /* yacc.c:1646 */
{
if (cmdtab[cmd_idx].class == D_FRAME
- && (yyvsp[(2) - (2)]) != NULL && (yyvsp[(2) - (2)])->a_int < 0)
- yyerror(_("invalid frame number: %d"), (yyvsp[(2) - (2)])->a_int);
+ && (yyvsp[0]) != NULL && (yyvsp[0])->a_int < 0)
+ yyerror(_("invalid frame number: %d"), (yyvsp[0])->a_int);
}
+#line 1705 "command.c" /* yacc.c:1646 */
break;
case 35:
-/* Line 1787 of yacc.c */
-#line 292 "command.y"
+#line 292 "command.y" /* yacc.c:1646 */
{
- int idx = find_argument((yyvsp[(2) - (2)]));
+ int idx = find_argument((yyvsp[0]));
if (idx < 0)
- yyerror(_("info: invalid option - \"%s\""), (yyvsp[(2) - (2)])->a_string);
+ yyerror(_("info: invalid option - \"%s\""), (yyvsp[0])->a_string);
else {
- efree((yyvsp[(2) - (2)])->a_string);
- (yyvsp[(2) - (2)])->a_string = NULL;
- (yyvsp[(2) - (2)])->type = D_argument;
- (yyvsp[(2) - (2)])->a_argument = argtab[idx].value;
+ efree((yyvsp[0])->a_string);
+ (yyvsp[0])->a_string = NULL;
+ (yyvsp[0])->type = D_argument;
+ (yyvsp[0])->a_argument = argtab[idx].value;
}
}
+#line 1721 "command.c" /* yacc.c:1646 */
break;
case 38:
-/* Line 1787 of yacc.c */
-#line 305 "command.y"
+#line 305 "command.y" /* yacc.c:1646 */
{ want_nodeval = true; }
+#line 1727 "command.c" /* yacc.c:1646 */
break;
case 40:
-/* Line 1787 of yacc.c */
-#line 306 "command.y"
+#line 306 "command.y" /* yacc.c:1646 */
{ want_nodeval = true; }
+#line 1733 "command.c" /* yacc.c:1646 */
break;
case 46:
-/* Line 1787 of yacc.c */
-#line 311 "command.y"
+#line 311 "command.y" /* yacc.c:1646 */
{ want_nodeval = true; }
+#line 1739 "command.c" /* yacc.c:1646 */
break;
case 49:
-/* Line 1787 of yacc.c */
-#line 313 "command.y"
+#line 313 "command.y" /* yacc.c:1646 */
{ want_nodeval = true; }
+#line 1745 "command.c" /* yacc.c:1646 */
break;
case 51:
-/* Line 1787 of yacc.c */
-#line 314 "command.y"
+#line 314 "command.y" /* yacc.c:1646 */
{ want_nodeval = true; }
+#line 1751 "command.c" /* yacc.c:1646 */
break;
case 53:
-/* Line 1787 of yacc.c */
-#line 315 "command.y"
+#line 315 "command.y" /* yacc.c:1646 */
{ want_nodeval = true; }
+#line 1757 "command.c" /* yacc.c:1646 */
break;
case 57:
-/* Line 1787 of yacc.c */
-#line 319 "command.y"
+#line 319 "command.y" /* yacc.c:1646 */
{
- if (in_cmd_src((yyvsp[(2) - (2)])->a_string))
- yyerror(_("source \"%s\": already sourced."), (yyvsp[(2) - (2)])->a_string);
+ if (in_cmd_src((yyvsp[0])->a_string))
+ yyerror(_("source \"%s\": already sourced."), (yyvsp[0])->a_string);
}
+#line 1766 "command.c" /* yacc.c:1646 */
break;
case 58:
-/* Line 1787 of yacc.c */
-#line 324 "command.y"
+#line 324 "command.y" /* yacc.c:1646 */
{
if (! input_from_tty)
- yyerror(_("save \"%s\": command not permitted."), (yyvsp[(2) - (2)])->a_string);
+ yyerror(_("save \"%s\": command not permitted."), (yyvsp[0])->a_string);
}
+#line 1775 "command.c" /* yacc.c:1646 */
break;
case 59:
-/* Line 1787 of yacc.c */
-#line 329 "command.y"
+#line 329 "command.y" /* yacc.c:1646 */
{
int type = 0;
int num;
- if ((yyvsp[(2) - (2)]) != NULL)
- num = (yyvsp[(2) - (2)])->a_int;
+ if ((yyvsp[0]) != NULL)
+ num = (yyvsp[0])->a_int;
if (errcount != 0)
;
else if (in_commands)
yyerror(_("Can't use command `commands' for breakpoint/watchpoint commands"));
- else if ((yyvsp[(2) - (2)]) == NULL && ! (type = has_break_or_watch_point(&num, true)))
+ else if ((yyvsp[0]) == NULL && ! (type = has_break_or_watch_point(&num, true)))
yyerror(_("no breakpoint/watchpoint has been set yet"));
- else if ((yyvsp[(2) - (2)]) != NULL && ! (type = has_break_or_watch_point(&num, false)))
+ else if ((yyvsp[0]) != NULL && ! (type = has_break_or_watch_point(&num, false)))
yyerror(_("invalid breakpoint/watchpoint number"));
if (type) {
in_commands = true;
@@ -1982,11 +1801,11 @@ yyreduce:
}
}
}
+#line 1805 "command.c" /* yacc.c:1646 */
break;
case 60:
-/* Line 1787 of yacc.c */
-#line 355 "command.y"
+#line 355 "command.y" /* yacc.c:1646 */
{
if (! in_commands)
yyerror(_("`end' valid only in command `commands' or `eval'"));
@@ -1996,54 +1815,54 @@ yyreduce:
in_commands = false;
}
}
+#line 1819 "command.c" /* yacc.c:1646 */
break;
case 61:
-/* Line 1787 of yacc.c */
-#line 365 "command.y"
+#line 365 "command.y" /* yacc.c:1646 */
{
if (! in_commands)
yyerror(_("`silent' valid only in command `commands'"));
}
+#line 1828 "command.c" /* yacc.c:1646 */
break;
case 62:
-/* Line 1787 of yacc.c */
-#line 370 "command.y"
+#line 370 "command.y" /* yacc.c:1646 */
{
- int idx = find_argument((yyvsp[(2) - (2)]));
+ int idx = find_argument((yyvsp[0]));
if (idx < 0)
- yyerror(_("trace: invalid option - \"%s\""), (yyvsp[(2) - (2)])->a_string);
+ yyerror(_("trace: invalid option - \"%s\""), (yyvsp[0])->a_string);
else {
- efree((yyvsp[(2) - (2)])->a_string);
- (yyvsp[(2) - (2)])->a_string = NULL;
- (yyvsp[(2) - (2)])->type = D_argument;
- (yyvsp[(2) - (2)])->a_argument = argtab[idx].value;
+ efree((yyvsp[0])->a_string);
+ (yyvsp[0])->a_string = NULL;
+ (yyvsp[0])->type = D_argument;
+ (yyvsp[0])->a_argument = argtab[idx].value;
}
}
+#line 1844 "command.c" /* yacc.c:1646 */
break;
case 63:
-/* Line 1787 of yacc.c */
-#line 381 "command.y"
+#line 381 "command.y" /* yacc.c:1646 */
{ want_nodeval = true; }
+#line 1850 "command.c" /* yacc.c:1646 */
break;
case 64:
-/* Line 1787 of yacc.c */
-#line 382 "command.y"
+#line 382 "command.y" /* yacc.c:1646 */
{
int type;
- int num = (yyvsp[(2) - (4)])->a_int;
+ int num = (yyvsp[-2])->a_int;
type = has_break_or_watch_point(&num, false);
if (! type)
yyerror(_("condition: invalid breakpoint/watchpoint number"));
}
+#line 1862 "command.c" /* yacc.c:1646 */
break;
case 65:
-/* Line 1787 of yacc.c */
-#line 390 "command.y"
+#line 390 "command.y" /* yacc.c:1646 */
{
if (in_commands) {
/* Prepend command 'eval' to argument list */
@@ -2054,387 +1873,387 @@ yyreduce:
arg_list = arg;
}
}
+#line 1877 "command.c" /* yacc.c:1646 */
break;
case 66:
-/* Line 1787 of yacc.c */
-#line 404 "command.y"
+#line 404 "command.y" /* yacc.c:1646 */
{
- if ((yyvsp[(1) - (1)]) != NULL) {
- NODE *n = (yyvsp[(1) - (1)])->a_node;
- (yyvsp[(1) - (1)])->type = D_string;
- (yyvsp[(1) - (1)])->a_string = n->stptr;
+ if ((yyvsp[0]) != NULL) {
+ NODE *n = (yyvsp[0])->a_node;
+ (yyvsp[0])->type = D_string;
+ (yyvsp[0])->a_string = n->stptr;
freenode(n);
}
- (yyval) = (yyvsp[(1) - (1)]);
+ (yyval) = (yyvsp[0]);
}
+#line 1891 "command.c" /* yacc.c:1646 */
break;
case 68:
-/* Line 1787 of yacc.c */
-#line 418 "command.y"
+#line 418 "command.y" /* yacc.c:1646 */
{ (yyval) = NULL; }
+#line 1897 "command.c" /* yacc.c:1646 */
break;
case 69:
-/* Line 1787 of yacc.c */
-#line 423 "command.y"
+#line 423 "command.y" /* yacc.c:1646 */
{ (yyval) = NULL; }
+#line 1903 "command.c" /* yacc.c:1646 */
break;
case 74:
-/* Line 1787 of yacc.c */
-#line 432 "command.y"
+#line 432 "command.y" /* yacc.c:1646 */
{ (yyval) = NULL; }
+#line 1909 "command.c" /* yacc.c:1646 */
break;
case 75:
-/* Line 1787 of yacc.c */
-#line 437 "command.y"
+#line 437 "command.y" /* yacc.c:1646 */
{ (yyval) = NULL; }
+#line 1915 "command.c" /* yacc.c:1646 */
break;
case 77:
-/* Line 1787 of yacc.c */
-#line 440 "command.y"
+#line 440 "command.y" /* yacc.c:1646 */
{ (yyval) = NULL; }
+#line 1921 "command.c" /* yacc.c:1646 */
break;
case 78:
-/* Line 1787 of yacc.c */
-#line 445 "command.y"
+#line 445 "command.y" /* yacc.c:1646 */
{
NODE *n;
- n = (yyvsp[(1) - (1)])->a_node;
+ n = (yyvsp[0])->a_node;
if ((n->flags & STRING) == 0)
yyerror(_("argument not a string"));
}
+#line 1932 "command.c" /* yacc.c:1646 */
break;
case 79:
-/* Line 1787 of yacc.c */
-#line 455 "command.y"
+#line 455 "command.y" /* yacc.c:1646 */
{ (yyval) = NULL; }
+#line 1938 "command.c" /* yacc.c:1646 */
break;
case 80:
-/* Line 1787 of yacc.c */
-#line 457 "command.y"
+#line 457 "command.y" /* yacc.c:1646 */
{
- if (find_option((yyvsp[(1) - (1)])->a_string) < 0)
- yyerror(_("option: invalid parameter - \"%s\""), (yyvsp[(1) - (1)])->a_string);
+ if (find_option((yyvsp[0])->a_string) < 0)
+ yyerror(_("option: invalid parameter - \"%s\""), (yyvsp[0])->a_string);
}
+#line 1947 "command.c" /* yacc.c:1646 */
break;
case 81:
-/* Line 1787 of yacc.c */
-#line 462 "command.y"
+#line 462 "command.y" /* yacc.c:1646 */
{
- if (find_option((yyvsp[(1) - (3)])->a_string) < 0)
- yyerror(_("option: invalid parameter - \"%s\""), (yyvsp[(1) - (3)])->a_string);
+ if (find_option((yyvsp[-2])->a_string) < 0)
+ yyerror(_("option: invalid parameter - \"%s\""), (yyvsp[-2])->a_string);
}
+#line 1956 "command.c" /* yacc.c:1646 */
break;
case 82:
-/* Line 1787 of yacc.c */
-#line 470 "command.y"
+#line 470 "command.y" /* yacc.c:1646 */
{
NODE *n;
- n = lookup((yyvsp[(1) - (1)])->a_string);
+ n = lookup((yyvsp[0])->a_string);
if (n == NULL || n->type != Node_func)
- yyerror(_("no such function - \"%s\""), (yyvsp[(1) - (1)])->a_string);
+ yyerror(_("no such function - \"%s\""), (yyvsp[0])->a_string);
else {
- (yyvsp[(1) - (1)])->type = D_func;
- efree((yyvsp[(1) - (1)])->a_string);
- (yyvsp[(1) - (1)])->a_string = NULL;
- (yyvsp[(1) - (1)])->a_node = n;
+ (yyvsp[0])->type = D_func;
+ efree((yyvsp[0])->a_string);
+ (yyvsp[0])->a_string = NULL;
+ (yyvsp[0])->a_node = n;
}
}
+#line 1973 "command.c" /* yacc.c:1646 */
break;
case 83:
-/* Line 1787 of yacc.c */
-#line 486 "command.y"
+#line 486 "command.y" /* yacc.c:1646 */
{ (yyval) = NULL; }
+#line 1979 "command.c" /* yacc.c:1646 */
break;
case 88:
-/* Line 1787 of yacc.c */
-#line 495 "command.y"
+#line 495 "command.y" /* yacc.c:1646 */
{ (yyval) = NULL; }
+#line 1985 "command.c" /* yacc.c:1646 */
break;
case 89:
-/* Line 1787 of yacc.c */
-#line 496 "command.y"
+#line 496 "command.y" /* yacc.c:1646 */
{ want_nodeval = true; }
+#line 1991 "command.c" /* yacc.c:1646 */
break;
case 92:
-/* Line 1787 of yacc.c */
-#line 498 "command.y"
+#line 498 "command.y" /* yacc.c:1646 */
{ want_nodeval = true; }
+#line 1997 "command.c" /* yacc.c:1646 */
break;
case 95:
-/* Line 1787 of yacc.c */
-#line 504 "command.y"
+#line 504 "command.y" /* yacc.c:1646 */
{ (yyval) = NULL; }
+#line 2003 "command.c" /* yacc.c:1646 */
break;
case 97:
-/* Line 1787 of yacc.c */
-#line 510 "command.y"
+#line 510 "command.y" /* yacc.c:1646 */
{ (yyval) = NULL; }
+#line 2009 "command.c" /* yacc.c:1646 */
break;
case 99:
-/* Line 1787 of yacc.c */
-#line 516 "command.y"
+#line 516 "command.y" /* yacc.c:1646 */
{ (yyval) = NULL; }
+#line 2015 "command.c" /* yacc.c:1646 */
break;
case 104:
-/* Line 1787 of yacc.c */
-#line 528 "command.y"
+#line 528 "command.y" /* yacc.c:1646 */
{
- int idx = find_argument((yyvsp[(1) - (2)]));
+ int idx = find_argument((yyvsp[-1]));
if (idx < 0)
- yyerror(_("enable: invalid option - \"%s\""), (yyvsp[(1) - (2)])->a_string);
+ yyerror(_("enable: invalid option - \"%s\""), (yyvsp[-1])->a_string);
else {
- efree((yyvsp[(1) - (2)])->a_string);
- (yyvsp[(1) - (2)])->a_string = NULL;
- (yyvsp[(1) - (2)])->type = D_argument;
- (yyvsp[(1) - (2)])->a_argument = argtab[idx].value;
+ efree((yyvsp[-1])->a_string);
+ (yyvsp[-1])->a_string = NULL;
+ (yyvsp[-1])->type = D_argument;
+ (yyvsp[-1])->a_argument = argtab[idx].value;
}
}
+#line 2031 "command.c" /* yacc.c:1646 */
break;
case 106:
-/* Line 1787 of yacc.c */
-#line 544 "command.y"
+#line 544 "command.y" /* yacc.c:1646 */
{
- (yyvsp[(2) - (2)])->type = D_array; /* dump all items */
- (yyvsp[(2) - (2)])->a_count = 0;
+ (yyvsp[0])->type = D_array; /* dump all items */
+ (yyvsp[0])->a_count = 0;
}
+#line 2040 "command.c" /* yacc.c:1646 */
break;
case 107:
-/* Line 1787 of yacc.c */
-#line 549 "command.y"
+#line 549 "command.y" /* yacc.c:1646 */
{
- (yyvsp[(2) - (3)])->type = D_array;
- (yyvsp[(2) - (3)])->a_count = num_dim;
+ (yyvsp[-1])->type = D_array;
+ (yyvsp[-1])->a_count = num_dim;
}
+#line 2049 "command.c" /* yacc.c:1646 */
break;
case 117:
-/* Line 1787 of yacc.c */
-#line 575 "command.y"
+#line 575 "command.y" /* yacc.c:1646 */
{ (yyval) = NULL; }
+#line 2055 "command.c" /* yacc.c:1646 */
break;
case 118:
-/* Line 1787 of yacc.c */
-#line 577 "command.y"
+#line 577 "command.y" /* yacc.c:1646 */
{ (yyval) = NULL; }
+#line 2061 "command.c" /* yacc.c:1646 */
break;
case 119:
-/* Line 1787 of yacc.c */
-#line 579 "command.y"
+#line 579 "command.y" /* yacc.c:1646 */
{
CMDARG *a;
a = mk_cmdarg(D_int);
a->a_int = -1;
append_cmdarg(a);
}
+#line 2072 "command.c" /* yacc.c:1646 */
break;
case 126:
-/* Line 1787 of yacc.c */
-#line 595 "command.y"
+#line 595 "command.y" /* yacc.c:1646 */
{
- if ((yyvsp[(1) - (3)])->a_int > (yyvsp[(3) - (3)])->a_int)
+ if ((yyvsp[-2])->a_int > (yyvsp[0])->a_int)
yyerror(_("invalid range specification: %d - %d"),
- (yyvsp[(1) - (3)])->a_int, (yyvsp[(3) - (3)])->a_int);
+ (yyvsp[-2])->a_int, (yyvsp[0])->a_int);
else
- (yyvsp[(1) - (3)])->type = D_range;
- (yyval) = (yyvsp[(1) - (3)]);
+ (yyvsp[-2])->type = D_range;
+ (yyval) = (yyvsp[-2]);
}
+#line 2085 "command.c" /* yacc.c:1646 */
break;
case 127:
-/* Line 1787 of yacc.c */
-#line 607 "command.y"
+#line 607 "command.y" /* yacc.c:1646 */
{ (yyval) = NULL; }
+#line 2091 "command.c" /* yacc.c:1646 */
break;
case 134:
-/* Line 1787 of yacc.c */
-#line 621 "command.y"
- { (yyval) = (yyvsp[(1) - (1)]); }
+#line 621 "command.y" /* yacc.c:1646 */
+ { (yyval) = (yyvsp[0]); }
+#line 2097 "command.c" /* yacc.c:1646 */
break;
case 135:
-/* Line 1787 of yacc.c */
-#line 623 "command.y"
- { (yyval) = (yyvsp[(1) - (3)]); }
+#line 623 "command.y" /* yacc.c:1646 */
+ { (yyval) = (yyvsp[-2]); }
+#line 2103 "command.c" /* yacc.c:1646 */
break;
case 137:
-/* Line 1787 of yacc.c */
-#line 629 "command.y"
+#line 629 "command.y" /* yacc.c:1646 */
{
CMDARG *a;
NODE *subs;
int count = 0;
- for (a = (yyvsp[(2) - (3)]); a != NULL; a = a->next)
+ for (a = (yyvsp[-1]); a != NULL; a = a->next)
count++;
- subs = concat_args((yyvsp[(2) - (3)]), count);
- free_cmdarg((yyvsp[(2) - (3)])->next);
- (yyvsp[(2) - (3)])->next = NULL;
- (yyvsp[(2) - (3)])->type = D_node;
- (yyvsp[(2) - (3)])->a_node = subs;
- (yyval) = (yyvsp[(2) - (3)]);
+ subs = concat_args((yyvsp[-1]), count);
+ free_cmdarg((yyvsp[-1])->next);
+ (yyvsp[-1])->next = NULL;
+ (yyvsp[-1])->type = D_node;
+ (yyvsp[-1])->a_node = subs;
+ (yyval) = (yyvsp[-1]);
}
+#line 2122 "command.c" /* yacc.c:1646 */
break;
case 139:
-/* Line 1787 of yacc.c */
-#line 648 "command.y"
- { (yyval) = (yyvsp[(1) - (1)]); num_dim = 1; }
+#line 648 "command.y" /* yacc.c:1646 */
+ { (yyval) = (yyvsp[0]); num_dim = 1; }
+#line 2128 "command.c" /* yacc.c:1646 */
break;
case 140:
-/* Line 1787 of yacc.c */
-#line 650 "command.y"
- { (yyval) = (yyvsp[(1) - (2)]); num_dim++; }
+#line 650 "command.y" /* yacc.c:1646 */
+ { (yyval) = (yyvsp[-1]); num_dim++; }
+#line 2134 "command.c" /* yacc.c:1646 */
break;
case 142:
-/* Line 1787 of yacc.c */
-#line 656 "command.y"
+#line 656 "command.y" /* yacc.c:1646 */
{
- NODE *n = (yyvsp[(2) - (2)])->a_node;
+ NODE *n = (yyvsp[0])->a_node;
if ((n->flags & NUMBER) == 0)
yyerror(_("non-numeric value for field number"));
else
- (yyvsp[(2) - (2)])->type = D_field;
- (yyval) = (yyvsp[(2) - (2)]);
+ (yyvsp[0])->type = D_field;
+ (yyval) = (yyvsp[0]);
}
+#line 2147 "command.c" /* yacc.c:1646 */
break;
case 143:
-/* Line 1787 of yacc.c */
-#line 665 "command.y"
+#line 665 "command.y" /* yacc.c:1646 */
{
/* a_string is array name, a_count is dimension count */
- (yyvsp[(1) - (2)])->type = D_subscript;
- (yyvsp[(1) - (2)])->a_count = num_dim;
- (yyval) = (yyvsp[(1) - (2)]);
+ (yyvsp[-1])->type = D_subscript;
+ (yyvsp[-1])->a_count = num_dim;
+ (yyval) = (yyvsp[-1]);
}
+#line 2158 "command.c" /* yacc.c:1646 */
break;
case 144:
-/* Line 1787 of yacc.c */
-#line 675 "command.y"
- { (yyval) = (yyvsp[(1) - (1)]); }
+#line 675 "command.y" /* yacc.c:1646 */
+ { (yyval) = (yyvsp[0]); }
+#line 2164 "command.c" /* yacc.c:1646 */
break;
case 145:
-/* Line 1787 of yacc.c */
-#line 677 "command.y"
+#line 677 "command.y" /* yacc.c:1646 */
{
- NODE *n = (yyvsp[(2) - (2)])->a_node;
+ NODE *n = (yyvsp[0])->a_node;
if ((n->flags & NUMBER) == 0)
yyerror(_("non-numeric value found, numeric expected"));
- (yyval) = (yyvsp[(2) - (2)]);
+ (yyval) = (yyvsp[0]);
}
+#line 2175 "command.c" /* yacc.c:1646 */
break;
case 146:
-/* Line 1787 of yacc.c */
-#line 684 "command.y"
+#line 684 "command.y" /* yacc.c:1646 */
{
- NODE *n = (yyvsp[(2) - (2)])->a_node;
+ NODE *n = (yyvsp[0])->a_node;
if ((n->flags & NUMBER) == 0)
yyerror(_("non-numeric value found, numeric expected"));
else
negate_num(n);
- (yyval) = (yyvsp[(2) - (2)]);
+ (yyval) = (yyvsp[0]);
}
+#line 2188 "command.c" /* yacc.c:1646 */
break;
case 147:
-/* Line 1787 of yacc.c */
-#line 696 "command.y"
+#line 696 "command.y" /* yacc.c:1646 */
{ (yyval) = NULL; }
+#line 2194 "command.c" /* yacc.c:1646 */
break;
case 148:
-/* Line 1787 of yacc.c */
-#line 698 "command.y"
- { (yyval) = (yyvsp[(1) - (1)]); }
+#line 698 "command.y" /* yacc.c:1646 */
+ { (yyval) = (yyvsp[0]); }
+#line 2200 "command.c" /* yacc.c:1646 */
break;
case 149:
-/* Line 1787 of yacc.c */
-#line 703 "command.y"
+#line 703 "command.y" /* yacc.c:1646 */
{ (yyval) = NULL; }
+#line 2206 "command.c" /* yacc.c:1646 */
break;
case 150:
-/* Line 1787 of yacc.c */
-#line 705 "command.y"
- { (yyval) = (yyvsp[(1) - (1)]); }
+#line 705 "command.y" /* yacc.c:1646 */
+ { (yyval) = (yyvsp[0]); }
+#line 2212 "command.c" /* yacc.c:1646 */
break;
case 151:
-/* Line 1787 of yacc.c */
-#line 710 "command.y"
+#line 710 "command.y" /* yacc.c:1646 */
{
- if ((yyvsp[(1) - (1)])->a_int == 0)
+ if ((yyvsp[0])->a_int == 0)
yyerror(_("non-zero integer value"));
- (yyval) = (yyvsp[(1) - (1)]);
+ (yyval) = (yyvsp[0]);
}
+#line 2222 "command.c" /* yacc.c:1646 */
break;
case 152:
-/* Line 1787 of yacc.c */
-#line 716 "command.y"
+#line 716 "command.y" /* yacc.c:1646 */
{
- if ((yyvsp[(2) - (2)])->a_int == 0)
+ if ((yyvsp[0])->a_int == 0)
yyerror(_("non-zero integer value"));
- (yyval) = (yyvsp[(2) - (2)]);
+ (yyval) = (yyvsp[0]);
}
+#line 2232 "command.c" /* yacc.c:1646 */
break;
case 153:
-/* Line 1787 of yacc.c */
-#line 725 "command.y"
- { (yyval) = (yyvsp[(1) - (1)]); }
+#line 725 "command.y" /* yacc.c:1646 */
+ { (yyval) = (yyvsp[0]); }
+#line 2238 "command.c" /* yacc.c:1646 */
break;
case 154:
-/* Line 1787 of yacc.c */
-#line 727 "command.y"
- { (yyval) = (yyvsp[(2) - (2)]); }
+#line 727 "command.y" /* yacc.c:1646 */
+ { (yyval) = (yyvsp[0]); }
+#line 2244 "command.c" /* yacc.c:1646 */
break;
case 155:
-/* Line 1787 of yacc.c */
-#line 729 "command.y"
+#line 729 "command.y" /* yacc.c:1646 */
{
- (yyvsp[(2) - (2)])->a_int = - (yyvsp[(2) - (2)])->a_int;
- (yyval) = (yyvsp[(2) - (2)]);
+ (yyvsp[0])->a_int = - (yyvsp[0])->a_int;
+ (yyval) = (yyvsp[0]);
}
+#line 2253 "command.c" /* yacc.c:1646 */
break;
case 156:
-/* Line 1787 of yacc.c */
-#line 737 "command.y"
+#line 737 "command.y" /* yacc.c:1646 */
{
if (lexptr_begin != NULL) {
if (input_from_tty && lexptr_begin[0] != '\0')
@@ -2443,11 +2262,11 @@ yyreduce:
lexptr_begin = NULL;
}
}
+#line 2266 "command.c" /* yacc.c:1646 */
break;
-/* Line 1787 of yacc.c */
-#line 2451 "command.c"
+#line 2270 "command.c" /* yacc.c:1646 */
default: break;
}
/* User semantic actions sometimes alter yychar, and that requires
@@ -2469,7 +2288,7 @@ yyreduce:
*++yyvsp = yyval;
- /* Now `shift' the result of the reduction. Determine what state
+ /* Now 'shift' the result of the reduction. Determine what state
that goes to, based on the state we popped back to and the rule
number reduced by. */
@@ -2484,9 +2303,9 @@ yyreduce:
goto yynewstate;
-/*------------------------------------.
-| yyerrlab -- here on detecting error |
-`------------------------------------*/
+/*--------------------------------------.
+| yyerrlab -- here on detecting error. |
+`--------------------------------------*/
yyerrlab:
/* Make sure we have latest lookahead translation. See comments at
user semantic actions for why this is necessary. */
@@ -2537,20 +2356,20 @@ yyerrlab:
if (yyerrstatus == 3)
{
/* If just tried and failed to reuse lookahead token after an
- error, discard it. */
+ error, discard it. */
if (yychar <= YYEOF)
- {
- /* Return failure if at end of input. */
- if (yychar == YYEOF)
- YYABORT;
- }
+ {
+ /* Return failure if at end of input. */
+ if (yychar == YYEOF)
+ YYABORT;
+ }
else
- {
- yydestruct ("Error: discarding",
- yytoken, &yylval);
- yychar = YYEMPTY;
- }
+ {
+ yydestruct ("Error: discarding",
+ yytoken, &yylval);
+ yychar = YYEMPTY;
+ }
}
/* Else will try to reuse lookahead token after shifting the error
@@ -2569,7 +2388,7 @@ yyerrorlab:
if (/*CONSTCOND*/ 0)
goto yyerrorlab;
- /* Do not reclaim the symbols of the rule which action triggered
+ /* Do not reclaim the symbols of the rule whose action triggered
this YYERROR. */
YYPOPSTACK (yylen);
yylen = 0;
@@ -2582,29 +2401,29 @@ yyerrorlab:
| yyerrlab1 -- common code for both syntax error and YYERROR. |
`-------------------------------------------------------------*/
yyerrlab1:
- yyerrstatus = 3; /* Each real token shifted decrements this. */
+ yyerrstatus = 3; /* Each real token shifted decrements this. */
for (;;)
{
yyn = yypact[yystate];
if (!yypact_value_is_default (yyn))
- {
- yyn += YYTERROR;
- if (0 <= yyn && yyn <= YYLAST && yycheck[yyn] == YYTERROR)
- {
- yyn = yytable[yyn];
- if (0 < yyn)
- break;
- }
- }
+ {
+ yyn += YYTERROR;
+ if (0 <= yyn && yyn <= YYLAST && yycheck[yyn] == YYTERROR)
+ {
+ yyn = yytable[yyn];
+ if (0 < yyn)
+ break;
+ }
+ }
/* Pop the current state because it cannot handle the error token. */
if (yyssp == yyss)
- YYABORT;
+ YYABORT;
yydestruct ("Error: popping",
- yystos[yystate], yyvsp);
+ yystos[yystate], yyvsp);
YYPOPSTACK (1);
yystate = *yyssp;
YY_STACK_PRINT (yyss, yyssp);
@@ -2655,14 +2474,14 @@ yyreturn:
yydestruct ("Cleanup: discarding lookahead",
yytoken, &yylval);
}
- /* Do not reclaim the symbols of the rule which action triggered
+ /* Do not reclaim the symbols of the rule whose action triggered
this YYABORT or YYACCEPT. */
YYPOPSTACK (yylen);
YY_STACK_PRINT (yyss, yyssp);
while (yyssp != yyss)
{
yydestruct ("Cleanup: popping",
- yystos[*yyssp], yyvsp);
+ yystos[*yyssp], yyvsp);
YYPOPSTACK (1);
}
#ifndef yyoverflow
@@ -2673,13 +2492,9 @@ yyreturn:
if (yymsg != yymsgbuf)
YYSTACK_FREE (yymsg);
#endif
- /* Make sure YYID is used. */
- return YYID (yyresult);
+ return yyresult;
}
-
-
-/* Line 2050 of yacc.c */
-#line 747 "command.y"
+#line 747 "command.y" /* yacc.c:1906 */
@@ -2852,7 +2667,7 @@ struct argtoken argtab[] = {
{ "sources", D_info, A_SOURCES },
{ "variables", D_info, A_VARIABLES },
{ "watch", D_info, A_WATCH },
- { NULL, D_illegal, 0 },
+ { NULL, D_illegal, A_NONE },
};
@@ -3395,6 +3210,8 @@ do_help(CMDARG *arg, int cmd)
}
+#ifdef HAVE_LIBREADLINE
+
/* next_word --- find the next word in a line to complete
* (word seperation characters are space and tab).
*/
@@ -3421,8 +3238,6 @@ next_word(char *p, int len, char **endp)
return p;
}
-#ifdef HAVE_LIBREADLINE
-
/* command_completion --- attempt to complete based on the word number in line;
* try to complete on command names if this is the first word; for the next
* word(s), the type of completion depends on the command name (first word).
diff --git a/command.y b/command.y
index f6c79812..576af159 100644
--- a/command.y
+++ b/command.y
@@ -3,7 +3,7 @@
*/
/*
- * Copyright (C) 2004, 2010, 2011 the Free Software Foundation, Inc.
+ * Copyright (C) 2004, 2010, 2011, 2014 the Free Software Foundation, Inc.
*
* This file is part of GAWK, the GNU implementation of the
* AWK Programming Language.
@@ -51,10 +51,10 @@ static bool in_eval = false;
static const char start_EVAL[] = "function @eval(){";
static const char end_EVAL[] = "}";
static CMDARG *append_statement(CMDARG *stmt_list, char *stmt);
-static char *next_word(char *p, int len, char **endp);
static NODE *concat_args(CMDARG *a, int count);
#ifdef HAVE_LIBREADLINE
+static char *next_word(char *p, int len, char **endp);
static void history_expand_line(char **line);
static char *command_generator(const char *text, int state);
static char *srcfile_generator(const char *text, int state);
@@ -916,7 +916,7 @@ struct argtoken argtab[] = {
{ "sources", D_info, A_SOURCES },
{ "variables", D_info, A_VARIABLES },
{ "watch", D_info, A_WATCH },
- { NULL, D_illegal, 0 },
+ { NULL, D_illegal, A_NONE },
};
@@ -1459,6 +1459,8 @@ do_help(CMDARG *arg, int cmd)
}
+#ifdef HAVE_LIBREADLINE
+
/* next_word --- find the next word in a line to complete
* (word seperation characters are space and tab).
*/
@@ -1485,8 +1487,6 @@ next_word(char *p, int len, char **endp)
return p;
}
-#ifdef HAVE_LIBREADLINE
-
/* command_completion --- attempt to complete based on the word number in line;
* try to complete on command names if this is the first word; for the next
* word(s), the type of completion depends on the command name (first word).
diff --git a/config.guess b/config.guess
index 872b96a1..4438cd70 100755
--- a/config.guess
+++ b/config.guess
@@ -1,14 +1,12 @@
#! /bin/sh
# Attempt to guess a canonical system name.
-# Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999,
-# 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010,
-# 2011, 2012 Free Software Foundation, Inc.
+# Copyright 1992-2014 Free Software Foundation, Inc.
-timestamp='2012-09-25'
+timestamp='2014-01-01'
# This file is free software; you can redistribute it and/or modify it
# under the terms of the GNU General Public License as published by
-# the Free Software Foundation; either version 2 of the License, or
+# the Free Software Foundation; either version 3 of the License, or
# (at your option) any later version.
#
# This program is distributed in the hope that it will be useful, but
@@ -22,19 +20,17 @@ timestamp='2012-09-25'
# As a special exception to the GNU General Public License, if you
# distribute this file as part of a program that contains a
# configuration script generated by Autoconf, you may include it under
-# the same distribution terms that you use for the rest of that program.
-
-
-# Originally written by Per Bothner. Please send patches (context
-# diff format) to <config-patches@gnu.org> and include a ChangeLog
-# entry.
+# the same distribution terms that you use for the rest of that
+# program. This Exception is an additional permission under section 7
+# of the GNU General Public License, version 3 ("GPLv3").
#
-# This script attempts to guess a canonical system name similar to
-# config.sub. If it succeeds, it prints the system name on stdout, and
-# exits with 0. Otherwise, it exits with 1.
+# Originally written by Per Bothner.
#
# You can get the latest version of this script from:
# http://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.guess;hb=HEAD
+#
+# Please send patches with a ChangeLog entry to config-patches@gnu.org.
+
me=`echo "$0" | sed -e 's,.*/,,'`
@@ -54,9 +50,7 @@ version="\
GNU config.guess ($timestamp)
Originally written by Per Bothner.
-Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000,
-2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012
-Free Software Foundation, Inc.
+Copyright 1992-2014 Free Software Foundation, Inc.
This is free software; see the source for copying conditions. There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE."
@@ -138,6 +132,27 @@ UNAME_RELEASE=`(uname -r) 2>/dev/null` || UNAME_RELEASE=unknown
UNAME_SYSTEM=`(uname -s) 2>/dev/null` || UNAME_SYSTEM=unknown
UNAME_VERSION=`(uname -v) 2>/dev/null` || UNAME_VERSION=unknown
+case "${UNAME_SYSTEM}" in
+Linux|GNU|GNU/*)
+ # If the system lacks a compiler, then just pick glibc.
+ # We could probably try harder.
+ LIBC=gnu
+
+ eval $set_cc_for_build
+ cat <<-EOF > $dummy.c
+ #include <features.h>
+ #if defined(__UCLIBC__)
+ LIBC=uclibc
+ #elif defined(__dietlibc__)
+ LIBC=dietlibc
+ #else
+ LIBC=gnu
+ #endif
+ EOF
+ eval `$CC_FOR_BUILD -E $dummy.c 2>/dev/null | grep '^LIBC'`
+ ;;
+esac
+
# Note: order is significant - the case branches are not exclusive.
case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in
@@ -859,21 +874,21 @@ EOF
exit ;;
*:GNU:*:*)
# the GNU system
- echo `echo ${UNAME_MACHINE}|sed -e 's,[-/].*$,,'`-unknown-gnu`echo ${UNAME_RELEASE}|sed -e 's,/.*$,,'`
+ echo `echo ${UNAME_MACHINE}|sed -e 's,[-/].*$,,'`-unknown-${LIBC}`echo ${UNAME_RELEASE}|sed -e 's,/.*$,,'`
exit ;;
*:GNU/*:*:*)
# other systems with GNU libc and userland
- echo ${UNAME_MACHINE}-unknown-`echo ${UNAME_SYSTEM} | sed 's,^[^/]*/,,' | tr '[A-Z]' '[a-z]'``echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'`-gnu
+ echo ${UNAME_MACHINE}-unknown-`echo ${UNAME_SYSTEM} | sed 's,^[^/]*/,,' | tr '[A-Z]' '[a-z]'``echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'`-${LIBC}
exit ;;
i*86:Minix:*:*)
echo ${UNAME_MACHINE}-pc-minix
exit ;;
aarch64:Linux:*:*)
- echo ${UNAME_MACHINE}-unknown-linux-gnu
+ echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
exit ;;
aarch64_be:Linux:*:*)
UNAME_MACHINE=aarch64_be
- echo ${UNAME_MACHINE}-unknown-linux-gnu
+ echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
exit ;;
alpha:Linux:*:*)
case `sed -n '/^cpu model/s/^.*: \(.*\)/\1/p' < /proc/cpuinfo` in
@@ -886,59 +901,54 @@ EOF
EV68*) UNAME_MACHINE=alphaev68 ;;
esac
objdump --private-headers /bin/sh | grep -q ld.so.1
- if test "$?" = 0 ; then LIBC="libc1" ; else LIBC="" ; fi
- echo ${UNAME_MACHINE}-unknown-linux-gnu${LIBC}
+ if test "$?" = 0 ; then LIBC="gnulibc1" ; fi
+ echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
+ exit ;;
+ arc:Linux:*:* | arceb:Linux:*:*)
+ echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
exit ;;
arm*:Linux:*:*)
eval $set_cc_for_build
if echo __ARM_EABI__ | $CC_FOR_BUILD -E - 2>/dev/null \
| grep -q __ARM_EABI__
then
- echo ${UNAME_MACHINE}-unknown-linux-gnu
+ echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
else
if echo __ARM_PCS_VFP | $CC_FOR_BUILD -E - 2>/dev/null \
| grep -q __ARM_PCS_VFP
then
- echo ${UNAME_MACHINE}-unknown-linux-gnueabi
+ echo ${UNAME_MACHINE}-unknown-linux-${LIBC}eabi
else
- echo ${UNAME_MACHINE}-unknown-linux-gnueabihf
+ echo ${UNAME_MACHINE}-unknown-linux-${LIBC}eabihf
fi
fi
exit ;;
avr32*:Linux:*:*)
- echo ${UNAME_MACHINE}-unknown-linux-gnu
+ echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
exit ;;
cris:Linux:*:*)
- echo ${UNAME_MACHINE}-axis-linux-gnu
+ echo ${UNAME_MACHINE}-axis-linux-${LIBC}
exit ;;
crisv32:Linux:*:*)
- echo ${UNAME_MACHINE}-axis-linux-gnu
+ echo ${UNAME_MACHINE}-axis-linux-${LIBC}
exit ;;
frv:Linux:*:*)
- echo ${UNAME_MACHINE}-unknown-linux-gnu
+ echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
exit ;;
hexagon:Linux:*:*)
- echo ${UNAME_MACHINE}-unknown-linux-gnu
+ echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
exit ;;
i*86:Linux:*:*)
- LIBC=gnu
- eval $set_cc_for_build
- sed 's/^ //' << EOF >$dummy.c
- #ifdef __dietlibc__
- LIBC=dietlibc
- #endif
-EOF
- eval `$CC_FOR_BUILD -E $dummy.c 2>/dev/null | grep '^LIBC'`
- echo "${UNAME_MACHINE}-pc-linux-${LIBC}"
+ echo ${UNAME_MACHINE}-pc-linux-${LIBC}
exit ;;
ia64:Linux:*:*)
- echo ${UNAME_MACHINE}-unknown-linux-gnu
+ echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
exit ;;
m32r*:Linux:*:*)
- echo ${UNAME_MACHINE}-unknown-linux-gnu
+ echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
exit ;;
m68*:Linux:*:*)
- echo ${UNAME_MACHINE}-unknown-linux-gnu
+ echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
exit ;;
mips:Linux:*:* | mips64:Linux:*:*)
eval $set_cc_for_build
@@ -957,54 +967,63 @@ EOF
#endif
EOF
eval `$CC_FOR_BUILD -E $dummy.c 2>/dev/null | grep '^CPU'`
- test x"${CPU}" != x && { echo "${CPU}-unknown-linux-gnu"; exit; }
+ test x"${CPU}" != x && { echo "${CPU}-unknown-linux-${LIBC}"; exit; }
;;
+ or1k:Linux:*:*)
+ echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
+ exit ;;
or32:Linux:*:*)
- echo ${UNAME_MACHINE}-unknown-linux-gnu
+ echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
exit ;;
padre:Linux:*:*)
- echo sparc-unknown-linux-gnu
+ echo sparc-unknown-linux-${LIBC}
exit ;;
parisc64:Linux:*:* | hppa64:Linux:*:*)
- echo hppa64-unknown-linux-gnu
+ echo hppa64-unknown-linux-${LIBC}
exit ;;
parisc:Linux:*:* | hppa:Linux:*:*)
# Look for CPU level
case `grep '^cpu[^a-z]*:' /proc/cpuinfo 2>/dev/null | cut -d' ' -f2` in
- PA7*) echo hppa1.1-unknown-linux-gnu ;;
- PA8*) echo hppa2.0-unknown-linux-gnu ;;
- *) echo hppa-unknown-linux-gnu ;;
+ PA7*) echo hppa1.1-unknown-linux-${LIBC} ;;
+ PA8*) echo hppa2.0-unknown-linux-${LIBC} ;;
+ *) echo hppa-unknown-linux-${LIBC} ;;
esac
exit ;;
ppc64:Linux:*:*)
- echo powerpc64-unknown-linux-gnu
+ echo powerpc64-unknown-linux-${LIBC}
exit ;;
ppc:Linux:*:*)
- echo powerpc-unknown-linux-gnu
+ echo powerpc-unknown-linux-${LIBC}
+ exit ;;
+ ppc64le:Linux:*:*)
+ echo powerpc64le-unknown-linux-${LIBC}
+ exit ;;
+ ppcle:Linux:*:*)
+ echo powerpcle-unknown-linux-${LIBC}
exit ;;
s390:Linux:*:* | s390x:Linux:*:*)
- echo ${UNAME_MACHINE}-ibm-linux
+ echo ${UNAME_MACHINE}-ibm-linux-${LIBC}
exit ;;
sh64*:Linux:*:*)
- echo ${UNAME_MACHINE}-unknown-linux-gnu
+ echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
exit ;;
sh*:Linux:*:*)
- echo ${UNAME_MACHINE}-unknown-linux-gnu
+ echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
exit ;;
sparc:Linux:*:* | sparc64:Linux:*:*)
- echo ${UNAME_MACHINE}-unknown-linux-gnu
+ echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
exit ;;
tile*:Linux:*:*)
- echo ${UNAME_MACHINE}-unknown-linux-gnu
+ echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
exit ;;
vax:Linux:*:*)
- echo ${UNAME_MACHINE}-dec-linux-gnu
+ echo ${UNAME_MACHINE}-dec-linux-${LIBC}
exit ;;
x86_64:Linux:*:*)
- echo ${UNAME_MACHINE}-unknown-linux-gnu
+ echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
exit ;;
xtensa*:Linux:*:*)
- echo ${UNAME_MACHINE}-unknown-linux-gnu
+ echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
exit ;;
i*86:DYNIX/ptx:4*:*)
# ptx 4.0 does uname -s correctly, with DYNIX/ptx in there.
@@ -1237,19 +1256,31 @@ EOF
exit ;;
*:Darwin:*:*)
UNAME_PROCESSOR=`uname -p` || UNAME_PROCESSOR=unknown
- case $UNAME_PROCESSOR in
- i386)
- eval $set_cc_for_build
- if [ "$CC_FOR_BUILD" != 'no_compiler_found' ]; then
- if (echo '#ifdef __LP64__'; echo IS_64BIT_ARCH; echo '#endif') | \
- (CCOPTS= $CC_FOR_BUILD -E - 2>/dev/null) | \
- grep IS_64BIT_ARCH >/dev/null
- then
- UNAME_PROCESSOR="x86_64"
- fi
- fi ;;
- unknown) UNAME_PROCESSOR=powerpc ;;
- esac
+ eval $set_cc_for_build
+ if test "$UNAME_PROCESSOR" = unknown ; then
+ UNAME_PROCESSOR=powerpc
+ fi
+ if test `echo "$UNAME_RELEASE" | sed -e 's/\..*//'` -le 10 ; then
+ if [ "$CC_FOR_BUILD" != 'no_compiler_found' ]; then
+ if (echo '#ifdef __LP64__'; echo IS_64BIT_ARCH; echo '#endif') | \
+ (CCOPTS= $CC_FOR_BUILD -E - 2>/dev/null) | \
+ grep IS_64BIT_ARCH >/dev/null
+ then
+ case $UNAME_PROCESSOR in
+ i386) UNAME_PROCESSOR=x86_64 ;;
+ powerpc) UNAME_PROCESSOR=powerpc64 ;;
+ esac
+ fi
+ fi
+ elif test "$UNAME_PROCESSOR" = i386 ; then
+ # Avoid executing cc on OS X 10.9, as it ships with a stub
+ # that puts up a graphical alert prompting to install
+ # developer tools. Any system running Mac OS X 10.7 or
+ # later (Darwin 11 and later) is required to have a 64-bit
+ # processor. This is not true of the ARM version of Darwin
+ # that Apple uses in portable devices.
+ UNAME_PROCESSOR=x86_64
+ fi
echo ${UNAME_PROCESSOR}-apple-darwin${UNAME_RELEASE}
exit ;;
*:procnto*:*:* | *:QNX:[0123456789]*:*)
diff --git a/config.rpath b/config.rpath
index 17298f23..ab6fd995 100755
--- a/config.rpath
+++ b/config.rpath
@@ -2,7 +2,7 @@
# Output a system dependent set of variables, describing how to set the
# run time search path of shared libraries in an executable.
#
-# Copyright 1996-2010 Free Software Foundation, Inc.
+# Copyright 1996-2014 Free Software Foundation, Inc.
# Taken from GNU libtool, 2001
# Originally by Gordon Matzigkeit <gord@gnu.ai.mit.edu>, 1996
#
@@ -25,7 +25,7 @@
# known workaround is to choose shorter directory names for the build
# directory and/or the installation directory.
-# All known linkers require a `.a' archive for static linking (except MSVC,
+# All known linkers require a '.a' archive for static linking (except MSVC,
# which needs '.lib').
libext=a
shrext=.so
@@ -57,13 +57,6 @@ else
aix*)
wl='-Wl,'
;;
- darwin*)
- case $cc_basename in
- xlc*)
- wl='-Wl,'
- ;;
- esac
- ;;
mingw* | cygwin* | pw32* | os2* | cegcc*)
;;
hpux9* | hpux10* | hpux11*)
@@ -72,9 +65,7 @@ else
irix5* | irix6* | nonstopux*)
wl='-Wl,'
;;
- newsos6)
- ;;
- linux* | k*bsd*-gnu)
+ linux* | k*bsd*-gnu | kopensolaris*-gnu)
case $cc_basename in
ecc*)
wl='-Wl,'
@@ -85,17 +76,26 @@ else
lf95*)
wl='-Wl,'
;;
- pgcc | pgf77 | pgf90)
+ nagfor*)
+ wl='-Wl,-Wl,,'
+ ;;
+ pgcc* | pgf77* | pgf90* | pgf95* | pgfortran*)
wl='-Wl,'
;;
ccc*)
wl='-Wl,'
;;
+ xl* | bgxl* | bgf* | mpixl*)
+ wl='-Wl,'
+ ;;
como)
wl='-lopt='
;;
*)
case `$CC -V 2>&1 | sed 5q` in
+ *Sun\ F* | *Sun*Fortran*)
+ wl=
+ ;;
*Sun\ C*)
wl='-Wl,'
;;
@@ -103,13 +103,24 @@ else
;;
esac
;;
+ newsos6)
+ ;;
+ *nto* | *qnx*)
+ ;;
osf3* | osf4* | osf5*)
wl='-Wl,'
;;
rdos*)
;;
solaris*)
- wl='-Wl,'
+ case $cc_basename in
+ f77* | f90* | f95* | sunf77* | sunf90* | sunf95*)
+ wl='-Qoption ld '
+ ;;
+ *)
+ wl='-Wl,'
+ ;;
+ esac
;;
sunos4*)
wl='-Qoption ld '
@@ -171,15 +182,14 @@ if test "$with_gnu_ld" = yes; then
fi
;;
amigaos*)
- hardcode_libdir_flag_spec='-L$libdir'
- hardcode_minus_L=yes
- # Samuel A. Falvo II <kc5tja@dolphin.openprojects.net> reports
- # that the semantics of dynamic libraries on AmigaOS, at least up
- # to version 4, is to share data among multiple programs linked
- # with the same dynamic library. Since this doesn't match the
- # behavior of shared libraries on other platforms, we cannot use
- # them.
- ld_shlibs=no
+ case "$host_cpu" in
+ powerpc)
+ ;;
+ m68k)
+ hardcode_libdir_flag_spec='-L$libdir'
+ hardcode_minus_L=yes
+ ;;
+ esac
;;
beos*)
if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then
@@ -198,11 +208,13 @@ if test "$with_gnu_ld" = yes; then
ld_shlibs=no
fi
;;
+ haiku*)
+ ;;
interix[3-9]*)
hardcode_direct=no
hardcode_libdir_flag_spec='${wl}-rpath,$libdir'
;;
- gnu* | linux* | k*bsd*-gnu)
+ gnu* | linux* | tpf* | k*bsd*-gnu | kopensolaris*-gnu)
if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then
:
else
@@ -325,10 +337,14 @@ else
fi
;;
amigaos*)
- hardcode_libdir_flag_spec='-L$libdir'
- hardcode_minus_L=yes
- # see comment about different semantics on the GNU ld section
- ld_shlibs=no
+ case "$host_cpu" in
+ powerpc)
+ ;;
+ m68k)
+ hardcode_libdir_flag_spec='-L$libdir'
+ hardcode_minus_L=yes
+ ;;
+ esac
;;
bsdi[45]*)
;;
@@ -342,24 +358,15 @@ else
;;
darwin* | rhapsody*)
hardcode_direct=no
- if test "$GCC" = yes ; then
+ if { case $cc_basename in ifort*) true;; *) test "$GCC" = yes;; esac; }; then
:
else
- case $cc_basename in
- xlc*)
- ;;
- *)
- ld_shlibs=no
- ;;
- esac
+ ld_shlibs=no
fi
;;
dgux*)
hardcode_libdir_flag_spec='-L$libdir'
;;
- freebsd1*)
- ld_shlibs=no
- ;;
freebsd2.2*)
hardcode_libdir_flag_spec='-R$libdir'
hardcode_direct=yes
@@ -420,6 +427,8 @@ else
hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir'
hardcode_libdir_separator=:
;;
+ *nto* | *qnx*)
+ ;;
openbsd*)
if test -f /usr/libexec/ld.so; then
hardcode_direct=yes
@@ -515,7 +524,12 @@ case "$host_os" in
library_names_spec='$libname$shrext'
;;
amigaos*)
- library_names_spec='$libname.a'
+ case "$host_cpu" in
+ powerpc*)
+ library_names_spec='$libname$shrext' ;;
+ m68k)
+ library_names_spec='$libname.a' ;;
+ esac
;;
beos*)
library_names_spec='$libname$shrext'
@@ -534,8 +548,6 @@ case "$host_os" in
dgux*)
library_names_spec='$libname$shrext'
;;
- freebsd1*)
- ;;
freebsd* | dragonfly*)
case "$host_os" in
freebsd[123]*)
@@ -547,6 +559,9 @@ case "$host_os" in
gnu*)
library_names_spec='$libname$shrext'
;;
+ haiku*)
+ library_names_spec='$libname$shrext'
+ ;;
hpux9* | hpux10* | hpux11*)
case $host_cpu in
ia64*)
@@ -582,7 +597,7 @@ case "$host_os" in
;;
linux*oldld* | linux*aout* | linux*coff*)
;;
- linux* | k*bsd*-gnu)
+ linux* | k*bsd*-gnu | kopensolaris*-gnu)
library_names_spec='$libname$shrext'
;;
knetbsd*-gnu)
@@ -594,7 +609,7 @@ case "$host_os" in
newsos6)
library_names_spec='$libname$shrext'
;;
- nto-qnx*)
+ *nto* | *qnx*)
library_names_spec='$libname$shrext'
;;
openbsd*)
@@ -625,6 +640,9 @@ case "$host_os" in
sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX* | sysv4*uw2*)
library_names_spec='$libname$shrext'
;;
+ tpf*)
+ library_names_spec='$libname$shrext'
+ ;;
uts4*)
library_names_spec='$libname$shrext'
;;
diff --git a/config.sub b/config.sub
index 8df55110..092cff00 100755
--- a/config.sub
+++ b/config.sub
@@ -1,24 +1,18 @@
#! /bin/sh
# Configuration validation subroutine script.
-# Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999,
-# 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010,
-# 2011, 2012 Free Software Foundation, Inc.
+# Copyright 1992-2014 Free Software Foundation, Inc.
-timestamp='2012-12-06'
+timestamp='2014-01-01'
-# This file is (in principle) common to ALL GNU software.
-# The presence of a machine in this file suggests that SOME GNU software
-# can handle that machine. It does not imply ALL GNU software can.
-#
-# This file is free software; you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation; either version 2 of the License, or
+# This file is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 3 of the License, or
# (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.
+# 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, see <http://www.gnu.org/licenses/>.
@@ -26,11 +20,12 @@ timestamp='2012-12-06'
# As a special exception to the GNU General Public License, if you
# distribute this file as part of a program that contains a
# configuration script generated by Autoconf, you may include it under
-# the same distribution terms that you use for the rest of that program.
+# the same distribution terms that you use for the rest of that
+# program. This Exception is an additional permission under section 7
+# of the GNU General Public License, version 3 ("GPLv3").
-# Please send patches to <config-patches@gnu.org>. Submit a context
-# diff and a properly formatted GNU ChangeLog entry.
+# Please send patches with a ChangeLog entry to config-patches@gnu.org.
#
# Configuration subroutine to validate and canonicalize a configuration type.
# Supply the specified configuration type as an argument.
@@ -73,9 +68,7 @@ Report bugs and patches to <config-patches@gnu.org>."
version="\
GNU config.sub ($timestamp)
-Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000,
-2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012
-Free Software Foundation, Inc.
+Copyright 1992-2014 Free Software Foundation, Inc.
This is free software; see the source for copying conditions. There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE."
@@ -259,12 +252,12 @@ case $basic_machine in
| alpha | alphaev[4-8] | alphaev56 | alphaev6[78] | alphapca5[67] \
| alpha64 | alpha64ev[4-8] | alpha64ev56 | alpha64ev6[78] | alpha64pca5[67] \
| am33_2.0 \
- | arc \
+ | arc | arceb \
| arm | arm[bl]e | arme[lb] | armv[2-8] | armv[3-8][lb] | armv7[arm] \
| avr | avr32 \
| be32 | be64 \
| bfin \
- | c4x | clipper \
+ | c4x | c8051 | clipper \
| d10v | d30v | dlx | dsp16xx \
| epiphany \
| fido | fr30 | frv \
@@ -272,6 +265,7 @@ case $basic_machine in
| hexagon \
| i370 | i860 | i960 | ia64 \
| ip2k | iq2000 \
+ | k1om \
| le32 | le64 \
| lm32 \
| m32c | m32r | m32rle | m68000 | m68k | m88k \
@@ -293,16 +287,17 @@ case $basic_machine in
| mipsisa64r2 | mipsisa64r2el \
| mipsisa64sb1 | mipsisa64sb1el \
| mipsisa64sr71k | mipsisa64sr71kel \
+ | mipsr5900 | mipsr5900el \
| mipstx39 | mipstx39el \
| mn10200 | mn10300 \
| moxie \
| mt \
| msp430 \
| nds32 | nds32le | nds32be \
- | nios | nios2 \
+ | nios | nios2 | nios2eb | nios2el \
| ns16k | ns32k \
| open8 \
- | or32 \
+ | or1k | or32 \
| pdp10 | pdp11 | pj | pjl \
| powerpc | powerpc64 | powerpc64le | powerpcle \
| pyramid \
@@ -330,7 +325,7 @@ case $basic_machine in
c6x)
basic_machine=tic6x-unknown
;;
- m6811 | m68hc11 | m6812 | m68hc12 | m68hcs12x | picochip)
+ m6811 | m68hc11 | m6812 | m68hc12 | m68hcs12x | nvptx | picochip)
basic_machine=$basic_machine-unknown
os=-none
;;
@@ -372,13 +367,13 @@ case $basic_machine in
| aarch64-* | aarch64_be-* \
| alpha-* | alphaev[4-8]-* | alphaev56-* | alphaev6[78]-* \
| alpha64-* | alpha64ev[4-8]-* | alpha64ev56-* | alpha64ev6[78]-* \
- | alphapca5[67]-* | alpha64pca5[67]-* | arc-* \
+ | alphapca5[67]-* | alpha64pca5[67]-* | arc-* | arceb-* \
| arm-* | armbe-* | armle-* | armeb-* | armv*-* \
| avr-* | avr32-* \
| be32-* | be64-* \
| bfin-* | bs2000-* \
| c[123]* | c30-* | [cjt]90-* | c4x-* \
- | clipper-* | craynv-* | cydra-* \
+ | c8051-* | clipper-* | craynv-* | cydra-* \
| d10v-* | d30v-* | dlx-* \
| elxsi-* \
| f30[01]-* | f700-* | fido-* | fr30-* | frv-* | fx80-* \
@@ -387,6 +382,7 @@ case $basic_machine in
| hexagon-* \
| i*86-* | i860-* | i960-* | ia64-* \
| ip2k-* | iq2000-* \
+ | k1om-* \
| le32-* | le64-* \
| lm32-* \
| m32c-* | m32r-* | m32rle-* \
@@ -410,12 +406,13 @@ case $basic_machine in
| mipsisa64r2-* | mipsisa64r2el-* \
| mipsisa64sb1-* | mipsisa64sb1el-* \
| mipsisa64sr71k-* | mipsisa64sr71kel-* \
+ | mipsr5900-* | mipsr5900el-* \
| mipstx39-* | mipstx39el-* \
| mmix-* \
| mt-* \
| msp430-* \
| nds32-* | nds32le-* | nds32be-* \
- | nios-* | nios2-* \
+ | nios-* | nios2-* | nios2eb-* | nios2el-* \
| none-* | np1-* | ns16k-* | ns32k-* \
| open8-* \
| orion-* \
@@ -799,7 +796,7 @@ case $basic_machine in
os=-mingw64
;;
mingw32)
- basic_machine=i386-pc
+ basic_machine=i686-pc
os=-mingw32
;;
mingw32ce)
@@ -835,7 +832,7 @@ case $basic_machine in
basic_machine=`echo $basic_machine | sed -e 's/ms1-/mt-/'`
;;
msys)
- basic_machine=i386-pc
+ basic_machine=i686-pc
os=-msys
;;
mvs)
@@ -1357,7 +1354,7 @@ case $os in
-gnu* | -bsd* | -mach* | -minix* | -genix* | -ultrix* | -irix* \
| -*vms* | -sco* | -esix* | -isc* | -aix* | -cnk* | -sunos | -sunos[34]*\
| -hpux* | -unos* | -osf* | -luna* | -dgux* | -auroraux* | -solaris* \
- | -sym* | -kopensolaris* \
+ | -sym* | -kopensolaris* | -plan9* \
| -amigaos* | -amigados* | -msdos* | -newsos* | -unicos* | -aof* \
| -aos* | -aros* \
| -nindy* | -vxsim* | -vxworks* | -ebmon* | -hms* | -mvs* \
@@ -1503,9 +1500,6 @@ case $os in
-aros*)
os=-aros
;;
- -kaos*)
- os=-kaos
- ;;
-zvmoe)
os=-zvmoe
;;
@@ -1554,6 +1548,9 @@ case $basic_machine in
c4x-* | tic4x-*)
os=-coff
;;
+ c8051-*)
+ os=-elf
+ ;;
hexagon-*)
os=-elf
;;
@@ -1597,6 +1594,9 @@ case $basic_machine in
mips*-*)
os=-elf
;;
+ or1k-*)
+ os=-elf
+ ;;
or32-*)
os=-coff
;;
diff --git a/configh.in b/configh.in
index 999e5db5..555a75ba 100644
--- a/configh.in
+++ b/configh.in
@@ -42,9 +42,6 @@
*/
#undef HAVE_DECL_TZNAME
-/* Define to 1 if you don't have `vprintf' but do have `_doprnt.' */
-#undef HAVE_DOPRNT
-
/* Define to 1 if you have the <fcntl.h> header file. */
#undef HAVE_FCNTL_H
@@ -66,6 +63,9 @@
/* Define to 1 if you have the `grantpt' function. */
#undef HAVE_GRANTPT
+/* Do we have history_list? */
+#undef HAVE_HISTORY_LIST
+
/* Define if you have the iconv() function and it works. */
#undef HAVE_ICONV
@@ -296,9 +296,6 @@
/* Define to 1 if you have the `usleep' function. */
#undef HAVE_USLEEP
-/* Define to 1 if you have the `vprintf' function. */
-#undef HAVE_VPRINTF
-
/* Define to 1 if you have the `waitpid' function. */
#undef HAVE_WAITPID
diff --git a/configure b/configure
index 62f0413d..0e36a66d 100755
--- a/configure
+++ b/configure
@@ -1,6 +1,6 @@
#! /bin/sh
# Guess values for system-dependent variables and create Makefiles.
-# Generated by GNU Autoconf 2.69 for GNU Awk 4.1.0.
+# Generated by GNU Autoconf 2.69 for GNU Awk 4.1.60.
#
# Report bugs to <bug-gawk@gnu.org>.
#
@@ -580,8 +580,8 @@ MAKEFLAGS=
# Identity of this package.
PACKAGE_NAME='GNU Awk'
PACKAGE_TARNAME='gawk'
-PACKAGE_VERSION='4.1.0'
-PACKAGE_STRING='GNU Awk 4.1.0'
+PACKAGE_VERSION='4.1.60'
+PACKAGE_STRING='GNU Awk 4.1.60'
PACKAGE_BUGREPORT='bug-gawk@gnu.org'
PACKAGE_URL='http://www.gnu.org/software/gawk/'
@@ -647,14 +647,6 @@ INTLLIBS
LTLIBICONV
LIBICONV
INTL_MACOSX_LIBS
-host_os
-host_vendor
-host_cpu
-host
-build_os
-build_vendor
-build_cpu
-build
XGETTEXT_EXTRA_OPTIONS
MSGMERGE
XGETTEXT_015
@@ -690,6 +682,14 @@ CPPFLAGS
LDFLAGS
CFLAGS
CC
+host_os
+host_vendor
+host_cpu
+host
+build_os
+build_vendor
+build_cpu
+build
AM_BACKSLASH
AM_DEFAULT_VERBOSITY
AM_DEFAULT_V
@@ -769,6 +769,7 @@ enable_rpath
with_libiconv_prefix
with_libintl_prefix
with_libsigsegv_prefix
+enable_extensions
with_readline
with_mpfr
'
@@ -1323,7 +1324,7 @@ if test "$ac_init_help" = "long"; then
# Omit some internal or obsolete options to make the list less imposing.
# This message is too long to be a string in the A/UX 3.1 sh.
cat <<_ACEOF
-\`configure' configures GNU Awk 4.1.0 to adapt to many kinds of systems.
+\`configure' configures GNU Awk 4.1.60 to adapt to many kinds of systems.
Usage: $0 [OPTION]... [VAR=VALUE]...
@@ -1393,7 +1394,7 @@ fi
if test -n "$ac_init_help"; then
case $ac_init_help in
- short | recursive ) echo "Configuration of GNU Awk 4.1.0:";;
+ short | recursive ) echo "Configuration of GNU Awk 4.1.60:";;
esac
cat <<\_ACEOF
@@ -1411,6 +1412,7 @@ Optional Features:
--disable-largefile omit support for large files
--disable-nls do not use Native Language Support
--disable-rpath do not hardcode runtime library paths
+ --disable-extensions disable dynamic extensions (default is detect)
Optional Packages:
--with-PACKAGE[=ARG] use PACKAGE [ARG=yes]
@@ -1510,7 +1512,7 @@ fi
test -n "$ac_init_help" && exit $ac_status
if $ac_init_version; then
cat <<\_ACEOF
-GNU Awk configure 4.1.0
+GNU Awk configure 4.1.60
generated by GNU Autoconf 2.69
Copyright (C) 2012 Free Software Foundation, Inc.
@@ -2219,7 +2221,7 @@ cat >config.log <<_ACEOF
This file contains any messages produced by compilers while
running configure, to aid debugging if configure makes a mistake.
-It was created by GNU Awk $as_me 4.1.0, which was
+It was created by GNU Awk $as_me 4.1.60, which was
generated by GNU Autoconf 2.69. Invocation command line was
$ $0 $@
@@ -3102,7 +3104,7 @@ fi
# Define the identity of the package.
PACKAGE='gawk'
- VERSION='4.1.0'
+ VERSION='4.1.60'
cat >>confdefs.h <<_ACEOF
@@ -3142,6 +3144,10 @@ mkdir_p='$(MKDIR_P)'
# in the wild :-( We should find a proper way to deprecate it ...
AMTAR='$${TAR-tar}'
+
+# We'll loop over all known methods to create a tar archive until one works.
+_am_tools='gnutar pax cpio none'
+
am__tar='$${TAR-tar} chof - "$$tardir"' am__untar='$${TAR-tar} xf -'
@@ -3152,6 +3158,7 @@ am__tar='$${TAR-tar} chof - "$$tardir"' am__untar='$${TAR-tar} xf -'
+
# Check whether --with-whiny-user-strftime was given.
if test "${with_whiny_user_strftime+set}" = set; then :
withval=$with_whiny_user_strftime; if test "$withval" = yes
@@ -3175,6 +3182,77 @@ $as_echo "#define NO_LINT 1" >>confdefs.h
fi
+# Make sure we can run config.sub.
+$SHELL "$ac_aux_dir/config.sub" sun4 >/dev/null 2>&1 ||
+ as_fn_error $? "cannot run $SHELL $ac_aux_dir/config.sub" "$LINENO" 5
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking build system type" >&5
+$as_echo_n "checking build system type... " >&6; }
+if ${ac_cv_build+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ ac_build_alias=$build_alias
+test "x$ac_build_alias" = x &&
+ ac_build_alias=`$SHELL "$ac_aux_dir/config.guess"`
+test "x$ac_build_alias" = x &&
+ as_fn_error $? "cannot guess build type; you must specify one" "$LINENO" 5
+ac_cv_build=`$SHELL "$ac_aux_dir/config.sub" $ac_build_alias` ||
+ as_fn_error $? "$SHELL $ac_aux_dir/config.sub $ac_build_alias failed" "$LINENO" 5
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_build" >&5
+$as_echo "$ac_cv_build" >&6; }
+case $ac_cv_build in
+*-*-*) ;;
+*) as_fn_error $? "invalid value of canonical build" "$LINENO" 5;;
+esac
+build=$ac_cv_build
+ac_save_IFS=$IFS; IFS='-'
+set x $ac_cv_build
+shift
+build_cpu=$1
+build_vendor=$2
+shift; shift
+# Remember, the first character of IFS is used to create $*,
+# except with old shells:
+build_os=$*
+IFS=$ac_save_IFS
+case $build_os in *\ *) build_os=`echo "$build_os" | sed 's/ /-/g'`;; esac
+
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking host system type" >&5
+$as_echo_n "checking host system type... " >&6; }
+if ${ac_cv_host+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ if test "x$host_alias" = x; then
+ ac_cv_host=$ac_cv_build
+else
+ ac_cv_host=`$SHELL "$ac_aux_dir/config.sub" $host_alias` ||
+ as_fn_error $? "$SHELL $ac_aux_dir/config.sub $host_alias failed" "$LINENO" 5
+fi
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_host" >&5
+$as_echo "$ac_cv_host" >&6; }
+case $ac_cv_host in
+*-*-*) ;;
+*) as_fn_error $? "invalid value of canonical host" "$LINENO" 5;;
+esac
+host=$ac_cv_host
+ac_save_IFS=$IFS; IFS='-'
+set x $ac_cv_host
+shift
+host_cpu=$1
+host_vendor=$2
+shift; shift
+# Remember, the first character of IFS is used to create $*,
+# except with old shells:
+host_os=$*
+IFS=$ac_save_IFS
+case $host_os in *\ *) host_os=`echo "$host_os" | sed 's/ /-/g'`;; esac
+
+
DEPDIR="${am__leading_dot}deps"
ac_config_commands="$ac_config_commands depfiles"
@@ -5921,8 +5999,8 @@ then
CFLAGS="$CFLAGS -D_SYSV3"
fi
-case `uname` in
-MirBSD | MirOS)
+case $host_os in
+mirbsd*)
$as_echo "#define LIBC_IS_BORKED 1" >>confdefs.h
@@ -6252,77 +6330,6 @@ fi
eval acl_final_exec_prefix=\"$acl_final_exec_prefix\"
prefix="$acl_save_prefix"
-# Make sure we can run config.sub.
-$SHELL "$ac_aux_dir/config.sub" sun4 >/dev/null 2>&1 ||
- as_fn_error $? "cannot run $SHELL $ac_aux_dir/config.sub" "$LINENO" 5
-
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking build system type" >&5
-$as_echo_n "checking build system type... " >&6; }
-if ${ac_cv_build+:} false; then :
- $as_echo_n "(cached) " >&6
-else
- ac_build_alias=$build_alias
-test "x$ac_build_alias" = x &&
- ac_build_alias=`$SHELL "$ac_aux_dir/config.guess"`
-test "x$ac_build_alias" = x &&
- as_fn_error $? "cannot guess build type; you must specify one" "$LINENO" 5
-ac_cv_build=`$SHELL "$ac_aux_dir/config.sub" $ac_build_alias` ||
- as_fn_error $? "$SHELL $ac_aux_dir/config.sub $ac_build_alias failed" "$LINENO" 5
-
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_build" >&5
-$as_echo "$ac_cv_build" >&6; }
-case $ac_cv_build in
-*-*-*) ;;
-*) as_fn_error $? "invalid value of canonical build" "$LINENO" 5;;
-esac
-build=$ac_cv_build
-ac_save_IFS=$IFS; IFS='-'
-set x $ac_cv_build
-shift
-build_cpu=$1
-build_vendor=$2
-shift; shift
-# Remember, the first character of IFS is used to create $*,
-# except with old shells:
-build_os=$*
-IFS=$ac_save_IFS
-case $build_os in *\ *) build_os=`echo "$build_os" | sed 's/ /-/g'`;; esac
-
-
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking host system type" >&5
-$as_echo_n "checking host system type... " >&6; }
-if ${ac_cv_host+:} false; then :
- $as_echo_n "(cached) " >&6
-else
- if test "x$host_alias" = x; then
- ac_cv_host=$ac_cv_build
-else
- ac_cv_host=`$SHELL "$ac_aux_dir/config.sub" $host_alias` ||
- as_fn_error $? "$SHELL $ac_aux_dir/config.sub $host_alias failed" "$LINENO" 5
-fi
-
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_host" >&5
-$as_echo "$ac_cv_host" >&6; }
-case $ac_cv_host in
-*-*-*) ;;
-*) as_fn_error $? "invalid value of canonical host" "$LINENO" 5;;
-esac
-host=$ac_cv_host
-ac_save_IFS=$IFS; IFS='-'
-set x $ac_cv_host
-shift
-host_cpu=$1
-host_vendor=$2
-shift; shift
-# Remember, the first character of IFS is used to create $*,
-# except with old shells:
-host_os=$*
-IFS=$ac_save_IFS
-case $host_os in *\ *) host_os=`echo "$host_os" | sed 's/ /-/g'`;; esac
-
-
# Check whether --with-gnu-ld was given.
if test "${with_gnu_ld+set}" = set; then :
@@ -8095,6 +8102,22 @@ $as_echo "#define HAVE_LC_MESSAGES 1" >>confdefs.h
fi
+for ac_header in arpa/inet.h fcntl.h limits.h locale.h libintl.h mcheck.h \
+ netdb.h netinet/in.h stdarg.h stddef.h string.h \
+ sys/ioctl.h sys/param.h sys/socket.h sys/time.h unistd.h \
+ termios.h stropts.h wchar.h wctype.h
+do :
+ as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh`
+ac_fn_c_check_header_mongrel "$LINENO" "$ac_header" "$as_ac_Header" "$ac_includes_default"
+if eval test \"x\$"$as_ac_Header"\" = x"yes"; then :
+ cat >>confdefs.h <<_ACEOF
+#define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1
+_ACEOF
+
+fi
+
+done
+
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for ANSI C header files" >&5
$as_echo_n "checking for ANSI C header files... " >&6; }
if ${ac_cv_header_stdc+:} false; then :
@@ -8376,22 +8399,6 @@ $as_echo "#define TIME_WITH_SYS_TIME 1" >>confdefs.h
fi
-for ac_header in arpa/inet.h fcntl.h limits.h locale.h libintl.h mcheck.h \
- netdb.h netinet/in.h stdarg.h stddef.h string.h \
- sys/ioctl.h sys/param.h sys/socket.h sys/time.h unistd.h \
- termios.h stropts.h wchar.h wctype.h
-do :
- as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh`
-ac_fn_c_check_header_mongrel "$LINENO" "$ac_header" "$as_ac_Header" "$ac_includes_default"
-if eval test \"x\$"$as_ac_Header"\" = x"yes"; then :
- cat >>confdefs.h <<_ACEOF
-#define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1
-_ACEOF
-
-fi
-
-done
-
if test "$ac_cv_header_string_h" = yes
then
@@ -8980,25 +8987,6 @@ fi
-for ac_func in vprintf
-do :
- ac_fn_c_check_func "$LINENO" "vprintf" "ac_cv_func_vprintf"
-if test "x$ac_cv_func_vprintf" = xyes; then :
- cat >>confdefs.h <<_ACEOF
-#define HAVE_VPRINTF 1
-_ACEOF
-
-ac_fn_c_check_func "$LINENO" "_doprnt" "ac_cv_func__doprnt"
-if test "x$ac_cv_func__doprnt" = xyes; then :
-
-$as_echo "#define HAVE_DOPRNT 1" >>confdefs.h
-
-fi
-
-fi
-done
-
-
@@ -9455,8 +9443,8 @@ _ACEOF
fi
-case `uname` in
-OSF1) : ;;
+case $host_os in
+osf1) : ;;
*)
@@ -10072,17 +10060,29 @@ $as_echo "#define HAVE_MBRTOWC 1" >>confdefs.h
fi
-case `uname` in
-MirBSD | MirOS)
- : ;;
-*)
-ac_fn_c_check_header_mongrel "$LINENO" "dlfcn.h" "ac_cv_header_dlfcn_h" "$ac_includes_default"
+# Check whether --enable-extensions was given.
+if test "${enable_extensions+set}" = set; then :
+ enableval=$enable_extensions;
+fi
+
+if test "x$enable_extensions" != "xno"; then
+ extensions_supported=no
+
+ case $host_os in
+ mirbsd* | openedition*) # OS/390 z/OS POSIX layer
+ cat << \EOF > extension/Makefile
+all dist check clean distclean install uninstall distcheck:
+ @exit 0
+EOF
+ ;;
+ *)
+ ac_fn_c_check_header_mongrel "$LINENO" "dlfcn.h" "ac_cv_header_dlfcn_h" "$ac_includes_default"
if test "x$ac_cv_header_dlfcn_h" = xyes; then :
- # Check this separately. Some systems have dlopen
- # in libc. Notably freebsd and cygwin.
- # HP-NSK has it in zrldsrl
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking for library containing dlopen" >&5
+ # Check this separately. Some systems have dlopen
+ # in libc. Notably freebsd and cygwin.
+ # HP-NSK has it in zrldsrl
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for library containing dlopen" >&5
$as_echo_n "checking for library containing dlopen... " >&6; }
if ${ac_cv_search_dlopen+:} false; then :
$as_echo_n "(cached) " >&6
@@ -10140,29 +10140,38 @@ else
gawk_have_dlopen=no
fi
- # Only do DYNAMIC if we have the lib. z/OS (some versions) have
- # the header but not the lib, apparently
- if test "$gawk_have_dlopen" = yes
- then
+ # Only do DYNAMIC if we have the lib. z/OS (some versions) have
+ # the header but not the lib, apparently
+ if test "$gawk_have_dlopen" = yes
+ then
+ extensions_supported=yes
$as_echo "#define DYNAMIC 1" >>confdefs.h
- # Add -export-dynamic for old extensions. Only works for GCC
- if test "$GCC" = yes &&
- uname | $EGREP -i 'linux|freebsd' > /dev/null
- then
- LDFLAGS="$LDFLAGS -export-dynamic"
+ # Add -export-dynamic for old extensions. Only works for GCC
+ if test "$GCC" = yes; then
+ case $host_os in
+ linux*|freebsd*)
+ LDFLAGS="$LDFLAGS -export-dynamic"
+ ;;
+ esac
+ fi
fi
- fi
fi
- ;;
-esac
+ ;;
+ esac
-case `(uname) 2> /dev/null` in
-*VMS*|*BeOS*|*OS/2*|*MS-DOS*)
+ if test "x$enable_extensions$extensions_supported" = "xyesno"; then
+ as_fn_error $? "extension support requested, but unavailable" "$LINENO" 5
+ fi
+ enable_extensions=$extensions_supported
+fi
+
+case $host_os in
+vms*|beos*|os2*|msdos)
$as_echo "#define GETPGRP_VOID 1" >>confdefs.h
@@ -10438,7 +10447,8 @@ int main(int argc, char **argv)
dup(fd);
line = readline("giveittome> ");
- printf("got <%s>\n", line);
+ /* some printfs don't handle NULL for %s */
+ printf("got <%s>\n", line ? line : "(NULL)");
return 0;
}
_ACEOF
@@ -10458,11 +10468,59 @@ $as_echo "$_found_readline" >&6; }
LIBS=$_readline_save_libs
if test $_found_readline = yes ; then
+ case $host_os in
+ *bsd* ) _combo="$_combo -ltermcap"
+ ;;
+ esac
$as_echo "#define HAVE_LIBREADLINE 1" >>confdefs.h
LIBREADLINE=$_combo
+
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for history_list in -lreadline" >&5
+$as_echo_n "checking for history_list in -lreadline... " >&6; }
+if ${ac_cv_lib_readline_history_list+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ ac_check_lib_save_LIBS=$LIBS
+LIBS="-lreadline $_combo $LIBS"
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+
+/* Override any GCC internal prototype to avoid an error.
+ Use char because int might match the return type of a GCC
+ builtin and then its argument prototype would still apply. */
+#ifdef __cplusplus
+extern "C"
+#endif
+char history_list ();
+int
+main ()
+{
+return history_list ();
+ ;
+ return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+ ac_cv_lib_readline_history_list=yes
+else
+ ac_cv_lib_readline_history_list=no
+fi
+rm -f core conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
+LIBS=$ac_check_lib_save_LIBS
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_readline_history_list" >&5
+$as_echo "$ac_cv_lib_readline_history_list" >&6; }
+if test "x$ac_cv_lib_readline_history_list" = xyes; then :
+
+$as_echo "#define HAVE_HISTORY_LIST 1" >>confdefs.h
+
+fi
+
+
break
fi
done
@@ -10559,41 +10617,6 @@ _ACEOF
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether time.h and sys/time.h may both be included" >&5
-$as_echo_n "checking whether time.h and sys/time.h may both be included... " >&6; }
-if ${ac_cv_header_time+:} false; then :
- $as_echo_n "(cached) " >&6
-else
- cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h. */
-#include <sys/types.h>
-#include <sys/time.h>
-#include <time.h>
-
-int
-main ()
-{
-if ((struct tm *) 0)
-return 0;
- ;
- return 0;
-}
-_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
- ac_cv_header_time=yes
-else
- ac_cv_header_time=no
-fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_header_time" >&5
-$as_echo "$ac_cv_header_time" >&6; }
-if test $ac_cv_header_time = yes; then
-
-$as_echo "#define TIME_WITH_SYS_TIME 1" >>confdefs.h
-
-fi
-
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether struct tm is in sys/time.h or time.h" >&5
$as_echo_n "checking whether struct tm is in sys/time.h or time.h... " >&6; }
if ${ac_cv_struct_tm+:} false; then :
@@ -10940,10 +10963,12 @@ esac
ac_config_files="$ac_config_files Makefile awklib/Makefile doc/Makefile po/Makefile.in test/Makefile"
+if test "x$enable_extensions" = "xyes"; then
subdirs="$subdirs extension"
+fi
cat >confcache <<\_ACEOF
# This file is a shell script that caches the results of configure
# tests run on this system so they can be shared between configure
@@ -11482,7 +11507,7 @@ cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
# report actual input values of CONFIG_FILES etc. instead of their
# values after options handling.
ac_log="
-This file was extended by GNU Awk $as_me 4.1.0, which was
+This file was extended by GNU Awk $as_me 4.1.60, which was
generated by GNU Autoconf 2.69. Invocation command line was
CONFIG_FILES = $CONFIG_FILES
@@ -11550,7 +11575,7 @@ _ACEOF
cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
ac_cs_config="`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`"
ac_cs_version="\\
-GNU Awk config.status 4.1.0
+GNU Awk config.status 4.1.60
configured by $0, generated by GNU Autoconf 2.69,
with options \\"\$ac_cs_config\\"
@@ -12341,7 +12366,7 @@ $as_echo X"$mf" |
DEPDIR=`sed -n 's/^DEPDIR = //p' < "$mf"`
test -z "$DEPDIR" && continue
am__include=`sed -n 's/^am__include = //p' < "$mf"`
- test -z "am__include" && continue
+ test -z "$am__include" && continue
am__quote=`sed -n 's/^am__quote = //p' < "$mf"`
# Find all dependency output files, they are included files with
# $(DEPDIR) in their names. We invoke sed twice because it is the
diff --git a/configure.ac b/configure.ac
index 9f2878b0..d865ebe4 100644
--- a/configure.ac
+++ b/configure.ac
@@ -1,7 +1,7 @@
dnl
dnl configure.ac --- autoconf input file for gawk
dnl
-dnl Copyright (C) 1995-2013 the Free Software Foundation, Inc.
+dnl Copyright (C) 1995-2014 the Free Software Foundation, Inc.
dnl
dnl This file is part of GAWK, the GNU implementation of the
dnl AWK Programming Language.
@@ -23,7 +23,7 @@ dnl
dnl Process this file with autoconf to produce a configure script.
-AC_INIT([GNU Awk], 4.1.0, bug-gawk@gnu.org, gawk)
+AC_INIT([GNU Awk], 4.1.60, 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.
@@ -59,6 +59,7 @@ AC_ARG_ENABLE([lint], [ --disable-lint Disable gawk lint checking],
fi
)
+AC_CANONICAL_HOST
AC_USE_SYSTEM_EXTENSIONS
dnl checks for programs
@@ -119,8 +120,8 @@ dnl need -D_SYSV3 for ISC
fi
dnl check for systems where libc is borked for regex handling
-case `uname` in
-MirBSD | MirOS)
+case $host_os in
+mirbsd*)
AC_DEFINE([LIBC_IS_BORKED], 1, [libc is broken for regex handling])
;;
esac
@@ -136,14 +137,14 @@ AM_LANGINFO_CODESET
gt_LC_MESSAGES
dnl checks for header files
-AC_HEADER_STDC
-AC_HEADER_STDBOOL
-AC_HEADER_SYS_WAIT
-AC_HEADER_TIME
AC_CHECK_HEADERS(arpa/inet.h fcntl.h limits.h locale.h libintl.h mcheck.h \
netdb.h netinet/in.h stdarg.h stddef.h string.h \
sys/ioctl.h sys/param.h sys/socket.h sys/time.h unistd.h \
termios.h stropts.h wchar.h wctype.h)
+AC_HEADER_STDC
+AC_HEADER_STDBOOL
+AC_HEADER_SYS_WAIT
+AC_HEADER_TIME
if test "$ac_cv_header_string_h" = yes
then
@@ -247,7 +248,6 @@ dnl Check for C11 _Noreturn
GAWK_AC_NORETURN
dnl checks for functions
-AC_FUNC_VPRINTF
AC_FUNC_MKTIME
case "$ac_cv_func_working_mktime" in
yes) AC_DEFINE(HAVE_MKTIME, 1, [we have the mktime function])
@@ -263,8 +263,8 @@ AC_CHECK_LIB(m, fmod)
AC_CHECK_LIB(m, isinf)
AC_CHECK_LIB(m, ismod)
dnl Don't look for libsigsegv on OSF/1, gives us severe headaches
-case `uname` in
-OSF1) : ;;
+case $host_os in
+osf1) : ;;
*)
gl_LIBSIGSEGV
;;
@@ -284,38 +284,56 @@ AC_FUNC_MBRTOWC
dnl check for dynamic linking
dnl This is known to be very primitive
-dnl On MirBSD (and probably other systems), don't even try.
-case `uname` in
-MirBSD | MirOS)
- : ;;
-*)
-AC_CHECK_HEADER(dlfcn.h,
- [
- # Check this separately. Some systems have dlopen
- # in libc. Notably freebsd and cygwin.
- # HP-NSK has it in zrldsrl
- AC_SEARCH_LIBS(dlopen, dl zrldsrl, gawk_have_dlopen=yes, gawk_have_dlopen=no)
- # Only do DYNAMIC if we have the lib. z/OS (some versions) have
- # the header but not the lib, apparently
- if test "$gawk_have_dlopen" = yes
- then
- AC_DEFINE([DYNAMIC], 1, [dynamic loading is possible])
- # Add -export-dynamic for old extensions. Only works for GCC
- if test "$GCC" = yes &&
- uname | $EGREP -i 'linux|freebsd' > /dev/null
+AC_ARG_ENABLE([extensions],
+ [AS_HELP_STRING([--disable-extensions], [disable dynamic extensions (default is detect)])])
+if test "x$enable_extensions" != "xno"; then
+ extensions_supported=no
+
+ dnl On MirBSD (and probably other systems), don't even try.
+ case $host_os in
+ mirbsd* | openedition*) # OS/390 z/OS POSIX layer
+ cat << \EOF > extension/Makefile
+all dist check clean distclean install uninstall distcheck:
+ @exit 0
+EOF
+ ;;
+ *)
+ AC_CHECK_HEADER(dlfcn.h,
+ [
+ # Check this separately. Some systems have dlopen
+ # in libc. Notably freebsd and cygwin.
+ # HP-NSK has it in zrldsrl
+ AC_SEARCH_LIBS(dlopen, dl zrldsrl, gawk_have_dlopen=yes, gawk_have_dlopen=no)
+ # Only do DYNAMIC if we have the lib. z/OS (some versions) have
+ # the header but not the lib, apparently
+ if test "$gawk_have_dlopen" = yes
then
- LDFLAGS="$LDFLAGS -export-dynamic"
+ extensions_supported=yes
+ AC_DEFINE([DYNAMIC], 1, [dynamic loading is possible])
+ # Add -export-dynamic for old extensions. Only works for GCC
+ if test "$GCC" = yes; then
+ case $host_os in
+ linux*|freebsd*)
+ LDFLAGS="$LDFLAGS -export-dynamic"
+ ;;
+ esac
+ fi
fi
+ ])
+ ;;
+ esac
+
+ if test "x$enable_extensions$extensions_supported" = "xyesno"; then
+ AC_MSG_ERROR([extension support requested, but unavailable])
fi
-])
- ;;
-esac
+ enable_extensions=$extensions_supported
+fi
dnl check for how to use getpgrp
dnl have to hardwire it for VMS POSIX. Sigh.
dnl ditto for BeOS, OS/2, and MS-DOS.
-case `(uname) 2> /dev/null` in
-*VMS*|*BeOS*|*OS/2*|*MS-DOS*)
+case $host_os in
+vms*|beos*|os2*|msdos)
AC_DEFINE(GETPGRP_VOID, 1,
[Define to 1 if the getpgrp function requires zero arguments.])
;;
@@ -361,7 +379,6 @@ GNUPG_CHECK_MPFR
dnl checks for structure members
AC_CHECK_MEMBERS([struct stat.st_blksize])
-AC_HEADER_TIME
AC_STRUCT_TM
AC_STRUCT_TIMEZONE
@@ -389,5 +406,7 @@ AC_CONFIG_FILES(Makefile
doc/Makefile
po/Makefile.in
test/Makefile)
-AC_CONFIG_SUBDIRS(extension)
+if test "x$enable_extensions" = "xyes"; then
+ AC_CONFIG_SUBDIRS(extension)
+fi
AC_OUTPUT
diff --git a/debug.c b/debug.c
index 0cb9d562..b55f3577 100644
--- a/debug.c
+++ b/debug.c
@@ -108,6 +108,12 @@ static BREAKPOINT breakpoints = { &breakpoints, &breakpoints, 0 };
static int sess_history_base = 0;
#endif
+#ifndef HAVE_HISTORY_LIST
+#define HIST_ENTRY void
+#define history_list() NULL
+#endif
+
+
/* 'list' command */
static int last_printed_line = 0;
static int last_print_count; /* # of lines printed */
@@ -2062,12 +2068,23 @@ find_rule(char *src, long lineno)
{
INSTRUCTION *rp;
- assert(lineno > 0);
- for (rp = rule_list->nexti; rp != NULL; rp = rp->nexti) {
- if ((rp - 1)->source_file == src
- && lineno >= (rp + 1)->first_line
- && lineno <= (rp + 1)->last_line)
- return (rp - 1);
+ /*
+ * FIXME: The check for zero and code that goes with it
+ * are probably fragile. A break with no arguments can
+ * cause this in certain cases. Try to review how this works.
+ */
+ if (lineno == 0) {
+ for (rp = rule_list->nexti; rp != NULL; rp = rp->nexti) {
+ if ((rp - 1)->source_file == src && (rp - 1)->source_line > 0)
+ return (rp - 1);
+ }
+ } else {
+ for (rp = rule_list->nexti; rp != NULL; rp = rp->nexti) {
+ if ((rp - 1)->source_file == src
+ && lineno >= (rp + 1)->first_line
+ && lineno <= (rp + 1)->last_line)
+ return (rp - 1);
+ }
}
return NULL;
}
@@ -3656,56 +3673,56 @@ static void
print_memory(NODE *m, NODE *func, Func_print print_func, FILE *fp)
{
switch (m->type) {
- case Node_val:
- if (m == Nnull_string)
- print_func(fp, "Nnull_string");
- else if ((m->flags & NUMBER) != 0) {
+ case Node_val:
+ if (m == Nnull_string)
+ print_func(fp, "Nnull_string");
+ else if ((m->flags & NUMBER) != 0) {
#ifdef HAVE_MPFR
- if ((m->flags & MPFN) != 0)
- print_func(fp, "%s", mpg_fmt("%R*g", ROUND_MODE, m->mpg_numbr));
- else if ((m->flags & MPZN) != 0)
- print_func(fp, "%s", mpg_fmt("%Zd", m->mpg_i));
- else
+ if ((m->flags & MPFN) != 0)
+ print_func(fp, "%s", mpg_fmt("%R*g", ROUND_MODE, m->mpg_numbr));
+ else if ((m->flags & MPZN) != 0)
+ print_func(fp, "%s", mpg_fmt("%Zd", m->mpg_i));
+ else
#endif
- print_func(fp, "%g", m->numbr);
- } else if ((m->flags & STRING) != 0)
- pp_string_fp(print_func, fp, m->stptr, m->stlen, '"', false);
- else if ((m->flags & NUMCUR) != 0) {
+ print_func(fp, "%g", m->numbr);
+ } else if ((m->flags & STRING) != 0)
+ pp_string_fp(print_func, fp, m->stptr, m->stlen, '"', false);
+ else if ((m->flags & NUMCUR) != 0) {
#ifdef HAVE_MPFR
- if ((m->flags & MPFN) != 0)
- print_func(fp, "%s", mpg_fmt("%R*g", ROUND_MODE, m->mpg_numbr));
- else if ((m->flags & MPZN) != 0)
- print_func(fp, "%s", mpg_fmt("%Zd", m->mpg_i));
- else
-#endif
- print_func(fp, "%g", m->numbr);
- } else if ((m->flags & STRCUR) != 0)
- pp_string_fp(print_func, fp, m->stptr, m->stlen, '"', false);
+ if ((m->flags & MPFN) != 0)
+ print_func(fp, "%s", mpg_fmt("%R*g", ROUND_MODE, m->mpg_numbr));
+ else if ((m->flags & MPZN) != 0)
+ print_func(fp, "%s", mpg_fmt("%Zd", m->mpg_i));
else
- print_func(fp, "-?-");
- print_func(fp, " [%s]", flags2str(m->flags));
- break;
+#endif
+ print_func(fp, "%g", m->numbr);
+ } else if ((m->flags & STRCUR) != 0)
+ pp_string_fp(print_func, fp, m->stptr, m->stlen, '"', false);
+ else
+ print_func(fp, "-?-");
+ print_func(fp, " [%s]", flags2str(m->flags));
+ break;
- case Node_regex:
- pp_string_fp(print_func, fp, m->re_exp->stptr, m->re_exp->stlen, '/', false);
- break;
+ case Node_regex:
+ pp_string_fp(print_func, fp, m->re_exp->stptr, m->re_exp->stlen, '/', false);
+ break;
- case Node_dynregex:
- break;
-
- case Node_param_list:
- assert(func != NULL);
- print_func(fp, "%s", func->fparms[m->param_cnt].param);
- break;
+ case Node_dynregex:
+ break;
+
+ case Node_param_list:
+ assert(func != NULL);
+ print_func(fp, "%s", func->fparms[m->param_cnt].param);
+ break;
- case Node_var:
- case Node_var_new:
- case Node_var_array:
- print_func(fp, "%s", m->vname);
- break;
+ case Node_var:
+ case Node_var_new:
+ case Node_var_array:
+ print_func(fp, "%s", m->vname);
+ break;
- default:
- print_func(fp, "?"); /* can't happen */
+ default:
+ print_func(fp, "?"); /* can't happen */
}
}
@@ -4058,7 +4075,7 @@ do_dump_instructions(CMDARG *arg, int cmd ATTRIBUTE_UNUSED)
int
do_save(CMDARG *arg, int cmd ATTRIBUTE_UNUSED)
{
-#ifdef HAVE_LIBREADLINE
+#if defined(HAVE_LIBREADLINE) && defined(HAVE_HISTORY_LIST)
FILE *fp;
HIST_ENTRY **hist_list;
int i;
@@ -4282,11 +4299,6 @@ serialize_subscript(char *buf, int buflen, struct list_item *item)
static void
serialize(int type)
{
-#ifndef HAVE_LIBREADLINE
-#define HIST_ENTRY void
-#define history_list() NULL
-#endif
-
static char *buf = NULL;
static int buflen = 0;
int bl;
@@ -4400,7 +4412,7 @@ enlarge_buffer:
cndn = &wd->cndn;
break;
case HISTORY:
-#ifdef HAVE_LIBREADLINE
+#if defined(HAVE_LIBREADLINE) && defined(HAVE_HISTORY_LIST)
h = (HIST_ENTRY *) ptr;
nchar = strlen(h->line);
if (nchar >= buflen - bl)
@@ -4839,7 +4851,7 @@ do_commands(CMDARG *arg, int cmd)
struct commands_item *c;
if (cmd == D_commands) {
- int num, type;
+ int num = -1, type;
if (arg == NULL)
type = has_break_or_watch_point(&num, true);
else {
diff --git a/depcomp b/depcomp
index e1f51f48..31788017 100755
--- a/depcomp
+++ b/depcomp
@@ -1,9 +1,9 @@
#! /bin/sh
# depcomp - compile a program generating dependencies as side-effects
-scriptversion=2012-07-12.20; # UTC
+scriptversion=2013-05-30.07; # UTC
-# Copyright (C) 1999-2012 Free Software Foundation, Inc.
+# Copyright (C) 1999-2013 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
@@ -27,9 +27,9 @@ scriptversion=2012-07-12.20; # UTC
case $1 in
'')
- echo "$0: No command. Try '$0 --help' for more information." 1>&2
- exit 1;
- ;;
+ echo "$0: No command. Try '$0 --help' for more information." 1>&2
+ exit 1;
+ ;;
-h | --h*)
cat <<\EOF
Usage: depcomp [--help] [--version] PROGRAM [ARGS]
@@ -56,11 +56,65 @@ EOF
;;
esac
+# Get the directory component of the given path, and save it in the
+# global variables '$dir'. Note that this directory component will
+# be either empty or ending with a '/' character. This is deliberate.
+set_dir_from ()
+{
+ case $1 in
+ */*) dir=`echo "$1" | sed -e 's|/[^/]*$|/|'`;;
+ *) dir=;;
+ esac
+}
+
+# Get the suffix-stripped basename of the given path, and save it the
+# global variable '$base'.
+set_base_from ()
+{
+ base=`echo "$1" | sed -e 's|^.*/||' -e 's/\.[^.]*$//'`
+}
+
+# If no dependency file was actually created by the compiler invocation,
+# we still have to create a dummy depfile, to avoid errors with the
+# Makefile "include basename.Plo" scheme.
+make_dummy_depfile ()
+{
+ echo "#dummy" > "$depfile"
+}
+
+# Factor out some common post-processing of the generated depfile.
+# Requires the auxiliary global variable '$tmpdepfile' to be set.
+aix_post_process_depfile ()
+{
+ # If the compiler actually managed to produce a dependency file,
+ # post-process it.
+ if test -f "$tmpdepfile"; then
+ # Each line is of the form 'foo.o: dependency.h'.
+ # Do two passes, one to just change these to
+ # $object: dependency.h
+ # and one to simply output
+ # dependency.h:
+ # which is needed to avoid the deleted-header problem.
+ { sed -e "s,^.*\.[$lower]*:,$object:," < "$tmpdepfile"
+ sed -e "s,^.*\.[$lower]*:[$tab ]*,," -e 's,$,:,' < "$tmpdepfile"
+ } > "$depfile"
+ rm -f "$tmpdepfile"
+ else
+ make_dummy_depfile
+ fi
+}
+
# A tabulation character.
tab=' '
# A newline character.
nl='
'
+# Character ranges might be problematic outside the C locale.
+# These definitions help.
+upper=ABCDEFGHIJKLMNOPQRSTUVWXYZ
+lower=abcdefghijklmnopqrstuvwxyz
+digits=0123456789
+alpha=${upper}${lower}
if test -z "$depmode" || test -z "$source" || test -z "$object"; then
echo "depcomp: Variables source, object and depmode must be set" 1>&2
@@ -88,32 +142,32 @@ if test "$depmode" = hp; then
fi
if test "$depmode" = dashXmstdout; then
- # This is just like dashmstdout with a different argument.
- dashmflag=-xM
- depmode=dashmstdout
+ # This is just like dashmstdout with a different argument.
+ dashmflag=-xM
+ depmode=dashmstdout
fi
cygpath_u="cygpath -u -f -"
if test "$depmode" = msvcmsys; then
- # This is just like msvisualcpp but w/o cygpath translation.
- # Just convert the backslash-escaped backslashes to single forward
- # slashes to satisfy depend.m4
- cygpath_u='sed s,\\\\,/,g'
- depmode=msvisualcpp
+ # This is just like msvisualcpp but w/o cygpath translation.
+ # Just convert the backslash-escaped backslashes to single forward
+ # slashes to satisfy depend.m4
+ cygpath_u='sed s,\\\\,/,g'
+ depmode=msvisualcpp
fi
if test "$depmode" = msvc7msys; then
- # This is just like msvc7 but w/o cygpath translation.
- # Just convert the backslash-escaped backslashes to single forward
- # slashes to satisfy depend.m4
- cygpath_u='sed s,\\\\,/,g'
- depmode=msvc7
+ # This is just like msvc7 but w/o cygpath translation.
+ # Just convert the backslash-escaped backslashes to single forward
+ # slashes to satisfy depend.m4
+ cygpath_u='sed s,\\\\,/,g'
+ depmode=msvc7
fi
if test "$depmode" = xlc; then
- # IBM C/C++ Compilers xlc/xlC can output gcc-like dependency information.
- gccflag=-qmakedep=gcc,-MF
- depmode=gcc
+ # IBM C/C++ Compilers xlc/xlC can output gcc-like dependency information.
+ gccflag=-qmakedep=gcc,-MF
+ depmode=gcc
fi
case "$depmode" in
@@ -136,8 +190,7 @@ gcc3)
done
"$@"
stat=$?
- if test $stat -eq 0; then :
- else
+ if test $stat -ne 0; then
rm -f "$tmpdepfile"
exit $stat
fi
@@ -163,15 +216,14 @@ gcc)
fi
"$@" -Wp,"$gccflag$tmpdepfile"
stat=$?
- if test $stat -eq 0; then :
- else
+ if test $stat -ne 0; then
rm -f "$tmpdepfile"
exit $stat
fi
rm -f "$depfile"
echo "$object : \\" > "$depfile"
- alpha=ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz
-## The second -e expression handles DOS-style file names with drive letters.
+ # The second -e expression handles DOS-style file names with drive
+ # letters.
sed -e 's/^[^:]*: / /' \
-e 's/^['$alpha']:\/[^:]*: / /' < "$tmpdepfile" >> "$depfile"
## This next piece of magic avoids the "deleted header file" problem.
@@ -180,15 +232,15 @@ gcc)
## typically no way to rebuild the header). We avoid this by adding
## dummy dependencies for each header file. Too bad gcc doesn't do
## this for us directly.
- tr ' ' "$nl" < "$tmpdepfile" |
## Some versions of gcc put a space before the ':'. On the theory
## that the space means something, we add a space to the output as
## well. hp depmode also adds that space, but also prefixes the VPATH
## to the object. Take care to not repeat it in the output.
## Some versions of the HPUX 10.20 sed can't process this invocation
## correctly. Breaking it into two sed invocations is a workaround.
- sed -e 's/^\\$//' -e '/^$/d' -e "s|.*$object$||" -e '/:$/d' \
- | sed -e 's/$/ :/' >> "$depfile"
+ tr ' ' "$nl" < "$tmpdepfile" \
+ | sed -e 's/^\\$//' -e '/^$/d' -e "s|.*$object$||" -e '/:$/d' \
+ | sed -e 's/$/ :/' >> "$depfile"
rm -f "$tmpdepfile"
;;
@@ -199,47 +251,6 @@ hp)
exit 1
;;
-sgi)
- if test "$libtool" = yes; then
- "$@" "-Wp,-MDupdate,$tmpdepfile"
- else
- "$@" -MDupdate "$tmpdepfile"
- fi
- stat=$?
- if test $stat -eq 0; then :
- else
- rm -f "$tmpdepfile"
- exit $stat
- fi
- rm -f "$depfile"
-
- if test -f "$tmpdepfile"; then # yes, the sourcefile depend on other files
- echo "$object : \\" > "$depfile"
-
- # Clip off the initial element (the dependent). Don't try to be
- # clever and replace this with sed code, as IRIX sed won't handle
- # lines with more than a fixed number of characters (4096 in
- # IRIX 6.2 sed, 8192 in IRIX 6.5). We also remove comment lines;
- # the IRIX cc adds comments like '#:fec' to the end of the
- # dependency line.
- tr ' ' "$nl" < "$tmpdepfile" \
- | sed -e 's/^.*\.o://' -e 's/#.*$//' -e '/^$/ d' | \
- tr "$nl" ' ' >> "$depfile"
- echo >> "$depfile"
-
- # The second pass generates a dummy entry for each header file.
- tr ' ' "$nl" < "$tmpdepfile" \
- | sed -e 's/^.*\.o://' -e 's/#.*$//' -e '/^$/ d' -e 's/$/:/' \
- >> "$depfile"
- else
- # The sourcefile does not contain any dependencies, so just
- # store a dummy comment line, to avoid errors with the Makefile
- # "include basename.Plo" scheme.
- echo "#dummy" > "$depfile"
- fi
- rm -f "$tmpdepfile"
- ;;
-
xlc)
# This case exists only to let depend.m4 do its work. It works by
# looking at the text of this script. This case will never be run,
@@ -253,9 +264,8 @@ aix)
# current directory. Also, the AIX compiler puts '$object:' at the
# start of each line; $object doesn't have directory information.
# Version 6 uses the directory in both cases.
- dir=`echo "$object" | sed -e 's|/[^/]*$|/|'`
- test "x$dir" = "x$object" && dir=
- base=`echo "$object" | sed -e 's|^.*/||' -e 's/\.o$//' -e 's/\.lo$//'`
+ set_dir_from "$object"
+ set_base_from "$object"
if test "$libtool" = yes; then
tmpdepfile1=$dir$base.u
tmpdepfile2=$base.u
@@ -268,9 +278,7 @@ aix)
"$@" -M
fi
stat=$?
-
- if test $stat -eq 0; then :
- else
+ if test $stat -ne 0; then
rm -f "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3"
exit $stat
fi
@@ -279,65 +287,37 @@ aix)
do
test -f "$tmpdepfile" && break
done
- if test -f "$tmpdepfile"; then
- # Each line is of the form 'foo.o: dependent.h'.
- # Do two passes, one to just change these to
- # '$object: dependent.h' and one to simply 'dependent.h:'.
- sed -e "s,^.*\.[a-z]*:,$object:," < "$tmpdepfile" > "$depfile"
- sed -e 's,^.*\.[a-z]*:['"$tab"' ]*,,' -e 's,$,:,' < "$tmpdepfile" >> "$depfile"
- else
- # The sourcefile does not contain any dependencies, so just
- # store a dummy comment line, to avoid errors with the Makefile
- # "include basename.Plo" scheme.
- echo "#dummy" > "$depfile"
- fi
- rm -f "$tmpdepfile"
+ aix_post_process_depfile
;;
-icc)
- # Intel's C compiler anf tcc (Tiny C Compiler) understand '-MD -MF file'.
- # However on
- # $CC -MD -MF foo.d -c -o sub/foo.o sub/foo.c
- # ICC 7.0 will fill foo.d with something like
- # foo.o: sub/foo.c
- # foo.o: sub/foo.h
- # which is wrong. We want
- # sub/foo.o: sub/foo.c
- # sub/foo.o: sub/foo.h
- # sub/foo.c:
- # sub/foo.h:
- # ICC 7.1 will output
- # foo.o: sub/foo.c sub/foo.h
- # and will wrap long lines using '\':
- # foo.o: sub/foo.c ... \
- # sub/foo.h ... \
- # ...
- # tcc 0.9.26 (FIXME still under development at the moment of writing)
- # will emit a similar output, but also prepend the continuation lines
- # with horizontal tabulation characters.
+tcc)
+ # tcc (Tiny C Compiler) understand '-MD -MF file' since version 0.9.26
+ # FIXME: That version still under development at the moment of writing.
+ # Make that this statement remains true also for stable, released
+ # versions.
+ # It will wrap lines (doesn't matter whether long or short) with a
+ # trailing '\', as in:
+ #
+ # foo.o : \
+ # foo.c \
+ # foo.h \
+ #
+ # It will put a trailing '\' even on the last line, and will use leading
+ # spaces rather than leading tabs (at least since its commit 0394caf7
+ # "Emit spaces for -MD").
"$@" -MD -MF "$tmpdepfile"
stat=$?
- if test $stat -eq 0; then :
- else
+ if test $stat -ne 0; then
rm -f "$tmpdepfile"
exit $stat
fi
rm -f "$depfile"
- # Each line is of the form 'foo.o: dependent.h',
- # or 'foo.o: dep1.h dep2.h \', or ' dep3.h dep4.h \'.
- # Do two passes, one to just change these to
- # '$object: dependent.h' and one to simply 'dependent.h:'.
- sed -e "s/^[ $tab][ $tab]*/ /" -e "s,^[^:]*:,$object :," \
- < "$tmpdepfile" > "$depfile"
- sed '
- s/[ '"$tab"'][ '"$tab"']*/ /g
- s/^ *//
- s/ *\\*$//
- s/^[^:]*: *//
- /^$/d
- /:$/d
- s/$/ :/
- ' < "$tmpdepfile" >> "$depfile"
+ # Each non-empty line is of the form 'foo.o : \' or ' dep.h \'.
+ # We have to change lines of the first kind to '$object: \'.
+ sed -e "s|.*:|$object :|" < "$tmpdepfile" > "$depfile"
+ # And for each line of the second kind, we have to emit a 'dep.h:'
+ # dummy dependency, to avoid the deleted-header problem.
+ sed -n -e 's|^ *\(.*\) *\\$|\1:|p' < "$tmpdepfile" >> "$depfile"
rm -f "$tmpdepfile"
;;
@@ -356,34 +336,37 @@ pgcc)
# foo.o: sub/foo.c ... \
# sub/foo.h ... \
# ...
- dir=`echo "$object" | sed -e 's|/[^/]*$|/|'`
- test "x$dir" = "x$object" && dir=
+ set_dir_from "$object"
# Use the source, not the object, to determine the base name, since
# that's sadly what pgcc will do too.
- base=`echo "$source" | sed -e 's|^.*/||' -e 's/\.[-_a-zA-Z0-9]*$//'`
- tmpdepfile="$base.d"
+ set_base_from "$source"
+ tmpdepfile=$base.d
# For projects that build the same source file twice into different object
# files, the pgcc approach of using the *source* file root name can cause
# problems in parallel builds. Use a locking strategy to avoid stomping on
# the same $tmpdepfile.
- lockdir="$base.d-lock"
- trap "echo '$0: caught signal, cleaning up...' >&2; rm -rf $lockdir" 1 2 13 15
+ lockdir=$base.d-lock
+ trap "
+ echo '$0: caught signal, cleaning up...' >&2
+ rmdir '$lockdir'
+ exit 1
+ " 1 2 13 15
numtries=100
i=$numtries
- while test $i -gt 0 ; do
+ while test $i -gt 0; do
# mkdir is a portable test-and-set.
- if mkdir $lockdir 2>/dev/null; then
+ if mkdir "$lockdir" 2>/dev/null; then
# This process acquired the lock.
"$@" -MD
stat=$?
# Release the lock.
- rm -rf $lockdir
+ rmdir "$lockdir"
break
else
- ## the lock is being held by a different process,
- ## wait until the winning process is done or we timeout
- while test -d $lockdir && test $i -gt 0; do
+ # If the lock is being held by a different process, wait
+ # until the winning process is done or we timeout.
+ while test -d "$lockdir" && test $i -gt 0; do
sleep 1
i=`expr $i - 1`
done
@@ -409,8 +392,8 @@ pgcc)
sed "s,^[^:]*:,$object :," < "$tmpdepfile" > "$depfile"
# Some versions of the HPUX 10.20 sed can't process this invocation
# correctly. Breaking it into two sed invocations is a workaround.
- sed 's,^[^:]*: \(.*\)$,\1,;s/^\\$//;/^$/d;/:$/d' < "$tmpdepfile" |
- sed -e 's/$/ :/' >> "$depfile"
+ sed 's,^[^:]*: \(.*\)$,\1,;s/^\\$//;/^$/d;/:$/d' < "$tmpdepfile" \
+ | sed -e 's/$/ :/' >> "$depfile"
rm -f "$tmpdepfile"
;;
@@ -421,9 +404,8 @@ hp2)
# 'foo.d', which lands next to the object file, wherever that
# happens to be.
# Much of this is similar to the tru64 case; see comments there.
- dir=`echo "$object" | sed -e 's|/[^/]*$|/|'`
- test "x$dir" = "x$object" && dir=
- base=`echo "$object" | sed -e 's|^.*/||' -e 's/\.o$//' -e 's/\.lo$//'`
+ set_dir_from "$object"
+ set_base_from "$object"
if test "$libtool" = yes; then
tmpdepfile1=$dir$base.d
tmpdepfile2=$dir.libs/$base.d
@@ -434,8 +416,7 @@ hp2)
"$@" +Maked
fi
stat=$?
- if test $stat -eq 0; then :
- else
+ if test $stat -ne 0; then
rm -f "$tmpdepfile1" "$tmpdepfile2"
exit $stat
fi
@@ -445,76 +426,61 @@ hp2)
test -f "$tmpdepfile" && break
done
if test -f "$tmpdepfile"; then
- sed -e "s,^.*\.[a-z]*:,$object:," "$tmpdepfile" > "$depfile"
+ sed -e "s,^.*\.[$lower]*:,$object:," "$tmpdepfile" > "$depfile"
# Add 'dependent.h:' lines.
sed -ne '2,${
- s/^ *//
- s/ \\*$//
- s/$/:/
- p
- }' "$tmpdepfile" >> "$depfile"
+ s/^ *//
+ s/ \\*$//
+ s/$/:/
+ p
+ }' "$tmpdepfile" >> "$depfile"
else
- echo "#dummy" > "$depfile"
+ make_dummy_depfile
fi
rm -f "$tmpdepfile" "$tmpdepfile2"
;;
tru64)
- # The Tru64 compiler uses -MD to generate dependencies as a side
- # effect. 'cc -MD -o foo.o ...' puts the dependencies into 'foo.o.d'.
- # At least on Alpha/Redhat 6.1, Compaq CCC V6.2-504 seems to put
- # dependencies in 'foo.d' instead, so we check for that too.
- # Subdirectories are respected.
- dir=`echo "$object" | sed -e 's|/[^/]*$|/|'`
- test "x$dir" = "x$object" && dir=
- base=`echo "$object" | sed -e 's|^.*/||' -e 's/\.o$//' -e 's/\.lo$//'`
-
- if test "$libtool" = yes; then
- # With Tru64 cc, shared objects can also be used to make a
- # static library. This mechanism is used in libtool 1.4 series to
- # handle both shared and static libraries in a single compilation.
- # With libtool 1.4, dependencies were output in $dir.libs/$base.lo.d.
- #
- # With libtool 1.5 this exception was removed, and libtool now
- # generates 2 separate objects for the 2 libraries. These two
- # compilations output dependencies in $dir.libs/$base.o.d and
- # in $dir$base.o.d. We have to check for both files, because
- # one of the two compilations can be disabled. We should prefer
- # $dir$base.o.d over $dir.libs/$base.o.d because the latter is
- # automatically cleaned when .libs/ is deleted, while ignoring
- # the former would cause a distcleancheck panic.
- tmpdepfile1=$dir.libs/$base.lo.d # libtool 1.4
- tmpdepfile2=$dir$base.o.d # libtool 1.5
- tmpdepfile3=$dir.libs/$base.o.d # libtool 1.5
- tmpdepfile4=$dir.libs/$base.d # Compaq CCC V6.2-504
- "$@" -Wc,-MD
- else
- tmpdepfile1=$dir$base.o.d
- tmpdepfile2=$dir$base.d
- tmpdepfile3=$dir$base.d
- tmpdepfile4=$dir$base.d
- "$@" -MD
- fi
-
- stat=$?
- if test $stat -eq 0; then :
- else
- rm -f "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3" "$tmpdepfile4"
- exit $stat
- fi
-
- for tmpdepfile in "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3" "$tmpdepfile4"
- do
- test -f "$tmpdepfile" && break
- done
- if test -f "$tmpdepfile"; then
- sed -e "s,^.*\.[a-z]*:,$object:," < "$tmpdepfile" > "$depfile"
- sed -e 's,^.*\.[a-z]*:['"$tab"' ]*,,' -e 's,$,:,' < "$tmpdepfile" >> "$depfile"
- else
- echo "#dummy" > "$depfile"
- fi
- rm -f "$tmpdepfile"
- ;;
+ # The Tru64 compiler uses -MD to generate dependencies as a side
+ # effect. 'cc -MD -o foo.o ...' puts the dependencies into 'foo.o.d'.
+ # At least on Alpha/Redhat 6.1, Compaq CCC V6.2-504 seems to put
+ # dependencies in 'foo.d' instead, so we check for that too.
+ # Subdirectories are respected.
+ set_dir_from "$object"
+ set_base_from "$object"
+
+ if test "$libtool" = yes; then
+ # Libtool generates 2 separate objects for the 2 libraries. These
+ # two compilations output dependencies in $dir.libs/$base.o.d and
+ # in $dir$base.o.d. We have to check for both files, because
+ # one of the two compilations can be disabled. We should prefer
+ # $dir$base.o.d over $dir.libs/$base.o.d because the latter is
+ # automatically cleaned when .libs/ is deleted, while ignoring
+ # the former would cause a distcleancheck panic.
+ tmpdepfile1=$dir$base.o.d # libtool 1.5
+ tmpdepfile2=$dir.libs/$base.o.d # Likewise.
+ tmpdepfile3=$dir.libs/$base.d # Compaq CCC V6.2-504
+ "$@" -Wc,-MD
+ else
+ tmpdepfile1=$dir$base.d
+ tmpdepfile2=$dir$base.d
+ tmpdepfile3=$dir$base.d
+ "$@" -MD
+ fi
+
+ stat=$?
+ if test $stat -ne 0; then
+ rm -f "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3"
+ exit $stat
+ fi
+
+ for tmpdepfile in "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3"
+ do
+ test -f "$tmpdepfile" && break
+ done
+ # Same post-processing that is required for AIX mode.
+ aix_post_process_depfile
+ ;;
msvc7)
if test "$libtool" = yes; then
@@ -525,8 +491,7 @@ msvc7)
"$@" $showIncludes > "$tmpdepfile"
stat=$?
grep -v '^Note: including file: ' "$tmpdepfile"
- if test "$stat" = 0; then :
- else
+ if test $stat -ne 0; then
rm -f "$tmpdepfile"
exit $stat
fi
@@ -552,6 +517,7 @@ $ {
G
p
}' >> "$depfile"
+ echo >> "$depfile" # make sure the fragment doesn't end with a backslash
rm -f "$tmpdepfile"
;;
@@ -603,13 +569,14 @@ dashmstdout)
# in the target name. This is to cope with DOS-style filenames:
# a dependency such as 'c:/foo/bar' could be seen as target 'c' otherwise.
"$@" $dashmflag |
- sed 's:^['"$tab"' ]*[^:'"$tab"' ][^:][^:]*\:['"$tab"' ]*:'"$object"'\: :' > "$tmpdepfile"
+ sed "s|^[$tab ]*[^:$tab ][^:][^:]*:[$tab ]*|$object: |" > "$tmpdepfile"
rm -f "$depfile"
cat < "$tmpdepfile" > "$depfile"
- tr ' ' "$nl" < "$tmpdepfile" | \
-## Some versions of the HPUX 10.20 sed can't process this invocation
-## correctly. Breaking it into two sed invocations is a workaround.
- sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' | sed -e 's/$/ :/' >> "$depfile"
+ # Some versions of the HPUX 10.20 sed can't process this sed invocation
+ # correctly. Breaking it into two sed invocations is a workaround.
+ tr ' ' "$nl" < "$tmpdepfile" \
+ | sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' \
+ | sed -e 's/$/ :/' >> "$depfile"
rm -f "$tmpdepfile"
;;
@@ -662,10 +629,12 @@ makedepend)
# makedepend may prepend the VPATH from the source file name to the object.
# No need to regex-escape $object, excess matching of '.' is harmless.
sed "s|^.*\($object *:\)|\1|" "$tmpdepfile" > "$depfile"
- sed '1,2d' "$tmpdepfile" | tr ' ' "$nl" | \
-## Some versions of the HPUX 10.20 sed can't process this invocation
-## correctly. Breaking it into two sed invocations is a workaround.
- sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' | sed -e 's/$/ :/' >> "$depfile"
+ # Some versions of the HPUX 10.20 sed can't process the last invocation
+ # correctly. Breaking it into two sed invocations is a workaround.
+ sed '1,2d' "$tmpdepfile" \
+ | tr ' ' "$nl" \
+ | sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' \
+ | sed -e 's/$/ :/' >> "$depfile"
rm -f "$tmpdepfile" "$tmpdepfile".bak
;;
@@ -701,10 +670,10 @@ cpp)
esac
done
- "$@" -E |
- sed -n -e '/^# [0-9][0-9]* "\([^"]*\)".*/ s:: \1 \\:p' \
- -e '/^#line [0-9][0-9]* "\([^"]*\)".*/ s:: \1 \\:p' |
- sed '$ s: \\$::' > "$tmpdepfile"
+ "$@" -E \
+ | sed -n -e '/^# [0-9][0-9]* "\([^"]*\)".*/ s:: \1 \\:p' \
+ -e '/^#line [0-9][0-9]* "\([^"]*\)".*/ s:: \1 \\:p' \
+ | sed '$ s: \\$::' > "$tmpdepfile"
rm -f "$depfile"
echo "$object : \\" > "$depfile"
cat < "$tmpdepfile" >> "$depfile"
@@ -736,15 +705,15 @@ msvisualcpp)
shift
;;
"-Gm"|"/Gm"|"-Gi"|"/Gi"|"-ZI"|"/ZI")
- set fnord "$@"
- shift
- shift
- ;;
+ set fnord "$@"
+ shift
+ shift
+ ;;
*)
- set fnord "$@" "$arg"
- shift
- shift
- ;;
+ set fnord "$@" "$arg"
+ shift
+ shift
+ ;;
esac
done
"$@" -E 2>/dev/null |
diff --git a/dfa.c b/dfa.c
index 2195e281..378305df 100644
--- a/dfa.c
+++ b/dfa.c
@@ -1,5 +1,5 @@
/* dfa.c - deterministic extended regexp routines for GNU
- Copyright (C) 1988, 1998, 2000, 2002, 2004-2005, 2007-2013 Free Software
+ Copyright (C) 1988, 1998, 2000, 2002, 2004-2005, 2007-2014 Free Software
Foundation, Inc.
This program is free software; you can redistribute it and/or modify
@@ -43,8 +43,15 @@
#include "missing_d/gawkbool.h"
#endif /* HAVE_STDBOOL_H */
-#include "dfa.h"
-
+/* Gawk doesn't use Gnulib, so don't assume that setlocale and
+ static_assert are present. */
+#ifndef LC_ALL
+# define setlocale(category, locale) NULL
+#endif
+#ifndef static_assert
+# define static_assert(cond, diagnostic) \
+ extern int (*foo (void)) [!!sizeof (struct { int foo: (cond) ? 8 : -1; })]
+#endif
#define STREQ(a, b) (strcmp (a, b) == 0)
@@ -62,9 +69,9 @@
#include "gettext.h"
#define _(str) gettext (str)
-#include "mbsupport.h" /* defines MBS_SUPPORT to 1 or 0, as appropriate */
+#include "mbsupport.h" /* Define MBS_SUPPORT to 1 or 0, as appropriate. */
#if MBS_SUPPORT
-/* We can handle multibyte strings. */
+/* We can handle multibyte strings. */
# include <wchar.h>
# include <wctype.h>
#endif
@@ -84,6 +91,8 @@
#include "xalloc.h"
+#include "dfa.h"
+
#ifdef GAWK
static int
is_blank (int c)
@@ -100,7 +109,7 @@ extern int gawk_mb_cur_max;
#define mbrtowc(a, b, c, d) (-1)
#endif
-/* HPUX, define those as macros in sys/param.h */
+/* HPUX defines these as macros in sys/param.h. */
#ifdef setbit
# undef setbit
#endif
@@ -108,36 +117,36 @@ extern int gawk_mb_cur_max;
# undef clrbit
#endif
-/* Number of bits in an unsigned char. */
+/* Number of bits in an unsigned char. */
#ifndef CHARBITS
# define CHARBITS 8
#endif
-/* First integer value that is greater than any character code. */
+/* First integer value that is greater than any character code. */
#define NOTCHAR (1 << CHARBITS)
-/* INTBITS need not be exact, just a lower bound. */
+/* INTBITS need not be exact, just a lower bound. */
#ifndef INTBITS
# define INTBITS (CHARBITS * sizeof (int))
#endif
-/* Number of ints required to hold a bit for every character. */
+/* Number of ints required to hold a bit for every character. */
#define CHARCLASS_INTS ((NOTCHAR + INTBITS - 1) / INTBITS)
-/* Sets of unsigned characters are stored as bit vectors in arrays of ints. */
-typedef int charclass[CHARCLASS_INTS];
+/* Sets of unsigned characters are stored as bit vectors in arrays of ints. */
+typedef unsigned int charclass[CHARCLASS_INTS];
/* Convert a possibly-signed character to an unsigned character. This is
a bit safer than casting to unsigned char, since it catches some type
errors that the cast doesn't. */
-static inline unsigned char
+static unsigned char
to_uchar (char ch)
{
return ch;
}
/* Contexts tell us whether a character is a newline or a word constituent.
- Word-constituent characters are those that satisfy iswalnum(), plus '_'.
+ Word-constituent characters are those that satisfy iswalnum, plus '_'.
Each character has a single CTX_* value; bitmasks of CTX_* values denote
a particular character class.
@@ -167,17 +176,17 @@ to_uchar (char ch)
The macro SUCCEEDS_IN_CONTEXT determines whether a given constraint
succeeds in a particular context. Prev is a bitmask of possible
context values for the previous character, curr is the (single-bit)
- context value for the lookahead character. */
+ context value for the lookahead character. */
#define NEWLINE_CONSTRAINT(constraint) (((constraint) >> 8) & 0xf)
#define LETTER_CONSTRAINT(constraint) (((constraint) >> 4) & 0xf)
#define OTHER_CONSTRAINT(constraint) ((constraint) & 0xf)
#define SUCCEEDS_IN_CONTEXT(constraint, prev, curr) \
- ((((curr) & CTX_NONE ? OTHER_CONSTRAINT(constraint) : 0) \
- | ((curr) & CTX_LETTER ? LETTER_CONSTRAINT(constraint) : 0) \
- | ((curr) & CTX_NEWLINE ? NEWLINE_CONSTRAINT(constraint) : 0)) & (prev))
+ ((((curr) & CTX_NONE ? OTHER_CONSTRAINT (constraint) : 0) \
+ | ((curr) & CTX_LETTER ? LETTER_CONSTRAINT (constraint) : 0) \
+ | ((curr) & CTX_NEWLINE ? NEWLINE_CONSTRAINT (constraint) : 0)) & (prev))
-/* The following macros give information about what a constraint depends on. */
+/* The following macros describe what a constraint depends on. */
#define PREV_NEWLINE_CONSTRAINT(constraint) (((constraint) >> 2) & 0x111)
#define PREV_LETTER_CONSTRAINT(constraint) (((constraint) >> 1) & 0x111)
#define PREV_OTHER_CONSTRAINT(constraint) ((constraint) & 0x111)
@@ -190,7 +199,7 @@ to_uchar (char ch)
/* Tokens that match the empty string subject to some constraint actually
work by applying that constraint to determine what may follow them,
taking into account what has gone before. The following values are
- the constraints corresponding to the special tokens previously defined. */
+ the constraints corresponding to the special tokens previously defined. */
#define NO_CONSTRAINT 0x777
#define BEGLINE_CONSTRAINT 0x444
#define ENDLINE_CONSTRAINT 0x700
@@ -201,7 +210,7 @@ to_uchar (char ch)
/* The regexp is parsed into an array of tokens in postfix form. Some tokens
are operators and others are terminal symbols. Most (but not all) of these
- codes are returned by the lexical analyzer. */
+ codes are returned by the lexical analyzer. */
typedef ptrdiff_t token;
@@ -212,75 +221,76 @@ enum
end of input; any value of END or less in
the parse tree is such a symbol. Accepting
states of the DFA are those that would have
- a transition on END. */
+ a transition on END. */
- /* Ordinary character values are terminal symbols that match themselves. */
+ /* Ordinary character values are terminal symbols that match themselves. */
EMPTY = NOTCHAR, /* EMPTY is a terminal symbol that matches
- the empty string. */
+ the empty string. */
- BACKREF, /* BACKREF is generated by \<digit>; it
+ BACKREF, /* BACKREF is generated by \<digit>
+ or by any other construct that
is not completely handled. If the scanner
detects a transition on backref, it returns
a kind of "semi-success" indicating that
the match will have to be verified with
- a backtracking matcher. */
+ a backtracking matcher. */
BEGLINE, /* BEGLINE is a terminal symbol that matches
the empty string if it is at the beginning
- of a line. */
+ of a line. */
ENDLINE, /* ENDLINE is a terminal symbol that matches
the empty string if it is at the end of
- a line. */
+ a line. */
BEGWORD, /* BEGWORD is a terminal symbol that matches
the empty string if it is at the beginning
- of a word. */
+ of a word. */
ENDWORD, /* ENDWORD is a terminal symbol that matches
the empty string if it is at the end of
- a word. */
+ a word. */
LIMWORD, /* LIMWORD is a terminal symbol that matches
the empty string if it is at the beginning
- or the end of a word. */
+ or the end of a word. */
NOTLIMWORD, /* NOTLIMWORD is a terminal symbol that
matches the empty string if it is not at
- the beginning or end of a word. */
+ the beginning or end of a word. */
QMARK, /* QMARK is an operator of one argument that
matches zero or one occurrences of its
- argument. */
+ argument. */
STAR, /* STAR is an operator of one argument that
matches the Kleene closure (zero or more
- occurrences) of its argument. */
+ occurrences) of its argument. */
PLUS, /* PLUS is an operator of one argument that
matches the positive closure (one or more
- occurrences) of its argument. */
+ occurrences) of its argument. */
REPMN, /* REPMN is a lexical token corresponding
to the {m,n} construct. REPMN never
- appears in the compiled token vector. */
+ appears in the compiled token vector. */
CAT, /* CAT is an operator of two arguments that
matches the concatenation of its
arguments. CAT is never returned by the
- lexical analyzer. */
+ lexical analyzer. */
OR, /* OR is an operator of two arguments that
- matches either of its arguments. */
+ matches either of its arguments. */
LPAREN, /* LPAREN never appears in the parse tree,
- it is only a lexeme. */
+ it is only a lexeme. */
- RPAREN, /* RPAREN never appears in the parse tree. */
+ RPAREN, /* RPAREN never appears in the parse tree. */
ANYCHAR, /* ANYCHAR is a terminal symbol that matches
- any multibyte (or single byte) characters.
+ a valid multibyte (or single byte) character.
It is used only if MB_CUR_MAX > 1. */
MBCSET, /* MBCSET is similar to CSET, but for
@@ -291,50 +301,49 @@ enum
CSET /* CSET and (and any value greater) is a
terminal symbol that matches any of a
- class of characters. */
+ class of characters. */
};
/* States of the recognizer correspond to sets of positions in the parse
tree, together with the constraints under which they may be matched.
So a position is encoded as an index into the parse tree together with
- a constraint. */
+ a constraint. */
typedef struct
{
- size_t index; /* Index into the parse array. */
- unsigned int constraint; /* Constraint for matching this position. */
+ size_t index; /* Index into the parse array. */
+ unsigned int constraint; /* Constraint for matching this position. */
} position;
-/* Sets of positions are stored as arrays. */
+/* Sets of positions are stored as arrays. */
typedef struct
{
- position *elems; /* Elements of this position set. */
- size_t nelem; /* Number of elements in this set. */
+ position *elems; /* Elements of this position set. */
+ size_t nelem; /* Number of elements in this set. */
size_t alloc; /* Number of elements allocated in ELEMS. */
} position_set;
-/* Sets of leaves are also stored as arrays. */
+/* Sets of leaves are also stored as arrays. */
typedef struct
{
- size_t *elems; /* Elements of this position set. */
- size_t nelem; /* Number of elements in this set. */
+ size_t *elems; /* Elements of this position set. */
+ size_t nelem; /* Number of elements in this set. */
} leaf_set;
/* A state of the dfa consists of a set of positions, some flags,
and the token value of the lowest-numbered position of the state that
- contains an END token. */
+ contains an END token. */
typedef struct
{
- size_t hash; /* Hash of the positions of this state. */
- position_set elems; /* Positions this state could match. */
- unsigned char context; /* Context from previous state. */
+ size_t hash; /* Hash of the positions of this state. */
+ position_set elems; /* Positions this state could match. */
+ unsigned char context; /* Context from previous state. */
char backref; /* True if this state matches a \<digit>. */
- unsigned short constraint; /* Constraint for this state to accept. */
- token first_end; /* Token value of the first END in elems. */
+ unsigned short constraint; /* Constraint for this state to accept. */
+ token first_end; /* Token value of the first END in elems. */
position_set mbps; /* Positions which can match multibyte
- characters. e.g. period.
- These staff are used only if
- MB_CUR_MAX > 1. */
+ characters, e.g., period.
+ Used only if MB_CUR_MAX > 1. */
} dfa_state;
/* States are indexed by state_num values. These are normally
@@ -342,7 +351,7 @@ typedef struct
typedef ptrdiff_t state_num;
/* A bracket operator.
- e.g. [a-c], [[:alpha:]], etc. */
+ e.g., [a-c], [[:alpha:]], etc. */
struct mb_char_classes
{
ptrdiff_t cset;
@@ -360,26 +369,26 @@ struct mb_char_classes
size_t ncoll_elems; /* Collating elements. */
};
-/* A compiled regular expression. */
+/* A compiled regular expression. */
struct dfa
{
- /* Fields filled by the scanner. */
- charclass *charclasses; /* Array of character sets for CSET tokens. */
- size_t cindex; /* Index for adding new charclasses. */
- size_t calloc; /* Number of charclasses currently allocated. */
-
- /* Fields filled by the parser. */
- token *tokens; /* Postfix parse array. */
- size_t tindex; /* Index for adding new tokens. */
- size_t talloc; /* Number of tokens currently allocated. */
+ /* Fields filled by the scanner. */
+ charclass *charclasses; /* Array of character sets for CSET tokens. */
+ size_t cindex; /* Index for adding new charclasses. */
+ size_t calloc; /* Number of charclasses allocated. */
+
+ /* Fields filled by the parser. */
+ token *tokens; /* Postfix parse array. */
+ size_t tindex; /* Index for adding new tokens. */
+ size_t talloc; /* Number of tokens currently allocated. */
size_t depth; /* Depth required of an evaluation stack
used for depth-first traversal of the
- parse tree. */
- size_t nleaves; /* Number of leaves on the parse tree. */
+ parse tree. */
+ size_t nleaves; /* Number of leaves on the parse tree. */
size_t nregexps; /* Count of parallel regexps being built
- with dfaparse(). */
+ with dfaparse. */
unsigned int mb_cur_max; /* Cached value of MB_CUR_MAX. */
- token utf8_anychar_classes[5]; /* To lower ANYCHAR in UTF-8 locales. */
+ token utf8_anychar_classes[5]; /* To lower ANYCHAR in UTF-8 locales. */
/* The following are used only if MB_CUR_MAX > 1. */
@@ -403,67 +412,75 @@ struct dfa
size_t nmultibyte_prop;
int *multibyte_prop;
+#if MBS_SUPPORT
+ /* A table indexed by byte values that contains the corresponding wide
+ character (if any) for that byte. WEOF means the byte is the
+ leading byte of a multibyte character. Invalid and null bytes are
+ mapped to themselves. */
+ wint_t mbrtowc_cache[NOTCHAR];
+#endif
+
/* Array of the bracket expression in the DFA. */
struct mb_char_classes *mbcsets;
size_t nmbcsets;
size_t mbcsets_alloc;
- /* Fields filled by the state builder. */
- dfa_state *states; /* States of the dfa. */
- state_num sindex; /* Index for adding new states. */
- state_num salloc; /* Number of states currently allocated. */
+ /* Fields filled by the state builder. */
+ dfa_state *states; /* States of the dfa. */
+ state_num sindex; /* Index for adding new states. */
+ state_num salloc; /* Number of states currently allocated. */
- /* Fields filled by the parse tree->NFA conversion. */
+ /* Fields filled by the parse tree->NFA conversion. */
position_set *follows; /* Array of follow sets, indexed by position
index. The follow of a position is the set
of positions containing characters that
could conceivably follow a character
matching the given position in a string
matching the regexp. Allocated to the
- maximum possible position index. */
+ maximum possible position index. */
int searchflag; /* True if we are supposed to build a searching
as opposed to an exact matcher. A searching
matcher finds the first and shortest string
matching a regexp anywhere in the buffer,
whereas an exact matcher finds the longest
string matching, but anchored to the
- beginning of the buffer. */
+ beginning of the buffer. */
- /* Fields filled by dfaexec. */
+ /* Fields filled by dfaexec. */
state_num tralloc; /* Number of transition tables that have
- slots so far. */
+ slots so far. */
int trcount; /* Number of transition tables that have
- actually been built. */
+ actually been built. */
state_num **trans; /* Transition tables for states that can
never accept. If the transitions for a
state have not yet been computed, or the
state could possibly accept, its entry in
- this table is NULL. */
+ this table is NULL. */
state_num **realtrans; /* Trans always points to realtrans + 1; this
- is so trans[-1] can contain NULL. */
+ is so trans[-1] can contain NULL. */
state_num **fails; /* Transition tables after failing to accept
- on a state that potentially could do so. */
+ on a state that potentially could do so. */
int *success; /* Table of acceptance conditions used in
- dfaexec and computed in build_state. */
+ dfaexec and computed in build_state. */
state_num *newlines; /* Transitions on newlines. The entry for a
newline in any transition table is always
-1 so we can count lines without wasting
too many cycles. The transition for a
newline is stored separately and handled
as a special case. Newline is also used
- as a sentinel at the end of the buffer. */
+ as a sentinel at the end of the buffer. */
struct dfamust *musts; /* List of strings, at least one of which
is known to appear in any r.e. matching
- the dfa. */
+ the dfa. */
};
-/* Some macros for user access to dfa internals. */
+/* Some macros for user access to dfa internals. */
-/* ACCEPTING returns true if s could possibly be an accepting state of r. */
+/* ACCEPTING returns true if s could possibly be an accepting state of r. */
#define ACCEPTING(s, r) ((r).states[s].constraint)
/* ACCEPTS_IN_CONTEXT returns true if the given state accepts in the
- specified context. */
+ specified context. */
#define ACCEPTS_IN_CONTEXT(prev, curr, state, dfa) \
SUCCEEDS_IN_CONTEXT ((dfa).states[state].constraint, prev, curr)
@@ -471,7 +488,7 @@ static void dfamust (struct dfa *dfa);
static void regexp (void);
/* 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
+ except that they do not cast the result to "(t *)", and thus may
be used via type-free CALLOC and MALLOC macros. */
#undef XNMALLOC
#undef XCALLOC
@@ -492,7 +509,7 @@ static void regexp (void);
#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. */
+/* Reallocate an array of type *P if N_ALLOC is <= N_REQUIRED. */
#define REALLOC_IF_NECESSARY(p, n_alloc, n_required) \
do \
{ \
@@ -505,6 +522,64 @@ static void regexp (void);
} \
while (false)
+static void
+dfambcache (struct dfa *d)
+{
+#if MBS_SUPPORT
+ int i;
+ for (i = CHAR_MIN; i <= CHAR_MAX; ++i)
+ {
+ char c = i;
+ unsigned char uc = i;
+ mbstate_t s = { 0 };
+ wchar_t wc;
+ wint_t wi;
+ switch (mbrtowc (&wc, &c, 1, &s))
+ {
+ default: wi = wc; break;
+ case (size_t) -2: wi = WEOF; break;
+ case (size_t) -1: wi = uc; break;
+ }
+ d->mbrtowc_cache[uc] = wi;
+ }
+#endif
+}
+
+#if MBS_SUPPORT
+/* Given the dfa D, store into *PWC the result of converting the
+ leading bytes of the multibyte buffer S of length N bytes, updating
+ the conversion state in *MBS. On conversion error, convert just a
+ single byte as-is. Return the number of bytes converted.
+
+ This differs from mbrtowc (PWC, S, N, MBS) as follows:
+
+ * Extra arg D, containing an mbrtowc_cache for speed.
+ * N must be at least 1.
+ * S[N - 1] must be a sentinel byte.
+ * Shift encodings are not supported.
+ * The return value is always in the range 1..N.
+ * *MBS is always valid afterwards.
+ * *PWC is always set to something. */
+static size_t
+mbs_to_wchar (struct dfa *d, wchar_t *pwc, char const *s, size_t n,
+ mbstate_t *mbs)
+{
+ unsigned char uc = s[0];
+ wint_t wc = d->mbrtowc_cache[uc];
+
+ if (wc == WEOF)
+ {
+ size_t nbytes = mbrtowc (pwc, s, n, mbs);
+ if (0 < nbytes && nbytes < (size_t) -2)
+ return nbytes;
+ memset (mbs, 0, sizeof *mbs);
+ wc = uc;
+ }
+
+ *pwc = wc;
+ return 1;
+}
+#endif
#ifdef DEBUG
@@ -584,24 +659,24 @@ prtok (token t)
}
#endif /* DEBUG */
-/* Stuff pertaining to charclasses. */
+/* Stuff pertaining to charclasses. */
-static int
+static bool
tstbit (unsigned int b, charclass const c)
{
- return c[b / INTBITS] & 1 << b % INTBITS;
+ return c[b / INTBITS] >> b % INTBITS & 1;
}
static void
setbit (unsigned int b, charclass c)
{
- c[b / INTBITS] |= 1 << b % INTBITS;
+ c[b / INTBITS] |= 1U << b % INTBITS;
}
static void
clrbit (unsigned int b, charclass c)
{
- c[b / INTBITS] &= ~(1 << b % INTBITS);
+ c[b / INTBITS] &= ~(1U << b % INTBITS);
}
static void
@@ -631,10 +706,11 @@ equal (charclass const s1, charclass const s2)
return memcmp (s1, s2, sizeof (charclass)) == 0;
}
-/* A pointer to the current dfa is kept here during parsing. */
+/* A pointer to the current dfa is kept here during parsing. */
static struct dfa *dfa;
-/* Find the index of charclass s in dfa->charclasses, or allocate a new charclass. */
+/* Find the index of charclass s in dfa->charclasses, or allocate a
+ new charclass. */
static size_t
charclass_index (charclass const s)
{
@@ -649,10 +725,10 @@ charclass_index (charclass const s)
return i;
}
-/* Syntax bits controlling the behavior of the lexical analyzer. */
+/* Syntax bits controlling the behavior of the lexical analyzer. */
static reg_syntax_t syntax_bits, syntax_bits_set;
-/* Flag for case-folding letters into sets. */
+/* Flag for case-folding letters into sets. */
static int case_fold;
/* End-of-line byte in data. */
@@ -661,10 +737,10 @@ static unsigned char eolbyte;
/* Cache of char-context values. */
static int sbit[NOTCHAR];
-/* Set of characters considered letters. */
+/* Set of characters considered letters. */
static charclass letters;
-/* Set of characters that are newline. */
+/* Set of characters that are newline. */
static charclass newline;
/* Add this to the test for whether a byte is word-constituent, since on
@@ -700,7 +776,7 @@ wchar_context (wint_t wc)
return CTX_NONE;
}
-/* Entry point to set syntax options. */
+/* Entry point to set syntax options. */
void
dfasyntax (reg_syntax_t bits, int fold, unsigned char eol)
{
@@ -731,67 +807,39 @@ dfasyntax (reg_syntax_t bits, int fold, unsigned char eol)
this may happen when folding case in weird Turkish locales where
dotless i/dotted I are not included in the chosen character set.
Return whether a bit was set in the charclass. */
-#if MBS_SUPPORT
static bool
setbit_wc (wint_t wc, charclass c)
{
+#if MBS_SUPPORT
int b = wctob (wc);
if (b == EOF)
return false;
setbit (b, c);
return true;
-}
-
-/* Set a bit in the charclass for the given single byte character,
- if it is valid in the current character set. */
-static void
-setbit_c (int b, charclass c)
-{
- /* Do nothing if b is invalid in this character set. */
- if (MB_CUR_MAX > 1 && btowc (b) == WEOF)
- return;
- setbit (b, c);
-}
#else
-# define setbit_c setbit
-static inline bool
-setbit_wc (wint_t wc, charclass c)
-{
abort ();
/*NOTREACHED*/ return false;
-}
#endif
+}
-/* Like setbit_c, but if case is folded, set both cases of a letter. For
- MB_CUR_MAX > 1, the resulting charset is only used as an optimization,
- and the caller takes care of setting the appropriate field of struct
- mb_char_classes. */
+/* Set a bit for B and its case variants in the charclass C.
+ MB_CUR_MAX must be 1. */
static void
setbit_case_fold_c (int b, charclass c)
{
- if (MB_CUR_MAX > 1)
- {
- wint_t wc = btowc (b);
- if (wc == WEOF)
- return;
- setbit (b, c);
- if (case_fold && iswalpha (wc))
- setbit_wc (iswupper (wc) ? towlower (wc) : towupper (wc), c);
- }
- else
- {
- setbit (b, c);
- if (case_fold && isalpha (b))
- setbit_c (isupper (b) ? tolower (b) : toupper (b), c);
- }
+ int ub = toupper (b);
+ int i;
+ for (i = 0; i < NOTCHAR; i++)
+ if (toupper (i) == ub)
+ setbit (i, c);
}
/* UTF-8 encoding allows some optimizations that we can't otherwise
- assume in a multibyte encoding. */
-static inline int
+ assume in a multibyte encoding. */
+int
using_utf8 (void)
{
static int utf8 = -1;
@@ -804,54 +852,94 @@ using_utf8 (void)
#endif
#ifdef LIBC_IS_BORKED
if (gawk_mb_cur_max == 1)
- utf8 = 0;
+ utf8 = 0;
#endif
}
return utf8;
}
+/* Return true if the current locale is known to be a unibyte locale
+ without multicharacter collating sequences and where range
+ comparisons simply use the native encoding. These locales can be
+ processed more efficiently. */
+
+static bool
+using_simple_locale (void)
+{
+ /* True if the native character set is known to be compatible with
+ the C locale. The following test isn't perfect, but it's good
+ enough in practice, as only ASCII and EBCDIC are in common use
+ and this test correctly accepts ASCII and rejects EBCDIC. */
+ enum { native_c_charset =
+ ('\b' == 8 && '\t' == 9 && '\n' == 10 && '\v' == 11 && '\f' == 12
+ && '\r' == 13 && ' ' == 32 && '!' == 33 && '"' == 34 && '#' == 35
+ && '%' == 37 && '&' == 38 && '\'' == 39 && '(' == 40 && ')' == 41
+ && '*' == 42 && '+' == 43 && ',' == 44 && '-' == 45 && '.' == 46
+ && '/' == 47 && '0' == 48 && '9' == 57 && ':' == 58 && ';' == 59
+ && '<' == 60 && '=' == 61 && '>' == 62 && '?' == 63 && 'A' == 65
+ && 'Z' == 90 && '[' == 91 && '\\' == 92 && ']' == 93 && '^' == 94
+ && '_' == 95 && 'a' == 97 && 'z' == 122 && '{' == 123 && '|' == 124
+ && '}' == 125 && '~' == 126)
+ };
+
+ if (! native_c_charset || MB_CUR_MAX > 1)
+ return false;
+ else
+ {
+ static int unibyte_c = -1;
+ if (unibyte_c < 0)
+ {
+ char const *locale = setlocale (LC_ALL, NULL);
+ unibyte_c = (!locale
+ || STREQ (locale, "C")
+ || STREQ (locale, "POSIX"));
+ }
+ return unibyte_c;
+ }
+}
+
/* Lexical analyzer. All the dross that deals with the obnoxious
GNU Regex syntax bits is located here. The poor, suffering
reader is referred to the GNU Regex documentation for the
- meaning of the @#%!@#%^!@ syntax bits. */
+ meaning of the @#%!@#%^!@ syntax bits. */
-static char const *lexptr; /* Pointer to next input character. */
-static size_t lexleft; /* Number of characters remaining. */
-static token lasttok; /* Previous token returned; initially END. */
-static int laststart; /* True if we're separated from beginning or (, |
- only by zero-width characters. */
-static size_t parens; /* Count of outstanding left parens. */
-static int minrep, maxrep; /* Repeat counts for {m,n}. */
+static char const *lexptr; /* Pointer to next input character. */
+static size_t lexleft; /* Number of characters remaining. */
+static token lasttok; /* Previous token returned; initially END. */
+static int laststart; /* True if we're separated from beginning or (,
+ | only by zero-width characters. */
+static size_t parens; /* Count of outstanding left parens. */
+static int minrep, maxrep; /* Repeat counts for {m,n}. */
static int cur_mb_len = 1; /* Length of the multibyte representation of
wctok. */
/* These variables are used only if (MB_CUR_MAX > 1). */
-static mbstate_t mbs; /* Mbstate for mbrlen(). */
+static mbstate_t mbs; /* mbstate for mbrtowc. */
static wchar_t wctok; /* Wide character representation of the current
multibyte character. */
-static unsigned char *mblen_buf; /* Correspond to the input buffer in dfaexec().
- Each element store the amount of remain
- byte of corresponding multibyte character
- in the input string. A element's value
- is 0 if corresponding character is a
- single byte character.
- e.g. input : 'a', <mb(0)>, <mb(1)>, <mb(2)>
- mblen_buf : 0, 3, 2, 1
- */
-static wchar_t *inputwcs; /* Wide character representation of input
- string in dfaexec().
- The length of this array is same as
- the length of input string(char array).
+static unsigned char *mblen_buf;/* Correspond to the input buffer in dfaexec.
+ Each element stores the number of remaining
+ bytes of the corresponding multibyte
+ character in the input string. A element's
+ value is 0 if the corresponding character is
+ single-byte.
+ e.g., input : 'a', <mb(0)>, <mb(1)>, <mb(2)>
+ mblen_buf : 0, 3, 2, 1
+ */
+static wchar_t *inputwcs; /* Wide character representation of the input
+ string in dfaexec.
+ The length of this array is the same as
+ the length of input string (char array).
inputstring[i] is a single-byte char,
- or 1st byte of a multibyte char.
- And inputwcs[i] is the codepoint. */
-static unsigned char const *buf_begin; /* reference to begin in dfaexec(). */
-static unsigned char const *buf_end; /* reference to end in dfaexec(). */
+ or the first byte of a multibyte char;
+ 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. */
#if MBS_SUPPORT
-/* Note that characters become unsigned here. */
+/* Note that characters become unsigned here. */
# define FETCH_WC(c, wc, eoferr) \
do { \
if (! lexleft) \
@@ -864,32 +952,18 @@ static unsigned char const *buf_end; /* reference to end in dfaexec(). */
else \
{ \
wchar_t _wc; \
- cur_mb_len = mbrtowc (&_wc, lexptr, lexleft, &mbs); \
- if (cur_mb_len <= 0) \
- { \
- cur_mb_len = 1; \
- --lexleft; \
- (wc) = (c) = to_uchar (*lexptr++); \
- } \
- else \
- { \
- lexptr += cur_mb_len; \
- lexleft -= cur_mb_len; \
- (wc) = _wc; \
- (c) = wctob (wc); \
- } \
+ size_t nbytes = mbs_to_wchar (dfa, &_wc, lexptr, lexleft, &mbs); \
+ cur_mb_len = nbytes; \
+ (wc) = _wc; \
+ (c) = nbytes == 1 ? to_uchar (*lexptr) : EOF; \
+ lexptr += nbytes; \
+ lexleft -= nbytes; \
} \
- } while(0)
-
-# define FETCH(c, eoferr) \
- do { \
- wint_t wc; \
- FETCH_WC (c, wc, eoferr); \
} while (0)
#else
-/* Note that characters become unsigned here. */
-# define FETCH(c, eoferr) \
+/* Note that characters become unsigned here. */
+# define FETCH_WC(c, unused, eoferr) \
do { \
if (! lexleft) \
{ \
@@ -900,9 +974,7 @@ static unsigned char const *buf_end; /* reference to end in dfaexec(). */
} \
(c) = to_uchar (*lexptr++); \
--lexleft; \
- } while(0)
-
-# define FETCH_WC(c, unused, eoferr) FETCH (c, eoferr)
+ } while (0)
#endif /* MBS_SUPPORT */
@@ -910,11 +982,56 @@ static unsigned char const *buf_end; /* reference to end in dfaexec(). */
# define MIN(a,b) ((a) < (b) ? (a) : (b))
#endif
+/* The set of wchar_t values C such that there's a useful locale
+ somewhere where C != towupper (C) && C != towlower (towupper (C)).
+ For example, 0x00B5 (U+00B5 MICRO SIGN) is in this table, because
+ towupper (0x00B5) == 0x039C (U+039C GREEK CAPITAL LETTER MU), and
+ towlower (0x039C) == 0x03BC (U+03BC GREEK SMALL LETTER MU). */
+static short const lonesome_lower[] =
+ {
+ 0x00B5, 0x0131, 0x017F, 0x01C5, 0x01C8, 0x01CB, 0x01F2, 0x0345,
+ 0x03C2, 0x03D0, 0x03D1, 0x03D5, 0x03D6, 0x03F0, 0x03F1,
+
+ /* U+03F2 GREEK LUNATE SIGMA SYMBOL lacks a specific uppercase
+ counterpart in locales predating Unicode 4.0.0 (April 2003). */
+ 0x03F2,
+
+ 0x03F5, 0x1E9B, 0x1FBE,
+ };
+
+static_assert ((sizeof lonesome_lower / sizeof *lonesome_lower + 2
+ == CASE_FOLDED_BUFSIZE),
+ "CASE_FOLDED_BUFSIZE is wrong");
+
+/* Find the characters equal to C after case-folding, other than C
+ itself, and store them into FOLDED. Return the number of characters
+ stored. */
+int
+case_folded_counterparts (wchar_t c, wchar_t folded[CASE_FOLDED_BUFSIZE])
+{
+ int i;
+ int n = 0;
+ wint_t uc = towupper (c);
+ wint_t lc = towlower (uc);
+ if (uc != c)
+ folded[n++] = uc;
+ if (lc != uc && lc != c && towupper (lc) == uc)
+ folded[n++] = lc;
+ for (i = 0; i < sizeof lonesome_lower / sizeof *lonesome_lower; i++)
+ {
+ wint_t li = lonesome_lower[i];
+ if (li != lc && li != uc && li != c && towupper (li) == uc)
+ folded[n++] = li;
+ }
+ return n;
+}
+
typedef int predicate (int);
/* The following list maps the names of the Posix named character classes
to predicate functions that determine whether a given character is in
- the class. The leading [ has already been eaten by the lexical analyzer. */
+ the class. The leading [ has already been eaten by the lexical
+ analyzer. */
struct dfa_ctype
{
const char *name;
@@ -927,7 +1044,7 @@ static const struct dfa_ctype prednames[] = {
{"upper", isupper, false},
{"lower", islower, false},
{"digit", isdigit, true},
- {"xdigit", isxdigit, true},
+ {"xdigit", isxdigit, false},
{"space", isspace, false},
{"punct", ispunct, false},
{"alnum", isalnum, false},
@@ -950,8 +1067,7 @@ find_pred (const char *str)
}
/* Multibyte character handling sub-routine for lex.
- This function parse a bracket expression and build a struct
- mb_char_classes. */
+ Parse a bracket expression and build a struct mb_char_classes. */
static token
parse_bracket_exp (void)
{
@@ -959,6 +1075,10 @@ parse_bracket_exp (void)
int c, c1, c2;
charclass ccl;
+ /* True if this is a bracket expression that dfaexec is known to
+ process correctly. */
+ bool known_bracket_exp = true;
+
/* Used to warn about [:space:].
Bit 0 = first character is a colon.
Bit 1 = last character is a colon.
@@ -984,7 +1104,7 @@ parse_bracket_exp (void)
dfa->nmbcsets + 1);
/* dfa->multibyte_prop[] hold the index of dfa->mbcsets.
- We will update dfa->multibyte_prop[] in addtok(), because we can't
+ We will update dfa->multibyte_prop[] in addtok, because we can't
decide the index in dfa->tokens[]. */
/* Initialize work area. */
@@ -1000,6 +1120,7 @@ parse_bracket_exp (void)
{
FETCH_WC (c, wc, _("unbalanced ["));
invert = 1;
+ known_bracket_exp = using_simple_locale ();
}
else
invert = 0;
@@ -1013,17 +1134,15 @@ parse_bracket_exp (void)
/* Note that if we're looking at some other [:...:] construct,
we just treat it as a bunch of ordinary characters. We can do
this because we assume regex has checked for syntax errors before
- dfa is ever called. */
- if (c == '[' && (syntax_bits & RE_CHAR_CLASSES))
+ dfa is ever called. */
+ if (c == '[')
{
-#define BRACKET_BUFFER_SIZE 128
- char str[BRACKET_BUFFER_SIZE];
+#define MAX_BRACKET_STRING_LEN 32
+ char str[MAX_BRACKET_STRING_LEN + 1];
FETCH_WC (c1, wc1, _("unbalanced ["));
- /* If pattern contains '[[:', '[[.', or '[[='. */
- if (c1 == ':'
- /* TODO: handle '[[.' and '[[=' also for MB_CUR_MAX == 1. */
- || (MB_CUR_MAX > 1 && (c1 == '.' || c1 == '=')))
+ if ((c1 == ':' && (syntax_bits & RE_CHAR_CLASSES))
+ || c1 == '.' || c1 == '=')
{
size_t len = 0;
for (;;)
@@ -1031,7 +1150,7 @@ parse_bracket_exp (void)
FETCH_WC (c, wc, _("unbalanced ["));
if ((c == c1 && *lexptr == ']') || lexleft == 0)
break;
- if (len < BRACKET_BUFFER_SIZE)
+ if (len < MAX_BRACKET_STRING_LEN)
str[len++] = c;
else
/* This is in any case an invalid class name. */
@@ -1042,7 +1161,10 @@ parse_bracket_exp (void)
/* Fetch bracket. */
FETCH_WC (c, wc, _("unbalanced ["));
if (c1 == ':')
- /* build character class. */
+ /* Build character class. POSIX allows character
+ classes to match multicharacter collating elements,
+ but the regex code does not support that, so do not
+ worry about that possibility. */
{
char const *class
= (case_fold && (STREQ (str, "upper")
@@ -1054,7 +1176,7 @@ parse_bracket_exp (void)
if (MB_CUR_MAX > 1 && !pred->single_byte_only)
{
/* Store the character class as wctype_t. */
- wctype_t wt = wctype (class);
+ wctype_t wt = (wctype_t) wctype (class);
REALLOC_IF_NECESSARY (work_mbc->ch_classes,
ch_classes_al,
@@ -1064,30 +1186,11 @@ parse_bracket_exp (void)
for (c2 = 0; c2 < NOTCHAR; ++c2)
if (pred->func (c2))
- setbit_case_fold_c (c2, ccl);
+ setbit (c2, ccl);
}
+ else
+ known_bracket_exp = false;
- else if (MBS_SUPPORT && (c1 == '=' || c1 == '.'))
- {
- char *elem = xmemdup (str, len + 1);
-
- if (c1 == '=')
- /* build equivalence class. */
- {
- REALLOC_IF_NECESSARY (work_mbc->equivs,
- equivs_al, work_mbc->nequivs + 1);
- work_mbc->equivs[work_mbc->nequivs++] = elem;
- }
-
- if (c1 == '.')
- /* build collating element. */
- {
- REALLOC_IF_NECESSARY (work_mbc->coll_elems,
- coll_elems_al,
- work_mbc->ncoll_elems + 1);
- work_mbc->coll_elems[work_mbc->ncoll_elems++] = elem;
- }
- }
colon_warning_state |= 8;
/* Fetch new lookahead character. */
@@ -1109,112 +1212,96 @@ parse_bracket_exp (void)
/* build range characters. */
{
FETCH_WC (c2, wc2, _("unbalanced ["));
- if (c2 == ']')
+
+ /* A bracket expression like [a-[.aa.]] matches an unknown set.
+ Treat it like [-a[.aa.]] while parsing it, and
+ remember that the set is unknown. */
+ if (c2 == '[' && *lexptr == '.')
{
- /* In the case [x-], the - is an ordinary hyphen,
- which is left in c1, the lookahead character. */
- lexptr -= cur_mb_len;
- lexleft += cur_mb_len;
+ known_bracket_exp = false;
+ c2 = ']';
}
- }
- if (c1 == '-' && c2 != ']')
- {
- if (c2 == '\\' && (syntax_bits & RE_BACKSLASH_ESCAPE_IN_LISTS))
- FETCH_WC (c2, wc2, _("unbalanced ["));
-
- if (MB_CUR_MAX > 1)
+ if (c2 != ']')
{
- /* When case folding map a range, say [m-z] (or even [M-z])
- to the pair of ranges, [m-z] [M-Z]. */
- REALLOC_IF_NECESSARY (work_mbc->range_sts,
- range_sts_al, work_mbc->nranges + 1);
- REALLOC_IF_NECESSARY (work_mbc->range_ends,
- range_ends_al, work_mbc->nranges + 1);
- work_mbc->range_sts[work_mbc->nranges] =
- case_fold ? towlower (wc) : (wchar_t) wc;
- work_mbc->range_ends[work_mbc->nranges++] =
- case_fold ? towlower (wc2) : (wchar_t) wc2;
-
-#ifndef GREP
- if (case_fold && (iswalpha (wc) || iswalpha (wc2)))
+ if (c2 == '\\' && (syntax_bits & RE_BACKSLASH_ESCAPE_IN_LISTS))
+ FETCH_WC (c2, wc2, _("unbalanced ["));
+
+ if (MB_CUR_MAX > 1)
{
+ /* When case folding map a range, say [m-z] (or even [M-z])
+ to the pair of ranges, [m-z] [M-Z]. Although this code
+ is wrong in multiple ways, it's never used in practice.
+ FIXME: Remove this (and related) unused code. */
REALLOC_IF_NECESSARY (work_mbc->range_sts,
range_sts_al, work_mbc->nranges + 1);
- work_mbc->range_sts[work_mbc->nranges] = towupper (wc);
REALLOC_IF_NECESSARY (work_mbc->range_ends,
range_ends_al, work_mbc->nranges + 1);
- work_mbc->range_ends[work_mbc->nranges++] = towupper (wc2);
- }
-#endif
- }
- else
- {
-#ifndef GAWK
- /* Defer to the system regex library about the meaning
- of range expressions. */
- regex_t re;
- char pattern[6] = { '[', 0, '-', 0, ']', 0 };
- char subject[2] = { 0, 0 };
- c1 = c;
- if (case_fold)
- {
- c1 = tolower (c1);
- c2 = tolower (c2);
- }
+ work_mbc->range_sts[work_mbc->nranges] =
+ case_fold ? towlower (wc) : (wchar_t) wc;
+ work_mbc->range_ends[work_mbc->nranges++] =
+ case_fold ? towlower (wc2) : (wchar_t) wc2;
- pattern[1] = c1;
- pattern[3] = c2;
- regcomp (&re, pattern, REG_NOSUB);
- for (c = 0; c < NOTCHAR; ++c)
- {
- if ((case_fold && isupper (c))
- || (MB_CUR_MAX > 1 && btowc (c) == WEOF))
- continue;
- subject[0] = c;
- if (regexec (&re, subject, 0, NULL, 0) != REG_NOMATCH)
- setbit_case_fold_c (c, ccl);
+ if (case_fold && (iswalpha (wc) || iswalpha (wc2)))
+ {
+ REALLOC_IF_NECESSARY (work_mbc->range_sts,
+ range_sts_al, work_mbc->nranges + 1);
+ work_mbc->range_sts[work_mbc->nranges] = towupper (wc);
+ REALLOC_IF_NECESSARY (work_mbc->range_ends,
+ range_ends_al, work_mbc->nranges + 1);
+ work_mbc->range_ends[work_mbc->nranges++] = towupper (wc2);
+ }
}
- regfree (&re);
-#else
- c1 = c;
- if (case_fold)
+ else if (using_simple_locale ())
{
- c1 = tolower (c1);
- c2 = tolower (c2);
+ for (c1 = c; c1 <= c2; c1++)
+ setbit (c1, ccl);
+ if (case_fold)
+ {
+ int uc = toupper (c);
+ int uc2 = toupper (c2);
+ for (c1 = 0; c1 < NOTCHAR; c1++)
+ {
+ int uc1 = toupper (c1);
+ if (uc <= uc1 && uc1 <= uc2)
+ setbit (c1, ccl);
+ }
+ }
}
- for (c = c1; c <= c2; c++)
- setbit_case_fold_c (c, ccl);
-#endif
+ else
+ known_bracket_exp = false;
+
+ colon_warning_state |= 8;
+ FETCH_WC (c1, wc1, _("unbalanced ["));
+ continue;
}
- colon_warning_state |= 8;
- FETCH_WC (c1, wc1, _("unbalanced ["));
- continue;
+ /* In the case [x-], the - is an ordinary hyphen,
+ which is left in c1, the lookahead character. */
+ lexptr -= cur_mb_len;
+ lexleft += cur_mb_len;
}
colon_warning_state |= (c == ':') ? 2 : 4;
if (MB_CUR_MAX == 1)
{
- setbit_case_fold_c (c, ccl);
+ if (case_fold)
+ setbit_case_fold_c (c, ccl);
+ else
+ setbit (c, ccl);
continue;
}
- if (case_fold && iswalpha (wc))
+ if (case_fold)
{
- wc = towlower (wc);
- if (!setbit_wc (wc, ccl))
- {
- REALLOC_IF_NECESSARY (work_mbc->chars, chars_al,
- work_mbc->nchars + 1);
- work_mbc->chars[work_mbc->nchars++] = wc;
- }
-#ifdef GREP
- continue;
-#else
- wc = towupper (wc);
-#endif
+ wchar_t folded[CASE_FOLDED_BUFSIZE];
+ int i, n = case_folded_counterparts (wc, folded);
+ REALLOC_IF_NECESSARY (work_mbc->chars, chars_al,
+ work_mbc->nchars + n);
+ for (i = 0; i < n; i++)
+ if (!setbit_wc (folded[i], ccl))
+ work_mbc->chars[work_mbc->nchars++] = folded[i];
}
if (!setbit_wc (wc, ccl))
{
@@ -1228,6 +1315,9 @@ parse_bracket_exp (void)
if (colon_warning_state == 7)
dfawarn (_("character class syntax is [[:space:]], not [:space:]"));
+ if (! known_bracket_exp)
+ return BACKREF;
+
if (MB_CUR_MAX > 1)
{
static charclass zeroclass;
@@ -1263,14 +1353,9 @@ lex (void)
"if (backslash) ...". */
for (i = 0; i < 2; ++i)
{
- if (MB_CUR_MAX > 1)
- {
- FETCH_WC (c, wctok, NULL);
- if ((int) c == EOF)
- goto normal_char;
- }
- else
- FETCH (c, NULL);
+ FETCH_WC (c, wctok, NULL);
+ if (c == (unsigned int) EOF)
+ goto normal_char;
switch (c)
{
@@ -1324,7 +1409,7 @@ lex (void)
case '`':
if (backslash && !(syntax_bits & RE_NO_GNU_OPS))
- return lasttok = BEGLINE; /* FIXME: should be beginning of string */
+ return lasttok = BEGLINE; /* FIXME: should be beginning of string */
goto normal_char;
case '\'':
@@ -1489,14 +1574,46 @@ lex (void)
case 'S':
if (!backslash || (syntax_bits & RE_NO_GNU_OPS))
goto normal_char;
- zeroset (ccl);
- for (c2 = 0; c2 < NOTCHAR; ++c2)
- if (isspace (c2))
- setbit (c2, ccl);
- if (c == 'S')
- notset (ccl);
+ if (MB_CUR_MAX == 1)
+ {
+ zeroset (ccl);
+ for (c2 = 0; c2 < NOTCHAR; ++c2)
+ if (isspace (c2))
+ setbit (c2, ccl);
+ if (c == 'S')
+ notset (ccl);
+ laststart = 0;
+ return lasttok = CSET + charclass_index (ccl);
+ }
+
+#define PUSH_LEX_STATE(s) \
+ do \
+ { \
+ char const *lexptr_saved = lexptr; \
+ size_t lexleft_saved = lexleft; \
+ lexptr = (s); \
+ lexleft = strlen (lexptr)
+
+#define POP_LEX_STATE() \
+ lexptr = lexptr_saved; \
+ lexleft = lexleft_saved; \
+ } \
+ while (0)
+
+ /* FIXME: see if optimizing this, as is done with ANYCHAR and
+ add_utf8_anychar, makes sense. */
+
+ /* \s and \S are documented to be equivalent to [[:space:]] and
+ [^[:space:]] respectively, so tell the lexer to process those
+ strings, each minus its "already processed" '['. */
+ PUSH_LEX_STATE (c == 's' ? "[:space:]]" : "^[:space:]]");
+
+ lasttok = parse_bracket_exp ();
+
+ POP_LEX_STATE ();
+
laststart = 0;
- return lasttok = CSET + charclass_index (ccl);
+ return lasttok;
case 'w':
case 'W':
@@ -1537,19 +1654,19 @@ lex (void)
}
/* The above loop should consume at most a backslash
- and some other character. */
+ and some other character. */
abort ();
- return END; /* keeps pedantic compilers happy. */
+ return END; /* keeps pedantic compilers happy. */
}
-/* Recursive descent parser for regular expressions. */
+/* Recursive descent parser for regular expressions. */
-static token tok; /* Lookahead token. */
+static token tok; /* Lookahead token. */
static size_t depth; /* Current depth of a hypothetical stack
holding deferred productions. This is
used to determine the depth that will be
required of the real stack later on in
- dfaanalyze(). */
+ dfaanalyze. */
static void
addtok_mb (token t, int mbprop)
@@ -1589,7 +1706,7 @@ addtok_mb (token t, int mbprop)
static void addtok_wc (wint_t wc);
/* Add the given token to the parse tree, maintaining the depth count and
- updating the maximum depth if necessary. */
+ updating the maximum depth if necessary. */
static void
addtok (token t)
{
@@ -1613,10 +1730,11 @@ addtok (token t)
work_mbc->nchars = 0;
}
- /* UTF-8 allows treating a simple, non-inverted MBCSET like a CSET. */
+ /* If the MBCSET is non-inverted and doesn't include neither
+ character classes including multibyte characters, range
+ expressions, equivalence classes nor collating elements,
+ it can be replaced to a simple CSET. */
if (work_mbc->invert
- || (!using_utf8 () && work_mbc->cset != -1)
- || work_mbc->nchars != 0
|| work_mbc->nch_classes != 0
|| work_mbc->nranges != 0
|| work_mbc->nequivs != 0 || work_mbc->ncoll_elems != 0)
@@ -1631,7 +1749,6 @@ addtok (token t)
that the mbcset is empty now. Do nothing in that case. */
if (work_mbc->cset != -1)
{
- assert (using_utf8 ());
addtok (CSET + work_mbc->cset);
if (need_or)
addtok (OR);
@@ -1648,23 +1765,26 @@ addtok (token t)
/* We treat a multibyte character as a single atom, so that DFA
can treat a multibyte character as a single expression.
- e.g. We construct following tree from "<mb1><mb2>".
+ e.g., we construct the following tree from "<mb1><mb2>".
<mb1(1st-byte)><mb1(2nd-byte)><CAT><mb1(3rd-byte)><CAT>
<mb2(1st-byte)><mb2(2nd-byte)><CAT><mb2(3rd-byte)><CAT><CAT> */
static void
addtok_wc (wint_t wc)
{
unsigned char buf[MB_LEN_MAX];
- mbstate_t s;
+ mbstate_t s = { 0 };
int i;
- memset (&s, 0, sizeof s);
- cur_mb_len = wcrtomb ((char *) buf, wc, &s);
+ size_t stored_bytes = wcrtomb ((char *) buf, wc, &s);
- /* This is merely stop-gap. When cur_mb_len is 0 or negative,
- buf[0] is undefined, yet skipping the addtok_mb call altogether
- can result in heap corruption. */
- if (cur_mb_len <= 0)
- buf[0] = 0;
+ if (stored_bytes != (size_t) -1)
+ cur_mb_len = stored_bytes;
+ else
+ {
+ /* This is merely stop-gap. buf[0] is undefined, yet skipping
+ the addtok_mb call altogether can corrupt the heap. */
+ cur_mb_len = 1;
+ buf[0] = 0;
+ }
addtok_mb (buf[0], cur_mb_len == 1 ? 3 : 1);
for (i = 1; i < cur_mb_len; i++)
@@ -1685,7 +1805,7 @@ 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}, /* 80-bf: non-leading bytes */
{~0, ~0, ~0, ~0, 0, 0, 0, 0}, /* 00-7f: 1-byte sequence */
{0, 0, 0, 0, 0, 0, ~3, 0}, /* c2-df: 2-byte sequence */
{0, 0, 0, 0, 0, 0, 0, 0xffff}, /* e0-ef: 3-byte sequence */
@@ -1764,25 +1884,25 @@ add_utf8_anychar (void)
LPAREN regexp RPAREN
<empty>
- The parser builds a parse tree in postfix form in an array of tokens. */
+ The parser builds a parse tree in postfix form in an array of tokens. */
static void
atom (void)
{
- if (0)
- {
- /* empty */
- }
- else if (MBS_SUPPORT && tok == WCHAR)
+ if (MBS_SUPPORT && tok == WCHAR)
{
- addtok_wc (case_fold ? towlower (wctok) : wctok);
-#ifndef GREP
- if (case_fold && iswalpha (wctok))
+ addtok_wc (wctok);
+
+ if (case_fold)
{
- addtok_wc (towupper (wctok));
- addtok (OR);
+ wchar_t folded[CASE_FOLDED_BUFSIZE];
+ int i, n = case_folded_counterparts (wctok, folded);
+ for (i = 0; i < n; i++)
+ {
+ addtok_wc (folded[i]);
+ addtok (OR);
+ }
}
-#endif
tok = lex ();
}
@@ -1820,7 +1940,7 @@ atom (void)
addtok (EMPTY);
}
-/* Return the number of tokens in the given subexpression. */
+/* Return the number of tokens in the given subexpression. */
static size_t _GL_ATTRIBUTE_PURE
nsubtoks (size_t tindex)
{
@@ -1841,7 +1961,7 @@ nsubtoks (size_t tindex)
}
}
-/* Copy the given subexpression to the top of the tree. */
+/* Copy the given subexpression to the top of the tree. */
static void
copytoks (size_t tindex, size_t ntokens)
{
@@ -1849,10 +1969,10 @@ copytoks (size_t tindex, size_t ntokens)
if (MB_CUR_MAX > 1)
for (i = 0; i < ntokens; ++i)
- addtok_mb(dfa->tokens[tindex + i], dfa->multibyte_prop[tindex + i]);
+ addtok_mb (dfa->tokens[tindex + i], dfa->multibyte_prop[tindex + i]);
else
for (i = 0; i < ntokens; ++i)
- addtok_mb(dfa->tokens[tindex + i], 3);
+ addtok_mb (dfa->tokens[tindex + i], 3);
}
static void
@@ -1922,7 +2042,7 @@ regexp (void)
/* Main entry point for the parser. S is a string to be parsed, len is the
length of the string, so s can include NUL characters. D is a pointer to
- the struct dfa to parse into. */
+ the struct dfa to parse into. */
void
dfaparse (char const *s, size_t len, struct dfa *d)
{
@@ -1958,9 +2078,9 @@ dfaparse (char const *s, size_t len, struct dfa *d)
++d->nregexps;
}
-/* Some primitives for operating on sets of positions. */
+/* Some primitives for operating on sets of positions. */
-/* Copy one set to another; the destination must be large enough. */
+/* Copy one set to another; the destination must be large enough. */
static void
copy (position_set const *src, position_set * dst)
{
@@ -1980,7 +2100,7 @@ alloc_position_set (position_set * s, size_t size)
/* 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. */
+ S->elems must point to an array large enough to hold the resulting set. */
static void
insert (position p, position_set * s)
{
@@ -2010,7 +2130,7 @@ insert (position p, position_set * s)
}
/* Merge two sets of positions into a third. The result is exactly as if
- the positions of both sets were inserted into an initially empty set. */
+ the positions of both sets were inserted into an initially empty set. */
static void
merge (position_set const *s1, position_set const *s2, position_set * m)
{
@@ -2034,7 +2154,7 @@ merge (position_set const *s1, position_set const *s2, position_set * m)
m->elems[m->nelem++] = s2->elems[j++];
}
-/* Delete a position from a set. */
+/* Delete a position from a set. */
static void
delete (position p, position_set * s)
{
@@ -2050,7 +2170,7 @@ delete (position p, position_set * s)
/* Find the index of the state corresponding to the given position set with
the given preceding context, or create a new state if there is no such
- state. Context tells whether we got here on a newline or letter. */
+ state. Context tells whether we got here on a newline or letter. */
static state_num
state_index (struct dfa *d, position_set const *s, int context)
{
@@ -2061,7 +2181,7 @@ state_index (struct dfa *d, position_set const *s, int context)
for (i = 0; i < s->nelem; ++i)
hash ^= s->elems[i].index + s->elems[i].constraint;
- /* Try to find a state that exactly matches the proposed one. */
+ /* Try to find a state that exactly matches the proposed one. */
for (i = 0; i < d->sindex; ++i)
{
if (hash != d->states[i].hash || s->nelem != d->states[i].elems.nelem
@@ -2076,7 +2196,7 @@ state_index (struct dfa *d, position_set const *s, int context)
return i;
}
- /* We'll have to create a new state. */
+ /* We'll have to create a new state. */
REALLOC_IF_NECESSARY (d->states, d->salloc, d->sindex + 1);
d->states[i].hash = hash;
alloc_position_set (&d->states[i].elems, s->nelem);
@@ -2114,12 +2234,12 @@ state_index (struct dfa *d, position_set const *s, int context)
contains a symbol that matches the empty string in some context, replace
that position with the elements of its follow labeled with an appropriate
constraint. Repeat exhaustively until no funny positions are left.
- S->elems must be large enough to hold the result. */
+ S->elems must be large enough to hold the result. */
static void
epsclosure (position_set * s, struct dfa const *d)
{
size_t i, j;
- char *visited; /* array of booleans, enough to use char, not int */
+ char *visited; /* Array of booleans, enough to use char, not int. */
position p, old;
CALLOC (visited, d->tindex);
@@ -2170,7 +2290,7 @@ epsclosure (position_set * s, struct dfa const *d)
p.index = d->follows[old.index].elems[j].index;
insert (p, s);
}
- /* Force rescan to start at the beginning. */
+ /* Force rescan to start at the beginning. */
i = -1;
}
@@ -2275,18 +2395,18 @@ state_separate_contexts (position_set const *s)
analysis is conveniently done by a linear scan with the aid of a stack.
Sets are stored as arrays of the elements, obeying a stack-like allocation
scheme; the number of elements in each set deeper in the stack can be
- used to determine the address of a particular set's array. */
+ used to determine the address of a particular set's array. */
void
dfaanalyze (struct dfa *d, int searchflag)
{
- int *nullable; /* Nullable stack. */
- size_t *nfirstpos; /* Element count stack for firstpos sets. */
- position *firstpos; /* Array where firstpos elements are stored. */
- size_t *nlastpos; /* Element count stack for lastpos sets. */
- position *lastpos; /* Array where lastpos elements are stored. */
- position_set tmp; /* Temporary set for merging sets. */
- position_set merged; /* Result of merging sets. */
- int separate_contexts; /* Context wanted by some position. */
+ int *nullable; /* Nullable stack. */
+ size_t *nfirstpos; /* Element count stack for firstpos sets. */
+ position *firstpos; /* Array where firstpos elements are stored. */
+ size_t *nlastpos; /* Element count stack for lastpos sets. */
+ position *lastpos; /* Array where lastpos elements are stored. */
+ position_set tmp; /* Temporary set for merging sets. */
+ position_set merged; /* Result of merging sets. */
+ int separate_contexts; /* Context wanted by some position. */
int *o_nullable;
size_t *o_nfirst, *o_nlast;
position *o_firstpos, *o_lastpos;
@@ -2324,17 +2444,17 @@ dfaanalyze (struct dfa *d, int searchflag)
switch (d->tokens[i])
{
case EMPTY:
- /* The empty set is nullable. */
+ /* The empty set is nullable. */
*nullable++ = 1;
- /* The firstpos and lastpos of the empty leaf are both empty. */
+ /* The firstpos and lastpos of the empty leaf are both empty. */
*nfirstpos++ = *nlastpos++ = 0;
break;
case STAR:
case PLUS:
/* Every element in the firstpos of the argument is in the follow
- of every element in the lastpos. */
+ of every element in the lastpos. */
tmp.nelem = nfirstpos[-1];
tmp.elems = firstpos;
pos = lastpos;
@@ -2345,14 +2465,14 @@ dfaanalyze (struct dfa *d, int searchflag)
}
case QMARK:
- /* A QMARK or STAR node is automatically nullable. */
+ /* A QMARK or STAR node is automatically nullable. */
if (d->tokens[i] != PLUS)
nullable[-1] = 1;
break;
case CAT:
/* Every element in the firstpos of the second argument is in the
- follow of every element in the lastpos of the first argument. */
+ follow of every element in the lastpos of the first argument. */
tmp.nelem = nfirstpos[-1];
tmp.elems = firstpos;
pos = lastpos + nlastpos[-1];
@@ -2363,7 +2483,7 @@ dfaanalyze (struct dfa *d, int searchflag)
}
/* The firstpos of a CAT node is the firstpos of the first argument,
- union that of the second argument if the first is nullable. */
+ union that of the second argument if the first is nullable. */
if (nullable[-2])
nfirstpos[-2] += nfirstpos[-1];
else
@@ -2371,7 +2491,7 @@ dfaanalyze (struct dfa *d, int searchflag)
--nfirstpos;
/* The lastpos of a CAT node is the lastpos of the second argument,
- union that of the first argument if the second is nullable. */
+ union that of the first argument if the second is nullable. */
if (nullable[-1])
nlastpos[-2] += nlastpos[-1];
else
@@ -2384,21 +2504,21 @@ dfaanalyze (struct dfa *d, int searchflag)
}
--nlastpos;
- /* A CAT node is nullable if both arguments are nullable. */
+ /* A CAT node is nullable if both arguments are nullable. */
nullable[-2] = nullable[-1] && nullable[-2];
--nullable;
break;
case OR:
- /* The firstpos is the union of the firstpos of each argument. */
+ /* The firstpos is the union of the firstpos of each argument. */
nfirstpos[-2] += nfirstpos[-1];
--nfirstpos;
- /* The lastpos is the union of the lastpos of each argument. */
+ /* The lastpos is the union of the lastpos of each argument. */
nlastpos[-2] += nlastpos[-1];
--nlastpos;
- /* An OR node is nullable if either argument is nullable. */
+ /* An OR node is nullable if either argument is nullable. */
nullable[-2] = nullable[-1] || nullable[-2];
--nullable;
break;
@@ -2408,21 +2528,21 @@ dfaanalyze (struct dfa *d, int searchflag)
constructs like \< are treated as nonempty strings here;
an "epsilon closure" effectively makes them nullable later.
Backreferences have to get a real position so we can detect
- transitions on them later. But they are nullable. */
+ transitions on them later. But they are nullable. */
*nullable++ = d->tokens[i] == BACKREF;
- /* This position is in its own firstpos and lastpos. */
+ /* This position is in its own firstpos and lastpos. */
*nfirstpos++ = *nlastpos++ = 1;
--firstpos, --lastpos;
firstpos->index = lastpos->index = i;
firstpos->constraint = lastpos->constraint = NO_CONSTRAINT;
- /* Allocate the follow set for this position. */
+ /* Allocate the follow set for this position. */
alloc_position_set (&d->follows[i], 1);
break;
}
#ifdef DEBUG
- /* ... balance the above nonsyntactic #ifdef goo... */
+ /* ... balance the above nonsyntactic #ifdef goo... */
fprintf (stderr, "node %zd:", i);
prtok (d->tokens[i]);
putc ('\n', stderr);
@@ -2444,7 +2564,7 @@ dfaanalyze (struct dfa *d, int searchflag)
}
/* For each follow set that is the follow set of a real position, replace
- it with its epsilon closure. */
+ it with its epsilon closure. */
for (i = 0; i < d->tindex; ++i)
if (d->tokens[i] < NOTCHAR || d->tokens[i] == BACKREF
#if MBS_SUPPORT
@@ -2469,13 +2589,13 @@ dfaanalyze (struct dfa *d, int searchflag)
}
/* Get the epsilon closure of the firstpos of the regexp. The result will
- be the set of positions of state 0. */
+ be the set of positions of state 0. */
merged.nelem = 0;
for (i = 0; i < nfirstpos[-1]; ++i)
insert (firstpos[i], &merged);
epsclosure (&merged, d);
- /* Build the initial state. */
+ /* Build the initial state. */
d->salloc = 1;
d->sindex = 0;
MALLOC (d->states, d->salloc);
@@ -2523,27 +2643,27 @@ dfaanalyze (struct dfa *d, int searchflag)
If after comparing with every group there are characters remaining in C,
create a new group labeled with the characters of C and insert this
- position in that group. */
+ position in that group. */
void
dfastate (state_num s, struct dfa *d, state_num trans[])
{
- leaf_set *grps; /* As many as will ever be needed. */
- charclass *labels; /* Labels corresponding to the groups. */
- size_t ngrps = 0; /* Number of groups actually used. */
- position pos; /* Current position being considered. */
- charclass matches; /* Set of matching characters. */
- int matchesf; /* True if matches is nonempty. */
- charclass intersect; /* Intersection with some label set. */
- int intersectf; /* True if intersect is nonempty. */
- charclass leftovers; /* Stuff in the label that didn't match. */
- int leftoversf; /* True if leftovers is nonempty. */
- position_set follows; /* Union of the follows of some group. */
- position_set tmp; /* Temporary space for merging sets. */
- int possible_contexts; /* Contexts that this group can match. */
- int separate_contexts; /* Context that new state wants to know. */
- state_num state; /* New state. */
- state_num state_newline; /* New state on a newline transition. */
- state_num state_letter; /* New state on a letter transition. */
+ leaf_set *grps; /* As many as will ever be needed. */
+ charclass *labels; /* Labels corresponding to the groups. */
+ size_t ngrps = 0; /* Number of groups actually used. */
+ position pos; /* Current position being considered. */
+ charclass matches; /* Set of matching characters. */
+ int matchesf; /* True if matches is nonempty. */
+ charclass intersect; /* Intersection with some label set. */
+ int intersectf; /* True if intersect is nonempty. */
+ charclass leftovers; /* Stuff in the label that didn't match. */
+ int leftoversf; /* True if leftovers is nonempty. */
+ position_set follows; /* Union of the follows of some group. */
+ position_set tmp; /* Temporary space for merging sets. */
+ int possible_contexts; /* Contexts that this group can match. */
+ int separate_contexts; /* Context that new state wants to know. */
+ state_num state; /* New state. */
+ state_num state_newline; /* New state on a newline transition. */
+ state_num state_letter; /* New state on a letter transition. */
int next_isnt_1st_byte = 0; /* Flag if we can't add state0. */
size_t i, j, k;
@@ -2576,7 +2696,7 @@ dfastate (state_num s, struct dfa *d, state_num trans[])
continue;
/* Some characters may need to be eliminated from matches because
- they fail in the current context. */
+ they fail in the current context. */
if (pos.constraint != NO_CONSTRAINT)
{
if (!SUCCEEDS_IN_CONTEXT (pos.constraint,
@@ -2592,7 +2712,7 @@ dfastate (state_num s, struct dfa *d, state_num trans[])
for (j = 0; j < CHARCLASS_INTS; ++j)
matches[j] &= letters[j] | newline[j];
- /* If there are no characters left, there's no point in going on. */
+ /* If there are no characters left, there's no point in going on. */
for (j = 0; j < CHARCLASS_INTS && !matches[j]; ++j)
continue;
if (j == CHARCLASS_INTS)
@@ -2603,31 +2723,31 @@ dfastate (state_num s, struct dfa *d, state_num trans[])
{
/* If matches contains a single character only, and the current
group's label doesn't contain that character, go on to the
- next group. */
+ next group. */
if (d->tokens[pos.index] >= 0 && d->tokens[pos.index] < NOTCHAR
&& !tstbit (d->tokens[pos.index], labels[j]))
continue;
/* Check if this group's label has a nonempty intersection with
- matches. */
+ matches. */
intersectf = 0;
for (k = 0; k < CHARCLASS_INTS; ++k)
(intersect[k] = matches[k] & labels[j][k]) ? (intersectf = 1) : 0;
if (!intersectf)
continue;
- /* It does; now find the set differences both ways. */
+ /* It does; now find the set differences both ways. */
leftoversf = matchesf = 0;
for (k = 0; k < CHARCLASS_INTS; ++k)
{
- /* Even an optimizing compiler can't know this for sure. */
+ /* Even an optimizing compiler can't know this for sure. */
int match = matches[k], label = labels[j][k];
(leftovers[k] = ~match & label) ? (leftoversf = 1) : 0;
(matches[k] = match & ~label) ? (matchesf = 1) : 0;
}
- /* If there were leftovers, create a new group labeled with them. */
+ /* If there were leftovers, create a new group labeled with them. */
if (leftoversf)
{
copyset (leftovers, labels[ngrps]);
@@ -2644,13 +2764,13 @@ dfastate (state_num s, struct dfa *d, state_num trans[])
grps[j].elems[grps[j].nelem++] = pos.index;
/* If every character matching the current position has been
- accounted for, we're done. */
+ accounted for, we're done. */
if (!matchesf)
break;
}
/* If we've passed the last group, and there are still characters
- unaccounted for, then we'll have to create a new group. */
+ unaccounted for, then we'll have to create a new group. */
if (j == ngrps)
{
copyset (matches, labels[ngrps]);
@@ -2667,10 +2787,10 @@ dfastate (state_num s, struct dfa *d, state_num trans[])
/* 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. */
+ is to fail miserably. */
if (d->searchflag)
{
- /* Find the state(s) corresponding to the positions of state 0. */
+ /* Find the state(s) corresponding to the positions of state 0. */
copy (&d->states[0].elems, &follows);
separate_contexts = state_separate_contexts (&follows);
state = state_index (d, &follows, separate_contexts ^ CTX_ANY);
@@ -2696,7 +2816,7 @@ dfastate (state_num s, struct dfa *d, state_num trans[])
follows.nelem = 0;
/* Find the union of the follows of the positions of the group.
- This is a hideously inefficient loop. Fix it someday. */
+ 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]].nelem; ++k)
insert (d->follows[grps[i].elems[j]].elems[k], &follows);
@@ -2733,17 +2853,17 @@ dfastate (state_num s, struct dfa *d, state_num trans[])
}
/* If we are building a searching matcher, throw in the positions
- of state 0 as well. */
+ of state 0 as well. */
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. */
+ /* Find out if the new state will want any context information. */
possible_contexts = charclass_context (labels[i]);
separate_contexts = state_separate_contexts (&follows);
- /* Find the state(s) corresponding to the union of the follows. */
+ /* Find the state(s) corresponding to the union of the follows. */
if ((separate_contexts & possible_contexts) != possible_contexts)
state = state_index (d, &follows, separate_contexts ^ CTX_ANY);
else
@@ -2757,10 +2877,10 @@ dfastate (state_num s, struct dfa *d, state_num trans[])
else
state_letter = state;
- /* Set the transitions for each character in the current label. */
+ /* Set the transitions for each character in the current label. */
for (j = 0; j < CHARCLASS_INTS; ++j)
for (k = 0; k < INTBITS; ++k)
- if (labels[i][j] & 1 << k)
+ if (labels[i][j] & 1U << k)
{
int c = j * INTBITS + k;
@@ -2786,18 +2906,18 @@ dfastate (state_num s, struct dfa *d, state_num trans[])
is a non-accepting state, then d->trans[state] points to its table.
If it is an accepting state then d->fails[state] points to its table.
If it has no table at all, then d->trans[state] is NULL.
- TODO: Improve this comment, get rid of the unnecessary redundancy. */
+ TODO: Improve this comment, get rid of the unnecessary redundancy. */
static void
build_state (state_num s, struct dfa *d)
{
- state_num *trans; /* The new transition table. */
+ state_num *trans; /* The new transition table. */
state_num i;
/* Set an upper limit on the number of transition tables that will ever
exist at once. 1024 is arbitrary. The idea is that the frequently
used transition tables will be quickly rebuilt, whereas the ones that
- were only needed once or twice will be cleared away. */
+ were only needed once or twice will be cleared away. */
if (d->trcount >= 1024)
{
for (i = 0; i < d->tralloc; ++i)
@@ -2811,7 +2931,7 @@ build_state (state_num s, struct dfa *d)
++d->trcount;
- /* Set up the success bits for this state. */
+ /* Set up the success bits for this state. */
d->success[s] = 0;
if (ACCEPTS_IN_CONTEXT (d->states[s].context, CTX_NEWLINE, s, *d))
d->success[s] |= CTX_NEWLINE;
@@ -2825,7 +2945,7 @@ build_state (state_num s, struct dfa *d)
/* Now go through the new transition table, and make sure that the trans
and fail arrays are allocated large enough to hold a pointer for the
- largest state mentioned in the table. */
+ largest state mentioned in the table. */
for (i = 0; i < NOTCHAR; ++i)
if (trans[i] >= d->tralloc)
{
@@ -2846,7 +2966,7 @@ build_state (state_num s, struct dfa *d)
}
/* Keep the newline transition in a special place so we can use it as
- a sentinel. */
+ a sentinel. */
d->newlines[s] = trans[eolbyte];
trans[eolbyte] = -1;
@@ -2871,13 +2991,13 @@ build_state_zero (struct dfa *d)
/* Multibyte character handling sub-routines for dfaexec. */
-/* Initial state may encounter the byte which is not a single byte character
- nor 1st byte of a multibyte character. But it is incorrect for initial
- state to accept such a byte.
- For example, in sjis encoding the regular expression like "\\" accepts
- the codepoint 0x5c, but should not accept the 2nd byte of the codepoint
- 0x815c. Then Initial state must skip the bytes which are not a single byte
- character nor 1st byte of a multibyte character. */
+/* The initial state may encounter a byte which is not a single byte character
+ nor the first byte of a multibyte character. But it is incorrect for the
+ initial state to accept such a byte. For example, in Shift JIS the regular
+ expression "\\" accepts the codepoint 0x5c, but should not accept the second
+ byte of the codepoint 0x815c. Then the initial state must skip the bytes
+ that are not a single byte character nor the first byte of a multibyte
+ character. */
#define SKIP_REMAINS_MB_IF_INITIAL_STATE(s, p) \
if (s == 0) \
{ \
@@ -2898,7 +3018,7 @@ static void
realloc_trans_if_necessary (struct dfa *d, state_num new_state)
{
/* Make sure that the trans and fail arrays are allocated large enough
- to hold a pointer for the new state. */
+ to hold a pointer for the new state. */
if (new_state >= d->tralloc)
{
state_num oldalloc = d->tralloc;
@@ -2918,7 +3038,7 @@ realloc_trans_if_necessary (struct dfa *d, state_num new_state)
}
}
-/* Return values of transit_state_singlebyte(), and
+/* Return values of transit_state_singlebyte, and
transit_state_consume_1char. */
typedef enum
{
@@ -2928,7 +3048,7 @@ typedef enum
} status_transit_state;
/* Consume a single byte and transit state from 's' to '*next_state'.
- This function is almost same as the state transition routin in dfaexec().
+ This function is almost same as the state transition routin in dfaexec.
But state transition is done just once, otherwise matching succeed or
reach the end of the buffer. */
static status_transit_state
@@ -3012,10 +3132,10 @@ static int
match_mb_charset (struct dfa *d, state_num s, position pos, size_t idx)
{
size_t i;
- int match; /* Flag which represent that matching succeed. */
- int match_len; /* Length of the character (or collating element)
- with which this operator match. */
- int op_len; /* Length of the operator. */
+ int match; /* Matching succeeded. */
+ int match_len; /* Length of the character (or collating element)
+ with which this operator matches. */
+ int op_len; /* Length of the operator. */
char buffer[128];
/* Pointer to the structure to which we are currently referring. */
@@ -3049,7 +3169,7 @@ match_mb_charset (struct dfa *d, state_num s, position pos, size_t idx)
/* Match in range 0-255? */
if (wc < NOTCHAR && work_mbc->cset != -1
- && tstbit ((unsigned char) wc, d->charclasses[work_mbc->cset]))
+ && tstbit (to_uchar (wc), d->charclasses[work_mbc->cset]))
goto charset_matched;
/* match with a character class? */
@@ -3109,13 +3229,14 @@ charset_matched:
return match ? match_len : 0;
}
-/* Check each of 'd->states[s].mbps.elem' can match or not. Then return the
- array which corresponds to 'd->states[s].mbps.elem' and each element of
- the array contains the amount of the bytes with which the element can
- match.
- 'idx' is the index from the buf_begin, and it is the current position
+/* Check whether each of 'd->states[s].mbps.elem' can match. Then return the
+ array which corresponds to 'd->states[s].mbps.elem'; each element of the
+ array contains the number of bytes with which the element can match.
+
+ 'idx' is the index from buf_begin, and it is the current position
in the buffer.
- Caller MUST free the array which this function return. */
+
+ The caller MUST free the array which this function return. */
static int *
check_matching_with_multibyte_ops (struct dfa *d, state_num s, size_t idx)
{
@@ -3142,11 +3263,13 @@ check_matching_with_multibyte_ops (struct dfa *d, state_num s, size_t idx)
}
/* Consume a single character and enumerate all of the positions which can
- be next position from the state 's'.
- 'match_lens' is the input. It can be NULL, but it can also be the output
- of check_matching_with_multibyte_ops() for optimization.
+ be the next position from the state 's'.
+
+ 'match_lens' is the input. It can be NULL, but it can also be the output
+ of check_matching_with_multibyte_ops for optimization.
+
'mbclen' and 'pps' are the output. 'mbclen' is the length of the
- character consumed, and 'pps' is the set this function enumerate. */
+ character consumed, and 'pps' is the set this function enumerates. */
static status_transit_state
transit_state_consume_1char (struct dfa *d, state_num s,
unsigned char const **pp,
@@ -3203,7 +3326,7 @@ static state_num
transit_state (struct dfa *d, state_num s, unsigned char const **pp)
{
state_num s1;
- int mbclen; /* The length of current input multibyte character. */
+ int mbclen; /* The length of current input multibyte character. */
int maxlen = 0;
size_t i, j;
int *match_lens = NULL;
@@ -3282,43 +3405,26 @@ transit_state (struct dfa *d, state_num s, unsigned char const **pp)
/* Initialize mblen_buf and inputwcs with data from the next line. */
static void
-prepare_wc_buf (const char *begin, const char *end)
+prepare_wc_buf (struct dfa *d, const char *begin, const char *end)
{
#if MBS_SUPPORT
unsigned char eol = eolbyte;
- size_t remain_bytes, i;
+ size_t i;
+ size_t ilim = end - begin + 1;
buf_begin = (unsigned char *) begin;
- remain_bytes = 0;
- for (i = 0; i < end - begin + 1; i++)
+ for (i = 0; i < ilim; i++)
{
- if (remain_bytes == 0)
- {
- remain_bytes
- = mbrtowc (inputwcs + i, begin + i, end - begin - i + 1, &mbs);
- if (remain_bytes < 1
- || remain_bytes == (size_t) -1
- || remain_bytes == (size_t) -2
- || (remain_bytes == 1 && inputwcs[i] == (wchar_t) begin[i]))
- {
- remain_bytes = 0;
- inputwcs[i] = (wchar_t) begin[i];
- mblen_buf[i] = 0;
- if (begin[i] == eol)
- break;
- }
- else
- {
- mblen_buf[i] = remain_bytes;
- remain_bytes--;
- }
- }
- else
+ size_t nbytes = mbs_to_wchar (d, inputwcs + i, begin + i, ilim - i, &mbs);
+ mblen_buf[i] = nbytes - (nbytes == 1);
+ if (begin[i] == eol)
+ break;
+ while (--nbytes != 0)
{
- mblen_buf[i] = remain_bytes;
+ i++;
+ mblen_buf[i] = nbytes;
inputwcs[i] = 0;
- remain_bytes--;
}
}
@@ -3339,15 +3445,15 @@ prepare_wc_buf (const char *begin, const char *end)
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. */
+ to decide whether to fall back on a backtracking matcher. */
char *
dfaexec (struct dfa *d, char const *begin, char *end,
int allow_nl, size_t *count, int *backref)
{
- state_num s, s1; /* Current state. */
- unsigned char const *p; /* Current input character. */
+ state_num s, s1; /* Current state. */
+ unsigned char const *p; /* Current input character. */
state_num **trans, *t; /* Copy of d->trans so it can be optimized
- into a register. */
+ into a register. */
unsigned char eol = eolbyte; /* Likewise for eolbyte. */
unsigned char saved_end;
@@ -3365,43 +3471,45 @@ dfaexec (struct dfa *d, char const *begin, char *end,
MALLOC (mblen_buf, end - begin + 2);
MALLOC (inputwcs, end - begin + 2);
memset (&mbs, 0, sizeof (mbstate_t));
- prepare_wc_buf ((const char *) p, end);
+ prepare_wc_buf (d, (const char *) p, end);
}
for (;;)
{
if (d->mb_cur_max > 1)
- while ((t = trans[s]) != NULL)
- {
- if (p > buf_end)
- break;
- s1 = s;
- SKIP_REMAINS_MB_IF_INITIAL_STATE (s, p);
+ {
+ while ((t = trans[s]) != NULL)
+ {
+ if (p > buf_end)
+ break;
+ s1 = s;
+ SKIP_REMAINS_MB_IF_INITIAL_STATE (s, p);
- if (d->states[s].mbps.nelem == 0)
- {
- s = t[*p++];
- continue;
- }
+ if (d->states[s].mbps.nelem == 0)
+ {
+ s = t[*p++];
+ continue;
+ }
- /* Falling back to the glibc matcher in this case gives
- better performance (up to 25% better on [a-z], for
- example) and enables support for collating symbols and
- equivalence classes. */
- if (backref)
- {
- *backref = 1;
- free (mblen_buf);
- free (inputwcs);
- *end = saved_end;
- return (char *) p;
- }
+ /* Falling back to the glibc matcher in this case gives
+ better performance (up to 25% better on [a-z], for
+ example) and enables support for collating symbols and
+ equivalence classes. */
+ if (backref)
+ {
+ *backref = 1;
+ free (mblen_buf);
+ free (inputwcs);
+ *end = saved_end;
+ return (char *) p;
+ }
- /* Can match with a multibyte character (and multi character
- collating element). Transition table might be updated. */
- s = transit_state (d, s, &p);
- trans = d->trans;
- }
+ /* Can match with a multibyte character (and multi character
+ collating element). Transition table might be updated. */
+ s = transit_state (d, s, &p);
+ trans = d->trans;
+ }
+ }
else
{
while ((t = trans[s]) != NULL)
@@ -3446,17 +3554,17 @@ dfaexec (struct dfa *d, char const *begin, char *end,
continue;
}
- /* If the previous character was a newline, count it. */
+ /* If the previous character was a newline, count it. */
if ((char *) p <= end && p[-1] == eol)
{
if (count)
++*count;
if (d->mb_cur_max > 1)
- prepare_wc_buf ((const char *) p, end);
+ prepare_wc_buf (d, (const char *) p, end);
}
- /* Check if we've run off the end of the buffer. */
+ /* Check if we've run off the end of the buffer. */
if ((char *) p > end)
{
if (d->mb_cur_max > 1)
@@ -3517,7 +3625,7 @@ free_mbdata (struct dfa *d)
}
/* Initialize the components of a dfa that the other routines don't
- initialize for themselves. */
+ initialize for themselves. */
void
dfainit (struct dfa *d)
{
@@ -3567,18 +3675,19 @@ dfaoptimize (struct dfa *d)
d->mb_cur_max = 1;
}
-/* Parse and analyze a single string of the given length. */
+/* Parse and analyze a single string of the given length. */
void
dfacomp (char const *s, size_t len, struct dfa *d, int searchflag)
{
dfainit (d);
+ dfambcache (d);
dfaparse (s, len, d);
dfamust (d);
dfaoptimize (d);
dfaanalyze (d, searchflag);
}
-/* Free the storage held by the components of a dfa. */
+/* Free the storage held by the components of a dfa. */
void
dfafree (struct dfa *d)
{
@@ -3673,13 +3782,13 @@ dfafree (struct dfa *d)
and q->left and q->right p->is : NULL
If there's anything else we recognize in the tree, all four sequences get set
- to zero-length sequences. If there's something we don't recognize in the tree,
- we just return a zero-length sequence.
+ to zero-length sequences. If there's something we don't recognize in the
+ tree, we just return a zero-length sequence.
Break ties in favor of infrequent letters (choosing 'zzz' in preference to
'aaa')?
- And. . .is it here or someplace that we might ponder "optimizations" such as
+ And ... is it here or someplace that we might ponder "optimizations" such as
egrep 'psi|epsilon' -> egrep 'psi'
egrep 'pepsi|epsilon' -> egrep 'epsi'
(Yes, we now find "epsi" as a "string
@@ -3700,7 +3809,7 @@ dfafree (struct dfa *d)
Are optimizable r.e.'s likely to be used in real-life situations
(something like 'ab*' is probably unlikely; something like is
- 'psi|epsilon' is likelier)? */
+ 'psi|epsilon' is likelier)? */
static char *
icatalloc (char *old, char const *new)
@@ -3761,14 +3870,14 @@ enlist (char **cpp, char *new, size_t len)
return NULL;
}
new[len] = '\0';
- /* Is there already something in the list that's new (or longer)? */
+ /* Is there already something in the list that's new (or longer)? */
for (i = 0; cpp[i] != NULL; ++i)
if (istrstr (cpp[i], new) != NULL)
{
free (new);
return cpp;
}
- /* Eliminate any obsoleted strings. */
+ /* Eliminate any obsoleted strings. */
j = 0;
while (cpp[j] != NULL)
if (istrstr (new, cpp[j]) == NULL)
@@ -3781,7 +3890,7 @@ enlist (char **cpp, char *new, size_t len)
cpp[j] = cpp[i];
cpp[i] = NULL;
}
- /* Add the new string. */
+ /* Add the new string. */
REALLOC (cpp, i + 2);
cpp[i] = new;
cpp[i + 1] = NULL;
@@ -3789,8 +3898,8 @@ enlist (char **cpp, char *new, size_t len)
}
/* Given pointers to two strings, return a pointer to an allocated
- list of their distinct common substrings. Return NULL if something
- seems wild. */
+ list of their distinct common substrings. Return NULL if something
+ seems wild. */
static char **
comsubs (char *left, char const *right)
{
@@ -3850,7 +3959,7 @@ addlists (char **old, char **new)
}
/* Given two lists of substrings, return a new list giving substrings
- common to both. */
+ common to both. */
static char **
inboth (char **left, char **right)
{
@@ -3970,7 +4079,7 @@ dfamust (struct dfa *d)
rmp = --mp;
lmp = --mp;
- /* Guaranteed to be. Unlikely, but. . . */
+ /* Guaranteed to be. Unlikely, but ... */
if (!STREQ (lmp->is, rmp->is))
lmp->is[0] = '\0';
/* Left side--easy */
@@ -4021,7 +4130,7 @@ dfamust (struct dfa *d)
lmp = --mp;
/* In. Everything in left, plus everything in
right, plus concatenation of
- left's right and right's left. */
+ left's right and right's left. */
lmp->in = addlists (lmp->in, rmp->in);
if (lmp->in == NULL)
goto done;
diff --git a/dfa.h b/dfa.h
index c58485a7..24fbcbe7 100644
--- a/dfa.h
+++ b/dfa.h
@@ -1,5 +1,5 @@
/* dfa.h - declarations for GNU deterministic regexp compiler
- Copyright (C) 1988, 1998, 2007, 2009-2013 Free Software Foundation, Inc.
+ Copyright (C) 1988, 1998, 2007, 2009-2014 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
@@ -99,3 +99,13 @@ extern void dfawarn (const char *);
takes a single argument, a NUL-terminated string describing the error.
The user must supply a dfaerror. */
extern _Noreturn void dfaerror (const char *);
+
+extern int using_utf8 (void);
+
+/* Maximum number of characters that can be the case-folded
+ counterparts of a single character, not counting the character
+ itself. This is 1 for towupper, 1 for towlower, and 1 for each
+ entry in LONESOME_LOWER; see dfa.c. */
+enum { CASE_FOLDED_BUFSIZE = 1 + 1 + 19 };
+
+extern int case_folded_counterparts (wchar_t, wchar_t[CASE_FOLDED_BUFSIZE]);
diff --git a/doc/ChangeLog b/doc/ChangeLog
index c1754161..d4f6881b 100644
--- a/doc/ChangeLog
+++ b/doc/ChangeLog
@@ -1,3 +1,225 @@
+2014-04-08 Arnold D. Robbins <arnold@skeeve.com>
+
+ * 4.1.1: Release tar ball made.
+
+2014-04-08 Arnold D. Robbins <arnold@skeeve.com>
+
+ * texinfo.tex: Update to latest.
+ * awkcard.in: Update copyright, patchlevel in download.
+ * gawktexi.in: Update patchlevel, update month, spell check.
+
+2014-03-30 Arnold D. Robbins <arnold@skeeve.com>
+
+ * gawktexi.in: Cleanups to docbook, finish math stuff.
+
+2014-03-28 Arnold D. Robbins <arnold@skeeve.com>
+
+ * gawktexi.in: Minor cleanups to the indexing.
+
+ Unrelated:
+
+ * gawktexi.in: Merge in changes needed for creating valid
+ DocBook XML. Works with post-5.2 Texinfo and dblatex!
+
+2014-03-27 Arnold D. Robbins <arnold@skeeve.com>
+
+ * gawktexi.in: Finish the massive indexing improvements such that
+ functions are indexed the way I want in TeX and the way Eli
+ wants in Info.
+
+ Unrelated:
+
+ * gawktexi.in: Add a note in extension chapter that lookup of
+ PROCINFO can fail.
+
+2014-03-27 Eli Zaretskii <eliz@gnu.org>
+
+ * gawktexi.in: First round of massive indexing improvements.
+
+2014-03-27 Antonio Giovanni Colombo <azc100@gmail.com>
+
+ * gawktexi.in: Redo all the examples using BBS-list to a different
+ file that doesn't use out-of-date concepts.
+
+2014-03-10 Arnold D. Robbins <arnold@skeeve.com>
+
+ * gawktexi.in: Finish indexing improvements. (For now, anyway.)
+
+ Unrelated:
+
+ * gawk.1: Document the quote flag! (Better late than never.)
+ * awkcard.in: Update documentation of quote flag.
+
+2014-03-08 Arnold D. Robbins <arnold@skeeve.com>
+
+ * gawktexi.in: Minor edits to the discussion of the memory allocation
+ functions.
+
+2014-03-08 Andrew J. Schorr <aschorr@telemetry-investments.com>
+
+ * gawktexi.in: Document new extension API functions api_malloc,
+ api_calloc, api_realloc, and api_free.
+
+2014-03-07 Arnold D. Robbins <arnold@skeeve.com>
+
+ * gawktexi.in: Indexing improvements.
+
+2014-03-02 John E. Malmberg <wb8tyw@qsl.net>
+
+ * gawktexi.in: Remove paragraph about obsolete VMS
+ compilers. Update reference about building PCSI kit.
+
+2014-02-27 Arnold D. Robbins <arnold@skeeve.com>
+
+ * gawktexi.in: Lots of small fixes throughout, update of
+ profiling output. Finished fixes needed before a release.
+
+2014-02-20 Arnold D. Robbins <arnold@skeeve.com>
+
+ * gawktexi.in: Add a quote to the alarm clock program.
+
+2014-02-15 Arnold D. Robbins <arnold@skeeve.com>
+
+ * texinfo.tex: Update to latest.
+
+2014-02-14 Arnold D. Robbins <arnold@skeeve.com>
+
+ * gawktexi.in: Lots of small edits.
+
+2014-02-07 Arnold D. Robbins <arnold@skeeve.com>
+
+ * gawktexi.in: More minor fixes, update UPDATE_MONTH.
+
+2014-02-03 Arnold D. Robbins <arnold@skeeve.com>
+
+ * gawktexi.in: More minor fixes, in indexing.
+
+2014-02-03 Arnold D. Robbins <arnold@skeeve.com>
+
+ * gawktexi.in, gawkinet.texi: Minor fixes, mostly in indexing.
+ * texinfo.tex: Update to latest.
+
+2014-01-31 Arnold D. Robbins <arnold@skeeve.com>
+
+ * gawktexi.in: Add `()' to names of extension functions in indexing
+ commands and in one place in the text. Consistency, don'tcha know.
+
+2014-01-30 Arnold D. Robbins <arnold@skeeve.com>
+
+ * gawktexi.in: Add a few missing STARTOFRANGE comments.
+ * gawk.1: Note that `(i, j) in array' doesn't work in for loops.
+ Update the copyright year.
+
+2014-01-28 Arnold D. Robbins <arnold@skeeve.com>
+
+ * gawktexi.in: Update info for Anders Wallin.
+
+2014-01-25 Arnold D. Robbins <arnold@skeeve.com>
+
+ * texinfo.tex: Updated to current version.
+ * gawktexi.in: Add magic stuff so that PDFs have "dark red"
+ links like before.
+
+2014-01-23 Arnold D. Robbins <arnold@skeeve.com>
+
+ * gawktexi.in (Feature History): New node.
+ (Common Extensions): Update features now in mawk, too.
+
+2014-12-14 John E. Malmberg <wb8tyw@qsl.net>
+
+ * gawktexi.in: Add information on building VMS PCSI kit.
+
+2014-01-03 Arnold D. Robbins <arnold@skeeve.com>
+
+ * gawktexi.in (Full Line Fields): New node.
+ Update copyright year.
+
+2013-12-29 John E. Malmberg <wb8tyw@qsl.net>
+
+ * gawktexi.in: VMS dynamic extensions.
+
+2013-12-26 Arnold D. Robbins <arnold@skeeve.com>
+
+ * gawktexi.in: More minor additions / fixes.
+ (Bugs): Add John Malmberg for VMS. Other minor edits.
+
+2013-12-25 Arnold D. Robbins <arnold@skeeve.com>
+
+ * gawktexi.in: Minor additions / fixes.
+
+2013-12-23 John E. Malmberg <wb8tyw@qsl.net>
+
+ * gawktexi.in: Document the VMS exit status encoding.
+
+2013-12-21 Arnold D. Robbins <arnold@skeeve.com>
+
+ * gawktexi.in (Additional Configuration Options): Document
+ the --disable-extensions option.
+
+2013-12-16 John E. Malmberg <wb8tyw@qsl.net>
+
+ * gawktexi.in: Updates to VMS sections.
+
+2013-12-12 Arnold D. Robbins <arnold@skeeve.com>
+
+ * gawktexi.in: Fix the presentation of asort() and asorti().
+ Thanks to Andy Schorr for pointing out the problems.
+
+2013-11-28 Arnold D. Robbins <arnold@skeeve.com>
+
+ * gawktexi.in: Update quotations to use @author, fix a few
+ placements of footnotes.
+
+2013-11-08 Arnold D. Robbins <arnold@skeeve.com>
+
+ * gawktexi.in: Update the list of files included in the gawk
+ distribution and fix a few typos.
+
+2013-11-03 Arnold D. Robbins <arnold@skeeve.com>
+
+ * gawktexi.in: Fix the section and subsection headings in
+ the Preface. Also change the short title page to just
+ "GNU Awk".
+
+2013-10-31 Arnold D. Robbins <arnold@skeeve.com>
+
+ * gawktexi.in: Add @shorttitlepage command.
+
+2013-10-25 Arnold D. Robbins <arnold@skeeve.com>
+
+ * gawktexi.in (Contributors): Update with more info.
+ (Distributtion contents): Ditto.
+ General: Remove all hyphens when used with "multi" prefix.
+
+2013-10-22 Arnold D. Robbins <arnold@skeeve.com>
+
+ * gawktexi.in (Other Environment Variables): Document GAWK_MSG_SRC
+ variable and fix documentation of *_CHAIN_MAX variables.
+
+2013-10-11 Arnold D. Robbins <arnold@skeeve.com>
+
+ * gawktexi.in (Conversion, Printf Ordering): Better wording for
+ descriptions of CONVFMT. Thanks to Hermann Peifer.
+
+2013-09-29 Arnold D. Robbins <arnold@skeeve.com>
+
+ * gawktexi.in (Other Versions): Updated info on MKS awk and
+ some other links.
+
+2013-09-24 Arnold D. Robbins <arnold@skeeve.com>
+
+ * gawktexi.in (Readfile function): New node.
+
+2013-09-22 Arnold D. Robbins <arnold@skeeve.com>
+
+ * gawktexi.in (FN, FFN, DF,DDF, PVERSION, CTL): Remove macros.
+ They have no alternate versions and are just in the way.
+
+2013-08-15 Arnold D. Robbins <arnold@skeeve.com>
+
+ * gawk.1: Document that ENVIRON updates affect the environment.
+ * gawktexi.in: Ditto.
+
2013-06-27 Arnold D. Robbins <arnold@skeeve.com>
* texinfo.tex: Update from Karl, fixes a formating problem.
diff --git a/doc/Makefile.in b/doc/Makefile.in
index 41f65b0d..52e5f873 100644
--- a/doc/Makefile.in
+++ b/doc/Makefile.in
@@ -1,7 +1,7 @@
-# Makefile.in generated by automake 1.13.1 from Makefile.am.
+# Makefile.in generated by automake 1.13.4 from Makefile.am.
# @configure_input@
-# Copyright (C) 1994-2012 Free Software Foundation, Inc.
+# Copyright (C) 1994-2013 Free Software Foundation, Inc.
# This Makefile.in is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
@@ -38,23 +38,51 @@
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA
#
VPATH = @srcdir@
-am__make_dryrun = \
- { \
- am__dry=no; \
+am__is_gnu_make = test -n '$(MAKEFILE_LIST)' && test -n '$(MAKELEVEL)'
+am__make_running_with_option = \
+ case $${target_option-} in \
+ ?) ;; \
+ *) echo "am__make_running_with_option: internal error: invalid" \
+ "target option '$${target_option-}' specified" >&2; \
+ exit 1;; \
+ esac; \
+ has_opt=no; \
+ sane_makeflags=$$MAKEFLAGS; \
+ if $(am__is_gnu_make); then \
+ sane_makeflags=$$MFLAGS; \
+ else \
case $$MAKEFLAGS in \
*\\[\ \ ]*) \
- echo 'am--echo: ; @echo "AM" OK' | $(MAKE) -f - 2>/dev/null \
- | grep '^AM OK$$' >/dev/null || am__dry=yes;; \
- *) \
- for am__flg in $$MAKEFLAGS; do \
- case $$am__flg in \
- *=*|--*) ;; \
- *n*) am__dry=yes; break;; \
- esac; \
- done;; \
+ bs=\\; \
+ sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \
+ | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \
esac; \
- test $$am__dry = yes; \
- }
+ fi; \
+ skip_next=no; \
+ strip_trailopt () \
+ { \
+ flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \
+ }; \
+ for flg in $$sane_makeflags; do \
+ test $$skip_next = yes && { skip_next=no; continue; }; \
+ case $$flg in \
+ *=*|--*) continue;; \
+ -*I) strip_trailopt 'I'; skip_next=yes;; \
+ -*I?*) strip_trailopt 'I';; \
+ -*O) strip_trailopt 'O'; skip_next=yes;; \
+ -*O?*) strip_trailopt 'O';; \
+ -*l) strip_trailopt 'l'; skip_next=yes;; \
+ -*l?*) strip_trailopt 'l';; \
+ -[dEDm]) skip_next=yes;; \
+ -[JT]) skip_next=yes;; \
+ esac; \
+ case $$flg in \
+ *$$target_option*) has_opt=yes; break;; \
+ esac; \
+ done; \
+ test $$has_opt = yes
+am__make_dryrun = (target_option=n; $(am__make_running_with_option))
+am__make_keepgoing = (target_option=k; $(am__make_running_with_option))
pkgdatadir = $(datadir)/@PACKAGE@
pkgincludedir = $(includedir)/@PACKAGE@
pkglibdir = $(libdir)/@PACKAGE@
diff --git a/doc/awkcard.in b/doc/awkcard.in
index 610032b7..ca28f0a7 100644
--- a/doc/awkcard.in
+++ b/doc/awkcard.in
@@ -1,7 +1,7 @@
.\" AWK Reference Card --- Arnold Robbins, arnold@skeeve.com
.\"
.\" Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002,
-.\" 2003, 2004, 2005, 2007, 2009, 2010, 2011, 2012, 2013
+.\" 2003, 2004, 2005, 2007, 2009, 2010, 2011, 2012, 2013, 2014
.\" Free Software Foundation, Inc.
.\"
.\" Permission is granted to make and distribute verbatim copies of
@@ -100,7 +100,7 @@ Brian Kernighan and Michael Brennan who reviewed it.
\*(CD
.SL
.nf
-\*(FRCopyright \(co 1996\(en2005, 2007, 2009\(en2013
+\*(FRCopyright \(co 1996\(en2005, 2007, 2009\(en2014
Free Software Foundation, Inc.
.nf
.BT
@@ -1493,7 +1493,8 @@ Only has an effect when the field width is wider
than the value to be printed.
T}
\*(CB\*(FC'\*(FR T{
-Use the locale's thousands separator for \*(FC%d\fP, \*(FC%i\fP, and \*(FC%u\fP.\*(CD
+Use the locale's thousands separator and decimal
+point characters.\*(CD
T}
\*(FIwidth\fP T{
Pad the field to this width. The field is normally
@@ -1938,7 +1939,7 @@ to use the current domain.\*(CB
.ES
.nf
\*(CDHost: \*(FCftp.gnu.org\*(FR
-File: \*(FC/gnu/gawk/gawk-4.1.0.tar.gz\fP
+File: \*(FC/gnu/gawk/gawk-4.1.1.tar.gz\fP
.in +.2i
.fi
GNU \*(AK (\*(GK). There may be a later version.
@@ -1968,8 +1969,8 @@ maintains it.\*(CX
.\" --- Copying Permissions
.ES
.fi
-\*(CDCopyright \(co 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005,
-2007, 2009, 2010, 2011, 2012, 2013 Free Software Foundation, Inc.
+\*(CDCopyright \(co 1996\(en2005,
+2007, 2009\(en2014 Free Software Foundation, Inc.
.sp .5
Permission is granted to make and distribute verbatim copies of this
reference card provided the copyright notice and this permission notice
diff --git a/doc/gawk.1 b/doc/gawk.1
index 7f31c254..a879b527 100644
--- a/doc/gawk.1
+++ b/doc/gawk.1
@@ -13,7 +13,7 @@
. if \w'\(rq' .ds rq "\(rq
. \}
.\}
-.TH GAWK 1 "May 09 2013" "Free Software Foundation" "Utility Commands"
+.TH GAWK 1 "Mar 08 2014" "Free Software Foundation" "Utility Commands"
.SH NAME
gawk \- pattern scanning and processing language
.SH SYNOPSIS
@@ -917,11 +917,17 @@ An array containing the values of the current environment.
The array is indexed by the environment variables, each element being
the value of that variable (e.g., \fBENVIRON["HOME"]\fP might be
\fB"/home/arnold"\fR).
-Changing this array does not affect the environment seen by programs which
+.sp
+In POSIX mode,
+changing this array does not affect the environment seen by programs which
.I gawk
spawns via redirection or the
.B system()
function.
+Otherwise,
+.I gawk
+updates its real environment so that programs it spawns see
+the changes.
.TP
.B ERRNO
If a system error occurs either doing a redirection for
@@ -1364,6 +1370,11 @@ The
construct may also be used in a
.B for
loop to iterate over all the elements of an array.
+However, the
+.B "(i, j) in array"
+construct only works in tests, not in
+.B for
+loops.
.PP
An element may be deleted from an array using the
.B delete
@@ -2443,6 +2454,15 @@ This applies only to the numeric output formats.
This flag only has an effect when the field width is wider than the
value to be printed.
.TP
+.B '
+A single quote character instructs
+.I gawk
+to insert the locale's thousands-separator character
+into decimal numbers, and to also use the locale's
+decimal point character with floating point formats.
+This requires correct locale support in the C library
+and in the definition of the current locale.
+.TP
.I width
The field should be padded to this width. The field is normally padded
with spaces. With the
@@ -3962,7 +3982,7 @@ We thank him.
.SH COPYING PERMISSIONS
Copyright \(co 1989, 1991, 1992, 1993, 1994, 1995, 1996,
1997, 1998, 1999, 2001, 2002, 2003, 2004, 2005, 2007, 2009,
-2010, 2011, 2012, 2013
+2010, 2011, 2012, 2013, 2014
Free Software Foundation, Inc.
.PP
Permission is granted to make and distribute verbatim copies of
diff --git a/doc/gawk.info b/doc/gawk.info
index 9072bf06..aad73f7a 100644
--- a/doc/gawk.info
+++ b/doc/gawk.info
@@ -9,13 +9,12 @@ START-INFO-DIR-ENTRY
* awk: (gawk)Invoking gawk. Text scanning and processing.
END-INFO-DIR-ENTRY
- Copyright (C) 1989, 1991, 1992, 1993, 1996, 1997, 1998, 1999, 2000,
-2001, 2002, 2003, 2004, 2005, 2007, 2009, 2010, 2011, 2012, 2013 Free
-Software Foundation, Inc.
+ Copyright (C) 1989, 1991, 1992, 1993, 1996-2005, 2007, 2009-2014
+Free Software Foundation, Inc.
This is Edition 4.1 of `GAWK: Effective AWK Programming: A User's
-Guide for GNU Awk', for the 4.1.0 (or later) version of the GNU
+Guide for GNU Awk', for the 4.1.1 (or later) version of the GNU
implementation of AWK.
Permission is granted to copy, distribute and/or modify this document
@@ -41,13 +40,12 @@ General Introduction
This file documents `awk', a program that you can use to select
particular records in a file and perform operations upon them.
- Copyright (C) 1989, 1991, 1992, 1993, 1996, 1997, 1998, 1999, 2000,
-2001, 2002, 2003, 2004, 2005, 2007, 2009, 2010, 2011, 2012, 2013 Free
-Software Foundation, Inc.
+ Copyright (C) 1989, 1991, 1992, 1993, 1996-2005, 2007, 2009-2014
+Free Software Foundation, Inc.
This is Edition 4.1 of `GAWK: Effective AWK Programming: A User's
-Guide for GNU Awk', for the 4.1.0 (or later) version of the GNU
+Guide for GNU Awk', for the 4.1.1 (or later) version of the GNU
implementation of AWK.
Permission is granted to copy, distribute and/or modify this document
@@ -193,10 +191,12 @@ texts being (a) (see below), and with the Back-Cover Texts being (b)
field.
* Command Line Field Separator:: Setting `FS' from the
command-line.
+* Full Line Fields:: Making the full line be a single
+ field.
* 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.
+* Multiple Line:: Reading multiline records.
* Getline:: Reading files under explicit program
control using the `getline'
function.
@@ -347,9 +347,9 @@ texts being (a) (see below), and with the Back-Cover Texts being (b)
`awk'.
* Uninitialized Subscripts:: Using Uninitialized variables as
subscripts.
-* Multi-dimensional:: Emulating multidimensional arrays in
+* Multidimensional:: Emulating multidimensional arrays in
`awk'.
-* Multi-scanning:: Scanning multidimensional arrays.
+* Multiscanning:: 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.
@@ -401,6 +401,8 @@ texts being (a) (see below), and with the Back-Cover Texts being (b)
* Join Function:: A function to join an array into a
string.
* Getlocaltime Function:: A function to get formatted times.
+* Readfile Function:: A function to read an entire file at
+ once.
* Data File Management:: Functions for managing command-line
data files.
* Filetrans Function:: A function for handling data file
@@ -518,6 +520,7 @@ texts being (a) (see below), and with the Back-Cover Texts being (b)
* Extension API Functions Introduction:: Introduction to the API functions.
* General Data Types:: The data types.
* Requesting Values:: How to get a value.
+* Memory Allocation Functions:: Functions for allocating memory.
* Constructor Functions:: Functions for creating values.
* Registration Functions:: Functions to register things with
`gawk'.
@@ -580,6 +583,8 @@ texts being (a) (see below), and with the Back-Cover Texts being (b)
version of `awk'.
* POSIX/GNU:: The extensions in `gawk' not
in POSIX `awk'.
+* Feature History:: The history of the features in
+ `gawk'.
* Common Extensions:: Common Extensions Summary.
* Ranges and Locales:: How locales used to affect regexp
ranges.
@@ -612,9 +617,12 @@ texts being (a) (see below), and with the Back-Cover Texts being (b)
* VMS Installation:: Installing `gawk' on VMS.
* VMS Compilation:: How to compile `gawk' under
VMS.
+* VMS Dynamic Extensions:: Compiling `gawk' dynamic
+ extensions on VMS.
* VMS Installation Details:: How to install `gawk' under
VMS.
* VMS Running:: How to run `gawk' under VMS.
+* VMS GNV:: The VMS GNV Project.
* VMS Old Gawk:: An old version comes with some VMS
systems.
* Bugs:: Reporting Problems and Bugs.
@@ -1079,11 +1087,11 @@ by first pressing and holding the `CONTROL' key, next pressing the `d'
key and finally releasing both keys.
Dark Corners
-............
+------------
Dark corners are basically fractal -- no matter how much you
- illuminate, there's always a smaller but darker one.
- Brian Kernighan
+ illuminate, there's always a smaller but darker one. -- Brian
+ Kernighan
Until the POSIX standard (and `GAWK: Effective AWK Programming'),
many features of `awk' were either poorly documented or not documented
@@ -1262,11 +1270,11 @@ acknowledgements:
Dr. Nelson Beebe, Andreas Buening, Dr. Manuel Collado, Antonio
Colombo, Stephen Davies, Scott Deifik, Akim Demaille, Darrel Hankerson,
Michal Jaegermann, Ju"rgen Kahrs, Stepan Kasal, John Malmberg, Dave
-Pitts, Chet Ramey, Pat Rankin, Andrew Schorr, Corinna Vinschen, Anders
-Wallin, and Eli Zaretskii (in alphabetical order) make up the current
-`gawk' "crack portability team." Without their hard work and help,
-`gawk' would not be nearly the fine program it is today. It has been
-and continues to be a pleasure working with this team of fine people.
+Pitts, Chet Ramey, Pat Rankin, Andrew Schorr, Corinna Vinschen, and Eli
+Zaretskii (in alphabetical order) make up the current `gawk' "crack
+portability team." Without their hard work and help, `gawk' would not
+be nearly the fine program it is today. It has been and continues to
+be a pleasure working with this team of fine people.
Notable code and documentation contributions were made by a number
of people. *Note Contributors::, for the full list.
@@ -1758,30 +1766,30 @@ File: gawk.info, Node: Sample Data Files, Next: Very Simple, Prev: Running ga
===============================
Many of the examples in this Info file take their input from two sample
-data files. The first, `BBS-list', represents a list of computer
-bulletin board systems together with information about those systems.
+data files. The first, `mail-list', represents a list of peoples' names
+together with their email addresses and information about those people.
The second data file, called `inventory-shipped', contains information
about monthly shipments. In both files, each line is considered to be
one "record".
- In the data file `BBS-list', each record contains the name of a
-computer bulletin board, its phone number, the board's baud rate(s),
-and a code for the number of hours it is operational. An `A' in the
-last column means the board operates 24 hours a day. A `B' in the last
-column means the board only operates on evening and weekend hours. A
-`C' means the board operates only on weekends:
-
- aardvark 555-5553 1200/300 B
- alpo-net 555-3412 2400/1200/300 A
- barfly 555-7685 1200/300 A
- bites 555-1675 2400/1200/300 A
- camelot 555-0542 300 C
- core 555-2912 1200/300 C
- fooey 555-1234 2400/1200/300 B
- foot 555-6699 1200/300 B
- macfoo 555-6480 1200/300 A
- sdace 555-3430 2400/1200/300 A
- sabafoo 555-2127 1200/300 C
+ In the data file `mail-list', each record contains the name of a
+person, his/her phone number, his/her email-address, and a code for
+their relationship with the author of the list. An `A' in the last
+column means that the person is an acquaintance. An `F' in the last
+column means that the person is a friend. An `R' means that the person
+is a relative:
+
+ Amelia 555-5553 amelia.zodiacusque@gmail.com F
+ Anthony 555-3412 anthony.asserturo@hotmail.com A
+ Becky 555-7685 becky.algebrarum@gmail.com A
+ Bill 555-1675 bill.drowning@hotmail.com A
+ Broderick 555-0542 broderick.aliquotiens@yahoo.com R
+ Camilla 555-2912 camilla.infusarum@skynet.be R
+ Fabius 555-1234 fabius.undevicesimus@ucb.edu F
+ Julie 555-6699 julie.perscrutabor@skeeve.com F
+ Martin 555-6480 martin.codicibus@hotmail.com A
+ Samuel 555-3430 samuel.lanceolis@shu.edu A
+ Jean-Paul 555-2127 jeanpaul.campanorum@nyu.edu R
The data file `inventory-shipped' represents information about
shipments during the year. Each record contains the month, the number
@@ -1808,18 +1816,8 @@ and the first four months of the current year.
Mar 24 75 70 495
Apr 21 70 74 514
- If you are reading this in GNU Emacs using Info, you can copy the
-regions of text showing these sample files into your own test files.
-This way you can try out the examples shown in the remainder of this
-document. You do this by using the command `M-x write-region' to copy
-text from the Info file into a file for use with `awk' (*Note
-Miscellaneous File Operations: (emacs)Misc File Ops, for more
-information). Using this information, create your own `BBS-list' and
-`inventory-shipped' files and practice what you learn in this Info file.
-
- If you are using the stand-alone version of Info, see *note Extract
-Program::, for an `awk' program that extracts these data files from
-`gawk.texi', the Texinfo source file for this Info file.
+ The sample files are included in the `gawk' distribution, in the
+directory `awklib/eg/data'.

File: gawk.info, Node: Very Simple, Next: Two Rules, Prev: Sample Data Files, Up: Getting Started
@@ -1828,32 +1826,32 @@ File: gawk.info, Node: Very Simple, Next: Two Rules, Prev: Sample Data Files,
========================
The following command runs a simple `awk' program that searches the
-input file `BBS-list' for the character string `foo' (a grouping of
+input file `mail-list' for the character string `li' (a grouping of
characters is usually called a "string"; the term "string" is based on
similar usage in English, such as "a string of pearls," or "a string of
cars in a train"):
- awk '/foo/ { print $0 }' BBS-list
+ awk '/li/ { print $0 }' mail-list
-When lines containing `foo' are found, they are printed because
+When lines containing `li' are found, they are printed because
`print $0' means print the current line. (Just `print' by itself means
the same thing, so we could have written that instead.)
- You will notice that slashes (`/') surround the string `foo' in the
-`awk' program. The slashes indicate that `foo' is the pattern to
-search for. This type of pattern is called a "regular expression",
-which is covered in more detail later (*note Regexp::). The pattern is
-allowed to match parts of words. There are single quotes around the
-`awk' program so that the shell won't interpret any of it as special
-shell characters.
+ You will notice that slashes (`/') surround the string `li' in the
+`awk' program. The slashes indicate that `li' is the pattern to search
+for. This type of pattern is called a "regular expression", which is
+covered in more detail later (*note Regexp::). The pattern is allowed
+to match parts of words. There are single quotes around the `awk'
+program so that the shell won't interpret any of it as special shell
+characters.
Here is what this program prints:
- $ awk '/foo/ { print $0 }' BBS-list
- -| fooey 555-1234 2400/1200/300 B
- -| foot 555-6699 1200/300 B
- -| macfoo 555-6480 1200/300 A
- -| sabafoo 555-2127 1200/300 C
+ $ awk '/li/ { print $0 }' mail-list
+ -| Amelia 555-5553 amelia.zodiacusque@gmail.com F
+ -| Broderick 555-0542 broderick.aliquotiens@yahoo.com R
+ -| Julie 555-6699 julie.perscrutabor@skeeve.com F
+ -| Samuel 555-3430 samuel.lanceolis@shu.edu A
In an `awk' rule, either the pattern or the action can be omitted,
but not both. If the pattern is omitted, then the action is performed
@@ -1862,7 +1860,7 @@ is to print all lines that match the pattern.
Thus, we could leave out the action (the `print' statement and the
curly braces) in the previous example and the result would be the same:
-`awk' prints all lines matching the pattern `foo'. By comparison,
+`awk' prints all lines matching the pattern `li'. By comparison,
omitting the `print' statement but retaining the curly braces makes an
empty action that does nothing (i.e., no lines are printed).
@@ -1968,25 +1966,19 @@ the string `21'. If a line contains both strings, it is printed twice,
once by each rule.
This is what happens if we run this program on our two sample data
-files, `BBS-list' and `inventory-shipped':
+files, `mail-list' and `inventory-shipped':
$ awk '/12/ { print $0 }
- > /21/ { print $0 }' BBS-list inventory-shipped
- -| aardvark 555-5553 1200/300 B
- -| alpo-net 555-3412 2400/1200/300 A
- -| barfly 555-7685 1200/300 A
- -| bites 555-1675 2400/1200/300 A
- -| core 555-2912 1200/300 C
- -| fooey 555-1234 2400/1200/300 B
- -| foot 555-6699 1200/300 B
- -| macfoo 555-6480 1200/300 A
- -| sdace 555-3430 2400/1200/300 A
- -| sabafoo 555-2127 1200/300 C
- -| sabafoo 555-2127 1200/300 C
+ > /21/ { print $0 }' mail-list inventory-shipped
+ -| Anthony 555-3412 anthony.asserturo@hotmail.com A
+ -| Camilla 555-2912 camilla.infusarum@skynet.be R
+ -| Fabius 555-1234 fabius.undevicesimus@ucb.edu F
+ -| Jean-Paul 555-2127 jeanpaul.campanorum@nyu.edu R
+ -| Jean-Paul 555-2127 jeanpaul.campanorum@nyu.edu R
-| Jan 21 36 64 620
-| Apr 21 70 74 514
-Note how the line beginning with `sabafoo' in `BBS-list' was printed
+Note how the line beginning with `Jean-Paul' in `mail-list' was printed
twice, once for each rule.

@@ -2062,7 +2054,7 @@ Most often, each line in an `awk' program is a separate statement or
separate rule, like this:
awk '/12/ { print $0 }
- /21/ { print $0 }' BBS-list inventory-shipped
+ /21/ { print $0 }' mail-list inventory-shipped
However, `gawk' ignores newlines after any of the following symbols
and keywords:
@@ -2230,7 +2222,7 @@ File: gawk.info, Node: Invoking Gawk, Next: Regexp, Prev: Getting Started, U
2 Running `awk' and `gawk'
**************************
-This major node covers how to run awk, both POSIX-standard and
+This major node covers how to run `awk', both POSIX-standard and
`gawk'-specific command-line options, and what `awk' and `gawk' do with
non-option arguments. It then proceeds to cover how `gawk' searches
for source files, reading standard input along with other files,
@@ -2306,22 +2298,8 @@ The following list describes options mandated by the POSIX standard:
`--file SOURCE-FILE'
Read `awk' program source from SOURCE-FILE instead of in the first
non-option argument. This option may be given multiple times; the
- `awk' program consists of the concatenation the contents of each
- specified SOURCE-FILE.
-
-`-i SOURCE-FILE'
-`--include SOURCE-FILE'
- Read `awk' source library from SOURCE-FILE. This option is
- completely equivalent to using the `@include' directive inside
- your program. This option is very similar to the `-f' option, but
- there are two important differences. First, when `-i' is used,
- the program source will not be loaded if it has been previously
- loaded, whereas the `-f' will always load the file. Second,
- because this option is intended to be used with code libraries,
- `gawk' does not recognize such files as constituting main program
- input. Thus, after processing an `-i' argument, `gawk' still
- expects to find the main source code via the `-f' option or on the
- command-line.
+ `awk' program consists of the concatenation of the contents of
+ each specified SOURCE-FILE.
`-v VAR=VAL'
`--assign VAR=VAL'
@@ -2450,6 +2428,20 @@ The following list describes options mandated by the POSIX standard:
Print a "usage" message summarizing the short and long style
options that `gawk' accepts and then exit.
+`-i SOURCE-FILE'
+`--include SOURCE-FILE'
+ Read `awk' source library from SOURCE-FILE. This option is
+ completely equivalent to using the `@include' directive inside
+ your program. This option is very similar to the `-f' option, but
+ there are two important differences. First, when `-i' is used,
+ the program source will not be loaded if it has been previously
+ loaded, whereas the `-f' will always load the file. Second,
+ because this option is intended to be used with code libraries,
+ `gawk' does not recognize such files as constituting main program
+ input. Thus, after processing an `-i' argument, `gawk' still
+ expects to find the main source code via the `-f' option or on the
+ command-line.
+
`-l LIB'
`--load LIB'
Load a shared library LIB. This searches for the library using the
@@ -2482,7 +2474,7 @@ The following list describes options mandated by the POSIX standard:
`--bignum'
Force arbitrary precision arithmetic on numbers. This option has
no effect if `gawk' is not compiled to use the GNU MPFR and MP
- libraries (*note Arbitrary Precision Arithmetic::).
+ libraries (*note Gawk and MPFR::).
`-n'
`--non-decimal-data'
@@ -2750,13 +2742,14 @@ on the command-line with the `-f' option. In most `awk'
implementations, you must supply a precise path name for each program
file, unless the file is in the current directory. But in `gawk', if
the file name supplied to the `-f' or `-i' options does not contain a
-`/', then `gawk' searches a list of directories (called the "search
-path"), one by one, looking for a file with the specified name.
+directory separator `/', then `gawk' searches a list of directories
+(called the "search path"), one by one, looking for a file with the
+specified name.
The search path is a string consisting of directory names separated by
-colons. `gawk' gets its search path from the `AWKPATH' environment
+colons(1). `gawk' gets its search path from the `AWKPATH' environment
variable. If that variable does not exist, `gawk' uses a default path,
-`.:/usr/local/share/awk'.(1)
+`.:/usr/local/share/awk'.(2)
The search path feature is particularly useful for building libraries
of useful `awk' functions. The library files can be placed in a
@@ -2797,7 +2790,9 @@ found, and `gawk' no longer needs to use `AWKPATH'.
---------- Footnotes ----------
- (1) Your version of `gawk' may use a different directory; it will
+ (1) Semicolons on MS-Windows and MS-DOS.
+
+ (2) Your version of `gawk' may use a different directory; it will
depend upon how `gawk' was built and installed. The actual directory is
the value of `$(datadir)' generated when `gawk' was configured. You
probably don't need to worry about this, though.
@@ -2849,10 +2844,6 @@ used by regular users.
the `gawk' developers for testing and tuning. They are subject to
change. The variables are:
-`AVG_CHAIN_MAX'
- The average number of items `gawk' will maintain on a hash chain
- for managing arrays.
-
`AWK_HASH'
If this variable exists with a value of `gst', `gawk' will switch
to using the hash function from GNU Smalltalk for managing arrays.
@@ -2864,6 +2855,13 @@ change. The variables are:
debugging problems on filesystems on non-POSIX operating systems
where I/O is performed in records, not in blocks.
+`GAWK_MSG_SRC'
+ If this variable exists, `gawk' includes the source file name and
+ line number from which warning and/or fatal messages are
+ generated. Its purpose is to help isolate the source of a
+ message, since there can be multiple places which produce the same
+ warning or error message.
+
`GAWK_NO_DFA'
If this variable exists, `gawk' does not use the DFA regexp matcher
for "does it match" kinds of tests. This can cause `gawk' to be
@@ -2876,6 +2874,14 @@ change. The variables are:
This specifies the amount by which `gawk' should grow its internal
evaluation stack, when needed.
+`INT_CHAIN_MAX'
+ The average number of items `gawk' will maintain on a hash chain
+ for managing arrays indexed by integers.
+
+`STR_CHAIN_MAX'
+ The average number of items `gawk' will maintain on a hash chain
+ for managing arrays indexed by strings.
+
`TIDYMEM'
If this variable exists, `gawk' uses the `mtrace()' library calls
from GNU LIBC to help track down possible memory leaks.
@@ -3052,8 +3058,7 @@ File: gawk.info, Node: Undocumented, Prev: Obsolete, Up: Invoking Gawk
2.10 Undocumented Options and Features
======================================
- Use the Source, Luke!
- Obi-Wan
+ Use the Source, Luke! -- Obi-Wan
This minor node intentionally left blank.
@@ -3097,14 +3102,14 @@ A regular expression can be used as a pattern by enclosing it in
slashes. Then the regular expression is tested against the entire text
of each record. (Normally, it only needs to match some part of the
text in order to succeed.) For example, the following prints the
-second field of each record that contains the string `foo' anywhere in
+second field of each record that contains the string `li' anywhere in
it:
- $ awk '/foo/ { print $2 }' BBS-list
- -| 555-1234
+ $ awk '/li/ { print $2 }' mail-list
+ -| 555-5553
+ -| 555-0542
-| 555-6699
- -| 555-6480
- -| 555-2127
+ -| 555-3430
Regular expressions can also be used in matching expressions. These
expressions allow you to specify the string to match against; it need
@@ -3876,7 +3881,7 @@ have to be named on the `awk' command line (*note Getline::).
* Field Separators:: The field separator and how to change it.
* Constant Size:: Reading constant width data.
* Splitting By Content:: Defining Fields By Content
-* Multiple Line:: Reading multi-line records.
+* Multiple Line:: Reading multiline records.
* Getline:: Reading files under explicit program control
using the `getline' function.
* Read Timeout:: Reading input with a timeout.
@@ -3912,67 +3917,82 @@ processed, so that the very first record is read with the proper
separator. To do this, use the special `BEGIN' pattern (*note
BEGIN/END::). For example:
- awk 'BEGIN { RS = "/" }
- { print $0 }' BBS-list
-
-changes the value of `RS' to `"/"', before reading any input. This is
-a string whose first character is a slash; as a result, records are
-separated by slashes. Then the input file is read, and the second rule
-in the `awk' program (the action with no pattern) prints each record.
-Because each `print' statement adds a newline at the end of its output,
-this `awk' program copies the input with each slash changed to a
-newline. Here are the results of running the program on `BBS-list':
-
- $ awk 'BEGIN { RS = "/" }
- > { print $0 }' BBS-list
- -| aardvark 555-5553 1200
- -| 300 B
- -| alpo-net 555-3412 2400
- -| 1200
- -| 300 A
- -| barfly 555-7685 1200
- -| 300 A
- -| bites 555-1675 2400
- -| 1200
- -| 300 A
- -| camelot 555-0542 300 C
- -| core 555-2912 1200
- -| 300 C
- -| fooey 555-1234 2400
- -| 1200
- -| 300 B
- -| foot 555-6699 1200
- -| 300 B
- -| macfoo 555-6480 1200
- -| 300 A
- -| sdace 555-3430 2400
- -| 1200
- -| 300 A
- -| sabafoo 555-2127 1200
- -| 300 C
+ awk 'BEGIN { RS = "u" }
+ { print $0 }' mail-list
+
+changes the value of `RS' to `u', before reading any input. This is a
+string whose first character is the letter "u;" as a result, records
+are separated by the letter "u." Then the input file is read, and the
+second rule in the `awk' program (the action with no pattern) prints
+each record. Because each `print' statement adds a newline at the end
+of its output, this `awk' program copies the input with each `u'
+changed to a newline. Here are the results of running the program on
+`mail-list':
+
+ $ awk 'BEGIN { RS = "u" }
+ > { print $0 }' mail-list
+ -| Amelia 555-5553 amelia.zodiac
+ -| sq
+ -| e@gmail.com F
+ -| Anthony 555-3412 anthony.assert
+ -| ro@hotmail.com A
+ -| Becky 555-7685 becky.algebrar
+ -| m@gmail.com A
+ -| Bill 555-1675 bill.drowning@hotmail.com A
+ -| Broderick 555-0542 broderick.aliq
+ -| otiens@yahoo.com R
+ -| Camilla 555-2912 camilla.inf
+ -| sar
+ -| m@skynet.be R
+ -| Fabi
+ -| s 555-1234 fabi
+ -| s.
+ -| ndevicesim
+ -| s@
+ -| cb.ed
+ -| F
+ -| J
+ -| lie 555-6699 j
+ -| lie.perscr
+ -| tabor@skeeve.com F
+ -| Martin 555-6480 martin.codicib
+ -| s@hotmail.com A
+ -| Sam
+ -| el 555-3430 sam
+ -| el.lanceolis@sh
+ -| .ed
+ -| A
+ -| Jean-Pa
+ -| l 555-2127 jeanpa
+ -| l.campanor
+ -| m@ny
+ -| .ed
+ -| R
-|
-Note that the entry for the `camelot' BBS is not split. In the
-original data file (*note Sample Data Files::), the line looks like
-this:
+Note that the entry for the name `Bill' is not split. In the original
+data file (*note Sample Data Files::), the line looks like this:
- camelot 555-0542 300 C
+ Bill 555-1675 bill.drowning@hotmail.com A
-It has one baud rate only, so there are no slashes in the record,
-unlike the others which have two or more baud rates. In fact, this
-record is treated as part of the record for the `core' BBS; the newline
+It contains no `u' so there is no reason to split the record, unlike
+the others which have one or more occurrences of the `u'. In fact,
+this record is treated as part of the previous record; the newline
separating them in the output is the original newline in the data file,
not the one added by `awk' when it printed the record!
Another way to change the record separator is on the command line,
using the variable-assignment feature (*note Other Arguments::):
- awk '{ print $0 }' RS="/" BBS-list
+ awk '{ print $0 }' RS="u" mail-list
-This sets `RS' to `/' before processing `BBS-list'.
+This sets `RS' to `u' before processing `mail-list'.
- Using an unusual character such as `/' for the record separator
-produces correct behavior in the vast majority of cases.
+ Using an alphabetic character such as `u' for the record separator
+is highly likely to produce strange results. Using an unusual
+character such as `/' is more likely to produce correct behavior in the
+majority of cases, but there are no guarantees. The moral is: Know Your
+Data.
There is one unusual case, that occurs when `gawk' is being fully
POSIX-compliant (*note Options::). Then, the following (extreme)
@@ -4075,18 +4095,23 @@ use for `RS' in this case:
BEGIN { RS = "\0" } # whole file becomes one record?
`gawk' in fact accepts this, and uses the NUL character for the
-record separator. However, this usage is _not_ portable to other `awk'
-implementations.
+record separator. However, this usage is _not_ portable to most other
+`awk' implementations.
- All other `awk' implementations(1) store strings internally as
-C-style strings. C strings use the NUL character as the string
+ Almost all other `awk' implementations(1) store strings internally
+as C-style strings. C strings use the NUL character as the string
terminator. In effect, this means that `RS = "\0"' is the same as `RS
= ""'. (d.c.)
+ It happens that recent versions of `mawk' can use the NUL character
+as a record separator. However, this is a special case: `mawk' does not
+allow embedded NUL characters in strings.
+
The best way to treat a whole file as a single record is to simply
read the file in, one record at a time, concatenating each record onto
the end of the previous ones.
+
---------- Footnotes ----------
(1) At least that we know about.
@@ -4136,26 +4161,24 @@ get the empty string. (If used in a numeric operation, you get zero.)
field, is a special case: it represents the whole input record when you
are not interested in specific fields. Here are some more examples:
- $ awk '$1 ~ /foo/ { print $0 }' BBS-list
- -| fooey 555-1234 2400/1200/300 B
- -| foot 555-6699 1200/300 B
- -| macfoo 555-6480 1200/300 A
- -| sabafoo 555-2127 1200/300 C
+ $ awk '$1 ~ /li/ { print $0 }' mail-list
+ -| Amelia 555-5553 amelia.zodiacusque@gmail.com F
+ -| Julie 555-6699 julie.perscrutabor@skeeve.com F
-This example prints each record in the file `BBS-list' whose first
-field contains the string `foo'. The operator `~' is called a
-"matching operator" (*note Regexp Usage::); it tests whether a string
-(here, the field `$1') matches a given regular expression.
+This example prints each record in the file `mail-list' whose first
+field contains the string `li'. The operator `~' is called a "matching
+operator" (*note Regexp Usage::); it tests whether a string (here, the
+field `$1') matches a given regular expression.
- By contrast, the following example looks for `foo' in _the entire
+ By contrast, the following example looks for `li' in _the entire
record_ and prints the first field and the last field for each matching
input record:
- $ awk '/foo/ { print $1, $NF }' BBS-list
- -| fooey B
- -| foot B
- -| macfoo A
- -| sabafoo C
+ $ awk '/li/ { print $1, $NF }' mail-list
+ -| Amelia F
+ -| Broderick R
+ -| Julie F
+ -| Samuel A
---------- Footnotes ----------
@@ -4183,16 +4206,16 @@ For the twentieth record, field number 20 is printed; most likely, the
record has fewer than 20 fields, so this prints a blank line. Here is
another example of using expressions as field numbers:
- awk '{ print $(2*2) }' BBS-list
+ awk '{ print $(2*2) }' mail-list
`awk' evaluates the expression `(2*2)' and uses its value as the
number of the field to print. The `*' sign represents multiplication,
so the expression `2*2' evaluates to four. The parentheses are used so
that the multiplication is done before the `$' operation; they are
necessary whenever there is a binary operator in the field-number
-expression. This example, then, prints the hours of operation (the
-fourth field) for every line of the file `BBS-list'. (All of the `awk'
-operators are listed, in order of decreasing precedence, in *note
+expression. This example, then, prints the type of relationship (the
+fourth field) for every line of the file `mail-list'. (All of the
+`awk' operators are listed, in order of decreasing precedence, in *note
Precedence::.)
If the field number you compute is zero, you get the entire record.
@@ -4369,6 +4392,7 @@ File: gawk.info, Node: Field Separators, Next: Constant Size, Prev: Changing
* Regexp Field Splitting:: Using regexps as the field separator.
* Single Character Fields:: Making each character a separate field.
* Command Line Field Separator:: Setting `FS' from the command-line.
+* Full Line Fields:: Making the full line be a single field.
* Field Splitting Summary:: Some final points and a summary table.
The "field separator", which is either a single character or a
@@ -4550,7 +4574,7 @@ Options::), if `FS' is the null string, then `gawk' also behaves this
way.

-File: gawk.info, Node: Command Line Field Separator, Next: Field Splitting Summary, Prev: Single Character Fields, Up: Field Separators
+File: gawk.info, Node: Command Line Field Separator, Next: Full Line Fields, Prev: Single Character Fields, Up: Field Separators
4.5.4 Setting `FS' from the Command Line
----------------------------------------
@@ -4588,58 +4612,69 @@ type `-F\t' at the shell, without any quotes, the `\' gets deleted, so
TABs and not `t's. Use `-v FS="t"' or `-F"[t]"' on the command line if
you really do want to separate your fields with `t's.
- As an example, let's use an `awk' program file called `baud.awk'
-that contains the pattern `/300/' and the action `print $1':
+ As an example, let's use an `awk' program file called `edu.awk' that
+contains the pattern `/edu/' and the action `print $1':
- /300/ { print $1 }
+ /edu/ { print $1 }
Let's also set `FS' to be the `-' character and run the program on
-the file `BBS-list'. The following command prints a list of the names
-of the bulletin boards that operate at 300 baud and the first three
+the file `mail-list'. The following command prints a list of the names
+of the people that work at or attend a university, and the first three
digits of their phone numbers:
- $ awk -F- -f baud.awk BBS-list
- -| aardvark 555
- -| alpo
- -| barfly 555
- -| bites 555
- -| camelot 555
- -| core 555
- -| fooey 555
- -| foot 555
- -| macfoo 555
- -| sdace 555
- -| sabafoo 555
-
-Note the second line of output. The second line in the original file
+ $ awk -F- -f edu.awk mail-list
+ -| Fabius 555
+ -| Samuel 555
+ -| Jean
+
+Note the third line of output. The third line in the original file
looked like this:
- alpo-net 555-3412 2400/1200/300 A
+ Jean-Paul 555-2127 jeanpaul.campanorum@nyu.edu R
- The `-' as part of the system's name was used as the field
+ The `-' as part of the person's name was used as the field
separator, instead of the `-' in the phone number that was originally
intended. This demonstrates why you have to be careful in choosing
your field and record separators.
Perhaps the most common use of a single character as the field
separator occurs when processing the Unix system password file. On
-many Unix systems, each user has a separate entry in the system password
-file, one line per user. The information in these lines is separated
-by colons. The first field is the user's login name and the second is
-the user's (encrypted or shadow) password. A password file entry might
-look like this:
+many Unix systems, each user has a separate entry in the system
+password file, one line per user. The information in these lines is
+separated by colons. The first field is the user's login name and the
+second is the user's encrypted or shadow password. (A shadow password
+is indicated by the presence of a single `x' in the second field.) A
+password file entry might look like this:
- arnold:xyzzy:2076:10:Arnold Robbins:/home/arnold:/bin/bash
+ arnold:x:2076:10:Arnold Robbins:/home/arnold:/bin/bash
The following program searches the system password file and prints
-the entries for users who have no password:
+the entries for users whose full name is not indicated:
- awk -F: '$2 == ""' /etc/passwd
+ awk -F: '$5 == ""' /etc/passwd

-File: gawk.info, Node: Field Splitting Summary, Prev: Command Line Field Separator, Up: Field Separators
+File: gawk.info, Node: Full Line Fields, Next: Field Splitting Summary, Prev: Command Line Field Separator, Up: Field Separators
+
+4.5.5 Making The Full Line Be A Single Field
+--------------------------------------------
+
+Occasionally, it's useful to treat the whole input line as a single
+field. This can be done easily and portably simply by setting `FS' to
+`"\n"' (a newline).(1)
+
+ awk -F'\n' 'PROGRAM' FILES ...
-4.5.5 Field-Splitting Summary
+When you do this, `$1' is the same as `$0'.
+
+ ---------- Footnotes ----------
+
+ (1) Thanks to Andrew Schorr for this tip.
+
+
+File: gawk.info, Node: Field Splitting Summary, Prev: Full Line Fields, Up: Field Separators
+
+4.5.6 Field-Splitting Summary
-----------------------------
It is important to remember that when you assign a string constant as
@@ -4728,14 +4763,15 @@ File: gawk.info, Node: Constant Size, Next: Splitting By Content, Prev: Field
4.6 Reading Fixed-Width Data
============================
-(This minor node discusses an advanced feature of `awk'. If you are a
-novice `awk' user, you might want to skip it on the first reading.)
+ NOTE: This minor node discusses an advanced feature of `gawk'. If
+ you are a novice `awk' user, you might want to skip it on the
+ first reading.
-`gawk' provides a facility for dealing with fixed-width fields with no
-distinctive field separator. For example, data of this nature arises
-in the input for old Fortran programs where numbers are run together,
-or in the output of programs that did not anticipate the use of their
-output as input for other programs.
+ `gawk' provides a facility for dealing with fixed-width fields with
+no distinctive field separator. For example, data of this nature
+arises in the input for old Fortran programs where numbers are run
+together, or in the output of programs that did not anticipate the use
+of their output as input for other programs.
An example of the latter is a table where all the columns are lined
up by the use of a variable number of spaces and _empty fields are just
@@ -4834,10 +4870,11 @@ File: gawk.info, Node: Splitting By Content, Next: Multiple Line, Prev: Const
4.7 Defining Fields By Content
==============================
-(This minor node discusses an advanced feature of `awk'. If you are a
-novice `awk' user, you might want to skip it on the first reading.)
+ NOTE: This minor node discusses an advanced feature of `gawk'. If
+ you are a novice `awk' user, you might want to skip it on the
+ first reading.
-Normally, when using `FS', `gawk' defines the fields as the parts of
+ Normally, when using `FS', `gawk' defines the fields as the parts of
the record that occur in between each field separator. In other words,
`FS' defines what a field _is not_, instead of what a field _is_.
However, there are times when you really want to define the fields by
@@ -5291,8 +5328,7 @@ File: gawk.info, Node: Getline/Pipe, Next: Getline/Variable/Pipe, Prev: Getli
---------------------------------
Omniscience has much to recommend it. Failing that, attention to
- details would be useful.
- Brian Kernighan
+ details would be useful. -- Brian Kernighan
The output of a command can also be piped into `getline', using
`COMMAND | getline'. In this case, the string COMMAND is run as a
@@ -5801,13 +5837,29 @@ prints the first and second fields of each input record, separated by a
semicolon, with a blank line added after each newline:
$ awk 'BEGIN { OFS = ";"; ORS = "\n\n" }
- > { print $1, $2 }' BBS-list
- -| aardvark;555-5553
+ > { print $1, $2 }' mail-list
+ -| Amelia;555-5553
-|
- -| alpo-net;555-3412
+ -| Anthony;555-3412
+ -|
+ -| Becky;555-7685
+ -|
+ -| Bill;555-1675
+ -|
+ -| Broderick;555-0542
+ -|
+ -| Camilla;555-2912
+ -|
+ -| Fabius;555-1234
+ -|
+ -| Julie;555-6699
+ -|
+ -| Martin;555-6480
+ -|
+ -| Samuel;555-3430
+ -|
+ -| Jean-Paul;555-2127
-|
- -| barfly;555-7685
- ...
If the value of `ORS' does not contain a newline, the program's
output runs together on a single line.
@@ -6176,25 +6228,25 @@ File: gawk.info, Node: Printf Examples, Prev: Format Modifiers, Up: Printf
The following simple example shows how to use `printf' to make an
aligned table:
- awk '{ printf "%-10s %s\n", $1, $2 }' BBS-list
+ awk '{ printf "%-10s %s\n", $1, $2 }' mail-list
-This command prints the names of the bulletin boards (`$1') in the file
-`BBS-list' as a string of 10 characters that are left-justified. It
+This command prints the names of the people (`$1') in the file
+`mail-list' as a string of 10 characters that are left-justified. It
also prints the phone numbers (`$2') next on the line. This produces
an aligned two-column table of names and phone numbers, as shown here:
- $ awk '{ printf "%-10s %s\n", $1, $2 }' BBS-list
- -| aardvark 555-5553
- -| alpo-net 555-3412
- -| barfly 555-7685
- -| bites 555-1675
- -| camelot 555-0542
- -| core 555-2912
- -| fooey 555-1234
- -| foot 555-6699
- -| macfoo 555-6480
- -| sdace 555-3430
- -| sabafoo 555-2127
+ $ awk '{ printf "%-10s %s\n", $1, $2 }' mail-list
+ -| Amelia 555-5553
+ -| Anthony 555-3412
+ -| Becky 555-7685
+ -| Bill 555-1675
+ -| Broderick 555-0542
+ -| Camilla 555-2912
+ -| Fabius 555-1234
+ -| Julie 555-6699
+ -| Martin 555-6480
+ -| Samuel 555-3430
+ -| Jean-Paul 555-2127
In this case, the phone numbers had to be printed as strings because
the numbers are separated by a dash. Printing the phone numbers as
@@ -6212,14 +6264,14 @@ beginning of the `awk' program:
awk 'BEGIN { print "Name Number"
print "---- ------" }
- { printf "%-10s %s\n", $1, $2 }' BBS-list
+ { printf "%-10s %s\n", $1, $2 }' mail-list
The above example mixes `print' and `printf' statements in the same
program. Using just `printf' statements can produce the same results:
awk 'BEGIN { printf "%-10s %s\n", "Name", "Number"
printf "%-10s %s\n", "----", "------" }
- { printf "%-10s %s\n", $1, $2 }' BBS-list
+ { printf "%-10s %s\n", $1, $2 }' mail-list
Printing each column heading with the same format specification used
for the column elements ensures that the headings are aligned just like
@@ -6231,7 +6283,7 @@ be emphasized by storing it in a variable, like this:
awk 'BEGIN { format = "%-10s %s\n"
printf format, "Name", "Number"
printf format, "----", "------" }
- { printf format, $1, $2 }' BBS-list
+ { printf format, $1, $2 }' mail-list
At this point, it would be a worthwhile exercise to use the `printf'
statement to line up the headings and table data for the
@@ -6271,19 +6323,19 @@ work identically for `printf':
the same OUTPUT-FILE do not erase OUTPUT-FILE, but append to it.
(This is different from how you use redirections in shell scripts.)
If OUTPUT-FILE does not exist, it is created. For example, here
- is how an `awk' program can write a list of BBS names to one file
- named `name-list', and a list of phone numbers to another file
+ is how an `awk' program can write a list of peoples' names to one
+ file named `name-list', and a list of phone numbers to another file
named `phone-list':
$ awk '{ print $2 > "phone-list"
- > print $1 > "name-list" }' BBS-list
+ > print $1 > "name-list" }' mail-list
$ cat phone-list
-| 555-5553
-| 555-3412
...
$ cat name-list
- -| aardvark
- -| alpo-net
+ -| Amelia
+ -| Anthony
...
Each output file contains one name or number per line.
@@ -6304,12 +6356,12 @@ work identically for `printf':
The redirection argument COMMAND is actually an `awk' expression.
Its value is converted to a string whose contents give the shell
command to be run. For example, the following produces two files,
- one unsorted list of BBS names, and one list sorted in reverse
+ one unsorted list of peoples' names, and one list sorted in reverse
alphabetical order:
awk '{ print $1 > "names.unsorted"
command = "sort -r > names.sorted"
- print $1 | command }' BBS-list
+ print $1 | command }' mail-list
The unsorted list is written with an ordinary redirection, while
the sorted list is written by piping through the `sort' utility.
@@ -7039,16 +7091,16 @@ assignment is performed at a time determined by its position among the
input file arguments--after the processing of the preceding input file
argument. For example:
- awk '{ print $n }' n=4 inventory-shipped n=2 BBS-list
+ awk '{ print $n }' n=4 inventory-shipped n=2 mail-list
prints the value of field number `n' for all input records. Before the
first file is read, the command line sets the variable `n' equal to
four. This causes the fourth field to be printed in lines from
`inventory-shipped'. After the first file has finished, but before the
second file is started, `n' is set to two, so that the second field is
-printed in lines from `BBS-list':
+printed in lines from `mail-list':
- $ awk '{ print $n }' n=4 inventory-shipped n=2 BBS-list
+ $ awk '{ print $n }' n=4 inventory-shipped n=2 mail-list
-| 15
-| 24
...
@@ -7095,7 +7147,7 @@ controlled by the `awk' built-in variable `CONVFMT' (*note Built-in
Variables::). Numbers are converted using the `sprintf()' function
with `CONVFMT' as the format specifier (*note String Functions::).
- `CONVFMT''s default value is `"%.6g"', which prints a value with at
+ `CONVFMT''s default value is `"%.6g"', which creates a value with at
most six significant digits. For some applications, you might want to
change it to specify more precision. On most modern machines, 17
digits is usually enough to capture a floating-point number's value
@@ -7143,7 +7195,7 @@ decimal point when reading the `awk' program source code, and for
command-line variable assignments (*note Other Arguments::). However,
when interpreting input data, for `print' and `printf' output, and for
number to string conversion, the local decimal point character is used.
-(d.c.). Here are some examples indicating the difference in behavior,
+(d.c.) Here are some examples indicating the difference in behavior,
on a GNU/Linux system:
$ export POSIXLY_CORRECT=1 Force POSIX behavior
@@ -7302,25 +7354,24 @@ File: gawk.info, Node: Concatenation, Next: Assignment Ops, Prev: Arithmetic
6.2.2 String Concatenation
--------------------------
- It seemed like a good idea at the time.
- Brian Kernighan
+ It seemed like a good idea at the time. -- Brian Kernighan
There is only one string operation: concatenation. It does not have
a specific operator to represent it. Instead, concatenation is
performed by writing expressions next to one another, with no operator.
For example:
- $ awk '{ print "Field number one: " $1 }' BBS-list
- -| Field number one: aardvark
- -| Field number one: alpo-net
+ $ awk '{ print "Field number one: " $1 }' mail-list
+ -| Field number one: Amelia
+ -| Field number one: Anthony
...
Without the space in the string constant after the `:', the line
runs together. For example:
- $ awk '{ print "Field number one:" $1 }' BBS-list
- -| Field number one:aardvark
- -| Field number one:alpo-net
+ $ awk '{ print "Field number one:" $1 }' mail-list
+ -| Field number one:Amelia
+ -| Field number one:Anthony
...
Because string concatenation does not have an explicit operator, it
@@ -7609,8 +7660,7 @@ is a summary of increment and decrement expressions:
Operator Evaluation Order
Doctor, doctor! It hurts when I do this!
- So don't do that!
- Groucho Marx
+ So don't do that! -- Groucho Marx
What happens for something like the following?
@@ -7691,8 +7741,8 @@ File: gawk.info, Node: Typing and Comparison, Next: Boolean Ops, Prev: Truth
6.3.2 Variable Typing and Comparison Expressions
------------------------------------------------
- The Guide is definitive. Reality is frequently inaccurate.
- The Hitchhiker's Guide to the Galaxy
+ The Guide is definitive. Reality is frequently inaccurate. -- The
+ Hitchhiker's Guide to the Galaxy
Unlike other programming languages, `awk' variables do not have a
fixed type. Instead, they can be either a number or a string, depending
@@ -7872,7 +7922,6 @@ of error is very difficult to spot when scanning the source code.
string comparison (true)
`a = 2; b = " +2"'
-
`a == b'
string comparison (false)
@@ -7968,9 +8017,9 @@ Boolean operators are:
`BOOLEAN1 && BOOLEAN2'
True if both BOOLEAN1 and BOOLEAN2 are true. For example, the
following statement prints the current input record if it contains
- both `2400' and `foo':
+ both `edu' and `li':
- if ($0 ~ /2400/ && $0 ~ /foo/) print
+ if ($0 ~ /edu/ && $0 ~ /li/) print
The subexpression BOOLEAN2 is evaluated only if BOOLEAN1 is true.
This can make a difference when BOOLEAN2 contains expressions that
@@ -7981,9 +8030,9 @@ Boolean operators are:
`BOOLEAN1 || BOOLEAN2'
True if at least one of BOOLEAN1 or BOOLEAN2 is true. For
example, the following statement prints all records in the input
- that contain _either_ `2400' or `foo' or both:
+ that contain _either_ `edu' or `li' or both:
- if ($0 ~ /2400/ || $0 ~ /foo/) print
+ if ($0 ~ /edu/ || $0 ~ /li/) print
The subexpression BOOLEAN2 is evaluated only if BOOLEAN1 is false.
This can make a difference when BOOLEAN2 contains expressions that
@@ -8403,56 +8452,53 @@ operand is either a constant regular expression enclosed in slashes
(`/REGEXP/'), or any expression whose string value is used as a dynamic
regular expression (*note Computed Regexps::). The following example
prints the second field of each input record whose first field is
-precisely `foo':
+precisely `li':
- $ awk '$1 == "foo" { print $2 }' BBS-list
+ $ awk '$1 == "li" { print $2 }' mail-list
-(There is no output, because there is no BBS site with the exact name
-`foo'.) Contrast this with the following regular expression match,
-which accepts any record with a first field that contains `foo':
+(There is no output, because there is no person with the exact name
+`li'.) Contrast this with the following regular expression match, which
+accepts any record with a first field that contains `li':
- $ awk '$1 ~ /foo/ { print $2 }' BBS-list
- -| 555-1234
+ $ awk '$1 ~ /foo/ { print $2 }' mail-list
+ -| 555-5553
-| 555-6699
- -| 555-6480
- -| 555-2127
A regexp constant as a pattern is also a special case of an
-expression pattern. The expression `/foo/' has the value one if `foo'
-appears in the current input record. Thus, as a pattern, `/foo/'
-matches any record containing `foo'.
+expression pattern. The expression `/li/' has the value one if `li'
+appears in the current input record. Thus, as a pattern, `/li/' matches
+any record containing `li'.
Boolean expressions are also commonly used as patterns. Whether the
pattern matches an input record depends on whether its subexpressions
match. For example, the following command prints all the records in
-`BBS-list' that contain both `2400' and `foo':
-
- $ awk '/2400/ && /foo/' BBS-list
- -| fooey 555-1234 2400/1200/300 B
-
- The following command prints all records in `BBS-list' that contain
-_either_ `2400' or `foo' (or both, of course):
-
- $ awk '/2400/ || /foo/' BBS-list
- -| alpo-net 555-3412 2400/1200/300 A
- -| bites 555-1675 2400/1200/300 A
- -| fooey 555-1234 2400/1200/300 B
- -| foot 555-6699 1200/300 B
- -| macfoo 555-6480 1200/300 A
- -| sdace 555-3430 2400/1200/300 A
- -| sabafoo 555-2127 1200/300 C
-
- The following command prints all records in `BBS-list' that do _not_
-contain the string `foo':
-
- $ awk '! /foo/' BBS-list
- -| aardvark 555-5553 1200/300 B
- -| alpo-net 555-3412 2400/1200/300 A
- -| barfly 555-7685 1200/300 A
- -| bites 555-1675 2400/1200/300 A
- -| camelot 555-0542 300 C
- -| core 555-2912 1200/300 C
- -| sdace 555-3430 2400/1200/300 A
+`mail-list' that contain both `edu' and `li':
+
+ $ awk '/edu/ && /li/' mail-list
+ -| Samuel 555-3430 samuel.lanceolis@shu.edu A
+
+ The following command prints all records in `mail-list' that contain
+_either_ `edu' or `li' (or both, of course):
+
+ $ awk '/edu/ || /li/' mail-list
+ -| Amelia 555-5553 amelia.zodiacusque@gmail.com F
+ -| Broderick 555-0542 broderick.aliquotiens@yahoo.com R
+ -| Fabius 555-1234 fabius.undevicesimus@ucb.edu F
+ -| Julie 555-6699 julie.perscrutabor@skeeve.com F
+ -| Samuel 555-3430 samuel.lanceolis@shu.edu A
+ -| Jean-Paul 555-2127 jeanpaul.campanorum@nyu.edu R
+
+ The following command prints all records in `mail-list' that do
+_not_ contain the string `li':
+
+ $ awk '! /li/' mail-list
+ -| Anthony 555-3412 anthony.asserturo@hotmail.com A
+ -| Becky 555-7685 becky.algebrarum@gmail.com A
+ -| Bill 555-1675 bill.drowning@hotmail.com A
+ -| Camilla 555-2912 camilla.infusarum@skynet.be R
+ -| Fabius 555-1234 fabius.undevicesimus@ucb.edu F
+ -| Martin 555-6480 martin.codicibus@hotmail.com A
+ -| Jean-Paul 555-2127 jeanpaul.campanorum@nyu.edu R
The subexpressions of a Boolean operator in a pattern can be
constant regular expressions, comparisons, or any other `awk'
@@ -8529,6 +8575,10 @@ worked around; range patterns do not combine with other patterns:
error--> gawk: cmd. line:1: (/1/,/2/) || /Yes/
error--> gawk: cmd. line:1: ^ syntax error
+ As a minor point of interest, although it is poor style, POSIX
+allows you to put a newline after the comma in a range pattern.
+(d.c.)
+

File: gawk.info, Node: BEGIN/END, Next: BEGINFILE/ENDFILE, Prev: Ranges, Up: Pattern Overview
@@ -8559,19 +8609,19 @@ read. Likewise, an `END' rule is executed once only, after all the
input is read. For example:
$ awk '
- > BEGIN { print "Analysis of \"foo\"" }
- > /foo/ { ++n }
- > END { print "\"foo\" appears", n, "times." }' BBS-list
- -| Analysis of "foo"
- -| "foo" appears 4 times.
-
- This program finds the number of records in the input file `BBS-list'
-that contain the string `foo'. The `BEGIN' rule prints a title for the
-report. There is no need to use the `BEGIN' rule to initialize the
-counter `n' to zero, since `awk' does this automatically (*note
-Variables::). The second rule increments the variable `n' every time a
-record containing the pattern `foo' is read. The `END' rule prints the
-value of `n' at the end of the run.
+ > BEGIN { print "Analysis of \"li\"" }
+ > /li/ { ++n }
+ > END { print "\"li\" appears in", n, "records." }' mail-list
+ -| Analysis of "li"
+ -| "li" appears in 4 records.
+
+ This program finds the number of records in the input file
+`mail-list' that contain the string `li'. The `BEGIN' rule prints a
+title for the report. There is no need to use the `BEGIN' rule to
+initialize the counter `n' to zero, since `awk' does this automatically
+(*note Variables::). The second rule increments the variable `n' every
+time a record containing the pattern `li' is read. The `END' rule
+prints the value of `n' at the end of the run.
The special patterns `BEGIN' and `END' cannot be used in ranges or
with Boolean operators (indeed, they cannot be used with any operators).
@@ -8722,7 +8772,7 @@ File: gawk.info, Node: Empty, Prev: BEGINFILE/ENDFILE, Up: Pattern Overview
An empty (i.e., nonexistent) pattern is considered to match _every_
input record. For example, the program:
- awk '{ print $1 }' BBS-list
+ awk '{ print $1 }' mail-list
prints the first field of every record.
@@ -9086,9 +9136,11 @@ File: gawk.info, Node: Switch Statement, Next: Break Statement, Prev: For Sta
7.4.5 The `switch' Statement
----------------------------
-The `switch' statement allows the evaluation of an expression and the
-execution of statements based on a `case' match. Case statements are
-checked for a match in the order they are defined. If no suitable
+This minor node describes a `gawk'-specific feature.
+
+ The `switch' statement allows the evaluation of an expression and
+the execution of statements based on a `case' match. Case statements
+are checked for a match in the order they are defined. If no suitable
`case' is found, the `default' section is executed, if supplied.
Each `case' contains a single constant, be it numeric, string, or
@@ -9347,12 +9399,12 @@ listed in `ARGV'.
standard. See the Austin Group website
(http://austingroupbugs.net/view.php?id=607).
- The current version of the Brian Kernighan's `awk' (*note Other
-Versions::) also supports `nextfile'. However, it doesn't allow the
-`nextfile' statement inside function bodies (*note User-defined::).
-`gawk' does; a `nextfile' inside a function body reads the next record
-and starts processing it with the first rule in the program, just as
-any other `nextfile' statement.
+ The current version of the Brian Kernighan's `awk', and `mawk'
+(*note Other Versions::) also support `nextfile'. However, they don't
+allow the `nextfile' statement inside function bodies (*note
+User-defined::). `gawk' does; a `nextfile' inside a function body
+reads the next record and starts processing it with the first rule in
+the program, just as any other `nextfile' statement.

File: gawk.info, Node: Exit Statement, Prev: Nextfile Statement, Up: Statements
@@ -9495,7 +9547,7 @@ specific to `gawk' are marked with a pound sign (`#').
`FS'
This is the input field separator (*note Field Separators::). The
- value is a single-character string or a multi-character regular
+ value is a single-character string or a multicharacter regular
expression that matches the separations between fields in an input
record. If the value is the null string (`""'), then each
character in the record becomes a separate field. (This behavior
@@ -9597,7 +9649,7 @@ specific to `gawk' are marked with a pound sign (`#').
This is the subscript separator. It has the default value of
`"\034"' and is used to separate the parts of the indices of a
multidimensional array. Thus, the expression `foo["A", "B"]'
- really accesses `foo["A\034B"]' (*note Multi-dimensional::).
+ really accesses `foo["A\034B"]' (*note Multidimensional::).
`TEXTDOMAIN #'
This variable is used for internationalization of programs at the
@@ -9636,13 +9688,13 @@ with a pound sign (`#').
$ awk 'BEGIN {
> for (i = 0; i < ARGC; i++)
> print ARGV[i]
- > }' inventory-shipped BBS-list
+ > }' inventory-shipped mail-list
-| awk
-| inventory-shipped
- -| BBS-list
+ -| mail-list
`ARGV[0]' contains `awk', `ARGV[1]' contains `inventory-shipped',
- and `ARGV[2]' contains `BBS-list'. The value of `ARGC' is three,
+ and `ARGV[2]' contains `mail-list'. The value of `ARGC' is three,
one more than the index of the last element in `ARGV', because the
elements are numbered from zero.
@@ -9679,9 +9731,18 @@ with a pound sign (`#').
An associative array containing the values of the environment.
The array indices are the environment variable names; the elements
are the values of the particular environment variables. For
- example, `ENVIRON["HOME"]' might be `/home/arnold'. Changing this
- array does not affect the environment passed on to any programs
- that `awk' may spawn via redirection or the `system()' function.
+ example, `ENVIRON["HOME"]' might be `/home/arnold'.
+
+ For POSIX `awk', changing this array does not affect the
+ environment passed on to any programs that `awk' may spawn via
+ redirection or the `system()' function.
+
+ However, beginning with version 4.2, if not in POSIX compatibility
+ mode, `gawk' does update its own environment when `ENVIRON' is
+ changed, thus changing the environment seen by programs that it
+ creates. You should therefore be especially careful if you modify
+ `ENVIRON["PATH"]"', which is the search path for finding
+ executable programs.
Some operating systems may not have environment variables. On
such systems, the `ENVIRON' array is empty (except for
@@ -9823,8 +9884,8 @@ with a pound sign (`#').
The following additional elements in the array are available to
provide information about the MPFR and GMP libraries if your
- version of `gawk' supports arbitrary precision numbers (*note
- Arbitrary Precision Arithmetic::):
+ version of `gawk' supports arbitrary precision numbers (*note Gawk
+ and MPFR::):
`PROCINFO["mpfr_version"]'
The version of the GNU MPFR library.
@@ -9903,7 +9964,7 @@ with a pound sign (`#').
the `delete' statement with the `SYMTAB' array.
You may use an index for `SYMTAB' that is not a predefined
- identifer:
+ identifier:
SYMTAB["xxx"] = 5
print SYMTAB["xxx"]
@@ -9969,13 +10030,13 @@ information contained in `ARGC' and `ARGV':
$ awk 'BEGIN {
> for (i = 0; i < ARGC; i++)
> print ARGV[i]
- > }' inventory-shipped BBS-list
+ > }' inventory-shipped mail-list
-| awk
-| inventory-shipped
- -| BBS-list
+ -| mail-list
In this example, `ARGV[0]' contains `awk', `ARGV[1]' contains
-`inventory-shipped', and `ARGV[2]' contains `BBS-list'. Notice that
+`inventory-shipped', and `ARGV[2]' contains `mail-list'. Notice that
the `awk' program is not entered in `ARGV'. The other command-line
options, with their arguments, are also not entered. This includes
variable assignments done with the `-v' option (*note Options::).
@@ -10088,7 +10149,7 @@ cannot have a variable and an array with the same name in the same
* Numeric Array Subscripts:: How to use numbers as subscripts in
`awk'.
* Uninitialized Subscripts:: Using Uninitialized variables as subscripts.
-* Multi-dimensional:: Emulating multidimensional arrays in
+* Multidimensional:: Emulating multidimensional arrays in
`awk'.
* Arrays of Arrays:: True multidimensional arrays.
@@ -10120,8 +10181,7 @@ File: gawk.info, Node: Array Intro, Next: Reference to Elements, Up: Array Ba
----------------------------
Doing linear scans over an associative array is like trying to
- club someone to death with a loaded Uzi.
- Larry Wall
+ club someone to death with a loaded Uzi. -- Larry Wall
The `awk' language provides one-dimensional arrays for storing
groups of related strings or numbers. Every `awk' array must have a
@@ -10431,42 +10491,45 @@ available:
default `awk' behavior.
`"@ind_str_asc"'
- Order by indices compared as strings; this is the most basic sort.
- (Internally, array indices are always strings, so with `a[2*5] = 1'
- the index is `"10"' rather than numeric 10.)
+ Order by indices in ascending order compared as strings; this is
+ the most basic sort. (Internally, array indices are always
+ strings, so with `a[2*5] = 1' the index is `"10"' rather than
+ numeric 10.)
`"@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.
+ Order by indices in ascending order 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.
`"@val_type_asc"'
- Order by element values rather than indices. Ordering is by the
- type assigned to the element (*note Typing and Comparison::). All
- numeric values come before all string values, which in turn come
- before all subarrays. (Subarrays have not been described yet;
- *note Arrays of Arrays::).
+ Order by element values in ascending order (rather than by
+ indices). Ordering is by the type assigned to the element (*note
+ Typing and Comparison::). All numeric values come before all
+ string values, which in turn come before all subarrays.
+ (Subarrays have not been described yet; *note Arrays of Arrays::.)
`"@val_str_asc"'
- Order by element values rather than by indices. Scalar values are
- compared as strings. Subarrays, if present, come out last.
+ Order by element values in ascending order (rather than by
+ indices). Scalar values are compared as strings. Subarrays, if
+ present, come out last.
`"@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 `qsort()' function,(1) which `gawk' uses
- internally to perform the sorting.
+ Order by element values in ascending order (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 `qsort()' function,(1)
+ which `gawk' uses internally to perform the sorting.
`"@ind_str_desc"'
- Reverse order from the most basic sort.
+ String indices ordered from high to low.
`"@ind_num_desc"'
Numeric indices ordered from high to low.
`"@val_type_desc"'
- Element values, based on type, in descending order.
+ Element values, based on type, ordered from high to low.
+ Subarrays, if present, come out first.
`"@val_str_desc"'
Element values, treated as strings, ordered from high to low.
@@ -10669,7 +10732,7 @@ knowledge of the actual rules since they can sometimes have a subtle
effect on your programs.

-File: gawk.info, Node: Uninitialized Subscripts, Next: Multi-dimensional, Prev: Numeric Array Subscripts, Up: Arrays
+File: gawk.info, Node: Uninitialized Subscripts, Next: Multidimensional, Prev: Numeric Array Subscripts, Up: Arrays
8.4 Using Uninitialized Variables as Subscripts
===============================================
@@ -10717,14 +10780,14 @@ string as a subscript if `--lint' is provided on the command line
(*note Options::).

-File: gawk.info, Node: Multi-dimensional, Next: Arrays of Arrays, Prev: Uninitialized Subscripts, Up: Arrays
+File: gawk.info, Node: Multidimensional, Next: Arrays of Arrays, Prev: Uninitialized Subscripts, Up: Arrays
8.5 Multidimensional Arrays
===========================
* Menu:
-* Multi-scanning:: Scanning multidimensional arrays.
+* Multiscanning:: Scanning multidimensional arrays.
A multidimensional array is an array in which an element is
identified by a sequence of indices instead of a single index. For
@@ -10803,7 +10866,7 @@ the program produces the following output:
3 2 1 6

-File: gawk.info, Node: Multi-scanning, Up: Multi-dimensional
+File: gawk.info, Node: Multiscanning, Up: Multidimensional
8.5.1 Scanning Multidimensional Arrays
--------------------------------------
@@ -10843,7 +10906,7 @@ The result is to set `separate[1]' to `"1"' and `separate[2]' to
recovered.

-File: gawk.info, Node: Arrays of Arrays, Prev: Multi-dimensional, Up: Arrays
+File: gawk.info, Node: Arrays of Arrays, Prev: Multidimensional, Up: Arrays
8.6 Arrays of Arrays
====================
@@ -11179,13 +11242,15 @@ File: gawk.info, Node: String Functions, Next: I/O Functions, Prev: Numeric F
-----------------------------------
The functions in this minor node look at or change the text of one or
-more strings. `gawk' understands locales (*note Locales::), and does
-all string processing in terms of _characters_, not _bytes_. This
-distinction is particularly important to understand for locales where
-one character may be represented by multiple bytes. Thus, for example,
-`length()' returns the number of characters in a string, and not the
-number of bytes used to represent those characters, Similarly,
-`index()' works with character indices, and not byte indices.
+more strings.
+
+ `gawk' understands locales (*note Locales::), and does all string
+processing in terms of _characters_, not _bytes_. This distinction is
+particularly important to understand for locales where one character
+may be represented by multiple bytes. Thus, for example, `length()'
+returns the number of characters in a string, and not the number of
+bytes used to represent those characters. Similarly, `index()' works
+with character indices, and not byte indices.
In the following list, optional parameters are enclosed in square
brackets ([ ]). Several functions perform string substitution; the
@@ -11201,26 +11266,27 @@ pound sign (`#'):
`gensub()'.
`asort(SOURCE [, DEST [, HOW ] ]) #'
- Return the number of elements in the array SOURCE. `gawk' sorts
- the contents of SOURCE and replaces the indices of the sorted
- values of SOURCE with sequential integers starting with one. If
- the optional array DEST is specified, then SOURCE is duplicated
- into DEST. DEST is then sorted, leaving the indices of SOURCE
- unchanged. The optional third argument HOW is a string which
- controls the rule for comparing values, and the sort direction. A
- single space is required between the comparison mode, `string' or
- `number', and the direction specification, `ascending' or
- `descending'. You can omit direction and/or mode in which case it
- will default to `ascending' and `string', respectively. An empty
- string "" is the same as the default `"ascending string"' for the
- value of HOW. If the `source' array contains subarrays as values,
- they will come out last(first) in the `dest' array for
- `ascending'(`descending') order specification. The value of
- `IGNORECASE' affects the sorting. The third argument can also be
- a user-defined function name in which case the value returned by
- the function is used to order the array elements before
- constructing the result array. *Note Array Sorting Functions::,
- for more information.
+`asorti(SOURCE [, DEST [, HOW ] ]) #'
+ These two functions are similar in behavior, so they are described
+ together.
+
+ NOTE: The following description ignores the third argument,
+ HOW, since it requires understanding features that we have
+ not discussed yet. Thus, the discussion here is a deliberate
+ simplification. (We do provide all the details later on:
+ *Note Array Sorting Functions::, for the full story.)
+
+ Both functions return the number of elements in the array SOURCE.
+ For `asort()', `gawk' sorts the values of SOURCE and replaces the
+ indices of the sorted values of SOURCE with sequential integers
+ starting with one. If the optional array DEST is specified, then
+ SOURCE is duplicated into DEST. DEST is then sorted, leaving the
+ indices of SOURCE unchanged.
+
+ When comparing strings, `IGNORECASE' affects the sorting (*note
+ Array Sorting Functions::). If the SOURCE array contains
+ subarrays as values (*note Arrays of Arrays::), they will come
+ last, after all scalar values.
For example, if the contents of `a' are as follows:
@@ -11238,23 +11304,16 @@ pound sign (`#'):
a[2] = "de"
a[3] = "sac"
- In order to reverse the direction of the sorted results in the
- above example, `asort()' can be called with three arguments as
- follows:
+ The `asorti()' function works similarly to `asort()', however, the
+ _indices_ are sorted, instead of the values. Thus, in the previous
+ example, starting with the same initial set of indices and values
+ in `a', calling `asorti(a)' would yield:
- asort(a, a, "descending")
+ a[1] = "first"
+ a[2] = "last"
+ a[3] = "middle"
- The `asort()' function is described in more detail in *note Array
- Sorting Functions::. `asort()' is a `gawk' extension; it is not
- available in compatibility mode (*note Options::).
-
-`asorti(SOURCE [, DEST [, HOW ] ]) #'
- Return the number of elements in the array SOURCE. It works
- similarly to `asort()', however, the _indices_ are sorted, instead
- of the values. (Here too, `IGNORECASE' affects the sorting.)
-
- The `asorti()' function is described in more detail in *note Array
- Sorting Functions::. `asorti()' is a `gawk' extension; it is not
+ `asort()' and `asorti()' are `gawk' extensions; they are not
available in compatibility mode (*note Options::).
`gensub(REGEXP, REPLACEMENT, HOW [, TARGET]) #'
@@ -11266,7 +11325,7 @@ pound sign (`#'):
`$0'. It returns the modified string as the result of the
function and the original target string is _not_ changed.
- `gensub()' is a general substitution function. It's purpose is to
+ `gensub()' is a general substitution function. Its purpose is to
provide more features than the standard `sub()' and `gsub()'
functions.
@@ -11942,10 +12001,10 @@ parameters are enclosed in square brackets ([ ]):
function--`gawk' also buffers its output and the `fflush()'
function forces `gawk' to flush its buffers.
- `fflush()' was added to Brian Kernighan's version of `awk' in 1994.
- For over two decades, it was not part of the POSIX standard. As
- of December, 2012, it was accepted for inclusion into the POSIX
- standard. See the Austin Group website
+ `fflush()' was added to Brian Kernighan's version of `awk' in
+ April of 1992. For two decades, it was not part of the POSIX
+ standard. As of December, 2012, it was accepted for inclusion
+ into the POSIX standard. See the Austin Group website
(http://austingroupbugs.net/view.php?id=634).
POSIX standardizes `fflush()' as follows: If there is no argument,
@@ -12148,7 +12207,8 @@ enclosed in square brackets ([ ]):
Variables::). The default string value is
`"%a %b %e %H:%M:%S %Z %Y"'. This format string produces output
that is equivalent to that of the `date' utility. You can assign
- a new value to `PROCINFO["strftime"]' to change the default format.
+ a new value to `PROCINFO["strftime"]' to change the default
+ format; see below for the various format directives.
`systime()'
Return the current time as the number of seconds since the system
@@ -12417,7 +12477,7 @@ File: gawk.info, Node: Bitwise Functions, Next: Type Functions, Prev: Time Fu
9.1.6 Bit-Manipulation Functions
--------------------------------
- I can explain it for you, but I can't understand it for you.
+ I can explain it for you, but I can't understand it for you. --
Anonymous
Many languages provide the ability to perform "bitwise" operations
@@ -12561,7 +12621,7 @@ of Arrays::).
traversing a multidimensional array: you can test if an element is
itself an array or not. The second is inside the body of a
user-defined function (not discussed yet; *note User-defined::), to
-test if a paramater is an array or not.
+test if a parameter is an array or not.
Note, however, that using `isarray()' at the global level to test
variables makes no sense. Since you are the one writing the program, you
@@ -12662,7 +12722,7 @@ a parameter with the same name as the function itself.
In addition, according to the POSIX standard, function parameters
cannot have the same name as one of the special built-in variables
(*note Built-in Variables::. Not all versions of `awk' enforce this
-restriction.
+restriction.)
The BODY-OF-FUNCTION consists of `awk' statements. It is the most
important part of the definition, because it says what the function
@@ -12705,8 +12765,8 @@ function. When this happens, we say the function is "recursive". The
act of a function calling itself is called "recursion".
All the built-in functions return a value to their caller.
-User-defined functions can do also, using the `return' statement, which
-is described in detail in *note Return Statement::. Many of the
+User-defined functions can do so also, using the `return' statement,
+which is described in detail in *note Return Statement::. Many of the
subsequent examples in this minor node use the `return' statement.
In many `awk' implementations, including `gawk', the keyword
@@ -12776,7 +12836,8 @@ elements in an array and start over with a new list of elements (*note
Delete::). Instead of having to repeat this loop everywhere that you
need to clear out an array, your program can just call `delarray'.
(This guarantees portability. The use of `delete ARRAY' to delete the
-contents of an entire array is a nonstandard extension.)
+contents of an entire array is a recent(1) addition to the POSIX
+standard.)
The following is an example of a recursive function. It takes a
string as an input parameter and returns the string in backwards order.
@@ -12816,13 +12877,19 @@ an `awk' version of `ctime()':
return strftime(format, ts)
}
+ ---------- Footnotes ----------
+
+ (1) Late in 2012.
+

File: gawk.info, Node: Function Caveats, Next: Return Statement, Prev: Function Example, Up: User-defined
9.2.3 Calling User-Defined Functions
------------------------------------
-This section describes how to call a user-defined function.
+"Calling a function" means causing the function to run and do its job.
+A function call is an expression and its value is the value returned by
+the function.
* Menu:
@@ -12836,16 +12903,12 @@ File: gawk.info, Node: Calling A Function, Next: Variable Scope, Up: Function
9.2.3.1 Writing A Function Call
...............................
-"Calling a function" means causing the function to run and do its job.
-A function call is an expression and its value is the value returned by
-the function.
-
- A function call consists of the function name followed by the
-arguments in parentheses. `awk' expressions are what you write in the
-call for the arguments. Each time the call is executed, these
-expressions are evaluated, and the values become the actual arguments.
-For example, here is a call to `foo()' with three arguments (the first
-being a string concatenation):
+A function call consists of the function name followed by the arguments
+in parentheses. `awk' expressions are what you write in the call for
+the arguments. Each time the call is executed, these expressions are
+evaluated, and the values become the actual arguments. For example,
+here is a call to `foo()' with three arguments (the first being a
+string concatenation):
foo(x y, "lose", 4 * z)
@@ -13240,7 +13303,7 @@ and then a closing right parenthesis, with the addition of a leading `@'
character:
the_func = "sum"
- result = @the_func() # calls the `sum' function
+ result = @the_func() # calls the sum() function
Here is a full program that processes the previously shown data,
using indirect function calls.
@@ -13391,8 +13454,8 @@ order.
Next comes a sorting function. It is parameterized with the
starting and ending field numbers and the comparison function. It
-builds an array with the data and calls `quicksort' appropriately, and
-then formats the results as a single string:
+builds an array with the data and calls `quicksort()' appropriately,
+and then formats the results as a single string:
# do_sort --- sort the data according to `compare'
# and return it as a string
@@ -13487,7 +13550,7 @@ algorithms and program tasks in a single place. It simplifies
programming, making program development more manageable, and making
programs more readable.
- In their seminal 1976 book, `Software Tools'(1), Brian Kernighan and
+ In their seminal 1976 book, `Software Tools',(1) Brian Kernighan and
P.J. Plauger wrote:
Good Programming is not learned from generalities, but by seeing
@@ -13592,7 +13655,7 @@ will be accidentally shared with the user's program.
In addition, several of the library functions use a prefix that helps
indicate what function or set of functions use the variables--for
-example, `_pw_byname' in the user database routines (*note Passwd
+example, `_pw_byname()' in the user database routines (*note Passwd
Functions::). This convention is recommended, since it even further
decreases the chance of inadvertent conflict among variable names.
Note that this convention is used equally well for variable names and
@@ -13663,6 +13726,7 @@ programming use.
vice versa.
* Join Function:: A function to join an array into a string.
* Getlocaltime Function:: A function to get formatted times.
+* Readfile Function:: A function to read an entire file at once.

File: gawk.info, Node: Strtonum Function, Next: Assert Function, Up: General Functions
@@ -13842,9 +13906,9 @@ File: gawk.info, Node: Round Function, Next: Cliff Random Function, Prev: Ass
The way `printf' and `sprintf()' (*note Printf::) perform rounding
often depends upon the system's C `sprintf()' subroutine. On many
-machines, `sprintf()' rounding is "unbiased," which means it doesn't
-always round a trailing `.5' up, contrary to naive expectations. In
-unbiased rounding, `.5' rounds to even, rather than always up, so 1.5
+machines, `sprintf()' rounding is "unbiased", which means it doesn't
+always round a trailing .5 up, contrary to naive expectations. In
+unbiased rounding, .5 rounds to even, rather than always up, so 1.5
rounds to 2 but 4.5 rounds to 4. This means that if you are using a
format that does rounding (e.g., `"%.0f"'), you should check what your
system does. The following function does traditional rounding; it
@@ -13878,7 +13942,7 @@ might be useful if your `awk''s `printf' does unbiased rounding:
}
# test harness
- { print $0, round($0) }
+ # { print $0, round($0) }

File: gawk.info, Node: Cliff Random Function, Next: Ordinal Functions, Prev: Round Function, Up: General Functions
@@ -13954,8 +14018,8 @@ corresponding character. Both functions are written very nicely in
}
}
- Some explanation of the numbers used by `chr' is worthwhile. The
-most prominent character set in use today is ASCII.(1) Although an
+ Some explanation of the numbers used by `_ord_init()' is worthwhile.
+The most prominent character set in use today is ASCII.(1) Although an
8-bit byte can hold 256 distinct values (from 0 to 255), ASCII only
defines characters that use the values from 0 to 127.(2) In the now
distant past, at least one minicomputer manufacturer used ASCII, but
@@ -14005,7 +14069,7 @@ tests such as used here prohibitively expensive.
(2) ASCII has been extended in many countries to use the values from
128 to 255 for country-specific characters. If your system uses these
-extensions, you can simplify `_ord_init' to loop from 0 to 255.
+extensions, you can simplify `_ord_init()' to loop from 0 to 255.

File: gawk.info, Node: Join Function, Next: Getlocaltime Function, Prev: Ordinal Functions, Up: General Functions
@@ -14055,7 +14119,7 @@ concatenation. The lack of an explicit operator for concatenation
makes string operations more difficult than they really need to be.

-File: gawk.info, Node: Getlocaltime Function, Prev: Join Function, Up: General Functions
+File: gawk.info, Node: Getlocaltime Function, Next: Readfile Function, Prev: Join Function, Up: General Functions
10.2.7 Managing the Time of Day
-------------------------------
@@ -14137,6 +14201,66 @@ the `getlocaltime()' function would have allowed the user to supply an
optional timestamp value to use instead of the current time.

+File: gawk.info, Node: Readfile Function, Prev: Getlocaltime Function, Up: General Functions
+
+10.2.8 Reading A Whole File At Once
+-----------------------------------
+
+Often, it is convenient to have the entire contents of a file available
+in memory as a single string. A straightforward but naive way to do
+that might be as follows:
+
+ function readfile(file, tmp, contents)
+ {
+ if ((getline tmp < file) < 0)
+ return
+
+ contents = tmp
+ while (getline tmp < file) > 0)
+ contents = contents RT tmp
+
+ close(file)
+ return contents
+ }
+
+ This function reads from `file' one record at a time, building up
+the full contents of the file in the local variable `contents'. It
+works, but is not necessarily efficient.
+
+ The following function, based on a suggestion by Denis Shirokov,
+reads the entire contents of the named file in one shot:
+
+ # readfile.awk --- read an entire file at once
+
+ function readfile(file, tmp, save_rs)
+ {
+ save_rs = RS
+ RS = "^$"
+ getline tmp < file
+ close(file)
+ RS = save_rs
+
+ return tmp
+ }
+
+ It works by setting `RS' to `^$', a regular expression that will
+never match if the file has contents. `gawk' reads data from the file
+into `tmp' attempting to match `RS'. The match fails after each read,
+but fails quickly, such that `gawk' fills `tmp' with the entire
+contents of the file. (*Note Records::, for information on `RT' and
+`RS'.)
+
+ In the case that `file' is empty, the return value is the null
+string. Thus calling code may use something like:
+
+ contents = readfile("/some/path")
+ if (length(contents) == 0)
+ # file was empty ...
+
+ This tests the result to see if it is empty or not. An equivalent
+test would be `contents == ""'.
+
+
File: gawk.info, Node: Data File Management, Next: Getopt Function, Prev: General Functions, Up: Library Functions
10.3 Data File Management
@@ -14386,7 +14510,7 @@ File: gawk.info, Node: Ignoring Assigns, Prev: Empty Files, Up: Data File Man
Occasionally, you might not want `awk' to process command-line variable
assignments (*note Assignment Options::). In particular, if you have a
-file name that contain an `=' character, `awk' treats the file name as
+file name that contains an `=' character, `awk' treats the file name as
an assignment, and does not process it.
Some users have suggested an additional command-line option for
@@ -14543,7 +14667,7 @@ characters (*note String Functions::).(1)
# <c> a character representing the current option
# Private Data:
- # _opti -- index in multi-flag option, e.g., -abc
+ # _opti -- index in multiflag option, e.g., -abc
The function starts out with comments presenting a list of the
global variables it uses, what the return values are, what they mean,
@@ -14882,7 +15006,7 @@ later. The test can only be true for `gawk'. It is false if using
`FS' or `FPAT', or on some other `awk' implementation.
The code that checks for using `FPAT', using `using_fpat' and
-`PROCINFO["FS"]' is similar.
+`PROCINFO["FS"]', is similar.
The main part of the function uses a loop to read database lines,
split the line into fields, and then store the line into each array as
@@ -14902,9 +15026,9 @@ create the element with the null string as its value:
return _pw_byname[name]
}
- Similarly, the `getpwuid' function takes a user ID number argument.
-If that user number is in the database, it returns the appropriate
-line. Otherwise, it returns the null string:
+ Similarly, the `getpwuid()' function takes a user ID number
+argument. If that user number is in the database, it returns the
+appropriate line. Otherwise, it returns the null string:
function getpwuid(uid)
{
@@ -15251,8 +15375,8 @@ index and value, use the indirect function call syntax (*note Indirect
Calls::) on `process', passing it the index and the value.
When calling `walk_array()', you would pass the name of a
-user-defined function that expects to receive and index and a value,
-and then processes the element.
+user-defined function that expects to receive an index and a value, and
+then processes the element.

File: gawk.info, Node: Sample Programs, Next: Advanced Features, Prev: Library Functions, Up: Top
@@ -15513,7 +15637,7 @@ fields to print are `$1', `$3', and `$5'. The intermediate fields are
the fields to print, and `t' tracks the complete field list, including
filler fields:
- function set_charlist( field, i, j, f, g, t,
+ function set_charlist( field, i, j, f, g, n, m, t,
filler, last, len)
{
field = 1 # count total fields
@@ -15917,9 +16041,9 @@ groups in the `PROCINFO' array have the indices `"group1"' through
However, we don't know in advance how many of these groups there are.
This loop works by starting at one, concatenating the value with
-`"group"', and then using `in' to see if that value is in the array.
-Eventually, `i' is incremented past the last group in the array and the
-loop exits.
+`"group"', and then using `in' to see if that value is in the array
+(*note Reference to Elements::). Eventually, `i' is incremented past
+the last group in the array and the loop exits.
The loop is also correct if there are _no_ supplementary groups;
then the condition is false the first time it's tested, and the loop
@@ -16566,8 +16690,10 @@ File: gawk.info, Node: Alarm Program, Next: Translate Program, Prev: Dupword
11.3.2 An Alarm Clock Program
-----------------------------
- Nothing cures insomnia like a ringing alarm clock.
- Arnold Robbins
+ Nothing cures insomnia like a ringing alarm clock. -- Arnold
+ Robbins
+
+ Sleep is for web developers. -- Erik Quanstrom
The following program is a simple "alarm clock" program. You give
it a time of day and an optional message. At the specified time, it
@@ -16811,10 +16937,10 @@ program.
---------- Footnotes ----------
- (1) On some older systems, `tr' may require that the lists be
-written as range expressions enclosed in square brackets (`[a-z]') and
-quoted, to prevent the shell from attempting a file name expansion.
-This is not a feature.
+ (1) On some older systems, including Solaris, `tr' may require that
+the lists be written as range expressions enclosed in square brackets
+(`[a-z]') and quoted, to prevent the shell from attempting a file name
+expansion. This is not a feature.
(2) This program was written before `gawk' acquired the ability to
split each character in a string into separate array elements.
@@ -17124,11 +17250,11 @@ are simply removed. `extract.awk' uses the `join()' library function
(*note Join Function::).
The example programs in the online Texinfo source for `GAWK:
-Effective AWK Programming' (`gawk.texi') have all been bracketed inside
-`file' and `endfile' lines. The `gawk' distribution uses a copy of
-`extract.awk' to extract the sample programs and install many of them
-in a standard directory where `gawk' can find them. The Texinfo file
-looks something like this:
+Effective AWK Programming' (`gawktexi.in') have all been bracketed
+inside `file' and `endfile' lines. The `gawk' distribution uses a copy
+of `extract.awk' to extract the sample programs and install many of
+them in a standard directory where `gawk' can find them. The Texinfo
+file looks something like this:
...
This program has a @code{BEGIN} rule,
@@ -17880,8 +18006,8 @@ File: gawk.info, Node: Advanced Features, Next: Internationalization, Prev: S
******************************
Write documentation as if whoever reads it is a violent psychopath
- who knows where you live.
- Steve English, as quoted by Peter Langston
+ who knows where you live. -- Steve English, as quoted by Peter
+ Langston
This major node discusses advanced features in `gawk'. It's a bit
of a "grab bag" of items that are otherwise unrelated to each other.
@@ -18157,7 +18283,7 @@ seemingly ordered data:
function cmp_randomize(i1, v1, i2, v2)
{
- # random order
+ # random order (caution: this may never terminate!)
return (2 - 4 * rand())
}
@@ -18171,7 +18297,7 @@ elements with otherwise equal values is to include the indices in the
comparison rules. Note that doing this may make the loop traversal
less efficient, so consider it only if necessary. The following
comparison functions force a deterministic order, and are based on the
-fact that the indices of two elements are never equal:
+fact that the (string) indices of two elements are never equal:
function cmp_numeric(i1, v1, i2, v2)
{
@@ -18230,9 +18356,9 @@ functions (*note String Functions::) for sorting arrays. For example:
After the call to `asort()', the array `data' is indexed from 1 to
some number N, the total number of elements in `data'. (This count is
`asort()''s return value.) `data[1]' <= `data[2]' <= `data[3]', and so
-on. The comparison is based on the type of the elements (*note Typing
-and Comparison::). All numeric values come before all string values,
-which in turn come before all subarrays.
+on. The default comparison is based on the type of the elements (*note
+Typing and Comparison::). All numeric values come before all string
+values, which in turn come before all subarrays.
An important side effect of calling `asort()' is that _the array's
original indices are irrevocably lost_. As this isn't always
@@ -18247,21 +18373,11 @@ desirable, `asort()' accepts a second argument:
and then sorts `dest', destroying its indices. However, the `source'
array is not affected.
- `asort()' accepts a third string argument to control comparison of
-array elements. As with `PROCINFO["sorted_in"]', this argument may be
-one of the predefined names that `gawk' provides (*note Controlling
-Scanning::), or the name of a user-defined function (*note Controlling
-Array Traversal::).
-
- NOTE: In all cases, the sorted element values consist of the
- original array's element values. The ability to control
- comparison merely affects the way in which they are sorted.
-
Often, what's needed is to sort on the values of the _indices_
instead of the values of the elements. To do that, use the `asorti()'
-function. The interface is identical to that of `asort()', except that
-the index values are used for sorting, and become the values of the
-result array:
+function. The interface and behavior are identical to that of
+`asort()', except that the index values are used for sorting, and
+become the values of the result array:
{ source[$0] = some_func($0) }
@@ -18276,32 +18392,41 @@ result array:
}
}
- Similar to `asort()', in all cases, the sorted element values
-consist of the original array's indices. The ability to control
-comparison merely affects the way in which they are sorted.
-
- Sorting the array by replacing the indices provides maximal
-flexibility. To traverse the elements in decreasing order, use a loop
-that goes from N down to 1, either over the elements or over the
-indices.(1)
-
- Copying array indices and elements isn't expensive in terms of
-memory. Internally, `gawk' maintains "reference counts" to data. For
-example, when `asort()' copies the first array to the second one, there
-is only one copy of the original array elements' data, even though both
-arrays use the values.
+ So far, so good. Now it starts to get interesting. Both `asort()'
+and `asorti()' accept a third string argument to control comparison of
+array elements. In *note String Functions::, we ignored this third
+argument; however, the time has now come to describe how this argument
+affects these two functions.
+
+ Basically, the third argument specifies how the array is to be
+sorted. There are two possibilities. As with `PROCINFO["sorted_in"]',
+this argument may be one of the predefined names that `gawk' provides
+(*note Controlling Scanning::), or it may be the name of a user-defined
+function (*note Controlling Array Traversal::).
+
+ In the latter case, _the function can compare elements in any way it
+chooses_, taking into account just the indices, just the values, or
+both. This is extremely powerful.
+
+ Once the array is sorted, `asort()' takes the _values_ in their
+final order, and uses them to fill in the result array, whereas
+`asorti()' takes the _indices_ in their final order, and uses them to
+fill in the result array.
+
+ NOTE: Copying array indices and elements isn't expensive in terms
+ of memory. Internally, `gawk' maintains "reference counts" to
+ data. For example, when `asort()' copies the first array to the
+ second one, there is only one copy of the original array elements'
+ data, even though both arrays use the values.
Because `IGNORECASE' affects string comparisons, the value of
`IGNORECASE' also affects sorting for both `asort()' and `asorti()'.
Note also that the locale's sorting order does _not_ come into play;
-comparisons are based on character values only.(2) Caveat Emptor.
+comparisons are based on character values only.(1) Caveat Emptor.
---------- Footnotes ----------
- (1) You may also use one of the predefined sorting names that sorts
-in decreasing order.
-
- (2) This is true because locale-based comparison occurs only when in
+ (1) This is true because locale-based comparison occurs only when in
POSIX compatibility mode, and since `asort()' and `asorti()' are `gawk'
extensions, they are not available in that case.
@@ -18438,7 +18563,8 @@ regular pipes.
---------- Footnotes ----------
- (1) This is very different from the same operator in the C shell.
+ (1) This is very different from the same operator in the C shell and
+in Bash.

File: gawk.info, Node: TCP/IP Networking, Next: Profiling, Prev: Two-way I/O, Up: Advanced Features
@@ -18576,56 +18702,64 @@ First, the `awk' program:
junk
Here is the `awkprof.out' that results from running the `gawk'
-profiler on this program and data (this example also illustrates that
-`awk' programmers sometimes have to work late):
+profiler on this program and data. (This example also illustrates that
+`awk' programmers sometimes get up very early in the morning to work.)
- # gawk profile, created Sun Aug 13 00:00:15 2000
+ # gawk profile, created Thu Feb 27 05:16:21 2014
- # BEGIN block(s)
+ # BEGIN block(s)
- BEGIN {
- 1 print "First BEGIN rule"
- 1 print "Second BEGIN rule"
- }
+ BEGIN {
+ 1 print "First BEGIN rule"
+ }
- # Rule(s)
+ BEGIN {
+ 1 print "Second BEGIN rule"
+ }
- 5 /foo/ { # 2
- 2 print "matched /foo/, gosh"
- 6 for (i = 1; i <= 3; i++) {
- 6 sing()
- }
- }
+ # Rule(s)
- 5 {
- 5 if (/foo/) { # 2
- 2 print "if is true"
- 3 } else {
- 3 print "else is true"
- }
- }
+ 5 /foo/ { # 2
+ 2 print "matched /foo/, gosh"
+ 6 for (i = 1; i <= 3; i++) {
+ 6 sing()
+ }
+ }
- # END block(s)
+ 5 {
+ 5 if (/foo/) { # 2
+ 2 print "if is true"
+ 3 } else {
+ 3 print "else is true"
+ }
+ }
- END {
- 1 print "First END rule"
- 1 print "Second END rule"
- }
+ # END block(s)
- # Functions, listed alphabetically
+ END {
+ 1 print "First END rule"
+ }
+
+ END {
+ 1 print "Second END rule"
+ }
- 6 function sing(dummy)
- {
- 6 print "I gotta be me!"
- }
+
+ # Functions, listed alphabetically
+
+ 6 function sing(dummy)
+ {
+ 6 print "I gotta be me!"
+ }
This example illustrates many of the basic features of profiling
output. They are as follows:
- * The program is printed in the order `BEGIN' rule, `BEGINFILE' rule,
- pattern/action rules, `ENDFILE' rule, `END' rule and functions,
- listed alphabetically. Multiple `BEGIN' and `END' rules are
- merged together, as are multiple `BEGINFILE' and `ENDFILE' rules.
+ * The program is printed in the order `BEGIN' rules, `BEGINFILE'
+ rules, pattern/action rules, `ENDFILE' rules, `END' rules and
+ functions, listed alphabetically. Multiple `BEGIN' and `END'
+ rules retain their separate identities, as do multiple `BEGINFILE'
+ and `ENDFILE' rules.
* Pattern-action rules have two counts. The first count, to the
left of the rule, shows how many times the rule's pattern was
@@ -18676,8 +18810,7 @@ you typed when you wrote it. This is because `gawk' creates the
profiled version by "pretty printing" its internal representation of
the program. The advantage to this is that `gawk' can produce a
standard representation. The disadvantage is that all source-code
-comments are lost, as are the distinctions among multiple `BEGIN',
-`END', `BEGINFILE', and `ENDFILE' rules. Also, things such as:
+comments are lost. Also, things such as:
/foo/
@@ -18736,6 +18869,9 @@ by the `Ctrl-<\>' key.
called this way, `gawk' "pretty prints" the program into `awkprof.out',
without any execution counts.
+ NOTE: The `--pretty-print' option still runs your program. This
+ will change in the next major release.
+

File: gawk.info, Node: Internationalization, Next: Debugger, Prev: Advanced Features, Up: Top
@@ -19029,9 +19165,9 @@ File: gawk.info, Node: Translator i18n, Next: I18N Example, Prev: Programmer
===============================
Once a program's translatable strings have been marked, they must be
-extracted to create the initial `.po' file. As part of translation, it
-is often helpful to rearrange the order in which arguments to `printf'
-are output.
+extracted to create the initial `.pot' file. As part of translation,
+it is often helpful to rearrange the order in which arguments to
+`printf' are output.
`gawk''s `--gen-pot' command-line option extracts the messages and
is discussed next. After that, `printf''s ability to rearrange the
@@ -19104,7 +19240,7 @@ second:
$ gawk 'BEGIN {
> string = "Dont Panic"
- > printf _"%2$d characters live in \"%1$s\"\n",
+ > printf "%2$d characters live in \"%1$s\"\n",
> string, length(string)
> }'
-| 10 characters live in "Dont Panic"
@@ -19129,7 +19265,7 @@ precision capability:
`gawk' does not allow you to mix regular format specifiers and those
with positional specifiers in the same string:
- $ gawk 'BEGIN { printf _"%d %3$s\n", 1, 2, "hi" }'
+ $ gawk 'BEGIN { printf "%d %3$s\n", 1, 2, "hi" }'
error--> gawk: cmd. line:1: fatal: must use `count$' on all formats or none
NOTE: There are some pathological cases that `gawk' may fail to
@@ -19491,7 +19627,7 @@ File: gawk.info, Node: Debugger Invocation, Next: Finding The Bug, Up: Sample
14.2.1 How to Start the Debugger
--------------------------------
-Starting the debugger is almost exactly like running `awk', except you
+Starting the debugger is almost exactly like running `gawk', except you
have to pass an additional option `--debug' or the corresponding short
option `-D'. The file(s) containing the program and any supporting
code are given on the command line as arguments to one or more `-f'
@@ -19604,8 +19740,8 @@ our test input above. Let's look at `NR':
-| NR = number (2)
So we can see that `are_equal()' was only called for the second record
-of the file. Of course, this is because our program contained a rule
-for `NR == 1':
+of the file. Of course, this is because our program contains a rule for
+`NR == 1':
NR == 1 {
last = $0
@@ -20378,8 +20514,7 @@ File: gawk.info, Node: Arbitrary Precision Arithmetic, Next: Dynamic Extension
authority; they tend to believe that all digits of a printed
answer are significant. Disillusioned computer users have just the
opposite approach; they are constantly afraid that their answers
- are almost meaningless.
- Donald Knuth(1)
+ are almost meaningless.(1) -- Donald Knuth
This major node discusses issues that you may encounter when
performing arithmetic. It begins by discussing some of the general
@@ -20508,7 +20643,7 @@ automatic conversion (via `CONVFMT') and from printing (via `OFMT').
what the default string representations show.
`CONVFMT''s default value is `"%.6g"', which yields a value with at
-least six significant digits. For some applications, you might want to
+most six significant digits. For some applications, you might want to
change it to specify more precision. On most modern machines, most of
the time, 17 digits is enough to capture a floating-point number's
value exactly.(1)
@@ -21047,11 +21182,15 @@ need it.
arbitrary precision arithmetic. The easiest way to find out is to look
at the output of the following command:
- $ gawk --version
- -| GNU Awk 4.1.0, API: 1.0 (GNU MPFR 3.1.0-p3, GNU MP 5.0.2)
- -| Copyright (C) 1989, 1991-2013 Free Software Foundation.
+ $ ./gawk --version
+ -| GNU Awk 4.1.1, API: 1.1 (GNU MPFR 3.1.0-p3, GNU MP 5.0.2)
+ -| Copyright (C) 1989, 1991-2014 Free Software Foundation.
...
+(You may see different version numbers than what's shown here. That's
+OK; what's important is to see that GNU MPFR and GNU MP are listed in
+the output.)
+
`gawk' uses the GNU MPFR (http://www.mpfr.org) and GNU MP
(http://gmplib.org) (GMP) libraries for arbitrary precision arithmetic
on numbers. So if you do not see the names of these libraries in the
@@ -21260,9 +21399,7 @@ File: gawk.info, Node: Changing Precision, Next: Exact Arithmetic, Prev: Floa
them to full membership of the high-precision club, or do we treat
them and all their associates as second-class citizens? Sometimes
the first course is proper, sometimes the second, and it takes
- careful analysis to tell which.
-
- Dirk Laurie(1)
+ careful analysis to tell which.(1) -- Dirk Laurie
`gawk' does not implicitly modify the precision of any previously
computed results when the working precision is changed with an
@@ -21423,7 +21560,7 @@ floating-point value to begin with:
gawk -M 'BEGIN { n = 13.0; print n % 2.0 }'
- Note that for the particular example above, there is likely best to
+ Note that for the particular example above, it is likely best to
just use the following:
gawk -M 'BEGIN { n = 13; print n % 2 }'
@@ -21627,6 +21764,7 @@ This (rather large) minor node describes the API in detail.
* Extension API Functions Introduction:: Introduction to the API functions.
* General Data Types:: The data types.
* Requesting Values:: How to get a value.
+* Memory Allocation Functions:: Functions for allocating memory.
* Constructor Functions:: Functions for creating values.
* Registration Functions:: Functions to register things with
`gawk'.
@@ -21675,6 +21813,8 @@ operations:
* Symbol table access: retrieving a global variable, creating one,
or changing one.
+ * Allocating, reallocating, and releasing memory.
+
* Creating and releasing cached values; this provides an efficient
way to use values for multiple variables and can be a big
performance win.
@@ -21703,10 +21843,8 @@ operations:
`EOF' `<stdio.h>'
`FILE' `<stdio.h>'
`NULL' `<stddef.h>'
- `malloc()' `<stdlib.h>'
`memcpy()' `<string.h>'
`memset()' `<string.h>'
- `realloc()' `<stdlib.h>'
`size_t' `<sys/types.h>'
`struct stat' `<sys/stat.h>'
@@ -21732,7 +21870,9 @@ operations:
* All pointers filled in by `gawk' are to memory managed by `gawk'
and should be treated by the extension as read-only. Memory for
_all_ strings passed into `gawk' from the extension _must_ come
- from `malloc()' and is managed by `gawk' from then on.
+ from calling the API-provided function pointers `api_malloc()',
+ `api_calloc()' or `api_realloc()', and is managed by `gawk' from
+ then on.
* The API defines several simple `struct's that map values as seen
from `awk'. A value can be a `double', a string, or an array (as
@@ -21770,12 +21910,11 @@ File: gawk.info, Node: General Data Types, Next: Requesting Values, Prev: Ext
16.4.2 General Purpose Data Types
---------------------------------
- I have a true love/hate relationship with unions.
- Arnold Robbins
+ I have a true love/hate relationship with unions. -- Arnold
+ Robbins
That's the thing about unions: the compiler will arrange things so
- they can accommodate both love and hate.
- Chet Ramey
+ they can accommodate both love and hate. -- Chet Ramey
The extension API defines a number of simple types and structures
for general purpose use. Additional, more specialized, data structures
@@ -21794,11 +21933,8 @@ that use them.
allowing `gawk' to use them as it needs to.
`typedef enum awk_bool {'
-
` awk_false = 0,'
-
` awk_true'
-
`} awk_bool_t;'
A simple boolean type.
@@ -21808,7 +21944,9 @@ that use them.
`} awk_string_t;'
This represents a mutable string. `gawk' owns the memory pointed
to if it supplied the value. Otherwise, it takes ownership of the
- memory pointed to. *Such memory must come from `malloc()'!*
+ memory pointed to. *Such memory must come from calling the
+ API-provided function pointers `api_malloc()', `api_calloc()', or
+ `api_realloc()'!*
As mentioned earlier, strings are maintained using the current
multibyte encoding.
@@ -21913,7 +22051,7 @@ the value.
See also the entry for "Cookie" in the *note Glossary::.

-File: gawk.info, Node: Requesting Values, Next: Constructor Functions, Prev: General Data Types, Up: Extension API Description
+File: gawk.info, Node: Requesting Values, Next: Memory Allocation Functions, Prev: General Data Types, Up: Extension API Description
16.4.3 Requesting Values
------------------------
@@ -21946,46 +22084,43 @@ Requested: Scalar Scalar Scalar false false
Table 16.1: Value Types Returned

-File: gawk.info, Node: Constructor Functions, Next: Registration Functions, Prev: Requesting Values, Up: Extension API Description
+File: gawk.info, Node: Memory Allocation Functions, Next: Constructor Functions, Prev: Requesting Values, Up: Extension API Description
-16.4.4 Constructor Functions and Convenience Macros
----------------------------------------------------
+16.4.4 Memory Allocation Functions and Convenience Macros
+---------------------------------------------------------
-The API provides a number of "constructor" functions for creating
-string and numeric values, as well as a number of convenience macros.
-This node presents them all as function prototypes, in the way that
-extension code would use them.
+The API provides a number of "memory allocation" functions for
+allocating memory that can be passed to `gawk', as well as a number of
+convenience macros.
-`static inline awk_value_t *'
-`make_const_string(const char *string, size_t length, awk_value_t *result)'
- This function creates a string value in the `awk_value_t' variable
- pointed to by `result'. It expects `string' to be a C string
- constant (or other string data), and automatically creates a
- _copy_ of the data for storage in `result'. It returns `result'.
+`void *gawk_malloc(size_t size);'
+ Call `gawk'-provided `api_malloc()' to allocate storage that may
+ be passed to `gawk'.
-`static inline awk_value_t *'
-`make_malloced_string(const char *string, size_t length, awk_value_t *result)'
- This function creates a string value in the `awk_value_t' variable
- pointed to by `result'. It expects `string' to be a `char *' value
- pointing to data previously obtained from `malloc()'. The idea here
- is that the data is passed directly to `gawk', which assumes
- responsibility for it. It returns `result'.
+`void *gawk_calloc(size_t nmemb, size_t size);'
+ Call `gawk'-provided `api_calloc()' to allocate storage that may
+ be passed to `gawk'.
-`static inline awk_value_t *'
-`make_null_string(awk_value_t *result)'
- This specialized function creates a null string (the "undefined"
- value) in the `awk_value_t' variable pointed to by `result'. It
- returns `result'.
+`void *gawk_realloc(void *ptr, size_t size);'
+ Call `gawk'-provided `api_realloc()' to allocate storage that may
+ be passed to `gawk'.
-`static inline awk_value_t *'
-`make_number(double num, awk_value_t *result)'
- This function simply creates a numeric value in the `awk_value_t'
- variable pointed to by `result'.
+`void gawk_free(void *ptr);'
+ Call `gawk'-provided `api_free()' to release storage that was
+ allocated with `gawk_malloc()', `gawk_calloc()' or
+ `gawk_realloc()'.
- Two convenience macros may be used for allocating storage from
-`malloc()' and `realloc()'. If the allocation fails, they cause `gawk'
-to exit with a fatal error message. They should be used as if they were
-procedure calls that do not return a value.
+ The API has to provide these functions because it is possible for an
+extension to be compiled and linked against a different version of the
+C library than was used for the `gawk' executable.(1) If `gawk' were to
+use its version of `free()' when the memory came from an unrelated
+version of `malloc()', unexpected behavior would likely result.
+
+ Two convenience macros may be used for allocating storage from the
+API-provided function pointers `api_malloc()' and `api_realloc()'. If
+the allocation fails, they cause `gawk' to exit with a fatal error
+message. They should be used as if they were procedure calls that do
+not return a value.
`#define emalloc(pointer, type, size, message) ...'
The arguments to this macro are as follows:
@@ -21994,7 +22129,7 @@ procedure calls that do not return a value.
`type'
The type of the pointer variable, used to create a cast for
- the call to `malloc()'.
+ the call to `api_malloc()'.
`size'
The total number of bytes to be allocated.
@@ -22014,14 +22149,57 @@ procedure calls that do not return a value.
make_malloced_string(message, strlen(message), & result);
`#define erealloc(pointer, type, size, message) ...'
- This is like `emalloc()', but it calls `realloc()', instead of
- `malloc()'. The arguments are the same as for the `emalloc()'
+ This is like `emalloc()', but it calls `api_realloc()', instead of
+ `api_malloc()'. The arguments are the same as for the `emalloc()'
macro.
+ ---------- Footnotes ----------
+
+ (1) This is more common on MS-Windows systems, but can happen on
+Unix-like systems as well.
+
+
+File: gawk.info, Node: Constructor Functions, Next: Registration Functions, Prev: Memory Allocation Functions, Up: Extension API Description
+
+16.4.5 Constructor Functions
+----------------------------
+
+The API provides a number of "constructor" functions for creating
+string and numeric values, as well as a number of convenience macros.
+This node presents them all as function prototypes, in the way that
+extension code would use them.
+
+`static inline awk_value_t *'
+`make_const_string(const char *string, size_t length, awk_value_t *result)'
+ This function creates a string value in the `awk_value_t' variable
+ pointed to by `result'. It expects `string' to be a C string
+ constant (or other string data), and automatically creates a
+ _copy_ of the data for storage in `result'. It returns `result'.
+
+`static inline awk_value_t *'
+`make_malloced_string(const char *string, size_t length, awk_value_t *result)'
+ This function creates a string value in the `awk_value_t' variable
+ pointed to by `result'. It expects `string' to be a `char *' value
+ pointing to data previously obtained from the api-provided
+ functions `api_malloc()', `api_calloc()' or `api_realloc()'. The
+ idea here is that the data is passed directly to `gawk', which
+ assumes responsibility for it. It returns `result'.
+
+`static inline awk_value_t *'
+`make_null_string(awk_value_t *result)'
+ This specialized function creates a null string (the "undefined"
+ value) in the `awk_value_t' variable pointed to by `result'. It
+ returns `result'.
+
+`static inline awk_value_t *'
+`make_number(double num, awk_value_t *result)'
+ This function simply creates a numeric value in the `awk_value_t'
+ variable pointed to by `result'.
+

File: gawk.info, Node: Registration Functions, Next: Printing Messages, Prev: Constructor Functions, Up: Extension API Description
-16.4.5 Registration Functions
+16.4.6 Registration Functions
-----------------------------
This minor node describes the API functions for registering parts of
@@ -22039,7 +22217,7 @@ your extension with `gawk'.

File: gawk.info, Node: Extension Functions, Next: Exit Callback Functions, Up: Registration Functions
-16.4.5.1 Registering An Extension Function
+16.4.6.1 Registering An Extension Function
..........................................
Extension functions are described by the following record:
@@ -22064,8 +22242,10 @@ Extension functions are described by the following record:
`awk_value_t *(*function)(int num_actual_args, awk_value_t *result);'
This is a pointer to the C function that provides the desired
functionality. The function must fill in the result with either a
- number or a string. `awk' takes ownership of any string memory.
- As mentioned earlier, string memory *must* come from `malloc()'.
+ number or a string. `gawk' takes ownership of any string memory.
+ As mentioned earlier, string memory *must* come from the
+ api-provided functions `api_malloc()', `api_calloc()' or
+ `api_realloc()'.
The `num_actual_args' argument tells the C function how many
actual parameters were passed from the calling `awk' code.
@@ -22091,7 +22271,7 @@ register it with `gawk' using this API function:

File: gawk.info, Node: Exit Callback Functions, Next: Extension Version String, Prev: Extension Functions, Up: Registration Functions
-16.4.5.2 Registering An Exit Callback Function
+16.4.6.2 Registering An Exit Callback Function
..............................................
An "exit callback" function is a function that `gawk' calls before it
@@ -22120,7 +22300,7 @@ order--that is, in the reverse order in which they are registered with

File: gawk.info, Node: Extension Version String, Next: Input Parsers, Prev: Exit Callback Functions, Up: Registration Functions
-16.4.5.3 Registering An Extension Version String
+16.4.6.3 Registering An Extension Version String
................................................
You can register a version string which indicates the name and version
@@ -22136,7 +22316,7 @@ invoked with the `--version' option.

File: gawk.info, Node: Input Parsers, Next: Output Wrappers, Prev: Extension Version String, Up: Registration Functions
-16.4.5.4 Customized Input Parsers
+16.4.6.4 Customized Input Parsers
.................................
By default, `gawk' reads text files as its input. It uses the value of
@@ -22358,7 +22538,7 @@ whether or not to activate an input parser (*note BEGINFILE/ENDFILE::).

File: gawk.info, Node: Output Wrappers, Next: Two-way processors, Prev: Input Parsers, Up: Registration Functions
-16.4.5.5 Customized Output Wrappers
+16.4.6.5 Customized Output Wrappers
...................................
An "output wrapper" is the mirror image of an input parser. It allows
@@ -22465,7 +22645,7 @@ normally.

File: gawk.info, Node: Two-way processors, Prev: Output Wrappers, Up: Registration Functions
-16.4.5.6 Customized Two-way Processors
+16.4.6.6 Customized Two-way Processors
......................................
A "two-way processor" combines an input parser and an output wrapper for
@@ -22518,7 +22698,7 @@ can take this" and "take over for this" functions,

File: gawk.info, Node: Printing Messages, Next: Updating `ERRNO', Prev: Registration Functions, Up: Extension API Description
-16.4.6 Printing Messages
+16.4.7 Printing Messages
------------------------
You can print different kinds of warning messages from your extension,
@@ -22549,7 +22729,7 @@ the pity.

File: gawk.info, Node: Updating `ERRNO', Next: Accessing Parameters, Prev: Printing Messages, Up: Extension API Description
-16.4.7 Updating `ERRNO'
+16.4.8 Updating `ERRNO'
-----------------------
The following functions allow you to update the `ERRNO' variable:
@@ -22570,7 +22750,7 @@ The following functions allow you to update the `ERRNO' variable:

File: gawk.info, Node: Accessing Parameters, Next: Symbol Table Access, Prev: Updating `ERRNO', Up: Extension API Description
-16.4.8 Accessing and Updating Parameters
+16.4.9 Accessing and Updating Parameters
----------------------------------------
Two functions give you access to the arguments (parameters) passed to
@@ -22596,8 +22776,8 @@ your extension function. They are:

File: gawk.info, Node: Symbol Table Access, Next: Array Manipulation, Prev: Accessing Parameters, Up: Extension API Description
-16.4.9 Symbol Table Access
---------------------------
+16.4.10 Symbol Table Access
+---------------------------
Two sets of routines provide access to global variables, and one set
allows you to create and release cached values.
@@ -22611,8 +22791,8 @@ allows you to create and release cached values.

File: gawk.info, Node: Symbol table by name, Next: Symbol table by cookie, Up: Symbol Table Access
-16.4.9.1 Variable Access and Update by Name
-...........................................
+16.4.10.1 Variable Access and Update by Name
+............................................
The following routines provide the ability to access and update global
`awk'-level variables by name. In compiler terminology, identifiers of
@@ -22644,11 +22824,16 @@ termed a "symbol table".
However, with the exception of the `PROCINFO' array, an extension
cannot change any of those variables.
+ NOTE: It is possible for the lookup of `PROCINFO' to fail. This
+ happens if the `awk' program being run does not reference
+ `PROCINFO'; in this case `gawk' doesn't bother to create the array
+ and populate it.
+

File: gawk.info, Node: Symbol table by cookie, Next: Cached values, Prev: Symbol table by name, Up: Symbol Table Access
-16.4.9.2 Variable Access and Update by Cookie
-.............................................
+16.4.10.2 Variable Access and Update by Cookie
+..............................................
A "scalar cookie" is an opaque handle that provides access to a global
variable or array. It is an optimization that avoids looking up
@@ -22760,8 +22945,8 @@ like this:

File: gawk.info, Node: Cached values, Prev: Symbol table by cookie, Up: Symbol Table Access
-16.4.9.3 Creating and Using Cached Values
-.........................................
+16.4.10.3 Creating and Using Cached Values
+..........................................
The routines in this section allow you to create and release cached
values. As with scalar cookies, in theory, cached values are not
@@ -22771,8 +22956,9 @@ variables using `sym_update()' or `sym_update_scalar()', as you like.
However, you can understand the point of cached values if you
remember that _every_ string value's storage _must_ come from
-`malloc()'. If you have 20 variables, all of which have the same
-string value, you must create 20 identical copies of the string.(1)
+`api_malloc()', `api_calloc()' or `api_realloc()'. If you have 20
+variables, all of which have the same string value, you must create 20
+identical copies of the string.(1)
It is clearly more efficient, if possible, to create a value once,
and then tell `gawk' to reuse the value for multiple variables. That is
@@ -22855,7 +23041,7 @@ using `release_value()'.

File: gawk.info, Node: Array Manipulation, Next: Extension API Variables, Prev: Symbol Table Access, Up: Extension API Description
-16.4.10 Array Manipulation
+16.4.11 Array Manipulation
--------------------------
The primary data structure(1) in `awk' is the associative array (*note
@@ -22882,7 +23068,7 @@ arrays of arrays (*note General Data Types::).

File: gawk.info, Node: Array Data Types, Next: Array Functions, Up: Array Manipulation
-16.4.10.1 Array Data Types
+16.4.11.1 Array Data Types
..........................
The data types associated with arrays are listed below.
@@ -22949,7 +23135,7 @@ overuse this term.

File: gawk.info, Node: Array Functions, Next: Flattening Arrays, Prev: Array Data Types, Up: Array Manipulation
-16.4.10.2 Array Functions
+16.4.11.2 Array Functions
.........................
The following functions relate to individual array elements.
@@ -22975,7 +23161,8 @@ The following functions relate to individual array elements.
strings (*note Conversion::); thus using integral values is safest.
As with _all_ strings passed into `gawk' from an extension, the
- string value of `index' must come from `malloc()', and `gawk'
+ string value of `index' must come from the API-provided functions
+ `api_malloc()', `api_calloc()' or `api_realloc()' and `gawk'
releases the storage.
`awk_bool_t set_array_element(awk_array_t a_cookie,'
@@ -23026,7 +23213,7 @@ The following functions relate to individual array elements.

File: gawk.info, Node: Flattening Arrays, Next: Creating Arrays, Prev: Array Functions, Up: Array Manipulation
-16.4.10.3 Working With All The Elements of an Array
+16.4.11.3 Working With All The Elements of an Array
...................................................
To "flatten" an array is create a structure that represents the full
@@ -23200,7 +23387,7 @@ return value to success, and returns:

File: gawk.info, Node: Creating Arrays, Prev: Flattening Arrays, Up: Array Manipulation
-16.4.10.4 How To Create and Populate Arrays
+16.4.11.4 How To Create and Populate Arrays
...........................................
Besides working with arrays created by `awk' code, you can create
@@ -23339,7 +23526,7 @@ environment variable.)

File: gawk.info, Node: Extension API Variables, Next: Extension API Boilerplate, Prev: Array Manipulation, Up: Extension API Description
-16.4.11 API Variables
+16.4.12 API Variables
---------------------
The API provides two sets of variables. The first provides information
@@ -23356,7 +23543,7 @@ information about how `gawk' was invoked.

File: gawk.info, Node: Extension Versioning, Next: Extension API Informational Variables, Up: Extension API Variables
-16.4.11.1 API Version Constants and Variables
+16.4.12.1 API Version Constants and Variables
.............................................
The API provides both a "major" and a "minor" version number. The API
@@ -23405,7 +23592,7 @@ Boilerplate::).

File: gawk.info, Node: Extension API Informational Variables, Prev: Extension Versioning, Up: Extension API Variables
-16.4.11.2 Informational Variables
+16.4.12.2 Informational Variables
.................................
The API provides access to several variables that describe whether the
@@ -23441,7 +23628,7 @@ change during execution.

File: gawk.info, Node: Extension API Boilerplate, Prev: Extension API Variables, Up: Extension API Description
-16.4.12 Boilerplate Code
+16.4.13 Boilerplate Code
------------------------
As mentioned earlier (*note Extension Mechanism Outline::), the function
@@ -23558,8 +23745,7 @@ File: gawk.info, Node: Extension Example, Next: Extension Samples, Prev: Find
16.6 Example: Some File Functions
=================================
- No matter where you go, there you are.
- Buckaroo Bonzai
+ No matter where you go, there you are. -- Buckaroo Bonzai
Two useful functions that are not in `awk' are `chdir()' (so that an
`awk' program can change its directory) and `stat()' (so that an `awk'
@@ -23960,7 +24146,7 @@ declarations and argument checking:
awk_array_t array;
int ret;
struct stat sbuf;
- /* default is stat() */
+ /* default is lstat() */
int (*statfunc)(const char *path, struct stat *sbuf) = lstat;
assert(result != NULL);
@@ -24249,7 +24435,7 @@ follows: The usage is:
The `fts()' function provides a hook to the C library `fts()'
routines for traversing file hierarchies. Instead of returning data
-about one file at a time in a stream, it fills in a multi-dimensional
+about one file at a time in a stream, it fills in a multidimensional
array with data about each file and directory encountered in the
requested hierarchies.
@@ -24344,7 +24530,7 @@ Otherwise it returns -1.
lack of a comparison function, since `gawk' already provides
powerful array sorting facilities. While an `fts_read()'-like
interface could have been provided, this felt less natural than
- simply creating a multi-dimensional array to represent the file
+ simply creating a multidimensional array to represent the file
hierarchy and its information.
See `test/fts.awk' in the `gawk' distribution for an example.
@@ -24358,12 +24544,16 @@ File: gawk.info, Node: Extension Sample Fnmatch, Next: Extension Sample Fork,
This extension provides an interface to the C library `fnmatch()'
function. The usage is:
- @load "fnmatch"
+`@load "fnmatch"'
+ This is how you load the extension.
- result = fnmatch(pattern, string, flags)
+`result = fnmatch(pattern, string, flags)'
+ The return value is zero on success, `FNM_NOMATCH' if the string
+ did not match the pattern, or a different non-zero value if an
+ error occurred.
- The `fnmatch' extension adds a single function named `fnmatch()',
-one constant (`FNM_NOMATCH'), and an array of flag values named `FNM'.
+ Besides the `fnmatch()' function, the `fnmatch' extension adds one
+constant (`FNM_NOMATCH'), and an array of flag values named `FNM'.
The arguments to `fnmatch()' are:
@@ -24377,10 +24567,6 @@ one constant (`FNM_NOMATCH'), and an array of flag values named `FNM'.
Either zero, or the bitwise OR of one or more of the flags in the
`FNM' array.
- The return value is zero on success, `FNM_NOMATCH' if the string did
-not match the pattern, or a different non-zero value if an error
-occurred.
-
The flags are follows:
`FNM["CASEFOLD"]' Corresponds to the `FNM_CASEFOLD' flag as defined in
@@ -24416,14 +24602,14 @@ The `fork' extension adds three functions, as follows.
This is how you load the extension.
`pid = fork()'
- This function creates a new process. The return value is the zero
- in the child and the process-id number of the child in the parent,
- or -1 upon error. In the latter case, `ERRNO' indicates the
- problem. In the child, `PROCINFO["pid"]' and `PROCINFO["ppid"]'
- are updated to reflect the correct values.
+ This function creates a new process. The return value is zero in
+ the child and the process-ID number of the child in the parent, or
+ -1 upon error. In the latter case, `ERRNO' indicates the problem.
+ In the child, `PROCINFO["pid"]' and `PROCINFO["ppid"]' are updated
+ to reflect the correct values.
`ret = waitpid(pid)'
- This function takes a numeric argument, which is the process-id to
+ This function takes a numeric argument, which is the process-ID to
wait for. The return value is that of the `waitpid()' system call.
`ret = wait()'
@@ -24656,7 +24842,8 @@ File: gawk.info, Node: Extension Sample Readfile, Next: Extension Sample API T
16.7.10 Reading An Entire File
------------------------------
-The `readfile' extension adds a single function named `readfile()':
+The `readfile' extension adds a single function named `readfile()', and
+an input parser:
`@load "readfile"'
This is how you load the extension.
@@ -24666,6 +24853,12 @@ The `readfile' extension adds a single function named `readfile()':
a string containing the entire contents of the requested file.
Upon error, the function returns the empty string and sets `ERRNO'.
+`BEGIN { PROCINFO["readfile"] = 1 }'
+ In addition, the extension adds an input parser that is activated
+ if `PROCINFO["readfile"]' exists. When activated, each input file
+ is returned in its entirety as `$0'. `RT' is set to the null
+ string.
+
Here is an example:
@load "readfile"
@@ -24731,11 +24924,13 @@ provides a number of `gawk' extensions, including one for processing
XML files. This is the evolution of the original `xgawk' (XML `gawk')
project.
- As of this writing, there are four extensions:
+ As of this writing, there are five extensions:
* XML parser extension, using the Expat
(http://expat.sourceforge.net) XML parsing library.
+ * PDF extension.
+
* PostgreSQL extension.
* GD graphics library extension.
@@ -24815,6 +25010,7 @@ you can find more information.
`awk'.
* POSIX/GNU:: The extensions in `gawk' not in POSIX
`awk'.
+* Feature History:: The history of the features in `gawk'.
* Common Extensions:: Common Extensions Summary.
* Ranges and Locales:: How locales used to affect regexp ranges.
* Contributors:: The major contributors to `gawk'.
@@ -24882,7 +25078,7 @@ the changes, with cross-references to further details:
* Multiple `BEGIN' and `END' rules (*note BEGIN/END::).
- * Multidimensional arrays (*note Multi-dimensional::).
+ * Multidimensional arrays (*note Multidimensional::).

File: gawk.info, Node: SVR4, Next: POSIX, Prev: V7/SVR3.1, Up: Language History
@@ -24993,7 +25189,7 @@ in his version of `awk'.
available in his `awk'.

-File: gawk.info, Node: POSIX/GNU, Next: Common Extensions, Prev: BTL, Up: Language History
+File: gawk.info, Node: POSIX/GNU, Next: Feature History, Prev: BTL, Up: Language History
A.5 Extensions in `gawk' Not in POSIX `awk'
===========================================
@@ -25145,12 +25341,397 @@ the current version of `gawk'.
- Prestandard VAX C compiler for VAX/VMS
+ - GCC for VAX and Alpha has not been tested for a while.
+

-File: gawk.info, Node: Common Extensions, Next: Ranges and Locales, Prev: POSIX/GNU, Up: Language History
+File: gawk.info, Node: Feature History, Next: Common Extensions, Prev: POSIX/GNU, Up: Language History
+
+A.6 History of `gawk' Features
+==============================
+
+This minor node describes the features in `gawk' over and above those
+in POSIX `awk', in the order they were added to `gawk'.
+
+ Version 2.10 of `gawk' introduced the following features:
+
+ * The `AWKPATH' environment variable for specifying a path search for
+ the `-f' command-line option (*note Options::).
+
+ * The `IGNORECASE' variable and its effects (*note
+ Case-sensitivity::).
+
+ * The `/dev/stdin', `/dev/stdout', `/dev/stderr' and `/dev/fd/N'
+ special file names (*note Special Files::).
+
+ Version 2.13 of `gawk' introduced the following features:
+
+ * The `FIELDWIDTHS' variable and its effects (*note Constant Size::).
+
+ * The `systime()' and `strftime()' built-in functions for obtaining
+ and printing timestamps (*note Time Functions::).
+
+ * Additional command-line options (*note Options::):
+
+ - The `-W lint' option to provide error and portability checking
+ for both the source code and at runtime.
+
+ - The `-W compat' option to turn off the GNU extensions.
+
+ - The `-W posix' option for full POSIX compliance.
+
+ Version 2.14 of `gawk' introduced the following feature:
+
+ * The `next file' statement for skipping to the next data file
+ (*note Nextfile Statement::).
+
+ Version 2.15 of `gawk' introduced the following features:
+
+ * New variables (*note Built-in Variables::):
+
+ - `ARGIND', which tracks the movement of `FILENAME' through
+ `ARGV'.
+
+ - `ERRNO', which contains the system error message when
+ `getline' returns -1 or `close()' fails.
+
+ * The `/dev/pid', `/dev/ppid', `/dev/pgrpid', and `/dev/user'
+ special file names. These have since been removed.
+
+ * The ability to delete all of an array at once with `delete ARRAY'
+ (*note Delete::).
+
+ * Command line option changes (*note Options::):
+
+ - The ability to use GNU-style long-named options that start
+ with `--'.
+
+ - The `--source' option for mixing command-line and library-file
+ source code.
+
+ Version 3.0 of `gawk' introduced the following features:
+
+ * New or changed variables:
+
+ - `IGNORECASE' changed, now applying to string comparison as
+ well as regexp operations (*note Case-sensitivity::).
+
+ - `RT', which contains the input text that matched `RS' (*note
+ Records::).
+
+ * Full support for both POSIX and GNU regexps (*note Regexp::).
+
+ * The `gensub()' function for more powerful text manipulation (*note
+ String Functions::).
+
+ * The `strftime()' function acquired a default time format, allowing
+ it to be called with no arguments (*note Time Functions::).
+
+ * The ability for `FS' and for the third argument to `split()' to be
+ null strings (*note Single Character Fields::).
+
+ * The ability for `RS' to be a regexp (*note Records::).
+
+ * The `next file' statement became `nextfile' (*note Nextfile
+ Statement::).
+
+ * The `fflush()' function from the Bell Laboratories research
+ version of `awk' (*note I/O Functions::).
+
+ * New command line options:
+
+ - The `--lint-old' option to warn about constructs that are not
+ available in the original Version 7 Unix version of `awk'
+ (*note V7/SVR3.1::).
+
+ - The `-m' option from the Bell Laboratories research version
+ of `awk' This was later removed.
+
+ - The `--re-interval' option to provide interval expressions in
+ regexps (*note Regexp Operators::).
+
+ - The `--traditional' option was added as a better name for
+ `--compat' (*note Options::).
+
+ * The use of GNU Autoconf to control the configuration process
+ (*note Quick Installation::).
+
+ * Amiga support.
+
+
+ Version 3.1 of `gawk' introduced the following features:
+
+ * New variables (*note Built-in Variables::):
+
+ - `BINMODE', for non-POSIX systems, which allows binary I/O for
+ input and/or output files (*note PC Using::).
+
+ - `LINT', which dynamically controls lint warnings.
+
+ - `PROCINFO', an array for providing process-related
+ information.
+
+ - `TEXTDOMAIN', for setting an application's
+ internationalization text domain (*note
+ Internationalization::).
+
+ * The ability to use octal and hexadecimal constants in `awk'
+ program source code (*note Nondecimal-numbers::).
+
+ * The `|&' operator for two-way I/O to a coprocess (*note Two-way
+ I/O::).
+
+ * The `/inet' special files for TCP/IP networking using `|&' (*note
+ TCP/IP Networking::).
+
+ * The optional second argument to `close()' that allows closing one
+ end of a two-way pipe to a coprocess (*note Two-way I/O::).
+
+ * The optional third argument to the `match()' function for
+ capturing text-matching subexpressions within a regexp (*note
+ String Functions::).
+
+ * Positional specifiers in `printf' formats for making translations
+ easier (*note Printf Ordering::).
+
+ * A number of new built-in functions:
+
+ - The `asort()' and `asorti()' functions for sorting arrays
+ (*note Array Sorting::).
+
+ - The `bindtextdomain()', `dcgettext()' and `dcngettext()'
+ functions for internationalization (*note Programmer i18n::).
+
+ - The `extension()' function and the ability to add new
+ built-in functions dynamically (*note Dynamic Extensions::).
+
+ - The `mktime()' function for creating timestamps (*note Time
+ Functions::).
+
+ - The `and()', `or()', `xor()', `compl()', `lshift()',
+ `rshift()', and `strtonum()' functions (*note Bitwise
+ Functions::).
+
+ * The support for `next file' as two words was removed completely
+ (*note Nextfile Statement::).
+
+ * Additional commnd line options (*note Options::):
+
+ - The `--dump-variables' option to print a list of all global
+ variables.
+
+ - The `--exec' option, for use in CGI scripts.
+
+ - The `--gen-po' command-line option and the use of a leading
+ underscore to mark strings that should be translated (*note
+ String Extraction::).
+
+ - The `--non-decimal-data' option to allow non-decimal input
+ data (*note Nondecimal Data::).
+
+ - The `--profile' option and `pgawk', the profiling version of
+ `gawk', for producing execution profiles of `awk' programs
+ (*note Profiling::).
+
+ - The `--use-lc-numeric' option to force `gawk' to use the
+ locale's decimal point for parsing input data (*note
+ Conversion::).
+
+ * The use of GNU Automake to help in standardizing the configuration
+ process (*note Quick Installation::).
+
+ * The use of GNU `gettext' for `gawk''s own message output (*note
+ Gawk I18N::).
-A.6 Common Extensions Summary
+ * BeOS support. This was later removed.
+
+ * Tandem support. This was later removed.
+
+ * The Atari port became officially unsupported.
+
+ * The source code changed to use ISO C standard-style function
+ definitions.
+
+ * POSIX compliance for `sub()' and `gsub()' (*note Gory Details::).
+
+ * The `length()' function was extended to accept an array argument
+ and return the number of elements in the array (*note String
+ Functions::).
+
+ * The `strftime()' function acquired a third argument to enable
+ printing times as UTC (*note Time Functions::).
+
+ Version 4.0 of `gawk' introduced the following features:
+
+ * Variable additions:
+
+ - `FPAT', which allows you to specify a regexp that matches the
+ fields, instead of matching the field separator (*note
+ Splitting By Content::).
+
+ - If `PROCINFO["sorted_in"]' exists, `for(iggy in foo)' loops
+ sort the indices before looping over them. The value of this
+ element provides control over how the indices are sorted
+ before the loop traversal starts (*note Controlling
+ Scanning::).
+
+ - `PROCINFO["strftime"]', which holds the default format for
+ `strftime()' (*note Time Functions::).
+
+ * The special files `/dev/pid', `/dev/ppid', `/dev/pgrpid' and
+ `/dev/user' were removed.
+
+ * Support for IPv6 was added via the `/inet6' special file.
+ `/inet4' forces IPv4 and `/inet' chooses the system default, which
+ is probably IPv4 (*note TCP/IP Networking::).
+
+ * The use of `\s' and `\S' escape sequences in regular expressions
+ (*note GNU Regexp Operators::).
+
+ * Interval expressions became part of default regular expressions
+ (*note Regexp Operators::).
+
+ * POSIX character classes work even with `--traditional' (*note
+ Regexp Operators::).
+
+ * `break' and `continue' became invalid outside a loop, even with
+ `--traditional' (*note Break Statement::, and also see *note
+ Continue Statement::).
+
+ * `fflush()', `nextfile', and `delete ARRAY' are allowed if
+ `--posix' or `--traditional', since they are all now part of POSIX.
+
+ * An optional third argument to `asort()' and `asorti()', specifying
+ how to sort (*note String Functions::).
+
+ * The behavior of `fflush()' changed to match Brian Kernighan's `awk'
+ and for POSIX; now both `fflush()' and `fflush("")' flush all open
+ output redirections (*note I/O Functions::).
+
+ * The `isarray()' function which distinguishes if an item is an array
+ or not, to make it possible to traverse multidimensional arrays
+ (*note Type Functions::).
+
+ * The `patsplit()' function which gives the same capability as
+ `FPAT', for splitting (*note String Functions::).
+
+ * An optional fourth argument to the `split()' function, which is an
+ array to hold the values of the separators (*note String
+ Functions::).
+
+ * Arrays of arrays (*note Arrays of Arrays::).
+
+ * The `BEGINFILE' and `ENDFILE' special patterns (*note
+ BEGINFILE/ENDFILE::).
+
+ * Indirect function calls (*note Indirect Calls::).
+
+ * `switch' / `case' are enabled by default (*note Switch
+ Statement::).
+
+ * Command line option changes (*note Options::):
+
+ - The `-b' and `--characters-as-bytes' options which prevent
+ `gawk' from treating input as a multibyte string.
+
+ - The redundant `--compat', `--copyleft', and `--usage' long
+ options were removed.
+
+ - The `--gen-po' option was finally renamed to the correct
+ `--gen-pot'.
+
+ - The `--sandbox' option which disables certain features.
+
+ - All long options acquired corresponding short options, for
+ use in `#!' scripts.
+
+ * Directories named on the command line now produce a warning, not a
+ fatal error, unless `--posix' or `--traditional' are used (*note
+ Command line directories::).
+
+ * The `gawk' internals were rewritten, bringing the `dgawk' debugger
+ and possibly improved performance (*note Debugger::).
+
+ * Per the GNU Coding Standards, dynamic extensions must now define a
+ global symbol indicating that they are GPL-compatible (*note
+ Plugin License::).
+
+ * In POSIX mode, string comparisons use `strcoll()' / `wcscoll()'
+ (*note POSIX String Comparison::).
+
+ * The option for raw sockets was removed, since it was never
+ implemented (*note TCP/IP Networking::).
+
+ * Ranges of the form `[d-h]' are treated as if they were in the C
+ locale, no matter what kind of regexp is being used, and even if
+ `--posix' (*note Ranges and Locales::).
+
+ * Support was removed for the following systems:
+
+ - Atari
+
+ - Amiga
+
+ - BeOS
+
+ - Cray
+
+ - MIPS RiscOS
+
+ - MS-DOS with Microsoft Compiler
+
+ - MS-Windows with Microsoft Compiler
+
+ - NeXT
+
+ - SunOS 3.x, Sun 386 (Road Runner)
+
+ - Tandem (non-POSIX)
+
+ - Prestandard VAX C compiler for VAX/VMS
+
+ Version 4.1 of `gawk' introduced the following features:
+
+ * Three new arrays: `SYMTAB', `FUNCTAB', and
+ `PROCINFO["identifiers"]' (*note Auto-set::).
+
+ * The three executables `gawk', `pgawk', and `dgawk', were merged
+ into one, named just `gawk'. As a result the command line options
+ changed.
+
+ * Command line option changes (*note Options::):
+
+ - The `-D' option invokes the debugger.
+
+ - The `-i' and `--include' options load `awk' library files.
+
+ - The `-l' and `--load' options load compiled dynamic
+ extensions.
+
+ - The `-M' and `--bignum' options enable MPFR.
+
+ - The `-o' only does pretty-printing.
+
+ - The `-p' option is used for profiling.
+
+ - The `-R' option was removed.
+
+ * Support for high precision arithmetic with MPFR. (*note Gawk and
+ MPFR::).
+
+ * The `and()', `or()' and `xor()' functions changed to allow any
+ number of arguments, with a minimum of two (*note Bitwise
+ Functions::).
+
+ * The dynamic extension interface was completely redone (*note
+ Dynamic Extensions::).
+
+
+
+File: gawk.info, Node: Common Extensions, Next: Ranges and Locales, Prev: Feature History, Up: Language History
+
+A.7 Common Extensions Summary
=============================
This minor node summarizes the common extensions supported by `gawk',
@@ -25160,18 +25741,18 @@ available versions of `awk' (*note Other Versions::).
Feature BWK Awk Mawk GNU Awk
--------------------------------------------------------
`\x' Escape sequence X X X
-`RS' as regexp X X
`FS' as null string X X X
-`/dev/stdin' special file X X
+`/dev/stdin' special file X X X
`/dev/stdout' special file X X X
`/dev/stderr' special file X X X
-`**' and `**=' operators X X
+`delete' without subscript X X X
`fflush()' function X X X
-`func' keyword X X
+`length()' of an array X X X
`nextfile' statement X X X
-`delete' without subscript X X X
-`length()' of an array X X
+`**' and `**=' operators X X
+`func' keyword X X
`BINMODE' variable X X
+`RS' as regexp X X
Time related functions X X
(Technically speaking, as of late 2012, `fflush()', `delete ARRAY',
@@ -25181,7 +25762,7 @@ POSIX.)

File: gawk.info, Node: Ranges and Locales, Next: Contributors, Prev: Common Extensions, Up: Language History
-A.7 Regexp Ranges and Locales: A Long Sad Story
+A.8 Regexp Ranges and Locales: A Long Sad Story
===============================================
This minor node describes the confusing history of ranges within
@@ -25204,7 +25785,7 @@ as working in this fashion, and in particular, would teach that the
`[A-Z]' was the "correct" way to match uppercase letters. And indeed,
this was true.(1)
- The 1993 POSIX standard introduced the idea of locales (*note
+ The 1992 POSIX standard introduced the idea of locales (*note
Locales::). Since many locales include other letters besides the plain
twenty-six letters of the American English alphabet, the POSIX standard
added character classes (*note Bracket Expressions::) as a way to match
@@ -25267,17 +25848,17 @@ of range expressions was _undefined_.(3)
By using this lovely technical term, the standard gives license to
implementors to implement ranges in whatever way they choose. The
`gawk' maintainer chose to apply the pre-POSIX meaning in all cases:
-the default regexp matching; with `--traditional', and with `--posix';
+the default regexp matching; with `--traditional' and with `--posix';
in all cases, `gawk' remains POSIX compliant.
---------- Footnotes ----------
(1) And Life was good.
- (2) And thus was born the Campain for Rational Range Interpretation
-(or RRI). A number of GNU tools, such as `grep' and `sed', have either
-implemented this change, or will soon. Thanks to Karl Berry for
-coining the phrase "Rational Range Interpretation."
+ (2) And thus was born the Campaign for Rational Range Interpretation
+(or RRI). A number of GNU tools have either implemented this change, or
+will soon. Thanks to Karl Berry for coining the phrase "Rational Range
+Interpretation."
(3) See the standard
(http://pubs.opengroup.org/onlinepubs/9699919799/basedefs/V1_chap09.html#tag_09_03_05)
@@ -25287,11 +25868,10 @@ and its rationale

File: gawk.info, Node: Contributors, Prev: Ranges and Locales, Up: Language History
-A.8 Major Contributors to `gawk'
+A.9 Major Contributors to `gawk'
================================
- Always give credit where credit is due.
- Anonymous
+ Always give credit where credit is due. -- Anonymous
This minor node names the major contributors to `gawk' and/or this
Info file, in approximate chronological order:
@@ -25388,11 +25968,19 @@ Info file, in approximate chronological order:
* Patrick T.J. McPhee contributed the code for dynamic loading in
Windows32 environments. (This is no longer supported)
+ * Anders Wallin helped keep the VMS port going for several years.
+
+ * Assaf Gordon contributed the code to implement the `--sandbox'
+ option.
+
* John Haque made the following contributions:
- The modifications to convert `gawk' into a byte-code
interpreter, including the debugger.
+ - The addition of true multidimensional arrays. *note Arrays
+ of Arrays::.
+
- The additional modifications for support of arbitrary
precision arithmetic.
@@ -25403,12 +25991,19 @@ Info file, in approximate chronological order:
- Improved array internals for arrays indexed by integers.
+ - The improved array sorting features were driven by John
+ together with Pat Rankin.
+
* Efraim Yawitz contributed the original text for *note Debugger::.
* The development of the extension API first released with `gawk'
4.1 was driven primarily by Arnold Robbins and Andrew Schorr, with
notable contributions from the rest of the development team.
+ * Antonio Giovanni Colombo rewrote a number of examples in the early
+ chapters that were severely dated, for which I am incredibly
+ grateful.
+
* Arnold Robbins has been working on `gawk' since 1988, at first
helping David Trueman, and as the primary maintainer since around
1994.
@@ -25465,7 +26060,7 @@ There are three ways to get GNU software:
supported. If you have the `wget' program, you can use a command
like the following:
- wget http://ftp.gnu.org/gnu/gawk/gawk-4.1.0.tar.gz
+ wget http://ftp.gnu.org/gnu/gawk/gawk-4.1.1.tar.gz
The GNU software archive is mirrored around the world. The
up-to-date list of mirror sites is available from the main FSF web site
@@ -25484,26 +26079,26 @@ compression programs: `gzip', `bzip2', and `xz'. For simplicity, the
rest of these instructions assume you are using the one compressed with
the GNU Zip program, `gzip'.
- Once you have the distribution (for example, `gawk-4.1.0.tar.gz'),
+ Once you have the distribution (for example, `gawk-4.1.1.tar.gz'),
use `gzip' to expand the file and then use `tar' to extract it. You
can use the following pipeline to produce the `gawk' distribution:
# Under System V, add 'o' to the tar options
- gzip -d -c gawk-4.1.0.tar.gz | tar -xvpf -
+ gzip -d -c gawk-4.1.1.tar.gz | tar -xvpf -
On a system with GNU `tar', you can let `tar' do the decompression
for you:
- tar -xvpzf gawk-4.1.0.tar.gz
+ tar -xvpzf gawk-4.1.1.tar.gz
-Extracting the archive creates a directory named `gawk-4.1.0' in the
+Extracting the archive creates a directory named `gawk-4.1.1' in the
current directory.
The distribution file name is of the form `gawk-V.R.P.tar.gz'. The
V represents the major version of `gawk', the R represents the current
release of version V, and the P represents a "patch level", meaning
that minor bugs have been fixed in the release. The current patch
-level is 0, but when retrieving distributions, you should get the
+level is 1, but when retrieving distributions, you should get the
version with the highest version, release, and patch level. (Note,
however, that patch levels greater than or equal to 70 denote "beta" or
nonproduction software; you might not want to retrieve such a version
@@ -25525,6 +26120,13 @@ to different non-Unix operating systems:
Various `.c', `.y', and `.h' files
The actual `gawk' source code.
+`ABOUT-NLS'
+ Information about GNU `gettext' and translations.
+
+`AUTHORS'
+ A file with some information about the authorship of `gawk'. It
+ exists only to satisfy the pedants at the Free Software Foundation.
+
`README'
`README_d/README.*'
Descriptive files: `README' for `gawk' under Unix and the rest for
@@ -25550,16 +26152,6 @@ Various `.c', `.y', and `.h' files
`COPYING'
The GNU General Public License.
-`FUTURES'
- A brief list of features and changes being contemplated for future
- releases, with some indication of the time frame for the feature,
- based on its difficulty.
-
-`LIMITATIONS'
- A list of those factors that limit `gawk''s performance. Most of
- these depend on the hardware or operating system software and are
- not limits in `gawk' itself.
-
`POSIX.STD'
A description of behaviors in the POSIX standard for `awk' which
are left undefined, or where `gawk' may not comply fully, as well
@@ -25591,11 +26183,18 @@ Various `.c', `.y', and `.h' files
The `troff' source for a manual page describing `gawk'. This is
distributed for the convenience of Unix users.
-`doc/gawk.texi'
+`doc/gawktexi.in'
+`doc/sidebar.awk'
The Texinfo source file for this Info file. It should be
- processed with TeX (via `texi2dvi' or `texi2pdf') to produce a
- printed document, and with `makeinfo' to produce an Info or HTML
- file.
+ processed by `doc/sidebar.awk' before processing with `texi2dvi'
+ or `texi2pdf' to produce a printed document, and with `makeinfo'
+ to produce an Info or HTML file. The `Makefile' takes care of
+ this processing and produces printable output via `texi2dvi' or
+ `texi2pdf'.
+
+`doc/gawk.texi'
+ The file produced after processing `gawktexi.in' with
+ `sidebar.awk'.
`doc/gawk.info'
The generated Info file for this Info file.
@@ -25625,15 +26224,21 @@ Various `.c', `.y', and `.h' files
`Makefile.in'
`aclocal.m4'
+`bisonfix.awk'
+`config.guess'
`configh.in'
`configure.ac'
`configure'
`custom.h'
+`depcomp'
+`install-sh'
`missing_d/*'
+`mkinstalldirs'
`m4/*'
- These files and subdirectories are used when configuring `gawk'
- for various Unix systems. They are explained in *note Unix
- Installation::.
+ These files and subdirectories are used when configuring and
+ compiling `gawk' for various Unix systems. Most of them are
+ explained in *note Unix Installation::. The rest are there to
+ support the main infrastructure.
`po/*'
The `po' library contains message translations.
@@ -25654,6 +26259,11 @@ Various `.c', `.y', and `.h' files
of the programs in this Info file are available in appropriate
subdirectories of `awklib/eg'.
+`extension/*'
+ The source code, manual pages, and infrastructure files for the
+ sample extensions included with `gawk'. *Note Dynamic
+ Extensions::, for more information.
+
`posix/*'
Files needed for building `gawk' on POSIX-compliant systems.
@@ -25698,7 +26308,7 @@ Unix-derived systems, GNU/Linux, BSD-based systems, and the Cygwin
environment for MS-Windows.
After you have extracted the `gawk' distribution, `cd' to
-`gawk-4.1.0'. Like most GNU software, `gawk' is configured
+`gawk-4.1.1'. Like most GNU software, `gawk' is configured
automatically for your system by running the `configure' program. This
program is a Bourne shell script that is generated automatically using
GNU `autoconf'. (The `autoconf' software is described fully starting
@@ -25737,8 +26347,8 @@ failure is not described there, please send in a bug report (*note
Bugs::).
Of course, once you've built `gawk', it is likely that you will wish
-to install it. To do so, you need to run the command `make check', as
-a user with the appropriate permissions. How to do this varies by
+to install it. To do so, you need to run the command `make install',
+as a user with the appropriate permissions. How to do this varies by
system, but on many systems you can use the `sudo' command to do so.
The command then becomes `sudo make install'. It is likely that you
will be asked for your password, and you will have to have been set up
@@ -25753,6 +26363,12 @@ B.2.2 Additional Configuration Options
There are several additional options you may use on the `configure'
command line when compiling `gawk' from scratch, including:
+`--disable-extensions'
+ Disable configuring and building the sample extensions in the
+ `extension' directory. This is useful for cross-compiling. The
+ default action is to dynamically check if the extensions can be
+ configured and compiled.
+
`--disable-lint'
Disable all lint checking within `gawk'. The `--lint' and
`--lint-old' options (*note Options::) are accepted, but silently
@@ -26015,10 +26631,9 @@ File: gawk.info, Node: PC Using, Next: Cygwin, Prev: PC Testing, Up: PC Inst
B.3.1.4 Using `gawk' on PC Operating Systems
............................................
-With the exception of the Cygwin environment, the `|&' operator and
-TCP/IP networking (*note TCP/IP Networking::) are not supported for
-MS-DOS or MS-Windows. EMX (OS/2 only) does support at least the `|&'
-operator.
+Under MS-DOS and MS-Windows, the Cygwin and MinGW environments support
+both the `|&' operator and TCP/IP networking (*note TCP/IP
+Networking::). EMX (OS/2 only) supports at least the `|&' operator.
The MS-DOS and MS-Windows versions of `gawk' search for program
files as described in *note AWKPATH Variable::. However, semicolons
@@ -26111,13 +26726,13 @@ B.3.1.5 Using `gawk' In The Cygwin Environment
`gawk' can be built and used "out of the box" under MS-Windows if you
are using the Cygwin environment (http://www.cygwin.com). This
-environment provides an excellent simulation of Unix, using the GNU
-tools, such as Bash, the GNU Compiler Collection (GCC), GNU Make, and
-other GNU programs. Compilation and installation for Cygwin is the
+environment provides an excellent simulation of GNU/Linux, using the
+GNU tools, such as Bash, the GNU Compiler Collection (GCC), GNU Make,
+and other GNU programs. Compilation and installation for Cygwin is the
same as for a Unix system:
- tar -xvpzf gawk-4.1.0.tar.gz
- cd gawk-4.1.0
+ tar -xvpzf gawk-4.1.1.tar.gz
+ cd gawk-4.1.1
./configure
make
@@ -26125,10 +26740,6 @@ same as for a Unix system:
on Cygwin takes considerably longer. However, it does finish, and then
the `make' proceeds as usual.
- NOTE: The `|&' operator and TCP/IP networking (*note TCP/IP
- Networking::) are fully supported in the Cygwin environment. This
- is not true for any other environment on MS-Windows.
-

File: gawk.info, Node: MSYS, Prev: Cygwin, Up: PC Installation
@@ -26155,51 +26766,112 @@ older designation "VMS" is used throughout to refer to OpenVMS.
* Menu:
* VMS Compilation:: How to compile `gawk' under VMS.
+* VMS Dynamic Extensions:: Compiling `gawk' dynamic extensions on
+ VMS.
* VMS Installation Details:: How to install `gawk' under VMS.
* VMS Running:: How to run `gawk' under VMS.
+* VMS GNV:: The VMS GNV Project.
* VMS Old Gawk:: An old version comes with some VMS systems.

-File: gawk.info, Node: VMS Compilation, Next: VMS Installation Details, Up: VMS Installation
+File: gawk.info, Node: VMS Compilation, Next: VMS Dynamic Extensions, Up: VMS Installation
B.3.2.1 Compiling `gawk' on VMS
...............................
To compile `gawk' under VMS, there is a `DCL' command procedure that
issues all the necessary `CC' and `LINK' commands. There is also a
-`Makefile' for use with the `MMS' utility. From the source directory,
-use either:
+`Makefile' for use with the `MMS' and `MMK' utilities. From the source
+directory, use either:
- $ @[.VMS]VMSBUILD.COM
+ $ @[.vms]vmsbuild.com
or:
- $ MMS/DESCRIPTION=[.VMS]DESCRIP.MMS GAWK
+ $ MMS/DESCRIPTION=[.vms]descrip.mms gawk
+
+or:
+
+ $ MMK/DESCRIPTION=[.vms]descrip.mms gawk
+
+ `MMK' is an open source, free, near-clone of `MMS' and can better
+handle `ODS-5' volumes with upper- and lowercase filenames. `MMK' is
+available from `https://github.com/endlesssoftware/mmk'.
+
+ With `ODS-5' volumes and extended parsing enabled, the case of the
+target parameter may need to be exact.
- Older versions of `gawk' could be built with VAX C or GNU C on
-VAX/VMS, as well as with DEC C, but that is no longer supported. DEC C
-(also briefly known as "Compaq C" and now known as "HP C," but referred
-to here as "DEC C") is required. Both `VMSBUILD.COM' and `DESCRIP.MMS'
-contain some obsolete support for the older compilers but are set up to
-use DEC C by default.
+ `gawk' has been tested under VAX/VMS 7.3 and Alpha/VMS 7.3-1 using
+Compaq C V6.4, and Alpha/VMS 7.3, Alpha/VMS 7.3-2, and IA64/VMS 8.3.
+The most recent builds used HP C V7.3 on Alpha VMS 8.3 and both Alpha
+and IA64 VMS 8.4 used HP C 7.3.(1)
- `gawk' has been tested under Alpha/VMS 7.3-1 using Compaq C V6.4,
-and on Alpha/VMS 7.3, Alpha/VMS 7.3-2, and IA64/VMS 8.3.(1)
+ The `[.vms]gawk_build_steps.txt' provides information on how to build
+`gawk' into a PCSI kit that is compatible with the GNV product.
---------- Footnotes ----------
(1) The IA64 architecture is also known as "Itanium."

-File: gawk.info, Node: VMS Installation Details, Next: VMS Running, Prev: VMS Compilation, Up: VMS Installation
+File: gawk.info, Node: VMS Dynamic Extensions, Next: VMS Installation Details, Prev: VMS Compilation, Up: VMS Installation
-B.3.2.2 Installing `gawk' on VMS
+B.3.2.2 Compiling `gawk' Dynamic Extensions on VMS
+..................................................
+
+The extensions that have been ported to VMS can be built using one of
+the following commands.
+
+ $ MMS/DESCRIPTION=[.vms]descrip.mms extensions
+
+or:
+
+ $ MMK/DESCRIPTION=[.vms]descrip.mms extensions
+
+ `gawk' uses `AWKLIBPATH' as either an environment variable or a
+logical name to find the dynamic extensions.
+
+ Dynamic extensions need to be compiled with the same compiler
+options for floating point, pointer size, and symbol name handling as
+were used to compile `gawk' itself. Alpha and Itanium should use IEEE
+floating point. The pointer size is 32 bits, and the symbol name
+handling should be exact case with CRC shortening for symbols longer
+than 32 bits.
+
+ For Alpha and Itanium:
+
+ /name=(as_is,short)
+ /float=ieee/ieee_mode=denorm_results
+
+ For VAX:
+
+ /name=(as_is,short)
+
+ Compile time macros need to be defined before the first VMS-supplied
+header file is included.
+
+ #if (__CRTL_VER >= 70200000) && !defined (__VAX)
+ #define _LARGEFILE 1
+ #endif
+
+ #ifndef __VAX
+ #ifdef __CRTL_VER
+ #if __CRTL_VER >= 80200000
+ #define _USE_STD_STAT 1
+ #endif
+ #endif
+ #endif
+
+
+File: gawk.info, Node: VMS Installation Details, Next: VMS Running, Prev: VMS Dynamic Extensions, Up: VMS Installation
+
+B.3.2.3 Installing `gawk' on VMS
................................
-To install `gawk', all you need is a "foreign" command, which is a
-`DCL' symbol whose value begins with a dollar sign. For example:
+To use `gawk', all you need is a "foreign" command, which is a `DCL'
+symbol whose value begins with a dollar sign. For example:
- $ GAWK :== $disk1:[gnubin]GAWK
+ $ GAWK :== $disk1:[gnubin]gawk
Substitute the actual location of `gawk.exe' for `$disk1:[gnubin]'. The
symbol should be placed in the `login.com' of any user who wants to run
@@ -26207,9 +26879,27 @@ symbol should be placed in the `login.com' of any user who wants to run
Alternatively, the symbol may be placed in the system-wide
`sylogin.com' procedure, which allows all users to run `gawk'.
- Optionally, the help entry can be loaded into a VMS help library:
+ If your `gawk' was installed by a PCSI kit into the `GNV$GNU:'
+directory tree, the program will be known as
+`GNV$GNU:[bin]gnv$gawk.exe' and the help file will be
+`GNV$GNU:[vms_help]gawk.hlp'.
+
+ The PCSI kit also installs a `GNV$GNU:[vms_bin]gawk_verb.cld' file
+which can be used to add `gawk' and `awk' as DCL commands.
+
+ For just the current process you can use:
+
+ $ set command gnv$gnu:[vms_bin]gawk_verb.cld
- $ LIBRARY/HELP SYS$HELP:HELPLIB [.VMS]GAWK.HLP
+ Or the system manager can use `GNV$GNU:[vms_bin]gawk_verb.cld' to
+add the `gawk' and `awk' to the system wide `DCLTABLES'.
+
+ The DCL syntax is documented in the `gawk.hlp' file.
+
+ Optionally, the `gawk.hlp' entry can be loaded into a VMS help
+library:
+
+ $ LIBRARY/HELP sys$help:helplib [.vms]gawk.hlp
(You may want to substitute a site-specific help library rather than
the standard VMS library `HELPLIB'.) After loading the help text, the
@@ -26231,9 +26921,9 @@ If `AWK_LIBRARY' has no definition, a default value of `SYS$LIBRARY:'
is used for it.

-File: gawk.info, Node: VMS Running, Next: VMS Old Gawk, Prev: VMS Installation Details, Up: VMS Installation
+File: gawk.info, Node: VMS Running, Next: VMS GNV, Prev: VMS Installation Details, Up: VMS Installation
-B.3.2.3 Running `gawk' on VMS
+B.3.2.4 Running `gawk' on VMS
.............................
Command-line parsing and quoting conventions are significantly different
@@ -26259,6 +26949,35 @@ If any other dash-type options (or multiple parameters such as data
files to process) are present, there is no ambiguity and `--' can be
omitted.
+ The `exit' value is a Unix-style value and is encoded to a VMS exit
+status value when the program exits.
+
+ The VMS severity bits will be set based on the `exit' value. A
+failure is indicated by 1 and VMS sets the `ERROR' status. A fatal
+error is indicated by 2 and VMS will set the `FATAL' status. All other
+values will have the `SUCCESS' status. The exit value is encoded to
+comply with VMS coding standards and will have the `C_FACILITY_NO' of
+`0x350000' with the constant `0xA000' added to the number shifted over
+by 3 bits to make room for the severity codes.
+
+ To extract the actual `gawk' exit code from the VMS status use:
+
+ unix_status = (vms_status .and. &x7f8) / 8
+
+A C program that uses `exec()' to call `gawk' will get the original
+Unix-style exit value.
+
+ Older versions of `gawk' treated a Unix exit code 0 as 1, a failure
+as 2, a fatal error as 4, and passed all the other numbers through.
+This violated the VMS exit status coding requirements.
+
+ VAX/VMS floating point uses unbiased rounding. *Note Round
+Function::.
+
+ VMS reports time values in GMT unless one of the `SYS$TIMEZONE_RULE'
+or `TZ' logical names is set. Older versions of VMS, such as VAX/VMS
+7.3 do not set these logical names.
+
The default search path, when looking for `awk' program files
specified by the `-f' option, is `"SYS$DISK:[],AWK_LIBRARY:"'. The
logical name `AWKPATH' can be used to override this default. The format
@@ -26267,9 +26986,27 @@ When defining it, the value should be quoted so that it retains a single
translation and not a multitranslation `RMS' searchlist.

-File: gawk.info, Node: VMS Old Gawk, Prev: VMS Running, Up: VMS Installation
+File: gawk.info, Node: VMS GNV, Next: VMS Old Gawk, Prev: VMS Running, Up: VMS Installation
+
+B.3.2.5 The VMS GNV Project
+...........................
+
+The VMS GNV package provides a build environment similar to POSIX with
+ports of a collection of open source tools. The `gawk' found in the GNV
+base kit is an older port. Currently the GNV project is being
+reorganized to supply individual PCSI packages for each component. See
+`https://sourceforge.net/p/gnv/wiki/InstallingGNVPackages/'.
-B.3.2.4 Some VMS Systems Have An Old Version of `gawk'
+ The normal build procedure for `gawk' produces a program that is
+suitable for use with GNV.
+
+ The `vms/gawk_build_steps.txt' in the source documents the procedure
+for building a VMS PCSI kit that is compatible with GNV.
+
+
+File: gawk.info, Node: VMS Old Gawk, Prev: VMS GNV, Up: VMS Installation
+
+B.3.2.6 Some VMS Systems Have An Old Version of `gawk'
......................................................
Some versions of VMS have an old version of `gawk'. To access it,
@@ -26286,8 +27023,8 @@ File: gawk.info, Node: Bugs, Next: Other Versions, Prev: Non-Unix Installatio
B.4 Reporting Problems and Bugs
===============================
- There is nothing more dangerous than a bored archeologist.
- The Hitchhiker's Guide to the Galaxy
+ There is nothing more dangerous than a bored archeologist. -- The
+ Hitchhiker's Guide to the Galaxy
If you have problems with `gawk' or think that you have found a bug,
please report it to the developers; we cannot promise to do anything
@@ -26353,7 +27090,8 @@ considered authoritative if it conflicts with this Info file.
MS-DOS with DJGPP Scott Deifik, <scottd.mail@sbcglobal.net>.
MS-Windows with MINGW Eli Zaretskii, <eliz@gnu.org>.
OS/2 Andreas Buening, <andreas.buening@nexgo.de>.
-VMS Pat Rankin, <r.pat.rankin@gmail.com>
+VMS Pat Rankin, <r.pat.rankin@gmail.com>, and John
+ Malmberg, <wb8tyw@qsl.net>.
z/OS (OS/390) Dave Pitts, <dpitts@cozx.com>.
If your bug is also reproducible under Unix, please send a copy of
@@ -26366,8 +27104,8 @@ B.5 Other Freely Available `awk' Implementations
================================================
It's kind of fun to put comments like this in your awk code.
- `// Do C++ comments work? answer: yes! of course'
- Michael Brennan
+ `// Do C++ comments work? answer: yes! of course' -- Michael
+ Brennan
There are a number of other freely available `awk' implementations.
This minor node briefly describes where to get them:
@@ -26458,12 +27196,18 @@ Busybox Awk
The OpenSolaris POSIX `awk'
The version of `awk' in `/usr/xpg4/bin' on Solaris is more-or-less
POSIX-compliant. It is based on the `awk' from Mortice Kern
- Systems for PCs. The source code can be downloaded from the
- OpenSolaris web site (http://www.opensolaris.org). This author
- was able to make it compile and work under GNU/Linux with 1-2
- hours of work. Making it more generally portable (using GNU
- Autoconf and/or Automake) would take more work, and this has not
- been done, at least to our knowledge.
+ Systems for PCs. This author was able to make it compile and work
+ under GNU/Linux with 1-2 hours of work. Making it more generally
+ portable (using GNU Autoconf and/or Automake) would take more
+ work, and this has not been done, at least to our knowledge.
+
+ The source code used to be available from the OpenSolaris web site.
+ However, that project was ended and the web site shut down.
+ Fortunately, the Illumos project
+ (http://wiki.illumos.org/display/illumos/illumos+Home) makes this
+ implementation available. You can view the files one at a time
+ from
+ `https://github.com/joyent/illumos-joyent/blob/master/usr/src/cmd/awk_xpg4'.
`jawk'
This is an interpreter for `awk' written in Java. It claims to be
@@ -26493,6 +27237,11 @@ QSE Awk
`http://www.quiktrim.org/QTawk.html' for more information,
including the manual and a download link.
+Other Versions
+ See also the Wikipedia article
+ (http://en.wikipedia.org/wiki/Awk_language#Versions_and_implementations),
+ for information on additional versions.
+

File: gawk.info, Node: Notes, Next: Basic Concepts, Prev: Installation, Up: Top
@@ -26959,10 +27708,9 @@ C.3 Probable Future Extensions
==============================
AWK is a language similar to PERL, only considerably more elegant.
- Arnold Robbins
+ -- Arnold Robbins
- Hey!
- Larry Wall
+ Hey! -- Larry Wall
The `TODO' file in the `gawk' Git repository lists possible future
enhancements. Some of these relate to the source code, and others to
@@ -27096,7 +27844,7 @@ Some goals for the new API were:
fashion for C code.
- The ability to create arrays (including `gawk''s true
- multi-dimensional arrays).
+ multidimensional arrays).
Some additional important goals were:
@@ -27278,7 +28026,7 @@ D.1 What a Program Does
=======================
At the most basic level, the job of a program is to process some input
-data and produce results. See *note figure-general-flow::.
+data and produce results. See *note figure-general-flow::.
_______
+------+ / \ +---------+
@@ -27511,9 +28259,6 @@ Bash
The GNU version of the standard shell (the Bourne-Again SHell).
See also "Bourne Shell."
-BBS
- See "Bulletin Board System."
-
Bit
Short for "Binary Digit." All values in computer memory
ultimately reduce to binary digits: values that are either zero or
@@ -27559,11 +28304,6 @@ Built-in Variable
Braces
See "Curly Braces."
-Bulletin Board System
- A computer system allowing users to log in and read and/or leave
- messages for other users of the system, much like leaving paper
- notes on a bulletin board.
-
C
The system programming language that most GNU software is written
in. The `awk' programming language has C-like syntax, and this
@@ -27670,8 +28410,8 @@ Dynamic Regular Expression
(*Note Computed Regexps::.)
Environment
- A collection of strings, of the form NAME`='VAL, that each program
- has available to it. Users generally place values into the
+ A collection of strings, of the form NAME`='`val', that each
+ program has available to it. Users generally place values into the
environment in order to provide information to various programs.
Typical examples are the environment variables `HOME' and `PATH'.
@@ -28086,7 +28826,6 @@ GNU General Public License
**************************
Version 3, 29 June 2007
-
Copyright (C) 2007 Free Software Foundation, Inc. `http://fsf.org/'
Everyone is permitted to copy and distribute verbatim copies of this
@@ -28809,7 +29548,6 @@ GNU Free Documentation License
******************************
Version 1.3, 3 November 2008
-
Copyright (C) 2000, 2001, 2002, 2007, 2008 Free Software Foundation, Inc.
`http://fsf.org/'
@@ -29313,17 +30051,17 @@ Index
* ! (exclamation point), !~ operator <5>: Computed Regexps. (line 6)
* ! (exclamation point), !~ operator <6>: Case-sensitivity. (line 26)
* ! (exclamation point), !~ operator: Regexp Usage. (line 19)
-* " (double quote) <1>: Quoting. (line 37)
-* " (double quote): Read Terminal. (line 25)
+* " (double quote) in shell commands: Read Terminal. (line 25)
* " (double quote), in regexp constants: Computed Regexps. (line 28)
+* " (double quote), in shell commands: Quoting. (line 37)
* # (number sign), #! (executable scripts): Executable Scripts.
(line 6)
* # (number sign), commenting: Comments. (line 6)
-* $ (dollar sign): Regexp Operators. (line 35)
* $ (dollar sign), $ field operator <1>: Precedence. (line 43)
* $ (dollar sign), $ field operator: Fields. (line 19)
* $ (dollar sign), incrementing fields and arrays: Increment Ops.
(line 30)
+* $ (dollar sign), regexp operator: Regexp Operators. (line 35)
* % (percent sign), % operator: Precedence. (line 55)
* % (percent sign), %= operator <1>: Precedence. (line 95)
* % (percent sign), %= operator: Assignment Ops. (line 129)
@@ -29331,13 +30069,13 @@ Index
* & (ampersand), && operator: Boolean Ops. (line 57)
* & (ampersand), gsub()/gensub()/sub() functions and: Gory Details.
(line 6)
-* ' (single quote) <1>: Quoting. (line 31)
-* ' (single quote) <2>: Long. (line 33)
* ' (single quote): One-shot. (line 15)
+* ' (single quote) in gawk command lines: Long. (line 33)
+* ' (single quote), in shell commands: Quoting. (line 31)
* ' (single quote), vs. apostrophe: Comments. (line 27)
* ' (single quote), with double quotes: Quoting. (line 53)
-* () (parentheses) <1>: Profiling. (line 138)
-* () (parentheses): Regexp Operators. (line 79)
+* () (parentheses), in a profile: Profiling. (line 146)
+* () (parentheses), regexp operator: Regexp Operators. (line 79)
* * (asterisk), * operator, as multiplication operator: Precedence.
(line 55)
* * (asterisk), * operator, as regexp operator: Regexp Operators.
@@ -29350,40 +30088,41 @@ Index
* * (asterisk), **= operator: Assignment Ops. (line 129)
* * (asterisk), *= operator <1>: Precedence. (line 95)
* * (asterisk), *= operator: Assignment Ops. (line 129)
-* + (plus sign): Regexp Operators. (line 102)
* + (plus sign), + operator: Precedence. (line 52)
* + (plus sign), ++ operator <1>: Precedence. (line 46)
* + (plus sign), ++ operator: Increment Ops. (line 11)
* + (plus sign), += operator <1>: Precedence. (line 95)
* + (plus sign), += operator: Assignment Ops. (line 82)
+* + (plus sign), regexp operator: Regexp Operators. (line 102)
* , (comma), in range patterns: Ranges. (line 6)
* - (hyphen), - operator: Precedence. (line 52)
* - (hyphen), -- operator <1>: Precedence. (line 46)
* - (hyphen), -- operator: Increment Ops. (line 48)
* - (hyphen), -= operator <1>: Precedence. (line 95)
* - (hyphen), -= operator: Assignment Ops. (line 129)
-* - (hyphen), filenames beginning with: Options. (line 73)
+* - (hyphen), filenames beginning with: Options. (line 59)
* - (hyphen), in bracket expressions: Bracket Expressions. (line 17)
-* --assign option: Options. (line 46)
+* --assign option: Options. (line 32)
* --bignum option: Options. (line 201)
-* --c option: Options. (line 95)
-* --characters-as-bytes option: Options. (line 82)
-* --copyright option: Options. (line 102)
-* --debug option: Options. (line 122)
-* --disable-lint configuration option: Additional Configuration Options.
+* --characters-as-bytes option: Options. (line 68)
+* --copyright option: Options. (line 88)
+* --debug option: Options. (line 108)
+* --disable-extensions configuration option: Additional Configuration Options.
(line 9)
+* --disable-lint configuration option: Additional Configuration Options.
+ (line 15)
* --disable-nls configuration option: Additional Configuration Options.
- (line 24)
-* --dump-variables option <1>: Library Names. (line 45)
-* --dump-variables option: Options. (line 107)
-* --exec option: Options. (line 139)
+ (line 30)
+* --dump-variables option: Options. (line 93)
+* --dump-variables option, using for library functions: Library Names.
+ (line 45)
+* --exec option: Options. (line 125)
* --field-separator option: Options. (line 21)
* --file option: Options. (line 25)
* --gen-pot option <1>: String Extraction. (line 6)
-* --gen-pot option: Options. (line 161)
-* --help option: Options. (line 168)
-* --include option: Options. (line 32)
-* --L option: Options. (line 288)
+* --gen-pot option: Options. (line 147)
+* --help option: Options. (line 154)
+* --include option: Options. (line 159)
* --lint option <1>: Options. (line 182)
* --lint option: Command Line. (line 20)
* --lint-old option: Options. (line 288)
@@ -29405,29 +30144,31 @@ Index
* --sandbox option, input redirection with getline: Getline. (line 19)
* --sandbox option, output redirection with print, printf: Redirection.
(line 6)
-* --source option: Options. (line 131)
-* --traditional option: Options. (line 95)
+* --source option: Options. (line 117)
+* --traditional option: Options. (line 81)
* --traditional option, --posix option and: Options. (line 266)
* --use-lc-numeric option: Options. (line 215)
* --version option: Options. (line 293)
* --with-whiny-user-strftime configuration option: Additional Configuration Options.
- (line 29)
-* -b option: Options. (line 82)
-* -C option: Options. (line 102)
-* -D option: Options. (line 122)
-* -d option: Options. (line 107)
-* -E option: Options. (line 139)
-* -e option: Options. (line 131)
-* -F option: Command Line Field Separator.
- (line 6)
+ (line 35)
+* -b option: Options. (line 68)
+* -C option: Options. (line 88)
+* -c option: Options. (line 81)
+* -D option: Options. (line 108)
+* -d option: Options. (line 93)
+* -E option: Options. (line 125)
+* -e option: Options. (line 117)
* -f option: Options. (line 25)
* -F option: Options. (line 21)
* -f option: Long. (line 12)
* -F option, -Ft sets FS to TAB: Options. (line 301)
+* -F option, command line: Command Line Field Separator.
+ (line 6)
* -f option, multiple uses: Options. (line 306)
-* -g option: Options. (line 161)
-* -h option: Options. (line 168)
-* -i option: Options. (line 32)
+* -g option: Options. (line 147)
+* -h option: Options. (line 154)
+* -i option: Options. (line 159)
+* -L option: Options. (line 288)
* -l option: Options. (line 173)
* -M option: Options. (line 201)
* -N option: Options. (line 215)
@@ -29440,9 +30181,9 @@ Index
* -S option: Options. (line 279)
* -v option: Assignment Options. (line 12)
* -V option: Options. (line 293)
-* -v option: Options. (line 46)
-* -W option: Options. (line 60)
-* . (period): Regexp Operators. (line 43)
+* -v option: Options. (line 32)
+* -W option: Options. (line 46)
+* . (period), regexp operator: Regexp Operators. (line 43)
* .gmo files: Explaining gettext. (line 41)
* .gmo files, converting from .po: I18N Example. (line 62)
* .gmo files, specifying directory of <1>: Programmer i18n. (line 47)
@@ -29451,7 +30192,7 @@ Index
* .po files: Explaining gettext. (line 36)
* .po files, converting to .gmo: I18N Example. (line 62)
* .pot files: Explaining gettext. (line 30)
-* / (forward slash): Regexp. (line 10)
+* / (forward slash) to enclose regular expressions: Regexp. (line 10)
* / (forward slash), / operator: Precedence. (line 55)
* / (forward slash), /= operator <1>: Precedence. (line 95)
* / (forward slash), /= operator: Assignment Ops. (line 129)
@@ -29459,17 +30200,18 @@ Index
(line 147)
* / (forward slash), patterns and: Expression Patterns. (line 24)
* /= operator vs. /=.../ regexp constant: Assignment Ops. (line 147)
-* /dev/... special files (gawk): Special FD. (line 46)
-* /dev/fd/N special files: Special FD. (line 46)
+* /dev/... special files: Special FD. (line 46)
+* /dev/fd/N special files (gawk): Special FD. (line 46)
* /inet/... special files (gawk): TCP/IP Networking. (line 6)
* /inet4/... special files (gawk): TCP/IP Networking. (line 6)
* /inet6/... special files (gawk): TCP/IP Networking. (line 6)
-* ; (semicolon): Statements/Lines. (line 91)
-* ; (semicolon), AWKPATH variable and: PC Using. (line 11)
+* ; (semicolon), AWKPATH variable and: PC Using. (line 10)
* ; (semicolon), separating statements in actions <1>: Statements.
(line 10)
-* ; (semicolon), separating statements in actions: Action Overview.
+* ; (semicolon), separating statements in actions <2>: Action Overview.
(line 19)
+* ; (semicolon), separating statements in actions: Statements/Lines.
+ (line 91)
* < (left angle bracket), < operator <1>: Precedence. (line 65)
* < (left angle bracket), < operator: Comparison Operators.
(line 11)
@@ -29490,15 +30232,13 @@ Index
(line 11)
* > (right angle bracket), >> operator (I/O) <1>: Precedence. (line 65)
* > (right angle bracket), >> operator (I/O): Redirection. (line 50)
-* ? (question mark) regexp operator <1>: GNU Regexp Operators.
- (line 59)
-* ? (question mark) regexp operator: Regexp Operators. (line 111)
* ? (question mark), ?: operator: Precedence. (line 92)
-* [] (square brackets): Regexp Operators. (line 55)
-* \ (backslash) <1>: Regexp Operators. (line 18)
-* \ (backslash) <2>: Quoting. (line 31)
-* \ (backslash) <3>: Comments. (line 50)
-* \ (backslash): Read Terminal. (line 25)
+* ? (question mark), regexp operator <1>: GNU Regexp Operators.
+ (line 59)
+* ? (question mark), regexp operator: Regexp Operators. (line 111)
+* [] (square brackets), regexp operator: Regexp Operators. (line 55)
+* \ (backslash): Comments. (line 50)
+* \ (backslash) in shell commands: Read Terminal. (line 25)
* \ (backslash), \" escape sequence: Escape Sequences. (line 76)
* \ (backslash), \' operator (gawk): GNU Regexp Operators.
(line 56)
@@ -29545,22 +30285,27 @@ Index
* \ (backslash), in escape sequences, POSIX and: Escape Sequences.
(line 112)
* \ (backslash), in regexp constants: Computed Regexps. (line 28)
-* ^ (caret): GNU Regexp Operators.
- (line 59)
+* \ (backslash), in shell commands: Quoting. (line 31)
+* \ (backslash), regexp operator: Regexp Operators. (line 18)
* ^ (caret), ^ operator: Precedence. (line 49)
* ^ (caret), ^= operator <1>: Precedence. (line 95)
* ^ (caret), ^= operator: Assignment Ops. (line 129)
* ^ (caret), in bracket expressions: Bracket Expressions. (line 17)
-* ^ (caret), regexp operator: Regexp Operators. (line 22)
-* ^, in FS: Regexp Field Splitting.
+* ^ (caret), in FS: Regexp Field Splitting.
+ (line 59)
+* ^ (caret), regexp operator <1>: GNU Regexp Operators.
(line 59)
+* ^ (caret), regexp operator: Regexp Operators. (line 22)
* _ (underscore), C macro: Explaining gettext. (line 70)
* _ (underscore), in names of private variables: Library Names.
(line 29)
* _ (underscore), translatable string: Programmer i18n. (line 69)
* _gr_init() user-defined function: Group Functions. (line 82)
+* _ord_init() user-defined function: Ordinal Functions. (line 16)
* _pw_init() user-defined function: Passwd Functions. (line 105)
* accessing fields: Fields. (line 6)
+* accessing global variables from extensions: Symbol Table Access.
+ (line 6)
* account information <1>: Group Functions. (line 6)
* account information: Passwd Functions. (line 16)
* actions: Action Overview. (line 6)
@@ -29570,21 +30315,21 @@ Index
* Ada programming language: Glossary. (line 20)
* adding, features to gawk: Adding Code. (line 6)
* adding, fields: Changing Fields. (line 53)
-* advanced features, fixed-width data: Constant Size. (line 9)
+* advanced features, fixed-width data: Constant Size. (line 10)
* advanced features, gawk: Advanced Features. (line 6)
-* advanced features, network connections, See Also networks, connections: Advanced Features.
- (line 6)
* advanced features, network programming: TCP/IP Networking. (line 6)
* advanced features, nondecimal input data: Nondecimal Data. (line 6)
* advanced features, processes, communicating with: Two-way I/O.
(line 23)
* advanced features, specifying field content: Splitting By Content.
- (line 9)
-* Aho, Alfred <1>: Contributors. (line 12)
+ (line 10)
+* Aho, Alfred <1>: Contributors. (line 11)
* Aho, Alfred: History. (line 17)
-* alarm clock example program: Alarm Program. (line 9)
-* alarm.awk program: Alarm Program. (line 29)
+* alarm clock example program: Alarm Program. (line 11)
+* alarm.awk program: Alarm Program. (line 31)
* algorithms: Basic High Level. (line 68)
+* allocating memory for extensions: Memory Allocation Functions.
+ (line 6)
* Alpha (DEC): Manual History. (line 28)
* amazing awk assembler (aaa): Glossary. (line 12)
* amazingly workable formatter (awf): Glossary. (line 25)
@@ -29595,17 +30340,25 @@ Index
* ampersand (&), gsub()/gensub()/sub() functions and: Gory Details.
(line 6)
* anagram.awk program: Anagram Program. (line 22)
+* anagrams, finding: Anagram Program. (line 6)
+* and: Bitwise Functions. (line 39)
* AND bitwise operation: Bitwise Functions. (line 6)
* and Boolean-logic operator: Boolean Ops. (line 6)
-* and() function (gawk): Bitwise Functions. (line 39)
* ANSI: Glossary. (line 35)
+* API informational variables: Extension API Informational Variables.
+ (line 6)
+* API version: Extension Versioning.
+ (line 6)
* arbitrary precision: Arbitrary Precision Arithmetic.
(line 6)
+* arbitrary precision integers: Arbitrary Precision Integers.
+ (line 6)
* archeologists: Bugs. (line 6)
-* ARGC/ARGV variables <1>: ARGC and ARGV. (line 6)
+* arctangent: Numeric Functions. (line 11)
* ARGC/ARGV variables: Auto-set. (line 11)
* ARGC/ARGV variables, command-line arguments: Other Arguments.
(line 12)
+* ARGC/ARGV variables, how to use: ARGC and ARGV. (line 6)
* ARGC/ARGV variables, portability and: Executable Scripts. (line 42)
* ARGIND variable: Auto-set. (line 40)
* ARGIND variable, command-line arguments: Other Arguments. (line 12)
@@ -29615,54 +30368,74 @@ Index
* arguments, command-line, invoking awk: Command Line. (line 6)
* arguments, in function calls: Function Calls. (line 16)
* arguments, processing: Getopt Function. (line 6)
+* ARGV array, indexing into: Other Arguments. (line 12)
* arithmetic operators: Arithmetic Ops. (line 6)
+* array manipulation in extensions: Array Manipulation. (line 6)
+* array members: Reference to Elements.
+ (line 6)
+* array scanning order, controlling: Controlling Scanning.
+ (line 12)
+* array, number of elements: String Functions. (line 194)
* arrays: Arrays. (line 6)
+* arrays of arrays: Arrays of Arrays. (line 6)
+* arrays, an example of using: Array Example. (line 6)
+* arrays, and IGNORECASE variable: Array Intro. (line 91)
* arrays, as parameters to functions: Pass By Value/Reference.
(line 47)
-* arrays, associative: Array Intro. (line 50)
+* arrays, associative: Array Intro. (line 49)
* arrays, associative, library functions and: Library Names. (line 57)
* arrays, deleting entire contents: Delete. (line 39)
-* arrays, elements, assigning: Assigning Elements. (line 6)
+* arrays, elements that don't exist: Reference to Elements.
+ (line 23)
+* arrays, elements, assigning values: Assigning Elements. (line 6)
* arrays, elements, deleting: Delete. (line 6)
-* arrays, elements, order of: Scanning an Array. (line 48)
-* arrays, elements, referencing: Reference to Elements.
- (line 6)
-* arrays, elements, retrieving number of: String Functions. (line 29)
+* arrays, elements, order of access by in operator: Scanning an Array.
+ (line 48)
+* arrays, elements, retrieving number of: String Functions. (line 32)
* arrays, for statement and: Scanning an Array. (line 20)
-* arrays, IGNORECASE variable and: Array Intro. (line 92)
-* arrays, indexing: Array Intro. (line 50)
+* arrays, indexing: Array Intro. (line 49)
* arrays, merging into strings: Join Function. (line 6)
-* arrays, multidimensional: Multi-dimensional. (line 10)
-* arrays, multidimensional, scanning: Multi-scanning. (line 11)
-* arrays, names of: Arrays. (line 18)
+* arrays, multidimensional: Multidimensional. (line 10)
+* arrays, multidimensional, scanning: Multiscanning. (line 11)
+* arrays, names of, and names of functions/variables: Arrays. (line 18)
+* arrays, numeric subscripts: Numeric Array Subscripts.
+ (line 6)
+* arrays, referencing elements: Reference to Elements.
+ (line 6)
* arrays, scanning: Scanning an Array. (line 6)
* arrays, sorting: Array Sorting Functions.
(line 6)
-* arrays, sorting, IGNORECASE variable and: Array Sorting Functions.
- (line 81)
-* arrays, sparse: Array Intro. (line 71)
-* arrays, subscripts: Numeric Array Subscripts.
- (line 6)
+* arrays, sorting, and IGNORECASE variable: Array Sorting Functions.
+ (line 83)
+* arrays, sparse: Array Intro. (line 70)
* arrays, subscripts, uninitialized variables as: Uninitialized Subscripts.
(line 6)
+* arrays, unassigned elements: Reference to Elements.
+ (line 18)
* artificial intelligence, gawk and: Distribution contents.
- (line 55)
-* ASCII <1>: Glossary. (line 141)
+ (line 52)
+* ASCII <1>: Glossary. (line 133)
* ASCII: Ordinal Functions. (line 45)
-* asort() function (gawk) <1>: Array Sorting Functions.
+* asort <1>: Array Sorting Functions.
(line 6)
-* asort() function (gawk): String Functions. (line 29)
+* asort: String Functions. (line 32)
* asort() function (gawk), arrays, sorting: Array Sorting Functions.
(line 6)
-* asorti() function (gawk): String Functions. (line 77)
+* asorti <1>: Array Sorting Functions.
+ (line 6)
+* asorti: String Functions. (line 32)
+* asorti() function (gawk), arrays, sorting: Array Sorting Functions.
+ (line 6)
* assert() function (C library): Assert Function. (line 6)
* assert() user-defined function: Assert Function. (line 28)
* assertions: Assert Function. (line 6)
+* assign values to variables, in debugger: Viewing And Changing Data.
+ (line 59)
* assignment operators: Assignment Ops. (line 6)
* assignment operators, evaluation order: Assignment Ops. (line 111)
* assignment operators, lvalues/rvalues: Assignment Ops. (line 32)
* assignments as filenames: Ignoring Assigns. (line 6)
-* associative arrays: Array Intro. (line 50)
+* associative arrays: Array Intro. (line 49)
* asterisk (*), * operator, as multiplication operator: Precedence.
(line 55)
* asterisk (*), * operator, as regexp operator: Regexp Operators.
@@ -29675,9 +30448,10 @@ Index
* asterisk (*), **= operator: Assignment Ops. (line 129)
* asterisk (*), *= operator <1>: Precedence. (line 95)
* asterisk (*), *= operator: Assignment Ops. (line 129)
-* atan2() function: Numeric Functions. (line 11)
+* atan2: Numeric Functions. (line 11)
+* automatic displays, in debugger: Debugger Info. (line 24)
* awf (amazingly workable formatter) program: Glossary. (line 25)
-* awk debugging, enabling: Options. (line 122)
+* awk debugging, enabling: Options. (line 108)
* awk language, POSIX version: Assignment Ops. (line 136)
* awk profiling, enabling: Options. (line 235)
* awk programs <1>: Two Rules. (line 6)
@@ -29714,7 +30488,7 @@ Index
* awk, POSIX and: Preface. (line 23)
* awk, POSIX and, See Also POSIX awk: Preface. (line 23)
* awk, regexp constants and: Comparison Operators.
- (line 103)
+ (line 102)
* awk, See Also gawk: Preface. (line 36)
* awk, terms describing: This Manual. (line 6)
* awk, uses for <1>: When. (line 6)
@@ -29731,16 +30505,14 @@ Index
* awk, versions of, See Also Brian Kernighan's awk: BTL. (line 6)
* awka compiler for awk: Other Versions. (line 64)
* AWKLIBPATH environment variable: AWKLIBPATH Variable. (line 6)
-* AWKPATH environment variable <1>: PC Using. (line 11)
+* AWKPATH environment variable <1>: PC Using. (line 10)
* AWKPATH environment variable: AWKPATH Variable. (line 6)
* awkprof.out file: Profiling. (line 6)
* awksed.awk program: Simple Sed. (line 25)
-* awkvars.out file: Options. (line 107)
+* awkvars.out file: Options. (line 93)
* b debugger command (alias for break): Breakpoint Control. (line 11)
-* backslash (\) <1>: Regexp Operators. (line 18)
-* backslash (\) <2>: Quoting. (line 31)
-* backslash (\) <3>: Comments. (line 50)
-* backslash (\): Read Terminal. (line 25)
+* backslash (\): Comments. (line 50)
+* backslash (\) in shell commands: Read Terminal. (line 25)
* backslash (\), \" escape sequence: Escape Sequences. (line 76)
* backslash (\), \' operator (gawk): GNU Regexp Operators.
(line 56)
@@ -29787,17 +30559,18 @@ Index
* backslash (\), in escape sequences, POSIX and: Escape Sequences.
(line 112)
* backslash (\), in regexp constants: Computed Regexps. (line 28)
+* backslash (\), in shell commands: Quoting. (line 31)
+* backslash (\), regexp operator: Regexp Operators. (line 18)
* backtrace debugger command: Execution Stack. (line 13)
-* BBS-list file: Sample Data Files. (line 6)
-* Beebe, Nelson <1>: Other Versions. (line 78)
-* Beebe, Nelson: Acknowledgments. (line 60)
-* BEGIN pattern <1>: Profiling. (line 62)
+* Beebe, Nelson H.F. <1>: Other Versions. (line 78)
+* Beebe, Nelson H.F.: Acknowledgments. (line 60)
+* BEGIN pattern <1>: Using BEGIN/END. (line 6)
* BEGIN pattern <2>: BEGIN/END. (line 6)
-* BEGIN pattern <3>: Field Separators. (line 44)
-* BEGIN pattern: Records. (line 29)
+* BEGIN pattern: Field Separators. (line 45)
+* BEGIN pattern, and profiling: Profiling. (line 62)
* BEGIN pattern, assert() user-defined function and: Assert Function.
(line 83)
-* BEGIN pattern, Boolean patterns and: Expression Patterns. (line 73)
+* BEGIN pattern, Boolean patterns and: Expression Patterns. (line 70)
* BEGIN pattern, exit statement and: Exit Statement. (line 12)
* BEGIN pattern, getline and: Getline Notes. (line 19)
* BEGIN pattern, headings, adding: Print Examples. (line 43)
@@ -29814,29 +30587,36 @@ Index
* BEGIN pattern, TEXTDOMAIN variable and: Programmer i18n. (line 60)
* BEGINFILE pattern: BEGINFILE/ENDFILE. (line 6)
* BEGINFILE pattern, Boolean patterns and: Expression Patterns.
- (line 73)
+ (line 70)
* beginfile() user-defined function: Filetrans Function. (line 62)
-* Benzinger, Michael: Contributors. (line 98)
+* Bentley, Jon: Glossary. (line 143)
+* Benzinger, Michael: Contributors. (line 97)
+* Berry, Karl <1>: Ranges and Locales. (line 74)
* Berry, Karl: Acknowledgments. (line 33)
* binary input/output: User-modified. (line 10)
+* bindtextdomain <1>: Programmer i18n. (line 47)
+* bindtextdomain: I18N Functions. (line 12)
* bindtextdomain() function (C library): Explaining gettext. (line 49)
-* bindtextdomain() function (gawk) <1>: Programmer i18n. (line 47)
-* bindtextdomain() function (gawk): I18N Functions. (line 12)
* bindtextdomain() function (gawk), portability and: I18N Portability.
(line 33)
-* BINMODE variable <1>: PC Using. (line 34)
+* BINMODE variable <1>: PC Using. (line 33)
* BINMODE variable: User-modified. (line 10)
+* bit-manipulation functions: Bitwise Functions. (line 6)
* bits2str() user-defined function: Bitwise Functions. (line 70)
+* bitwise AND: Bitwise Functions. (line 39)
+* bitwise complement: Bitwise Functions. (line 43)
+* bitwise OR: Bitwise Functions. (line 49)
+* bitwise XOR: Bitwise Functions. (line 55)
* bitwise, complement: Bitwise Functions. (line 25)
* bitwise, operations: Bitwise Functions. (line 6)
* bitwise, shift: Bitwise Functions. (line 32)
* body, in actions: Statements. (line 10)
* body, in loops: While Statement. (line 14)
* Boolean expressions: Boolean Ops. (line 6)
-* Boolean expressions, as patterns: Expression Patterns. (line 41)
+* Boolean expressions, as patterns: Expression Patterns. (line 39)
* Boolean operators, See Boolean expressions: Boolean Ops. (line 6)
* Bourne shell, quoting rules for: Quoting. (line 18)
-* braces ({}): Profiling. (line 134)
+* braces ({}): Profiling. (line 142)
* braces ({}), actions and: Action Overview. (line 19)
* braces ({}), statements, grouping: Statements. (line 10)
* bracket expressions <1>: Bracket Expressions. (line 6)
@@ -29855,18 +30635,45 @@ Index
(line 6)
* break debugger command: Breakpoint Control. (line 11)
* break statement: Break Statement. (line 6)
+* breakpoint: Debugging Terms. (line 33)
+* breakpoint at location, how to delete: Breakpoint Control. (line 36)
+* breakpoint commands: Debugger Execution Control.
+ (line 10)
+* breakpoint condition: Breakpoint Control. (line 54)
+* breakpoint, delete by number: Breakpoint Control. (line 64)
+* breakpoint, how to disable or enable: Breakpoint Control. (line 69)
+* breakpoint, setting: Breakpoint Control. (line 11)
* Brennan, Michael <1>: Other Versions. (line 6)
* Brennan, Michael <2>: Two-way I/O. (line 6)
* Brennan, Michael <3>: Simple Sed. (line 25)
-* Brennan, Michael: Delete. (line 56)
-* Brian Kernighan's awk: Other Versions. (line 13)
+* Brennan, Michael <4>: Delete. (line 56)
+* Brennan, Michael: Foreword. (line 83)
+* Brian Kernighan's awk <1>: I/O Functions. (line 40)
+* Brian Kernighan's awk <2>: Gory Details. (line 15)
+* Brian Kernighan's awk <3>: String Functions. (line 490)
+* Brian Kernighan's awk <4>: Delete. (line 48)
+* Brian Kernighan's awk <5>: Nextfile Statement. (line 47)
+* Brian Kernighan's awk <6>: Continue Statement. (line 43)
+* Brian Kernighan's awk <7>: Break Statement. (line 51)
+* Brian Kernighan's awk <8>: I/O And BEGIN/END. (line 16)
+* Brian Kernighan's awk <9>: Concatenation. (line 36)
+* Brian Kernighan's awk <10>: Getline/Pipe. (line 62)
+* Brian Kernighan's awk <11>: Regexp Field Splitting.
+ (line 67)
+* Brian Kernighan's awk <12>: GNU Regexp Operators.
+ (line 83)
+* Brian Kernighan's awk <13>: Escape Sequences. (line 116)
+* Brian Kernighan's awk <14>: When. (line 21)
+* Brian Kernighan's awk: Preface. (line 15)
* Brian Kernighan's awk, extensions: BTL. (line 6)
-* Broder, Alan J.: Contributors. (line 89)
-* Brown, Martin: Contributors. (line 83)
-* BSD-based operating systems: Glossary. (line 624)
+* Brian Kernighan's awk, source code: Other Versions. (line 13)
+* Brini, Davide: Signature Program. (line 6)
+* Broder, Alan J.: Contributors. (line 88)
+* Brown, Martin: Contributors. (line 82)
+* BSD-based operating systems: Glossary. (line 616)
* bt debugger command (alias for backtrace): Execution Stack. (line 13)
-* Buening, Andreas <1>: Bugs. (line 71)
-* Buening, Andreas <2>: Contributors. (line 93)
+* Buening, Andreas <1>: Bugs. (line 70)
+* Buening, Andreas <2>: Contributors. (line 92)
* Buening, Andreas: Acknowledgments. (line 60)
* buffering, input/output <1>: Two-way I/O. (line 70)
* buffering, input/output: I/O Functions. (line 137)
@@ -29879,7 +30686,7 @@ Index
* built-in functions: Functions. (line 6)
* built-in functions, evaluation order: Calling Built-in. (line 30)
* built-in variables: Built-in Variables. (line 6)
-* built-in variables, -v option, setting with: Options. (line 54)
+* built-in variables, -v option, setting with: Options. (line 40)
* built-in variables, conveying information: Auto-set. (line 6)
* built-in variables, user-modifiable: User-modified. (line 6)
* Busybox Awk: Other Versions. (line 88)
@@ -29887,24 +30694,29 @@ Index
(line 47)
* call by value: Pass By Value/Reference.
(line 18)
-* caret (^): GNU Regexp Operators.
- (line 59)
+* call stack, display in debugger: Execution Stack. (line 13)
* caret (^), ^ operator: Precedence. (line 49)
* caret (^), ^= operator <1>: Precedence. (line 95)
* caret (^), ^= operator: Assignment Ops. (line 129)
* caret (^), in bracket expressions: Bracket Expressions. (line 17)
+* caret (^), regexp operator <1>: GNU Regexp Operators.
+ (line 59)
* caret (^), regexp operator: Regexp Operators. (line 22)
* case keyword: Switch Statement. (line 6)
-* case sensitivity, array indices and: Array Intro. (line 92)
-* case sensitivity, converting case: String Functions. (line 524)
+* case sensitivity, and regexps: User-modified. (line 82)
+* case sensitivity, and string comparisons: User-modified. (line 82)
+* case sensitivity, array indices and: Array Intro. (line 91)
+* case sensitivity, converting case: String Functions. (line 520)
* case sensitivity, example programs: Library Functions. (line 53)
* case sensitivity, gawk: Case-sensitivity. (line 26)
-* case sensitivity, regexps and <1>: User-modified. (line 82)
* case sensitivity, regexps and: Case-sensitivity. (line 6)
-* case sensitivity, string comparisons and: User-modified. (line 82)
-* CGI, awk scripts for: Options. (line 139)
+* CGI, awk scripts for: Options. (line 125)
+* changing precision of a number: Changing Precision. (line 6)
+* character classes, See bracket expressions: Regexp Operators.
+ (line 55)
+* character lists in regular expression: Bracket Expressions. (line 6)
* character lists, See bracket expressions: Regexp Operators. (line 55)
-* character sets (machine character encodings) <1>: Glossary. (line 141)
+* character sets (machine character encodings) <1>: Glossary. (line 133)
* character sets (machine character encodings): Ordinal Functions.
(line 45)
* character sets, See Also bracket expressions: Regexp Operators.
@@ -29913,10 +30725,10 @@ Index
* characters, transliterating: Translate Program. (line 6)
* characters, values of as numbers: Ordinal Functions. (line 6)
* Chassell, Robert J.: Acknowledgments. (line 33)
-* chdir extension function: Extension Sample File Functions.
+* chdir() extension function: Extension Sample File Functions.
(line 12)
-* chem utility: Glossary. (line 151)
-* chr extension function: Extension Sample Ord.
+* chem utility: Glossary. (line 143)
+* chr() extension function: Extension Sample Ord.
(line 15)
* chr() user-defined function: Ordinal Functions. (line 16)
* clear debugger command: Breakpoint Control. (line 36)
@@ -29924,24 +30736,26 @@ Index
(line 6)
* cliff_rand() user-defined function: Cliff Random Function.
(line 12)
-* close() function <1>: I/O Functions. (line 10)
-* close() function <2>: Close Files And Pipes.
+* close <1>: I/O Functions. (line 10)
+* close: Close Files And Pipes.
(line 18)
-* close() function <3>: Getline/Pipe. (line 28)
-* close() function: Getline/Variable/File.
- (line 30)
+* close file or coprocess: I/O Functions. (line 10)
+* close() function, portability: Close Files And Pipes.
+ (line 81)
* close() function, return value: Close Files And Pipes.
(line 130)
* close() function, two-way pipes and: Two-way I/O. (line 77)
-* Close, Diane <1>: Contributors. (line 21)
+* Close, Diane <1>: Contributors. (line 20)
* Close, Diane: Manual History. (line 41)
* Collado, Manuel: Acknowledgments. (line 60)
* collating elements: Bracket Expressions. (line 69)
* collating symbols: Bracket Expressions. (line 76)
+* Colombo, Antonio <1>: Contributors. (line 135)
* Colombo, Antonio: Acknowledgments. (line 60)
* columns, aligning: Print Examples. (line 70)
* columns, cutting: Cut Program. (line 6)
* comma (,), in range patterns: Ranges. (line 6)
+* command completion, in debugger: Readline Support. (line 6)
* command line, arguments <1>: ARGC and ARGV. (line 6)
* command line, arguments <2>: Auto-set. (line 11)
* command line, arguments: Other Arguments. (line 6)
@@ -29951,16 +30765,16 @@ Index
* command line, FS on, setting: Command Line Field Separator.
(line 6)
* command line, invoking awk from: Command Line. (line 6)
-* command line, options <1>: Command Line Field Separator.
- (line 6)
-* command line, options <2>: Options. (line 6)
-* command line, options: Long. (line 12)
-* command line, options, end of: Options. (line 68)
+* command line, option -f: Long. (line 12)
+* command line, options: Options. (line 6)
+* command line, options, end of: Options. (line 54)
* command line, variables, assigning on: Assignment Options. (line 6)
* command-line options, processing: Getopt Function. (line 6)
* command-line options, string extraction: String Extraction. (line 6)
* commands debugger command: Debugger Execution Control.
(line 10)
+* commands to execute at breakpoint: Debugger Execution Control.
+ (line 10)
* commenting: Comments. (line 6)
* commenting, backslash continuation and: Statements/Lines. (line 76)
* common extensions, ** operator: Arithmetic Ops. (line 30)
@@ -29969,12 +30783,12 @@ Index
* common extensions, /dev/stdin special file: Special FD. (line 46)
* common extensions, /dev/stdout special file: Special FD. (line 46)
* common extensions, \x escape sequence: Escape Sequences. (line 61)
-* common extensions, BINMODE variable: PC Using. (line 34)
+* common extensions, BINMODE variable: PC Using. (line 33)
* common extensions, delete to delete entire arrays: Delete. (line 39)
* common extensions, func keyword: Definition Syntax. (line 83)
* common extensions, length() applied to an array: String Functions.
- (line 198)
-* common extensions, RS as a regexp: Records. (line 120)
+ (line 194)
+* common extensions, RS as a regexp: Records. (line 135)
* common extensions, single character fields: Single Character Fields.
(line 6)
* comp.lang.awk newsgroup: Bugs. (line 38)
@@ -29982,74 +30796,89 @@ Index
(line 9)
* comparison expressions, as patterns: Expression Patterns. (line 14)
* comparison expressions, string vs. regexp: Comparison Operators.
- (line 79)
+ (line 78)
* compatibility mode (gawk), extensions: POSIX/GNU. (line 6)
* compatibility mode (gawk), file names: Special Caveats. (line 9)
* compatibility mode (gawk), hexadecimal numbers: Nondecimal-numbers.
(line 60)
* compatibility mode (gawk), octal numbers: Nondecimal-numbers.
(line 60)
-* compatibility mode (gawk), specifying: Options. (line 95)
-* compiled programs <1>: Glossary. (line 165)
+* compatibility mode (gawk), specifying: Options. (line 81)
+* compiled programs <1>: Glossary. (line 157)
* compiled programs: Basic High Level. (line 15)
* compiling gawk for Cygwin: Cygwin. (line 6)
* compiling gawk for MS-DOS and MS-Windows: PC Compiling. (line 13)
* compiling gawk for VMS: VMS Compilation. (line 6)
* compiling gawk with EMX for OS/2: PC Compiling. (line 28)
-* compl() function (gawk): Bitwise Functions. (line 43)
+* compl: Bitwise Functions. (line 43)
* complement, bitwise: Bitwise Functions. (line 25)
* compound statements, control statements and: Statements. (line 10)
-* concatenating: Concatenation. (line 9)
+* concatenating: Concatenation. (line 8)
* condition debugger command: Breakpoint Control. (line 54)
* conditional expressions: Conditional Exp. (line 6)
-* configuration option, --disable-lint: Additional Configuration Options.
+* configuration option, --disable-extensions: Additional Configuration Options.
(line 9)
+* configuration option, --disable-lint: Additional Configuration Options.
+ (line 15)
* configuration option, --disable-nls: Additional Configuration Options.
- (line 24)
+ (line 30)
* configuration option, --with-whiny-user-strftime: Additional Configuration Options.
- (line 29)
+ (line 35)
* configuration options, gawk: Additional Configuration Options.
(line 6)
+* constant regexps: Regexp Usage. (line 57)
* constants, floating-point: Floating-point Constants.
(line 6)
* constants, nondecimal: Nondecimal Data. (line 6)
+* constants, numeric: Scalar Constants. (line 6)
* constants, types of: Constants. (line 6)
* context, floating-point: Floating-point Context.
(line 6)
+* continue program, in debugger: Debugger Execution Control.
+ (line 33)
* continue statement: Continue Statement. (line 6)
* control statements: Statements. (line 6)
-* converting, case: String Functions. (line 524)
-* converting, dates to timestamps: Time Functions. (line 75)
-* converting, during subscripting: Numeric Array Subscripts.
+* controlling array scanning order: Controlling Scanning.
+ (line 12)
+* convert string to lower case: String Functions. (line 521)
+* convert string to number: String Functions. (line 385)
+* convert string to upper case: String Functions. (line 527)
+* converting integer array subscripts: Numeric Array Subscripts.
(line 31)
+* converting, dates to timestamps: Time Functions. (line 76)
* converting, numbers to strings <1>: Bitwise Functions. (line 109)
* converting, numbers to strings: Conversion. (line 6)
* converting, strings to numbers <1>: Bitwise Functions. (line 109)
* converting, strings to numbers: Conversion. (line 6)
* CONVFMT variable <1>: User-modified. (line 28)
* CONVFMT variable: Conversion. (line 29)
-* CONVFMT variable, array subscripts and: Numeric Array Subscripts.
+* CONVFMT variable, and array subscripts: Numeric Array Subscripts.
(line 6)
-* cookie: Glossary. (line 157)
+* cookie: Glossary. (line 149)
* coprocesses <1>: Two-way I/O. (line 44)
* coprocesses: Redirection. (line 102)
* coprocesses, closing: Close Files And Pipes.
(line 6)
* coprocesses, getline from: Getline/Coprocess. (line 6)
-* cos() function: Numeric Functions. (line 15)
+* cos: Numeric Functions. (line 15)
+* cosine: Numeric Functions. (line 15)
* counting: Wc Program. (line 6)
* csh utility: Statements/Lines. (line 44)
* csh utility, POSIXLY_CORRECT environment variable: Options. (line 348)
* csh utility, |& operator, comparison with: Two-way I/O. (line 44)
-* ctime() user-defined function: Function Example. (line 72)
+* ctime() user-defined function: Function Example. (line 73)
* currency symbols, localization: Explaining gettext. (line 103)
+* current system time: Time Functions. (line 66)
* custom.h file: Configuration Philosophy.
(line 30)
+* customized input parser: Input Parsers. (line 6)
+* customized output wrapper: Output Wrappers. (line 6)
+* customized two-way processor: Two-way processors. (line 6)
* cut utility: Cut Program. (line 6)
* cut.awk program: Cut Program. (line 45)
* d debugger command (alias for delete): Breakpoint Control. (line 64)
* d.c., See dark corner: Conventions. (line 38)
-* dark corner <1>: Glossary. (line 197)
+* dark corner <1>: Glossary. (line 189)
* dark corner: Conventions. (line 38)
* dark corner, "0" is actually true: Truth Values. (line 24)
* dark corner, /= operator vs. /=.../ regexp constant: Assignment Ops.
@@ -30070,15 +30899,15 @@ Index
* dark corner, exit statement: Exit Statement. (line 30)
* dark corner, field separators: Field Splitting Summary.
(line 46)
-* dark corner, FILENAME variable <1>: Auto-set. (line 93)
+* dark corner, FILENAME variable <1>: Auto-set. (line 102)
* dark corner, FILENAME variable: Getline Notes. (line 19)
-* dark corner, FNR/NR variables: Auto-set. (line 314)
+* dark corner, FNR/NR variables: Auto-set. (line 323)
* dark corner, format-control characters: Control Letters. (line 18)
* dark corner, FS as null string: Single Character Fields.
(line 20)
-* dark corner, input files: Records. (line 103)
+* dark corner, input files: Records. (line 118)
* dark corner, invoking awk: Command Line. (line 16)
-* dark corner, length() function: String Functions. (line 184)
+* dark corner, length() function: String Functions. (line 180)
* dark corner, locale's decimal point character: Conversion. (line 77)
* dark corner, multiline records: Multiple Line. (line 35)
* dark corner, NF variable, decrementing: Changing Fields. (line 107)
@@ -30089,26 +30918,26 @@ Index
(line 147)
* dark corner, regexp constants, as arguments to user-defined functions: Using Constant Regexps.
(line 43)
-* dark corner, split() function: String Functions. (line 363)
-* dark corner, strings, storing: Records. (line 195)
+* dark corner, split() function: String Functions. (line 359)
+* dark corner, strings, storing: Records. (line 210)
* dark corner, value of ARGV[0]: Auto-set. (line 35)
-* data, fixed-width: Constant Size. (line 9)
+* data, fixed-width: Constant Size. (line 10)
* data-driven languages: Basic High Level. (line 85)
* database, group, reading: Group Functions. (line 6)
* database, users, reading: Passwd Functions. (line 6)
* date utility, GNU: Time Functions. (line 17)
-* date utility, POSIX: Time Functions. (line 262)
-* dates, converting to timestamps: Time Functions. (line 75)
+* date utility, POSIX: Time Functions. (line 263)
+* dates, converting to timestamps: Time Functions. (line 76)
* dates, information related to, localization: Explaining gettext.
(line 115)
-* Davies, Stephen <1>: Contributors. (line 75)
+* Davies, Stephen <1>: Contributors. (line 74)
* Davies, Stephen: Acknowledgments. (line 60)
-* dcgettext() function (gawk) <1>: Programmer i18n. (line 19)
-* dcgettext() function (gawk): I18N Functions. (line 22)
+* dcgettext <1>: Programmer i18n. (line 19)
+* dcgettext: I18N Functions. (line 22)
* dcgettext() function (gawk), portability and: I18N Portability.
(line 33)
-* dcngettext() function (gawk) <1>: Programmer i18n. (line 36)
-* dcngettext() function (gawk): I18N Functions. (line 28)
+* dcngettext <1>: Programmer i18n. (line 36)
+* dcngettext: I18N Functions. (line 28)
* dcngettext() function (gawk), portability and: I18N Portability.
(line 33)
* deadlocks: Two-way I/O. (line 70)
@@ -30208,20 +31037,33 @@ Index
(line 67)
* debugger commands, watch: Viewing And Changing Data.
(line 67)
+* debugger default list amount: Debugger Info. (line 69)
+* debugger history file: Debugger Info. (line 80)
+* debugger history size: Debugger Info. (line 65)
+* debugger options: Debugger Info. (line 57)
+* debugger prompt: Debugger Info. (line 77)
+* debugger, how to start: Debugger Invocation. (line 6)
+* debugger, read commands from a file: Debugger Info. (line 96)
* debugging awk programs: Debugger. (line 6)
* debugging gawk, bug reports: Bugs. (line 9)
* decimal point character, locale specific: Options. (line 263)
* decrement operators: Increment Ops. (line 35)
* default keyword: Switch Statement. (line 6)
* Deifik, Scott <1>: Bugs. (line 70)
-* Deifik, Scott <2>: Contributors. (line 54)
+* Deifik, Scott <2>: Contributors. (line 53)
* Deifik, Scott: Acknowledgments. (line 60)
+* delete ARRAY: Delete. (line 39)
+* delete breakpoint at location: Breakpoint Control. (line 36)
+* delete breakpoint by number: Breakpoint Control. (line 64)
* delete debugger command: Breakpoint Control. (line 64)
* delete statement: Delete. (line 6)
+* delete watchpoint: Viewing And Changing Data.
+ (line 84)
* deleting elements in arrays: Delete. (line 6)
* deleting entire arrays: Delete. (line 39)
* Demaille, Akim: Acknowledgments. (line 60)
-* differences between gawk and awk: String Functions. (line 198)
+* describe call stack frame, in debugger: Debugger Info. (line 27)
+* differences between gawk and awk: String Functions. (line 194)
* differences in awk and gawk, ARGC/ARGV variables: ARGC and ARGV.
(line 88)
* differences in awk and gawk, ARGIND variable: Auto-set. (line 40)
@@ -30236,17 +31078,19 @@ Index
* differences in awk and gawk, BEGINFILE/ENDFILE patterns: BEGINFILE/ENDFILE.
(line 6)
* differences in awk and gawk, BINMODE variable <1>: PC Using.
- (line 34)
+ (line 33)
* differences in awk and gawk, BINMODE variable: User-modified.
(line 23)
* differences in awk and gawk, close() function: Close Files And Pipes.
(line 81)
-* differences in awk and gawk, ERRNO variable: Auto-set. (line 73)
+* differences in awk and gawk, command line directories: Command line directories.
+ (line 6)
+* differences in awk and gawk, ERRNO variable: Auto-set. (line 82)
* differences in awk and gawk, error messages: Special FD. (line 16)
* differences in awk and gawk, FIELDWIDTHS variable: User-modified.
(line 35)
* differences in awk and gawk, FPAT variable: User-modified. (line 45)
-* differences in awk and gawk, FUNCTAB variable: Auto-set. (line 119)
+* differences in awk and gawk, FUNCTAB variable: Auto-set. (line 128)
* differences in awk and gawk, function arguments (gawk): Calling Built-in.
(line 16)
* differences in awk and gawk, getline command: Getline. (line 19)
@@ -30266,83 +31110,95 @@ Index
(line 34)
* differences in awk and gawk, LINT variable: User-modified. (line 98)
* differences in awk and gawk, match() function: String Functions.
- (line 261)
+ (line 257)
* differences in awk and gawk, print/printf statements: Format Modifiers.
(line 13)
-* differences in awk and gawk, PROCINFO array: Auto-set. (line 133)
-* differences in awk and gawk, record separators: Records. (line 117)
+* differences in awk and gawk, PROCINFO array: Auto-set. (line 142)
+* differences in awk and gawk, record separators: Records. (line 132)
* differences in awk and gawk, regexp constants: Using Constant Regexps.
(line 43)
* differences in awk and gawk, regular expressions: Case-sensitivity.
(line 26)
-* differences in awk and gawk, RS/RT variables: Records. (line 172)
-* differences in awk and gawk, RT variable: Auto-set. (line 266)
+* differences in awk and gawk, RS/RT variables: Records. (line 187)
+* differences in awk and gawk, RT variable: Auto-set. (line 275)
* differences in awk and gawk, single-character fields: Single Character Fields.
(line 6)
* differences in awk and gawk, split() function: String Functions.
- (line 351)
+ (line 347)
* differences in awk and gawk, strings: Scalar Constants. (line 20)
-* differences in awk and gawk, strings, storing: Records. (line 191)
-* differences in awk and gawk, strtonum() function (gawk): String Functions.
- (line 406)
-* differences in awk and gawk, SYMTAB variable: Auto-set. (line 274)
+* differences in awk and gawk, strings, storing: Records. (line 206)
+* differences in awk and gawk, SYMTAB variable: Auto-set. (line 283)
* differences in awk and gawk, TEXTDOMAIN variable: User-modified.
(line 162)
* differences in awk and gawk, trunc-mod operation: Arithmetic Ops.
(line 66)
* directories, command line: Command line directories.
(line 6)
-* directories, searching <1>: Igawk Program. (line 368)
-* directories, searching <2>: AWKLIBPATH Variable. (line 6)
-* directories, searching: AWKPATH Variable. (line 6)
+* directories, searching: Igawk Program. (line 368)
+* directories, searching for shared libraries: AWKLIBPATH Variable.
+ (line 6)
+* directories, searching for source files: AWKPATH Variable. (line 6)
+* disable breakpoint: Breakpoint Control. (line 69)
* disable debugger command: Breakpoint Control. (line 69)
* display debugger command: Viewing And Changing Data.
(line 8)
+* display debugger options: Debugger Info. (line 57)
* division: Arithmetic Ops. (line 44)
-* do-while statement <1>: Do Statement. (line 6)
-* do-while statement: Regexp Usage. (line 19)
+* do-while statement: Do Statement. (line 6)
+* do-while statement, use of regexps in: Regexp Usage. (line 19)
* documentation, of awk programs: Library Names. (line 6)
* documentation, online: Manual History. (line 11)
* documents, searching: Dupword Program. (line 6)
-* dollar sign ($): Regexp Operators. (line 35)
* dollar sign ($), $ field operator <1>: Precedence. (line 43)
* dollar sign ($), $ field operator: Fields. (line 19)
* dollar sign ($), incrementing fields and arrays: Increment Ops.
(line 30)
+* dollar sign ($), regexp operator: Regexp Operators. (line 35)
* double precision floating-point: General Arithmetic. (line 21)
-* double quote (") <1>: Quoting. (line 37)
-* double quote ("): Read Terminal. (line 25)
+* double quote (") in shell commands: Read Terminal. (line 25)
* double quote ("), in regexp constants: Computed Regexps. (line 28)
+* double quote ("), in shell commands: Quoting. (line 37)
* down debugger command: Execution Stack. (line 21)
* Drepper, Ulrich: Acknowledgments. (line 52)
+* dump all variables of a program: Options. (line 93)
* dump debugger command: Miscellaneous Debugger Commands.
(line 9)
* dupword.awk program: Dupword Program. (line 31)
+* dynamic profiling: Profiling. (line 179)
+* dynamically loaded extensions: Dynamic Extensions. (line 6)
* e debugger command (alias for enable): Breakpoint Control. (line 73)
* EBCDIC: Ordinal Functions. (line 45)
+* effective group ID of gawk user: Auto-set. (line 147)
+* effective user ID of gawk user: Auto-set. (line 151)
* egrep utility <1>: Egrep Program. (line 6)
* egrep utility: Bracket Expressions. (line 24)
* egrep.awk program: Egrep Program. (line 54)
-* elements in arrays: Reference to Elements.
- (line 6)
-* elements in arrays, assigning: Assigning Elements. (line 6)
+* elements in arrays, assigning values: Assigning Elements. (line 6)
* elements in arrays, deleting: Delete. (line 6)
-* elements in arrays, order of: Scanning an Array. (line 48)
+* elements in arrays, order of access by in operator: Scanning an Array.
+ (line 48)
* elements in arrays, scanning: Scanning an Array. (line 6)
+* elements of arrays: Reference to Elements.
+ (line 6)
* email address for bug reports, bug-gawk@gnu.org: Bugs. (line 30)
* EMISTERED: TCP/IP Networking. (line 6)
+* empty array elements: Reference to Elements.
+ (line 18)
* empty pattern: Empty. (line 6)
+* empty strings: Records. (line 122)
* empty strings, See null strings: Regexp Field Splitting.
(line 43)
+* enable breakpoint: Breakpoint Control. (line 73)
* enable debugger command: Breakpoint Control. (line 73)
* end debugger command: Debugger Execution Control.
(line 10)
-* END pattern <1>: Profiling. (line 62)
+* END pattern <1>: Using BEGIN/END. (line 6)
* END pattern: BEGIN/END. (line 6)
+* END pattern, and profiling: Profiling. (line 62)
* END pattern, assert() user-defined function and: Assert Function.
(line 75)
* END pattern, backslash continuation and: Egrep Program. (line 220)
-* END pattern, Boolean patterns and: Expression Patterns. (line 73)
+* END pattern, Boolean patterns and: Expression Patterns. (line 70)
* END pattern, exit statement and: Exit Statement. (line 12)
* END pattern, next/nextfile statements and <1>: Next Statement.
(line 45)
@@ -30351,36 +31207,40 @@ Index
* END pattern, operators and: Using BEGIN/END. (line 17)
* END pattern, print statement and: I/O And BEGIN/END. (line 16)
* ENDFILE pattern: BEGINFILE/ENDFILE. (line 6)
-* ENDFILE pattern, Boolean patterns and: Expression Patterns. (line 73)
+* ENDFILE pattern, Boolean patterns and: Expression Patterns. (line 70)
* endfile() user-defined function: Filetrans Function. (line 62)
* endgrent() function (C library): Group Functions. (line 215)
* endgrent() user-defined function: Group Functions. (line 218)
* endpwent() function (C library): Passwd Functions. (line 210)
* endpwent() user-defined function: Passwd Functions. (line 213)
* ENVIRON array: Auto-set. (line 60)
-* environment variables: Auto-set. (line 60)
-* epoch, definition of: Glossary. (line 243)
+* environment variables used by gawk: Environment Variables.
+ (line 6)
+* environment variables, in ENVIRON array: Auto-set. (line 60)
+* epoch, definition of: Glossary. (line 235)
* equals sign (=), = operator: Assignment Ops. (line 6)
* equals sign (=), == operator <1>: Precedence. (line 65)
* equals sign (=), == operator: Comparison Operators.
(line 11)
* EREs (Extended Regular Expressions): Bracket Expressions. (line 24)
* ERRNO variable <1>: TCP/IP Networking. (line 54)
-* ERRNO variable <2>: Auto-set. (line 73)
-* ERRNO variable <3>: BEGINFILE/ENDFILE. (line 26)
-* ERRNO variable <4>: Close Files And Pipes.
+* ERRNO variable: Auto-set. (line 82)
+* ERRNO variable, with BEGINFILE pattern: BEGINFILE/ENDFILE. (line 26)
+* ERRNO variable, with close() function: Close Files And Pipes.
(line 138)
-* ERRNO variable: Getline. (line 19)
+* ERRNO variable, with getline command: Getline. (line 19)
* error handling: Special FD. (line 16)
-* error handling, ERRNO variable and: Auto-set. (line 73)
+* error handling, ERRNO variable and: Auto-set. (line 82)
* error output: Special FD. (line 6)
* escape processing, gsub()/gensub()/sub() functions: Gory Details.
(line 6)
-* escape sequences: Escape Sequences. (line 6)
+* escape sequences, in strings: Escape Sequences. (line 6)
* eval debugger command: Viewing And Changing Data.
(line 23)
+* evaluate expressions, in debugger: Viewing And Changing Data.
+ (line 23)
* evaluation order: Increment Ops. (line 60)
-* evaluation order, concatenation: Concatenation. (line 42)
+* evaluation order, concatenation: Concatenation. (line 41)
* evaluation order, functions: Calling Built-in. (line 30)
* examining fields: Fields. (line 6)
* exclamation point (!), ! operator <1>: Egrep Program. (line 170)
@@ -30400,9 +31260,13 @@ Index
* exclamation point (!), !~ operator: Regexp Usage. (line 19)
* exit statement: Exit Statement. (line 6)
* exit status, of gawk: Exit Status. (line 6)
-* exp() function: Numeric Functions. (line 18)
+* exit status, of VMS: VMS Running. (line 29)
+* exit the debugger: Miscellaneous Debugger Commands.
+ (line 99)
+* exp: Numeric Functions. (line 18)
* expand utility: Very Simple. (line 69)
-* Expat XML parser library: gawkextlib. (line 33)
+* Expat XML parser library: gawkextlib. (line 35)
+* exponent: Numeric Functions. (line 18)
* expressions: Expressions. (line 6)
* expressions, as patterns: Expression Patterns. (line 6)
* expressions, assignment: Assignment Ops. (line 6)
@@ -30414,6 +31278,20 @@ Index
(line 9)
* expressions, selecting: Conditional Exp. (line 6)
* Extended Regular Expressions (EREs): Bracket Expressions. (line 24)
+* extension API: Extension API Description.
+ (line 6)
+* extension API informational variables: Extension API Informational Variables.
+ (line 6)
+* extension API version: Extension Versioning.
+ (line 6)
+* extension API, version number: Auto-set. (line 238)
+* extension example: Extension Example. (line 6)
+* extension registration: Registration Functions.
+ (line 6)
+* extension search path: Finding Extensions. (line 6)
+* extensions distributed with gawk: Extension Samples. (line 6)
+* extensions, allocating memory: Memory Allocation Functions.
+ (line 6)
* extensions, Brian Kernighan's awk <1>: Common Extensions. (line 6)
* extensions, Brian Kernighan's awk: BTL. (line 6)
* extensions, common, ** operator: Arithmetic Ops. (line 30)
@@ -30422,47 +31300,49 @@ Index
* extensions, common, /dev/stdin special file: Special FD. (line 46)
* extensions, common, /dev/stdout special file: Special FD. (line 46)
* extensions, common, \x escape sequence: Escape Sequences. (line 61)
-* extensions, common, BINMODE variable: PC Using. (line 34)
+* extensions, common, BINMODE variable: PC Using. (line 33)
* extensions, common, delete to delete entire arrays: Delete. (line 39)
+* extensions, common, fflush() function: I/O Functions. (line 40)
* extensions, common, func keyword: Definition Syntax. (line 83)
* extensions, common, length() applied to an array: String Functions.
- (line 198)
-* extensions, common, RS as a regexp: Records. (line 120)
+ (line 194)
+* extensions, common, RS as a regexp: Records. (line 135)
* extensions, common, single character fields: Single Character Fields.
(line 6)
* extensions, in gawk, not in POSIX awk: POSIX/GNU. (line 6)
* extensions, mawk: Common Extensions. (line 6)
+* extensions, where to find: gawkextlib. (line 6)
* extract.awk program: Extract Program. (line 79)
* extraction, of marked strings (internationalization): String Extraction.
(line 6)
* f debugger command (alias for frame): Execution Stack. (line 25)
* false, logical: Truth Values. (line 6)
* FDL (Free Documentation License): GNU Free Documentation License.
- (line 6)
+ (line 7)
* features, adding to gawk: Adding Code. (line 6)
* features, advanced, See advanced features: Obsolete. (line 6)
* features, deprecated: Obsolete. (line 6)
* features, undocumented: Undocumented. (line 6)
-* Fenlason, Jay <1>: Contributors. (line 19)
+* Fenlason, Jay <1>: Contributors. (line 18)
* Fenlason, Jay: History. (line 30)
-* fflush() function: I/O Functions. (line 25)
+* fflush: I/O Functions. (line 25)
* field numbers: Nonconstant Fields. (line 6)
* field operator $: Fields. (line 19)
* field operators, dollar sign as: Fields. (line 19)
+* field separator, in multiline records: Multiple Line. (line 41)
+* field separator, on command line: Command Line Field Separator.
+ (line 6)
+* field separator, POSIX and: Field Splitting Summary.
+ (line 40)
* field separators <1>: User-modified. (line 56)
-* field separators: Field Separators. (line 14)
-* field separators, choice of: Field Separators. (line 50)
+* field separators: Field Separators. (line 15)
+* field separators, choice of: Field Separators. (line 51)
* field separators, FIELDWIDTHS variable and: User-modified. (line 35)
* field separators, FPAT variable and: User-modified. (line 45)
-* field separators, in multiline records: Multiple Line. (line 41)
-* field separators, on command line: Command Line Field Separator.
- (line 6)
-* field separators, POSIX and <1>: Field Splitting Summary.
- (line 40)
* field separators, POSIX and: Fields. (line 6)
* field separators, regular expressions as <1>: Regexp Field Splitting.
(line 6)
-* field separators, regular expressions as: Field Separators. (line 50)
+* field separators, regular expressions as: Field Separators. (line 51)
* field separators, See Also OFS: Changing Fields. (line 64)
* field separators, spaces as: Cut Program. (line 109)
* fields <1>: Basic High Level. (line 73)
@@ -30475,16 +31355,16 @@ Index
* fields, number of: Fields. (line 33)
* fields, numbers: Nonconstant Fields. (line 6)
* fields, printing: Print Examples. (line 21)
-* fields, separating: Field Separators. (line 14)
+* fields, separating: Field Separators. (line 15)
* fields, single-character: Single Character Fields.
(line 6)
* FIELDWIDTHS variable <1>: User-modified. (line 35)
-* FIELDWIDTHS variable: Constant Size. (line 22)
+* FIELDWIDTHS variable: Constant Size. (line 23)
* file descriptors: Special FD. (line 6)
* file names, distinguishing: Auto-set. (line 52)
* file names, in compatibility mode: Special Caveats. (line 9)
* file names, standard streams in gawk: Special FD. (line 46)
-* FILENAME variable <1>: Auto-set. (line 93)
+* FILENAME variable <1>: Auto-set. (line 102)
* FILENAME variable: Reading Files. (line 6)
* FILENAME variable, getline, setting with: Getline Notes. (line 19)
* filenames, assignments as: Ignoring Assigns. (line 6)
@@ -30500,10 +31380,9 @@ Index
* files, /inet/... (gawk): TCP/IP Networking. (line 6)
* files, /inet4/... (gawk): TCP/IP Networking. (line 6)
* files, /inet6/... (gawk): TCP/IP Networking. (line 6)
-* files, as single records: Records. (line 200)
* files, awk programs in: Long. (line 6)
* files, awkprof.out: Profiling. (line 6)
-* files, awkvars.out: Options. (line 107)
+* files, awkvars.out: Options. (line 93)
* files, closing: I/O Functions. (line 10)
* files, descriptors, See file descriptors: Special FD. (line 6)
* files, group: Group Functions. (line 6)
@@ -30530,7 +31409,7 @@ Index
* files, portable object template: Explaining gettext. (line 30)
* files, portable object, converting to message object files: I18N Example.
(line 62)
-* files, portable object, generating: Options. (line 161)
+* files, portable object, generating: Options. (line 147)
* files, processing, ARGIND variable and: Auto-set. (line 47)
* files, reading: Rewind Function. (line 6)
* files, reading, multiline records: Multiple Line. (line 6)
@@ -30539,34 +31418,40 @@ Index
* files, source, search path for: Igawk Program. (line 368)
* files, splitting: Split Program. (line 6)
* files, Texinfo, extracting programs from: Extract Program. (line 6)
+* find substring in string: String Functions. (line 151)
+* finding extensions: Finding Extensions. (line 6)
* finish debugger command: Debugger Execution Control.
(line 39)
-* Fish, Fred: Contributors. (line 51)
-* fixed-width data: Constant Size. (line 9)
+* Fish, Fred: Contributors. (line 50)
+* fixed-width data: Constant Size. (line 10)
* flag variables <1>: Tee Program. (line 20)
* flag variables: Boolean Ops. (line 67)
-* floating-point numbers, arbitrary precision: Arbitrary Precision Arithmetic.
- (line 6)
* floating-point, numbers <1>: Unexpected Results. (line 6)
* floating-point, numbers: General Arithmetic. (line 6)
-* fnmatch extension function: Extension Sample Fnmatch.
+* floating-point, numbers, arbitrary precision: Arbitrary Precision Arithmetic.
(line 6)
-* FNR variable <1>: Auto-set. (line 103)
+* floating-point, VAX/VMS: VMS Running. (line 51)
+* flush buffered output: I/O Functions. (line 25)
+* fnmatch() extension function: Extension Sample Fnmatch.
+ (line 12)
+* FNR variable <1>: Auto-set. (line 112)
* FNR variable: Records. (line 6)
-* FNR variable, changing: Auto-set. (line 314)
+* FNR variable, changing: Auto-set. (line 323)
* for statement: For Statement. (line 6)
* for statement, looping over arrays: Scanning an Array. (line 20)
-* fork extension function: Extension Sample Fork.
+* fork() extension function: Extension Sample Fork.
(line 11)
+* format specifiers: Basic Printf. (line 15)
* format specifiers, mixing regular with positional specifiers: Printf Ordering.
(line 57)
* format specifiers, printf statement: Control Letters. (line 6)
* format specifiers, strftime() function (gawk): Time Functions.
- (line 88)
-* format strings: Basic Printf. (line 15)
+ (line 89)
+* format time string: Time Functions. (line 48)
* formats, numeric output: OFMT. (line 6)
* formatting output: Printf. (line 6)
-* forward slash (/): Regexp. (line 10)
+* formatting strings: String Functions. (line 378)
+* forward slash (/) to enclose regular expressions: Regexp. (line 10)
* forward slash (/), / operator: Precedence. (line 55)
* forward slash (/), /= operator <1>: Precedence. (line 95)
* forward slash (/), /= operator: Assignment Ops. (line 129)
@@ -30575,34 +31460,36 @@ Index
* forward slash (/), patterns and: Expression Patterns. (line 24)
* FPAT variable <1>: User-modified. (line 45)
* FPAT variable: Splitting By Content.
- (line 26)
+ (line 27)
* frame debugger command: Execution Stack. (line 25)
* Free Documentation License (FDL): GNU Free Documentation License.
- (line 6)
-* Free Software Foundation (FSF) <1>: Glossary. (line 305)
+ (line 7)
+* Free Software Foundation (FSF) <1>: Glossary. (line 297)
* Free Software Foundation (FSF) <2>: Getting. (line 10)
* Free Software Foundation (FSF): Manual History. (line 6)
-* FreeBSD: Glossary. (line 624)
+* FreeBSD: Glossary. (line 616)
* FS variable <1>: User-modified. (line 56)
-* FS variable: Field Separators. (line 14)
+* FS variable: Field Separators. (line 15)
* FS variable, --field-separator option and: Options. (line 21)
* FS variable, as null string: Single Character Fields.
(line 20)
* FS variable, as TAB character: Options. (line 259)
-* FS variable, changing value of: Field Separators. (line 34)
+* FS variable, changing value of: Field Separators. (line 35)
* FS variable, running awk programs and: Cut Program. (line 68)
* FS variable, setting from command line: Command Line Field Separator.
(line 6)
* FS, containing ^: Regexp Field Splitting.
(line 59)
-* FSF (Free Software Foundation) <1>: Glossary. (line 305)
+* FS, in multiline records: Multiple Line. (line 41)
+* FSF (Free Software Foundation) <1>: Glossary. (line 297)
* FSF (Free Software Foundation) <2>: Getting. (line 10)
* FSF (Free Software Foundation): Manual History. (line 6)
-* fts extension function: Extension Sample File Functions.
+* fts() extension function: Extension Sample File Functions.
(line 77)
-* FUNCTAB array: Auto-set. (line 119)
+* FUNCTAB array: Auto-set. (line 128)
* function calls: Function Calls. (line 6)
* function calls, indirect: Indirect Calls. (line 6)
+* function definition example: Function Example. (line 6)
* function pointers: Indirect Calls. (line 6)
* functions, arrays as parameters to: Pass By Value/Reference.
(line 47)
@@ -30639,16 +31526,17 @@ Index
* functions, undefined: Pass By Value/Reference.
(line 71)
* functions, user-defined: User-defined. (line 6)
-* functions, user-defined, calling: Calling A Function. (line 6)
-* functions, user-defined, counts: Profiling. (line 129)
+* functions, user-defined, calling: Function Caveats. (line 6)
+* functions, user-defined, counts, in a profile: Profiling. (line 137)
* functions, user-defined, library of: Library Functions. (line 6)
* functions, user-defined, next/nextfile statements and <1>: Nextfile Statement.
(line 47)
* functions, user-defined, next/nextfile statements and: Next Statement.
(line 45)
* G-d: Acknowledgments. (line 78)
-* Garfinkle, Scott: Contributors. (line 35)
-* gawk program, dynamic profiling: Profiling. (line 172)
+* Garfinkle, Scott: Contributors. (line 34)
+* gawk program, dynamic profiling: Profiling. (line 179)
+* gawk version: Auto-set. (line 213)
* gawk, ARGIND variable in: Other Arguments. (line 12)
* gawk, awk and <1>: This Manual. (line 14)
* gawk, awk and: Preface. (line 23)
@@ -30657,7 +31545,7 @@ Index
* gawk, built-in variables and: Built-in Variables. (line 14)
* gawk, character classes and: Bracket Expressions. (line 90)
* gawk, coding style in: Adding Code. (line 38)
-* gawk, command-line options: GNU Regexp Operators.
+* gawk, command-line options, and regular expressions: GNU Regexp Operators.
(line 70)
* gawk, comparison operators and: Comparison Operators.
(line 50)
@@ -30669,7 +31557,7 @@ Index
* gawk, distribution: Distribution contents.
(line 6)
* gawk, ERRNO variable in <1>: TCP/IP Networking. (line 54)
-* gawk, ERRNO variable in <2>: Auto-set. (line 73)
+* gawk, ERRNO variable in <2>: Auto-set. (line 82)
* gawk, ERRNO variable in <3>: BEGINFILE/ENDFILE. (line 26)
* gawk, ERRNO variable in <4>: Close Files And Pipes.
(line 138)
@@ -30680,19 +31568,19 @@ Index
* gawk, features, advanced: Advanced Features. (line 6)
* gawk, field separators and: User-modified. (line 77)
* gawk, FIELDWIDTHS variable in <1>: User-modified. (line 35)
-* gawk, FIELDWIDTHS variable in: Constant Size. (line 22)
+* gawk, FIELDWIDTHS variable in: Constant Size. (line 23)
* gawk, file names in: Special Files. (line 6)
* gawk, format-control characters: Control Letters. (line 18)
* gawk, FPAT variable in <1>: User-modified. (line 45)
* gawk, FPAT variable in: Splitting By Content.
- (line 26)
-* gawk, FUNCTAB array in: Auto-set. (line 119)
+ (line 27)
+* gawk, FUNCTAB array in: Auto-set. (line 128)
* gawk, function arguments and: Calling Built-in. (line 16)
* gawk, hexadecimal numbers and: Nondecimal-numbers. (line 42)
* gawk, IGNORECASE variable in <1>: Array Sorting Functions.
- (line 81)
-* gawk, IGNORECASE variable in <2>: String Functions. (line 29)
-* gawk, IGNORECASE variable in <3>: Array Intro. (line 92)
+ (line 83)
+* gawk, IGNORECASE variable in <2>: String Functions. (line 48)
+* gawk, IGNORECASE variable in <3>: Array Intro. (line 91)
* gawk, IGNORECASE variable in <4>: User-modified. (line 82)
* gawk, IGNORECASE variable in: Case-sensitivity. (line 26)
* gawk, implementation issues: Notes. (line 6)
@@ -30710,14 +31598,14 @@ Index
* gawk, line continuation in: Conditional Exp. (line 34)
* gawk, LINT variable in: User-modified. (line 98)
* gawk, list of contributors to: Contributors. (line 6)
-* gawk, MS-DOS version of: PC Using. (line 11)
-* gawk, MS-Windows version of: PC Using. (line 11)
+* gawk, MS-DOS version of: PC Using. (line 10)
+* gawk, MS-Windows version of: PC Using. (line 10)
* gawk, newlines in: Statements/Lines. (line 12)
* gawk, octal numbers and: Nondecimal-numbers. (line 42)
-* gawk, OS/2 version of: PC Using. (line 11)
+* gawk, OS/2 version of: PC Using. (line 10)
* gawk, PROCINFO array in <1>: Two-way I/O. (line 116)
* gawk, PROCINFO array in <2>: Time Functions. (line 47)
-* gawk, PROCINFO array in: Auto-set. (line 133)
+* gawk, PROCINFO array in: Auto-set. (line 142)
* gawk, regexp constants and: Using Constant Regexps.
(line 28)
* gawk, regular expressions, case sensitivity: Case-sensitivity.
@@ -30725,16 +31613,14 @@ Index
* gawk, regular expressions, operators: GNU Regexp Operators.
(line 6)
* gawk, regular expressions, precedence: Regexp Operators. (line 161)
-* gawk, RT variable in <1>: Auto-set. (line 266)
-* gawk, RT variable in <2>: Getline/Variable/File.
- (line 10)
-* gawk, RT variable in <3>: Multiple Line. (line 129)
-* gawk, RT variable in: Records. (line 117)
+* gawk, RT variable in <1>: Auto-set. (line 275)
+* gawk, RT variable in <2>: Multiple Line. (line 129)
+* gawk, RT variable in: Records. (line 132)
* gawk, See Also awk: Preface. (line 36)
* gawk, source code, obtaining: Getting. (line 6)
-* gawk, splitting fields and: Constant Size. (line 87)
+* gawk, splitting fields and: Constant Size. (line 88)
* gawk, string-translation functions: I18N Functions. (line 6)
-* gawk, SYMTAB array in: Auto-set. (line 274)
+* gawk, SYMTAB array in: Auto-set. (line 283)
* gawk, TEXTDOMAIN variable in: User-modified. (line 162)
* gawk, timestamps: Time Functions. (line 6)
* gawk, uses for: Preface. (line 36)
@@ -30742,11 +31628,13 @@ Index
* gawk, VMS version of: VMS Installation. (line 6)
* gawk, word-boundary operator: GNU Regexp Operators.
(line 63)
+* gawkextlib: gawkextlib. (line 6)
* gawkextlib project: gawkextlib. (line 6)
-* General Public License (GPL): Glossary. (line 314)
+* General Public License (GPL): Glossary. (line 306)
* General Public License, See GPL: Manual History. (line 11)
-* gensub() function (gawk) <1>: String Functions. (line 86)
-* gensub() function (gawk): Using Constant Regexps.
+* generate time values: Time Functions. (line 25)
+* gensub <1>: String Functions. (line 82)
+* gensub: Using Constant Regexps.
(line 43)
* gensub() function (gawk), escape processing: Gory Details. (line 6)
* getaddrinfo() function (C library): TCP/IP Networking. (line 38)
@@ -30771,6 +31659,8 @@ Index
* getline command, FILENAME variable and: Getline Notes. (line 19)
* getline command, return values: Getline. (line 19)
* getline command, variants: Getline Summary. (line 6)
+* getline from a file: Getline/File. (line 6)
+* getline into a variable: Getline/Variable. (line 6)
* getline statement, BEGINFILE/ENDFILE patterns and: BEGINFILE/ENDFILE.
(line 54)
* getlocaltime() user-defined function: Getlocaltime Function.
@@ -30786,95 +31676,105 @@ Index
* gettext library: Explaining gettext. (line 6)
* gettext library, locale categories: Explaining gettext. (line 80)
* gettext() function (C library): Explaining gettext. (line 62)
-* gettimeofday extension function: Extension Sample Time.
+* gettimeofday() extension function: Extension Sample Time.
(line 13)
-* GMP: Arbitrary Precision Arithmetic.
- (line 6)
+* git utility <1>: Adding Code. (line 111)
+* git utility <2>: Accessing The Source.
+ (line 10)
+* git utility <3>: Other Versions. (line 29)
+* git utility: gawkextlib. (line 29)
+* git, use of for gawk source code: Derived Files. (line 6)
+* GMP: Gawk and MPFR. (line 6)
* GNITS mailing list: Acknowledgments. (line 52)
* GNU awk, See gawk: Preface. (line 49)
* GNU Free Documentation License: GNU Free Documentation License.
- (line 6)
-* GNU General Public License: Glossary. (line 314)
-* GNU Lesser General Public License: Glossary. (line 405)
+ (line 7)
+* GNU General Public License: Glossary. (line 306)
+* GNU Lesser General Public License: Glossary. (line 397)
* GNU long options <1>: Options. (line 6)
* GNU long options: Command Line. (line 13)
-* GNU long options, printing list of: Options. (line 168)
-* GNU Project <1>: Glossary. (line 323)
+* GNU long options, printing list of: Options. (line 154)
+* GNU Project <1>: Glossary. (line 315)
* GNU Project: Manual History. (line 11)
-* GNU/Linux <1>: Glossary. (line 624)
+* GNU/Linux <1>: Glossary. (line 616)
* GNU/Linux <2>: I18N Example. (line 55)
* GNU/Linux: Manual History. (line 28)
-* GPL (General Public License) <1>: Glossary. (line 314)
+* Gordon, Assaf: Contributors. (line 105)
+* GPL (General Public License) <1>: Glossary. (line 306)
* GPL (General Public License): Manual History. (line 11)
-* GPL (General Public License), printing: Options. (line 102)
+* GPL (General Public License), printing: Options. (line 88)
* grcat program: Group Functions. (line 16)
-* Grigera, Juan: Contributors. (line 58)
+* Grigera, Juan: Contributors. (line 57)
* group database, reading: Group Functions. (line 6)
* group file: Group Functions. (line 6)
+* group ID of gawk user: Auto-set. (line 186)
* groups, information about: Group Functions. (line 6)
-* gsub() function <1>: String Functions. (line 139)
-* gsub() function: Using Constant Regexps.
+* gsub <1>: String Functions. (line 135)
+* gsub: Using Constant Regexps.
(line 43)
-* gsub() function, arguments of: String Functions. (line 464)
+* gsub() function, arguments of: String Functions. (line 460)
* gsub() function, escape processing: Gory Details. (line 6)
* h debugger command (alias for help): Miscellaneous Debugger Commands.
(line 66)
-* Hankerson, Darrel <1>: Contributors. (line 61)
+* Hankerson, Darrel <1>: Contributors. (line 60)
* Hankerson, Darrel: Acknowledgments. (line 60)
-* Haque, John: Contributors. (line 104)
+* Haque, John: Contributors. (line 108)
* Hartholz, Elaine: Acknowledgments. (line 38)
* Hartholz, Marshall: Acknowledgments. (line 38)
-* Hasegawa, Isamu: Contributors. (line 95)
+* Hasegawa, Isamu: Contributors. (line 94)
* help debugger command: Miscellaneous Debugger Commands.
(line 66)
* hexadecimal numbers: Nondecimal-numbers. (line 6)
* hexadecimal values, enabling interpretation of: Options. (line 207)
+* history expansion, in debugger: Readline Support. (line 6)
* histsort.awk program: History Sorting. (line 25)
* Hughes, Phil: Acknowledgments. (line 43)
-* HUP signal: Profiling. (line 204)
+* HUP signal, for dynamic profiling: Profiling. (line 211)
* hyphen (-), - operator: Precedence. (line 52)
* hyphen (-), -- operator <1>: Precedence. (line 46)
* hyphen (-), -- operator: Increment Ops. (line 48)
* hyphen (-), -= operator <1>: Precedence. (line 95)
* hyphen (-), -= operator: Assignment Ops. (line 129)
-* hyphen (-), filenames beginning with: Options. (line 73)
+* hyphen (-), filenames beginning with: Options. (line 59)
* hyphen (-), in bracket expressions: Bracket Expressions. (line 17)
* i debugger command (alias for info): Debugger Info. (line 13)
* id utility: Id Program. (line 6)
* id.awk program: Id Program. (line 30)
* IEEE-754 format: Floating-point Representation.
(line 6)
-* if statement <1>: If Statement. (line 6)
-* if statement: Regexp Usage. (line 19)
+* if statement: If Statement. (line 6)
* if statement, actions, changing: Ranges. (line 25)
+* if statement, use of regexps in: Regexp Usage. (line 19)
* igawk.sh program: Igawk Program. (line 124)
+* ignore breakpoint: Breakpoint Control. (line 87)
* ignore debugger command: Breakpoint Control. (line 87)
-* IGNORECASE variable <1>: Array Sorting Functions.
- (line 81)
-* IGNORECASE variable <2>: String Functions. (line 29)
-* IGNORECASE variable <3>: Array Intro. (line 92)
-* IGNORECASE variable <4>: User-modified. (line 82)
-* IGNORECASE variable: Case-sensitivity. (line 26)
-* IGNORECASE variable, array sorting and: Array Sorting Functions.
- (line 81)
-* IGNORECASE variable, array subscripts and: Array Intro. (line 92)
+* IGNORECASE variable: User-modified. (line 82)
+* IGNORECASE variable, and array indices: Array Intro. (line 91)
+* IGNORECASE variable, and array sorting functions: Array Sorting Functions.
+ (line 83)
* IGNORECASE variable, in example programs: Library Functions.
(line 53)
+* IGNORECASE variable, with ~ and !~ operators: Case-sensitivity.
+ (line 26)
+* Illumos: Other Versions. (line 104)
+* Illumos, POSIX-compliant awk: Other Versions. (line 104)
* implementation issues, gawk: Notes. (line 6)
* implementation issues, gawk, debugging: Compatibility Mode. (line 6)
* implementation issues, gawk, limits <1>: Redirection. (line 135)
* implementation issues, gawk, limits: Getline Notes. (line 14)
-* in operator <1>: Id Program. (line 93)
-* in operator <2>: Scanning an Array. (line 17)
-* in operator <3>: Reference to Elements.
- (line 37)
-* in operator <4>: For Statement. (line 75)
-* in operator <5>: Precedence. (line 83)
+* in operator <1>: For Statement. (line 75)
+* in operator <2>: Precedence. (line 83)
* in operator: Comparison Operators.
(line 11)
+* in operator, index existence in multidimensional arrays: Multidimensional.
+ (line 43)
+* in operator, order of array access: Scanning an Array. (line 48)
+* in operator, testing if array element exists: Reference to Elements.
+ (line 37)
+* in operator, use in loops: Scanning an Array. (line 17)
* increment operators: Increment Ops. (line 6)
-* index() function: String Functions. (line 155)
-* indexing arrays: Array Intro. (line 50)
+* index: String Functions. (line 151)
+* indexing arrays: Array Intro. (line 49)
* indirect function calls: Indirect Calls. (line 6)
* infinite precision: Arbitrary Precision Arithmetic.
(line 6)
@@ -30890,7 +31790,8 @@ Index
* input files, reading: Reading Files. (line 6)
* input files, running awk without: Read Terminal. (line 6)
* input files, variable assignments and: Other Arguments. (line 19)
-* input pipeline: Getline/Pipe. (line 10)
+* input pipeline: Getline/Pipe. (line 9)
+* input record, length of: String Functions. (line 171)
* input redirection: Getline/File. (line 6)
* input, data, nondecimal: Nondecimal Data. (line 6)
* input, explicit: Getline. (line 6)
@@ -30899,17 +31800,21 @@ Index
* input, splitting into records: Records. (line 6)
* input, standard <1>: Special FD. (line 6)
* input, standard: Read Terminal. (line 6)
+* input/output functions: I/O Functions. (line 6)
* input/output, binary: User-modified. (line 10)
* input/output, from BEGIN and END: I/O And BEGIN/END. (line 6)
* input/output, two-way: Two-way I/O. (line 44)
* insomnia, cure for: Alarm Program. (line 6)
* installation, VMS: VMS Installation. (line 6)
* installing gawk: Installation. (line 6)
-* INT signal (MS-Windows): Profiling. (line 207)
-* int() function: Numeric Functions. (line 23)
-* integer, arbitrary precision: Arbitrary Precision Integers.
- (line 6)
+* instruction tracing, in debugger: Debugger Info. (line 89)
+* int: Numeric Functions. (line 23)
+* INT signal (MS-Windows): Profiling. (line 214)
+* integer array indices: Numeric Array Subscripts.
+ (line 31)
* integers: General Arithmetic. (line 6)
+* integers, arbitrary precision: Arbitrary Precision Integers.
+ (line 6)
* integers, unsigned: General Arithmetic. (line 15)
* interacting with other programs: I/O Functions. (line 72)
* internationalization <1>: I18N and L10N. (line 6)
@@ -30928,39 +31833,43 @@ Index
* internationalization, localization, portability and: I18N Portability.
(line 6)
* internationalizing a program: Explaining gettext. (line 6)
-* interpreted programs <1>: Glossary. (line 365)
+* interpreted programs <1>: Glossary. (line 357)
* interpreted programs: Basic High Level. (line 15)
-* interval expressions: Regexp Operators. (line 116)
+* interval expressions, regexp operator: Regexp Operators. (line 116)
* inventory-shipped file: Sample Data Files. (line 32)
-* isarray() function (gawk): Type Functions. (line 11)
-* ISO: Glossary. (line 376)
-* ISO 8859-1: Glossary. (line 141)
-* ISO Latin-1: Glossary. (line 141)
+* invoke shell command: I/O Functions. (line 72)
+* isarray: Type Functions. (line 11)
+* ISO: Glossary. (line 368)
+* ISO 8859-1: Glossary. (line 133)
+* ISO Latin-1: Glossary. (line 133)
* Jacobs, Andrew: Passwd Functions. (line 90)
-* Jaegermann, Michal <1>: Contributors. (line 46)
+* Jaegermann, Michal <1>: Contributors. (line 45)
* Jaegermann, Michal: Acknowledgments. (line 60)
-* Java implementation of awk: Other Versions. (line 106)
-* Java programming language: Glossary. (line 388)
-* jawk: Other Versions. (line 106)
+* Java implementation of awk: Other Versions. (line 112)
+* Java programming language: Glossary. (line 380)
+* jawk: Other Versions. (line 112)
* Jedi knights: Undocumented. (line 6)
* join() user-defined function: Join Function. (line 18)
-* Kahrs, Ju"rgen <1>: Contributors. (line 71)
+* Kahrs, Ju"rgen <1>: Contributors. (line 70)
* Kahrs, Ju"rgen: Acknowledgments. (line 60)
* Kasal, Stepan: Acknowledgments. (line 60)
* Kenobi, Obi-Wan: Undocumented. (line 6)
-* Kernighan, Brian <1>: Basic Data Typing. (line 55)
-* Kernighan, Brian <2>: Other Versions. (line 13)
-* Kernighan, Brian <3>: Contributors. (line 12)
-* Kernighan, Brian <4>: BTL. (line 6)
-* Kernighan, Brian <5>: Concatenation. (line 6)
-* Kernighan, Brian <6>: Acknowledgments. (line 72)
-* Kernighan, Brian <7>: Conventions. (line 34)
+* Kernighan, Brian <1>: Glossary. (line 143)
+* Kernighan, Brian <2>: Basic Data Typing. (line 55)
+* Kernighan, Brian <3>: Other Versions. (line 13)
+* Kernighan, Brian <4>: Contributors. (line 11)
+* Kernighan, Brian <5>: BTL. (line 6)
+* Kernighan, Brian <6>: Library Functions. (line 12)
+* Kernighan, Brian <7>: Concatenation. (line 6)
+* Kernighan, Brian <8>: Getline/Pipe. (line 6)
+* Kernighan, Brian <9>: Acknowledgments. (line 72)
+* Kernighan, Brian <10>: Conventions. (line 34)
* Kernighan, Brian: History. (line 17)
-* kill command, dynamic profiling: Profiling. (line 181)
+* kill command, dynamic profiling: Profiling. (line 188)
* Knights, jedi: Undocumented. (line 6)
* Knuth, Donald: Arbitrary Precision Arithmetic.
(line 6)
-* Kwok, Conrad: Contributors. (line 35)
+* Kwok, Conrad: Contributors. (line 34)
* l debugger command (alias for list): Miscellaneous Debugger Commands.
(line 72)
* labels.awk program: Labels Program. (line 51)
@@ -30983,12 +31892,15 @@ Index
* left angle bracket (<), <= operator <1>: Precedence. (line 65)
* left angle bracket (<), <= operator: Comparison Operators.
(line 11)
+* left shift: Bitwise Functions. (line 46)
* left shift, bitwise: Bitwise Functions. (line 32)
* leftmost longest match: Multiple Line. (line 26)
-* length() function: String Functions. (line 168)
-* Lesser General Public License (LGPL): Glossary. (line 405)
-* LGPL (Lesser General Public License): Glossary. (line 405)
-* libmawk: Other Versions. (line 114)
+* length: String Functions. (line 164)
+* length of input record: String Functions. (line 171)
+* length of string: String Functions. (line 164)
+* Lesser General Public License (LGPL): Glossary. (line 397)
+* LGPL (Lesser General Public License): Glossary. (line 397)
+* libmawk: Other Versions. (line 120)
* libraries of awk functions: Library Functions. (line 6)
* libraries of awk functions, assertions: Assert Function. (line 6)
* libraries of awk functions, associative arrays and: Library Names.
@@ -31032,50 +31944,66 @@ Index
* lint checking, undefined functions: Pass By Value/Reference.
(line 88)
* LINT variable: User-modified. (line 98)
-* Linux <1>: Glossary. (line 624)
+* Linux <1>: Glossary. (line 616)
* Linux <2>: I18N Example. (line 55)
* Linux: Manual History. (line 28)
+* list all global variables, in debugger: Debugger Info. (line 48)
* list debugger command: Miscellaneous Debugger Commands.
(line 72)
+* list function definitions, in debugger: Debugger Info. (line 30)
* loading, library: Options. (line 173)
-* local variables: Variable Scope. (line 6)
+* local variables, in a function: Variable Scope. (line 6)
* locale categories: Explaining gettext. (line 80)
* locale decimal point character: Options. (line 263)
* locale, definition of: Locales. (line 6)
* localization: I18N and L10N. (line 6)
* localization, See internationalization, localization: I18N and L10N.
(line 6)
+* log: Numeric Functions. (line 30)
* log files, timestamps in: Time Functions. (line 6)
-* log() function: Numeric Functions. (line 30)
+* logarithm: Numeric Functions. (line 30)
* logical false/true: Truth Values. (line 6)
* logical operators, See Boolean expressions: Boolean Ops. (line 6)
* login information: Passwd Functions. (line 16)
* long options: Command Line. (line 13)
* loops: While Statement. (line 6)
+* loops, break statement and: Break Statement. (line 6)
* loops, continue statements and: For Statement. (line 64)
-* loops, count for header: Profiling. (line 123)
+* loops, count for header, in a profile: Profiling. (line 131)
+* loops, do-while: Do Statement. (line 6)
* loops, exiting: Break Statement. (line 6)
+* loops, for, array scanning: Scanning an Array. (line 6)
+* loops, for, iterative: For Statement. (line 6)
* loops, See Also while statement: While Statement. (line 6)
+* loops, while: While Statement. (line 6)
* ls utility: More Complex. (line 15)
-* lshift() function (gawk): Bitwise Functions. (line 46)
+* lshift: Bitwise Functions. (line 46)
* lvalues/rvalues: Assignment Ops. (line 32)
+* mail-list file: Sample Data Files. (line 6)
* mailing labels, printing: Labels Program. (line 6)
* mailing list, GNITS: Acknowledgments. (line 52)
+* Malmberg, John <1>: Bugs. (line 70)
* Malmberg, John: Acknowledgments. (line 60)
* mark parity: Ordinal Functions. (line 45)
* marked string extraction (internationalization): String Extraction.
(line 6)
* marked strings, extracting: String Extraction. (line 6)
* Marx, Groucho: Increment Ops. (line 60)
-* match() function: String Functions. (line 208)
+* match: String Functions. (line 204)
+* match regexp in string: String Functions. (line 204)
* match() function, RSTART/RLENGTH variables: String Functions.
- (line 225)
+ (line 221)
* matching, expressions, See comparison expressions: Typing and Comparison.
(line 9)
* matching, leftmost longest: Multiple Line. (line 26)
* matching, null strings: Gory Details. (line 164)
-* mawk program: Other Versions. (line 44)
-* McPhee, Patrick: Contributors. (line 101)
+* mawk utility <1>: Other Versions. (line 44)
+* mawk utility <2>: Nextfile Statement. (line 47)
+* mawk utility <3>: Concatenation. (line 36)
+* mawk utility <4>: Getline/Pipe. (line 62)
+* mawk utility: Escape Sequences. (line 124)
+* maximum precision supported by MPFR library: Auto-set. (line 227)
+* McPhee, Patrick: Contributors. (line 100)
* message object files: Explaining gettext. (line 41)
* message object files, converting from portable object files: I18N Example.
(line 62)
@@ -31083,15 +32011,18 @@ Index
(line 47)
* message object files, specifying directory of: Explaining gettext.
(line 53)
+* messages from extensions: Printing Messages. (line 6)
+* metacharacters in regular expressions: Regexp Operators. (line 6)
* metacharacters, escape sequences for: Escape Sequences. (line 130)
-* mktime() function (gawk): Time Functions. (line 25)
+* minimum precision supported by MPFR library: Auto-set. (line 230)
+* mktime: Time Functions. (line 25)
* modifiers, in format specifiers: Format Modifiers. (line 6)
* monetary information, localization: Explaining gettext. (line 103)
-* MPFR: Arbitrary Precision Arithmetic.
- (line 6)
+* MPFR: Gawk and MPFR. (line 6)
* msgfmt utility: I18N Example. (line 62)
* multiple precision: Arbitrary Precision Arithmetic.
(line 6)
+* multiple-line records: Multiple Line. (line 6)
* n debugger command (alias for next): Debugger Execution Control.
(line 43)
* names, arrays/variables <1>: Library Names. (line 6)
@@ -31103,7 +32034,7 @@ Index
* namespace issues, functions: Definition Syntax. (line 20)
* nawk utility: Names. (line 17)
* negative zero: Unexpected Results. (line 34)
-* NetBSD: Glossary. (line 624)
+* NetBSD: Glossary. (line 616)
* networks, programming: TCP/IP Networking. (line 6)
* networks, support for: Special Network. (line 6)
* newlines <1>: Boolean Ops. (line 67)
@@ -31120,6 +32051,7 @@ Index
(line 19)
* next debugger command: Debugger Execution Control.
(line 43)
+* next file statement: Feature History. (line 168)
* next statement <1>: Next Statement. (line 6)
* next statement: Boolean Ops. (line 85)
* next statement, BEGIN/END patterns and: I/O And BEGIN/END. (line 37)
@@ -31135,27 +32067,31 @@ Index
(line 47)
* nexti debugger command: Debugger Execution Control.
(line 49)
-* NF variable <1>: Auto-set. (line 108)
+* NF variable <1>: Auto-set. (line 117)
* NF variable: Fields. (line 33)
* NF variable, decrementing: Changing Fields. (line 107)
* ni debugger command (alias for nexti): Debugger Execution Control.
(line 49)
* noassign.awk program: Ignoring Assigns. (line 15)
+* non-existent array elements: Reference to Elements.
+ (line 23)
* not Boolean-logic operator: Boolean Ops. (line 6)
-* NR variable <1>: Auto-set. (line 128)
+* NR variable <1>: Auto-set. (line 137)
* NR variable: Records. (line 6)
-* NR variable, changing: Auto-set. (line 314)
+* NR variable, changing: Auto-set. (line 323)
* null strings <1>: Basic Data Typing. (line 26)
* null strings <2>: Truth Values. (line 6)
* null strings <3>: Regexp Field Splitting.
(line 43)
-* null strings: Records. (line 107)
-* null strings, array elements and: Delete. (line 27)
+* null strings: Records. (line 122)
+* null strings in gawk arguments, quoting and: Quoting. (line 62)
+* null strings, and deleting array elements: Delete. (line 27)
* null strings, as array subscripts: Uninitialized Subscripts.
(line 43)
* null strings, converting numbers to strings: Conversion. (line 21)
* null strings, matching: Gory Details. (line 164)
-* null strings, quoting and: Quoting. (line 62)
+* number as string of bits: Bitwise Functions. (line 109)
+* number of array elements: String Functions. (line 194)
* number sign (#), #! (executable scripts): Executable Scripts.
(line 6)
* number sign (#), commenting: Comments. (line 6)
@@ -31170,9 +32106,9 @@ Index
* numbers, floating-point: General Arithmetic. (line 6)
* numbers, hexadecimal: Nondecimal-numbers. (line 6)
* numbers, octal: Nondecimal-numbers. (line 6)
-* numbers, random: Numeric Functions. (line 64)
* numbers, rounding: Round Function. (line 6)
-* numeric, constants: Scalar Constants. (line 6)
+* numeric constants: Scalar Constants. (line 6)
+* numeric functions: Numeric Functions. (line 6)
* numeric, output format: OFMT. (line 6)
* numeric, strings: Variable Typing. (line 6)
* o debugger command (alias for option): Debugger Info. (line 57)
@@ -31187,7 +32123,7 @@ Index
* OFS variable <1>: User-modified. (line 124)
* OFS variable <2>: Output Separators. (line 6)
* OFS variable: Changing Fields. (line 64)
-* OpenBSD: Glossary. (line 624)
+* OpenBSD: Glossary. (line 616)
* OpenSolaris: Other Versions. (line 96)
* operating systems, BSD-based: Manual History. (line 28)
* operating systems, PC, gawk on: PC Using. (line 6)
@@ -31207,7 +32143,7 @@ Index
* operators, input/output <1>: Precedence. (line 65)
* operators, input/output <2>: Redirection. (line 22)
* operators, input/output <3>: Getline/Coprocess. (line 6)
-* operators, input/output <4>: Getline/Pipe. (line 10)
+* operators, input/output <4>: Getline/Pipe. (line 9)
* operators, input/output: Getline/File. (line 6)
* operators, logical, See Boolean expressions: Boolean Ops. (line 6)
* operators, precedence <1>: Precedence. (line 6)
@@ -31215,37 +32151,35 @@ Index
* operators, relational, See operators, comparison: Typing and Comparison.
(line 9)
* operators, short-circuit: Boolean Ops. (line 57)
-* operators, string: Concatenation. (line 9)
+* operators, string: Concatenation. (line 8)
* operators, string-matching: Regexp Usage. (line 19)
* operators, string-matching, for buffers: GNU Regexp Operators.
(line 48)
* operators, word-boundary (gawk): GNU Regexp Operators.
(line 63)
* option debugger command: Debugger Info. (line 57)
-* options, command-line <1>: Command Line Field Separator.
- (line 6)
-* options, command-line <2>: Options. (line 6)
-* options, command-line: Long. (line 12)
-* options, command-line, end of: Options. (line 68)
+* options, command-line: Options. (line 6)
+* options, command-line, end of: Options. (line 54)
* options, command-line, invoking awk: Command Line. (line 6)
* options, command-line, processing: Getopt Function. (line 6)
* options, deprecated: Obsolete. (line 6)
* options, long <1>: Options. (line 6)
* options, long: Command Line. (line 13)
-* options, printing list of: Options. (line 168)
+* options, printing list of: Options. (line 154)
+* or: Bitwise Functions. (line 49)
* OR bitwise operation: Bitwise Functions. (line 6)
* or Boolean-logic operator: Boolean Ops. (line 6)
-* or() function (gawk): Bitwise Functions. (line 49)
-* ord extension function: Extension Sample Ord.
+* ord() extension function: Extension Sample Ord.
(line 12)
* ord() user-defined function: Ordinal Functions. (line 16)
-* order of evaluation, concatenation: Concatenation. (line 42)
+* order of evaluation, concatenation: Concatenation. (line 41)
* ORS variable <1>: User-modified. (line 129)
* ORS variable: Output Separators. (line 20)
* output field separator, See OFS variable: Changing Fields. (line 64)
* output record separator, See ORS variable: Output Separators.
(line 20)
* output redirection: Redirection. (line 6)
+* output wrapper: Output Wrappers. (line 6)
* output, buffering: I/O Functions. (line 29)
* output, duplicating into files: Tee Program. (line 6)
* output, files, closing: Close Files And Pipes.
@@ -31258,45 +32192,48 @@ Index
* output, standard: Special FD. (line 6)
* p debugger command (alias for print): Viewing And Changing Data.
(line 36)
-* P1003.1 POSIX standard: Glossary. (line 462)
-* parentheses () <1>: Profiling. (line 138)
-* parentheses (): Regexp Operators. (line 79)
+* P1003.1 POSIX standard: Glossary. (line 454)
+* parent process ID of gawk process: Auto-set. (line 195)
+* parentheses (), in a profile: Profiling. (line 146)
+* parentheses (), regexp operator: Regexp Operators. (line 79)
* password file: Passwd Functions. (line 16)
-* patsplit() function (gawk): String Functions. (line 295)
+* patsplit: String Functions. (line 291)
* patterns: Patterns and Actions.
(line 6)
* patterns, comparison expressions as: Expression Patterns. (line 14)
-* patterns, counts: Profiling. (line 110)
+* patterns, counts, in a profile: Profiling. (line 118)
* patterns, default: Very Simple. (line 34)
* patterns, empty: Empty. (line 6)
* patterns, expressions as: Regexp Patterns. (line 6)
* patterns, ranges in: Ranges. (line 6)
-* patterns, regexp constants as: Expression Patterns. (line 36)
+* patterns, regexp constants as: Expression Patterns. (line 34)
* patterns, types of: Pattern Overview. (line 15)
* pawk (profiling version of Brian Kernighan's awk): Other Versions.
(line 78)
-* pawk, awk-like facilities for Python: Other Versions. (line 118)
+* pawk, awk-like facilities for Python: Other Versions. (line 124)
* PC operating systems, gawk on: PC Using. (line 6)
* PC operating systems, gawk on, installing: PC Installation. (line 6)
* percent sign (%), % operator: Precedence. (line 55)
* percent sign (%), %= operator <1>: Precedence. (line 95)
* percent sign (%), %= operator: Assignment Ops. (line 129)
-* period (.): Regexp Operators. (line 43)
+* period (.), regexp operator: Regexp Operators. (line 43)
* Perl: Future Extensions. (line 6)
-* Peters, Arno: Contributors. (line 86)
-* Peterson, Hal: Contributors. (line 40)
-* pipes, closing: Close Files And Pipes.
+* Peters, Arno: Contributors. (line 85)
+* Peterson, Hal: Contributors. (line 39)
+* pipe, closing: Close Files And Pipes.
(line 6)
-* pipes, input: Getline/Pipe. (line 10)
-* pipes, output: Redirection. (line 57)
-* Pitts, Dave <1>: Bugs. (line 73)
+* pipe, input: Getline/Pipe. (line 9)
+* pipe, output: Redirection. (line 57)
+* Pitts, Dave <1>: Bugs. (line 70)
* Pitts, Dave: Acknowledgments. (line 60)
-* plus sign (+): Regexp Operators. (line 102)
+* Plauger, P.J.: Library Functions. (line 12)
+* plug-in: Extension Intro. (line 6)
* plus sign (+), + operator: Precedence. (line 52)
* plus sign (+), ++ operator <1>: Precedence. (line 46)
* plus sign (+), ++ operator: Increment Ops. (line 11)
* plus sign (+), += operator <1>: Precedence. (line 95)
* plus sign (+), += operator: Assignment Ops. (line 82)
+* plus sign (+), regexp operator: Regexp Operators. (line 102)
* pointers to functions: Indirect Calls. (line 6)
* portability: Escape Sequences. (line 94)
* portability, #! (executable scripts): Executable Scripts. (line 33)
@@ -31308,14 +32245,14 @@ Index
(line 112)
* portability, close() function and: Close Files And Pipes.
(line 81)
-* portability, data files as single record: Records. (line 179)
+* portability, data files as single record: Records. (line 194)
* portability, deleting array elements: Delete. (line 56)
* portability, example programs: Library Functions. (line 42)
* portability, functions, defining: Definition Syntax. (line 99)
* portability, gawk: New Ports. (line 6)
* portability, gettext library and: Explaining gettext. (line 10)
* portability, internationalization and: I18N Portability. (line 6)
-* portability, length() function: String Functions. (line 177)
+* portability, length() function: String Functions. (line 173)
* portability, new awk vs. old awk: Conversion. (line 55)
* portability, next statement in user-defined functions: Pass By Value/Reference.
(line 91)
@@ -31323,12 +32260,12 @@ Index
* portability, operators: Increment Ops. (line 60)
* portability, operators, not in POSIX awk: Precedence. (line 98)
* portability, POSIXLY_CORRECT environment variable: Options. (line 353)
-* portability, substr() function: String Functions. (line 514)
+* portability, substr() function: String Functions. (line 510)
* portable object files <1>: Translator i18n. (line 6)
* portable object files: Explaining gettext. (line 36)
* portable object files, converting to message object files: I18N Example.
(line 62)
-* portable object files, generating: Options. (line 161)
+* portable object files, generating: Options. (line 147)
* portable object template files: Explaining gettext. (line 30)
* porting gawk: New Ports. (line 6)
* positional specifiers, printf statement <1>: Printf Ordering.
@@ -31353,14 +32290,14 @@ Index
* POSIX awk, changes in awk versions: POSIX. (line 6)
* POSIX awk, continue statement and: Continue Statement. (line 43)
* POSIX awk, CONVFMT variable and: User-modified. (line 28)
-* POSIX awk, date utility and: Time Functions. (line 262)
+* POSIX awk, date utility and: Time Functions. (line 263)
* POSIX awk, field separators and <1>: Field Splitting Summary.
(line 40)
* POSIX awk, field separators and: Fields. (line 6)
* POSIX awk, FS variable and: User-modified. (line 66)
* POSIX awk, function keyword in: Definition Syntax. (line 83)
* POSIX awk, functions and, gsub()/sub(): Gory Details. (line 54)
-* POSIX awk, functions and, length(): String Functions. (line 177)
+* POSIX awk, functions and, length(): String Functions. (line 173)
* POSIX awk, GNU long options and: Options. (line 15)
* POSIX awk, interval expressions in: Regexp Operators. (line 135)
* POSIX awk, next/nextfile statements and: Next Statement. (line 45)
@@ -31371,7 +32308,7 @@ Index
* POSIX awk, printf format strings and: Format Modifiers. (line 159)
* POSIX awk, regular expressions and: Regexp Operators. (line 161)
* POSIX awk, timestamps and: Time Functions. (line 6)
-* POSIX awk, | I/O operator and: Getline/Pipe. (line 56)
+* POSIX awk, | I/O operator and: Getline/Pipe. (line 55)
* POSIX mode: Options. (line 247)
* POSIX, awk and: Preface. (line 23)
* POSIX, gawk extensions not included in: POSIX/GNU. (line 6)
@@ -31393,6 +32330,8 @@ Index
* print statement, See Also redirection, of output: Redirection.
(line 17)
* print statement, sprintf() function and: Round Function. (line 6)
+* print variables, in debugger: Viewing And Changing Data.
+ (line 36)
* printf debugger command: Viewing And Changing Data.
(line 54)
* printf statement <1>: Printf. (line 6)
@@ -31412,22 +32351,30 @@ Index
* printf statement, sprintf() function and: Round Function. (line 6)
* printf statement, syntax of: Basic Printf. (line 6)
* printing: Printing. (line 6)
-* printing, list of options: Options. (line 168)
+* printing messages from extensions: Printing Messages. (line 6)
+* printing, list of options: Options. (line 154)
* printing, mailing labels: Labels Program. (line 6)
* printing, unduplicated lines of text: Uniq Program. (line 6)
* printing, user information: Id Program. (line 6)
* private variables: Library Names. (line 11)
+* process group idIDof gawk process: Auto-set. (line 189)
+* process ID of gawk process: Auto-set. (line 192)
* processes, two-way communications with: Two-way I/O. (line 23)
* processing data: Basic High Level. (line 6)
-* PROCINFO array <1>: Two-way I/O. (line 116)
-* PROCINFO array <2>: Id Program. (line 15)
-* PROCINFO array <3>: Group Functions. (line 6)
-* PROCINFO array <4>: Passwd Functions. (line 6)
-* PROCINFO array <5>: Time Functions. (line 47)
-* PROCINFO array <6>: Auto-set. (line 133)
-* PROCINFO array: Obsolete. (line 11)
+* PROCINFO array <1>: Passwd Functions. (line 6)
+* PROCINFO array <2>: Time Functions. (line 47)
+* PROCINFO array: Auto-set. (line 142)
+* PROCINFO array, and communications via ptys: Two-way I/O. (line 116)
+* PROCINFO array, and group membership: Group Functions. (line 6)
+* PROCINFO array, and user and group ID numbers: Id Program. (line 15)
+* PROCINFO array, testing the field splitting: Passwd Functions.
+ (line 161)
+* PROCINFO array, uses: Auto-set. (line 248)
+* PROCINFO, values of sorted_in: Controlling Scanning.
+ (line 24)
* profiling awk programs: Profiling. (line 6)
-* profiling awk programs, dynamically: Profiling. (line 172)
+* profiling awk programs, dynamically: Profiling. (line 179)
+* program identifiers: Auto-set. (line 160)
* program, definition of: Getting Started. (line 21)
* programmers, attractiveness of: Two-way I/O. (line 6)
* programming conventions, --non-decimal-data option: Nondecimal Data.
@@ -31445,34 +32392,34 @@ Index
* programming conventions, private variable names: Library Names.
(line 23)
* programming language, recipe for: History. (line 6)
-* Programming languages, Ada: Glossary. (line 20)
+* programming languages, Ada: Glossary. (line 20)
* programming languages, data-driven vs. procedural: Getting Started.
(line 12)
-* Programming languages, Java: Glossary. (line 388)
+* programming languages, Java: Glossary. (line 380)
* programming, basic steps: Basic High Level. (line 20)
* programming, concepts: Basic Concepts. (line 6)
* pwcat program: Passwd Functions. (line 23)
* q debugger command (alias for quit): Miscellaneous Debugger Commands.
(line 99)
-* QSE Awk: Other Versions. (line 124)
-* question mark (?) regexp operator <1>: GNU Regexp Operators.
- (line 59)
-* question mark (?) regexp operator: Regexp Operators. (line 111)
+* QSE Awk: Other Versions. (line 130)
+* Quanstrom, Erik: Alarm Program. (line 8)
* question mark (?), ?: operator: Precedence. (line 92)
-* QuikTrim Awk: Other Versions. (line 128)
+* question mark (?), regexp operator <1>: GNU Regexp Operators.
+ (line 59)
+* question mark (?), regexp operator: Regexp Operators. (line 111)
+* QuikTrim Awk: Other Versions. (line 134)
* quit debugger command: Miscellaneous Debugger Commands.
(line 99)
-* QUIT signal (MS-Windows): Profiling. (line 207)
-* quoting <1>: Comments. (line 27)
-* quoting <2>: Long. (line 26)
-* quoting: Read Terminal. (line 25)
-* quoting, rules for: Quoting. (line 6)
-* quoting, tricks for: Quoting. (line 71)
+* QUIT signal (MS-Windows): Profiling. (line 214)
+* quoting in gawk command lines: Long. (line 26)
+* quoting in gawk command lines, tricks for: Quoting. (line 71)
+* quoting, for small awk programs: Comments. (line 27)
* r debugger command (alias for run): Debugger Execution Control.
(line 62)
* Rakitzis, Byron: History Sorting. (line 25)
+* Ramey, Chet <1>: General Data Types. (line 6)
* Ramey, Chet: Acknowledgments. (line 60)
-* rand() function: Numeric Functions. (line 34)
+* rand: Numeric Functions. (line 34)
* random numbers, Cliff: Cliff Random Function.
(line 6)
* random numbers, rand()/srand() functions: Numeric Functions.
@@ -31480,55 +32427,61 @@ Index
* random numbers, seed of: Numeric Functions. (line 64)
* range expressions (regexps): Bracket Expressions. (line 6)
* range patterns: Ranges. (line 6)
-* Rankin, Pat <1>: Bugs. (line 72)
-* Rankin, Pat <2>: Contributors. (line 38)
+* range patterns, line continuation and: Ranges. (line 65)
+* Rankin, Pat <1>: Bugs. (line 70)
+* Rankin, Pat <2>: Contributors. (line 37)
* Rankin, Pat <3>: Assignment Ops. (line 100)
* Rankin, Pat: Acknowledgments. (line 60)
-* reada extension function: Extension Sample Read write array.
+* reada() extension function: Extension Sample Read write array.
(line 15)
* readable data files, checking: File Checking. (line 6)
* readable.awk program: File Checking. (line 11)
* readdir extension: Extension Sample Readdir.
(line 9)
-* readfile extension function: Extension Sample Readfile.
- (line 11)
+* readfile() extension function: Extension Sample Readfile.
+ (line 12)
+* readfile() user-defined function: Readfile Function. (line 30)
+* reading input files: Reading Files. (line 6)
* recipe for a programming language: History. (line 6)
* record separators <1>: User-modified. (line 143)
* record separators: Records. (line 14)
-* record separators, changing: Records. (line 81)
-* record separators, regular expressions as: Records. (line 117)
+* record separators, changing: Records. (line 93)
+* record separators, regular expressions as: Records. (line 132)
* record separators, with multiline records: Multiple Line. (line 10)
* records <1>: Basic High Level. (line 73)
* records: Reading Files. (line 14)
* records, multiline: Multiple Line. (line 6)
* records, printing: Print. (line 22)
* records, splitting input into: Records. (line 6)
-* records, terminating: Records. (line 117)
-* records, treating files as: Records. (line 200)
+* records, terminating: Records. (line 132)
+* records, treating files as: Records. (line 219)
* recursive functions: Definition Syntax. (line 73)
+* redirect gawk output, in debugger: Debugger Info. (line 72)
* redirection of input: Getline/File. (line 6)
* redirection of output: Redirection. (line 6)
* reference counting, sorting arrays: Array Sorting Functions.
- (line 75)
+ (line 77)
+* regexp: Regexp. (line 6)
* regexp constants <1>: Comparison Operators.
- (line 103)
+ (line 102)
* regexp constants <2>: Regexp Constants. (line 6)
* regexp constants: Regexp Usage. (line 57)
* regexp constants, /=.../, /= operator and: Assignment Ops. (line 147)
-* regexp constants, as patterns: Expression Patterns. (line 36)
+* regexp constants, as patterns: Expression Patterns. (line 34)
* regexp constants, in gawk: Using Constant Regexps.
(line 28)
* regexp constants, slashes vs. quotes: Computed Regexps. (line 28)
* regexp constants, vs. string constants: Computed Regexps. (line 38)
-* regexp, See regular expressions: Regexp. (line 6)
+* register extension: Registration Functions.
+ (line 6)
* regular expressions: Regexp. (line 6)
-* regular expressions as field separators: Field Separators. (line 50)
+* regular expressions as field separators: Field Separators. (line 51)
* regular expressions, anchors in: Regexp Operators. (line 22)
* regular expressions, as field separators: Regexp Field Splitting.
(line 6)
* regular expressions, as patterns <1>: Regexp Patterns. (line 6)
* regular expressions, as patterns: Regexp Usage. (line 6)
-* regular expressions, as record separators: Records. (line 117)
+* regular expressions, as record separators: Records. (line 132)
* regular expressions, case sensitivity <1>: User-modified. (line 82)
* regular expressions, case sensitivity: Case-sensitivity. (line 6)
* regular expressions, computed: Computed Regexps. (line 6)
@@ -31555,12 +32508,13 @@ Index
* regular expressions, searching for: Egrep Program. (line 6)
* relational operators, See comparison operators: Typing and Comparison.
(line 9)
+* replace in string: String Functions. (line 406)
* return debugger command: Debugger Execution Control.
(line 54)
* return statement, user-defined functions: Return Statement. (line 6)
* return value, close() function: Close Files And Pipes.
(line 130)
-* rev() user-defined function: Function Example. (line 52)
+* rev() user-defined function: Function Example. (line 53)
* revoutput extension: Extension Sample Revout.
(line 11)
* revtwoway extension: Extension Sample Rev2way.
@@ -31575,25 +32529,28 @@ Index
(line 11)
* right angle bracket (>), >> operator (I/O) <1>: Precedence. (line 65)
* right angle bracket (>), >> operator (I/O): Redirection. (line 50)
+* right shift: Bitwise Functions. (line 52)
* right shift, bitwise: Bitwise Functions. (line 32)
* Ritchie, Dennis: Basic Data Typing. (line 55)
-* RLENGTH variable: Auto-set. (line 253)
-* RLENGTH variable, match() function and: String Functions. (line 225)
+* RLENGTH variable: Auto-set. (line 262)
+* RLENGTH variable, match() function and: String Functions. (line 221)
* Robbins, Arnold <1>: Future Extensions. (line 6)
* Robbins, Arnold <2>: Bugs. (line 32)
-* Robbins, Arnold <3>: Contributors. (line 125)
-* Robbins, Arnold <4>: Alarm Program. (line 6)
-* Robbins, Arnold <5>: Passwd Functions. (line 90)
-* Robbins, Arnold <6>: Getline/Pipe. (line 40)
+* Robbins, Arnold <3>: Contributors. (line 139)
+* Robbins, Arnold <4>: General Data Types. (line 6)
+* Robbins, Arnold <5>: Alarm Program. (line 6)
+* Robbins, Arnold <6>: Passwd Functions. (line 90)
+* Robbins, Arnold <7>: Getline/Pipe. (line 39)
* Robbins, Arnold: Command Line Field Separator.
- (line 80)
-* Robbins, Bill: Getline/Pipe. (line 40)
+ (line 73)
+* Robbins, Bill: Getline/Pipe. (line 39)
* Robbins, Harry: Acknowledgments. (line 78)
* Robbins, Jean: Acknowledgments. (line 78)
* Robbins, Miriam <1>: Passwd Functions. (line 90)
-* Robbins, Miriam <2>: Getline/Pipe. (line 40)
+* Robbins, Miriam <2>: Getline/Pipe. (line 39)
* Robbins, Miriam: Acknowledgments. (line 78)
-* Rommel, Kai Uwe: Contributors. (line 43)
+* Rommel, Kai Uwe: Contributors. (line 42)
+* round to nearest integer: Numeric Functions. (line 23)
* round() user-defined function: Round Function. (line 16)
* rounding mode, floating-point: Rounding Mode. (line 6)
* rounding numbers: Round Function. (line 6)
@@ -31603,15 +32560,13 @@ Index
* RS variable <1>: User-modified. (line 143)
* RS variable: Records. (line 20)
* RS variable, multiline records and: Multiple Line. (line 17)
-* rshift() function (gawk): Bitwise Functions. (line 52)
-* RSTART variable: Auto-set. (line 259)
-* RSTART variable, match() function and: String Functions. (line 225)
-* RT variable <1>: Auto-set. (line 266)
-* RT variable <2>: Getline/Variable/File.
- (line 10)
-* RT variable <3>: Multiple Line. (line 129)
-* RT variable: Records. (line 117)
-* Rubin, Paul <1>: Contributors. (line 16)
+* rshift: Bitwise Functions. (line 52)
+* RSTART variable: Auto-set. (line 268)
+* RSTART variable, match() function and: String Functions. (line 221)
+* RT variable <1>: Auto-set. (line 275)
+* RT variable <2>: Multiple Line. (line 129)
+* RT variable: Records. (line 132)
+* Rubin, Paul <1>: Contributors. (line 15)
* Rubin, Paul: History. (line 30)
* rule, definition of: Getting Started. (line 21)
* run debugger command: Debugger Execution Control.
@@ -31619,59 +32574,84 @@ Index
* rvalues/lvalues: Assignment Ops. (line 32)
* s debugger command (alias for step): Debugger Execution Control.
(line 68)
+* sample debugging session: Sample Debugging Session.
+ (line 6)
* sandbox mode: Options. (line 279)
+* save debugger options: Debugger Info. (line 84)
+* scalar or array: Type Functions. (line 11)
* scalar values: Basic Data Typing. (line 13)
-* Schorr, Andrew <1>: Contributors. (line 121)
+* scanning arrays: Scanning an Array. (line 6)
+* scanning multidimensional arrays: Multiscanning. (line 11)
+* Schorr, Andrew <1>: Contributors. (line 131)
* Schorr, Andrew: Acknowledgments. (line 60)
* Schreiber, Bert: Acknowledgments. (line 38)
* Schreiber, Rita: Acknowledgments. (line 38)
-* search paths <1>: VMS Running. (line 29)
-* search paths <2>: PC Using. (line 11)
-* search paths <3>: Igawk Program. (line 368)
-* search paths <4>: AWKLIBPATH Variable. (line 6)
-* search paths: AWKPATH Variable. (line 6)
+* search and replace in strings: String Functions. (line 82)
+* search in string: String Functions. (line 151)
+* search paths <1>: VMS Running. (line 58)
+* search paths <2>: PC Using. (line 10)
+* search paths: Igawk Program. (line 368)
* search paths, for shared libraries: AWKLIBPATH Variable. (line 6)
-* search paths, for source files <1>: VMS Running. (line 29)
-* search paths, for source files <2>: PC Using. (line 11)
+* search paths, for source files <1>: VMS Running. (line 58)
+* search paths, for source files <2>: PC Using. (line 10)
* search paths, for source files <3>: Igawk Program. (line 368)
* search paths, for source files: AWKPATH Variable. (line 6)
-* searching: String Functions. (line 155)
* searching, files for regular expressions: Egrep Program. (line 6)
* searching, for words: Dupword Program. (line 6)
* sed utility <1>: Glossary. (line 12)
* sed utility <2>: Simple Sed. (line 6)
* sed utility: Field Splitting Summary.
(line 46)
-* semicolon (;): Statements/Lines. (line 91)
-* semicolon (;), AWKPATH variable and: PC Using. (line 11)
+* seeding random number generator: Numeric Functions. (line 64)
+* semicolon (;), AWKPATH variable and: PC Using. (line 10)
* semicolon (;), separating statements in actions <1>: Statements.
(line 10)
-* semicolon (;), separating statements in actions: Action Overview.
+* semicolon (;), separating statements in actions <2>: Action Overview.
(line 19)
+* semicolon (;), separating statements in actions: Statements/Lines.
+ (line 91)
* separators, field: User-modified. (line 56)
* separators, field, FIELDWIDTHS variable and: User-modified. (line 35)
* separators, field, FPAT variable and: User-modified. (line 45)
* separators, field, POSIX and: Fields. (line 6)
* separators, for records <1>: User-modified. (line 143)
* separators, for records: Records. (line 14)
-* separators, for records, regular expressions as: Records. (line 117)
+* separators, for records, regular expressions as: Records. (line 132)
* separators, for statements in actions: Action Overview. (line 19)
* separators, subscript: User-modified. (line 156)
+* set breakpoint: Breakpoint Control. (line 11)
* set debugger command: Viewing And Changing Data.
(line 59)
+* set directory of message catalogs: I18N Functions. (line 12)
+* set watchpoint: Viewing And Changing Data.
+ (line 67)
+* setting rounding mode: Setting Rounding Mode.
+ (line 6)
+* setting working precision: Setting Precision. (line 6)
+* shadowing of variable values: Definition Syntax. (line 61)
+* shell quoting, double quote: Read Terminal. (line 25)
+* shell quoting, rules for: Quoting. (line 6)
* shells, piping commands into: Redirection. (line 142)
* shells, quoting: Using Shell Variables.
(line 12)
* shells, quoting, rules for: Quoting. (line 18)
* shells, scripts: One-shot. (line 22)
+* shells, sea: Undocumented. (line 8)
* shells, variables: Using Shell Variables.
(line 6)
* shift, bitwise: Bitwise Functions. (line 32)
* short-circuit operators: Boolean Ops. (line 57)
+* show all source files, in debugger: Debugger Info. (line 45)
+* show breakpoints: Debugger Info. (line 21)
+* show function arguments, in debugger: Debugger Info. (line 18)
+* show local variables, in debugger: Debugger Info. (line 34)
+* show name of current source file, in debugger: Debugger Info.
+ (line 37)
+* show watchpoints: Debugger Info. (line 51)
* si debugger command (alias for stepi): Debugger Execution Control.
(line 76)
* side effects <1>: Increment Ops. (line 11)
-* side effects: Concatenation. (line 42)
+* side effects: Concatenation. (line 41)
* side effects, array indexing: Reference to Elements.
(line 42)
* side effects, asort() function: Array Sorting Functions.
@@ -31689,7 +32669,7 @@ Index
(line 110)
* sidebar, Changing FS Does Not Affect the Fields: Field Splitting Summary.
(line 38)
-* sidebar, Changing NR and FNR: Auto-set. (line 312)
+* sidebar, Changing NR and FNR: Auto-set. (line 321)
* sidebar, Controlling Output Buffering with system(): I/O Functions.
(line 135)
* sidebar, Escape Sequences for Metacharacters: Escape Sequences.
@@ -31703,7 +32683,7 @@ Index
* sidebar, Piping into sh: Redirection. (line 140)
* sidebar, Portability Issues with #!: Executable Scripts. (line 31)
* sidebar, Recipe For A Programming Language: History. (line 6)
-* sidebar, RS = "\0" Is Not Portable: Records. (line 177)
+* sidebar, RS = "\0" Is Not Portable: Records. (line 192)
* sidebar, So Why Does gawk have BEGINFILE and ENDFILE?: Filetrans Function.
(line 83)
* sidebar, Syntactic Ambiguities Between /= and Regular Expressions: Assignment Ops.
@@ -31713,30 +32693,36 @@ Index
(line 56)
* sidebar, Using close()'s Return Value: Close Files And Pipes.
(line 128)
-* SIGHUP signal: Profiling. (line 204)
-* SIGINT signal (MS-Windows): Profiling. (line 207)
-* signals, HUP/SIGHUP: Profiling. (line 204)
-* signals, INT/SIGINT (MS-Windows): Profiling. (line 207)
-* signals, QUIT/SIGQUIT (MS-Windows): Profiling. (line 207)
-* signals, USR1/SIGUSR1: Profiling. (line 181)
-* SIGQUIT signal (MS-Windows): Profiling. (line 207)
-* SIGUSR1 signal: Profiling. (line 181)
+* SIGHUP signal, for dynamic profiling: Profiling. (line 211)
+* SIGINT signal (MS-Windows): Profiling. (line 214)
+* signals, HUP/SIGHUP, for profiling: Profiling. (line 211)
+* signals, INT/SIGINT (MS-Windows): Profiling. (line 214)
+* signals, QUIT/SIGQUIT (MS-Windows): Profiling. (line 214)
+* signals, USR1/SIGUSR1, for profiling: Profiling. (line 188)
+* signature program: Signature Program. (line 6)
+* SIGQUIT signal (MS-Windows): Profiling. (line 214)
+* SIGUSR1 signal, for dynamic profiling: Profiling. (line 188)
* silent debugger command: Debugger Execution Control.
(line 10)
-* sin() function: Numeric Functions. (line 75)
+* sin: Numeric Functions. (line 75)
+* sine: Numeric Functions. (line 75)
* single precision floating-point: General Arithmetic. (line 21)
-* single quote (') <1>: Quoting. (line 31)
-* single quote (') <2>: Long. (line 33)
* single quote ('): One-shot. (line 15)
+* single quote (') in gawk command lines: Long. (line 33)
+* single quote ('), in shell commands: Quoting. (line 31)
* single quote ('), vs. apostrophe: Comments. (line 27)
* single quote ('), with double quotes: Quoting. (line 53)
* single-character fields: Single Character Fields.
(line 6)
+* single-step execution, in the debugger: Debugger Execution Control.
+ (line 43)
* Skywalker, Luke: Undocumented. (line 6)
-* sleep extension function: Extension Sample Time.
+* sleep utility: Alarm Program. (line 111)
+* sleep() extension function: Extension Sample Time.
(line 23)
-* sleep utility: Alarm Program. (line 109)
* Solaris, POSIX-compliant awk: Other Versions. (line 96)
+* sort array: String Functions. (line 32)
+* sort array indices: String Functions. (line 32)
* sort function, arrays, sorting: Array Sorting Functions.
(line 6)
* sort utility: Word Sorting. (line 50)
@@ -31747,38 +32733,44 @@ Index
* source code, Brian Kernighan's awk: Other Versions. (line 13)
* source code, Busybox Awk: Other Versions. (line 88)
* source code, gawk: Gawk Distribution. (line 6)
-* source code, jawk: Other Versions. (line 106)
-* source code, libmawk: Other Versions. (line 114)
+* source code, Illumos awk: Other Versions. (line 104)
+* source code, jawk: Other Versions. (line 112)
+* source code, libmawk: Other Versions. (line 120)
* source code, mawk: Other Versions. (line 44)
-* source code, mixing: Options. (line 131)
+* source code, mixing: Options. (line 117)
* source code, pawk: Other Versions. (line 78)
-* source code, QSE Awk: Other Versions. (line 124)
-* source code, QuikTrim Awk: Other Versions. (line 128)
+* source code, pawk (Python version): Other Versions. (line 124)
+* source code, QSE Awk: Other Versions. (line 130)
+* source code, QuikTrim Awk: Other Versions. (line 134)
* source code, Solaris awk: Other Versions. (line 96)
* source files, search path for: Igawk Program. (line 368)
-* sparse arrays: Array Intro. (line 71)
+* sparse arrays: Array Intro. (line 70)
* Spencer, Henry: Glossary. (line 12)
+* split: String Functions. (line 313)
+* split string into array: String Functions. (line 291)
* split utility: Split Program. (line 6)
-* split() function: String Functions. (line 317)
* split() function, array elements, deleting: Delete. (line 61)
* split.awk program: Split Program. (line 30)
-* sprintf() function <1>: String Functions. (line 382)
-* sprintf() function: OFMT. (line 15)
+* sprintf <1>: String Functions. (line 378)
+* sprintf: OFMT. (line 15)
* sprintf() function, OFMT variable and: User-modified. (line 124)
* sprintf() function, print/printf statements and: Round Function.
(line 6)
-* sqrt() function: Numeric Functions. (line 78)
-* square brackets ([]): Regexp Operators. (line 55)
-* srand() function: Numeric Functions. (line 82)
-* Stallman, Richard <1>: Glossary. (line 305)
-* Stallman, Richard <2>: Contributors. (line 24)
+* sqrt: Numeric Functions. (line 78)
+* square brackets ([]), regexp operator: Regexp Operators. (line 55)
+* square root: Numeric Functions. (line 78)
+* srand: Numeric Functions. (line 82)
+* stack frame: Debugging Terms. (line 10)
+* Stallman, Richard <1>: Glossary. (line 297)
+* Stallman, Richard <2>: Contributors. (line 23)
* Stallman, Richard <3>: Acknowledgments. (line 18)
* Stallman, Richard: Manual History. (line 6)
* standard error: Special FD. (line 6)
* standard input <1>: Special FD. (line 6)
* standard input: Read Terminal. (line 6)
* standard output: Special FD. (line 6)
-* stat extension function: Extension Sample File Functions.
+* starting the debugger: Debugger Invocation. (line 6)
+* stat() extension function: Extension Sample File Functions.
(line 18)
* statements, compound, control statements and: Statements. (line 10)
* statements, control, in actions: Statements. (line 6)
@@ -31787,55 +32779,65 @@ Index
(line 68)
* stepi debugger command: Debugger Execution Control.
(line 76)
+* stop automatic display, in debugger: Viewing And Changing Data.
+ (line 80)
* stream editors <1>: Simple Sed. (line 6)
* stream editors: Field Splitting Summary.
(line 46)
-* strftime() function (gawk): Time Functions. (line 48)
+* strftime: Time Functions. (line 48)
* string constants: Scalar Constants. (line 15)
* string constants, vs. regexp constants: Computed Regexps. (line 38)
* string extraction (internationalization): String Extraction.
(line 6)
-* string operators: Concatenation. (line 9)
+* string length: String Functions. (line 164)
+* string operators: Concatenation. (line 8)
+* string, regular expression match: String Functions. (line 204)
+* string-manipulation functions: String Functions. (line 6)
* string-matching operators: Regexp Usage. (line 19)
+* string-translation functions: I18N Functions. (line 6)
+* strings splitting, example: String Functions. (line 333)
* strings, converting <1>: Bitwise Functions. (line 109)
* strings, converting: Conversion. (line 6)
+* strings, converting letter case: String Functions. (line 520)
* strings, converting, numbers to: User-modified. (line 28)
-* strings, empty, See null strings: Records. (line 107)
+* strings, empty, See null strings: Records. (line 122)
* strings, extracting: String Extraction. (line 6)
* strings, for localization: Programmer i18n. (line 14)
-* strings, length of: Scalar Constants. (line 20)
+* strings, length limitations: Scalar Constants. (line 20)
* strings, merging arrays into: Join Function. (line 6)
* strings, null: Regexp Field Splitting.
(line 43)
* strings, numeric: Variable Typing. (line 6)
-* strings, splitting: String Functions. (line 337)
-* strtonum() function (gawk): String Functions. (line 389)
+* strtonum: String Functions. (line 385)
* strtonum() function (gawk), --non-decimal-data option and: Nondecimal Data.
(line 36)
-* sub() function <1>: String Functions. (line 410)
-* sub() function: Using Constant Regexps.
+* sub <1>: String Functions. (line 406)
+* sub: Using Constant Regexps.
(line 43)
-* sub() function, arguments of: String Functions. (line 464)
+* sub() function, arguments of: String Functions. (line 460)
* sub() function, escape processing: Gory Details. (line 6)
* subscript separators: User-modified. (line 156)
-* subscripts in arrays, multidimensional: Multi-dimensional. (line 10)
-* subscripts in arrays, multidimensional, scanning: Multi-scanning.
+* subscripts in arrays, multidimensional: Multidimensional. (line 10)
+* subscripts in arrays, multidimensional, scanning: Multiscanning.
(line 11)
* subscripts in arrays, numbers as: Numeric Array Subscripts.
(line 6)
* subscripts in arrays, uninitialized variables as: Uninitialized Subscripts.
(line 6)
* SUBSEP variable: User-modified. (line 156)
-* SUBSEP variable, multidimensional arrays: Multi-dimensional.
+* SUBSEP variable, and multidimensional arrays: Multidimensional.
(line 16)
-* substr() function: String Functions. (line 483)
+* substitute in string: String Functions. (line 82)
+* substr: String Functions. (line 479)
+* substring: String Functions. (line 479)
* Sumner, Andrew: Other Versions. (line 64)
+* supplementary groups of gawk process: Auto-set. (line 243)
* switch statement: Switch Statement. (line 6)
-* SYMTAB array: Auto-set. (line 274)
+* SYMTAB array: Auto-set. (line 283)
* syntactic ambiguity: /= operator vs. /=.../ regexp constant: Assignment Ops.
(line 147)
-* system() function: I/O Functions. (line 72)
-* systime() function (gawk): Time Functions. (line 65)
+* system: I/O Functions. (line 72)
+* systime: Time Functions. (line 66)
* t debugger command (alias for tbreak): Breakpoint Control. (line 90)
* tbreak debugger command: Breakpoint Control. (line 90)
* Tcl: Library Names. (line 57)
@@ -31843,17 +32845,17 @@ Index
* TCP/IP, support for: Special Network. (line 6)
* tee utility: Tee Program. (line 6)
* tee.awk program: Tee Program. (line 26)
-* terminating records: Records. (line 117)
+* temporary breakpoint: Breakpoint Control. (line 90)
+* terminating records: Records. (line 132)
* testbits.awk program: Bitwise Functions. (line 70)
* testext extension: Extension Sample API Tests.
(line 6)
* Texinfo <1>: Adding Code. (line 99)
* Texinfo <2>: Distribution contents.
- (line 80)
+ (line 77)
* Texinfo <3>: Extract Program. (line 12)
* Texinfo <4>: Dupword Program. (line 17)
* Texinfo <5>: Library Functions. (line 33)
-* Texinfo <6>: Sample Data Files. (line 66)
* Texinfo: Conventions. (line 6)
* Texinfo, chapter beginnings in files: Regexp Operators. (line 22)
* Texinfo, extracting programs from source files: Extract Program.
@@ -31873,31 +32875,35 @@ Index
* tilde (~), ~ operator <5>: Computed Regexps. (line 6)
* tilde (~), ~ operator <6>: Case-sensitivity. (line 26)
* tilde (~), ~ operator: Regexp Usage. (line 19)
-* time, alarm clock example program: Alarm Program. (line 9)
+* time functions: Time Functions. (line 6)
+* time, alarm clock example program: Alarm Program. (line 11)
* time, localization and: Explaining gettext. (line 115)
* time, managing: Getlocaltime Function.
(line 6)
* time, retrieving: Time Functions. (line 17)
* timeout, reading input: Read Timeout. (line 6)
* timestamps: Time Functions. (line 6)
-* timestamps, converting dates to: Time Functions. (line 75)
+* timestamps, converting dates to: Time Functions. (line 76)
* timestamps, formatted: Getlocaltime Function.
(line 6)
-* tolower() function: String Functions. (line 525)
-* toupper() function: String Functions. (line 531)
+* tolower: String Functions. (line 521)
+* toupper: String Functions. (line 527)
* tr utility: Translate Program. (line 6)
* trace debugger command: Miscellaneous Debugger Commands.
(line 108)
+* traceback, display in debugger: Execution Stack. (line 13)
+* translate string: I18N Functions. (line 22)
* translate.awk program: Translate Program. (line 55)
+* treating files, as single records: Records. (line 219)
* troubleshooting, --non-decimal-data option: Options. (line 207)
* troubleshooting, == operator: Comparison Operators.
(line 37)
-* troubleshooting, awk uses FS not IFS: Field Separators. (line 29)
+* troubleshooting, awk uses FS not IFS: Field Separators. (line 30)
* troubleshooting, backslash before nonspecial character: Escape Sequences.
(line 112)
* troubleshooting, division: Arithmetic Ops. (line 44)
* troubleshooting, fatal errors, field widths, specifying: Constant Size.
- (line 22)
+ (line 23)
* troubleshooting, fatal errors, printf format strings: Format Modifiers.
(line 159)
* troubleshooting, fflush() function: I/O Functions. (line 60)
@@ -31907,9 +32913,9 @@ Index
* troubleshooting, gawk, fatal errors, function arguments: Calling Built-in.
(line 16)
* troubleshooting, getline function: File Checking. (line 25)
-* troubleshooting, gsub()/sub() functions: String Functions. (line 474)
-* troubleshooting, match() function: String Functions. (line 290)
-* troubleshooting, patsplit() function: String Functions. (line 313)
+* troubleshooting, gsub()/sub() functions: String Functions. (line 470)
+* troubleshooting, match() function: String Functions. (line 286)
+* troubleshooting, patsplit() function: String Functions. (line 309)
* troubleshooting, print statement, omitting commas: Print Examples.
(line 31)
* troubleshooting, printing: Redirection. (line 118)
@@ -31917,13 +32923,13 @@ Index
* troubleshooting, readable data files: File Checking. (line 6)
* troubleshooting, regexp constants vs. string constants: Computed Regexps.
(line 38)
-* troubleshooting, string concatenation: Concatenation. (line 27)
-* troubleshooting, substr() function: String Functions. (line 501)
+* troubleshooting, string concatenation: Concatenation. (line 26)
+* troubleshooting, substr() function: String Functions. (line 497)
* troubleshooting, system() function: I/O Functions. (line 94)
* troubleshooting, typographical errors, global variables: Options.
- (line 112)
+ (line 98)
* true, logical: Truth Values. (line 6)
-* Trueman, David <1>: Contributors. (line 31)
+* Trueman, David <1>: Contributors. (line 30)
* Trueman, David <2>: Acknowledgments. (line 47)
* Trueman, David: History. (line 30)
* trunc-mod operation: Arithmetic Ops. (line 66)
@@ -31931,6 +32937,8 @@ Index
* type conversion: Conversion. (line 21)
* u debugger command (alias for until): Debugger Execution Control.
(line 83)
+* unassigned array elements: Reference to Elements.
+ (line 18)
* undefined functions: Pass By Value/Reference.
(line 71)
* underscore (_), C macro: Explaining gettext. (line 70)
@@ -31940,20 +32948,22 @@ Index
* undisplay debugger command: Viewing And Changing Data.
(line 80)
* undocumented features: Undocumented. (line 6)
-* Unicode: Glossary. (line 141)
+* Unicode <1>: Glossary. (line 133)
+* Unicode <2>: Ranges and Locales. (line 61)
+* Unicode: Ordinal Functions. (line 45)
* uninitialized variables, as array subscripts: Uninitialized Subscripts.
(line 6)
* uniq utility: Uniq Program. (line 6)
* uniq.awk program: Uniq Program. (line 65)
-* Unix: Glossary. (line 624)
+* Unix: Glossary. (line 616)
* Unix awk, backslashes in escape sequences: Escape Sequences.
(line 124)
* Unix awk, close() function and: Close Files And Pipes.
(line 130)
* Unix awk, password files, field separators and: Command Line Field Separator.
- (line 72)
+ (line 64)
* Unix, awk scripts and: Executable Scripts. (line 6)
-* UNIXROOT variable, on OS/2 systems: PC Using. (line 17)
+* UNIXROOT variable, on OS/2 systems: PC Using. (line 16)
* unsigned integers: General Arithmetic. (line 15)
* until debugger command: Debugger Execution Control.
(line 83)
@@ -31961,15 +32971,16 @@ Index
(line 84)
* up debugger command: Execution Stack. (line 33)
* user database, reading: Passwd Functions. (line 6)
-* user-defined, functions: User-defined. (line 6)
-* user-defined, functions, counts: Profiling. (line 129)
+* user-defined functions: User-defined. (line 6)
+* user-defined, functions, counts, in a profile: Profiling. (line 137)
* user-defined, variables: Variables. (line 6)
* user-modifiable variables: User-modified. (line 6)
* users, information about, printing: Id Program. (line 6)
* users, information about, retrieving: Passwd Functions. (line 16)
-* USR1 signal: Profiling. (line 181)
+* USR1 signal, for dynamic profiling: Profiling. (line 188)
* values, numeric: Basic Data Typing. (line 13)
* values, string: Basic Data Typing. (line 13)
+* variable assignments and input files: Other Arguments. (line 19)
* variable typing: Typing and Comparison.
(line 9)
* variables <1>: Basic Data Typing. (line 6)
@@ -31977,7 +32988,7 @@ Index
* variables, assigning on command line: Assignment Options. (line 6)
* variables, built-in <1>: Built-in Variables. (line 6)
* variables, built-in: Using Variables. (line 20)
-* variables, built-in, -v option, setting with: Options. (line 54)
+* variables, built-in, -v option, setting with: Options. (line 40)
* variables, built-in, conveying information: Auto-set. (line 6)
* variables, flag: Boolean Ops. (line 67)
* variables, getline command into, using <1>: Getline/Variable/Coprocess.
@@ -31988,12 +32999,12 @@ Index
(line 6)
* variables, getline command into, using: Getline/Variable. (line 6)
* variables, global, for library functions: Library Names. (line 11)
-* variables, global, printing list of: Options. (line 107)
+* variables, global, printing list of: Options. (line 93)
* variables, initializing: Using Variables. (line 20)
-* variables, local: Variable Scope. (line 6)
+* variables, local to a function: Variable Scope. (line 6)
* variables, names of: Arrays. (line 18)
* variables, private: Library Names. (line 11)
-* variables, setting: Options. (line 46)
+* variables, setting: Options. (line 32)
* variables, shadowing: Definition Syntax. (line 61)
* variables, types of: Assignment Ops. (line 40)
* variables, types of, comparison expressions and: Typing and Comparison.
@@ -32001,9 +33012,13 @@ Index
* variables, uninitialized, as array subscripts: Uninitialized Subscripts.
(line 6)
* variables, user-defined: Variables. (line 6)
+* version of gawk: Auto-set. (line 213)
+* version of gawk extension API: Auto-set. (line 238)
+* version of GNU MP library: Auto-set. (line 224)
+* version of GNU MPFR library: Auto-set. (line 220)
* vertical bar (|): Regexp Operators. (line 69)
* vertical bar (|), | operator (I/O) <1>: Precedence. (line 65)
-* vertical bar (|), | operator (I/O): Getline/Pipe. (line 10)
+* vertical bar (|), | operator (I/O): Getline/Pipe. (line 9)
* vertical bar (|), |& operator (I/O) <1>: Two-way I/O. (line 44)
* vertical bar (|), |& operator (I/O) <2>: Precedence. (line 65)
* vertical bar (|), |& operator (I/O): Getline/Coprocess. (line 6)
@@ -32012,31 +33027,32 @@ Index
* Vinschen, Corinna: Acknowledgments. (line 60)
* w debugger command (alias for watch): Viewing And Changing Data.
(line 67)
-* w utility: Constant Size. (line 22)
-* wait extension function: Extension Sample Fork.
+* w utility: Constant Size. (line 23)
+* wait() extension function: Extension Sample Fork.
(line 22)
-* waitpid extension function: Extension Sample Fork.
+* waitpid() extension function: Extension Sample Fork.
(line 18)
* walk_array() user-defined function: Walking Arrays. (line 14)
* Wall, Larry <1>: Future Extensions. (line 6)
* Wall, Larry: Array Intro. (line 6)
-* Wallin, Anders: Acknowledgments. (line 60)
+* Wallin, Anders: Contributors. (line 103)
* warnings, issuing: Options. (line 182)
* watch debugger command: Viewing And Changing Data.
(line 67)
+* watchpoint: Debugging Terms. (line 42)
* wc utility: Wc Program. (line 6)
* wc.awk program: Wc Program. (line 46)
-* Weinberger, Peter <1>: Contributors. (line 12)
+* Weinberger, Peter <1>: Contributors. (line 11)
* Weinberger, Peter: History. (line 17)
-* while statement <1>: While Statement. (line 6)
-* while statement: Regexp Usage. (line 19)
+* while statement: While Statement. (line 6)
+* while statement, use of regexps in: Regexp Usage. (line 19)
* whitespace, as field separators: Default Field Splitting.
(line 6)
* whitespace, functions, calling: Calling Built-in. (line 10)
* whitespace, newlines as: Options. (line 253)
-* Williams, Kent: Contributors. (line 35)
-* Woehlke, Matthew: Contributors. (line 80)
-* Woods, John: Contributors. (line 28)
+* Williams, Kent: Contributors. (line 34)
+* Woehlke, Matthew: Contributors. (line 79)
+* Woods, John: Contributors. (line 27)
* word boundaries, matching: GNU Regexp Operators.
(line 38)
* word, regexp definition of: GNU Regexp Operators.
@@ -32047,25 +33063,25 @@ Index
* words, counting: Wc Program. (line 6)
* words, duplicate, searching for: Dupword Program. (line 6)
* words, usage counts, generating: Word Sorting. (line 6)
-* writea extension function: Extension Sample Read write array.
+* writea() extension function: Extension Sample Read write array.
(line 9)
* xgettext utility: String Extraction. (line 13)
+* xor: Bitwise Functions. (line 55)
* XOR bitwise operation: Bitwise Functions. (line 6)
-* xor() function (gawk): Bitwise Functions. (line 55)
-* Yawitz, Efraim: Contributors. (line 119)
+* Yawitz, Efraim: Contributors. (line 129)
* Zaretskii, Eli <1>: Bugs. (line 70)
-* Zaretskii, Eli <2>: Contributors. (line 56)
+* Zaretskii, Eli <2>: Contributors. (line 55)
* Zaretskii, Eli: Acknowledgments. (line 60)
* zero, negative vs. positive: Unexpected Results. (line 34)
* zerofile.awk program: Empty Files. (line 21)
-* Zoulas, Christos: Contributors. (line 67)
-* {} (braces): Profiling. (line 134)
+* Zoulas, Christos: Contributors. (line 66)
+* {} (braces): Profiling. (line 142)
* {} (braces), actions and: Action Overview. (line 19)
* {} (braces), statements, grouping: Statements. (line 10)
* | (vertical bar): Regexp Operators. (line 69)
* | (vertical bar), | operator (I/O) <1>: Precedence. (line 65)
* | (vertical bar), | operator (I/O) <2>: Redirection. (line 57)
-* | (vertical bar), | operator (I/O): Getline/Pipe. (line 10)
+* | (vertical bar), | operator (I/O): Getline/Pipe. (line 9)
* | (vertical bar), |& operator (I/O) <1>: Two-way I/O. (line 44)
* | (vertical bar), |& operator (I/O) <2>: Precedence. (line 65)
* | (vertical bar), |& operator (I/O) <3>: Redirection. (line 102)
@@ -32086,521 +33102,530 @@ Index

Tag Table:
-Node: Top1360
-Node: Foreword40338
-Node: Preface44683
-Ref: Preface-Footnote-147736
-Ref: Preface-Footnote-247832
-Node: History48064
-Node: Names50438
-Ref: Names-Footnote-151915
-Node: This Manual51987
-Ref: This Manual-Footnote-157761
-Node: Conventions57861
-Node: Manual History60013
-Ref: Manual History-Footnote-163461
-Ref: Manual History-Footnote-263502
-Node: How To Contribute63576
-Node: Acknowledgments64720
-Node: Getting Started68929
-Node: Running gawk71308
-Node: One-shot72494
-Node: Read Terminal73719
-Ref: Read Terminal-Footnote-175369
-Ref: Read Terminal-Footnote-275645
-Node: Long75816
-Node: Executable Scripts77192
-Ref: Executable Scripts-Footnote-179025
-Ref: Executable Scripts-Footnote-279127
-Node: Comments79674
-Node: Quoting82141
-Node: DOS Quoting86764
-Node: Sample Data Files87439
-Node: Very Simple90471
-Node: Two Rules95070
-Node: More Complex97217
-Ref: More Complex-Footnote-1100147
-Node: Statements/Lines100232
-Ref: Statements/Lines-Footnote-1104694
-Node: Other Features104959
-Node: When105887
-Node: Invoking Gawk108034
-Node: Command Line109495
-Node: Options110278
-Ref: Options-Footnote-1125670
-Node: Other Arguments125695
-Node: Naming Standard Input128353
-Node: Environment Variables129447
-Node: AWKPATH Variable130005
-Ref: AWKPATH Variable-Footnote-1132763
-Node: AWKLIBPATH Variable133023
-Node: Other Environment Variables133741
-Node: Exit Status136236
-Node: Include Files136911
-Node: Loading Shared Libraries140480
-Node: Obsolete141844
-Node: Undocumented142541
-Node: Regexp142784
-Node: Regexp Usage144173
-Node: Escape Sequences146199
-Node: Regexp Operators151868
-Ref: Regexp Operators-Footnote-1159248
-Ref: Regexp Operators-Footnote-2159395
-Node: Bracket Expressions159493
-Ref: table-char-classes161383
-Node: GNU Regexp Operators163906
-Node: Case-sensitivity167629
-Ref: Case-sensitivity-Footnote-1170597
-Ref: Case-sensitivity-Footnote-2170832
-Node: Leftmost Longest170940
-Node: Computed Regexps172141
-Node: Reading Files175478
-Node: Records177481
-Ref: Records-Footnote-1186370
-Node: Fields186407
-Ref: Fields-Footnote-1189440
-Node: Nonconstant Fields189526
-Node: Changing Fields191728
-Node: Field Separators197687
-Node: Default Field Splitting200316
-Node: Regexp Field Splitting201433
-Node: Single Character Fields204775
-Node: Command Line Field Separator205834
-Node: Field Splitting Summary209275
-Ref: Field Splitting Summary-Footnote-1212386
-Node: Constant Size212487
-Node: Splitting By Content217071
-Ref: Splitting By Content-Footnote-1220797
-Node: Multiple Line220837
-Ref: Multiple Line-Footnote-1226684
-Node: Getline226863
-Node: Plain Getline229079
-Node: Getline/Variable231174
-Node: Getline/File232321
-Node: Getline/Variable/File233662
-Ref: Getline/Variable/File-Footnote-1235261
-Node: Getline/Pipe235348
-Node: Getline/Variable/Pipe238048
-Node: Getline/Coprocess239155
-Node: Getline/Variable/Coprocess240407
-Node: Getline Notes241144
-Node: Getline Summary243931
-Ref: table-getline-variants244339
-Node: Read Timeout245251
-Ref: Read Timeout-Footnote-1248992
-Node: Command line directories249049
-Node: Printing249679
-Node: Print251310
-Node: Print Examples252647
-Node: Output Separators255431
-Node: OFMT257191
-Node: Printf258549
-Node: Basic Printf259455
-Node: Control Letters260994
-Node: Format Modifiers264806
-Node: Printf Examples270815
-Node: Redirection273530
-Node: Special Files280495
-Node: Special FD281028
-Ref: Special FD-Footnote-1284653
-Node: Special Network284727
-Node: Special Caveats285577
-Node: Close Files And Pipes286373
-Ref: Close Files And Pipes-Footnote-1293356
-Ref: Close Files And Pipes-Footnote-2293504
-Node: Expressions293654
-Node: Values294786
-Node: Constants295462
-Node: Scalar Constants296142
-Ref: Scalar Constants-Footnote-1297001
-Node: Nondecimal-numbers297183
-Node: Regexp Constants300183
-Node: Using Constant Regexps300658
-Node: Variables303713
-Node: Using Variables304368
-Node: Assignment Options306092
-Node: Conversion307964
-Ref: table-locale-affects313464
-Ref: Conversion-Footnote-1314088
-Node: All Operators314197
-Node: Arithmetic Ops314827
-Node: Concatenation317332
-Ref: Concatenation-Footnote-1320125
-Node: Assignment Ops320245
-Ref: table-assign-ops325233
-Node: Increment Ops326564
-Node: Truth Values and Conditions329999
-Node: Truth Values331082
-Node: Typing and Comparison332131
-Node: Variable Typing332920
-Ref: Variable Typing-Footnote-1336817
-Node: Comparison Operators336939
-Ref: table-relational-ops337349
-Node: POSIX String Comparison340898
-Ref: POSIX String Comparison-Footnote-1341854
-Node: Boolean Ops341992
-Ref: Boolean Ops-Footnote-1346070
-Node: Conditional Exp346161
-Node: Function Calls347893
-Node: Precedence351487
-Node: Locales355156
-Node: Patterns and Actions356245
-Node: Pattern Overview357299
-Node: Regexp Patterns358968
-Node: Expression Patterns359511
-Node: Ranges363196
-Node: BEGIN/END366162
-Node: Using BEGIN/END366924
-Ref: Using BEGIN/END-Footnote-1369655
-Node: I/O And BEGIN/END369761
-Node: BEGINFILE/ENDFILE372043
-Node: Empty374957
-Node: Using Shell Variables375273
-Node: Action Overview377558
-Node: Statements379915
-Node: If Statement381769
-Node: While Statement383268
-Node: Do Statement385312
-Node: For Statement386468
-Node: Switch Statement389620
-Node: Break Statement391717
-Node: Continue Statement393707
-Node: Next Statement395500
-Node: Nextfile Statement397890
-Node: Exit Statement400533
-Node: Built-in Variables402949
-Node: User-modified404044
-Ref: User-modified-Footnote-1412404
-Node: Auto-set412466
-Ref: Auto-set-Footnote-1425544
-Ref: Auto-set-Footnote-2425749
-Node: ARGC and ARGV425805
-Node: Arrays429656
-Node: Array Basics431161
-Node: Array Intro431987
-Node: Reference to Elements436305
-Node: Assigning Elements438575
-Node: Array Example439066
-Node: Scanning an Array440798
-Node: Controlling Scanning443112
-Ref: Controlling Scanning-Footnote-1448035
-Node: Delete448351
-Ref: Delete-Footnote-1451116
-Node: Numeric Array Subscripts451173
-Node: Uninitialized Subscripts453356
-Node: Multi-dimensional454984
-Node: Multi-scanning458078
-Node: Arrays of Arrays459669
-Node: Functions464310
-Node: Built-in465129
-Node: Calling Built-in466207
-Node: Numeric Functions468195
-Ref: Numeric Functions-Footnote-1472027
-Ref: Numeric Functions-Footnote-2472384
-Ref: Numeric Functions-Footnote-3472432
-Node: String Functions472701
-Ref: String Functions-Footnote-1496259
-Ref: String Functions-Footnote-2496388
-Ref: String Functions-Footnote-3496636
-Node: Gory Details496723
-Ref: table-sub-escapes498402
-Ref: table-sub-posix-92499756
-Ref: table-sub-proposed501107
-Ref: table-posix-sub502461
-Ref: table-gensub-escapes504006
-Ref: Gory Details-Footnote-1505182
-Ref: Gory Details-Footnote-2505233
-Node: I/O Functions505384
-Ref: I/O Functions-Footnote-1512369
-Node: Time Functions512516
-Ref: Time Functions-Footnote-1523449
-Ref: Time Functions-Footnote-2523517
-Ref: Time Functions-Footnote-3523675
-Ref: Time Functions-Footnote-4523786
-Ref: Time Functions-Footnote-5523898
-Ref: Time Functions-Footnote-6524125
-Node: Bitwise Functions524391
-Ref: table-bitwise-ops524949
-Ref: Bitwise Functions-Footnote-1529170
-Node: Type Functions529354
-Node: I18N Functions530505
-Node: User-defined532132
-Node: Definition Syntax532936
-Ref: Definition Syntax-Footnote-1537846
-Node: Function Example537915
-Node: Function Caveats540509
-Node: Calling A Function540930
-Node: Variable Scope542045
-Node: Pass By Value/Reference545008
-Node: Return Statement548516
-Node: Dynamic Typing551497
-Node: Indirect Calls552428
-Node: Library Functions562113
-Ref: Library Functions-Footnote-1565626
-Ref: Library Functions-Footnote-2565769
-Node: Library Names565940
-Ref: Library Names-Footnote-1569411
-Ref: Library Names-Footnote-2569631
-Node: General Functions569717
-Node: Strtonum Function570670
-Node: Assert Function573600
-Node: Round Function576926
-Node: Cliff Random Function578469
-Node: Ordinal Functions579485
-Ref: Ordinal Functions-Footnote-1582555
-Ref: Ordinal Functions-Footnote-2582807
-Node: Join Function583016
-Ref: Join Function-Footnote-1584787
-Node: Getlocaltime Function584987
-Node: Data File Management588702
-Node: Filetrans Function589334
-Node: Rewind Function593403
-Node: File Checking594790
-Node: Empty Files595884
-Node: Ignoring Assigns598114
-Node: Getopt Function599667
-Ref: Getopt Function-Footnote-1610971
-Node: Passwd Functions611174
-Ref: Passwd Functions-Footnote-1620149
-Node: Group Functions620237
-Node: Walking Arrays628321
-Node: Sample Programs630458
-Node: Running Examples631132
-Node: Clones631860
-Node: Cut Program633084
-Node: Egrep Program642929
-Ref: Egrep Program-Footnote-1650702
-Node: Id Program650812
-Node: Split Program654428
-Ref: Split Program-Footnote-1657947
-Node: Tee Program658075
-Node: Uniq Program660878
-Node: Wc Program668307
-Ref: Wc Program-Footnote-1672573
-Ref: Wc Program-Footnote-2672773
-Node: Miscellaneous Programs672865
-Node: Dupword Program674053
-Node: Alarm Program676084
-Node: Translate Program680833
-Ref: Translate Program-Footnote-1685220
-Ref: Translate Program-Footnote-2685448
-Node: Labels Program685582
-Ref: Labels Program-Footnote-1688953
-Node: Word Sorting689037
-Node: History Sorting692921
-Node: Extract Program694760
-Ref: Extract Program-Footnote-1702261
-Node: Simple Sed702389
-Node: Igawk Program705451
-Ref: Igawk Program-Footnote-1720608
-Ref: Igawk Program-Footnote-2720809
-Node: Anagram Program720947
-Node: Signature Program724015
-Node: Advanced Features725115
-Node: Nondecimal Data726997
-Node: Array Sorting728580
-Node: Controlling Array Traversal729277
-Node: Array Sorting Functions737515
-Ref: Array Sorting Functions-Footnote-1741189
-Ref: Array Sorting Functions-Footnote-2741282
-Node: Two-way I/O741476
-Ref: Two-way I/O-Footnote-1746908
-Node: TCP/IP Networking746978
-Node: Profiling749822
-Node: Internationalization757319
-Node: I18N and L10N758744
-Node: Explaining gettext759430
-Ref: Explaining gettext-Footnote-1764498
-Ref: Explaining gettext-Footnote-2764682
-Node: Programmer i18n764847
-Node: Translator i18n769049
-Node: String Extraction769842
-Ref: String Extraction-Footnote-1770803
-Node: Printf Ordering770889
-Ref: Printf Ordering-Footnote-1773673
-Node: I18N Portability773737
-Ref: I18N Portability-Footnote-1776186
-Node: I18N Example776249
-Ref: I18N Example-Footnote-1778887
-Node: Gawk I18N778959
-Node: Debugger779580
-Node: Debugging780551
-Node: Debugging Concepts780984
-Node: Debugging Terms782840
-Node: Awk Debugging785437
-Node: Sample Debugging Session786329
-Node: Debugger Invocation786849
-Node: Finding The Bug788181
-Node: List of Debugger Commands794669
-Node: Breakpoint Control796003
-Node: Debugger Execution Control799667
-Node: Viewing And Changing Data803027
-Node: Execution Stack806383
-Node: Debugger Info807850
-Node: Miscellaneous Debugger Commands811832
-Node: Readline Support817008
-Node: Limitations817839
-Node: Arbitrary Precision Arithmetic820091
-Ref: Arbitrary Precision Arithmetic-Footnote-1821742
-Node: General Arithmetic821890
-Node: Floating Point Issues823610
-Node: String Conversion Precision824491
-Ref: String Conversion Precision-Footnote-1826197
-Node: Unexpected Results826306
-Node: POSIX Floating Point Problems828459
-Ref: POSIX Floating Point Problems-Footnote-1832284
-Node: Integer Programming832322
-Node: Floating-point Programming834061
-Ref: Floating-point Programming-Footnote-1840392
-Ref: Floating-point Programming-Footnote-2840662
-Node: Floating-point Representation840926
-Node: Floating-point Context842091
-Ref: table-ieee-formats842930
-Node: Rounding Mode844314
-Ref: table-rounding-modes844793
-Ref: Rounding Mode-Footnote-1847808
-Node: Gawk and MPFR847987
-Node: Arbitrary Precision Floats849242
-Ref: Arbitrary Precision Floats-Footnote-1851685
-Node: Setting Precision852001
-Ref: table-predefined-precision-strings852687
-Node: Setting Rounding Mode854832
-Ref: table-gawk-rounding-modes855236
-Node: Floating-point Constants856423
-Node: Changing Precision857852
-Ref: Changing Precision-Footnote-1859252
-Node: Exact Arithmetic859426
-Node: Arbitrary Precision Integers862564
-Ref: Arbitrary Precision Integers-Footnote-1865582
-Node: Dynamic Extensions865729
-Node: Extension Intro867187
-Node: Plugin License868452
-Node: Extension Mechanism Outline869137
-Ref: load-extension869554
-Ref: load-new-function871032
-Ref: call-new-function872027
-Node: Extension API Description874042
-Node: Extension API Functions Introduction875255
-Node: General Data Types880121
-Ref: General Data Types-Footnote-1885723
-Node: Requesting Values886022
-Ref: table-value-types-returned886753
-Node: Constructor Functions887707
-Node: Registration Functions890727
-Node: Extension Functions891412
-Node: Exit Callback Functions893637
-Node: Extension Version String894886
-Node: Input Parsers895536
-Node: Output Wrappers905293
-Node: Two-way processors909803
-Node: Printing Messages912011
-Ref: Printing Messages-Footnote-1913088
-Node: Updating `ERRNO'913240
-Node: Accessing Parameters913979
-Node: Symbol Table Access915209
-Node: Symbol table by name915721
-Node: Symbol table by cookie917468
-Ref: Symbol table by cookie-Footnote-1921598
-Node: Cached values921661
-Ref: Cached values-Footnote-1925110
-Node: Array Manipulation925201
-Ref: Array Manipulation-Footnote-1926299
-Node: Array Data Types926338
-Ref: Array Data Types-Footnote-1929041
-Node: Array Functions929133
-Node: Flattening Arrays932899
-Node: Creating Arrays939751
-Node: Extension API Variables944476
-Node: Extension Versioning945112
-Node: Extension API Informational Variables947013
-Node: Extension API Boilerplate948099
-Node: Finding Extensions951903
-Node: Extension Example952463
-Node: Internal File Description953194
-Node: Internal File Ops957285
-Ref: Internal File Ops-Footnote-1968793
-Node: Using Internal File Ops968933
-Ref: Using Internal File Ops-Footnote-1971286
-Node: Extension Samples971552
-Node: Extension Sample File Functions973076
-Node: Extension Sample Fnmatch981563
-Node: Extension Sample Fork983289
-Node: Extension Sample Inplace984507
-Node: Extension Sample Ord986285
-Node: Extension Sample Readdir987121
-Node: Extension Sample Revout988653
-Node: Extension Sample Rev2way989246
-Node: Extension Sample Read write array989936
-Node: Extension Sample Readfile991819
-Node: Extension Sample API Tests992637
-Node: Extension Sample Time993162
-Node: gawkextlib994526
-Node: Language History997286
-Node: V7/SVR3.1998808
-Node: SVR41001129
-Node: POSIX1002571
-Node: BTL1003957
-Node: POSIX/GNU1004691
-Node: Common Extensions1010226
-Node: Ranges and Locales1011532
-Ref: Ranges and Locales-Footnote-11016150
-Ref: Ranges and Locales-Footnote-21016177
-Ref: Ranges and Locales-Footnote-31016437
-Node: Contributors1016658
-Node: Installation1021537
-Node: Gawk Distribution1022431
-Node: Getting1022915
-Node: Extracting1023741
-Node: Distribution contents1025433
-Node: Unix Installation1030694
-Node: Quick Installation1031311
-Node: Additional Configuration Options1033755
-Node: Configuration Philosophy1035232
-Node: Non-Unix Installation1037586
-Node: PC Installation1038044
-Node: PC Binary Installation1039343
-Node: PC Compiling1041191
-Node: PC Testing1044135
-Node: PC Using1045311
-Node: Cygwin1049496
-Node: MSYS1050496
-Node: VMS Installation1051010
-Node: VMS Compilation1051613
-Ref: VMS Compilation-Footnote-11052620
-Node: VMS Installation Details1052678
-Node: VMS Running1054313
-Node: VMS Old Gawk1055920
-Node: Bugs1056394
-Node: Other Versions1060246
-Node: Notes1065847
-Node: Compatibility Mode1066647
-Node: Additions1067430
-Node: Accessing The Source1068357
-Node: Adding Code1069797
-Node: New Ports1075842
-Node: Derived Files1079977
-Ref: Derived Files-Footnote-11085298
-Ref: Derived Files-Footnote-21085332
-Ref: Derived Files-Footnote-31085932
-Node: Future Extensions1086030
-Node: Implementation Limitations1086611
-Node: Extension Design1087863
-Node: Old Extension Problems1089017
-Ref: Old Extension Problems-Footnote-11090525
-Node: Extension New Mechanism Goals1090582
-Ref: Extension New Mechanism Goals-Footnote-11093948
-Node: Extension Other Design Decisions1094134
-Node: Extension Future Growth1096240
-Node: Old Extension Mechanism1097076
-Node: Basic Concepts1098816
-Node: Basic High Level1099497
-Ref: figure-general-flow1099768
-Ref: figure-process-flow1100367
-Ref: Basic High Level-Footnote-11103596
-Node: Basic Data Typing1103781
-Node: Glossary1107136
-Node: Copying1132598
-Node: GNU Free Documentation License1170155
-Node: Index1195292
+Node: Top1292
+Node: Foreword40821
+Node: Preface45166
+Ref: Preface-Footnote-148219
+Ref: Preface-Footnote-248315
+Node: History48547
+Node: Names50921
+Ref: Names-Footnote-152398
+Node: This Manual52470
+Ref: This Manual-Footnote-158244
+Node: Conventions58344
+Node: Manual History60500
+Ref: Manual History-Footnote-163948
+Ref: Manual History-Footnote-263989
+Node: How To Contribute64063
+Node: Acknowledgments65207
+Node: Getting Started69401
+Node: Running gawk71780
+Node: One-shot72966
+Node: Read Terminal74191
+Ref: Read Terminal-Footnote-175841
+Ref: Read Terminal-Footnote-276117
+Node: Long76288
+Node: Executable Scripts77664
+Ref: Executable Scripts-Footnote-179497
+Ref: Executable Scripts-Footnote-279599
+Node: Comments80146
+Node: Quoting82613
+Node: DOS Quoting87236
+Node: Sample Data Files87911
+Node: Very Simple90426
+Node: Two Rules95077
+Node: More Complex96975
+Ref: More Complex-Footnote-199905
+Node: Statements/Lines99990
+Ref: Statements/Lines-Footnote-1104453
+Node: Other Features104718
+Node: When105646
+Node: Invoking Gawk107793
+Node: Command Line109256
+Node: Options110039
+Ref: Options-Footnote-1125417
+Node: Other Arguments125442
+Node: Naming Standard Input128100
+Node: Environment Variables129194
+Node: AWKPATH Variable129752
+Ref: AWKPATH Variable-Footnote-1132533
+Ref: AWKPATH Variable-Footnote-2132578
+Node: AWKLIBPATH Variable132838
+Node: Other Environment Variables133556
+Node: Exit Status136519
+Node: Include Files137194
+Node: Loading Shared Libraries140763
+Node: Obsolete142127
+Node: Undocumented142824
+Node: Regexp143066
+Node: Regexp Usage144455
+Node: Escape Sequences146480
+Node: Regexp Operators152149
+Ref: Regexp Operators-Footnote-1159529
+Ref: Regexp Operators-Footnote-2159676
+Node: Bracket Expressions159774
+Ref: table-char-classes161664
+Node: GNU Regexp Operators164187
+Node: Case-sensitivity167910
+Ref: Case-sensitivity-Footnote-1170878
+Ref: Case-sensitivity-Footnote-2171113
+Node: Leftmost Longest171221
+Node: Computed Regexps172422
+Node: Reading Files175759
+Node: Records177761
+Ref: Records-Footnote-1187284
+Node: Fields187321
+Ref: Fields-Footnote-1190277
+Node: Nonconstant Fields190363
+Node: Changing Fields192569
+Node: Field Separators198528
+Node: Default Field Splitting201230
+Node: Regexp Field Splitting202347
+Node: Single Character Fields205689
+Node: Command Line Field Separator206748
+Node: Full Line Fields210090
+Ref: Full Line Fields-Footnote-1210598
+Node: Field Splitting Summary210644
+Ref: Field Splitting Summary-Footnote-1213743
+Node: Constant Size213844
+Node: Splitting By Content218451
+Ref: Splitting By Content-Footnote-1222200
+Node: Multiple Line222240
+Ref: Multiple Line-Footnote-1228087
+Node: Getline228266
+Node: Plain Getline230482
+Node: Getline/Variable232577
+Node: Getline/File233724
+Node: Getline/Variable/File235065
+Ref: Getline/Variable/File-Footnote-1236664
+Node: Getline/Pipe236751
+Node: Getline/Variable/Pipe239450
+Node: Getline/Coprocess240557
+Node: Getline/Variable/Coprocess241809
+Node: Getline Notes242546
+Node: Getline Summary245333
+Ref: table-getline-variants245741
+Node: Read Timeout246653
+Ref: Read Timeout-Footnote-1250394
+Node: Command line directories250451
+Node: Printing251081
+Node: Print252712
+Node: Print Examples254049
+Node: Output Separators256833
+Node: OFMT258849
+Node: Printf260207
+Node: Basic Printf261113
+Node: Control Letters262652
+Node: Format Modifiers266464
+Node: Printf Examples272473
+Node: Redirection275185
+Node: Special Files282159
+Node: Special FD282692
+Ref: Special FD-Footnote-1286317
+Node: Special Network286391
+Node: Special Caveats287241
+Node: Close Files And Pipes288037
+Ref: Close Files And Pipes-Footnote-1295020
+Ref: Close Files And Pipes-Footnote-2295168
+Node: Expressions295318
+Node: Values296450
+Node: Constants297126
+Node: Scalar Constants297806
+Ref: Scalar Constants-Footnote-1298665
+Node: Nondecimal-numbers298847
+Node: Regexp Constants301847
+Node: Using Constant Regexps302322
+Node: Variables305377
+Node: Using Variables306032
+Node: Assignment Options307756
+Node: Conversion309631
+Ref: table-locale-affects315131
+Ref: Conversion-Footnote-1315755
+Node: All Operators315864
+Node: Arithmetic Ops316494
+Node: Concatenation318999
+Ref: Concatenation-Footnote-1321787
+Node: Assignment Ops321907
+Ref: table-assign-ops326895
+Node: Increment Ops328226
+Node: Truth Values and Conditions331660
+Node: Truth Values332743
+Node: Typing and Comparison333792
+Node: Variable Typing334585
+Ref: Variable Typing-Footnote-1338482
+Node: Comparison Operators338604
+Ref: table-relational-ops339014
+Node: POSIX String Comparison342562
+Ref: POSIX String Comparison-Footnote-1343518
+Node: Boolean Ops343656
+Ref: Boolean Ops-Footnote-1347726
+Node: Conditional Exp347817
+Node: Function Calls349549
+Node: Precedence353143
+Node: Locales356812
+Node: Patterns and Actions357901
+Node: Pattern Overview358955
+Node: Regexp Patterns360624
+Node: Expression Patterns361167
+Node: Ranges364948
+Node: BEGIN/END368052
+Node: Using BEGIN/END368814
+Ref: Using BEGIN/END-Footnote-1371550
+Node: I/O And BEGIN/END371656
+Node: BEGINFILE/ENDFILE373938
+Node: Empty376852
+Node: Using Shell Variables377169
+Node: Action Overview379454
+Node: Statements381811
+Node: If Statement383665
+Node: While Statement385164
+Node: Do Statement387208
+Node: For Statement388364
+Node: Switch Statement391516
+Node: Break Statement393670
+Node: Continue Statement395660
+Node: Next Statement397453
+Node: Nextfile Statement399843
+Node: Exit Statement402498
+Node: Built-in Variables404914
+Node: User-modified406009
+Ref: User-modified-Footnote-1414367
+Node: Auto-set414429
+Ref: Auto-set-Footnote-1427886
+Ref: Auto-set-Footnote-2428091
+Node: ARGC and ARGV428147
+Node: Arrays432001
+Node: Array Basics433506
+Node: Array Intro434332
+Node: Reference to Elements438649
+Node: Assigning Elements440919
+Node: Array Example441410
+Node: Scanning an Array443142
+Node: Controlling Scanning445456
+Ref: Controlling Scanning-Footnote-1450543
+Node: Delete450859
+Ref: Delete-Footnote-1453624
+Node: Numeric Array Subscripts453681
+Node: Uninitialized Subscripts455864
+Node: Multidimensional457491
+Node: Multiscanning460584
+Node: Arrays of Arrays462173
+Node: Functions466813
+Node: Built-in467632
+Node: Calling Built-in468710
+Node: Numeric Functions470698
+Ref: Numeric Functions-Footnote-1474530
+Ref: Numeric Functions-Footnote-2474887
+Ref: Numeric Functions-Footnote-3474935
+Node: String Functions475204
+Ref: String Functions-Footnote-1498162
+Ref: String Functions-Footnote-2498291
+Ref: String Functions-Footnote-3498539
+Node: Gory Details498626
+Ref: table-sub-escapes500305
+Ref: table-sub-posix-92501659
+Ref: table-sub-proposed503010
+Ref: table-posix-sub504364
+Ref: table-gensub-escapes505909
+Ref: Gory Details-Footnote-1507085
+Ref: Gory Details-Footnote-2507136
+Node: I/O Functions507287
+Ref: I/O Functions-Footnote-1514277
+Node: Time Functions514424
+Ref: Time Functions-Footnote-1525407
+Ref: Time Functions-Footnote-2525475
+Ref: Time Functions-Footnote-3525633
+Ref: Time Functions-Footnote-4525744
+Ref: Time Functions-Footnote-5525856
+Ref: Time Functions-Footnote-6526083
+Node: Bitwise Functions526349
+Ref: table-bitwise-ops526911
+Ref: Bitwise Functions-Footnote-1531132
+Node: Type Functions531316
+Node: I18N Functions532467
+Node: User-defined534094
+Node: Definition Syntax534898
+Ref: Definition Syntax-Footnote-1539812
+Node: Function Example539881
+Ref: Function Example-Footnote-1542530
+Node: Function Caveats542552
+Node: Calling A Function543070
+Node: Variable Scope544025
+Node: Pass By Value/Reference546988
+Node: Return Statement550496
+Node: Dynamic Typing553477
+Node: Indirect Calls554408
+Node: Library Functions564095
+Ref: Library Functions-Footnote-1567608
+Ref: Library Functions-Footnote-2567751
+Node: Library Names567922
+Ref: Library Names-Footnote-1571395
+Ref: Library Names-Footnote-2571615
+Node: General Functions571701
+Node: Strtonum Function572729
+Node: Assert Function575659
+Node: Round Function578985
+Node: Cliff Random Function580526
+Node: Ordinal Functions581542
+Ref: Ordinal Functions-Footnote-1584619
+Ref: Ordinal Functions-Footnote-2584871
+Node: Join Function585082
+Ref: Join Function-Footnote-1586853
+Node: Getlocaltime Function587053
+Node: Readfile Function590794
+Node: Data File Management592633
+Node: Filetrans Function593265
+Node: Rewind Function597334
+Node: File Checking598721
+Node: Empty Files599815
+Node: Ignoring Assigns602045
+Node: Getopt Function603599
+Ref: Getopt Function-Footnote-1614902
+Node: Passwd Functions615105
+Ref: Passwd Functions-Footnote-1624083
+Node: Group Functions624171
+Node: Walking Arrays632255
+Node: Sample Programs634391
+Node: Running Examples635065
+Node: Clones635793
+Node: Cut Program637017
+Node: Egrep Program646868
+Ref: Egrep Program-Footnote-1654641
+Node: Id Program654751
+Node: Split Program658400
+Ref: Split Program-Footnote-1661919
+Node: Tee Program662047
+Node: Uniq Program664850
+Node: Wc Program672279
+Ref: Wc Program-Footnote-1676545
+Ref: Wc Program-Footnote-2676745
+Node: Miscellaneous Programs676837
+Node: Dupword Program678025
+Node: Alarm Program680056
+Node: Translate Program684863
+Ref: Translate Program-Footnote-1689250
+Ref: Translate Program-Footnote-2689498
+Node: Labels Program689632
+Ref: Labels Program-Footnote-1693003
+Node: Word Sorting693087
+Node: History Sorting696971
+Node: Extract Program698810
+Ref: Extract Program-Footnote-1706313
+Node: Simple Sed706441
+Node: Igawk Program709503
+Ref: Igawk Program-Footnote-1724660
+Ref: Igawk Program-Footnote-2724861
+Node: Anagram Program724999
+Node: Signature Program728067
+Node: Advanced Features729167
+Node: Nondecimal Data731053
+Node: Array Sorting732636
+Node: Controlling Array Traversal733333
+Node: Array Sorting Functions741617
+Ref: Array Sorting Functions-Footnote-1745486
+Node: Two-way I/O745680
+Ref: Two-way I/O-Footnote-1751112
+Node: TCP/IP Networking751194
+Node: Profiling754038
+Node: Internationalization761541
+Node: I18N and L10N762966
+Node: Explaining gettext763652
+Ref: Explaining gettext-Footnote-1768720
+Ref: Explaining gettext-Footnote-2768904
+Node: Programmer i18n769069
+Node: Translator i18n773271
+Node: String Extraction774065
+Ref: String Extraction-Footnote-1775026
+Node: Printf Ordering775112
+Ref: Printf Ordering-Footnote-1777894
+Node: I18N Portability777958
+Ref: I18N Portability-Footnote-1780407
+Node: I18N Example780470
+Ref: I18N Example-Footnote-1783108
+Node: Gawk I18N783180
+Node: Debugger783801
+Node: Debugging784772
+Node: Debugging Concepts785205
+Node: Debugging Terms787061
+Node: Awk Debugging789658
+Node: Sample Debugging Session790550
+Node: Debugger Invocation791070
+Node: Finding The Bug792403
+Node: List of Debugger Commands798890
+Node: Breakpoint Control800224
+Node: Debugger Execution Control803888
+Node: Viewing And Changing Data807248
+Node: Execution Stack810604
+Node: Debugger Info812071
+Node: Miscellaneous Debugger Commands816053
+Node: Readline Support821229
+Node: Limitations822060
+Node: Arbitrary Precision Arithmetic824312
+Ref: Arbitrary Precision Arithmetic-Footnote-1825961
+Node: General Arithmetic826109
+Node: Floating Point Issues827829
+Node: String Conversion Precision828710
+Ref: String Conversion Precision-Footnote-1830415
+Node: Unexpected Results830524
+Node: POSIX Floating Point Problems832677
+Ref: POSIX Floating Point Problems-Footnote-1836502
+Node: Integer Programming836540
+Node: Floating-point Programming838279
+Ref: Floating-point Programming-Footnote-1844610
+Ref: Floating-point Programming-Footnote-2844880
+Node: Floating-point Representation845144
+Node: Floating-point Context846309
+Ref: table-ieee-formats847148
+Node: Rounding Mode848532
+Ref: table-rounding-modes849011
+Ref: Rounding Mode-Footnote-1852026
+Node: Gawk and MPFR852205
+Node: Arbitrary Precision Floats853616
+Ref: Arbitrary Precision Floats-Footnote-1856059
+Node: Setting Precision856375
+Ref: table-predefined-precision-strings857061
+Node: Setting Rounding Mode859206
+Ref: table-gawk-rounding-modes859610
+Node: Floating-point Constants860797
+Node: Changing Precision862226
+Ref: Changing Precision-Footnote-1863623
+Node: Exact Arithmetic863797
+Node: Arbitrary Precision Integers866935
+Ref: Arbitrary Precision Integers-Footnote-1869950
+Node: Dynamic Extensions870097
+Node: Extension Intro871555
+Node: Plugin License872820
+Node: Extension Mechanism Outline873505
+Ref: load-extension873922
+Ref: load-new-function875400
+Ref: call-new-function876395
+Node: Extension API Description878410
+Node: Extension API Functions Introduction879697
+Node: General Data Types884624
+Ref: General Data Types-Footnote-1890319
+Node: Requesting Values890618
+Ref: table-value-types-returned891355
+Node: Memory Allocation Functions892309
+Ref: Memory Allocation Functions-Footnote-1895055
+Node: Constructor Functions895151
+Node: Registration Functions896909
+Node: Extension Functions897594
+Node: Exit Callback Functions899896
+Node: Extension Version String901145
+Node: Input Parsers901795
+Node: Output Wrappers911552
+Node: Two-way processors916062
+Node: Printing Messages918270
+Ref: Printing Messages-Footnote-1919347
+Node: Updating `ERRNO'919499
+Node: Accessing Parameters920238
+Node: Symbol Table Access921468
+Node: Symbol table by name921982
+Node: Symbol table by cookie923958
+Ref: Symbol table by cookie-Footnote-1928090
+Node: Cached values928153
+Ref: Cached values-Footnote-1931643
+Node: Array Manipulation931734
+Ref: Array Manipulation-Footnote-1932832
+Node: Array Data Types932871
+Ref: Array Data Types-Footnote-1935574
+Node: Array Functions935666
+Node: Flattening Arrays939502
+Node: Creating Arrays946354
+Node: Extension API Variables951079
+Node: Extension Versioning951715
+Node: Extension API Informational Variables953616
+Node: Extension API Boilerplate954702
+Node: Finding Extensions958506
+Node: Extension Example959066
+Node: Internal File Description959796
+Node: Internal File Ops963887
+Ref: Internal File Ops-Footnote-1975396
+Node: Using Internal File Ops975536
+Ref: Using Internal File Ops-Footnote-1977889
+Node: Extension Samples978155
+Node: Extension Sample File Functions979679
+Node: Extension Sample Fnmatch988164
+Node: Extension Sample Fork989933
+Node: Extension Sample Inplace991146
+Node: Extension Sample Ord992924
+Node: Extension Sample Readdir993760
+Node: Extension Sample Revout995292
+Node: Extension Sample Rev2way995885
+Node: Extension Sample Read write array996575
+Node: Extension Sample Readfile998458
+Node: Extension Sample API Tests999558
+Node: Extension Sample Time1000083
+Node: gawkextlib1001447
+Node: Language History1004228
+Node: V7/SVR3.11005821
+Node: SVR41008141
+Node: POSIX1009583
+Node: BTL1010969
+Node: POSIX/GNU1011703
+Node: Feature History1017302
+Node: Common Extensions1030278
+Node: Ranges and Locales1031590
+Ref: Ranges and Locales-Footnote-11036207
+Ref: Ranges and Locales-Footnote-21036234
+Ref: Ranges and Locales-Footnote-31036468
+Node: Contributors1036689
+Node: Installation1042070
+Node: Gawk Distribution1042964
+Node: Getting1043448
+Node: Extracting1044274
+Node: Distribution contents1045966
+Node: Unix Installation1051671
+Node: Quick Installation1052288
+Node: Additional Configuration Options1054734
+Node: Configuration Philosophy1056470
+Node: Non-Unix Installation1058824
+Node: PC Installation1059282
+Node: PC Binary Installation1060581
+Node: PC Compiling1062429
+Node: PC Testing1065373
+Node: PC Using1066549
+Node: Cygwin1070717
+Node: MSYS1071526
+Node: VMS Installation1072040
+Node: VMS Compilation1072804
+Ref: VMS Compilation-Footnote-11074056
+Node: VMS Dynamic Extensions1074114
+Node: VMS Installation Details1075487
+Node: VMS Running1077738
+Node: VMS GNV1080572
+Node: VMS Old Gawk1081295
+Node: Bugs1081765
+Node: Other Versions1085683
+Node: Notes1091767
+Node: Compatibility Mode1092567
+Node: Additions1093350
+Node: Accessing The Source1094277
+Node: Adding Code1095717
+Node: New Ports1101762
+Node: Derived Files1105897
+Ref: Derived Files-Footnote-11111218
+Ref: Derived Files-Footnote-21111252
+Ref: Derived Files-Footnote-31111852
+Node: Future Extensions1111950
+Node: Implementation Limitations1112533
+Node: Extension Design1113785
+Node: Old Extension Problems1114939
+Ref: Old Extension Problems-Footnote-11116447
+Node: Extension New Mechanism Goals1116504
+Ref: Extension New Mechanism Goals-Footnote-11119869
+Node: Extension Other Design Decisions1120055
+Node: Extension Future Growth1122161
+Node: Old Extension Mechanism1122997
+Node: Basic Concepts1124737
+Node: Basic High Level1125418
+Ref: figure-general-flow1125690
+Ref: figure-process-flow1126289
+Ref: Basic High Level-Footnote-11129518
+Node: Basic Data Typing1129703
+Node: Glossary1133058
+Node: Copying1158289
+Node: GNU Free Documentation License1195845
+Node: Index1220981

End Tag Table
diff --git a/doc/gawk.texi b/doc/gawk.texi
index fa3e5871..539ea53d 100644
--- a/doc/gawk.texi
+++ b/doc/gawk.texi
@@ -19,6 +19,20 @@
* awk: (gawk)Invoking gawk. Text scanning and processing.
@end direntry
+@ifset FOR_PRINT
+@tex
+\gdef\xrefprintnodename#1{``#1''}
+@end tex
+@end ifset
+@ifclear FOR_PRINT
+@c With early 2014 texinfo.tex, restore PDF links and colors
+@tex
+\gdef\linkcolor{0.5 0.09 0.12} % Dark Red
+\gdef\urlcolor{0.5 0.09 0.12} % Also
+\global\urefurlonlylinktrue
+@end tex
+@end ifclear
+
@set xref-automatic-section-title
@c The following information should be updated here only!
@@ -26,9 +40,9 @@
@c applies to and all the info about who's publishing this edition
@c These apply across the board.
-@set UPDATE-MONTH May, 2013
+@set UPDATE-MONTH April, 2014
@set VERSION 4.1
-@set PATCHLEVEL 0
+@set PATCHLEVEL 1
@set FSF
@@ -102,11 +116,19 @@
@end ifnottex
@ifnottex
+@ifnotdocbook
@macro ii{text}
@i{\text\}
@end macro
+@end ifnotdocbook
@end ifnottex
+@ifdocbook
+@macro ii{text}
+@inlineraw{docbook,<lineannotation>\text\</lineannotation>}
+@end macro
+@end ifdocbook
+
@c For HTML, spell out email addresses, to avoid problems with
@c address harvesters for spammers.
@ifhtml
@@ -120,19 +142,36 @@
@end macro
@end ifnothtml
-@set FN file name
-@set FFN File Name
-@set DF data file
-@set DDF Data File
-@set PVERSION version
-@set CTL Ctrl
+@c Indexing macros
+@ifinfo
+
+@macro cindexawkfunc{name}
+@cindex @code{\name\}
+@end macro
+
+@macro cindexgawkfunc{name}
+@cindex @code{\name\}
+@end macro
+
+@end ifinfo
+
+@ifnotinfo
+
+@macro cindexawkfunc{name}
+@cindex @code{\name\()} function
+@end macro
+
+@macro cindexgawkfunc{name}
+@cindex @code{\name\()} function (@command{gawk})
+@end macro
+@end ifnotinfo
@ignore
Some comments on the layout for TeX.
-1. Use at least texinfo.tex 2000-09-06.09
-2. I have done A LOT of work to make this look good. There are `@page' commands
- and use of `@group ... @end group' in a number of places. If you muck
- with anything, it's your responsibility not to break the layout.
+1. Use at least texinfo.tex 2014-01-30.15
+2. When using @docbook, if the last line is part of a paragraph, end
+it with a space and @c so that the lines won't run together. This is a
+quirk of the language / makeinfo, and isn't going to change.
@end ignore
@c merge the function and variable indexes into the concept index
@@ -148,6 +187,10 @@ Some comments on the layout for TeX.
@syncodeindex fn cp
@syncodeindex vr cp
@end ifxml
+@ifdocbook
+@synindex fn cp
+@synindex vr cp
+@end ifdocbook
@c If "finalout" is commented out, the printed output will show
@c black boxes that mark lines that are too long. Thus, it is
@@ -159,9 +202,26 @@ Some comments on the layout for TeX.
@end iftex
@copying
-Copyright @copyright{} 1989, 1991, 1992, 1993, 1996, 1997, 1998, 1999,
-2000, 2001, 2002, 2003, 2004, 2005, 2007, 2009, 2010, 2011, 2012, 2013
+@docbook
+<para>Published by:</para>
+
+<literallayout class="normal">Free Software Foundation
+51 Franklin Street, Fifth Floor
+Boston, MA 02110-1301 USA
+Phone: +1-617-542-5942
+Fax: +1-617-542-2652
+Email: <email>gnu@@gnu.org</email>
+URL: <ulink url="http://www.gnu.org">http://www.gnu.org/</ulink></literallayout>
+
+<literallayout class="normal">Copyright &copy; 1989, 1991, 1992, 1993, 1996&ndash;2005, 2007, 2009&ndash;2014
Free Software Foundation, Inc.
+All Rights Reserved.</literallayout>
+@end docbook
+
+@ifnotdocbook
+Copyright @copyright{} 1989, 1991, 1992, 1993, 1996--2005, 2007, 2009--2014 @*
+Free Software Foundation, Inc.
+@end ifnotdocbook
@sp 2
This is Edition @value{EDITION} of @cite{@value{TITLE}: @value{SUBTITLE}},
@@ -201,6 +261,7 @@ supports it in developing GNU and promoting software freedom.''
@c during editing and review.
@setchapternewpage odd
+@shorttitlepage GNU Awk
@titlepage
@title @value{TITLE}
@subtitle @value{SUBTITLE}
@@ -208,6 +269,7 @@ supports it in developing GNU and promoting software freedom.''
@subtitle @value{UPDATE-MONTH}
@author Arnold D. Robbins
+@ifnotdocbook
@c Include the Distribution inside the titlepage environment so
@c that headings are turned off. Headings on and off do not work.
@@ -232,6 +294,7 @@ URL: @uref{http://www.gnu.org/} @*
ISBN 1-882114-28-0 @*
@sp 2
@insertcopying
+@end ifnotdocbook
@end titlepage
@c Thanks to Bob Chassell for directions on doing dedications.
@@ -256,6 +319,18 @@ ISBN 1-882114-28-0 @*
@headings on
@end iftex
+@docbook
+<dedication>
+<simplelist>
+<member>To Miriam, for making me complete.</member>
+<member>To Chana, for the joy you bring us.</member>
+<member>To Rivka, for the exponential increase.</member>
+<member>To Nachum, for the added dimension.</member>
+<member>To Malka, for the new beginning.</member>
+</simplelist>
+</dedication>
+@end docbook
+
@iftex
@headings off
@evenheading @thispage@ @ @ @strong{@value{TITLE}} @| @|
@@ -264,6 +339,7 @@ ISBN 1-882114-28-0 @*
@ifnottex
@ifnotxml
+@ifnotdocbook
@node Top
@top General Introduction
@c Preface node should come right after the Top
@@ -275,6 +351,7 @@ particular records in a file and perform operations upon them.
@insertcopying
+@end ifnotdocbook
@end ifnotxml
@end ifnottex
@@ -407,10 +484,12 @@ particular records in a file and perform operations upon them.
field.
* Command Line Field Separator:: Setting @code{FS} from the
command-line.
+* Full Line Fields:: Making the full line be a single
+ field.
* 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.
+* Multiple Line:: Reading multiline records.
* Getline:: Reading files under explicit program
control using the @code{getline}
function.
@@ -561,9 +640,9 @@ particular records in a file and perform operations upon them.
@command{awk}.
* Uninitialized Subscripts:: Using Uninitialized variables as
subscripts.
-* Multi-dimensional:: Emulating multidimensional arrays in
+* Multidimensional:: Emulating multidimensional arrays in
@command{awk}.
-* Multi-scanning:: Scanning multidimensional arrays.
+* Multiscanning:: 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.
@@ -615,6 +694,8 @@ particular records in a file and perform operations upon them.
* Join Function:: A function to join an array into a
string.
* Getlocaltime Function:: A function to get formatted times.
+* Readfile Function:: A function to read an entire file at
+ once.
* Data File Management:: Functions for managing command-line
data files.
* Filetrans Function:: A function for handling data file
@@ -732,6 +813,7 @@ particular records in a file and perform operations upon them.
* Extension API Functions Introduction:: Introduction to the API functions.
* General Data Types:: The data types.
* Requesting Values:: How to get a value.
+* Memory Allocation Functions:: Functions for allocating memory.
* Constructor Functions:: Functions for creating values.
* Registration Functions:: Functions to register things with
@command{gawk}.
@@ -794,6 +876,8 @@ particular records in a file and perform operations upon them.
version of @command{awk}.
* POSIX/GNU:: The extensions in @command{gawk} not
in POSIX @command{awk}.
+* Feature History:: The history of the features in
+ @command{gawk}.
* Common Extensions:: Common Extensions Summary.
* Ranges and Locales:: How locales used to affect regexp
ranges.
@@ -826,9 +910,12 @@ particular records in a file and perform operations upon them.
* VMS Installation:: Installing @command{gawk} on VMS.
* VMS Compilation:: How to compile @command{gawk} under
VMS.
+* VMS Dynamic Extensions:: Compiling @command{gawk} dynamic
+ extensions on VMS.
* VMS Installation Details:: How to install @command{gawk} under
VMS.
* VMS Running:: How to run @command{gawk} under VMS.
+* VMS GNV:: The VMS GNV Project.
* VMS Old Gawk:: An old version comes with some VMS
systems.
* Bugs:: Reporting Problems and Bugs.
@@ -962,21 +1049,37 @@ and the AWK prototype becomes the product.
The new @command{pgawk} (profiling @command{gawk}), produces
program execution counts.
I recently experimented with an algorithm that for
-@math{n} lines of input, exhibited
+@ifnotdocbook
+@math{n}
+@end ifnotdocbook
+@ifdocbook
+@i{n}
+@end ifdocbook
+lines of input, exhibited
@tex
$\sim\! Cn^2$
@end tex
@ifnottex
+@ifnotdocbook
~ C n^2
+@end ifnotdocbook
@end ifnottex
+@docbook
+<emphasis>&sim; Cn<superscript>2</superscript></emphasis> @c
+@end docbook
performance, while
theory predicted
@tex
$\sim\! Cn\log n$
@end tex
@ifnottex
+@ifnotdocbook
~ C n log n
+@end ifnotdocbook
@end ifnottex
+@docbook
+<emphasis>&sim; Cn log n</emphasis> @c
+@end docbook
behavior. A few minutes poring
over the @file{awkprof.out} profile pinpointed the problem to
a single line of code. @command{pgawk} is a welcome addition to
@@ -986,6 +1089,7 @@ Arnold has distilled over a decade of experience writing and
using AWK programs, and developing @command{gawk}, into this book. If you use
AWK or want to learn how, then read this book.
+@cindex Brennan, Michael
@display
Michael Brennan
Author of @command{mawk}
@@ -1010,6 +1114,7 @@ Such jobs are often easier with @command{awk}.
The @command{awk} utility interprets a special-purpose programming language
that makes it easy to handle simple data-reformatting jobs.
+@cindex Brian Kernighan's @command{awk}
The GNU implementation of @command{awk} is called @command{gawk}; if you
invoke it with the proper options or environment variables
(@pxref{Options}), it is fully
@@ -1188,17 +1293,17 @@ wrote the bulk of
@cite{TCP/IP Internetworking with @command{gawk}}
(a separate document, available as part of the @command{gawk} distribution).
His code finally became part of the main @command{gawk} distribution
-with @command{gawk} @value{PVERSION} 3.1.
+with @command{gawk} version 3.1.
John Haque rewrote the @command{gawk} internals, in the process providing
an @command{awk}-level debugger. This version became available as
-@command{gawk} @value{PVERSION} 4.0, in 2011.
+@command{gawk} version 4.0, in 2011.
@xref{Contributors},
for a complete list of those who made important contributions to @command{gawk}.
@node Names
-@section A Rose by Any Other Name
+@unnumberedsec A Rose by Any Other Name
@cindex @command{awk}, new vs.@: old
The @command{awk} language has evolved over the years. Full details are
@@ -1234,7 +1339,7 @@ we simply use the term @command{awk}. When referring to a feature that is
specific to the GNU implementation, we use the term @command{gawk}.
@node This Manual
-@section Using This Book
+@unnumberedsec Using This Book
@cindex @command{awk}, terms describing
The term @command{awk} refers to a particular program as well as to the language you
@@ -1244,7 +1349,7 @@ and the program ``the @command{awk} utility.''
This @value{DOCUMENT} explains
both how to write programs in the @command{awk} language and how to
run the @command{awk} utility.
-The term @dfn{@command{awk} program} refers to a program written by you in
+The term ``@command{awk} program'' refers to a program written by you in
the @command{awk} programming language.
@cindex @command{gawk}, @command{awk} and
@@ -1407,7 +1512,7 @@ present the licenses that cover the @command{gawk} source code
and this @value{DOCUMENT}, respectively.
@node Conventions
-@section Typographical Conventions
+@unnumberedsec Typographical Conventions
@cindex Texinfo
This @value{DOCUMENT} is written in @uref{http://www.gnu.org/software/texinfo/, Texinfo},
@@ -1446,23 +1551,23 @@ emphasized @emph{like this}, and if a point needs to be made
strongly, it is done @strong{like this}. The first occurrence of
a new term is usually its @dfn{definition} and appears in the same
font as the previous occurrence of ``definition'' in this sentence.
-Finally, @value{FN}s are indicated like this: @file{/path/to/ourfile}.
+Finally, file names are indicated like this: @file{/path/to/ourfile}.
@end ifnotinfo
Characters that you type at the keyboard look @kbd{like this}. In particular,
there are special characters called ``control characters.'' These are
characters that you type by holding down both the @kbd{CONTROL} key and
-another key, at the same time. For example, a @kbd{@value{CTL}-d} is typed
+another key, at the same time. For example, a @kbd{Ctrl-d} is typed
by first pressing and holding the @kbd{CONTROL} key, next
pressing the @kbd{d} key and finally releasing both keys.
@c fakenode --- for prepinfo
-@subsubheading Dark Corners
+@unnumberedsubsec Dark Corners
@cindex Kernighan, Brian
@quotation
@i{Dark corners are basically fractal --- no matter how much
-you illuminate, there's always a smaller but darker one.}@*
-Brian Kernighan
+you illuminate, there's always a smaller but darker one.}
+@author Brian Kernighan
@end quotation
@cindex d.c., See dark corner
@@ -1597,7 +1702,7 @@ of @cite{GAWK: The GNU Awk User's Guide}.
Edition @value{EDITION} maintains the basic structure of Edition 1.0,
but with significant additional material, reflecting the host of new features
-in @command{gawk} @value{PVERSION} @value{VERSION}.
+in @command{gawk} version @value{VERSION}.
Of particular note is
@ref{Array Sorting},
@ref{Bitwise Functions},
@@ -1760,7 +1865,7 @@ significant editorial help for this @value{DOCUMENT} for the
3.1 release of @command{gawk}.
@end quotation
-@cindex Beebe, Nelson
+@cindex Beebe, Nelson H.F.@:
@cindex Buening, Andreas
@cindex Collado, Manuel
@cindex Colombo, Antonio
@@ -1777,7 +1882,6 @@ significant editorial help for this @value{DOCUMENT} for the
@cindex Rankin, Pat
@cindex Schorr, Andrew
@cindex Vinschen, Corinna
-@cindex Wallin, Anders
@cindex Zaretskii, Eli
Dr.@: Nelson Beebe,
@@ -1797,7 +1901,6 @@ Chet Ramey,
Pat Rankin,
Andrew Schorr,
Corinna Vinschen,
-Anders Wallin,
and Eli Zaretskii
(in alphabetical order)
make up the current
@@ -2033,9 +2136,9 @@ awk '@var{program}'
@noindent
@command{awk} applies the @var{program} to the @dfn{standard input},
which usually means whatever you type on the terminal. This continues
-until you indicate end-of-file by typing @kbd{@value{CTL}-d}.
+until you indicate end-of-file by typing @kbd{Ctrl-d}.
(On other operating systems, the end-of-file character may be different.
-For example, on OS/2, it is @kbd{@value{CTL}-z}.)
+For example, on OS/2, it is @kbd{Ctrl-z}.)
@cindex files, input, See input files
@cindex input files, running @command{awk} without
@@ -2055,11 +2158,11 @@ $ @kbd{awk "BEGIN @{ print \"Don't Panic!\" @}"}
@print{} Don't Panic!
@end example
-@cindex quoting
-@cindex double quote (@code{"})
-@cindex @code{"} (double quote)
-@cindex @code{\} (backslash)
-@cindex backslash (@code{\})
+@cindex shell quoting, double quote
+@cindex double quote (@code{"}) in shell commands
+@cindex @code{"} (double quote) in shell commands
+@cindex @code{\} (backslash) in shell commands
+@cindex backslash (@code{\}) in shell commands
This program does not read any input. The @samp{\} before each of the
inner double quotes is necessary because of the shell's quoting
rules---in particular because it mixes both single quotes and
@@ -2081,7 +2184,7 @@ $ @kbd{awk '@{ print @}'}
@print{} Four score and seven years ago, ...
@kbd{What, me worry?}
@print{} What, me worry?
-@kbd{@value{CTL}-d}
+@kbd{Ctrl-d}
@end example
@node Long
@@ -2098,11 +2201,10 @@ more convenient to put the program into a separate file. In order to tell
awk -f @var{source-file} @var{input-file1} @var{input-file2} @dots{}
@end example
-@cindex @code{-f} option
-@cindex command line, options
-@cindex options, command-line
+@cindex @option{-f} option
+@cindex command line, option @option{-f}
The @option{-f} instructs the @command{awk} utility to get the @command{awk} program
-from the file @var{source-file}. Any @value{FN} can be used for
+from the file @var{source-file}. Any file name can be used for
@var{source-file}. For example, you could put the program:
@example
@@ -2123,22 +2225,22 @@ does the same thing as this one:
awk "BEGIN @{ print \"Don't Panic!\" @}"
@end example
-@cindex quoting
+@cindex quoting in @command{gawk} command lines
@noindent
This was explained earlier
(@pxref{Read Terminal}).
-Note that you don't usually need single quotes around the @value{FN} that you
-specify with @option{-f}, because most @value{FN}s don't contain any of the shell's
+Note that you don't usually need single quotes around the file name that you
+specify with @option{-f}, because most file names don't contain any of the shell's
special characters. Notice that in @file{advice}, the @command{awk}
program did not have single quotes around it. The quotes are only needed
for programs that are provided on the @command{awk} command line.
@c STARTOFRANGE sq1x
-@cindex single quote (@code{'})
+@cindex single quote (@code{'}) in @command{gawk} command lines
@c STARTOFRANGE qs2x
-@cindex @code{'} (single quote)
+@cindex @code{'} (single quote) in @command{gawk} command lines
If you want to clearly identify your @command{awk} program files as such,
-you can add the extension @file{.awk} to the @value{FN}. This doesn't
+you can add the extension @file{.awk} to the file name. This doesn't
affect the execution of the @command{awk} program but it does make
``housekeeping'' easier.
@@ -2165,13 +2267,13 @@ BEGIN @{ print "Don't Panic!" @}
After making this file executable (with the @command{chmod} utility),
simply type @samp{advice}
at the shell and the system arranges to run @command{awk}@footnote{The
-line beginning with @samp{#!} lists the full @value{FN} of an interpreter
+line beginning with @samp{#!} lists the full file name of an interpreter
to run and an optional initial command-line argument to pass to that
interpreter. The operating system then runs the interpreter with the given
argument and the full argument list of the executed program. The first argument
-in the list is the full @value{FN} of the @command{awk} program.
+in the list is the full file name of the @command{awk} program.
The rest of the
-argument list contains either options to @command{awk}, or @value{DF}s,
+argument list contains either options to @command{awk}, or data files,
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}:
@@ -2285,7 +2387,7 @@ programs, but this usually isn't very useful; the purpose of a
comment is to help you or another person understand the program
when reading it at a later time.
-@cindex quoting
+@cindex quoting, for small awk programs
@cindex single quote (@code{'}), vs.@: apostrophe
@cindex @code{'} (single quote), vs.@: apostrophe
@quotation CAUTION
@@ -2326,7 +2428,7 @@ The next @value{SUBSECTION} describes the shell's quoting rules.
@node Quoting
@subsection Shell-Quoting Issues
-@cindex quoting, rules for
+@cindex shell quoting, rules for
@menu
* DOS Quoting:: Quoting in Windows Batch Files.
@@ -2361,10 +2463,10 @@ that character. The shell removes the backslash and passes the quoted
character on to the command.
@item
-@cindex @code{\} (backslash)
-@cindex backslash (@code{\})
-@cindex single quote (@code{'})
-@cindex @code{'} (single quote)
+@cindex @code{\} (backslash), in shell commands
+@cindex backslash (@code{\}), in shell commands
+@cindex single quote (@code{'}), in shell commands
+@cindex @code{'} (single quote), in shell commands
Single quotes protect everything between the opening and closing quotes.
The shell does no interpretation of the quoted text, passing it on verbatim
to the command.
@@ -2374,8 +2476,8 @@ Refer back to
for an example of what happens if you try.
@item
-@cindex double quote (@code{"})
-@cindex @code{"} (double quote)
+@cindex double quote (@code{"}), in shell commands
+@cindex @code{"} (double quote), in shell commands
Double quotes protect most things between the opening and closing quotes.
The shell does at least variable and command substitution on the quoted text.
Different shells may do additional kinds of processing on double-quoted text.
@@ -2412,7 +2514,7 @@ awk -F "" '@var{program}' @var{files} # correct
@end example
@noindent
-@cindex null strings, quoting and
+@cindex null strings in @command{gawk} arguments, quoting and
Don't use this:
@example
@@ -2421,11 +2523,11 @@ awk -F"" '@var{program}' @var{files} # wrong!
@noindent
In the second case, @command{awk} will attempt to use the text of the program
-as the value of @code{FS}, and the first @value{FN} as the text of the program!
+as the value of @code{FS}, and the first file name as the text of the program!
This results in syntax errors at best, and confusing behavior at worst.
@end itemize
-@cindex quoting, tricks for
+@cindex quoting in @command{gawk} command lines, tricks for
Mixing single and double quotes is difficult. You have to resort
to shell quoting tricks, like this:
@@ -2536,49 +2638,48 @@ gawk "@{ print \"\042\" $0 \"\042\" @}" @var{file}
@node Sample Data Files
-@section @value{DDF}s for the Examples
+@section Data Files for the Examples
@c For gawk >= 4.0, update these data files. No-one has such slow modems!
@cindex input files, examples
-@cindex @code{BBS-list} file
+@cindex @code{mail-list} file
Many of the examples in this @value{DOCUMENT} take their input from two sample
-@value{DF}s. The first, @file{BBS-list}, represents a list of
-computer bulletin board systems together with information about those systems.
-The second @value{DF}, called @file{inventory-shipped}, contains
+data files. The first, @file{mail-list}, represents a list of peoples' names
+together with their email addresses and information about those people.
+The second data file, called @file{inventory-shipped}, contains
information about monthly shipments. In both files,
each line is considered to be one @dfn{record}.
-In the @value{DF} @file{BBS-list}, each record contains the name of a computer
-bulletin board, its phone number, the board's baud rate(s), and a code for
-the number of hours it is operational. An @samp{A} in the last column
-means the board operates 24 hours a day. A @samp{B} in the last
-column means the board only operates on evening and weekend hours.
-A @samp{C} means the board operates only on weekends:
+In the data file @file{mail-list}, each record contains the name of a person,
+his/her phone number, his/her email-address, and a code for their relationship
+with the author of the list. An @samp{A} in the last column
+means that the person is an acquaintance. An @samp{F} in the last
+column means that the person is a friend.
+An @samp{R} means that the person is a relative:
-@c 2e: Update the baud rates to reflect today's faster modems
@example
@c system if test ! -d eg ; then mkdir eg ; fi
@c system if test ! -d eg/lib ; then mkdir eg/lib ; fi
@c system if test ! -d eg/data ; then mkdir eg/data ; fi
@c system if test ! -d eg/prog ; then mkdir eg/prog ; fi
@c system if test ! -d eg/misc ; then mkdir eg/misc ; fi
-@c file eg/data/BBS-list
-aardvark 555-5553 1200/300 B
-alpo-net 555-3412 2400/1200/300 A
-barfly 555-7685 1200/300 A
-bites 555-1675 2400/1200/300 A
-camelot 555-0542 300 C
-core 555-2912 1200/300 C
-fooey 555-1234 2400/1200/300 B
-foot 555-6699 1200/300 B
-macfoo 555-6480 1200/300 A
-sdace 555-3430 2400/1200/300 A
-sabafoo 555-2127 1200/300 C
+@c file eg/data/mail-list
+Amelia 555-5553 amelia.zodiacusque@@gmail.com F
+Anthony 555-3412 anthony.asserturo@@hotmail.com A
+Becky 555-7685 becky.algebrarum@@gmail.com A
+Bill 555-1675 bill.drowning@@hotmail.com A
+Broderick 555-0542 broderick.aliquotiens@@yahoo.com R
+Camilla 555-2912 camilla.infusarum@@skynet.be R
+Fabius 555-1234 fabius.undevicesimus@@ucb.edu F
+Julie 555-6699 julie.perscrutabor@@skeeve.com F
+Martin 555-6480 martin.codicibus@@hotmail.com A
+Samuel 555-3430 samuel.lanceolis@@shu.edu A
+Jean-Paul 555-2127 jeanpaul.campanorum@@nyu.edu R
@c endfile
@end example
@cindex @code{inventory-shipped} file
-The @value{DF} @file{inventory-shipped} represents
+The data file @file{inventory-shipped} represents
information about shipments during the year.
Each record contains the month, the number
of green crates shipped, the number of red boxes shipped, the number of
@@ -2608,45 +2709,30 @@ Apr 21 70 74 514
@c endfile
@end example
-@ifinfo
-If you are reading this in GNU Emacs using Info, you can copy the regions
-of text showing these sample files into your own test files. This way you
-can try out the examples shown in the remainder of this document. You do
-this by using the command @kbd{M-x write-region} to copy text from the Info
-file into a file for use with @command{awk}
-(@xref{Misc File Ops, , Miscellaneous File Operations, emacs, GNU Emacs Manual},
-for more information). Using this information, create your own
-@file{BBS-list} and @file{inventory-shipped} files and practice what you
-learn in this @value{DOCUMENT}.
-
-@cindex Texinfo
-If you are using the stand-alone version of Info,
-see @ref{Extract Program},
-for an @command{awk} program that extracts these @value{DF}s from
-@file{gawk.texi}, the Texinfo source file for this Info file.
-@end ifinfo
+The sample files are included in the @command{gawk} distribution,
+in the directory @file{awklib/eg/data}.
@node Very Simple
@section Some Simple Examples
The following command runs a simple @command{awk} program that searches the
-input file @file{BBS-list} for the character string @samp{foo} (a
+input file @file{mail-list} for the character string @samp{li} (a
grouping of characters is usually called a @dfn{string};
the term @dfn{string} is based on similar usage in English, such
as ``a string of pearls,'' or ``a string of cars in a train''):
@example
-awk '/foo/ @{ print $0 @}' BBS-list
+awk '/li/ @{ print $0 @}' mail-list
@end example
@noindent
-When lines containing @samp{foo} are found, they are printed because
+When lines containing @samp{li} are found, they are printed because
@w{@samp{print $0}} means print the current line. (Just @samp{print} by
itself means the same thing, so we could have written that
instead.)
-You will notice that slashes (@samp{/}) surround the string @samp{foo}
-in the @command{awk} program. The slashes indicate that @samp{foo}
+You will notice that slashes (@samp{/}) surround the string @samp{li}
+in the @command{awk} program. The slashes indicate that @samp{li}
is the pattern to search for. This type of pattern is called a
@dfn{regular expression}, which is covered in more detail later
(@pxref{Regexp}).
@@ -2658,11 +2744,11 @@ interpret any of it as special shell characters.
Here is what this program prints:
@example
-$ @kbd{awk '/foo/ @{ print $0 @}' BBS-list}
-@print{} fooey 555-1234 2400/1200/300 B
-@print{} foot 555-6699 1200/300 B
-@print{} macfoo 555-6480 1200/300 A
-@print{} sabafoo 555-2127 1200/300 C
+$ @kbd{awk '/li/ @{ print $0 @}' mail-list}
+@print{} Amelia 555-5553 amelia.zodiacusque@@gmail.com F
+@print{} Broderick 555-0542 broderick.aliquotiens@@yahoo.com R
+@print{} Julie 555-6699 julie.perscrutabor@@skeeve.com F
+@print{} Samuel 555-3430 samuel.lanceolis@@shu.edu A
@end example
@cindex actions, default
@@ -2675,7 +2761,7 @@ action is to print all lines that match the pattern.
@cindex actions, empty
Thus, we could leave out the action (the @code{print} statement and the curly
braces) in the previous example and the result would be the same:
-@command{awk} prints all lines matching the pattern @samp{foo}. By comparison,
+@command{awk} prints all lines matching the pattern @samp{li}. By comparison,
omitting the @code{print} statement but retaining the curly braces makes an
empty action that does nothing (i.e., no lines are printed).
@@ -2685,9 +2771,9 @@ collection of useful, short programs to get you started. Some of these
programs contain constructs that haven't been covered yet. (The description
of the program will give you a good idea of what is going on, but please
read the rest of the @value{DOCUMENT} to become an @command{awk} expert!)
-Most of the examples use a @value{DF} named @file{data}. This is just a
+Most of the examples use a data file named @file{data}. This is just a
placeholder; if you use these programs yourself, substitute
-your own @value{FN}s for @file{data}.
+your own file names for @file{data}.
For future reference, note that there is often more than
one way to do things in @command{awk}. At some point, you may want
to look back at these examples and see if
@@ -2777,7 +2863,7 @@ awk 'END @{ print NR @}' data
@end example
@item
-Print the even-numbered lines in the @value{DF}:
+Print the even-numbered lines in the data file:
@example
awk 'NR % 2 == 0' data
@@ -2819,30 +2905,24 @@ This program prints every line that contains the string
@samp{12} @emph{or} the string @samp{21}. If a line contains both
strings, it is printed twice, once by each rule.
-This is what happens if we run this program on our two sample @value{DF}s,
-@file{BBS-list} and @file{inventory-shipped}:
+This is what happens if we run this program on our two sample data files,
+@file{mail-list} and @file{inventory-shipped}:
@example
$ @kbd{awk '/12/ @{ print $0 @}}
-> @kbd{/21/ @{ print $0 @}' BBS-list inventory-shipped}
-@print{} aardvark 555-5553 1200/300 B
-@print{} alpo-net 555-3412 2400/1200/300 A
-@print{} barfly 555-7685 1200/300 A
-@print{} bites 555-1675 2400/1200/300 A
-@print{} core 555-2912 1200/300 C
-@print{} fooey 555-1234 2400/1200/300 B
-@print{} foot 555-6699 1200/300 B
-@print{} macfoo 555-6480 1200/300 A
-@print{} sdace 555-3430 2400/1200/300 A
-@print{} sabafoo 555-2127 1200/300 C
-@print{} sabafoo 555-2127 1200/300 C
+> @kbd{/21/ @{ print $0 @}' mail-list inventory-shipped}
+@print{} Anthony 555-3412 anthony.asserturo@@hotmail.com A
+@print{} Camilla 555-2912 camilla.infusarum@@skynet.be R
+@print{} Fabius 555-1234 fabius.undevicesimus@@ucb.edu F
+@print{} Jean-Paul 555-2127 jeanpaul.campanorum@@nyu.edu R
+@print{} Jean-Paul 555-2127 jeanpaul.campanorum@@nyu.edu R
@print{} Jan 21 36 64 620
@print{} Apr 21 70 74 514
@end example
@noindent
-Note how the line beginning with @samp{sabafoo}
-in @file{BBS-list} was printed twice, once for each rule.
+Note how the line beginning with @samp{Jean-Paul}
+in @file{mail-list} was printed twice, once for each rule.
@node More Complex
@section A More Complex Example
@@ -2885,7 +2965,7 @@ the file. The fourth field identifies the group of the file.
The fifth field contains the size of the file in bytes. The
sixth, seventh, and eighth fields contain the month, day, and time,
respectively, that the file was last modified. Finally, the ninth field
-contains the @value{FN}.@footnote{The @samp{LC_ALL=C} is
+contains the file name.@footnote{The @samp{LC_ALL=C} is
needed to produce this traditional-style output from @command{ls}.}
@c @cindex automatic initialization
@@ -2921,7 +3001,7 @@ separate rule, like this:
@example
awk '/12/ @{ print $0 @}
- /21/ @{ print $0 @}' BBS-list inventory-shipped
+ /21/ @{ print $0 @}' mail-list inventory-shipped
@end example
@cindex @command{gawk}, newlines in
@@ -3036,8 +3116,8 @@ noticed because it is ``hidden'' inside the comment. Thus, the
@code{BEGIN} is noted as a syntax error.
@cindex statements, multiple
-@cindex @code{;} (semicolon)
-@cindex semicolon (@code{;})
+@cindex @code{;} (semicolon), separating statements in actions
+@cindex semicolon (@code{;}), separating statements in actions
When @command{awk} statements within one rule are short, you might want to put
more than one of them on a line. This is accomplished by separating the statements
with a semicolon (@samp{;}).
@@ -3097,6 +3177,7 @@ used once, and thrown away. Because @command{awk} programs are interpreted, you
can avoid the (usually lengthy) compilation part of the typical
edit-compile-test-debug cycle of software development.
+@cindex Brian Kernighan's @command{awk}
Complex programs have been written in @command{awk}, including a complete
retargetable assembler for eight-bit microprocessors (@pxref{Glossary}, for
more information), and a microcode assembler for a special-purpose Prolog
@@ -3121,7 +3202,7 @@ easier to maintain and usually run more efficiently.
@node Invoking Gawk
@chapter Running @command{awk} and @command{gawk}
-This @value{CHAPTER} covers how to run awk, both POSIX-standard
+This @value{CHAPTER} covers how to run @command{awk}, both POSIX-standard
and @command{gawk}-specific command-line options, and what
@command{awk} and
@command{gawk} do with non-option arguments.
@@ -3159,10 +3240,19 @@ There are two ways to run @command{awk}---with an explicit program or with
one or more program files. Here are templates for both of them; items
enclosed in [@dots{}] in these templates are optional:
+@ifnotdocbook
@example
awk @r{[@var{options}]} -f progfile @r{[@code{--}]} @var{file} @dots{}
awk @r{[@var{options}]} @r{[@code{--}]} '@var{program}' @var{file} @dots{}
@end example
+@end ifnotdocbook
+
+@c FIXME - find a better way to mark this up in docbook
+@docbook
+<screen>awk [<replaceable>options</replaceable>] -f progfile [<literal>--</literal>] <replaceable>file</replaceable> &#8230;
+awk [<replaceable>options</replaceable>] [<literal>--</literal>] '<replaceable>program</replaceable>' <replaceable>file</replaceable> &#8230;
+</screen>
+@end docbook
@cindex GNU long options
@cindex long options
@@ -3178,7 +3268,7 @@ It is possible to invoke @command{awk} with an empty program:
awk '' datafile1 datafile2
@end example
-@cindex @code{--lint} option
+@cindex @option{--lint} option
@noindent
Doing so makes little sense, though; @command{awk} exits
silently when given an empty program.
@@ -3218,43 +3308,27 @@ The following list describes options mandated by the POSIX standard:
@table @code
@item -F @var{fs}
@itemx --field-separator @var{fs}
-@cindex @code{-F} option
-@cindex @code{--field-separator} option
+@cindex @option{-F} option
+@cindex @option{--field-separator} option
@cindex @code{FS} variable, @code{--field-separator} option and
Set the @code{FS} variable to @var{fs}
(@pxref{Field Separators}).
@item -f @var{source-file}
@itemx --file @var{source-file}
-@cindex @code{-f} option
-@cindex @code{--file} option
+@cindex @option{-f} option
+@cindex @option{--file} option
@cindex @command{awk} programs, location of
Read @command{awk} program source from @var{source-file}
instead of in the first non-option argument.
This option may be given multiple times; the @command{awk}
-program consists of the concatenation the contents of
+program consists of the concatenation of the contents of
each specified @var{source-file}.
-@item -i @var{source-file}
-@itemx --include @var{source-file}
-@cindex @code{-i} option
-@cindex @code{--include} option
-@cindex @command{awk} programs, location of
-Read @command{awk} source library from @var{source-file}. This option is
-completely equivalent to using the @samp{@@include} directive inside
-your program. This option is very
-similar to the @option{-f} option, but there are two important differences.
-First, when @option{-i} is used, the program source will not be loaded if it has
-been previously loaded, whereas the @option{-f} will always load the file.
-Second, because this option is intended to be used with code libraries,
-@command{gawk} does not recognize such files as constituting main program
-input. Thus, after processing an @option{-i} argument, @command{gawk} still expects to
-find the main source code via the @option{-f} option or on the command-line.
-
@item -v @var{var}=@var{val}
@itemx --assign @var{var}=@var{val}
-@cindex @code{-v} option
-@cindex @code{--assign} option
+@cindex @option{-v} option
+@cindex @option{--assign} option
@cindex variables, setting
Set the variable @var{var} to the value @var{val} @emph{before}
execution of the program begins. Such variable values are available
@@ -3275,7 +3349,7 @@ predefined value you may have given.
@end quotation
@item -W @var{gawk-opt}
-@cindex @code{-W} option
+@cindex @option{-W} option
Provide an implementation-specific option.
This is the POSIX convention for providing implementation-specific options.
These options
@@ -3294,8 +3368,8 @@ conventions.
@cindex @code{-} (hyphen), filenames beginning with
@cindex hyphen (@code{-}), filenames beginning with
-This is useful if you have @value{FN}s that start with @samp{-},
-or in shell scripts, if you have @value{FN}s that will be specified
+This is useful if you have file names that start with @samp{-},
+or in shell scripts, if you have file names that will be specified
by the user that could start with @samp{-}.
It is also useful for passing options on to the @command{awk}
program; see @ref{Getopt Function}.
@@ -3308,8 +3382,8 @@ The following list describes @command{gawk}-specific options:
@table @code
@item -b
@itemx --characters-as-bytes
-@cindex @code{-b} option
-@cindex @code{--characters-as-bytes} option
+@cindex @option{-b} option
+@cindex @option{--characters-as-bytes} option
Cause @command{gawk} to treat all input data as single-byte characters.
In addition, all output written with @code{print} or @code{printf}
are treated as single-byte characters.
@@ -3323,8 +3397,8 @@ multibyte characters. This option is an easy way to tell @command{gawk}:
@item -c
@itemx --traditional
-@cindex @code{--c} option
-@cindex @code{--traditional} option
+@cindex @option{-c} option
+@cindex @option{--traditional} option
@cindex compatibility mode (@command{gawk}), specifying
Specify @dfn{compatibility mode}, in which the GNU extensions to
the @command{awk} language are disabled, so that @command{gawk} behaves just
@@ -3335,17 +3409,18 @@ which summarizes the extensions. Also see
@item -C
@itemx --copyright
-@cindex @code{-C} option
-@cindex @code{--copyright} option
+@cindex @option{-C} option
+@cindex @option{--copyright} option
@cindex GPL (General Public License), printing
Print the short version of the General Public License and then exit.
@item -d@r{[}@var{file}@r{]}
@itemx --dump-variables@r{[}=@var{file}@r{]}
-@cindex @code{-d} option
-@cindex @code{--dump-variables} option
-@cindex @code{awkvars.out} file
-@cindex files, @code{awkvars.out}
+@cindex @option{-d} option
+@cindex @option{--dump-variables} option
+@cindex dump all variables of a program
+@cindex @file{awkvars.out} file
+@cindex files, @file{awkvars.out}
@cindex variables, global, printing list of
Print a sorted list of global variables, their types, and final values
to @var{file}. If no @var{file} is provided, print this
@@ -3364,8 +3439,8 @@ names like @code{i}, @code{j}, etc.)
@item -D@r{[}@var{file}@r{]}
@itemx --debug=@r{[}@var{file}@r{]}
-@cindex @code{-D} option
-@cindex @code{--debug} option
+@cindex @option{-D} option
+@cindex @option{--debug} option
@cindex @command{awk} debugging, enabling
Enable debugging of @command{awk} programs
(@pxref{Debugging}).
@@ -3377,8 +3452,8 @@ No space is allowed between the @option{-D} and @var{file}, if
@item -e @var{program-text}
@itemx --source @var{program-text}
-@cindex @code{-e} option
-@cindex @code{--source} option
+@cindex @option{-e} option
+@cindex @option{--source} option
@cindex source code, mixing
Provide program source code in the @var{program-text}.
This option allows you to mix source code in files with source
@@ -3389,8 +3464,8 @@ programs (@pxref{AWKPATH Variable}).
@item -E @var{file}
@itemx --exec @var{file}
-@cindex @code{-E} option
-@cindex @code{--exec} option
+@cindex @option{-E} option
+@cindex @option{--exec} option
@cindex @command{awk} programs, location of
@cindex CGI, @command{awk} scripts for
Similar to @option{-f}, read @command{awk} program text from @var{file}.
@@ -3420,8 +3495,8 @@ with @samp{#!} scripts (@pxref{Executable Scripts}), like so:
@item -g
@itemx --gen-pot
-@cindex @code{-g} option
-@cindex @code{--gen-pot} option
+@cindex @option{-g} option
+@cindex @option{--gen-pot} option
@cindex portable object files, generating
@cindex files, portable object, generating
Analyze the source program and
@@ -3432,18 +3507,34 @@ for information about this option.
@item -h
@itemx --help
-@cindex @code{-h} option
-@cindex @code{--help} option
+@cindex @option{-h} option
+@cindex @option{--help} option
@cindex GNU long options, printing list of
@cindex options, printing list of
@cindex printing, list of options
Print a ``usage'' message summarizing the short and long style options
that @command{gawk} accepts and then exit.
+@item -i @var{source-file}
+@itemx --include @var{source-file}
+@cindex @option{-i} option
+@cindex @option{--include} option
+@cindex @command{awk} programs, location of
+Read @command{awk} source library from @var{source-file}. This option is
+completely equivalent to using the @samp{@@include} directive inside
+your program. This option is very
+similar to the @option{-f} option, but there are two important differences.
+First, when @option{-i} is used, the program source will not be loaded if it has
+been previously loaded, whereas the @option{-f} will always load the file.
+Second, because this option is intended to be used with code libraries,
+@command{gawk} does not recognize such files as constituting main program
+input. Thus, after processing an @option{-i} argument, @command{gawk} still expects to
+find the main source code via the @option{-f} option or on the command-line.
+
@item -l @var{lib}
@itemx --load @var{lib}
-@cindex @code{-l} option
-@cindex @code{--load} option
+@cindex @option{-l} option
+@cindex @option{--load} option
@cindex loading, library
Load a shared library @var{lib}. This searches for the library using the @env{AWKLIBPATH}
environment variable. The correct library suffix for your platform will be
@@ -3454,8 +3545,8 @@ a shared library.
@item -L @r{[}value@r{]}
@itemx --lint@r{[}=value@r{]}
-@cindex @code{-l} option
-@cindex @code{--lint} option
+@cindex @option{-l} option
+@cindex @option{--lint} option
@cindex lint checking, issuing warnings
@cindex warnings, issuing
Warn about constructs that are dubious or nonportable to
@@ -3477,16 +3568,16 @@ care to search for all occurrences of each inappropriate construct. As
@item -M
@itemx --bignum
-@cindex @code{-M} option
-@cindex @code{--bignum} option
+@cindex @option{-M} option
+@cindex @option{--bignum} option
Force arbitrary precision arithmetic on numbers. This option has no effect
if @command{gawk} is not compiled to use the GNU MPFR and MP libraries
-(@pxref{Arbitrary Precision Arithmetic}).
+(@pxref{Gawk and MPFR}).
@item -n
@itemx --non-decimal-data
-@cindex @code{-n} option
-@cindex @code{--non-decimal-data} option
+@cindex @option{-n} option
+@cindex @option{--non-decimal-data} option
@cindex hexadecimal values@comma{} enabling interpretation of
@cindex octal values@comma{} enabling interpretation of
@cindex troubleshooting, @code{--non-decimal-data} option
@@ -3501,40 +3592,40 @@ Use with care.
@item -N
@itemx --use-lc-numeric
-@cindex @code{-N} option
-@cindex @code{--use-lc-numeric} option
+@cindex @option{-N} option
+@cindex @option{--use-lc-numeric} option
Force the use of the locale's decimal point character
when parsing numeric input data (@pxref{Locales}).
@item -o@r{[}@var{file}@r{]}
@itemx --pretty-print@r{[}=@var{file}@r{]}
-@cindex @code{-o} option
-@cindex @code{--pretty-print} option
+@cindex @option{-o} option
+@cindex @option{--pretty-print} option
Enable pretty-printing of @command{awk} programs.
By default, output program is created in a file named @file{awkprof.out}.
The optional @var{file} argument allows you to specify a different
-@value{FN} for the output.
+file name for the output.
No space is allowed between the @option{-o} and @var{file}, if
@var{file} is supplied.
@item -O
@itemx --optimize
-@cindex @code{--optimize} option
-@cindex @code{-O} option
+@cindex @option{--optimize} option
+@cindex @option{-O} option
Enable some optimizations on the internal representation of the program.
At the moment this includes just simple constant folding. The @command{gawk}
maintainer hopes to add more optimizations over time.
@item -p@r{[}@var{file}@r{]}
@itemx --profile@r{[}=@var{file}@r{]}
-@cindex @code{-p} option
-@cindex @code{--profile} option
+@cindex @option{-p} option
+@cindex @option{--profile} option
@cindex @command{awk} profiling, enabling
Enable profiling of @command{awk} programs
(@pxref{Profiling}).
By default, profiles are created in a file named @file{awkprof.out}.
The optional @var{file} argument allows you to specify a different
-@value{FN} for the profile file.
+file name for the profile file.
No space is allowed between the @option{-p} and @var{file}, if
@var{file} is supplied.
@@ -3543,8 +3634,8 @@ in the left margin, and function call counts for each function.
@item -P
@itemx --posix
-@cindex @code{-P} option
-@cindex @code{--posix} option
+@cindex @option{-P} option
+@cindex @option{--posix} option
@cindex POSIX mode
@cindex @command{gawk}, extensions@comma{} disabling
Operate in strict POSIX mode. This disables all @command{gawk}
@@ -3585,16 +3676,16 @@ data (@pxref{Locales}).
@c @cindex automatic warnings
@c @cindex warnings, automatic
-@cindex @code{--traditional} option, @code{--posix} option and
-@cindex @code{--posix} option, @code{--traditional} option and
+@cindex @option{--traditional} option, @code{--posix} option and
+@cindex @option{--posix} option, @code{--traditional} option and
If you supply both @option{--traditional} and @option{--posix} on the
command line, @option{--posix} takes precedence. @command{gawk}
also issues a warning if both options are supplied.
@item -r
@itemx --re-interval
-@cindex @code{-r} option
-@cindex @code{--re-interval} option
+@cindex @option{-r} option
+@cindex @option{--re-interval} option
@cindex regular expressions, interval expressions and
Allow interval expressions
(@pxref{Regexp Operators})
@@ -3605,8 +3696,8 @@ and for use in combination with the @option{--traditional} option.
@item -S
@itemx --sandbox
-@cindex @code{-S} option
-@cindex @code{--sandbox} option
+@cindex @option{-S} option
+@cindex @option{--sandbox} option
@cindex sandbox mode
Disable the @code{system()} function,
input redirections with @code{getline},
@@ -3618,16 +3709,16 @@ can't access your system (other than the specified input data file).
@item -t
@itemx --lint-old
-@cindex @code{--L} option
-@cindex @code{--lint-old} option
+@cindex @option{-L} option
+@cindex @option{--lint-old} option
Warn about constructs that are not available in the original version of
@command{awk} from Version 7 Unix
(@pxref{V7/SVR3.1}).
@item -V
@itemx --version
-@cindex @code{-V} option
-@cindex @code{--version} option
+@cindex @option{-V} option
+@cindex @option{--version} option
@cindex @command{gawk}, versions of, information about@comma{} printing
Print version information for this particular copy of @command{gawk}.
This allows you to determine if your copy of @command{gawk} is up to date
@@ -3641,14 +3732,14 @@ As long as program text has been supplied,
any other options are flagged as invalid with a warning message but
are otherwise ignored.
-@cindex @code{-F} option, @code{-Ft} sets @code{FS} to TAB
+@cindex @option{-F} option, @option{-Ft} sets @code{FS} to TAB
In compatibility mode, as a special case, if the value of @var{fs} supplied
to the @option{-F} option is @samp{t}, then @code{FS} is set to the TAB
character (@code{"\t"}). This is true only for @option{--traditional} and not
for @option{--posix}
(@pxref{Field Separators}).
-@cindex @code{-f} option, multiple uses
+@cindex @option{-f} option, multiple uses
The @option{-f} option may be used more than once on the command line.
If it is, @command{awk} reads its program source from all of the named files, as
if they had been concatenated together into one big file. This is
@@ -3662,7 +3753,7 @@ function names must be unique.)
With standard @command{awk}, library functions can still be used, even
if the program is entered at the terminal,
by specifying @samp{-f /dev/tty}. After typing your program,
-type @kbd{@value{CTL}-d} (the end-of-file character) to terminate it.
+type @kbd{Ctrl-d} (the end-of-file character) to terminate it.
(You may also use @samp{-f -} to read program source from the standard
input but then you will not be able to also use the standard input as a
source of data.)
@@ -3675,7 +3766,7 @@ and library source code
(@pxref{AWKPATH Variable}).
The @option{--source} option may also be used multiple times on the command line.
-@cindex @code{--source} option
+@cindex @option{--source} option
If no @option{-f} or @option{--source} option is specified, then @command{gawk}
uses the first non-option command-line argument as the text of the
program source code.
@@ -3734,6 +3825,7 @@ file at all.
@cindex @command{gawk}, @code{ARGIND} variable in
@cindex @code{ARGIND} variable, command-line arguments
+@cindex @code{ARGV} array, indexing into
@cindex @code{ARGC}/@code{ARGV} variables, command-line arguments
All these arguments are made available to your @command{awk} program in the
@code{ARGV} array (@pxref{Built-in Variables}). Command-line options
@@ -3744,9 +3836,10 @@ sets the variable @code{ARGIND} to the index in @code{ARGV} of the
current element.
@cindex input files, variable assignments and
-The distinction between @value{FN} arguments and variable-assignment
+@cindex variable assignments and input files
+The distinction between file name arguments and variable-assignment
arguments is made when @command{awk} is about to open the next input file.
-At that point in execution, it checks the @value{FN} to see whether
+At that point in execution, it checks the file name to see whether
it is really a variable assignment; if so, @command{awk} sets the variable
instead of reading a file.
@@ -3763,7 +3856,7 @@ sequences (@pxref{Escape Sequences}).
@value{DARKCORNER}
In some earlier implementations of @command{awk}, when a variable assignment
-occurred before any @value{FN}s, the assignment would happen @emph{before}
+occurred before any file names, the assignment would happen @emph{before}
the @code{BEGIN} rule was executed. @command{awk}'s behavior was thus
inconsistent; some command-line assignments were available inside the
@code{BEGIN} rule, while others were not. Unfortunately,
@@ -3774,8 +3867,8 @@ upon the old behavior.
The variable assignment feature is most useful for assigning to variables
such as @code{RS}, @code{OFS}, and @code{ORS}, which control input and
-output formats before scanning the @value{DF}s. It is also useful for
-controlling state if multiple passes are needed over a @value{DF}. For
+output formats before scanning the data files. It is also useful for
+controlling state if multiple passes are needed over a data file. For
example:
@cindex files, multiple passes over
@@ -3811,16 +3904,17 @@ You may also use @code{"-"} to name standard input when reading
files with @code{getline} (@pxref{Getline/File}).
In addition, @command{gawk} allows you to specify the special
-@value{FN} @file{/dev/stdin}, both on the command line and
+file name @file{/dev/stdin}, both on the command line and
with @code{getline}.
Some other versions of @command{awk} also support this, but it
is not standard.
(Some operating systems provide a @file{/dev/stdin} file
in the file system, however, @command{gawk} always processes
-this @value{FN} itself.)
+this file name itself.)
@node Environment Variables
@section The Environment Variables @command{gawk} Uses
+@cindex environment variables used by @command{gawk}
A number of environment variables influence how @command{gawk}
behaves.
@@ -3836,8 +3930,7 @@ behaves.
@node AWKPATH Variable
@subsection The @env{AWKPATH} Environment Variable
@cindex @env{AWKPATH} environment variable
-@cindex directories, searching
-@cindex search paths
+@cindex directories, searching for source files
@cindex search paths, for source files
@cindex differences in @command{awk} and @command{gawk}, @code{AWKPATH} environment variable
@ifinfo
@@ -3847,14 +3940,14 @@ on the command-line with the @option{-f} option.
In most @command{awk}
implementations, you must supply a precise path name for each program
file, unless the file is in the current directory.
-But in @command{gawk}, if the @value{FN} supplied to the @option{-f}
+But in @command{gawk}, if the file name supplied to the @option{-f}
or @option{-i} options
-does not contain a @samp{/}, then @command{gawk} searches a list of
+does not contain a directory separator @samp{/}, then @command{gawk} searches a list of
directories (called the @dfn{search path}), one by one, looking for a
file with the specified name.
The search path is a string consisting of directory names
-separated by colons. @command{gawk} gets its search path from the
+separated by colons@footnote{Semicolons on MS-Windows and MS-DOS.}. @command{gawk} gets its search path from the
@env{AWKPATH} environment variable. If that variable does not exist,
@command{gawk} uses a default path,
@samp{.:/usr/local/share/awk}.@footnote{Your version of @command{gawk}
@@ -3867,7 +3960,7 @@ though.}
The search path feature is particularly useful for building libraries
of useful @command{awk} functions. The library files can be placed in a
standard directory in the default path and then specified on
-the command line with a short @value{FN}. Otherwise, the full @value{FN}
+the command line with a short file name. Otherwise, the full file name
would have to be typed for each file.
By using the @option{-i} option, or the @option{--source} and @option{-f} options, your command-line
@@ -3912,8 +4005,7 @@ found, and @command{gawk} no longer needs to use @env{AWKPATH}.
@node AWKLIBPATH Variable
@subsection The @env{AWKLIBPATH} Environment Variable
@cindex @env{AWKLIBPATH} environment variable
-@cindex directories, searching
-@cindex search paths
+@cindex directories, searching for shared libraries
@cindex search paths, for shared libraries
@cindex differences in @command{awk} and @command{gawk}, @code{AWKLIBPATH} environment variable
@@ -3961,10 +4053,6 @@ for use by the @command{gawk} developers for testing and tuning.
They are subject to change. The variables are:
@table @env
-@item AVG_CHAIN_MAX
-The average number of items @command{gawk} will maintain on a
-hash chain for managing arrays.
-
@item AWK_HASH
If this variable exists with a value of @samp{gst}, @command{gawk}
will switch to using the hash function from GNU Smalltalk for
@@ -3977,6 +4065,13 @@ files one line at a time, instead of reading in blocks. This exists
for debugging problems on filesystems on non-POSIX operating systems
where I/O is performed in records, not in blocks.
+@item GAWK_MSG_SRC
+If this variable exists, @command{gawk} includes the source file
+name and line number from which warning and/or fatal messages
+are generated. Its purpose is to help isolate the source of a
+message, since there can be multiple places which produce the
+same warning or error message.
+
@item GAWK_NO_DFA
If this variable exists, @command{gawk} does not use the DFA regexp matcher
for ``does it match'' kinds of tests. This can cause @command{gawk}
@@ -3989,6 +4084,14 @@ coordinate with each other.)
This specifies the amount by which @command{gawk} should grow its
internal evaluation stack, when needed.
+@item INT_CHAIN_MAX
+The average number of items @command{gawk} will maintain on a
+hash chain for managing arrays indexed by integers.
+
+@item STR_CHAIN_MAX
+The average number of items @command{gawk} will maintain on a
+hash chain for managing arrays indexed by strings.
+
@item TIDYMEM
If this variable exists, @command{gawk} uses the @code{mtrace()} library
calls from GNU LIBC to help track down possible memory leaks.
@@ -4067,7 +4170,7 @@ use @samp{@@include} followed by the name of the file to be included,
enclosed in double quotes.
@quotation NOTE
-Keep in mind that this is a language construct and the @value{FN} cannot
+Keep in mind that this is a language construct and the file name cannot
be a string variable, but rather just a literal string in double quotes.
@end quotation
@@ -4092,7 +4195,7 @@ $ @kbd{gawk -f test3}
@print{} This is file test3.
@end example
-The @value{FN} can, of course, be a pathname. For example:
+The file name can, of course, be a pathname. For example:
@example
@@include "../io_funcs"
@@ -4187,10 +4290,9 @@ they will @emph{not} be in the next release).
@c update this section for each release!
-@cindex @code{PROCINFO} array
The process-related special files @file{/dev/pid}, @file{/dev/ppid},
@file{/dev/pgrpid}, and @file{/dev/user} were deprecated in @command{gawk}
-3.1, but still worked. As of @value{PVERSION} 4.0, they are no longer
+3.1, but still worked. As of version 4.0, they are no longer
interpreted specially by @command{gawk}. (Use @code{PROCINFO} instead;
see @ref{Auto-set}.)
@@ -4209,10 +4311,11 @@ in case some option becomes obsolete in a future version of @command{gawk}.
@cindex Jedi knights
@cindex Knights, jedi
@quotation
-@i{Use the Source, Luke!}@*
-Obi-Wan
+@i{Use the Source, Luke!}
+@author Obi-Wan
@end quotation
+@cindex shells, sea
This @value{SECTION} intentionally left
blank.
@@ -4225,7 +4328,7 @@ blank.
@table @code
@item -W nostalgia
@itemx --nostalgia
-Print the message @code{"awk: bailing out near line 1"} and dump core.
+Print the message @samp{awk: bailing out near line 1} and dump core.
This option was inspired by the common behavior of very early versions of
Unix @command{awk} and by a t--shirt.
The message is @emph{not} subject to translation in non-English locales.
@@ -4271,7 +4374,7 @@ long-undocumented ``feature'' of Unix @code{awk}.
@node Regexp
@chapter Regular Expressions
-@cindex regexp, See regular expressions
+@cindex regexp
@c STARTOFRANGE regexp
@cindex regular expressions
@@ -4280,8 +4383,8 @@ set of strings.
Because regular expressions are such a fundamental part of @command{awk}
programming, their format and use deserve a separate @value{CHAPTER}.
-@cindex forward slash (@code{/})
-@cindex @code{/} (forward slash)
+@cindex forward slash (@code{/}) to enclose regular expressions
+@cindex @code{/} (forward slash) to enclose regular expressions
A regular expression enclosed in slashes (@samp{/})
is an @command{awk} pattern that matches every input record whose text
belongs to that set.
@@ -4318,14 +4421,14 @@ slashes. Then the regular expression is tested against the
entire text of each record. (Normally, it only needs
to match some part of the text in order to succeed.) For example, the
following prints the second field of each record that contains the string
-@samp{foo} anywhere in it:
+@samp{li} anywhere in it:
@example
-$ @kbd{awk '/foo/ @{ print $2 @}' BBS-list}
-@print{} 555-1234
+$ @kbd{awk '/li/ @{ print $2 @}' mail-list}
+@print{} 555-5553
+@print{} 555-0542
@print{} 555-6699
-@print{} 555-6480
-@print{} 555-2127
+@print{} 555-3430
@end example
@cindex regular expressions, operators
@@ -4337,9 +4440,9 @@ $ @kbd{awk '/foo/ @{ print $2 @}' BBS-list}
@cindex @code{!} (exclamation point), @code{!~} operator
@cindex exclamation point (@code{!}), @code{!~} operator
@c @cindex operators, @code{!~}
-@cindex @code{if} statement
-@cindex @code{while} statement
-@cindex @code{do}-@code{while} statement
+@cindex @code{if} statement, use of regexps in
+@cindex @code{while} statement, use of regexps in
+@cindex @code{do}-@code{while} statement, use of regexps in
@c @cindex statements, @code{if}
@c @cindex statements, @code{while}
@c @cindex statements, @code{do}
@@ -4398,6 +4501,7 @@ $ @kbd{awk '$1 !~ /J/' inventory-shipped}
@end example
@cindex regexp constants
+@cindex constant regexps
@cindex regular expressions, constants, See regexp constants
When a regexp is enclosed in slashes, such as @code{/foo/}, we call it
a @dfn{regexp constant}, much like @code{5.27} is a numeric constant and
@@ -4406,7 +4510,7 @@ a @dfn{regexp constant}, much like @code{5.27} is a numeric constant and
@node Escape Sequences
@section Escape Sequences
-@cindex escape sequences
+@cindex escape sequences, in strings
@cindex backslash (@code{\}), in escape sequences
@cindex @code{\} (backslash), in escape sequences
Some characters cannot be included literally in string constants
@@ -4446,39 +4550,39 @@ A literal backslash, @samp{\}.
@cindex @code{\} (backslash), @code{\a} escape sequence
@cindex backslash (@code{\}), @code{\a} escape sequence
@item \a
-The ``alert'' character, @kbd{@value{CTL}-g}, ASCII code 7 (BEL).
+The ``alert'' character, @kbd{Ctrl-g}, ASCII code 7 (BEL).
(This usually makes some sort of audible noise.)
@cindex @code{\} (backslash), @code{\b} escape sequence
@cindex backslash (@code{\}), @code{\b} escape sequence
@item \b
-Backspace, @kbd{@value{CTL}-h}, ASCII code 8 (BS).
+Backspace, @kbd{Ctrl-h}, ASCII code 8 (BS).
@cindex @code{\} (backslash), @code{\f} escape sequence
@cindex backslash (@code{\}), @code{\f} escape sequence
@item \f
-Formfeed, @kbd{@value{CTL}-l}, ASCII code 12 (FF).
+Formfeed, @kbd{Ctrl-l}, ASCII code 12 (FF).
@cindex @code{\} (backslash), @code{\n} escape sequence
@cindex backslash (@code{\}), @code{\n} escape sequence
@item \n
-Newline, @kbd{@value{CTL}-j}, ASCII code 10 (LF).
+Newline, @kbd{Ctrl-j}, ASCII code 10 (LF).
@cindex @code{\} (backslash), @code{\r} escape sequence
@cindex backslash (@code{\}), @code{\r} escape sequence
@item \r
-Carriage return, @kbd{@value{CTL}-m}, ASCII code 13 (CR).
+Carriage return, @kbd{Ctrl-m}, ASCII code 13 (CR).
@cindex @code{\} (backslash), @code{\t} escape sequence
@cindex backslash (@code{\}), @code{\t} escape sequence
@item \t
-Horizontal TAB, @kbd{@value{CTL}-i}, ASCII code 9 (HT).
+Horizontal TAB, @kbd{Ctrl-i}, ASCII code 9 (HT).
@c @cindex @command{awk} language, V.4 version
@cindex @code{\} (backslash), @code{\v} escape sequence
@cindex backslash (@code{\}), @code{\v} escape sequence
@item \v
-Vertical tab, @kbd{@value{CTL}-k}, ASCII code 11 (VT).
+Vertical tab, @kbd{Ctrl-k}, ASCII code 11 (VT).
@cindex @code{\} (backslash), @code{\}@var{nnn} escape sequence
@cindex backslash (@code{\}), @code{\}@var{nnn} escape sequence
@@ -4576,6 +4680,7 @@ leaves what happens as undefined. There are two choices:
@c @cindex automatic warnings
@c @cindex warnings, automatic
+@cindex Brian Kernighan's @command{awk}
@table @asis
@item Strip the backslash out
This is what Brian Kernighan's @command{awk} and @command{gawk} both do.
@@ -4589,6 +4694,7 @@ two backslashes in the string: @samp{FS = @w{"[ \t]+\\|[ \t]+"}}.)
@cindex @command{gawk}, escape sequences
@cindex Unix @command{awk}, backslashes in escape sequences
+@cindex @command{mawk} utility
@item Leave the backslash alone
Some other @command{awk} implementations do this.
In such implementations, typing @code{"a\qc"} is the same as typing
@@ -4617,6 +4723,7 @@ leaves what happens as undefined. There are two choices:
@c @cindex automatic warnings
@c @cindex warnings, automatic
+@cindex Brian Kernighan's @command{awk}
@table @asis
@item Strip the backslash out
This is what Brian Kernighan's @command{awk} and @command{gawk} both do.
@@ -4630,6 +4737,7 @@ two backslashes in the string: @samp{FS = @w{"[ \t]+\\|[ \t]+"}}.)
@cindex @command{gawk}, escape sequences
@cindex Unix @command{awk}, backslashes in escape sequences
+@cindex @command{mawk} utility
@item Leave the backslash alone
Some other @command{awk} implementations do this.
In such implementations, typing @code{"a\qc"} is the same as typing
@@ -4696,6 +4804,7 @@ escape sequences literally when used in regexp constants. Thus,
@section Regular Expression Operators
@c STARTOFRANGE regexpo
@cindex regular expressions, operators
+@cindex metacharacters in regular expressions
You can combine regular expressions with special characters,
called @dfn{regular expression operators} or @dfn{metacharacters}, to
@@ -4714,8 +4823,8 @@ Here is a list of metacharacters. All characters that are not escape
sequences and that are not listed in the table stand for themselves:
@table @code
-@cindex backslash (@code{\})
-@cindex @code{\} (backslash)
+@cindex backslash (@code{\}), regexp operator
+@cindex @code{\} (backslash), regexp operator
@item \
This is used to suppress the special meaning of a character when
matching. For example, @samp{\$}
@@ -4740,8 +4849,8 @@ The condition is not true in the following example:
if ("line1\nLINE 2" ~ /^L/) @dots{}
@end example
-@cindex @code{$} (dollar sign)
-@cindex dollar sign (@code{$})
+@cindex @code{$} (dollar sign), regexp operator
+@cindex dollar sign (@code{$}), regexp operator
@item $
This is similar to @samp{^}, but it matches only at the end of a string.
For example, @samp{p$}
@@ -4753,8 +4862,8 @@ The condition in the following example is not true:
if ("line1\nLINE 2" ~ /1$/) @dots{}
@end example
-@cindex @code{.} (period)
-@cindex period (@code{.})
+@cindex @code{.} (period), regexp operator
+@cindex period (@code{.}), regexp operator
@item . @r{(period)}
This matches any single character,
@emph{including} the newline character. For example, @samp{.P}
@@ -4770,11 +4879,12 @@ character, which is a character with all bits equal to zero.
Otherwise, @sc{nul} is just another character. Other versions of @command{awk}
may not be able to match the @sc{nul} character.
-@cindex @code{[]} (square brackets)
-@cindex square brackets (@code{[]})
+@cindex @code{[]} (square brackets), regexp operator
+@cindex square brackets (@code{[]}), regexp operator
@cindex bracket expressions
@cindex character sets, See Also bracket expressions
@cindex character lists, See bracket expressions
+@cindex character classes, See bracket expressions
@item [@dots{}]
This is called a @dfn{bracket expression}.@footnote{In other literature,
you may see a bracket expression referred to as either a
@@ -4807,8 +4917,8 @@ means it matches any string that starts with @samp{P} or contains a digit.
The alternation applies to the largest possible regexps on either side.
-@cindex @code{()} (parentheses)
-@cindex parentheses @code{()}
+@cindex @code{()} (parentheses), regexp operator
+@cindex parentheses @code{()}, regexp operator
@item (@dots{})
Parentheses are used for grouping in regular expressions, as in
arithmetic. They can be used to concatenate regular expressions
@@ -4836,8 +4946,8 @@ prints every record in @file{sample} containing a string of the form
Notice the escaping of the parentheses by preceding them
with backslashes.
-@cindex @code{+} (plus sign)
-@cindex plus sign (@code{+})
+@cindex @code{+} (plus sign), regexp operator
+@cindex plus sign (@code{+}), regexp operator
@item +
This symbol is similar to @samp{*}, except that the preceding expression must be
matched at least once. This means that @samp{wh+y}
@@ -4850,14 +4960,14 @@ way of writing the last @samp{*} example:
awk '/\(c[ad]+r x\)/ @{ print @}' sample
@end example
-@cindex @code{?} (question mark) regexp operator
-@cindex question mark (@code{?}) regexp operator
+@cindex @code{?} (question mark), regexp operator
+@cindex question mark (@code{?}), regexp operator
@item ?
This symbol is similar to @samp{*}, except that the preceding expression can be
matched either once or not at all. For example, @samp{fe?d}
matches @samp{fed} and @samp{fd}, but nothing else.
-@cindex interval expressions
+@cindex interval expressions, regexp operator
@item @{@var{n}@}
@itemx @{@var{n},@}
@itemx @{@var{n},@var{m}@}
@@ -4891,7 +5001,7 @@ constants,
@command{gawk} did @emph{not} match interval expressions
in regexps.
-However, beginning with @value{PVERSION} 4.0,
+However, beginning with version 4.0,
@command{gawk} does match interval expressions by default.
This is because compatibility with POSIX has become more
important to most @command{gawk} users than compatibility with
@@ -4934,6 +5044,7 @@ expressions are not available in regular expressions.
@cindex bracket expressions
@cindex bracket expressions, range expressions
@cindex range expressions (regexps)
+@cindex character lists in regular expression
As mentioned earlier, a bracket expression matches any character amongst
those listed between the opening and closing square brackets.
@@ -5035,8 +5146,8 @@ These sequences are:
@item Collating symbols
Multicharacter collating elements enclosed between
@samp{[.} and @samp{.]}. For example, if @samp{ch} is a collating element,
-then @code{[[.ch.]]} is a regexp that matches this collating element, whereas
-@code{[ch]} is a regexp that matches either @samp{c} or @samp{h}.
+then @samp{[[.ch.]]} is a regexp that matches this collating element, whereas
+@samp{[ch]} is a regexp that matches either @samp{c} or @samp{h}.
@cindex bracket expressions, equivalence classes
@item Equivalence classes
@@ -5044,7 +5155,7 @@ Locale-specific names for a list of
characters that are equal. The name is enclosed between
@samp{[=} and @samp{=]}.
For example, the name @samp{e} might be used to represent all of
-``e,'' ``@`e,'' and ``@'e.'' In this case, @code{[[=e=]]} is a regexp
+``e,'' ``@`e,'' and ``@'e.'' In this case, @samp{[[=e=]]} is a regexp
that matches any of @samp{e}, @samp{@'e}, or @samp{@`e}.
@end table
@@ -5088,7 +5199,7 @@ or underscores (@samp{_}):
@item \s
Matches any whitespace character.
Think of it as shorthand for
-@w{@code{[[:space:]]}}.
+@w{@samp{[[:space:]]}}.
@c @cindex operators, @code{\S} (@command{gawk})
@cindex backslash (@code{\}), @code{\S} operator (@command{gawk})
@@ -5096,7 +5207,7 @@ Think of it as shorthand for
@item \S
Matches any character that is not whitespace.
Think of it as shorthand for
-@w{@code{[^[:space:]]}}.
+@w{@samp{[^[:space:]]}}.
@c @cindex operators, @code{\w} (@command{gawk})
@cindex backslash (@code{\}), @code{\w} operator (@command{gawk})
@@ -5104,7 +5215,7 @@ Think of it as shorthand for
@item \w
Matches any word-constituent character---that is, it matches any
letter, digit, or underscore. Think of it as shorthand for
-@w{@code{[[:alnum:]_]}}.
+@w{@samp{[[:alnum:]_]}}.
@c @cindex operators, @code{\W} (@command{gawk})
@cindex backslash (@code{\}), @code{\W} operator (@command{gawk})
@@ -5112,7 +5223,7 @@ letter, digit, or underscore. Think of it as shorthand for
@item \W
Matches any character that is not word-constituent.
Think of it as shorthand for
-@w{@code{[^[:alnum:]_]}}.
+@w{@samp{[^[:alnum:]_]}}.
@c @cindex operators, @code{\<} (@command{gawk})
@cindex backslash (@code{\}), @code{\<} operator (@command{gawk})
@@ -5173,10 +5284,10 @@ Matches the empty string at the
end of a buffer (string).
@end table
-@cindex @code{^} (caret)
-@cindex caret (@code{^})
-@cindex @code{?} (question mark) regexp operator
-@cindex question mark (@code{?}) regexp operator
+@cindex @code{^} (caret), regexp operator
+@cindex caret (@code{^}), regexp operator
+@cindex @code{?} (question mark), regexp operator
+@cindex question mark (@code{?}), regexp operator
Because @samp{^} and @samp{$} always work in terms of the beginning
and end of strings, these operators don't add any new capabilities
for @command{awk}. They are provided for compatibility with other
@@ -5197,7 +5308,7 @@ lesser of two evils.
@c
@c Should really do this with file inclusion.
@cindex regular expressions, @command{gawk}, command-line options
-@cindex @command{gawk}, command-line options
+@cindex @command{gawk}, command-line options, and regular expressions
The various command-line options
(@pxref{Options})
control how @command{gawk} interprets characters in regexps:
@@ -5220,10 +5331,11 @@ Only POSIX regexps are supported; the GNU operators are not special
(e.g., @samp{\w} matches a literal @samp{w}). Interval expressions
are allowed.
+@cindex Brian Kernighan's @command{awk}
@item @code{--traditional}
Traditional Unix @command{awk} regexps are matched. The GNU operators
are not special, and interval expressions are not available.
-The POSIX character classes (@code{[[:alnum:]]}, etc.) are supported,
+The POSIX character classes (@samp{[[:alnum:]]}, etc.) are supported,
as Brian Kernighan's @command{awk} does support them.
Characters described by octal and hexadecimal escape sequences are
treated literally, even if they represent regexp metacharacters.
@@ -5275,7 +5387,7 @@ This works in any POSIX-compliant @command{awk}.
@cindex tilde (@code{~}), @code{~} operator
@cindex @code{!} (exclamation point), @code{!~} operator
@cindex exclamation point (@code{!}), @code{!~} operator
-@cindex @code{IGNORECASE} variable
+@cindex @code{IGNORECASE} variable, with @code{~} and @code{!~} operators
@cindex @command{gawk}, @code{IGNORECASE} variable in
@c @cindex variables, @code{IGNORECASE}
Another method, specific to @command{gawk}, is to set the variable
@@ -5487,7 +5599,7 @@ But a newline in a regexp constant works with no problem:
$ @kbd{awk '$0 ~ /[ \t\n]/'}
@kbd{here is a sample line}
@print{} here is a sample line
-@kbd{@value{CTL}-d}
+@kbd{Ctrl-d}
@end example
@command{gawk} does not have this problem, and it isn't likely to
@@ -5525,7 +5637,7 @@ But a newline in a regexp constant works with no problem:
$ @kbd{awk '$0 ~ /[ \t\n]/'}
@kbd{here is a sample line}
@print{} here is a sample line
-@kbd{@value{CTL}-d}
+@kbd{Ctrl-d}
@end example
@command{gawk} does not have this problem, and it isn't likely to
@@ -5540,6 +5652,7 @@ occur often in practice, but it's worth noting for future reference.
@chapter Reading Input Files
@c STARTOFRANGE infir
+@cindex reading input files
@cindex input files, reading
@cindex input files
@cindex @code{FILENAME} variable
@@ -5576,7 +5689,7 @@ used with it do not have to be named on the @command{awk} command line
* Field Separators:: The field separator and how to change it.
* Constant Size:: Reading constant width data.
* Splitting By Content:: Defining Fields By Content
-* Multiple Line:: Reading multi-line records.
+* Multiple Line:: Reading multiline records.
* Getline:: Reading files under explicit program control
using the @code{getline} function.
* Read Timeout:: Reading input with a timeout.
@@ -5601,7 +5714,7 @@ so far
from the current input file. This value is stored in a
built-in variable called @code{FNR}. It is reset to zero when a new
file is started. Another built-in variable, @code{NR}, records the total
-number of input records read so far from all @value{DF}s. It starts at zero,
+number of input records read so far from all data files. It starts at zero,
but is never automatically reset to zero.
@cindex separators, for records
@@ -5626,69 +5739,80 @@ To do this, use the special @code{BEGIN} pattern
(@pxref{BEGIN/END}).
For example:
-@cindex @code{BEGIN} pattern
@example
-awk 'BEGIN @{ RS = "/" @}
- @{ print $0 @}' BBS-list
+awk 'BEGIN @{ RS = "u" @}
+ @{ print $0 @}' mail-list
@end example
@noindent
-changes the value of @code{RS} to @code{"/"}, before reading any input.
-This is a string whose first character is a slash; as a result, records
-are separated by slashes. Then the input file is read, and the second
+changes the value of @code{RS} to @samp{u}, before reading any input.
+This is a string whose first character is the letter ``u;'' as a result, records
+are separated by the letter ``u.'' Then the input file is read, and the second
rule in the @command{awk} program (the action with no pattern) prints each
record. Because each @code{print} statement adds a newline at the end of
its output, this @command{awk} program copies the input
-with each slash changed to a newline. Here are the results of running
-the program on @file{BBS-list}:
-
-@example
-$ @kbd{awk 'BEGIN @{ RS = "/" @}}
-> @kbd{@{ print $0 @}' BBS-list}
-@print{} aardvark 555-5553 1200
-@print{} 300 B
-@print{} alpo-net 555-3412 2400
-@print{} 1200
-@print{} 300 A
-@print{} barfly 555-7685 1200
-@print{} 300 A
-@print{} bites 555-1675 2400
-@print{} 1200
-@print{} 300 A
-@print{} camelot 555-0542 300 C
-@print{} core 555-2912 1200
-@print{} 300 C
-@print{} fooey 555-1234 2400
-@print{} 1200
-@print{} 300 B
-@print{} foot 555-6699 1200
-@print{} 300 B
-@print{} macfoo 555-6480 1200
-@print{} 300 A
-@print{} sdace 555-3430 2400
-@print{} 1200
-@print{} 300 A
-@print{} sabafoo 555-2127 1200
-@print{} 300 C
-@print{}
+with each @samp{u} changed to a newline. Here are the results of running
+the program on @file{mail-list}:
+
+@example
+$ @kbd{awk 'BEGIN @{ RS = "u" @}}
+> @kbd{@{ print $0 @}' mail-list}
+@print{} Amelia 555-5553 amelia.zodiac
+@print{} sq
+@print{} e@@gmail.com F
+@print{} Anthony 555-3412 anthony.assert
+@print{} ro@@hotmail.com A
+@print{} Becky 555-7685 becky.algebrar
+@print{} m@@gmail.com A
+@print{} Bill 555-1675 bill.drowning@@hotmail.com A
+@print{} Broderick 555-0542 broderick.aliq
+@print{} otiens@@yahoo.com R
+@print{} Camilla 555-2912 camilla.inf
+@print{} sar
+@print{} m@@skynet.be R
+@print{} Fabi
+@print{} s 555-1234 fabi
+@print{} s.
+@print{} ndevicesim
+@print{} s@@
+@print{} cb.ed
+@print{} F
+@print{} J
+@print{} lie 555-6699 j
+@print{} lie.perscr
+@print{} tabor@@skeeve.com F
+@print{} Martin 555-6480 martin.codicib
+@print{} s@@hotmail.com A
+@print{} Sam
+@print{} el 555-3430 sam
+@print{} el.lanceolis@@sh
+@print{} .ed
+@print{} A
+@print{} Jean-Pa
+@print{} l 555-2127 jeanpa
+@print{} l.campanor
+@print{} m@@ny
+@print{} .ed
+@print{} R
+@print{}
@end example
@noindent
-Note that the entry for the @samp{camelot} BBS is not split.
-In the original @value{DF}
+Note that the entry for the name @samp{Bill} is not split.
+In the original data file
(@pxref{Sample Data Files}),
the line looks like this:
@example
-camelot 555-0542 300 C
+Bill 555-1675 bill.drowning@@hotmail.com A
@end example
@noindent
-It has one baud rate only, so there are no slashes in the record,
-unlike the others which have two or more baud rates.
-In fact, this record is treated as part of the record
-for the @samp{core} BBS; the newline separating them in the output
-is the original newline in the @value{DF}, not the one added by
+It contains no @samp{u} so there is no reason to split the record,
+unlike the others which have one or more occurrences of the @samp{u}.
+In fact, this record is treated as part of the previous record;
+the newline separating them in the output
+is the original newline in the data file, not the one added by
@command{awk} when it printed the record!
@cindex record separators, changing
@@ -5698,14 +5822,17 @@ using the variable-assignment feature
(@pxref{Other Arguments}):
@example
-awk '@{ print $0 @}' RS="/" BBS-list
+awk '@{ print $0 @}' RS="u" mail-list
@end example
@noindent
-This sets @code{RS} to @samp{/} before processing @file{BBS-list}.
+This sets @code{RS} to @samp{u} before processing @file{mail-list}.
-Using an unusual character such as @samp{/} for the record separator
-produces correct behavior in the vast majority of cases.
+Using an alphabetic character such as @samp{u} for the record separator
+is highly likely to produce strange results.
+Using an unusual character such as @samp{/} is more likely to
+produce correct behavior in the majority of cases, but there
+are no guarantees. The moral is: Know Your Data.
There is one unusual case, that occurs when @command{gawk} is
being fully POSIX-compliant (@pxref{Options}).
@@ -5727,6 +5854,7 @@ Reaching the end of an input file terminates the current input record,
even if the last character in the file is not the character in @code{RS}.
@value{DARKCORNER}
+@cindex empty strings
@cindex null strings
@cindex strings, empty, See null strings
The empty string @code{""} (a string without any characters)
@@ -5829,8 +5957,8 @@ In compatibility mode, only the first character of the value of
<sidebar><title>@code{RS = "\0"} Is Not Portable</title>
@end docbook
-@cindex portability, @value{DF}s as single record
-There are times when you might want to treat an entire @value{DF} as a
+@cindex portability, data files as single record
+There are times when you might want to treat an entire data file as a
single record. The only way to make this happen is to give @code{RS}
a value that you know doesn't occur in the input file. This is hard
to do in a general way, such that a program always works for arbitrary
@@ -5849,21 +5977,27 @@ BEGIN @{ RS = "\0" @} # whole file becomes one record?
@command{gawk} in fact accepts this, and uses the @sc{nul}
character for the record separator.
However, this usage is @emph{not} portable
-to other @command{awk} implementations.
+to most other @command{awk} implementations.
@cindex dark corner, strings, storing
-All other @command{awk} implementations@footnote{At least that we know
+Almost all other @command{awk} implementations@footnote{At least that we know
about.} store strings internally as C-style strings. C strings use the
@sc{nul} character as the string terminator. In effect, this means that
@samp{RS = "\0"} is the same as @samp{RS = ""}.
@value{DARKCORNER}
+It happens that recent versions of @command{mawk} can use the @sc{nul}
+character as a record separator. However, this is a special case:
+@command{mawk} does not allow embedded @sc{nul} characters in strings.
+
@cindex records, treating files as
-@cindex files, as single records
+@cindex treating files, as single records
The best way to treat a whole file as a single record is to
simply read the file in, one record at a time, concatenating each
record onto the end of the previous ones.
+@c @strong{FIXME}: Using @sc{nul} is good for @file{/proc/environ} etc.
+
@docbook
</sidebar>
@end docbook
@@ -5874,8 +6008,8 @@ record onto the end of the previous ones.
@center @b{@code{RS = "\0"} Is Not Portable}
-@cindex portability, @value{DF}s as single record
-There are times when you might want to treat an entire @value{DF} as a
+@cindex portability, data files as single record
+There are times when you might want to treat an entire data file as a
single record. The only way to make this happen is to give @code{RS}
a value that you know doesn't occur in the input file. This is hard
to do in a general way, such that a program always works for arbitrary
@@ -5894,20 +6028,26 @@ BEGIN @{ RS = "\0" @} # whole file becomes one record?
@command{gawk} in fact accepts this, and uses the @sc{nul}
character for the record separator.
However, this usage is @emph{not} portable
-to other @command{awk} implementations.
+to most other @command{awk} implementations.
@cindex dark corner, strings, storing
-All other @command{awk} implementations@footnote{At least that we know
+Almost all other @command{awk} implementations@footnote{At least that we know
about.} store strings internally as C-style strings. C strings use the
@sc{nul} character as the string terminator. In effect, this means that
@samp{RS = "\0"} is the same as @samp{RS = ""}.
@value{DARKCORNER}
+It happens that recent versions of @command{mawk} can use the @sc{nul}
+character as a record separator. However, this is a special case:
+@command{mawk} does not allow embedded @sc{nul} characters in strings.
+
@cindex records, treating files as
-@cindex files, as single records
+@cindex treating files, as single records
The best way to treat a whole file as a single record is to
simply read the file in, one record at a time, concatenating each
record onto the end of the previous ones.
+
+@c @strong{FIXME}: Using @sc{nul} is good for @file{/proc/environ} etc.
@end cartouche
@end ifnotdocbook
@c ENDOFRANGE inspl
@@ -5980,31 +6120,29 @@ when you are not interested in specific fields.
Here are some more examples:
@example
-$ @kbd{awk '$1 ~ /foo/ @{ print $0 @}' BBS-list}
-@print{} fooey 555-1234 2400/1200/300 B
-@print{} foot 555-6699 1200/300 B
-@print{} macfoo 555-6480 1200/300 A
-@print{} sabafoo 555-2127 1200/300 C
+$ @kbd{awk '$1 ~ /li/ @{ print $0 @}' mail-list}
+@print{} Amelia 555-5553 amelia.zodiacusque@@gmail.com F
+@print{} Julie 555-6699 julie.perscrutabor@@skeeve.com F
@end example
@noindent
-This example prints each record in the file @file{BBS-list} whose first
-field contains the string @samp{foo}. The operator @samp{~} is called a
+This example prints each record in the file @file{mail-list} whose first
+field contains the string @samp{li}. The operator @samp{~} is called a
@dfn{matching operator}
(@pxref{Regexp Usage});
it tests whether a string (here, the field @code{$1}) matches a given regular
expression.
By contrast, the following example
-looks for @samp{foo} in @emph{the entire record} and prints the first
+looks for @samp{li} in @emph{the entire record} and prints the first
field and the last field for each matching input record:
@example
-$ @kbd{awk '/foo/ @{ print $1, $NF @}' BBS-list}
-@print{} fooey B
-@print{} foot B
-@print{} macfoo A
-@print{} sabafoo C
+$ @kbd{awk '/li/ @{ print $1, $NF @}' mail-list}
+@print{} Amelia F
+@print{} Broderick R
+@print{} Julie F
+@print{} Samuel A
@end example
@c ENDOFRANGE fiex
@@ -6032,7 +6170,7 @@ the record has fewer than 20 fields, so this prints a blank line.
Here is another example of using expressions as field numbers:
@example
-awk '@{ print $(2*2) @}' BBS-list
+awk '@{ print $(2*2) @}' mail-list
@end example
@command{awk} evaluates the expression @samp{(2*2)} and uses
@@ -6041,8 +6179,8 @@ represents multiplication, so the expression @samp{2*2} evaluates to four.
The parentheses are used so that the multiplication is done before the
@samp{$} operation; they are necessary whenever there is a binary
operator in the field-number expression. This example, then, prints the
-hours of operation (the fourth field) for every line of the file
-@file{BBS-list}. (All of the @command{awk} operators are listed, in
+type of relationship (the fourth field) for every line of the file
+@file{mail-list}. (All of the @command{awk} operators are listed, in
order of decreasing precedence, in
@ref{Precedence}.)
@@ -6296,6 +6434,7 @@ with a statement such as @samp{$1 = $1}, as described earlier.
* 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.
+* Full Line Fields:: Making the full line be a single field.
* Field Splitting Summary:: Some final points and a summary table.
@end menu
@@ -6483,7 +6622,7 @@ was ignored when finding @code{$1}, it is not part of the new @code{$0}.
Finally, the last @code{print} statement prints the new @code{$0}.
@cindex @code{FS}, containing @code{^}
-@cindex @code{^}, in @code{FS}
+@cindex @code{^} (caret), in @code{FS}
@cindex dark corner, @code{^}, in @code{FS}
There is an additional subtlety to be aware of when using regular expressions
for field splitting.
@@ -6494,6 +6633,7 @@ different @command{awk} versions answer this question differently, and you
should not rely on any specific behavior in your programs.
@value{DARKCORNER}
+@cindex Brian Kernighan's @command{awk}
As a point of information, Brian Kernighan's @command{awk} allows @samp{^}
to match only at the beginning of the record. @command{gawk}
also works this way. For example:
@@ -6537,7 +6677,7 @@ $ @kbd{echo a b | gawk 'BEGIN @{ FS = "" @}}
@end example
@cindex dark corner, @code{FS} as null string
-@cindex FS variable, as null string
+@cindex @code{FS} variable, as null string
Traditionally, the behavior of @code{FS} equal to @code{""} was not defined.
In this case, most versions of Unix @command{awk} simply treat the entire record
as only having one field.
@@ -6549,10 +6689,8 @@ behaves this way.
@node Command Line Field Separator
@subsection Setting @code{FS} from the Command Line
-@cindex @code{-F} option
-@cindex options, command-line
-@cindex command line, options
-@cindex field separators, on command line
+@cindex @option{-F} option, command line
+@cindex field separator, on command line
@cindex command line, @code{FS} on@comma{} setting
@cindex @code{FS} variable, setting from command line
@@ -6602,68 +6740,76 @@ figures that you really want your fields to be separated with TABs and
not @samp{t}s. Use @samp{-v FS="t"} or @samp{-F"[t]"} on the command line
if you really do want to separate your fields with @samp{t}s.
-As an example, let's use an @command{awk} program file called @file{baud.awk}
-that contains the pattern @code{/300/} and the action @samp{print $1}:
+As an example, let's use an @command{awk} program file called @file{edu.awk}
+that contains the pattern @code{/edu/} and the action @samp{print $1}:
@example
-/300/ @{ print $1 @}
+/edu/ @{ print $1 @}
@end example
Let's also set @code{FS} to be the @samp{-} character and run the
-program on the file @file{BBS-list}. The following command prints a
-list of the names of the bulletin boards that operate at 300 baud and
+program on the file @file{mail-list}. The following command prints a
+list of the names of the people that work at or attend a university, and
the first three digits of their phone numbers:
@c tweaked to make the tex output look better in @smallbook
@example
-$ @kbd{awk -F- -f baud.awk BBS-list}
-@print{} aardvark 555
-@print{} alpo
-@print{} barfly 555
-@print{} bites 555
-@print{} camelot 555
-@print{} core 555
-@print{} fooey 555
-@print{} foot 555
-@print{} macfoo 555
-@print{} sdace 555
-@print{} sabafoo 555
+$ @kbd{awk -F- -f edu.awk mail-list}
+@print{} Fabius 555
+@print{} Samuel 555
+@print{} Jean
@end example
@noindent
-Note the second line of output. The second line
+Note the third line of output. The third line
in the original file looked like this:
@example
-alpo-net 555-3412 2400/1200/300 A
+Jean-Paul 555-2127 jeanpaul.campanorum@@nyu.edu R
@end example
-The @samp{-} as part of the system's name was used as the field
+The @samp{-} as part of the person's name was used as the field
separator, instead of the @samp{-} in the phone number that was
originally intended. This demonstrates why you have to be careful in
choosing your field and record separators.
@cindex Unix @command{awk}, password files@comma{} field separators and
-Perhaps the most common use of a single character as the field
-separator occurs when processing the Unix system password file.
-On many Unix systems, each user has a separate entry in the system password
-file, one line per user. The information in these lines is separated
-by colons. The first field is the user's login name and the second is
-the user's (encrypted or shadow) password. A password file entry might look
-like this:
+Perhaps the most common use of a single character as the field separator
+occurs when processing the Unix system password file. On many Unix
+systems, each user has a separate entry in the system password file, one
+line per user. The information in these lines is separated by colons.
+The first field is the user's login name and the second is the user's
+encrypted or shadow password. (A shadow password is indicated by the
+presence of a single @samp{x} in the second field.) A password file
+entry might look like this:
@cindex Robbins, Arnold
@example
-arnold:xyzzy:2076:10:Arnold Robbins:/home/arnold:/bin/bash
+arnold:x:2076:10:Arnold Robbins:/home/arnold:/bin/bash
@end example
The following program searches the system password file and prints
-the entries for users who have no password:
+the entries for users whose full name is not indicated:
+
+@example
+awk -F: '$5 == ""' /etc/passwd
+@end example
+
+@node Full Line Fields
+@subsection Making The Full Line Be A Single Field
+
+Occasionally, it's useful to treat the whole input line as a
+single field. This can be done easily and portably simply by
+setting @code{FS} to @code{"\n"} (a newline).@footnote{Thanks to
+Andrew Schorr for this tip.}
@example
-awk -F: '$2 == ""' /etc/passwd
+awk -F'\n' '@var{program}' @var{files @dots{}}
@end example
+@noindent
+When you do this, @code{$1} is the same as @code{$0}.
+
@node Field Splitting Summary
@subsection Field-Splitting Summary
@@ -6709,7 +6855,7 @@ POSIX standard.)
@cindex POSIX @command{awk}, field separators and
-@cindex field separators, POSIX and
+@cindex field separator, POSIX and
According to the POSIX standard, @command{awk} is supposed to behave
as if each record is split into fields at the time it is read.
In particular, this means that if you change the value of @code{FS}
@@ -6762,7 +6908,7 @@ root:nSijPlPhZZwgE:0:0:Root:/:
@cindex POSIX @command{awk}, field separators and
-@cindex field separators, POSIX and
+@cindex field separator, POSIX and
According to the POSIX standard, @command{awk} is supposed to behave
as if each record is split into fields at the time it is read.
In particular, this means that if you change the value of @code{FS}
@@ -6869,19 +7015,11 @@ will take effect.
@node Constant Size
@section Reading Fixed-Width Data
-@ifnotinfo
@quotation NOTE
This @value{SECTION} discusses an advanced
feature of @command{gawk}. If you are a novice @command{awk} user,
you might want to skip it on the first reading.
@end quotation
-@end ifnotinfo
-
-@ifinfo
-(This @value{SECTION} discusses an advanced feature of @command{awk}.
-If you are a novice @command{awk} user, you might want to skip it on
-the first reading.)
-@end ifinfo
@cindex data, fixed-width
@cindex fixed-width data
@@ -7011,19 +7149,11 @@ for an example of such a function).
@node Splitting By Content
@section Defining Fields By Content
-@ifnotinfo
@quotation NOTE
This @value{SECTION} discusses an advanced
feature of @command{gawk}. If you are a novice @command{awk} user,
you might want to skip it on the first reading.
@end quotation
-@end ifnotinfo
-
-@ifinfo
-(This @value{SECTION} discusses an advanced feature of @command{awk}.
-If you are a novice @command{awk} user, you might want to skip it on
-the first reading.)
-@end ifinfo
@cindex advanced features, specifying field content
Normally, when using @code{FS}, @command{gawk} defines the fields as the
@@ -7138,6 +7268,7 @@ available for splitting regular strings (@pxref{String Functions}).
@node Multiple Line
@section Multiple-Line Records
+@cindex multiple-line records
@c STARTOFRANGE recm
@cindex records, multiline
@c STARTOFRANGE imr
@@ -7184,12 +7315,13 @@ appear in a row, they are considered one record separator.
@cindex dark corner, multiline records
There is an important difference between @samp{RS = ""} and
@samp{RS = "\n\n+"}. In the first case, leading newlines in the input
-@value{DF} are ignored, and if a file ends without extra blank lines
+data file are ignored, and if a file ends without extra blank lines
after the last record, the final newline is removed from the record.
In the second case, this special processing is not done.
@value{DARKCORNER}
-@cindex field separators, in multiline records
+@cindex field separator, in multiline records
+@cindex @code{FS}, in multiline records
Now that the input is separated into records, the second step is to
separate the fields in the record. One way to do this is to divide each
of the lines into fields in the normal manner. This happens by default
@@ -7219,7 +7351,7 @@ Another way to separate fields is to
put each field on a separate line: to do this, just set the
variable @code{FS} to the string @code{"\n"}. (This single
character separator matches a single newline.)
-A practical example of a @value{DF} organized this way might be a mailing
+A practical example of a data file organized this way might be a mailing
list, where each entry is separated by blank lines. Consider a mailing
list in a file named @file{addresses}, which looks like this:
@@ -7284,7 +7416,7 @@ value of
@table @code
@item RS == "\n"
Records are separated by the newline character (@samp{\n}). In effect,
-every line in the @value{DF} is a separate record, including blank lines.
+every line in the data file is a separate record, including blank lines.
This is the default.
@item RS == @var{any single character}
@@ -7320,6 +7452,7 @@ then @command{gawk} sets @code{RT} to the null string.
@c STARTOFRANGE getl
@cindex @code{getline} command, explicit input with
+@c STARTOFRANGE inex
@cindex input, explicit
So far we have been getting our input data from @command{awk}'s main
input stream---either the standard input (usually your terminal, sometimes
@@ -7336,10 +7469,10 @@ and study the @code{getline} command @emph{after} you have reviewed the
rest of this @value{DOCUMENT} and have a good knowledge of how @command{awk} works.
@cindex @command{gawk}, @code{ERRNO} variable in
-@cindex @code{ERRNO} variable
+@cindex @code{ERRNO} variable, with @command{getline} command
@cindex differences in @command{awk} and @command{gawk}, @code{getline} command
@cindex @code{getline} command, return values
-@cindex @code{--sandbox} option, input redirection with @command{getline}
+@cindex @option{--sandbox} option, input redirection with @code{getline}
The @code{getline} command returns one if it finds a record and zero if
it encounters the end of the file. If there is some error in getting
@@ -7432,6 +7565,7 @@ rule in the program. @xref{Next Statement}.
@node Getline/Variable
@subsection Using @code{getline} into a Variable
+@cindex @code{getline} into a variable
@cindex variables, @code{getline} command into@comma{} using
You can use @samp{getline @var{var}} to read the next record from
@@ -7483,6 +7617,7 @@ the value of @code{NF} do not change.
@node Getline/File
@subsection Using @code{getline} from a File
+@cindex @code{getline} from a file
@cindex input redirection
@cindex redirection of input
@cindex @code{<} (left angle bracket), @code{<} operator (I/O)
@@ -7490,7 +7625,7 @@ the value of @code{NF} do not change.
@cindex operators, input/output
Use @samp{getline < @var{file}} to read the next record from @var{file}.
Here @var{file} is a string-valued expression that
-specifies the @value{FN}. @samp{< @var{file}} is called a @dfn{redirection}
+specifies the file name. @samp{< @var{file}} is called a @dfn{redirection}
because it directs input to come from a different place.
For example, the following
program reads its input record from the file @file{secondary.input} when it
@@ -7531,8 +7666,6 @@ from the file
@var{file}, and put it in the variable @var{var}. As above, @var{file}
is a string-valued expression that specifies the file from which to read.
-@cindex @command{gawk}, @code{RT} variable in
-@cindex @code{RT} variable
In this version of @code{getline}, none of the built-in variables are
changed and the record is not split into fields. The only variable
changed is @var{var}.@footnote{This is not quite true. @code{RT} could
@@ -7557,7 +7690,6 @@ Note here how the name of the extra input file is not built into
the program; it is taken directly from the data, specifically from the second field on
the @samp{@@include} line.
-@cindex @code{close()} function
The @code{close()} function is called to ensure that if two identical
@samp{@@include} lines appear in the input, the entire specified file is
included twice.
@@ -7574,16 +7706,17 @@ that does handle nested @samp{@@include} statements.
@subsection Using @code{getline} from a Pipe
@c From private email, dated October 2, 1988. Used by permission, March 2013.
+@cindex Kernighan, Brian
@quotation
@i{Omniscience has much to recommend it.
-Failing that, attention to details would be useful.}@*
-Brian Kernighan
+Failing that, attention to details would be useful.}
+@author Brian Kernighan
@end quotation
@cindex @code{|} (vertical bar), @code{|} operator (I/O)
@cindex vertical bar (@code{|}), @code{|} operator (I/O)
@cindex input pipeline
-@cindex pipes, input
+@cindex pipe, input
@cindex operators, input/output
The output of a command can also be piped into @code{getline}, using
@samp{@var{command} | getline}. In
@@ -7607,7 +7740,6 @@ produced by running the rest of the line as a shell command:
@end example
@noindent
-@cindex @code{close()} function
The @code{close()} function is called to ensure that if two identical
@samp{@@execute} lines appear in the input, the command is run for
each one.
@@ -7661,6 +7793,8 @@ because the concatenation operator is not parenthesized. You should
write it as @samp{(@w{"echo "} "date") | getline} if you want your program
to be portable to all @command{awk} implementations.
+@cindex Brian Kernighan's @command{awk}
+@cindex @command{mawk} utility
@quotation NOTE
Unfortunately, @command{gawk} has not been consistent in its treatment
of a construct like @samp{@w{"echo "} "date" | getline}.
@@ -7797,10 +7931,10 @@ system permits.
@item
An interesting side effect occurs if you use @code{getline} without a
redirection inside a @code{BEGIN} rule. Because an unredirected @code{getline}
-reads from the command-line @value{DF}s, the first @code{getline} command
+reads from the command-line data files, the first @code{getline} command
causes @command{awk} to set the value of @code{FILENAME}. Normally,
@code{FILENAME} does not have a value inside @code{BEGIN} rules, because you
-have not yet started to process the command-line @value{DF}s.
+have not yet started to process the command-line data files.
@value{DARKCORNER}
(@xref{BEGIN/END},
also @pxref{Auto-set}.)
@@ -7985,6 +8119,7 @@ indefinitely until some other process opens it for writing.
@node Command line directories
@section Directories On The Command Line
+@cindex differences in @command{awk} and @command{gawk}, command line directories
@cindex directories, command line
@cindex command line, directories on
@@ -8022,7 +8157,7 @@ For printing with specifications, you need the @code{printf} statement
@cindex @code{printf} statement
Besides basic and formatted printing, this @value{CHAPTER}
also covers I/O redirections to files and pipes, introduces
-the special @value{FN}s that @command{gawk} processes internally,
+the special file names that @command{gawk} processes internally,
and discusses the @code{close()} built-in function.
@menu
@@ -8228,13 +8363,29 @@ program by using a new value of @code{OFS}.
@example
$ @kbd{awk 'BEGIN @{ OFS = ";"; ORS = "\n\n" @}}
-> @kbd{@{ print $1, $2 @}' BBS-list}
-@print{} aardvark;555-5553
-@print{}
-@print{} alpo-net;555-3412
-@print{}
-@print{} barfly;555-7685
-@dots{}
+> @kbd{@{ print $1, $2 @}' mail-list}
+@print{} Amelia;555-5553
+@print{}
+@print{} Anthony;555-3412
+@print{}
+@print{} Becky;555-7685
+@print{}
+@print{} Bill;555-1675
+@print{}
+@print{} Broderick;555-0542
+@print{}
+@print{} Camilla;555-2912
+@print{}
+@print{} Fabius;555-1234
+@print{}
+@print{} Julie;555-6699
+@print{}
+@print{} Martin;555-6480
+@print{}
+@print{} Samuel;555-3430
+@print{}
+@print{} Jean-Paul;555-2127
+@print{}
@end example
If the value of @code{ORS} does not contain a newline, the program's output
@@ -8256,7 +8407,7 @@ numbers can be formatted. The different format specifications are discussed
more fully in
@ref{Control Letters}.
-@cindex @code{sprintf()} function
+@cindexawkfunc{sprintf}
@cindex @code{OFMT} variable
@cindex output, format specifier@comma{} @code{OFMT}
The built-in variable @code{OFMT} contains the default format specification
@@ -8322,7 +8473,7 @@ parentheses are necessary if any of the item expressions use the @samp{>}
relational operator; otherwise, it can be confused with an output redirection
(@pxref{Redirection}).
-@cindex format strings
+@cindex format specifiers
The difference between @code{printf} and @code{print} is the @var{format}
argument. This is an expression whose value is taken as a string; it
specifies how to output each of the other arguments. It is called the
@@ -8708,30 +8859,30 @@ The following simple example shows
how to use @code{printf} to make an aligned table:
@example
-awk '@{ printf "%-10s %s\n", $1, $2 @}' BBS-list
+awk '@{ printf "%-10s %s\n", $1, $2 @}' mail-list
@end example
@noindent
This command
-prints the names of the bulletin boards (@code{$1}) in the file
-@file{BBS-list} as a string of 10 characters that are left-justified. It also
+prints the names of the people (@code{$1}) in the file
+@file{mail-list} as a string of 10 characters that are left-justified. It also
prints the phone numbers (@code{$2}) next on the line. This
produces an aligned two-column table of names and phone numbers,
as shown here:
@example
-$ @kbd{awk '@{ printf "%-10s %s\n", $1, $2 @}' BBS-list}
-@print{} aardvark 555-5553
-@print{} alpo-net 555-3412
-@print{} barfly 555-7685
-@print{} bites 555-1675
-@print{} camelot 555-0542
-@print{} core 555-2912
-@print{} fooey 555-1234
-@print{} foot 555-6699
-@print{} macfoo 555-6480
-@print{} sdace 555-3430
-@print{} sabafoo 555-2127
+$ @kbd{awk '@{ printf "%-10s %s\n", $1, $2 @}' mail-list}
+@print{} Amelia 555-5553
+@print{} Anthony 555-3412
+@print{} Becky 555-7685
+@print{} Bill 555-1675
+@print{} Broderick 555-0542
+@print{} Camilla 555-2912
+@print{} Fabius 555-1234
+@print{} Julie 555-6699
+@print{} Martin 555-6480
+@print{} Samuel 555-3430
+@print{} Jean-Paul 555-2127
@end example
In this case, the phone numbers had to be printed as strings because
@@ -8752,7 +8903,7 @@ the @command{awk} program:
@example
awk 'BEGIN @{ print "Name Number"
print "---- ------" @}
- @{ printf "%-10s %s\n", $1, $2 @}' BBS-list
+ @{ printf "%-10s %s\n", $1, $2 @}' mail-list
@end example
The above example mixes @code{print} and @code{printf} statements in
@@ -8762,7 +8913,7 @@ same results:
@example
awk 'BEGIN @{ printf "%-10s %s\n", "Name", "Number"
printf "%-10s %s\n", "----", "------" @}
- @{ printf "%-10s %s\n", $1, $2 @}' BBS-list
+ @{ printf "%-10s %s\n", $1, $2 @}' mail-list
@end example
@noindent
@@ -8777,7 +8928,7 @@ emphasized by storing it in a variable, like this:
awk 'BEGIN @{ format = "%-10s %s\n"
printf format, "Name", "Number"
printf format, "----", "------" @}
- @{ printf format, $1, $2 @}' BBS-list
+ @{ printf format, $1, $2 @}' mail-list
@end example
@c !!! exercise
@@ -8791,9 +8942,11 @@ on the @code{print} statement
@node Redirection
@section Redirecting Output of @code{print} and @code{printf}
+@c STARTOFRANGE outre
@cindex output redirection
+@c STARTOFRANGE reout
@cindex redirection of output
-@cindex @code{--sandbox} option, output redirection with @code{print}, @code{printf}
+@cindex @option{--sandbox} option, output redirection with @code{print}, @code{printf}
So far, the output from @code{print} and @code{printf} has gone
to the standard
output, usually the screen. Both @code{print} and @code{printf} can
@@ -8810,8 +8963,8 @@ Redirections in @command{awk} are written just like redirections in shell
commands, except that they are written inside the @command{awk} program.
@c the commas here are part of the see also
-@cindex @code{print} statement, See Also redirection, of output
-@cindex @code{printf} statement, See Also redirection, of output
+@cindex @code{print} statement, See Also redirection@comma{} of output
+@cindex @code{printf} statement, See Also redirection@comma{} of output
There are four forms of output redirection: output to a file, output
appended to a file, output through a pipe to another command, and output
to a coprocess. They are all shown for the @code{print} statement,
@@ -8823,29 +8976,29 @@ but they work identically for @code{printf}:
@cindex operators, input/output
@item print @var{items} > @var{output-file}
This redirection prints the items into the output file named
-@var{output-file}. The @value{FN} @var{output-file} can be any
+@var{output-file}. The file name @var{output-file} can be any
expression. Its value is changed to a string and then used as a
-@value{FN} (@pxref{Expressions}).
+file name (@pxref{Expressions}).
When this type of redirection is used, the @var{output-file} is erased
before the first output is written to it. Subsequent writes to the same
@var{output-file} do not erase @var{output-file}, but append to it.
(This is different from how you use redirections in shell scripts.)
If @var{output-file} does not exist, it is created. For example, here
-is how an @command{awk} program can write a list of BBS names to one
+is how an @command{awk} program can write a list of peoples' names to one
file named @file{name-list}, and a list of phone numbers to another file
named @file{phone-list}:
@example
$ @kbd{awk '@{ print $2 > "phone-list"}
-> @kbd{print $1 > "name-list" @}' BBS-list}
+> @kbd{print $1 > "name-list" @}' mail-list}
$ @kbd{cat phone-list}
@print{} 555-5553
@print{} 555-3412
@dots{}
$ @kbd{cat name-list}
-@print{} aardvark
-@print{} alpo-net
+@print{} Amelia
+@print{} Anthony
@dots{}
@end example
@@ -8863,7 +9016,7 @@ appended to the file.
If @var{output-file} does not exist, then it is created.
@cindex @code{|} (vertical bar), @code{|} operator (I/O)
-@cindex pipes, output
+@cindex pipe, output
@cindex output, pipes
@item print @var{items} | @var{command}
It is possible to send output to another program through a pipe
@@ -8874,7 +9027,7 @@ to another process created to execute @var{command}.
The redirection argument @var{command} is actually an @command{awk}
expression. Its value is converted to a string whose contents give
the shell command to be run. For example, the following produces two
-files, one unsorted list of BBS names, and one list sorted in reverse
+files, one unsorted list of peoples' names, and one list sorted in reverse
alphabetical order:
@ignore
@@ -8887,7 +9040,7 @@ alone for now and let's hope no-one notices.
@example
awk '@{ print $1 > "names.unsorted"
command = "sort -r > names.sorted"
- print $1 | command @}' BBS-list
+ print $1 | command @}' mail-list
@end example
The unsorted list is written with an ordinary redirection, while
@@ -8996,7 +9149,7 @@ open as many pipelines as the underlying operating system permits.
A particularly powerful way to use redirection is to build command lines
and pipe them into the shell, @command{sh}. For example, suppose you
-have a list of files brought over from a system where all the @value{FN}s
+have a list of files brought over from a system where all the file names
are stored in uppercase, and you wish to rename them to have names in
all lowercase. The following program is both simple and efficient:
@@ -9028,7 +9181,7 @@ It then sends the list to the shell for execution.
A particularly powerful way to use redirection is to build command lines
and pipe them into the shell, @command{sh}. For example, suppose you
-have a list of files brought over from a system where all the @value{FN}s
+have a list of files brought over from a system where all the file names
are stored in uppercase, and you wish to rename them to have names in
all lowercase. The following program is both simple and efficient:
@@ -9051,12 +9204,12 @@ It then sends the list to the shell for execution.
@c ENDOFRANGE reout
@node Special Files
-@section Special @value{FFN}s in @command{gawk}
+@section Special File Names in @command{gawk}
@c STARTOFRANGE gfn
-@cindex @command{gawk}, @value{FN}s in
+@cindex @command{gawk}, file names in
-@command{gawk} provides a number of special @value{FN}s that it interprets
-internally. These @value{FN}s provide access to standard file descriptors
+@command{gawk} provides a number of special file names that it interprets
+internally. These file names provide access to standard file descriptors
and TCP/IP networking.
@menu
@@ -9120,12 +9273,12 @@ that happens, writing to the screen is not correct. In fact, if
terminal at all.
Then opening @file{/dev/tty} fails.
-@command{gawk} provides special @value{FN}s for accessing the three standard
+@command{gawk} provides special file names for accessing the three standard
streams. @value{COMMONEXT}. It also provides syntax for accessing
-any other inherited open files. If the @value{FN} matches
+any other inherited open files. If the file name matches
one of these special names when @command{gawk} redirects input or output,
-then it directly uses the stream that the @value{FN} stands for.
-These special @value{FN}s work for all operating systems that @command{gawk}
+then it directly uses the stream that the file name stands for.
+These special file names work for all operating systems that @command{gawk}
has been ported to, not just those that are POSIX-compliant:
@cindex common extensions, @code{/dev/stdin} special file
@@ -9134,10 +9287,10 @@ has been ported to, not just those that are POSIX-compliant:
@cindex extensions, common@comma{} @code{/dev/stdin} special file
@cindex extensions, common@comma{} @code{/dev/stdout} special file
@cindex extensions, common@comma{} @code{/dev/stderr} special file
-@cindex @value{FN}s, standard streams in @command{gawk}
-@cindex @code{/dev/@dots{}} special files (@command{gawk})
+@cindex file names, standard streams in @command{gawk}
+@cindex @code{/dev/@dots{}} special files
@cindex files, @code{/dev/@dots{}} special files
-@cindex @code{/dev/fd/@var{N}} special files
+@cindex @code{/dev/fd/@var{N}} special files (@command{gawk})
@table @file
@item /dev/stdin
The standard input (file descriptor 0).
@@ -9155,7 +9308,7 @@ the shell). Unless special pains are taken in the shell from which
@command{gawk} is invoked, only descriptors 0, 1, and 2 are available.
@end table
-The @value{FN}s @file{/dev/stdin}, @file{/dev/stdout}, and @file{/dev/stderr}
+The file names @file{/dev/stdin}, @file{/dev/stdout}, and @file{/dev/stderr}
are aliases for @file{/dev/fd/0}, @file{/dev/fd/1}, and @file{/dev/fd/2},
respectively. However, they are more self-explanatory.
The proper way to write an error message in a @command{gawk} program
@@ -9165,14 +9318,14 @@ is to use @file{/dev/stderr}, like this:
print "Serious error detected!" > "/dev/stderr"
@end example
-@cindex troubleshooting, quotes with @value{FN}s
-Note the use of quotes around the @value{FN}.
+@cindex troubleshooting, quotes with file names
+Note the use of quotes around the file name.
Like any other redirection, the value must be a string.
It is a common error to omit the quotes, which leads
to confusing results.
@c Exercise: What does it do? :-)
-Finally, using the @code{close()} function on a @value{FN} of the
+Finally, using the @code{close()} function on a file name of the
form @code{"/dev/fd/@var{N}"}, for file descriptor numbers
above two, does actually close the given file descriptor.
@@ -9188,7 +9341,7 @@ versions of @command{awk}.
@command{gawk} programs
can open a two-way
TCP/IP connection, acting as either a client or a server.
-This is done using a special @value{FN} of the form:
+This is done using a special file name of the form:
@example
@file{/@var{net-type}/@var{protocol}/@var{local-port}/@var{remote-host}/@var{remote-port}}
@@ -9198,7 +9351,7 @@ The @var{net-type} is one of @samp{inet}, @samp{inet4} or @samp{inet6}.
The @var{protocol} is one of @samp{tcp} or @samp{udp},
and the other fields represent the other essential pieces of information
for making a networking connection.
-These @value{FN}s are used with the @samp{|&} operator for communicating
+These file names are used with the @samp{|&} operator for communicating
with a coprocess
(@pxref{Two-way I/O}).
This is an advanced feature, mentioned here only for completeness.
@@ -9206,21 +9359,21 @@ Full discussion is delayed until
@ref{TCP/IP Networking}.
@node Special Caveats
-@subsection Special @value{FFN} Caveats
+@subsection Special File Name Caveats
Here is a list of things to bear in mind when using the
-special @value{FN}s that @command{gawk} provides:
+special file names that @command{gawk} provides:
@itemize @bullet
-@cindex compatibility mode (@command{gawk}), @value{FN}s
-@cindex @value{FN}s, in compatibility mode
+@cindex compatibility mode (@command{gawk}), file names
+@cindex file names, in compatibility mode
@item
-Recognition of these special @value{FN}s is disabled if @command{gawk} is in
+Recognition of these special file names is disabled if @command{gawk} is in
compatibility mode (@pxref{Options}).
@item
@command{gawk} @emph{always}
-interprets these special @value{FN}s.
+interprets these special file names.
For example, using @samp{/dev/fd/4}
for output actually writes on file descriptor 4, and not on a new
file descriptor that is @code{dup()}'ed from file descriptor 4. Most of
@@ -9238,12 +9391,12 @@ Doing so results in unpredictable behavior.
@c STARTOFRANGE ofc
@cindex output, files@comma{} closing
@c STARTOFRANGE pc
-@cindex pipes, closing
+@cindex pipe, closing
@c STARTOFRANGE cc
@cindex coprocesses, closing
@cindex @code{getline} command, coprocesses@comma{} using from
-If the same @value{FN} or the same shell command is used with @code{getline}
+If the same file name or the same shell command is used with @code{getline}
more than once during the execution of an @command{awk} program
(@pxref{Getline}),
the file is opened (or the command is executed) the first time only.
@@ -9252,11 +9405,11 @@ The next time the same file or command is used with @code{getline},
another record is read from it, and so on.
Similarly, when a file or pipe is opened for output, @command{awk} remembers
-the @value{FN} or command associated with it, and subsequent
+the file name or command associated with it, and subsequent
writes to the same file or command are appended to the previous writes.
The file or pipe stays open until @command{awk} exits.
-@cindex @code{close()} function
+@cindexawkfunc{close}
This implies that special steps are necessary in order to read the same
file again from the beginning, or to rerun a shell command (rather than
reading more output from the same command). The @code{close()} function
@@ -9294,7 +9447,7 @@ file or command, or the next @code{print} or @code{printf} to that
file or command, reopens the file or reruns the command.
Because the expression that you use to close a file or pipeline must
exactly match the expression used to open the file or run the command,
-it is good practice to use a variable to store the @value{FN} or command.
+it is good practice to use a variable to store the file name or command.
The previous example becomes the following:
@example
@@ -9341,9 +9494,10 @@ a separate message.
@cindex differences in @command{awk} and @command{gawk}, @code{close()} function
@cindex portability, @code{close()} function and
+@cindex @code{close()} function, portability
If you use more files than the system allows you to have open,
@command{gawk} attempts to multiplex the available open files among
-your @value{DF}s. @command{gawk}'s ability to do this depends upon the
+your data files. @command{gawk}'s ability to do this depends upon the
facilities of your operating system, so it may not always work. It is
therefore both good practice and good portability advice to always
use @code{close()} on your files when you are done with them.
@@ -9425,7 +9579,7 @@ retval = close(command) # syntax error in many Unix awks
@end example
@cindex @command{gawk}, @code{ERRNO} variable in
-@cindex @code{ERRNO} variable
+@cindex @code{ERRNO} variable, with @command{close()} function
@command{gawk} treats @code{close()} as a function.
The return value is @minus{}1 if the argument names something
that was never opened with a redirection, or if there is
@@ -9481,7 +9635,7 @@ retval = close(command) # syntax error in many Unix awks
@end example
@cindex @command{gawk}, @code{ERRNO} variable in
-@cindex @code{ERRNO} variable
+@cindex @code{ERRNO} variable, with @command{close()} function
@command{gawk} treats @code{close()} as a function.
The return value is @minus{}1 if the argument names something
that was never opened with a redirection, or if there is
@@ -9560,6 +9714,8 @@ which provide the values used in expressions.
@node Constants
@subsection Constant Expressions
+
+@c STARTOFRANGE cnst
@cindex constants, types of
The simplest type of expression is the @dfn{constant}, which always has
@@ -9579,7 +9735,8 @@ have different forms, but are stored identically internally.
@node Scalar Constants
@subsubsection Numeric and String Constants
-@cindex numeric, constants
+@cindex constants, numeric
+@cindex numeric constants
A @dfn{numeric constant} stands for a number. This number can be an
integer, a decimal fraction, or a number in scientific (exponential)
notation.@footnote{The internal representation of all numbers,
@@ -9605,7 +9762,7 @@ double-quotation marks. For example:
@noindent
@cindex differences in @command{awk} and @command{gawk}, strings
-@cindex strings, length of
+@cindex strings, length limitations
represents the string whose contents are @samp{parrot}. Strings in
@command{gawk} can be of any length, and they can contain any of the possible
eight-bit ASCII characters including ASCII @sc{nul} (character code zero).
@@ -9821,9 +9978,9 @@ upon the contents of the current input record.
@cindex differences in @command{awk} and @command{gawk}, regexp constants
@cindex dark corner, regexp constants, as arguments to user-defined functions
-@cindex @code{gensub()} function (@command{gawk})
-@cindex @code{sub()} function
-@cindex @code{gsub()} function
+@cindexgawkfunc{gensub}
+@cindexawkfunc{sub}
+@cindexawkfunc{gsub}
Constant regular expressions are also used as the first argument for
the @code{gensub()}, @code{sub()}, and @code{gsub()} functions, as the
second argument of the @code{match()} function,
@@ -9934,7 +10091,7 @@ Such an assignment has the following form:
@var{variable}=@var{text}
@end example
-@cindex @code{-v} option
+@cindex @option{-v} option
@noindent
With it, a variable is set either at the beginning of the
@command{awk} run or in between input files.
@@ -9948,7 +10105,7 @@ as in the following:
@noindent
the variable is set at the very beginning, even before the
@code{BEGIN} rules execute. The @option{-v} option and its assignment
-must precede all the @value{FN} arguments, as well as the program text.
+must precede all the file name arguments, as well as the program text.
(@xref{Options}, for more information about
the @option{-v} option.)
Otherwise, the variable assignment is performed at a time determined by
@@ -9956,7 +10113,7 @@ its position among the input file arguments---after the processing of the
preceding input file argument. For example:
@example
-awk '@{ print $n @}' n=4 inventory-shipped n=2 BBS-list
+awk '@{ print $n @}' n=4 inventory-shipped n=2 mail-list
@end example
@noindent
@@ -9965,10 +10122,10 @@ the first file is read, the command line sets the variable @code{n}
equal to four. This causes the fourth field to be printed in lines from
@file{inventory-shipped}. After the first file has finished,
but before the second file is started, @code{n} is set to two, so that the
-second field is printed in lines from @file{BBS-list}:
+second field is printed in lines from @file{mail-list}:
@example
-$ @kbd{awk '@{ print $n @}' n=4 inventory-shipped n=2 BBS-list}
+$ @kbd{awk '@{ print $n @}' n=4 inventory-shipped n=2 mail-list}
@print{} 15
@print{} 24
@dots{}
@@ -10030,7 +10187,7 @@ with @code{CONVFMT} as the format
specifier
(@pxref{String Functions}).
-@code{CONVFMT}'s default value is @code{"%.6g"}, which prints a value with
+@code{CONVFMT}'s default value is @code{"%.6g"}, which creates a value with
at most six significant digits. For some applications, you might want to
change it to specify more precision.
On most modern machines,
@@ -10092,7 +10249,7 @@ point when reading the @command{awk} program source code, and for command-line
variable assignments (@pxref{Other Arguments}).
However, when interpreting input data, for @code{print} and @code{printf} output,
and for number to string conversion, the local decimal point character is used.
-@value{DARKCORNER}.
+@value{DARKCORNER}
Here are some examples indicating the difference in behavior,
on a GNU/Linux system:
@@ -10279,8 +10436,8 @@ For maximum portability, do not use the @samp{**} operator.
@subsection String Concatenation
@cindex Kernighan, Brian
@quotation
-@i{It seemed like a good idea at the time.}@*
-Brian Kernighan
+@i{It seemed like a good idea at the time.}
+@author Brian Kernighan
@end quotation
@cindex string operators
@@ -10291,9 +10448,9 @@ specific operator to represent it. Instead, concatenation is performed by
writing expressions next to one another, with no operator. For example:
@example
-$ @kbd{awk '@{ print "Field number one: " $1 @}' BBS-list}
-@print{} Field number one: aardvark
-@print{} Field number one: alpo-net
+$ @kbd{awk '@{ print "Field number one: " $1 @}' mail-list}
+@print{} Field number one: Amelia
+@print{} Field number one: Anthony
@dots{}
@end example
@@ -10301,9 +10458,9 @@ Without the space in the string constant after the @samp{:}, the line
runs together. For example:
@example
-$ @kbd{awk '@{ print "Field number one:" $1 @}' BBS-list}
-@print{} Field number one:aardvark
-@print{} Field number one:alpo-net
+$ @kbd{awk '@{ print "Field number one:" $1 @}' mail-list}
+@print{} Field number one:Amelia
+@print{} Field number one:Anthony
@dots{}
@end example
@@ -10320,6 +10477,8 @@ name = "name"
print "something meaningful" > file name
@end example
+@cindex Brian Kernighan's @command{awk}
+@cindex @command{mawk} utility
@noindent
This produces a syntax error with some versions of Unix
@command{awk}.@footnote{It happens that Brian Kernighan's
@@ -10765,6 +10924,7 @@ just like variables. (Use @samp{$(i++)} when you want to do a field reference
and a variable increment at the same time. The parentheses are necessary
because of the precedence of the field reference operator @samp{$}.)
+@c STARTOFRANGE deop
@cindex decrement operators
The decrement operator @samp{--} works just like @samp{++}, except that
it subtracts one instead of adding it. As with @samp{++}, it can be used before
@@ -10810,8 +10970,8 @@ like @samp{@var{lvalue}++}, but instead of adding, it subtracts.)
@cindex Marx, Groucho
@quotation
@i{Doctor, doctor! It hurts when I do this!@*
-So don't do that!}@*
-Groucho Marx
+So don't do that!}
+@author Groucho Marx
@end quotation
@noindent
@@ -10862,8 +11022,8 @@ You should avoid such things in your own programs.
@cindex Marx, Groucho
@quotation
@i{Doctor, doctor! It hurts when I do this!@*
-So don't do that!}@*
-Groucho Marx
+So don't do that!}
+@author Groucho Marx
@end quotation
@noindent
@@ -10961,8 +11121,8 @@ the string constant @code{"0"} is actually true, because it is non-null.
@node Typing and Comparison
@subsection Variable Typing and Comparison Expressions
@quotation
-@i{The Guide is definitive. Reality is frequently inaccurate.}@*
-The Hitchhiker's Guide to the Galaxy
+@i{The Guide is definitive. Reality is frequently inaccurate.}
+@author The Hitchhiker's Guide to the Galaxy
@end quotation
@c STARTOFRANGE comex
@@ -11241,7 +11401,7 @@ string comparison (true)
string comparison (true)
@item a = 2; b = " +2"
-@item a == b
+@itemx a == b
string comparison (false)
@end table
@@ -11375,10 +11535,10 @@ The Boolean operators are:
@item @var{boolean1} && @var{boolean2}
True if both @var{boolean1} and @var{boolean2} are true. For example,
the following statement prints the current input record if it contains
-both @samp{2400} and @samp{foo}:
+both @samp{edu} and @samp{li}:
@example
-if ($0 ~ /2400/ && $0 ~ /foo/) print
+if ($0 ~ /edu/ && $0 ~ /li/) print
@end example
@cindex side effects, Boolean operators
@@ -11391,11 +11551,11 @@ no substring @samp{foo} in the record.
@item @var{boolean1} || @var{boolean2}
True if at least one of @var{boolean1} or @var{boolean2} is true.
For example, the following statement prints all records in the input
-that contain @emph{either} @samp{2400} or
-@samp{foo} or both:
+that contain @emph{either} @samp{edu} or
+@samp{li} or both:
@example
-if ($0 ~ /2400/ || $0 ~ /foo/) print
+if ($0 ~ /edu/ || $0 ~ /li/) print
@end example
The subexpression @var{boolean2} is evaluated only if @var{boolean1}
@@ -11620,7 +11780,7 @@ $ @kbd{awk '@{ print "The square root of", $1, "is", sqrt($1) @}'}
@print{} The square root of 3 is 1.73205
@kbd{5}
@print{} The square root of 5 is 2.23607
-@kbd{@value{CTL}-d}
+@kbd{Ctrl-d}
@end example
A function can also have side effects, such as assigning
@@ -11990,7 +12150,7 @@ slashes (@code{/@var{regexp}/}), or any expression whose string value
is used as a dynamic regular expression
(@pxref{Computed Regexps}).
The following example prints the second field of each input record
-whose first field is precisely @samp{foo}:
+whose first field is precisely @samp{li}:
@cindex @code{/} (forward slash), patterns and
@cindex forward slash (@code{/}), patterns and
@@ -11999,68 +12159,65 @@ whose first field is precisely @samp{foo}:
@cindex @code{!} (exclamation point), @code{!~} operator
@cindex exclamation point (@code{!}), @code{!~} operator
@example
-$ @kbd{awk '$1 == "foo" @{ print $2 @}' BBS-list}
+$ @kbd{awk '$1 == "li" @{ print $2 @}' mail-list}
@end example
@noindent
-(There is no output, because there is no BBS site with the exact name @samp{foo}.)
+(There is no output, because there is no person with the exact name @samp{li}.)
Contrast this with the following regular expression match, which
-accepts any record with a first field that contains @samp{foo}:
+accepts any record with a first field that contains @samp{li}:
@example
-$ @kbd{awk '$1 ~ /foo/ @{ print $2 @}' BBS-list}
-@print{} 555-1234
+$ @kbd{awk '$1 ~ /foo/ @{ print $2 @}' mail-list}
+@print{} 555-5553
@print{} 555-6699
-@print{} 555-6480
-@print{} 555-2127
@end example
@cindex regexp constants, as patterns
@cindex patterns, regexp constants as
A regexp constant as a pattern is also a special case of an expression
-pattern. The expression @code{/foo/} has the value one if @samp{foo}
-appears in the current input record. Thus, as a pattern, @code{/foo/}
-matches any record containing @samp{foo}.
+pattern. The expression @code{/li/} has the value one if @samp{li}
+appears in the current input record. Thus, as a pattern, @code{/li/}
+matches any record containing @samp{li}.
@cindex Boolean expressions, as patterns
Boolean expressions are also commonly used as patterns.
Whether the pattern
matches an input record depends on whether its subexpressions match.
For example, the following command prints all the records in
-@file{BBS-list} that contain both @samp{2400} and @samp{foo}:
+@file{mail-list} that contain both @samp{edu} and @samp{li}:
@example
-$ @kbd{awk '/2400/ && /foo/' BBS-list}
-@print{} fooey 555-1234 2400/1200/300 B
+$ @kbd{awk '/edu/ && /li/' mail-list}
+@print{} Samuel 555-3430 samuel.lanceolis@@shu.edu A
@end example
The following command prints all records in
-@file{BBS-list} that contain @emph{either} @samp{2400} or @samp{foo}
+@file{mail-list} that contain @emph{either} @samp{edu} or @samp{li}
(or both, of course):
@example
-$ @kbd{awk '/2400/ || /foo/' BBS-list}
-@print{} alpo-net 555-3412 2400/1200/300 A
-@print{} bites 555-1675 2400/1200/300 A
-@print{} fooey 555-1234 2400/1200/300 B
-@print{} foot 555-6699 1200/300 B
-@print{} macfoo 555-6480 1200/300 A
-@print{} sdace 555-3430 2400/1200/300 A
-@print{} sabafoo 555-2127 1200/300 C
+$ @kbd{awk '/edu/ || /li/' mail-list}
+@print{} Amelia 555-5553 amelia.zodiacusque@@gmail.com F
+@print{} Broderick 555-0542 broderick.aliquotiens@@yahoo.com R
+@print{} Fabius 555-1234 fabius.undevicesimus@@ucb.edu F
+@print{} Julie 555-6699 julie.perscrutabor@@skeeve.com F
+@print{} Samuel 555-3430 samuel.lanceolis@@shu.edu A
+@print{} Jean-Paul 555-2127 jeanpaul.campanorum@@nyu.edu R
@end example
The following command prints all records in
-@file{BBS-list} that do @emph{not} contain the string @samp{foo}:
+@file{mail-list} that do @emph{not} contain the string @samp{li}:
@example
-$ @kbd{awk '! /foo/' BBS-list}
-@print{} aardvark 555-5553 1200/300 B
-@print{} alpo-net 555-3412 2400/1200/300 A
-@print{} barfly 555-7685 1200/300 A
-@print{} bites 555-1675 2400/1200/300 A
-@print{} camelot 555-0542 300 C
-@print{} core 555-2912 1200/300 C
-@print{} sdace 555-3430 2400/1200/300 A
+$ @kbd{awk '! /li/' mail-list}
+@print{} Anthony 555-3412 anthony.asserturo@@hotmail.com A
+@print{} Becky 555-7685 becky.algebrarum@@gmail.com A
+@print{} Bill 555-1675 bill.drowning@@hotmail.com A
+@print{} Camilla 555-2912 camilla.infusarum@@skynet.be R
+@print{} Fabius 555-1234 fabius.undevicesimus@@ucb.edu F
+@print{} Martin 555-6480 martin.codicibus@@hotmail.com A
+@print{} Jean-Paul 555-2127 jeanpaul.campanorum@@nyu.edu R
@end example
@cindex @code{BEGIN} pattern, Boolean patterns and
@@ -12164,6 +12321,11 @@ $ @kbd{echo Yes | gawk '(/1/,/2/) || /Yes/'}
@error{} gawk: cmd. line:1: ^ syntax error
@end example
+@cindex range patterns, line continuation and
+As a minor point of interest, although it is poor style,
+POSIX allows you to put a newline after the comma in
+a range pattern. @value{DARKCORNER}
+
@node BEGIN/END
@subsection The @code{BEGIN} and @code{END} Special Patterns
@@ -12188,28 +12350,30 @@ programmers.
@node Using BEGIN/END
@subsubsection Startup and Cleanup Actions
+@cindex @code{BEGIN} pattern
+@cindex @code{END} pattern
A @code{BEGIN} rule is executed once only, before the first input record
is read. Likewise, an @code{END} rule is executed once only, after all the
input is read. For example:
@example
$ @kbd{awk '}
-> @kbd{BEGIN @{ print "Analysis of \"foo\"" @}}
-> @kbd{/foo/ @{ ++n @}}
-> @kbd{END @{ print "\"foo\" appears", n, "times." @}' BBS-list}
-@print{} Analysis of "foo"
-@print{} "foo" appears 4 times.
+> @kbd{BEGIN @{ print "Analysis of \"li\"" @}}
+> @kbd{/li/ @{ ++n @}}
+> @kbd{END @{ print "\"li\" appears in", n, "records." @}' mail-list}
+@print{} Analysis of "li"
+@print{} "li" appears in 4 records.
@end example
@cindex @code{BEGIN} pattern, operators and
@cindex @code{END} pattern, operators and
-This program finds the number of records in the input file @file{BBS-list}
-that contain the string @samp{foo}. The @code{BEGIN} rule prints a title
+This program finds the number of records in the input file @file{mail-list}
+that contain the string @samp{li}. The @code{BEGIN} rule prints a title
for the report. There is no need to use the @code{BEGIN} rule to
initialize the counter @code{n} to zero, since @command{awk} does this
automatically (@pxref{Variables}).
The second rule increments the variable @code{n} every time a
-record containing the pattern @samp{foo} is read. The @code{END} rule
+record containing the pattern @samp{li} is read. The @code{END} rule
prints the value of @code{n} at the end of the run.
The special patterns @code{BEGIN} and @code{END} cannot be used in ranges
@@ -12262,6 +12426,7 @@ to give @code{$0} a real value is to execute a @code{getline} command
without a variable (@pxref{Getline}).
Another way is simply to assign a value to @code{$0}.
+@cindex Brian Kernighan's @command{awk}
@cindex differences in @command{awk} and @command{gawk}, @code{BEGIN}/@code{END} patterns
@cindex POSIX @command{awk}, @code{BEGIN}/@code{END} patterns
@cindex @code{print} statement, @code{BEGIN}/@code{END} patterns and
@@ -12330,7 +12495,7 @@ you can bypass the fatal error and move on to the next file on the
command line.
@cindex @command{gawk}, @code{ERRNO} variable in
-@cindex @code{ERRNO} variable
+@cindex @code{ERRNO} variable, with @code{BEGINFILE} pattern
@cindex @code{nextfile} statement, @code{BEGINFILE}/@code{ENDFILE} patterns and
You do this by checking if the @code{ERRNO} variable is not the empty
string; if so, then @command{gawk} was not able to open the file. In
@@ -12372,7 +12537,7 @@ both @code{BEGINFILE} and @code{ENDFILE}. Only the @samp{getline
In most other @command{awk} implementations, or if @command{gawk} is in
compatibility mode (@pxref{Options}), they are not special.
-@c FIXME: For 4.1 maybe deal with this?
+@c FIXME: For 4.2 maybe deal with this?
@ignore
Date: Tue, 17 May 2011 02:06:10 PDT
From: rankin@pactechdata.com (Pat Rankin)
@@ -12403,7 +12568,7 @@ An empty (i.e., nonexistent) pattern is considered to match @emph{every}
input record. For example, the program:
@example
-awk '@{ print $1 @}' BBS-list
+awk '@{ print $1 @}' mail-list
@end example
@noindent
@@ -12656,6 +12821,7 @@ the first thing on its line.
@subsection The @code{while} Statement
@cindex @code{while} statement
@cindex loops
+@cindex loops, @code{while}
@cindex loops, See Also @code{while} statement
In programming, a @dfn{loop} is a part of a program that can
@@ -12716,6 +12882,7 @@ program is harder to read without it.
@node Do Statement
@subsection The @code{do}-@code{while} Statement
@cindex @code{do}-@code{while} statement
+@cindex loops, @code{do}-@code{while}
The @code{do} loop is a variation of the @code{while} looping statement.
The @code{do} loop executes the @var{body} once and then repeats the
@@ -12761,6 +12928,7 @@ occasionally is there a real use for a @code{do} statement.
@node For Statement
@subsection The @code{for} Statement
@cindex @code{for} statement
+@cindex loops, @code{for}, iterative
The @code{for} statement makes it more convenient to count iterations of a
loop. The general form of the @code{for} statement looks like this:
@@ -12867,6 +13035,8 @@ for more information on this version of the @code{for} loop.
@cindex @code{case} keyword
@cindex @code{default} keyword
+This @value{SECTION} describes a @command{gawk}-specific feature.
+
The @code{switch} statement allows the evaluation of an expression and
the execution of statements based on a @code{case} match. Case statements
are checked for a match in the order they are defined. If no suitable
@@ -12931,6 +13101,7 @@ it is not available.
@subsection The @code{break} Statement
@cindex @code{break} statement
@cindex loops, exiting
+@cindex loops, @code{break} statement and
The @code{break} statement jumps out of the innermost @code{for},
@code{while}, or @code{do} loop that encloses it. The following example
@@ -12990,6 +13161,7 @@ This is discussed in @ref{Switch Statement}.
@cindex POSIX @command{awk}, @code{break} statement and
@cindex dark corner, @code{break} statement
@cindex @command{gawk}, @code{break} statement in
+@cindex Brian Kernighan's @command{awk}
The @code{break} statement has no meaning when
used outside the body of a loop or @code{switch}.
However, although it was never documented,
@@ -13054,6 +13226,7 @@ This program loops forever once @code{x} reaches 5.
@cindex POSIX @command{awk}, @code{continue} statement and
@cindex dark corner, @code{continue} statement
@cindex @command{gawk}, @code{continue} statement in
+@cindex Brian Kernighan's @command{awk}
The @code{continue} statement has no special meaning with respect to the
@code{switch} statement, nor does it have any meaning when used outside the
body of a loop. Historical versions of @command{awk} treated a @code{continue}
@@ -13142,11 +13315,11 @@ The @code{nextfile} statement
is similar to the @code{next} statement.
However, instead of abandoning processing of the current record, the
@code{nextfile} statement instructs @command{awk} to stop processing the
-current @value{DF}.
+current data file.
Upon execution of the @code{nextfile} statement,
@code{FILENAME} is
-updated to the name of the next @value{DF} listed on the command line,
+updated to the name of the next data file listed on the command line,
@code{FNR} is reset to one,
and processing
starts over with the first rule in the program.
@@ -13155,10 +13328,10 @@ then the code in any @code{END} rules is executed. An exception to this is
when @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
+The @code{nextfile} statement is useful when there are many data files
to process but it isn't necessary to process every record in every file.
Without @code{nextfile},
-in order to move on to the next @value{DF}, a program
+in order to move on to the next data file, a program
would have to continue scanning the unwanted records. The @code{nextfile}
statement accomplishes this much more efficiently.
@@ -13191,8 +13364,10 @@ See @uref{http://austingroupbugs.net/view.php?id=607, the Austin Group website}.
@cindex functions, user-defined, @code{next}/@code{nextfile} statements and
@cindex @code{nextfile} statement, user-defined functions and
-The current version of the Brian Kernighan's @command{awk} (@pxref{Other
-Versions}) also supports @code{nextfile}. However, it doesn't allow the
+@cindex Brian Kernighan's @command{awk}
+@cindex @command{mawk} utility
+The current version of the Brian Kernighan's @command{awk}, and @command{mawk} (@pxref{Other
+Versions}) also support @code{nextfile}. However, they don't allow the
@code{nextfile} statement inside function bodies (@pxref{User-defined}).
@command{gawk} does; a @code{nextfile} inside a function body reads the
next record and starts processing it with the first rule in the program,
@@ -13396,7 +13571,7 @@ exclusively on the value of @code{FS}.
@item FS
This is the input field separator
(@pxref{Field Separators}).
-The value is a single-character string or a multi-character regular
+The value is a single-character string or a multicharacter regular
expression that matches the separations between fields in an input
record. If the value is the null string (@code{""}), then each
character in the record becomes a separate field.
@@ -13429,8 +13604,8 @@ is to simply say @samp{FS = FS}, perhaps with an explanatory comment.
@cindex @command{gawk}, @code{IGNORECASE} variable in
@cindex @code{IGNORECASE} variable
@cindex differences in @command{awk} and @command{gawk}, @code{IGNORECASE} variable
-@cindex case sensitivity, string comparisons and
-@cindex case sensitivity, regexps and
+@cindex case sensitivity, and string comparisons
+@cindex case sensitivity, and regexps
@cindex regular expressions, case sensitivity
@item IGNORECASE #
If @code{IGNORECASE} is nonzero or non-null, then all string comparisons
@@ -13542,7 +13717,7 @@ This is the subscript separator. It has the default value of
@code{"\034"} and is used to separate the parts of the indices of a
multidimensional array. Thus, the expression @code{@w{foo["A", "B"]}}
really accesses @code{foo["A\034B"]}
-(@pxref{Multi-dimensional}).
+(@pxref{Multidimensional}).
@cindex @command{gawk}, @code{TEXTDOMAIN} variable in
@cindex @code{TEXTDOMAIN} variable
@@ -13595,16 +13770,16 @@ In the following example:
$ @kbd{awk 'BEGIN @{}
> @kbd{for (i = 0; i < ARGC; i++)}
> @kbd{print ARGV[i]}
-> @kbd{@}' inventory-shipped BBS-list}
+> @kbd{@}' inventory-shipped mail-list}
@print{} awk
@print{} inventory-shipped
-@print{} BBS-list
+@print{} mail-list
@end example
@noindent
@code{ARGV[0]} contains @samp{awk}, @code{ARGV[1]}
contains @samp{inventory-shipped}, and @code{ARGV[2]} contains
-@samp{BBS-list}. The value of @code{ARGC} is three, one more than the
+@samp{mail-list}. The value of @code{ARGC} is three, one more than the
index of the last element in @code{ARGV}, because the elements are numbered
from zero.
@@ -13625,17 +13800,17 @@ about how @command{awk} uses these variables.
@cindex differences in @command{awk} and @command{gawk}, @code{ARGIND} variable
@item ARGIND #
The index in @code{ARGV} of the current file being processed.
-Every time @command{gawk} opens a new @value{DF} for processing, it sets
-@code{ARGIND} to the index in @code{ARGV} of the @value{FN}.
+Every time @command{gawk} opens a new data file for processing, it sets
+@code{ARGIND} to the index in @code{ARGV} of the file name.
When @command{gawk} is processing the input files,
@samp{FILENAME == ARGV[ARGIND]} is always true.
@cindex files, processing@comma{} @code{ARGIND} variable and
This variable is useful in file processing; it allows you to tell how far
-along you are in the list of @value{DF}s as well as to distinguish between
-successive instances of the same @value{FN} on the command line.
+along you are in the list of data files as well as to distinguish between
+successive instances of the same file name on the command line.
-@cindex @value{FN}s, distinguishing
+@cindex file names, distinguishing
While you can change the value of @code{ARGIND} within your @command{awk}
program, @command{gawk} automatically sets it to a new value when the
next file is opened.
@@ -13647,15 +13822,23 @@ or if @command{gawk} is in compatibility mode
it is not special.
@cindex @code{ENVIRON} array
-@cindex environment variables
+@cindex environment variables, in @code{ENVIRON} array
@item ENVIRON
An associative array containing the values of the environment. The array
indices are the environment variable names; the elements are the values of
the particular environment variables. For example,
-@code{ENVIRON["HOME"]} might be @file{/home/arnold}. Changing this array
-does not affect the environment passed on to any programs that
-@command{awk} may spawn via redirection or the @code{system()} function.
-@c (In a future version of @command{gawk}, it may do so.)
+@code{ENVIRON["HOME"]} might be @file{/home/arnold}.
+
+For POSIX @command{awk}, changing this array does not affect the
+environment passed on to any programs that @command{awk} may spawn via
+redirection or the @code{system()} function.
+
+However, beginning with version 4.2, if not in POSIX
+compatibility mode, @command{gawk} does update its own environment when
+@code{ENVIRON} is changed, thus changing the environment seen by programs
+that it creates. You should therefore be especially careful if you
+modify @code{ENVIRON["PATH"]"}, which is the search path for finding
+executable programs.
Some operating systems may not have environment variables.
On such systems, the @code{ENVIRON} array is empty (except for
@@ -13697,14 +13880,14 @@ it is not special.
@cindex dark corner, @code{FILENAME} variable
@item FILENAME
The name of the file that @command{awk} is currently reading.
-When no @value{DF}s are listed on the command line, @command{awk} reads
+When no data files are listed on the command line, @command{awk} reads
from the standard input and @code{FILENAME} is set to @code{"-"}.
@code{FILENAME} is changed each time a new file is read
(@pxref{Reading Files}).
Inside a @code{BEGIN} rule, the value of @code{FILENAME} is
@code{""}, since there are no input files being processed
yet.@footnote{Some early implementations of Unix @command{awk} initialized
-@code{FILENAME} to @code{"-"}, even if there were @value{DF}s to be
+@code{FILENAME} to @code{"-"}, even if there were data files to be
processed. This behavior was incorrect and should not be relied
upon in your programs.}
@value{DARKCORNER}
@@ -13726,13 +13909,7 @@ The number of fields in the current input record.
@code{NF} is set each time a new record is read, when a new field is
created or when @code{$0} changes (@pxref{Fields}).
-Unlike most of the variables described in this
-@ifnotinfo
-section,
-@end ifnotinfo
-@ifinfo
-node,
-@end ifinfo
+Unlike most of the variables described in this @value{SUBSECTION},
assigning a value to @code{NF} has the potential to affect
@command{awk}'s internal workings. In particular, assignments
to @code{NF} can be used to create or remove fields from the
@@ -13768,10 +13945,12 @@ The following elements (listed alphabetically)
are guaranteed to be available:
@table @code
+@cindex effective group ID of @command{gawk} user
@item PROCINFO["egid"]
The value of the @code{getegid()} system call.
@item PROCINFO["euid"]
+@cindex effective user ID of @command{gawk} user
The value of the @code{geteuid()} system call.
@item PROCINFO["FS"]
@@ -13781,6 +13960,7 @@ This is
or @code{"FPAT"} if field matching with @code{FPAT} is in effect.
@item PROCINFO["identifiers"]
+@cindex program identifiers
A subarray, indexed by the names of all identifiers used in the
text of the AWK program. For each identifier, the value of the element is one of the following:
@@ -13809,15 +13989,19 @@ after it has finished parsing the program; they are @emph{not} updated
while the program runs.
@item PROCINFO["gid"]
+@cindex group ID of @command{gawk} user
The value of the @code{getgid()} system call.
@item PROCINFO["pgrpid"]
+@cindex process group idIDof @command{gawk} process
The process group ID of the current process.
@item PROCINFO["pid"]
+@cindex process ID of @command{gawk} process
The process ID of the current process.
@item PROCINFO["ppid"]
+@cindex parent process ID of @command{gawk} process
The parent process ID of the current process.
@item PROCINFO["sorted_in"]
@@ -13837,25 +14021,31 @@ Assigning a new value to this element changes the default.
The value of the @code{getuid()} system call.
@item PROCINFO["version"]
+@cindex version of @command{gawk}
+@cindex @command{gawk} version
The version of @command{gawk}.
@end table
The following additional elements in the array
are available to provide information about the MPFR and GMP libraries
if your version of @command{gawk} supports arbitrary precision numbers
-(@pxref{Arbitrary Precision Arithmetic}):
+(@pxref{Gawk and MPFR}):
@table @code
+@cindex version of GNU MPFR library
@item PROCINFO["mpfr_version"]
The version of the GNU MPFR library.
@item PROCINFO["gmp_version"]
+@cindex version of GNU MP library
The version of the GNU MP library.
@item PROCINFO["prec_max"]
+@cindex maximum precision supported by MPFR library
The maximum precision supported by MPFR.
@item PROCINFO["prec_min"]
+@cindex minimum precision supported by MPFR library
The minimum precision required by MPFR.
@end table
@@ -13866,12 +14056,15 @@ of @command{gawk} supports dynamic loading of extension functions
@table @code
@item PROCINFO["api_major"]
+@cindex version of @command{gawk} extension API
+@cindex extension API, version number
The major version of the extension API.
@item PROCINFO["api_minor"]
The minor version of the extension API.
@end table
+@cindex supplementary groups of @command{gawk} process
On some systems, there may be elements in the array, @code{"group1"}
through @code{"group@var{N}"} for some @var{N}. @var{N} is the number of
supplementary groups that the process has. Use the @code{in} operator
@@ -13879,7 +14072,7 @@ to test for these elements
(@pxref{Reference to Elements}).
@cindex @command{gawk}, @code{PROCINFO} array in
-@cindex @code{PROCINFO} array
+@cindex @code{PROCINFO} array, uses
The @code{PROCINFO} array has the following additional uses:
@itemize @bullet
@@ -13951,7 +14144,7 @@ if an element in @code{SYMTAB} is an array.
Also, you may not use the @code{delete} statement with the
@code{SYMTAB} array.
-You may use an index for @code{SYMTAB} that is not a predefined identifer:
+You may use an index for @code{SYMTAB} that is not a predefined identifier:
@example
SYMTAB["xxx"] = 5
@@ -14065,7 +14258,7 @@ changed.
@node ARGC and ARGV
@subsection Using @code{ARGC} and @code{ARGV}
-@cindex @code{ARGC}/@code{ARGV} variables
+@cindex @code{ARGC}/@code{ARGV} variables, how to use
@cindex arguments, command-line
@cindex command line, arguments
@@ -14077,16 +14270,16 @@ and @code{ARGV}:
$ @kbd{awk 'BEGIN @{}
> @kbd{for (i = 0; i < ARGC; i++)}
> @kbd{print ARGV[i]}
-> @kbd{@}' inventory-shipped BBS-list}
+> @kbd{@}' inventory-shipped mail-list}
@print{} awk
@print{} inventory-shipped
-@print{} BBS-list
+@print{} mail-list
@end example
@noindent
In this example, @code{ARGV[0]} contains @samp{awk}, @code{ARGV[1]}
contains @samp{inventory-shipped}, and @code{ARGV[2]} contains
-@samp{BBS-list}.
+@samp{mail-list}.
Notice that the @command{awk} program is not entered in @code{ARGV}. The
other command-line options, with their arguments, are also not
entered. This includes variable assignments done with the @option{-v}
@@ -14127,11 +14320,11 @@ additional files to be read.
If the value of @code{ARGC} is decreased, that eliminates input files
from the end of the list. By recording the old value of @code{ARGC}
elsewhere, a program can treat the eliminated arguments as
-something other than @value{FN}s.
+something other than file names.
To eliminate a file from the middle of the list, store the null string
(@code{""}) into @code{ARGV} in place of the file's name. As a
-special feature, @command{awk} ignores @value{FN}s that have been
+special feature, @command{awk} ignores file names that have been
replaced with the null string.
Another option is to
use the @code{delete} statement to remove elements from
@@ -14210,7 +14403,7 @@ ability to support true multidimensional arrays.
@cindex variables, names of
@cindex functions, names of
-@cindex arrays, names of
+@cindex arrays, names of, and names of functions/variables
@cindex names, arrays/variables
@cindex namespace issues
@command{awk} maintains a single set
@@ -14226,7 +14419,7 @@ same @command{awk} program.
* 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
+* Multidimensional:: Emulating multidimensional arrays in
@command{awk}.
* Arrays of Arrays:: True multidimensional arrays.
@end menu
@@ -14256,8 +14449,8 @@ an array.
@cindex Wall, Larry
@quotation
@i{Doing linear scans over an associative array is like trying to club someone
-to death with a loaded Uzi.}@*
-Larry Wall
+to death with a loaded Uzi.}
+@author Larry Wall
@end quotation
The @command{awk} language provides one-dimensional arrays
@@ -14386,10 +14579,9 @@ Here, the number @code{1} isn't double-quoted, since @command{awk}
automatically converts it to a string.
@cindex @command{gawk}, @code{IGNORECASE} variable in
-@cindex @code{IGNORECASE} variable
@cindex case sensitivity, array indices and
-@cindex arrays, @code{IGNORECASE} variable and
-@cindex @code{IGNORECASE} variable, array subscripts and
+@cindex arrays, and @code{IGNORECASE} variable
+@cindex @code{IGNORECASE} variable, and array indices
The value of @code{IGNORECASE} has no effect upon array subscripting.
The identical string value used to store an array element must be used
to retrieve it.
@@ -14405,8 +14597,9 @@ is independent of the number of elements in the array.
@node Reference to Elements
@subsection Referring to an Array Element
-@cindex arrays, elements, referencing
-@cindex elements in arrays
+@cindex arrays, referencing elements
+@cindex array members
+@cindex elements of arrays
The principal way to use an array is to refer to one of its elements.
An array reference is an expression as follows:
@@ -14423,11 +14616,16 @@ The value of the array reference is the current value of that array
element. For example, @code{foo[4.3]} is an expression for the element
of array @code{foo} at index @samp{4.3}.
+@cindex arrays, unassigned elements
+@cindex unassigned array elements
+@cindex empty array elements
A reference to an array element that has no recorded value yields a value of
@code{""}, the null string. This includes elements
that have not been assigned any value as well as elements that have been
deleted (@pxref{Delete}).
+@cindex non-existent array elements
+@cindex arrays, elements that don't exist
@quotation NOTE
A reference to an element that does not exist @emph{automatically} creates
that array element, with the null string as its value. (In some cases,
@@ -14447,7 +14645,7 @@ if it didn't exist before!
@end quotation
@c @cindex arrays, @code{in} operator and
-@cindex @code{in} operator
+@cindex @code{in} operator, testing if array element exists
To determine whether an element exists in an array at a certain index, use
the following expression:
@@ -14482,8 +14680,8 @@ if (frequencies[2] != "")
@node Assigning Elements
@subsection Assigning Array Elements
-@cindex arrays, elements, assigning
-@cindex elements in arrays, assigning
+@cindex arrays, elements, assigning values
+@cindex elements in arrays, assigning values
Array elements can be assigned values just like
@command{awk} variables:
@@ -14500,6 +14698,7 @@ assign to that element of the array.
@node Array Example
@subsection Basic Array Example
+@cindex arrays, an example of using
The following program takes a list of lines, each beginning with a line
number, and prints them out in order of line number. The line numbers
@@ -14569,7 +14768,9 @@ END @{
@node Scanning an Array
@subsection Scanning All Elements of an Array
@cindex elements in arrays, scanning
+@cindex scanning arrays
@cindex arrays, scanning
+@cindex loops, @code{for}, array scanning
In programs that use arrays, it is often necessary to use a loop that
executes once for each element of an array. In other languages, where
@@ -14586,7 +14787,7 @@ for (@var{var} in @var{array})
@end example
@noindent
-@cindex @code{in} operator
+@cindex @code{in} operator, use in loops
This loop executes @var{body} once for each index in @var{array} that the
program has previously used, with the variable @var{var} set to that index.
@@ -14625,8 +14826,9 @@ END @{
@xref{Word Sorting},
for a more detailed example of this type.
-@cindex arrays, elements, order of
-@cindex elements in arrays, order of
+@cindex arrays, elements, order of access by @code{in} operator
+@cindex elements in arrays, order of access by @code{in} operator
+@cindex @code{in} operator, order of array access
The order in which elements of the array are accessed by this statement
is determined by the internal arrangement of the array elements within
@command{awk} and normally cannot be controlled or changed. This can lead to
@@ -14644,6 +14846,8 @@ determines the order in which the array is traversed.
This order is usually based on the internal implementation of arrays
and will vary from one version of @command{awk} to the next.
+@cindex array scanning order, controlling
+@cindex controlling array scanning order
Often, though, you may wish to do something simple, such as
``traverse the array by comparing the indices in ascending order,''
or ``traverse the array by comparing the values in descending order.''
@@ -14660,6 +14864,7 @@ to use for comparison of array elements. This advanced feature
is described later, in @ref{Array Sorting}.
@end itemize
+@cindex @code{PROCINFO}, values of @code{sorted_in}
The following special values for @code{PROCINFO["sorted_in"]} are available:
@table @code
@@ -14668,29 +14873,29 @@ 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.
+Order by indices in ascending order 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.
+Order by indices in ascending order 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.
+Order by element values in ascending order (rather than by 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}).
+@pxref{Arrays of Arrays}.)
@item "@@val_str_asc"
-Order by element values rather than by indices. Scalar values are
+Order by element values in ascending order (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
+Order by element values in ascending order (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
@@ -14703,13 +14908,14 @@ across different environments.} which @command{gawk} uses internally
to perform the sorting.
@item "@@ind_str_desc"
-Reverse order from the most basic sort.
+String indices ordered from high to low.
@item "@@ind_num_desc"
Numeric indices ordered from high to low.
@item "@@val_type_desc"
-Element values, based on type, in descending order.
+Element values, based on type, ordered from high to low.
+Subarrays, if present, come out first.
@item "@@val_str_desc"
Element values, treated as strings, ordered from high to low.
@@ -14819,7 +15025,7 @@ if (4 in foo)
print "This will never be printed"
@end example
-@cindex null strings, array elements and
+@cindex null strings, and deleting array elements
It is important to note that deleting an element is @emph{not} the
same as assigning it a null value (the empty string, @code{""}).
For example:
@@ -14841,6 +15047,7 @@ is not in the array is deleted.
@cindex extensions, common@comma{} @code{delete} to delete entire arrays
@cindex arrays, deleting entire contents
@cindex deleting entire arrays
+@cindex @code{delete} @var{array}
@cindex differences in @command{awk} and @command{gawk}, array elements, deleting
All the elements of an array may be deleted with a single statement
by leaving off the subscript in the @code{delete} statement,
@@ -14855,6 +15062,7 @@ Using this version of the @code{delete} statement is about three times
more efficient than the equivalent loop that deletes each element one
at a time.
+@cindex Brian Kernighan's @command{awk}
@quotation NOTE
For many years,
using @code{delete} without a subscript was a @command{gawk} extension.
@@ -14897,9 +15105,9 @@ a = 3
@section Using Numbers to Subscript Arrays
@cindex numbers, as array subscripts
-@cindex arrays, subscripts
+@cindex arrays, numeric subscripts
@cindex subscripts in arrays, numbers as
-@cindex @code{CONVFMT} variable, array subscripts and
+@cindex @code{CONVFMT} variable, and array subscripts
An important aspect to remember about arrays is that @emph{array subscripts
are always strings}. When a numeric value is used as a subscript,
it is converted to a string value before being used for subscripting
@@ -14929,7 +15137,8 @@ string value from @code{xyz}---this time @code{"12.15"}---because the value of
@code{CONVFMT} only allows two significant digits. This test fails,
since @code{"12.15"} is different from @code{"12.153"}.
-@cindex converting, during subscripting
+@cindex converting integer array subscripts
+@cindex integer array indices
According to the rules for conversions
(@pxref{Conversion}), integer
values are always converted to strings as integers, no matter what the
@@ -15019,11 +15228,11 @@ Even though it is somewhat unusual, the null string
if @option{--lint} is provided
on the command line (@pxref{Options}).
-@node Multi-dimensional
+@node Multidimensional
@section Multidimensional Arrays
@menu
-* Multi-scanning:: Scanning multidimensional arrays.
+* Multiscanning:: Scanning multidimensional arrays.
@end menu
@cindex subscripts in arrays, multidimensional
@@ -15035,7 +15244,7 @@ languages, including @command{awk}) to refer to an element of a
two-dimensional array named @code{grid} is with
@code{grid[@var{x},@var{y}]}.
-@cindex @code{SUBSEP} variable, multidimensional arrays
+@cindex @code{SUBSEP} variable, and multidimensional arrays
Multidimensional arrays are supported in @command{awk} through
concatenation of indices into one string.
@command{awk} converts the indices into strings
@@ -15067,6 +15276,7 @@ combined strings that are ambiguous. Suppose that @code{SUBSEP} is
"b@@c"]}} are indistinguishable because both are actually
stored as @samp{foo["a@@b@@c"]}.
+@cindex @code{in} operator, index existence in multidimensional arrays
To test whether a particular index sequence exists in a
multidimensional array, use the same operator (@code{in}) that is
used for single dimensional arrays. Write the whole sequence of indices
@@ -15121,7 +15331,7 @@ the program produces the following output:
3 2 1 6
@end example
-@node Multi-scanning
+@node Multiscanning
@subsection Scanning Multidimensional Arrays
There is no special @code{for} statement for scanning a
@@ -15132,6 +15342,7 @@ multidimensional @emph{way of accessing} an array.
@cindex subscripts in arrays, multidimensional, scanning
@cindex arrays, multidimensional, scanning
+@cindex scanning multidimensional arrays
However, if your program has an array that is always accessed as
multidimensional, you can get the effect of scanning it by combining
the scanning @code{for} statement
@@ -15173,6 +15384,7 @@ separate indices is recovered.
@node Arrays of Arrays
@section Arrays of Arrays
+@cindex arrays of arrays
@command{gawk} goes beyond standard @command{awk}'s multidimensional
array access and provides true arrays of
@@ -15432,6 +15644,7 @@ two arguments 11 and 10.
@node Numeric Functions
@subsection Numeric Functions
+@cindex numeric functions
The following list describes all of
the built-in functions that work with numbers.
@@ -15439,22 +15652,26 @@ Optional parameters are enclosed in square brackets@w{ ([ ]):}
@table @code
@item atan2(@var{y}, @var{x})
-@cindex @code{atan2()} function
+@cindexawkfunc{atan2}
+@cindex arctangent
Return the arctangent of @code{@var{y} / @var{x}} in radians.
You can use @samp{pi = atan2(0, -1)} to retrieve the value of @value{PI}.
@item cos(@var{x})
-@cindex @code{cos()} function
+@cindexawkfunc{cos}
+@cindex cosine
Return the cosine of @var{x}, with @var{x} in radians.
@item exp(@var{x})
-@cindex @code{exp()} function
+@cindexawkfunc{exp}
+@cindex exponent
Return the exponential of @var{x} (@code{e ^ @var{x}}) or report
an error if @var{x} is out of range. The range of values @var{x} can have
depends on your machine's floating-point representation.
@item int(@var{x})
-@cindex @code{int()} function
+@cindexawkfunc{int}
+@cindex round to nearest integer
Return the nearest integer to @var{x}, located between @var{x} and zero and
truncated toward zero.
@@ -15462,12 +15679,13 @@ For example, @code{int(3)} is 3, @code{int(3.9)} is 3, @code{int(-3.9)}
is @minus{}3, and @code{int(-3)} is @minus{}3 as well.
@item log(@var{x})
-@cindex @code{log()} function
+@cindexawkfunc{log}
+@cindex logarithm
Return the natural logarithm of @var{x}, if @var{x} is positive;
otherwise, report an error.
@item rand()
-@cindex @code{rand()} function
+@cindexawkfunc{rand}
@cindex random numbers, @code{rand()}/@code{srand()} functions
Return a random number. The values of @code{rand()} are
uniformly distributed between zero and one.
@@ -15509,7 +15727,7 @@ function roll(n) @{ return 1 + int(rand() * n) @}
@}
@end example
-@cindex numbers, random
+@cindex seeding random number generator
@cindex random numbers, seed of
@quotation CAUTION
In most @command{awk} implementations, including @command{gawk},
@@ -15525,17 +15743,19 @@ use @code{srand()}.
@end quotation
@item sin(@var{x})
-@cindex @code{sin()} function
+@cindexawkfunc{sin}
+@cindex sine
Return the sine of @var{x}, with @var{x} in radians.
@item sqrt(@var{x})
-@cindex @code{sqrt()} function
+@cindexawkfunc{sqrt}
+@cindex square root
Return the positive square root of @var{x}.
@command{gawk} prints a warning message
if @var{x} is negative. Thus, @code{sqrt(4)} is 2.
@item srand(@r{[}@var{x}@r{]})
-@cindex @code{srand()} function
+@cindexawkfunc{srand}
Set the starting point, or seed,
for generating random numbers to the value @var{x}.
@@ -15565,16 +15785,18 @@ sequences of random numbers.
@node String Functions
@subsection String-Manipulation Functions
+@cindex string-manipulation functions
-The functions in this @value{SECTION} look at or change the text of one or more
-strings.
-@code{gawk} understands locales (@pxref{Locales}), and does all string processing in terms of
-@emph{characters}, not @emph{bytes}. This distinction is particularly important
-to understand for locales where one character
-may be represented by multiple bytes. Thus, for example, @code{length()}
-returns the number of characters in a string, and not the number of bytes
-used to represent those characters, Similarly, @code{index()} works with
-character indices, and not byte indices.
+The functions in this @value{SECTION} look at or change the text of one
+or more strings.
+
+@code{gawk} understands locales (@pxref{Locales}), and does all
+string processing in terms of @emph{characters}, not @emph{bytes}.
+This distinction is particularly important to understand for locales
+where one character may be represented by multiple bytes. Thus, for
+example, @code{length()} returns the number of characters in a string,
+and not the number of bytes used to represent those characters. Similarly,
+@code{index()} works with character indices, and not byte indices.
In the following list, optional parameters are enclosed in square brackets@w{ ([ ]).}
Several functions perform string substitution; the full discussion is
@@ -15591,30 +15813,34 @@ pound sign@w{ (@samp{#}):}
@table @code
@item asort(@var{source} @r{[}, @var{dest} @r{[}, @var{how} @r{]} @r{]}) #
+@itemx asorti(@var{source} @r{[}, @var{dest} @r{[}, @var{how} @r{]} @r{]}) #
+@cindexgawkfunc{asorti}
+@cindex sort array
@cindex arrays, elements, retrieving number of
-@cindex @code{asort()} function (@command{gawk})
+@cindexgawkfunc{asort}
+@cindex sort array indices
+These two functions are similar in behavior, so they are described
+together.
+
+@quotation NOTE
+The following description ignores the third argument, @var{how}, since it
+requires understanding features that we have not discussed yet. Thus,
+the discussion here is a deliberate simplification. (We do provide all
+the details later on: @xref{Array Sorting Functions}, for the full story.)
+@end quotation
+
+Both functions return the number of elements in the array @var{source}.
+For @command{asort()}, @command{gawk} sorts the values of @var{source}
+and replaces the indices of the sorted values of @var{source} with
+sequential integers starting with one. If the optional array @var{dest}
+is specified, then @var{source} is duplicated into @var{dest}. @var{dest}
+is then sorted, leaving the indices of @var{source} unchanged.
+
@cindex @command{gawk}, @code{IGNORECASE} variable in
-@cindex @code{IGNORECASE} variable
-Return the number of elements in the array @var{source}.
-@command{gawk} sorts the contents of @var{source}
-and replaces the indices
-of the sorted values of @var{source} with sequential
-integers starting with one. If the optional array @var{dest} is specified,
-then @var{source} is duplicated into @var{dest}. @var{dest} is then
-sorted, leaving the indices of @var{source} unchanged. The optional third
-argument @var{how} is a string which controls the rule for comparing values,
-and the sort direction. A single space is required between the
-comparison mode, @samp{string} or @samp{number}, and the direction specification,
-@samp{ascending} or @samp{descending}. You can omit direction and/or mode
-in which case it will default to @samp{ascending} and @samp{string}, respectively.
-An empty string "" is the same as the default @code{"ascending string"}
-for the value of @var{how}. If the @samp{source} array contains subarrays as values,
-they will come out last(first) in the @samp{dest} array for @samp{ascending}(@samp{descending})
-order specification. The value of @code{IGNORECASE} affects the sorting.
-The third argument can also be a user-defined function name in which case
-the value returned by the function is used to order the array elements
-before constructing the result array.
-@xref{Array Sorting Functions}, for more information.
+When comparing strings, @code{IGNORECASE} affects the sorting
+(@pxref{Array Sorting Functions}). If the
+@var{source} array contains subarrays as values (@pxref{Arrays of
+Arrays}), they will come last, after all scalar values.
For example, if the contents of @code{a} are as follows:
@@ -15640,32 +15866,24 @@ a[2] = "de"
a[3] = "sac"
@end example
-In order to reverse the direction of the sorted results in the above example,
-@code{asort()} can be called with three arguments as follows:
+The @code{asorti()} function works similarly to @code{asort()}, however,
+the @emph{indices} are sorted, instead of the values. Thus, in the
+previous example, starting with the same initial set of indices and
+values in @code{a}, calling @samp{asorti(a)} would yield:
@example
-asort(a, a, "descending")
+a[1] = "first"
+a[2] = "last"
+a[3] = "middle"
@end example
-The @code{asort()} function is described in more detail in
-@ref{Array Sorting Functions}.
-@code{asort()} is a @command{gawk} extension; it is not available
-in compatibility mode (@pxref{Options}).
-
-@item asorti(@var{source} @r{[}, @var{dest} @r{[}, @var{how} @r{]} @r{]}) #
-@cindex @code{asorti()} function (@command{gawk})
-Return the number of elements in the array @var{source}.
-It works similarly to @code{asort()}, however, the @emph{indices}
-are sorted, instead of the values. (Here too,
-@code{IGNORECASE} affects the sorting.)
-
-The @code{asorti()} function is described in more detail in
-@ref{Array Sorting Functions}.
-@code{asorti()} is a @command{gawk} extension; it is not available
-in compatibility mode (@pxref{Options}).
+@code{asort()} and @code{asorti()} are @command{gawk} extensions; they
+are not available in compatibility mode (@pxref{Options}).
@item gensub(@var{regexp}, @var{replacement}, @var{how} @r{[}, @var{target}@r{]}) #
-@cindex @code{gensub()} function (@command{gawk})
+@cindexgawkfunc{gensub}
+@cindex search and replace in strings
+@cindex substitute in string
Search the target string @var{target} for matches of the regular
expression @var{regexp}. If @var{how} is a string beginning with
@samp{g} or @samp{G} (short for ``global''), then replace all matches of @var{regexp} with
@@ -15674,7 +15892,7 @@ which match of @var{regexp} to replace. If no @var{target} is supplied,
use @code{$0}. It returns the modified string as the result
of the function and the original target string is @emph{not} changed.
-@code{gensub()} is a general substitution function. It's purpose is
+@code{gensub()} is a general substitution function. Its purpose is
to provide more features than the standard @code{sub()} and @code{gsub()}
functions.
@@ -15728,7 +15946,7 @@ is the original unchanged value of @var{target}.
in compatibility mode (@pxref{Options}).
@item gsub(@var{regexp}, @var{replacement} @r{[}, @var{target}@r{]})
-@cindex @code{gsub()} function
+@cindexawkfunc{gsub}
Search @var{target} for
@emph{all} of the longest, leftmost, @emph{nonoverlapping} matching
substrings it can find and replace them with @var{replacement}.
@@ -15750,8 +15968,9 @@ As in @code{sub()}, the characters @samp{&} and @samp{\} are special,
and the third argument must be assignable.
@item index(@var{in}, @var{find})
-@cindex @code{index()} function
-@cindex searching
+@cindexawkfunc{index}
+@cindex search in string
+@cindex find substring in string
Search the string @var{in} for the first occurrence of the string
@var{find}, and return the position in characters where that occurrence
begins in the string @var{in}. Consider the following example:
@@ -15768,7 +15987,9 @@ If @var{find} is not found, @code{index()} returns zero.
It is a fatal error to use a regexp constant for @var{find}.
@item length(@r{[}@var{string}@r{]})
-@cindex @code{length()} function
+@cindexawkfunc{length}
+@cindex string length
+@cindex length of string
Return the number of characters in @var{string}. If
@var{string} is a number, the length of the digit string representing
that number is returned. For example, @code{length("abcde")} is five. By
@@ -15776,6 +15997,8 @@ contrast, @code{length(15 * 35)} works out to three. In this example, 15 * 35 =
525, and 525 is then converted to the string @code{"525"}, which has
three characters.
+@cindex length of input record
+@cindex input record, length of
If no argument is supplied, @code{length()} returns the length of @code{$0}.
@c @cindex historical features
@@ -15814,6 +16037,8 @@ warning about this.
@cindex common extensions, @code{length()} applied to an array
@cindex extensions, common@comma{} @code{length()} applied to an array
@cindex differences between @command{gawk} and @command{awk}
+@cindex number of array elements
+@cindex array, number of elements
With @command{gawk} and several other @command{awk} implementations, when given an
array argument, the @code{length()} function returns the number of elements
in the array. @value{COMMONEXT}
@@ -15827,7 +16052,9 @@ If @option{--posix} is supplied, using an array argument is a fatal error
(@pxref{Arrays}).
@item match(@var{string}, @var{regexp} @r{[}, @var{array}@r{]})
-@cindex @code{match()} function
+@cindexawkfunc{match}
+@cindex string, regular expression match
+@cindex match regexp in string
Search @var{string} for the
longest, leftmost substring matched by the regular expression,
@var{regexp} and return the character position, or @dfn{index},
@@ -15942,7 +16169,8 @@ The @var{array} argument to @code{match()} is a
using a third argument is a fatal error.
@item patsplit(@var{string}, @var{array} @r{[}, @var{fieldpat} @r{[}, @var{seps} @r{]} @r{]}) #
-@cindex @code{patsplit()} function (@command{gawk})
+@cindexgawkfunc{patsplit}
+@cindex split string into array
Divide
@var{string} into pieces defined by @var{fieldpat}
and store the pieces in @var{array} and the separator strings in the
@@ -15973,7 +16201,7 @@ The @code{patsplit()} function is a
it is not available.
@item split(@var{string}, @var{array} @r{[}, @var{fieldsep} @r{[}, @var{seps} @r{]} @r{]})
-@cindex @code{split()} function
+@cindexawkfunc{split}
Divide @var{string} into pieces separated by @var{fieldsep}
and store the pieces in @var{array} and the separator strings in the
@var{seps} array. The first piece is stored in
@@ -16002,7 +16230,7 @@ split("cul-de-sac", a, "-", seps)
@end example
@noindent
-@cindex strings, splitting
+@cindex strings splitting, example
splits the string @samp{cul-de-sac} into three fields using @samp{-} as the
separator. It sets the contents of the array @code{a} as follows:
@@ -16058,7 +16286,8 @@ If @var{string} does not match @var{fieldsep} at all (but is not null),
@var{string}.
@item sprintf(@var{format}, @var{expression1}, @dots{})
-@cindex @code{sprintf()} function
+@cindexawkfunc{sprintf}
+@cindex formatting strings
Return (without printing) the string that @code{printf} would
have printed out with the same arguments
(@pxref{Printf}).
@@ -16071,7 +16300,8 @@ pival = sprintf("pi = %.2f (approx.)", 22/7)
@noindent
assigns the string @w{@samp{pi = 3.14 (approx.)}} to the variable @code{pival}.
-@cindex @code{strtonum()} function (@command{gawk})
+@cindexgawkfunc{strtonum}
+@cindex convert string to number
@item strtonum(@var{str}) #
Examine @var{str} and return its numeric value. If @var{str}
begins with a leading @samp{0}, @code{strtonum()} assumes that @var{str}
@@ -16094,12 +16324,12 @@ you use the @option{--non-decimal-data} option, which isn't recommended.
Note also that @code{strtonum()} uses the current locale's decimal point
for recognizing numbers (@pxref{Locales}).
-@cindex differences in @command{awk} and @command{gawk}, @code{strtonum()} function (@command{gawk})
@code{strtonum()} is a @command{gawk} extension; it is not available
in compatibility mode (@pxref{Options}).
@item sub(@var{regexp}, @var{replacement} @r{[}, @var{target}@r{]})
-@cindex @code{sub()} function
+@cindexawkfunc{sub}
+@cindex replace in string
Search @var{target}, which is treated as a string, for the
leftmost, longest substring matched by the regular expression @var{regexp}.
Modify the entire string
@@ -16199,7 +16429,8 @@ Finally, if the @var{regexp} is not a regexp constant, it is converted into a
string, and then the value of that string is treated as the regexp to match.
@item substr(@var{string}, @var{start} @r{[}, @var{length}@r{]})
-@cindex @code{substr()} function
+@cindexawkfunc{substr}
+@cindex substring
Return a @var{length}-character-long substring of @var{string},
starting at character number @var{start}. The first character of a
string is character number one.@footnote{This is different from
@@ -16213,6 +16444,7 @@ suffix is also returned
if @var{length} is greater than the number of characters remaining
in the string, counting from character @var{start}.
+@cindex Brian Kernighan's @command{awk}
If @var{start} is less than one, @code{substr()} treats it as
if it was one. (POSIX doesn't specify what to do in this case:
Brian Kernighan's @command{awk} acts this way, and therefore @command{gawk}
@@ -16255,16 +16487,18 @@ string = substr(string, 1, 2) "CDE" substr(string, 6)
@end example
@cindex case sensitivity, converting case
-@cindex converting, case
+@cindex strings, converting letter case
@item tolower(@var{string})
-@cindex @code{tolower()} function
+@cindexawkfunc{tolower}
+@cindex convert string to lower case
Return a copy of @var{string}, with each uppercase character
in the string replaced with its corresponding lowercase character.
Nonalphabetic characters are left unchanged. For example,
@code{tolower("MiXeD cAsE 123")} returns @code{"mixed case 123"}.
@item toupper(@var{string})
-@cindex @code{toupper()} function
+@cindexawkfunc{toupper}
+@cindex convert string to upper case
Return a copy of @var{string}, with each lowercase character
in the string replaced with its corresponding uppercase character.
Nonalphabetic characters are left unchanged. For example,
@@ -16292,6 +16526,7 @@ and builds an internal copy of it that can be executed.
Then there is the runtime level, which is when @command{awk} actually scans the
replacement string to determine what to generate.
+@cindex Brian Kernighan's @command{awk}
At both levels, @command{awk} looks for a defined set of characters that
can come after a backslash. At the lexical level, it looks for the
escape sequences listed in @ref{Escape Sequences}.
@@ -16561,17 +16796,17 @@ _bigskip}
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
+Starting with version 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 years.
-When @value{PVERSION} 4.0.0 was released, the @command{gawk} maintainer
+When version 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
+and as of version 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
@@ -16689,14 +16924,16 @@ Although this makes a certain amount of sense, it can be surprising.
@node I/O Functions
@subsection Input/Output Functions
+@cindex input/output functions
The following functions relate to input/output (I/O).
Optional parameters are enclosed in square brackets ([ ]):
@table @code
@item close(@var{filename} @r{[}, @var{how}@r{]})
-@cindex @code{close()} function
+@cindexawkfunc{close}
@cindex files, closing
+@cindex close file or coprocess
Close the file @var{filename} for input or output. Alternatively, the
argument may be a shell command that was used for creating a coprocess, or
for redirecting to or from a pipe; then the coprocess or pipe is closed.
@@ -16713,7 +16950,8 @@ not matter.
which discusses this feature in more detail and gives an example.
@item fflush(@r{[}@var{filename}@r{]})
-@cindex @code{fflush()} function
+@cindexawkfunc{fflush}
+@cindex flush buffered output
Flush any buffered output associated with @var{filename}, which is either a
file opened for writing or a shell command for redirecting output to
a pipe or coprocess.
@@ -16731,11 +16969,12 @@ This is the purpose of the @code{fflush()} function---@command{gawk} also
buffers its output and the @code{fflush()} function forces
@command{gawk} to flush its buffers.
-@code{fflush()} was added to Brian Kernighan's
-version of @command{awk} in 1994.
-For over two decades, it was not part of the POSIX standard.
-As of December, 2012, it was accepted for
-inclusion into the POSIX standard.
+@cindex extensions, common@comma{} @code{fflush()} function
+@cindex Brian Kernighan's @command{awk}
+@code{fflush()} was added to Brian Kernighan's version of @command{awk} in
+April of 1992. For two decades, it was not part of the POSIX standard.
+As of December, 2012, it was accepted for inclusion into the POSIX
+standard.
See @uref{http://austingroupbugs.net/view.php?id=634, the Austin Group website}.
POSIX standardizes @code{fflush()} as follows: If there
@@ -16771,7 +17010,8 @@ or if @var{filename} is not an open file, pipe, or coprocess.
In such a case, @code{fflush()} returns @minus{}1, as well.
@item system(@var{command})
-@cindex @code{system()} function
+@cindexawkfunc{system}
+@cindex invoke shell command
@cindex interacting with other programs
Execute the operating-system
command @var{command} and then return to the @command{awk} program.
@@ -16802,7 +17042,7 @@ close("/bin/sh")
@noindent
@cindex troubleshooting, @code{system()} function
-@cindex @code{--sandbox} option, disabling @code{system()} function
+@cindex @option{--sandbox} option, disabling @code{system()} function
However, if your @command{awk}
program is interactive, @code{system()} is useful for running large
self-contained programs, such as a shell or an editor.
@@ -16843,7 +17083,7 @@ $ @kbd{awk '@{ print $1 + $2 @}'}
@print{} 2
@kbd{2 3}
@print{} 5
-@kbd{@value{CTL}-d}
+@kbd{Ctrl-d}
@end example
@noindent
@@ -16854,13 +17094,13 @@ with this example:
$ @kbd{awk '@{ print $1 + $2 @}' | cat}
@kbd{1 1}
@kbd{2 3}
-@kbd{@value{CTL}-d}
+@kbd{Ctrl-d}
@print{} 2
@print{} 5
@end example
@noindent
-Here, no output is printed until after the @kbd{@value{CTL}-d} is typed, because
+Here, no output is printed until after the @kbd{Ctrl-d} is typed, because
it is all buffered and sent down the pipe to @command{cat} in one shot.
@docbook
@@ -16894,7 +17134,7 @@ $ @kbd{awk '@{ print $1 + $2 @}'}
@print{} 2
@kbd{2 3}
@print{} 5
-@kbd{@value{CTL}-d}
+@kbd{Ctrl-d}
@end example
@noindent
@@ -16905,13 +17145,13 @@ with this example:
$ @kbd{awk '@{ print $1 + $2 @}' | cat}
@kbd{1 1}
@kbd{2 3}
-@kbd{@value{CTL}-d}
+@kbd{Ctrl-d}
@print{} 2
@print{} 5
@end example
@noindent
-Here, no output is printed until after the @kbd{@value{CTL}-d} is typed, because
+Here, no output is printed until after the @kbd{Ctrl-d} is typed, because
it is all buffered and sent down the pipe to @command{cat} in one shot.
@end cartouche
@end ifnotdocbook
@@ -17046,6 +17286,7 @@ you would see the latter (undesirable) output.
@node Time Functions
@subsection Time Functions
+@cindex time functions
@c STARTOFRANGE tst
@cindex timestamps
@@ -17065,7 +17306,18 @@ it is the number of seconds since
1970-01-01 00:00:00 UTC, not counting leap seconds.@footnote{@xref{Glossary},
especially the entries ``Epoch'' and ``UTC.''}
All known POSIX-compliant systems support timestamps from 0 through
-@math{2^{31} - 1}, which is sufficient to represent times through
+@iftex
+@math{2^{31} - 1},
+@end iftex
+@ifnottex
+@ifnotdocbook
+2^31 - 1,
+@end ifnotdocbook
+@end ifnottex
+@docbook
+2<superscript>31</superscript> &minus; 1, @c
+@end docbook
+which is sufficient to represent times through
2038-01-19 03:14:07 UTC. Many systems support a wider range of timestamps,
including negative timestamps that represent times before the
epoch.
@@ -17084,7 +17336,8 @@ Optional parameters are enclosed in square brackets ([ ]):
@table @code
@item mktime(@var{datespec})
-@cindex @code{mktime()} function (@command{gawk})
+@cindexgawkfunc{mktime}
+@cindex generate time values
Turn @var{datespec} into a timestamp in the same form
as is returned by @code{systime()}. It is similar to the function of the
same name in ISO C. The argument, @var{datespec}, is a string of the form
@@ -17114,7 +17367,8 @@ is out of range, @code{mktime()} returns @minus{}1.
@cindex @code{PROCINFO} array
@item strftime(@r{[}@var{format} @r{[}, @var{timestamp} @r{[}, @var{utc-flag}@r{]]]})
@c STARTOFRANGE strf
-@cindex @code{strftime()} function (@command{gawk})
+@cindexgawkfunc{strftime}
+@cindex format time string
Format the time specified by @var{timestamp}
based on the contents of the @var{format} string and return the result.
It is similar to the function of the same name in ISO C.
@@ -17131,11 +17385,12 @@ The default string value is
@code{@w{"%a %b %e %H:%M:%S %Z %Y"}}. This format string produces
output that is equivalent to that of the @command{date} utility.
You can assign a new value to @code{PROCINFO["strftime"]} to
-change the default format.
+change the default format; see below for the various format directives.
@item systime()
-@cindex @code{systime()} function (@command{gawk})
+@cindexgawkfunc{systime}
@cindex timestamps
+@cindex current system time
Return the current time as the number of seconds since
the system epoch. On POSIX systems, this is the number of seconds
since 1970-01-01 00:00:00 UTC, not counting leap seconds.
@@ -17429,6 +17684,7 @@ gawk 'BEGIN @{
@node Bitwise Functions
@subsection Bit-Manipulation Functions
+@cindex bit-manipulation functions
@c STARTOFRANGE bit
@cindex bitwise, operations
@c STARTOFRANGE and
@@ -17440,8 +17696,8 @@ gawk 'BEGIN @{
@c STARTOFRANGE opbit
@cindex operations, bitwise
@quotation
-@i{I can explain it for you, but I can't understand it for you.}@*
-Anonymous
+@i{I can explain it for you, but I can't understand it for you.}
+@author Anonymous
@end quotation
Many languages provide the ability to perform @dfn{bitwise} operations
@@ -17591,27 +17847,33 @@ bitwise operations just described. They are:
@cindex @command{gawk}, bitwise operations in
@table @code
-@cindex @code{and()} function (@command{gawk})
+@cindexgawkfunc{and}
+@cindex bitwise AND
@item and(@var{v1}, @var{v2} @r{[}, @r{@dots{}]})
Return the bitwise AND of the arguments. There must be at least two.
-@cindex @code{compl()} function (@command{gawk})
+@cindexgawkfunc{compl}
+@cindex bitwise complement
@item compl(@var{val})
Return the bitwise complement of @var{val}.
-@cindex @code{lshift()} function (@command{gawk})
+@cindexgawkfunc{lshift}
+@cindex left shift
@item lshift(@var{val}, @var{count})
Return the value of @var{val}, shifted left by @var{count} bits.
-@cindex @code{or()} function (@command{gawk})
+@cindexgawkfunc{or}
+@cindex bitwise OR
@item or(@var{v1}, @var{v2} @r{[}, @r{@dots{}]})
Return the bitwise OR of the arguments. There must be at least two.
-@cindex @code{rshift()} function (@command{gawk})
+@cindexgawkfunc{rshift}
+@cindex right shift
@item rshift(@var{val}, @var{count})
Return the value of @var{val}, shifted right by @var{count} bits.
-@cindex @code{xor()} function (@command{gawk})
+@cindexgawkfunc{xor}
+@cindex bitwise XOR
@item xor(@var{v1}, @var{v2} @r{[}, @r{@dots{}]})
Return the bitwise XOR of the arguments. There must be at least two.
@end table
@@ -17703,6 +17965,7 @@ $ @kbd{gawk -f testbits.awk}
@cindex strings, converting
@cindex numbers, converting
@cindex converting, numbers to strings
+@cindex number as string of bits
The @code{bits2str()} function turns a binary number into a string.
The number @code{1} represents a binary value where the rightmost bit
is set to 1. Using this mask,
@@ -17738,7 +18001,8 @@ that traverses every element of a true multidimensional array
(@pxref{Arrays of Arrays}).
@table @code
-@cindex @code{isarray()} function (@command{gawk})
+@cindexgawkfunc{isarray}
+@cindex scalar or array
@item isarray(@var{x})
Return a true value if @var{x} is an array. Otherwise return false.
@end table
@@ -17746,7 +18010,7 @@ Return a true value if @var{x} is an array. Otherwise return false.
@code{isarray()} is meant for use in two circumstances. The first is when
traversing a multidimensional array: you can test if an element is itself
an array or not. The second is inside the body of a user-defined function
-(not discussed yet; @pxref{User-defined}), to test if a paramater is an
+(not discussed yet; @pxref{User-defined}), to test if a parameter is an
array or not.
Note, however, that using @code{isarray()} at the global level to test
@@ -17760,6 +18024,7 @@ will end up turning it into a scalar.
@subsection String-Translation Functions
@cindex @command{gawk}, string-translation functions
@cindex functions, string-translation
+@cindex string-translation functions
@cindex internationalization
@cindex @command{awk} programs, internationalizing
@@ -17771,7 +18036,8 @@ for the full story.
Optional parameters are enclosed in square brackets ([ ]):
@table @code
-@cindex @code{bindtextdomain()} function (@command{gawk})
+@cindexgawkfunc{bindtextdomain}
+@cindex set directory of message catalogs
@item bindtextdomain(@var{directory} @r{[}, @var{domain}@r{]})
Set the directory in which
@command{gawk} will look for message translation files, in case they
@@ -17784,14 +18050,15 @@ If @var{directory} is the null string (@code{""}), then
@code{bindtextdomain()} returns the current binding for the
given @var{domain}.
-@cindex @code{dcgettext()} function (@command{gawk})
+@cindexgawkfunc{dcgettext}
+@cindex translate string
@item dcgettext(@var{string} @r{[}, @var{domain} @r{[}, @var{category}@r{]]})
Return the translation of @var{string} in
text domain @var{domain} for locale category @var{category}.
The default value for @var{domain} is the current value of @code{TEXTDOMAIN}.
The default value for @var{category} is @code{"LC_MESSAGES"}.
-@cindex @code{dcngettext()} function (@command{gawk})
+@cindexgawkfunc{dcngettext}
@item dcngettext(@var{string1}, @var{string2}, @var{number} @r{[}, @var{domain} @r{[}, @var{category}@r{]]})
Return the plural form used for @var{number} of the
translation of @var{string1} and @var{string2} in text domain
@@ -17808,7 +18075,7 @@ The default value for @var{category} is @code{"LC_MESSAGES"}.
@section User-Defined Functions
@c STARTOFRANGE udfunc
-@cindex user-defined, functions
+@cindex user-defined functions
@c STARTOFRANGE funcud
@cindex functions, user-defined
Complicated @command{awk} programs can often be simplified by defining
@@ -17867,7 +18134,7 @@ have a parameter with the same name as the function itself.
In addition, according to the POSIX standard, function parameters cannot have the same
name as one of the special built-in variables
(@pxref{Built-in Variables}. Not all versions of @command{awk}
-enforce this restriction.
+enforce this restriction.)
The @var{body-of-function} consists of @command{awk} statements. It is the
most important part of the definition, because it says what the function
@@ -17894,6 +18161,7 @@ conventional to place some extra space between the arguments and
the local variables, in order to document how your function is supposed to be used.
@cindex variables, shadowing
+@cindex shadowing of variable values
During execution of the function body, the arguments and local variable
values hide, or @dfn{shadow}, any variables of the same names used in the
rest of the program. The shadowed variables are not accessible in the
@@ -17914,7 +18182,7 @@ function. When this happens, we say the function is @dfn{recursive}.
The act of a function calling itself is called @dfn{recursion}.
All the built-in functions return a value to their caller.
-User-defined functions can do also, using the @code{return} statement,
+User-defined functions can do so also, using the @code{return} statement,
which is described in detail in @ref{Return Statement}.
Many of the subsequent examples in this @value{SECTION} use
the @code{return} statement.
@@ -17952,6 +18220,7 @@ keyword @code{function} when defining a function.
@node Function Example
@subsection Function Definition Examples
+@cindex function definition example
Here is an example of a user-defined function, called @code{myprint()}, that
takes a number and prints it in a specific format:
@@ -18006,7 +18275,8 @@ Instead of having
to repeat this loop everywhere that you need to clear out
an array, your program can just call @code{delarray}.
(This guarantees portability. The use of @samp{delete @var{array}} to delete
-the contents of an entire array is a nonstandard extension.)
+the contents of an entire array is a recent@footnote{Late in 2012.}
+addition to the POSIX standard.)
The following is an example of a recursive function. It takes a string
as an input parameter and returns the string in backwards order.
@@ -18062,7 +18332,10 @@ function ctime(ts, format)
@subsection Calling User-Defined Functions
@c STARTOFRANGE fudc
-This section describes how to call a user-defined function.
+@cindex functions, user-defined, calling
+@dfn{Calling a function} means causing the function to run and do its job.
+A function call is an expression and its value is the value returned by
+the function.
@menu
* Calling A Function:: Don't use spaces.
@@ -18073,11 +18346,6 @@ This section describes how to call a user-defined function.
@node Calling A Function
@subsubsection Writing A Function Call
-@cindex functions, user-defined, calling
-@dfn{Calling a function} means causing the function to run and do its job.
-A function call is an expression and its value is the value returned by
-the function.
-
A function call consists of the function name followed by the arguments
in parentheses. @command{awk} expressions are what you write in the
call for the arguments. Each time the call is executed, these
@@ -18101,8 +18369,8 @@ an error.
@node Variable Scope
@subsubsection Controlling Variable Scope
-@cindex local variables
-@cindex variables, local
+@cindex local variables, in a function
+@cindex variables, local to a function
There is no way to make a variable local to a @code{@{ @dots{} @}} block in
@command{awk}, but you can make a variable local to a function. It is
good practice to do so whenever a variable is needed only in that
@@ -18547,7 +18815,7 @@ character:
@example
the_func = "sum"
-result = @@the_func() # calls the `sum' function
+result = @@the_func() # calls the sum() function
@end example
Here is a full program that processes the previously shown data,
@@ -18668,8 +18936,9 @@ We can do something similar using @command{gawk}, like this:
@ignore
@c file eg/lib/quicksort.awk
#
-# Arnold Robbins, arnold@skeeve.com, Public Domain
+# Arnold Robbins, arnold@@skeeve.com, Public Domain
# January 2009
+
@c endfile
@end ignore
@@ -18742,7 +19011,7 @@ or equal to), which yields data sorted in descending order.
Next comes a sorting function. It is parameterized with the starting and
ending field numbers and the comparison function. It builds an array with
-the data and calls @code{quicksort} appropriately, and then formats the
+the data and calls @code{quicksort()} appropriately, and then formats the
results as a single string:
@example
@@ -18880,9 +19149,11 @@ it allows you to encapsulate algorithms and program tasks in a single
place. It simplifies programming, making program development more
manageable, and making programs more readable.
-In their seminal 1976 book, @cite{Software Tools}@footnote{Sadly, over 35
+@cindex Kernighan, Brian
+@cindex Plauger, P.J.@:
+In their seminal 1976 book, @cite{Software Tools},@footnote{Sadly, over 35
years later, many of the lessons taught by this book have yet to be
-learned by a vast number of practicing programmers.}, Brian Kernighan
+learned by a vast number of practicing programmers.} Brian Kernighan
and P.J.@: Plauger wrote:
@quotation
@@ -19009,7 +19280,7 @@ with the user's program.
@cindex underscore (@code{_}), in names of private variables
In addition, several of the library functions use a prefix that helps
indicate what function or set of functions use the variables---for example,
-@code{_pw_byname} in the user database routines
+@code{_pw_byname()} in the user database routines
(@pxref{Passwd Functions}).
This convention is recommended, since it even further decreases the
chance of inadvertent conflict among variable names. Note that this
@@ -19028,7 +19299,7 @@ The leading capital letter indicates that it is global, while the fact that
the variable name is not all capital letters indicates that the variable is
not one of @command{awk}'s built-in variables, such as @code{FS}.
-@cindex @code{--dump-variables} option
+@cindex @option{--dump-variables} option, using for library functions
It is also important that @emph{all} variables in library
functions that do not need to save state are, in fact, declared
local.@footnote{@command{gawk}'s @option{--dump-variables} command-line
@@ -19081,6 +19352,7 @@ programming use.
vice versa.
* Join Function:: A function to join an array into a string.
* Getlocaltime Function:: A function to get formatted times.
+* Readfile Function:: A function to read an entire file at once.
@end menu
@node Strtonum Function
@@ -19296,7 +19568,7 @@ An @code{END} rule is automatically added
to the program calling @code{assert()}. Normally, if a program consists
of just a @code{BEGIN} rule, the input files and/or standard input are
not read. However, now that the program has an @code{END} rule, @command{awk}
-attempts to read the input @value{DF}s or standard input
+attempts to read the input data files or standard input
(@pxref{Using BEGIN/END}),
most likely causing the program to hang as it waits for input.
@@ -19322,9 +19594,9 @@ with an @code{exit} statement.
The way @code{printf} and @code{sprintf()}
(@pxref{Printf})
perform rounding often depends upon the system's C @code{sprintf()}
-subroutine. On many machines, @code{sprintf()} rounding is ``unbiased,''
-which means it doesn't always round a trailing @samp{.5} up, contrary
-to naive expectations. In unbiased rounding, @samp{.5} rounds to even,
+subroutine. On many machines, @code{sprintf()} rounding is @dfn{unbiased},
+which means it doesn't always round a trailing .5 up, contrary
+to naive expectations. In unbiased rounding, .5 rounds to even,
rather than always up, so 1.5 rounds to 2 but 4.5 rounds to 4. This means
that if you are using a format that does rounding (e.g., @code{"%.0f"}),
you should check what your system does. The following function does
@@ -19373,7 +19645,7 @@ function round(x, ival, aval, fraction)
@c don't include test harness in the file that gets installed
# test harness
-@{ print $0, round($0) @}
+# @{ print $0, round($0) @}
@end example
@node Cliff Random Function
@@ -19440,6 +19712,7 @@ reason to build them into the @command{awk} interpreter:
@cindex @code{ord()} user-defined function
@cindex @code{chr()} user-defined function
+@cindex @code{_ord_init()} user-defined function
@example
@c file eg/lib/ord.awk
# ord.awk --- do ord and chr
@@ -19486,8 +19759,9 @@ function _ord_init( low, high, i, t)
@cindex character sets (machine character encodings)
@cindex ASCII
@cindex EBCDIC
+@cindex Unicode
@cindex mark parity
-Some explanation of the numbers used by @code{chr} is worthwhile.
+Some explanation of the numbers used by @code{_ord_init()} is worthwhile.
The most prominent character set in use today is ASCII.@footnote{This
is changing; many systems use Unicode, a very large character set
that includes ASCII as a subset. On systems with full Unicode support,
@@ -19498,7 +19772,7 @@ Although an
defines characters that use the values from 0 to 127.@footnote{ASCII
has been extended in many countries to use the values from 128 to 255
for country-specific characters. If your system uses these extensions,
-you can simplify @code{_ord_init} to loop from 0 to 255.}
+you can simplify @code{_ord_init()} to loop from 0 to 255.}
In the now distant past,
at least one minicomputer manufacturer
@c Pr1me, blech
@@ -19705,17 +19979,92 @@ A more general design for the @code{getlocaltime()} function would have
allowed the user to supply an optional timestamp value to use instead
of the current time.
+@node Readfile Function
+@subsection Reading A Whole File At Once
+
+Often, it is convenient to have the entire contents of a file available
+in memory as a single string. A straightforward but naive way to
+do that might be as follows:
+
+@example
+function readfile(file, tmp, contents)
+@{
+ if ((getline tmp < file) < 0)
+ return
+
+ contents = tmp
+ while (getline tmp < file) > 0)
+ contents = contents RT tmp
+
+ close(file)
+ return contents
+@}
+@end example
+
+This function reads from @code{file} one record at a time, building
+up the full contents of the file in the local variable @code{contents}.
+It works, but is not necessarily efficient.
+
+The following function, based on a suggestion by Denis Shirokov,
+reads the entire contents of the named file in one shot:
+
+@cindex @code{readfile()} user-defined function
+@example
+@c file eg/lib/readfile.awk
+# readfile.awk --- read an entire file at once
+@c endfile
+@ignore
+@c file eg/lib/readfile.awk
+#
+# Original idea by Denis Shirokov, cosmogen@@gmail.com, April 2013
+#
+@c endfile
+@end ignore
+@c file eg/lib/readfile.awk
+
+function readfile(file, tmp, save_rs)
+@{
+ save_rs = RS
+ RS = "^$"
+ getline tmp < file
+ close(file)
+ RS = save_rs
+
+ return tmp
+@}
+@c endfile
+@end example
+
+It works by setting @code{RS} to @samp{^$}, a regular expression that
+will never match if the file has contents. @command{gawk} reads data from
+the file into @code{tmp} attempting to match @code{RS}. The match fails
+after each read, but fails quickly, such that @command{gawk} fills
+@code{tmp} with the entire contents of the file.
+(@xref{Records}, for information on @code{RT} and @code{RS}.)
+
+In the case that @code{file} is empty, the return value is the null
+string. Thus calling code may use something like:
+
+@example
+contents = readfile("/some/path")
+if (length(contents) == 0)
+ # file was empty @dots{}
+@end example
+
+This tests the result to see if it is empty or not. An equivalent
+test would be @samp{contents == ""}.
+
@node Data File Management
-@section @value{DDF} Management
+@section Data File Management
@c STARTOFRANGE dataf
@cindex files, managing
@c STARTOFRANGE libfdataf
-@cindex libraries of @command{awk} functions, managing, @value{DF}s
+@cindex libraries of @command{awk} functions, managing, data files
@c STARTOFRANGE flibdataf
-@cindex functions, library, managing @value{DF}s
+@cindex functions, library, managing data files
This @value{SECTION} presents functions that are useful for managing
-command-line @value{DF}s.
+command-line data files.
@menu
* Filetrans Function:: A function for handling data file transitions.
@@ -19726,16 +20075,16 @@ command-line @value{DF}s.
@end menu
@node Filetrans Function
-@subsection Noting @value{DDF} Boundaries
+@subsection Noting Data File Boundaries
-@cindex files, managing, @value{DF} boundaries
+@cindex files, managing, data file boundaries
@cindex files, initialization and cleanup
The @code{BEGIN} and @code{END} rules are each executed exactly once at
the beginning and end of your @command{awk} program, respectively
(@pxref{BEGIN/END}).
We (the @command{gawk} authors) once had a user who mistakenly thought that the
-@code{BEGIN} rule is executed at the beginning of each @value{DF} and the
-@code{END} rule is executed at the end of each @value{DF}.
+@code{BEGIN} rule is executed at the beginning of each data file and the
+@code{END} rule is executed at the end of each data file.
When informed
that this was not the case, the user requested that we add new special
@@ -19746,7 +20095,7 @@ Adding these special patterns to @command{gawk} wasn't necessary;
the job can be done cleanly in @command{awk} itself, as illustrated
by the following library program.
It arranges to call two user-supplied functions, @code{beginfile()} and
-@code{endfile()}, at the beginning and end of each @value{DF}.
+@code{endfile()}, at the beginning and end of each data file.
Besides solving the problem in only nine(!) lines of code, it does so
@emph{portably}; this works with any implementation of @command{awk}:
@@ -19777,17 +20126,17 @@ This file must be loaded before the user's ``main'' program, so that the
rule it supplies is executed first.
This rule relies on @command{awk}'s @code{FILENAME} variable that
-automatically changes for each new @value{DF}. The current @value{FN} is
+automatically changes for each new data file. The current file name is
saved in a private variable, @code{_oldfilename}. If @code{FILENAME} does
-not equal @code{_oldfilename}, then a new @value{DF} is being processed and
+not equal @code{_oldfilename}, then a new data file is being processed and
it is necessary to call @code{endfile()} for the old file. Because
@code{endfile()} should only be called if a file has been processed, the
program first checks to make sure that @code{_oldfilename} is not the null
-string. The program then assigns the current @value{FN} to
+string. The program then assigns the current file name to
@code{_oldfilename} and calls @code{beginfile()} for the file.
Because, like all @command{awk} variables, @code{_oldfilename} is
initialized to the null string, this rule executes correctly even for the
-first @value{DF}.
+first data file.
The program also supplies an @code{END} rule to do the final processing for
the last file. Because this @code{END} rule comes before any @code{END} rules
@@ -19796,7 +20145,7 @@ again the value of multiple @code{BEGIN} and @code{END} rules should be clear.
@cindex @code{beginfile()} user-defined function
@cindex @code{endfile()} user-defined function
-If the same @value{DF} occurs twice in a row on the command line, then
+If the same data file occurs twice in a row on the command line, then
@code{endfile()} and @code{beginfile()} are not executed at the end of the
first pass and at the beginning of the second pass.
The following version solves the problem:
@@ -19940,12 +20289,12 @@ The @code{rewind()} function also relies on the @code{nextfile} keyword
(@pxref{Nextfile Statement}).
@node File Checking
-@subsection Checking for Readable @value{DDF}s
+@subsection Checking for Readable Data Files
-@cindex troubleshooting, readable @value{DF}s
-@cindex readable @value{DF}s@comma{} checking
+@cindex troubleshooting, readable data files
+@cindex readable data files@comma{} checking
@cindex files, skipping
-Normally, if you give @command{awk} a @value{DF} that isn't readable,
+Normally, if you give @command{awk} a data file that isn't readable,
it stops with a fatal error. There are times when you
might want to just ignore such files and keep going. You can
do this by prepending the following program to your @command{awk}
@@ -19994,15 +20343,15 @@ This is a by-product of @command{awk}'s implicit
read-a-record-and-match-against-the-rules loop: when @command{awk}
tries to read a record from an empty file, it immediately receives an
end of file indication, closes the file, and proceeds on to the next
-command-line @value{DF}, @emph{without} executing any user-level
+command-line data file, @emph{without} executing any user-level
@command{awk} program code.
Using @command{gawk}'s @code{ARGIND} variable
(@pxref{Built-in Variables}), it is possible to detect when an empty
-@value{DF} has been skipped. Similar to the library file presented
+data file has been skipped. Similar to the library file presented
in @ref{Filetrans Function}, the following library file calls a function named
@code{zerofile()} that the user must provide. The arguments passed are
-the @value{FN} and the position in @code{ARGV} where it was found:
+the file name and the position in @code{ARGV} where it was found:
@cindex @code{zerofile.awk} program
@example
@@ -20090,15 +20439,15 @@ END @{
@end ignore
@node Ignoring Assigns
-@subsection Treating Assignments as @value{FFN}s
+@subsection Treating Assignments as File Names
@cindex assignments as filenames
@cindex filenames, assignments as
Occasionally, you might not want @command{awk} to process command-line
variable assignments
(@pxref{Assignment Options}).
-In particular, if you have a @value{FN} that contain an @samp{=} character,
-@command{awk} treats the @value{FN} as an assignment, and does not process it.
+In particular, if you have a file name that contains an @samp{=} character,
+@command{awk} treats the file name as an assignment, and does not process it.
Some users have suggested an additional command-line option for @command{gawk}
to disable command-line assignments. However, some simple programming with
@@ -20142,7 +20491,7 @@ awk -v No_command_assign=1 -f noassign.awk -f yourprog.awk *
The function works by looping through the arguments.
It prepends @samp{./} to
any argument that matches the form
-of a variable assignment, turning that argument into a @value{FN}.
+of a variable assignment, turning that argument into a file name.
The use of @code{No_command_assign} allows you to disable command-line
assignments at invocation time, by giving the variable a true value.
@@ -20309,7 +20658,7 @@ The discussion that follows walks through the code a bit at a time:
# <c> a character representing the current option
# Private Data:
-# _opti -- index in multi-flag option, e.g., -abc
+# _opti -- index in multiflag option, e.g., -abc
@c endfile
@end example
@@ -20501,7 +20850,7 @@ After @code{getopt()} is through, it is the responsibility of the user level
code to
clear out all the elements of @code{ARGV} from 1 to @code{Optind},
so that @command{awk} does not try to process the command-line options
-as @value{FN}s.
+as file names.
@end quotation
Several of the sample programs presented in
@@ -20518,7 +20867,7 @@ use @code{getopt()} to process their arguments.
@c STARTOFRANGE libfudata
@cindex libraries of @command{awk} functions, user database, reading
@c STARTOFRANGE flibudata
-@cindex functions, library, user database, reading
+@cindex functions, library, user database@comma{} reading
@c STARTOFRANGE udatar
@cindex user database@comma{} reading
@c STARTOFRANGE dataur
@@ -20767,7 +21116,7 @@ from anywhere within a user's program, and the user may have his
or her
own way of splitting records and fields.
-@cindex @code{PROCINFO} array
+@cindex @code{PROCINFO} array, testing the field splitting
The @code{using_fw} variable checks @code{PROCINFO["FS"]}, which
is @code{"FIELDWIDTHS"} if field splitting is being done with
@code{FIELDWIDTHS}. This makes it possible to restore the correct
@@ -20776,7 +21125,7 @@ field-splitting mechanism later. The test can only be true for
or on some other @command{awk} implementation.
The code that checks for using @code{FPAT}, using @code{using_fpat}
-and @code{PROCINFO["FS"]} is similar.
+and @code{PROCINFO["FS"]}, is similar.
The main part of the function uses a loop to read database lines, split
the line into fields, and then store the line into each array as necessary.
@@ -20806,10 +21155,9 @@ function getpwnam(name)
@end example
@cindex @code{getpwuid()} function (C library)
-Similarly,
-the @code{getpwuid} function takes a user ID number argument. If that
-user number is in the database, it returns the appropriate line. Otherwise, it
-returns the null string:
+Similarly, the @code{getpwuid()} function takes a user ID number
+argument. If that user number is in the database, it returns the
+appropriate line. Otherwise, it returns the null string:
@cindex @code{getpwuid()} user-defined function
@example
@@ -20886,12 +21234,12 @@ uses these functions.
@c STARTOFRANGE libfgdata
@cindex libraries of @command{awk} functions, group database, reading
@c STARTOFRANGE flibgdata
-@cindex functions, library, group database, reading
+@cindex functions, library, group database@comma{} reading
@c STARTOFRANGE gdatar
@cindex group database, reading
@c STARTOFRANGE datagr
@cindex database, group, reading
-@cindex @code{PROCINFO} array
+@cindex @code{PROCINFO} array, and group membership
@cindex @code{getgrent()} function (C library)
@cindex @code{getgrent()} user-defined function
@cindex groups@comma{} information about
@@ -21313,7 +21661,7 @@ index and value, use the indirect function call syntax
and the value.
When calling @code{walk_array()}, you would pass the name of a user-defined
-function that expects to receive and index and a value, and then processes
+function that expects to receive an index and a value, and then processes
the element.
@@ -21375,7 +21723,7 @@ awk -f @var{program} -- @var{options} @var{files}
@noindent
Here, @var{program} is the name of the @command{awk} program (such as
@file{cut.awk}), @var{options} are any command-line options for the
-program that start with a @samp{-}, and @var{files} are the actual @value{DF}s.
+program that start with a @samp{-}, and @var{files} are the actual data files.
If your system supports the @samp{#!} executable interpreter mechanism
(@pxref{Executable Scripts}),
@@ -21580,7 +21928,7 @@ spaces. Also remember that after @code{getopt()} is through
we have to
clear out all the elements of @code{ARGV} from 1 to @code{Optind},
so that @command{awk} does not try to process the command-line options
-as @value{FN}s.
+as file names.
After dealing with the command-line options, the program verifies that the
options make sense. Only one or the other of @option{-c} and @option{-f}
@@ -21667,7 +22015,7 @@ complete field list, including filler fields:
@example
@c file eg/prog/cut.awk
-function set_charlist( field, i, j, f, g, t,
+function set_charlist( field, i, j, f, g, n, m, t,
filler, last, len)
@{
field = 1 # count total fields
@@ -21764,6 +22112,7 @@ of picking the input line apart by characters.
@cindex searching, files for regular expressions
@c STARTOFRANGE fsregexp
@cindex files, searching for regular expressions
+@c STARTOFRANGE egrep
@cindex @command{egrep} utility
The @command{egrep} utility searches files for patterns. It uses regular
expressions that are almost identical to those available in @command{awk}
@@ -21776,8 +22125,8 @@ egrep @r{[} @var{options} @r{]} '@var{pattern}' @var{files} @dots{}
The @var{pattern} is a regular expression. In typical usage, the regular
expression is quoted to prevent the shell from expanding any of the
-special characters as @value{FN} wildcards. Normally, @command{egrep}
-prints the lines that matched. If multiple @value{FN}s are provided on
+special characters as file name wildcards. Normally, @command{egrep}
+prints the lines that matched. If multiple file names are provided on
the command line, each output line is preceded by the name of the file
and a colon.
@@ -21868,7 +22217,7 @@ pattern is supplied with @option{-e}, the first nonoption on the
command line is used. The @command{awk} command-line arguments up to @code{ARGV[Optind]}
are cleared, so that @command{awk} won't try to process them as files. If no
files are specified, the standard input is used, and if multiple files are
-specified, we make sure to note this so that the @value{FN}s can precede the
+specified, we make sure to note this so that the file names can precede the
matched lines in the output:
@example
@@ -21966,9 +22315,9 @@ A number of additional tests are made, but they are only done if we
are not counting lines. First, if the user only wants exit status
(@code{no_print} is true), then it is enough to know that @emph{one}
line in this file matched, and we can skip on to the next file with
-@code{nextfile}. Similarly, if we are only printing @value{FN}s, we can
-print the @value{FN}, and then skip to the next file with @code{nextfile}.
-Finally, each line is printed, with a leading @value{FN} and colon
+@code{nextfile}. Similarly, if we are only printing file names, we can
+print the file name, and then skip to the next file with @code{nextfile}.
+Finally, each line is printed, with a leading file name and colon
if necessary:
@cindex @code{!} (exclamation point), @code{!} operator
@@ -22049,12 +22398,14 @@ or not.
@c ENDOFRANGE regexps
@c ENDOFRANGE sfregexp
@c ENDOFRANGE fsregexp
+@c ENDOFRANGE egrep
@node Id Program
@subsection Printing out User Information
@cindex printing, user information
@cindex users, information about, printing
+@c STARTOFRANGE id
@cindex @command{id} utility
The @command{id} utility lists a user's real and effective user ID numbers,
real and effective group ID numbers, and the user's group set, if any.
@@ -22067,7 +22418,7 @@ $ @kbd{id}
@print{} uid=500(arnold) gid=500(arnold) groups=6(disk),7(lp),19(floppy)
@end example
-@cindex @code{PROCINFO} array
+@cindex @code{PROCINFO} array, and user and group ID numbers
This information is part of what is provided by @command{gawk}'s
@code{PROCINFO} array (@pxref{Built-in Variables}).
However, the @command{id} utility provides a more palatable output than just
@@ -22168,7 +22519,6 @@ BEGIN \
@c endfile
@end example
-@cindex @code{in} operator
The test in the @code{for} loop is worth noting.
Any supplementary groups in the @code{PROCINFO} array have the
indices @code{"group1"} through @code{"group@var{N}"} for some
@@ -22178,7 +22528,7 @@ there are.
This loop works by starting at one, concatenating the value with
@code{"group"}, and then using @code{in} to see if that value is
-in the array. Eventually, @code{i} is incremented past
+in the array (@pxref{Reference to Elements}). Eventually, @code{i} is incremented past
the last group in the array and the loop exits.
The loop is also correct if there are @emph{no} supplementary
@@ -22191,6 +22541,7 @@ The POSIX version of @command{id} takes arguments that control which
information is printed. Modify this version to accept the same
arguments and perform in the same way.
@end ignore
+@c ENDOFRANGE id
@node Split Program
@subsection Splitting a Large File into Pieces
@@ -22199,6 +22550,7 @@ arguments and perform in the same way.
@c STARTOFRANGE filspl
@cindex files, splitting
+@c STARTOFRANGE split
@cindex @code{split} utility
The @command{split} program splits large text files into smaller pieces.
Usage is as follows:@footnote{This is the traditional usage. The
@@ -22216,7 +22568,7 @@ number of lines in each file, supply a number on the command line
preceded with a minus; e.g., @samp{-500} for files with 500 lines in them
instead of 1000. To change the name of the output files to something like
@file{myfileaa}, @file{myfileab}, and so on, supply an additional
-argument that specifies the @value{FN} prefix.
+argument that specifies the file name prefix.
Here is a version of @command{split} in @command{awk}. It uses the
@code{ord()} and @code{chr()} functions presented in
@@ -22226,8 +22578,8 @@ The program first sets its defaults, and then tests to make sure there are
not too many arguments. It then looks at each argument in turn. The
first argument could be a minus sign followed by a number. If it is, this happens
to look like a negative number, so it is made positive, and that is the
-count of lines. The data @value{FN} is skipped over and the final argument
-is used as the prefix for the output @value{FN}s:
+count of lines. The data file name is skipped over and the final argument
+is used as the prefix for the output file names:
@cindex @code{split.awk} program
@example
@@ -22276,7 +22628,7 @@ BEGIN @{
The next rule does most of the work. @code{tcount} (temporary count) tracks
how many lines have been printed to the output file so far. If it is greater
than @code{count}, it is time to close the current file and start a new one.
-@code{s1} and @code{s2} track the current suffixes for the @value{FN}. If
+@code{s1} and @code{s2} track the current suffixes for the file name. If
they are both @samp{z}, the file is just too big. Otherwise, @code{s1}
moves to the next letter in the alphabet and @code{s2} starts over again at
@samp{a}:
@@ -22342,12 +22694,14 @@ which isn't true for EBCDIC systems.
@c Exercise: Fix these problems.
@c BFD...
@c ENDOFRANGE filspl
+@c ENDOFRANGE split
@node Tee Program
@subsection Duplicating Output into Multiple Files
@cindex files, multiple@comma{} duplicating output into
@cindex output, duplicating into files
+@c STARTOFRANGE tee
@cindex @code{tee} utility
The @code{tee} program is known as a ``pipe fitting.'' @code{tee} copies
its standard input to its standard output and also duplicates it to the
@@ -22364,13 +22718,13 @@ The @code{BEGIN} rule first makes a copy of all the command-line arguments
into an array named @code{copy}.
@code{ARGV[0]} is not copied, since it is not needed.
@code{tee} cannot use @code{ARGV} directly, since @command{awk} attempts to
-process each @value{FN} in @code{ARGV} as input data.
+process each file name in @code{ARGV} as input data.
@cindex flag variables
If the first argument is @option{-a}, then the flag variable
@code{append} is set to true, and both @code{ARGV[1]} and
@code{copy[1]} are deleted. If @code{ARGC} is less than two, then no
-@value{FN}s were supplied and @code{tee} prints a usage message and exits.
+file names were supplied and @code{tee} prints a usage message and exits.
Finally, @command{awk} is forced to read the standard input by setting
@code{ARGV[1]} to @code{"-"} and @code{ARGC} to two:
@@ -22462,6 +22816,7 @@ END \
@}
@c endfile
@end example
+@c ENDOFRANGE tee
@node Uniq Program
@subsection Printing Nonduplicated Lines of Text
@@ -22472,6 +22827,7 @@ END \
@cindex printing, unduplicated lines of text
@c STARTOFRANGE tpul
@cindex text@comma{} printing, unduplicated lines of
+@c STARTOFRANGE uniq
@cindex @command{uniq} utility
The @command{uniq} utility reads sorted lines of data on its standard
input, and by default removes duplicate lines. In other words, it only
@@ -22723,6 +23079,7 @@ END @{
@end example
@c ENDOFRANGE prunt
@c ENDOFRANGE tpul
+@c ENDOFRANGE uniq
@node Wc Program
@subsection Counting Things
@@ -22739,6 +23096,7 @@ END @{
@cindex characters, counting
@c STARTOFRANGE lico
@cindex lines, counting
+@c STARTOFRANGE wc
@cindex @command{wc} utility
The @command{wc} (word count) utility counts lines, words, and characters in
one or more input files. Its usage is as follows:
@@ -22832,7 +23190,7 @@ BEGIN @{
@end example
The @code{beginfile()} function is simple; it just resets the counts of lines,
-words, and characters to zero, and saves the current @value{FN} in
+words, and characters to zero, and saves the current file name in
@code{fname}:
@example
@@ -22854,7 +23212,7 @@ you will see that
@code{FNR} has already been reset by the time
@code{endfile()} is called.} It then prints out those numbers
for the file that was just read. It relies on @code{beginfile()} to reset the
-numbers for the following @value{DF}:
+numbers for the following data file:
@c FIXME: ONE DAY: make the above footnote an exercise,
@c instead of giving away the answer.
@@ -22921,6 +23279,7 @@ END @{
@c ENDOFRANGE lico
@c ENDOFRANGE woco
@c ENDOFRANGE chco
+@c ENDOFRANGE wc
@c ENDOFRANGE posimawk
@node Miscellaneous Programs
@@ -23022,8 +23381,34 @@ word, comparing it to the previous one:
@cindex insomnia, cure for
@cindex Robbins, Arnold
@quotation
-@i{Nothing cures insomnia like a ringing alarm clock.}@*
-Arnold Robbins
+@i{Nothing cures insomnia like a ringing alarm clock.}
+@author Arnold Robbins
+@end quotation
+@cindex Quanstrom, Erik
+@ignore
+Date: Sat, 15 Feb 2014 16:47:09 -0500
+Subject: Re: 9atom install question
+Message-ID: <l2jcvx6j6mey60xnrkb0hhob.1392500829294@email.android.com>
+From: Erik Quanstrom <quanstro@quanstro.net>
+To: Aharon Robbins <arnold@skeeve.com>
+
+yes.
+
+- erik
+
+Aharon Robbins <arnold@skeeve.com> wrote:
+
+>> sleep is for web developers.
+>
+>Can I quote you, in the gawk manual?
+>
+>Thanks,
+>
+>Arnold
+@end ignore
+@quotation
+@i{Sleep is for web developers.}
+@author Erik Quanstrom
@end quotation
@c STARTOFRANGE tialarm
@@ -23189,6 +23574,7 @@ seconds are necessary:
@c STARTOFRANGE chtra
@cindex characters, transliterating
+@c STARTOFRANGE tr
@cindex @command{tr} utility
The system @command{tr} utility transliterates characters. For example, it is
often used to map uppercase letters into lowercase for further processing:
@@ -23199,12 +23585,10 @@ often used to map uppercase letters into lowercase for further processing:
@command{tr} requires two lists of characters.@footnote{On some older
systems,
-@ifset ORA
including Solaris,
-@end ifset
@command{tr} may require that the lists be written as
range expressions enclosed in square brackets (@samp{[a-z]}) and quoted,
-to prevent the shell from attempting a @value{FN} expansion. This is
+to prevent the shell from attempting a file name expansion. This is
not a feature.} When processing the input, the first character in the
first list is replaced with the first character in the second list,
the second character in the first list is replaced with the second
@@ -23339,6 +23723,7 @@ An obvious improvement to this program would be to set up the
assumes that the ``from'' and ``to'' lists
will never change throughout the lifetime of the program.
@c ENDOFRANGE chtra
+@c ENDOFRANGE tr
@node Labels Program
@subsection Printing Mailing Labels
@@ -23398,6 +23783,7 @@ that there are two blank lines at the top and two blank lines at the bottom.
The @code{END} rule arranges to flush the final page of labels; there may
not have been an even multiple of 20 labels in the data:
+@c STARTOFRANGE labels
@cindex @code{labels.awk} program
@example
@c file eg/prog/labels.awk
@@ -23465,6 +23851,7 @@ END \
@end example
@c ENDOFRANGE prml
@c ENDOFRANGE mlprint
+@c ENDOFRANGE labels
@node Word Sorting
@subsection Generating Word-Usage Counts
@@ -23531,6 +23918,7 @@ to remove punctuation characters. Finally, we solve the third problem
by using the system @command{sort} utility to process the output of the
@command{awk} script. Here is the new version of the program:
+@c STARTOFRANGE wordfreq
@cindex @code{wordfreq.awk} program
@example
@c file eg/prog/wordfreq.awk
@@ -23592,6 +23980,7 @@ have true pipes at the command-line (or batch-file) level.
See the general operating system documentation for more information on how
to use the @command{sort} program.
@c ENDOFRANGE worus
+@c ENDOFRANGE wordfreq
@node History Sorting
@subsection Removing Duplicates from Unsorted Text
@@ -23602,7 +23991,7 @@ The @command{uniq} program
(@pxref{Uniq Program}),
removes duplicate lines from @emph{sorted} data.
-Suppose, however, you need to remove duplicate lines from a @value{DF} but
+Suppose, however, you need to remove duplicate lines from a data file but
that you want to preserve the order the lines are in. A good example of
this might be a shell history file. The history file keeps a copy of all
the commands you have entered, and it is not unusual to repeat a command
@@ -23621,6 +24010,7 @@ Each element of @code{lines} is a unique command, and the indices of
The @code{END} rule simply prints out the lines, in order:
@cindex Rakitzis, Byron
+@c STARTOFRANGE histsort
@cindex @code{histsort.awk} program
@example
@c file eg/prog/histsort.awk
@@ -23663,6 +24053,7 @@ print data[lines[i]], lines[i]
This works because @code{data[$0]} is incremented each time a line is
seen.
@c ENDOFRANGE lidu
+@c ENDOFRANGE histsort
@node Extract Program
@subsection Extracting Programs from Texinfo Source Files
@@ -23694,7 +24085,8 @@ printed and online documentation.
@ifnotinfo
Texinfo is fully documented in the book
@cite{Texinfo---The GNU Documentation Format},
-available from the Free Software Foundation.
+available from the Free Software Foundation,
+and also available @uref{http://www.gnu.org/software/texinfo/manual/texinfo/, online}.
@end ifnotinfo
@ifinfo
The Texinfo language is described fully, starting with
@@ -23738,7 +24130,7 @@ Lines containing @samp{@@group} and @samp{@@end group} are simply removed.
(@pxref{Join Function}).
The example programs in the online Texinfo source for @cite{@value{TITLE}}
-(@file{gawk.texi}) have all been bracketed inside @samp{file} and
+(@file{gawktexi.in}) have all been bracketed inside @samp{file} and
@samp{endfile} lines. The @command{gawk} distribution uses a copy of
@file{extract.awk} to extract the sample programs and install many
of them in a standard directory where @command{gawk} can find them.
@@ -23772,6 +24164,7 @@ The first rule handles calling @code{system()}, checking that a command is
given (@code{NF} is at least three) and also checking that the command
exits with a zero exit status, signifying OK:
+@c STARTOFRANGE extract
@cindex @code{extract.awk} program
@example
@c file eg/prog/extract.awk
@@ -23821,7 +24214,7 @@ screen.
@end ifnottex
The second rule handles moving data into files. It verifies that a
-@value{FN} is given in the directive. If the file named is not the
+file name is given in the directive. If the file named is not the
current file, then the current file is closed. Keeping the current file
open until a new file is encountered allows the use of the @samp{>}
redirection for printing the contents, keeping open file management
@@ -23903,7 +24296,7 @@ subsequent output is appended to the file
(@pxref{Redirection}).
This makes it easy to mix program text and explanatory prose for the same
sample source file (as has been done here!) without any hassle. The file is
-only closed when a new data @value{FN} is encountered or at the end of the
+only closed when a new data file name is encountered or at the end of the
input file.
Finally, the function @code{@w{unexpected_eof()}} prints an appropriate
@@ -23930,6 +24323,7 @@ END @{
@end example
@c ENDOFRANGE texse
@c ENDOFRANGE fitex
+@c ENDOFRANGE extract
@node Simple Sed
@subsection A Simple Stream Editor
@@ -23955,10 +24349,11 @@ Here, @samp{s/old/new/g} tells @command{sed} to look for the regexp
The following program, @file{awksed.awk}, accepts at least two command-line
arguments: the pattern to look for and the text to replace it with. Any
-additional arguments are treated as data @value{FN}s to process. If none
+additional arguments are treated as data file names to process. If none
are provided, the standard input is used:
@cindex Brennan, Michael
+@c STARTOFRANGE awksed
@cindex @command{awksed.awk} program
@c @cindex simple stream editor
@c @cindex stream editor, simple
@@ -24028,7 +24423,7 @@ The @code{BEGIN} rule handles the setup, checking for the right number
of arguments and calling @code{usage()} if there is a problem. Then it sets
@code{RS} and @code{ORS} from the command-line arguments and sets
@code{ARGV[1]} and @code{ARGV[2]} to the null string, so that they are
-not treated as @value{FN}s
+not treated as file names
(@pxref{ARGC and ARGV}).
The @code{usage()} function prints an error message and exits.
@@ -24055,6 +24450,7 @@ Exercise: what are the advantages and disadvantages of this version versus sed?
Others?
@end ignore
+@c ENDOFRANGE awksed
@node Igawk Program
@subsection An Easy Way to Use Library Functions
@@ -24126,7 +24522,7 @@ Literal text, provided with @option{--source} or @option{--source=}. This
text is just appended directly.
@item
-Source @value{FN}s, provided with @option{-f}. We use a neat trick and append
+Source file names, provided with @option{-f}. We use a neat trick and append
@samp{@@include @var{filename}} to the shell variable's contents. Since the file-inclusion
program works the way @command{gawk} does, this gets the text
of the file included into the program at the correct point.
@@ -24139,7 +24535,7 @@ shell variable.
@item
Run the expanded program with @command{gawk} and any other original command-line
-arguments that the user supplied (such as the data @value{FN}s).
+arguments that the user supplied (such as the data file names).
@end enumerate
This program uses shell variables extensively: for storing command-line arguments,
@@ -24170,7 +24566,7 @@ programming trick. Don't worry about it if you are not familiar with
These are saved and passed on to @command{gawk}.
@item -f@r{,} --file@r{,} --file=@r{,} -Wfile=
-The @value{FN} is appended to the shell variable @code{program} with an
+The file name is appended to the shell variable @code{program} with an
@samp{@@include} statement.
The @command{expr} utility is used to remove the leading option part of the
argument (e.g., @samp{--file=}).
@@ -24198,6 +24594,7 @@ program.
The program is as follows:
+@c STARTOFRANGE igawk
@cindex @code{igawk.sh} program
@example
@c file eg/prog/igawk.sh
@@ -24294,10 +24691,10 @@ is stored in the shell variable @code{expand_prog}. Doing this keeps
the shell script readable. The @command{awk} program
reads through the user's program, one line at a time, using @code{getline}
(@pxref{Getline}). The input
-@value{FN}s and @samp{@@include} statements are managed using a stack.
-As each @samp{@@include} is encountered, the current @value{FN} is
+file names and @samp{@@include} statements are managed using a stack.
+As each @samp{@@include} is encountered, the current file name is
``pushed'' onto the stack and the file named in the @samp{@@include}
-directive becomes the current @value{FN}. As each file is finished,
+directive becomes the current file name. As each file is finished,
the stack is ``popped,'' and the previous input file becomes the current
input file again. The process is started by making the original file
the first one on the stack.
@@ -24306,16 +24703,16 @@ The @code{pathto()} function does the work of finding the full path to
a file. It simulates @command{gawk}'s behavior when searching the
@env{AWKPATH} environment variable
(@pxref{AWKPATH Variable}).
-If a @value{FN} has a @samp{/} in it, no path search is done.
-Similarly, if the @value{FN} is @code{"-"}, then that string is
+If a file name has a @samp{/} in it, no path search is done.
+Similarly, if the file name is @code{"-"}, then that string is
used as-is. Otherwise,
-the @value{FN} is concatenated with the name of each directory in
-the path, and an attempt is made to open the generated @value{FN}.
+the file name is concatenated with the name of each directory in
+the path, and an attempt is made to open the generated file name.
The only way to test if a file can be read in @command{awk} is to go
ahead and try to read it with @code{getline}; this is what @code{pathto()}
does.@footnote{On some very old versions of @command{awk}, the test
@samp{getline junk < t} can loop forever if the file exists but is empty.
-Caveat emptor.} If the file can be read, it is closed and the @value{FN}
+Caveat emptor.} If the file can be read, it is closed and the file name
is returned:
@ignore
@@ -24370,17 +24767,17 @@ BEGIN @{
@c endfile
@end example
-The stack is initialized with @code{ARGV[1]}, which will be @file{/dev/stdin}.
+The stack is initialized with @code{ARGV[1]}, which will be @samp{/dev/stdin}.
The main loop comes next. Input lines are read in succession. Lines that
do not start with @samp{@@include} are printed verbatim.
-If the line does start with @samp{@@include}, the @value{FN} is in @code{$2}.
+If the line does start with @samp{@@include}, the file name is in @code{$2}.
@code{pathto()} is called to generate the full path. If it cannot, then the program
prints an error message and continues.
The next thing to check is if the file is included already. The
-@code{processed} array is indexed by the full @value{FN} of each included
+@code{processed} array is indexed by the full file name of each included
file and it tracks this information for us. If the file is
-seen again, a warning message is printed. Otherwise, the new @value{FN} is
+seen again, a warning message is printed. Otherwise, the new file name is
pushed onto the stack and processing continues.
Finally, when @code{getline} encounters the end of the input file, the file
@@ -24458,10 +24855,10 @@ options and command-line arguments that the user supplied.
@c this causes more problems than it solves, so leave it out.
@ignore
-The special file @file{/dev/null} is passed as a @value{DF} to @command{gawk}
+The special file @file{/dev/null} is passed as a data file to @command{gawk}
to handle an interesting case. Suppose that the user's program only has
-a @code{BEGIN} rule and there are no @value{DF}s to read.
-The program should exit without reading any @value{DF}s.
+a @code{BEGIN} rule and there are no data files to read.
+The program should exit without reading any data files.
However, suppose that an included library file defines an @code{END}
rule of its own. In this case, @command{gawk} will hang, reading standard
input. In order to avoid this, @file{/dev/null} is explicitly added to the
@@ -24557,10 +24954,12 @@ statements for the desired library functions.
@c ENDOFRANGE libfex
@c ENDOFRANGE flibex
@c ENDOFRANGE awkpex
+@c ENDOFRANGE igawk
@node Anagram Program
@subsection Finding Anagrams From A Dictionary
+@cindex anagrams, finding
An interesting programming challenge is to
search for @dfn{anagrams} in a
word list (such as
@@ -24580,6 +24979,7 @@ The following program uses arrays of arrays to bring together
words with the same signature and array sorting to print the words
in sorted order.
+@c STARTOFRANGE anagram
@cindex @code{anagram.awk} program
@example
@c file eg/prog/anagram.awk
@@ -24687,10 +25087,13 @@ babels beslab
babery yabber
@dots{}
@end example
+@c ENDOFRANGE anagram
@node Signature Program
@subsection And Now For Something Completely Different
+@cindex signature program
+@cindex Brini, Davide
The following program was written by Davide Brini
@c (@email{dave_br@@gmx.com})
and is published on @uref{http://backreference.org/2011/02/03/obfuscated-awk/,
@@ -24822,12 +25225,15 @@ It contains the following chapters:
@item
@ref{Dynamic Extensions}.
+@end itemize
@end ifdocbook
@end ignore
@node Advanced Features
@chapter Advanced Features of @command{gawk}
-@cindex advanced features, network connections, See Also networks, connections
+@ifset WITH_NETWORK_CHAPTER
+@cindex advanced features, network connections, See Also networks@comma{} connections
+@end ifset
@c STARTOFRANGE gawadv
@cindex @command{gawk}, features, advanced
@c STARTOFRANGE advgaw
@@ -24842,8 +25248,8 @@ who knows where you live."
@end ignore
@quotation
@i{Write documentation as if whoever reads it is
-a violent psychopath who knows where you live.}@*
-Steve English, as quoted by Peter Langston
+a violent psychopath who knows where you live.}
+@author Steve English, as quoted by Peter Langston
@end quotation
This @value{CHAPTER} discusses advanced features in @command{gawk}.
@@ -24893,7 +25299,7 @@ discusses the ability to dynamically add new built-in functions to
@node Nondecimal Data
@section Allowing Nondecimal Input Data
-@cindex @code{--non-decimal-data} option
+@cindex @option{--non-decimal-data} option
@cindex advanced features, nondecimal input data
@cindex input, data@comma{} nondecimal
@cindex constants, nondecimal
@@ -24937,7 +25343,7 @@ using this facility could lead to surprising results, the default is to leave it
disabled. If you want it, you must explicitly request it.
@cindex programming conventions, @code{--non-decimal-data} option
-@cindex @code{--non-decimal-data} option, @code{strtonum()} function and
+@cindex @option{--non-decimal-data} option, @code{strtonum()} function and
@cindex @code{strtonum()} function (@command{gawk}), @code{--non-decimal-data} option and
@quotation CAUTION
@emph{Use of this option is not recommended.}
@@ -25162,7 +25568,7 @@ ordered data:
@example
function cmp_randomize(i1, v1, i2, v2)
@{
- # random order
+ # random order (caution: this may never terminate!)
return (2 - 4 * rand())
@}
@end example
@@ -25177,7 +25583,7 @@ with otherwise equal values is to include the indices in the comparison
rules. Note that doing this may make the loop traversal less efficient,
so consider it only if necessary. The following comparison functions
force a deterministic order, and are based on the fact that the
-indices of two elements are never equal:
+(string) indices of two elements are never equal:
@example
function cmp_numeric(i1, v1, i2, v2)
@@ -25234,17 +25640,16 @@ sorted array traversal is not the default.
@subsection Sorting Array Values and Indices with @command{gawk}
@cindex arrays, sorting
-@cindex @code{asort()} function (@command{gawk})
+@cindexgawkfunc{asort}
@cindex @code{asort()} function (@command{gawk}), arrays@comma{} sorting
+@cindexgawkfunc{asorti}
+@cindex @code{asorti()} function (@command{gawk}), arrays@comma{} sorting
@cindex sort function, arrays, sorting
-In most @command{awk} implementations, sorting an array requires
-writing 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()}
-and @code{asorti()} functions
-(@pxref{String Functions})
-for sorting arrays. For example:
+In most @command{awk} implementations, sorting an array requires 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()} and @code{asorti()}
+functions (@pxref{String Functions}) for sorting arrays. For example:
@example
@var{populate the array} data
@@ -25257,7 +25662,7 @@ After the call to @code{asort()}, the array @code{data} is indexed from 1
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 comparison is based on the type of the elements
+The default 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.
@@ -25279,24 +25684,11 @@ In this case, @command{gawk} copies the @code{source} array into the
@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 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
-array's element values. The ability to control comparison merely
-affects the way in which they are sorted.
-@end quotation
-
Often, what's needed is to sort on the values of the @emph{indices}
-instead of the values of the elements.
-To do that, use the
-@code{asorti()} function. The interface is identical to that of
-@code{asort()}, except that the index values are used for sorting, and
-become the values of the result array:
+instead of the values of the elements. To do that, use the
+@code{asorti()} function. The interface and behavior are identical to
+that of @code{asort()}, except that the index values are used for sorting,
+and become the values of the result array:
@example
@{ source[$0] = some_func($0) @}
@@ -25313,29 +25705,40 @@ END @{
@}
@end example
-Similar to @code{asort()},
-in all cases, the sorted element values consist of the original
-array's indices. The ability to control comparison merely
-affects the way in which they are sorted.
+So far, so good. Now it starts to get interesting. Both @code{asort()}
+and @code{asorti()} accept a third string argument to control comparison
+of array elements. In @ref{String Functions}, we ignored this third
+argument; however, the time has now come to describe how this argument
+affects these two functions.
+
+Basically, the third argument specifies how the array is to be sorted.
+There are two possibilities. As with @code{PROCINFO["sorted_in"]},
+this argument may be one of the predefined names that @command{gawk}
+provides (@pxref{Controlling Scanning}), or it may be the name of a
+user-defined function (@pxref{Controlling Array Traversal}).
-Sorting the array by replacing the indices provides maximal flexibility.
-To traverse the elements in decreasing order, use a loop that goes from
-@var{n} down to 1, either over the elements or over the indices.@footnote{You
-may also use one of the predefined sorting names that sorts in
-decreasing order.}
+In the latter case, @emph{the function can compare elements in any way
+it chooses}, taking into account just the indices, just the values,
+or both. This is extremely powerful.
+
+Once the array is sorted, @code{asort()} takes the @emph{values} in
+their final order, and uses them to fill in the result array, whereas
+@code{asorti()} takes the @emph{indices} in their final order, and uses
+them to fill in the result array.
@cindex reference counting, sorting arrays
+@quotation NOTE
Copying array indices and elements isn't expensive in terms of memory.
Internally, @command{gawk} maintains @dfn{reference counts} to data.
For example, when @code{asort()} copies the first array to the second one,
there is only one copy of the original array elements' data, even though
both arrays use the values.
+@end quotation
@c Document It And Call It A Feature. Sigh.
@cindex @command{gawk}, @code{IGNORECASE} variable in
-@cindex @code{IGNORECASE} variable
-@cindex arrays, sorting, @code{IGNORECASE} variable and
-@cindex @code{IGNORECASE} variable, array sorting and
+@cindex arrays, sorting, and @code{IGNORECASE} variable
+@cindex @code{IGNORECASE} variable, and array sorting functions
Because @code{IGNORECASE} affects string comparisons, the value
of @code{IGNORECASE} also affects sorting for both @code{asort()} and @code{asorti()}.
Note also that the locale's sorting order does @emph{not}
@@ -25414,7 +25817,7 @@ open a @emph{two-way} pipe to another process. The second process is
termed a @dfn{coprocess}, since it runs in parallel with @command{gawk}.
The two-way connection is created using the @samp{|&} operator
(borrowed from the Korn shell, @command{ksh}):@footnote{This is very
-different from the same operator in the C shell.}
+different from the same operator in the C shell and in Bash.}
@example
do @{
@@ -25504,7 +25907,7 @@ As a side note, the assignment @samp{LC_ALL=C} in the @command{sort}
command ensures traditional Unix (ASCII) sorting from @command{sort}.
@cindex @command{gawk}, @code{PROCINFO} array in
-@cindex @code{PROCINFO} array
+@cindex @code{PROCINFO} array, and communications via ptys
You may also use pseudo-ttys (ptys) for
two-way communication instead of pipes, if your system supports them.
This is done on a per-command basis, by setting a special element
@@ -25555,10 +25958,10 @@ another process on another system across an IP network connection.
You can think of this as just a @emph{very long} two-way pipeline to
a coprocess.
The way @command{gawk} decides that you want to use TCP/IP networking is
-by recognizing special @value{FN}s that begin with one of @samp{/inet/},
+by recognizing special file names that begin with one of @samp{/inet/},
@samp{/inet4/} or @samp{/inet6}.
-The full syntax of the special @value{FN} is
+The full syntax of the special file name is
@file{/@var{net-type}/@var{protocol}/@var{local-port}/@var{remote-host}/@var{remote-port}}.
The components are:
@@ -25647,7 +26050,7 @@ When @command{gawk} has finished running, it creates a profile of your program i
named @file{awkprof.out}. Because it is profiling, it also executes up to 45% slower than
@command{gawk} normally does.
-@cindex @code{--profile} option
+@cindex @option{--profile} option
As shown in the following example,
the @option{--profile} option can be used to change the name of the file
where @command{gawk} will write the profile:
@@ -25702,52 +26105,60 @@ foo
junk
@end example
-Here is the @file{awkprof.out} that results from running the @command{gawk}
-profiler on this program and data (this example also illustrates that @command{awk}
-programmers sometimes have to work late):
+Here is the @file{awkprof.out} that results from running the
+@command{gawk} profiler on this program and data. (This example also
+illustrates that @command{awk} programmers sometimes get up very early
+in the morning to work.)
-@cindex @code{BEGIN} pattern
-@cindex @code{END} pattern
+@cindex @code{BEGIN} pattern, and profiling
+@cindex @code{END} pattern, and profiling
@example
- # gawk profile, created Sun Aug 13 00:00:15 2000
+ # gawk profile, created Thu Feb 27 05:16:21 2014
- # BEGIN block(s)
+ # BEGIN block(s)
- BEGIN @{
- 1 print "First BEGIN rule"
- 1 print "Second BEGIN rule"
- @}
+ BEGIN @{
+ 1 print "First BEGIN rule"
+ @}
+
+ BEGIN @{
+ 1 print "Second BEGIN rule"
+ @}
- # Rule(s)
+ # Rule(s)
- 5 /foo/ @{ # 2
- 2 print "matched /foo/, gosh"
- 6 for (i = 1; i <= 3; i++) @{
- 6 sing()
- @}
- @}
+ 5 /foo/ @{ # 2
+ 2 print "matched /foo/, gosh"
+ 6 for (i = 1; i <= 3; i++) @{
+ 6 sing()
+ @}
+ @}
- 5 @{
- 5 if (/foo/) @{ # 2
- 2 print "if is true"
- 3 @} else @{
- 3 print "else is true"
- @}
- @}
+ 5 @{
+ 5 if (/foo/) @{ # 2
+ 2 print "if is true"
+ 3 @} else @{
+ 3 print "else is true"
+ @}
+ @}
- # END block(s)
+ # END block(s)
- END @{
- 1 print "First END rule"
- 1 print "Second END rule"
- @}
+ END @{
+ 1 print "First END rule"
+ @}
- # Functions, listed alphabetically
+ END @{
+ 1 print "Second END rule"
+ @}
- 6 function sing(dummy)
- @{
- 6 print "I gotta be me!"
- @}
+
+ # Functions, listed alphabetically
+
+ 6 function sing(dummy)
+ @{
+ 6 print "I gotta be me!"
+ @}
@end example
This example illustrates many of the basic features of profiling output.
@@ -25755,15 +26166,16 @@ They are as follows:
@itemize @bullet
@item
-The program is printed in the order @code{BEGIN} rule,
-@code{BEGINFILE} rule,
+The program is printed in the order @code{BEGIN} rules,
+@code{BEGINFILE} rules,
pattern/action rules,
-@code{ENDFILE} rule, @code{END} rule and functions, listed
+@code{ENDFILE} rules, @code{END} rules and functions, listed
alphabetically.
-Multiple @code{BEGIN} and @code{END} rules are merged together,
-as are multiple @code{BEGINFILE} and @code{ENDFILE} rules.
+Multiple @code{BEGIN} and @code{END} rules retain their
+separate identities, as do
+multiple @code{BEGINFILE} and @code{ENDFILE} rules.
-@cindex patterns, counts
+@cindex patterns, counts, in a profile
@item
Pattern-action rules have two counts.
The first count, to the left of the rule, shows how many times
@@ -25783,7 +26195,7 @@ is a count showing how many times the condition was true.
The count for the @code{else}
indicates how many times the test failed.
-@cindex loops, count for header
+@cindex loops, count for header, in a profile
@item
The count for a loop header (such as @code{for}
or @code{while}) shows how many times the loop test was executed.
@@ -25791,8 +26203,8 @@ or @code{while}) shows how many times the loop test was executed.
statement in a rule to determine how many times the rule was executed.
If the first statement is a loop, the count is misleading.)
-@cindex functions, user-defined, counts
-@cindex user-defined, functions, counts
+@cindex functions, user-defined, counts, in a profile
+@cindex user-defined, functions, counts, in a profile
@item
For user-defined functions, the count next to the @code{function}
keyword indicates how many times the function was called.
@@ -25806,8 +26218,8 @@ The layout uses ``K&R'' style with TABs.
Braces are used everywhere, even when
the body of an @code{if}, @code{else}, or loop is only a single statement.
-@cindex @code{()} (parentheses)
-@cindex parentheses @code{()}
+@cindex @code{()} (parentheses), in a profile
+@cindex parentheses @code{()}, in a profile
@item
Parentheses are used only where needed, as indicated by the structure
of the program and the precedence rules.
@@ -25842,8 +26254,8 @@ typed when you wrote it. This is because @command{gawk} creates the
profiled version by ``pretty printing'' its internal representation of
the program. The advantage to this is that @command{gawk} can produce
a standard representation. The disadvantage is that all source-code
-comments are lost, as are the distinctions among multiple @code{BEGIN},
-@code{END}, @code{BEGINFILE}, and @code{ENDFILE} rules. Also, things such as:
+comments are lost.
+Also, things such as:
@example
/foo/
@@ -25863,6 +26275,7 @@ which is correct, but possibly surprising.
@cindex profiling @command{awk} programs, dynamically
@cindex @command{gawk} program, dynamic profiling
+@cindex dynamic profiling
Besides creating profiles when a program has completed,
@command{gawk} can produce a profile while it is running.
This is useful if your @command{awk} program goes into an
@@ -25876,9 +26289,9 @@ $ @kbd{gawk --profile -f myprog &}
@end example
@cindex @command{kill} command@comma{} dynamic profiling
-@cindex @code{USR1} signal
-@cindex @code{SIGUSR1} signal
-@cindex signals, @code{USR1}/@code{SIGUSR1}
+@cindex @code{USR1} signal, for dynamic profiling
+@cindex @code{SIGUSR1} signal, for dynamic profiling
+@cindex signals, @code{USR1}/@code{SIGUSR1}, for profiling
@noindent
The shell prints a job number and process ID number; in this case, 13992.
Use the @command{kill} command to send the @code{USR1} signal
@@ -25909,9 +26322,9 @@ You may send @command{gawk} the @code{USR1} signal as many times as you like.
Each time, the profile and function call trace are appended to the output
profile file.
-@cindex @code{HUP} signal
-@cindex @code{SIGHUP} signal
-@cindex signals, @code{HUP}/@code{SIGHUP}
+@cindex @code{HUP} signal, for dynamic profiling
+@cindex @code{SIGHUP} signal, for dynamic profiling
+@cindex signals, @code{HUP}/@code{SIGHUP}, for profiling
If you use the @code{HUP} signal instead of the @code{USR1} signal,
@command{gawk} produces the profile and the function call trace and then exits.
@@ -25927,12 +26340,17 @@ the case of the @code{INT} signal, @command{gawk} exits. This is
because these systems don't support the @command{kill} command, so the
only signals you can deliver to a program are those generated by the
keyboard. The @code{INT} signal is generated by the
-@kbd{@value{CTL}-@key{C}} or @kbd{@value{CTL}-@key{BREAK}} key, while the
-@code{QUIT} signal is generated by the @kbd{@value{CTL}-@key{\}} key.
+@kbd{Ctrl-@key{C}} or @kbd{Ctrl-@key{BREAK}} key, while the
+@code{QUIT} signal is generated by the @kbd{Ctrl-@key{\}} key.
Finally, @command{gawk} also accepts another option, @option{--pretty-print}.
When called this way, @command{gawk} ``pretty prints'' the program into
@file{awkprof.out}, without any execution counts.
+
+@quotation NOTE
+The @option{--pretty-print} option still runs your program.
+This will change in the next major release.
+@end quotation
@c ENDOFRANGE advgaw
@c ENDOFRANGE gawadv
@c ENDOFRANGE awkp
@@ -26044,6 +26462,7 @@ lookup of the translations.
@cindex @code{.po} files
@cindex files, @code{.po}
+@c STARTOFRANGE portobfi
@cindex portable object files
@cindex files, portable object
@item
@@ -26055,6 +26474,7 @@ For example, there might be a @file{fr.po} for a French translation.
@cindex @code{.gmo} files
@cindex files, @code{.gmo}
@cindex message object files
+@c STARTOFRANGE portmsgfi
@cindex files, message object
@item
Each language's @file{.po} file is converted into a binary
@@ -26202,7 +26622,7 @@ String constants marked with a leading underscore
are candidates for translation at runtime.
String constants without a leading underscore are not translated.
-@cindex @code{dcgettext()} function (@command{gawk})
+@cindexgawkfunc{dcgettext}
@item dcgettext(@var{string} @r{[}, @var{domain} @r{[}, @var{category}@r{]]})
Return the translation of @var{string} in
text domain @var{domain} for locale category @var{category}.
@@ -26228,7 +26648,7 @@ chosen to be simple and to allow for reasonable @command{awk}-style
default arguments.
@end quotation
-@cindex @code{dcngettext()} function (@command{gawk})
+@cindexgawkfunc{dcngettext}
@item dcngettext(@var{string1}, @var{string2}, @var{number} @r{[}, @var{domain} @r{[}, @var{category}@r{]]})
Return the plural form used for @var{number} of the
translation of @var{string1} and @var{string2} in text domain
@@ -26244,7 +26664,7 @@ The same remarks about argument order as for the @code{dcgettext()} function app
@cindex files, @code{.gmo}, specifying directory of
@cindex message object files, specifying directory of
@cindex files, message object, specifying directory of
-@cindex @code{bindtextdomain()} function (@command{gawk})
+@cindexgawkfunc{bindtextdomain}
@item bindtextdomain(@var{directory} @r{[}, @var{domain}@r{]})
Change the directory in which
@code{gettext} looks for @file{.gmo} files, in case they
@@ -26346,7 +26766,7 @@ and use translations from @command{awk}.
@cindex portable object files
@cindex files, portable object
Once a program's translatable strings have been marked, they must
-be extracted to create the initial @file{.po} file.
+be extracted to create the initial @file{.pot} file.
As part of translation, it is often helpful to rearrange the order
in which arguments to @code{printf} are output.
@@ -26366,13 +26786,13 @@ is covered.
@subsection Extracting Marked Strings
@cindex strings, extracting
@cindex marked strings@comma{} extracting
-@cindex @code{--gen-pot} option
+@cindex @option{--gen-pot} option
@cindex command-line options, string extraction
@cindex string extraction (internationalization)
@cindex marked string extraction (internationalization)
@cindex extraction, of marked strings (internationalization)
-@cindex @code{--gen-pot} option
+@cindex @option{--gen-pot} option
Once your @command{awk} program is working, and all the strings have
been marked and you've set (and perhaps bound) the text domain,
it is time to produce translations.
@@ -26395,6 +26815,8 @@ second argument to @code{dcngettext()}.@footnote{The
@xref{I18N Example},
for the full list of steps to go through to create and test
translations for @command{guide}.
+@c ENDOFRANGE portobfi
+@c ENDOFRANGE portmsgfi
@node Printf Ordering
@subsection Rearranging @code{printf} Arguments
@@ -26441,7 +26863,7 @@ example, @samp{string} is the first argument and @samp{length(string)} is the se
@example
$ @kbd{gawk 'BEGIN @{}
> @kbd{string = "Dont Panic"}
-> @kbd{printf _"%2$d characters live in \"%1$s\"\n",}
+> @kbd{printf "%2$d characters live in \"%1$s\"\n",}
> @kbd{string, length(string)}
> @kbd{@}'}
@print{} 10 characters live in "Dont Panic"
@@ -26475,7 +26897,7 @@ This is somewhat counterintuitive.
and those with positional specifiers in the same string:
@example
-$ @kbd{gawk 'BEGIN @{ printf _"%d %3$s\n", 1, 2, "hi" @}'}
+$ @kbd{gawk 'BEGIN @{ printf "%d %3$s\n", 1, 2, "hi" @}'}
@error{} gawk: cmd. line:1: fatal: must use `count$' on all formats or none
@end example
@@ -26720,7 +27142,7 @@ complete detail in
@cite{GNU gettext tools}.)
@end ifnotinfo
As of this writing, the latest version of GNU @code{gettext} is
-@uref{ftp://ftp.gnu.org/gnu/gettext/gettext-0.18.2.1.tar.gz, @value{PVERSION} 0.18.2.1}.
+@uref{ftp://ftp.gnu.org/gnu/gettext/gettext-0.18.2.1.tar.gz, version 0.18.2.1}.
If a translation of @command{gawk}'s messages exists,
then @command{gawk} produces usage messages, warnings,
@@ -26816,6 +27238,7 @@ The following list defines terms used throughout the rest of
this @value{CHAPTER}.
@table @dfn
+@cindex stack frame
@item Stack Frame
Programs generally call functions during the course of their execution.
One function can call another, or a function can call itself (recursion).
@@ -26837,6 +27260,7 @@ invoked. Commands that print the call stack print information about
each stack frame (as detailed later on).
@item Breakpoint
+@cindex breakpoint
During debugging, you often wish to let the program run until it
reaches a certain point, and then continue execution from there one
statement (or instruction) at a time. The way to do this is to set
@@ -26846,6 +27270,7 @@ take over control of the program's execution. You can add and remove
as many breakpoints as you like.
@item Watchpoint
+@cindex watchpoint
A watchpoint is similar to a breakpoint. The difference is that
breakpoints are oriented around the code: stop when a certain point in the
code is reached. A watchpoint, however, specifies that program execution
@@ -26877,6 +27302,7 @@ by the higher-level @command{awk} commands.
@node Sample Debugging Session
@section Sample Debugging Session
+@cindex sample debugging session
In order to illustrate the use of @command{gawk} as a debugger, let's look at a sample
debugging session. We will use the @command{awk} implementation of the
@@ -26890,13 +27316,16 @@ as our example.
@node Debugger Invocation
@subsection How to Start the Debugger
+@cindex starting the debugger
+@cindex debugger, how to start
-Starting the debugger is almost exactly like running @command{awk}, except you have to
-pass an additional option @option{--debug} or the corresponding short option @option{-D}.
-The file(s) containing the program and any supporting code are given on the command
-line as arguments to one or more @option{-f} options. (@command{gawk} is not designed
-to debug command-line programs, only programs contained in files.) In our case,
-we invoke the debugger like this:
+Starting the debugger is almost exactly like running @command{gawk},
+except you have to pass an additional option @option{--debug} or the
+corresponding short option @option{-D}. The file(s) containing the
+program and any supporting code are given on the command line as arguments
+to one or more @option{-f} options. (@command{gawk} is not designed
+to debug command-line programs, only programs contained in files.)
+In our case, we invoke the debugger like this:
@example
$ @kbd{gawk -D -f getopt.awk -f join.awk -f uniq.awk inputfile}
@@ -27029,7 +27458,7 @@ gawk> @kbd{p NR}
@noindent
So we can see that @code{are_equal()} was only called for the second record
-of the file. Of course, this is because our program contained a rule for
+of the file. Of course, this is because our program contains a rule for
@samp{NR == 1}:
@example
@@ -27229,21 +27658,24 @@ controlling breakpoints are:
@cindex debugger commands, @code{break}
@cindex @code{break} debugger command
@cindex @code{b} debugger command (alias for @code{break})
+@cindex set breakpoint
+@cindex breakpoint, setting
@item @code{break} [[@var{filename}@code{:}]@var{n} | @var{function}] [@code{"@var{expression}"}]
@itemx @code{b} [[@var{filename}@code{:}]@var{n} | @var{function}] [@code{"@var{expression}"}]
Without any argument, set a breakpoint at the next instruction
to be executed in the selected stack frame.
Arguments can be one of the following:
+@c @asis for docbook
@c nested table
-@table @var
-@item n
+@table @asis
+@item @var{n}
Set a breakpoint at line number @var{n} in the current source file.
-@item filename@code{:}n
+@item @var{filename}@code{:}@var{n}
Set a breakpoint at line number @var{n} in source file @var{filename}.
-@item function
+@item @var{function}
Set a breakpoint at entry to (the first instruction of)
function @var{function}.
@end table
@@ -27259,6 +27691,8 @@ it continues executing the program.
@cindex debugger commands, @code{clear}
@cindex @code{clear} debugger command
+@cindex delete breakpoint at location
+@cindex breakpoint at location, how to delete
@item @code{clear} [[@var{filename}@code{:}]@var{n} | @var{function}]
Without any argument, delete any breakpoint at the next instruction
to be executed in the selected stack frame. If the program stops at
@@ -27266,19 +27700,20 @@ a breakpoint, this deletes that breakpoint so that the program
does not stop at that location again. Arguments can be one of the following:
@c nested table
-@table @var
-@item n
+@table @asis
+@item @var{n}
Delete breakpoint(s) set at line number @var{n} in the current source file.
-@item filename@code{:}n
+@item @var{filename}@code{:}@var{n}
Delete breakpoint(s) set at line number @var{n} in source file @var{filename}.
-@item function
+@item @var{function}
Delete breakpoint(s) set at entry to function @var{function}.
@end table
@cindex debugger commands, @code{condition}
@cindex @code{condition} debugger command
+@cindex breakpoint condition
@item @code{condition} @var{n} @code{"@var{expression}"}
Add a condition to existing breakpoint or watchpoint @var{n}. The
condition is an @command{awk} expression that the debugger evaluates
@@ -27292,6 +27727,8 @@ watchpoint is made unconditional.
@cindex debugger commands, @code{delete}
@cindex @code{delete} debugger command
@cindex @code{d} debugger command (alias for @code{delete})
+@cindex delete breakpoint by number
+@cindex breakpoint, delete by number
@item @code{delete} [@var{n1 n2} @dots{}] [@var{n}--@var{m}]
@itemx @code{d} [@var{n1 n2} @dots{}] [@var{n}--@var{m}]
Delete specified breakpoints or a range of breakpoints. Deletes
@@ -27299,6 +27736,8 @@ all defined breakpoints if no argument is supplied.
@cindex debugger commands, @code{disable}
@cindex @code{disable} debugger command
+@cindex disable breakpoint
+@cindex breakpoint, how to disable or enable
@item @code{disable} [@var{n1 n2} @dots{} | @var{n}--@var{m}]
Disable specified breakpoints or a range of breakpoints. Without
any argument, disables all breakpoints.
@@ -27307,6 +27746,7 @@ any argument, disables all breakpoints.
@cindex debugger commands, @code{enable}
@cindex @code{enable} debugger command
@cindex @code{e} debugger command (alias for @code{enable})
+@cindex enable breakpoint
@item @code{enable} [@code{del} | @code{once}] [@var{n1 n2} @dots{}] [@var{n}--@var{m}]
@itemx @code{e} [@code{del} | @code{once}] [@var{n1 n2} @dots{}] [@var{n}--@var{m}]
Enable specified breakpoints or a range of breakpoints. Without
@@ -27326,6 +27766,7 @@ the program stops at the breakpoint.
@cindex debugger commands, @code{ignore}
@cindex @code{ignore} debugger command
+@cindex ignore breakpoint
@item @code{ignore} @var{n} @var{count}
Ignore breakpoint number @var{n} the next @var{count} times it is
hit.
@@ -27334,6 +27775,7 @@ hit.
@cindex debugger commands, @code{tbreak}
@cindex @code{tbreak} debugger command
@cindex @code{t} debugger command (alias for @code{tbreak})
+@cindex temporary breakpoint
@item @code{tbreak} [[@var{filename}@code{:}]@var{n} | @var{function}]
@itemx @code{t} [[@var{filename}@code{:}]@var{n} | @var{function}]
Set a temporary breakpoint (enabled for only one stop).
@@ -27354,6 +27796,8 @@ execution of the program than we saw in our earlier example:
@cindex @code{silent} debugger command
@cindex debugger commands, @code{end}
@cindex @code{end} debugger command
+@cindex breakpoint commands
+@cindex commands to execute at breakpoint
@item @code{commands} [@var{n}]
@itemx @code{silent}
@itemx @dots{}
@@ -27381,6 +27825,7 @@ gawk>
@cindex debugger commands, @code{c} (@code{continue})
@cindex debugger commands, @code{continue}
+@cindex continue program, in debugger
@item @code{continue} [@var{count}]
@itemx @code{c} [@var{count}]
Resume program execution. If continued from a breakpoint and @var{count} is
@@ -27397,6 +27842,7 @@ Print the returned value.
@cindex debugger commands, @code{next}
@cindex @code{next} debugger command
@cindex @code{n} debugger command (alias for @code{next})
+@cindex single-step execution, in the debugger
@item @code{next} [@var{count}]
@itemx @code{n} [@var{count}]
Continue execution to the next source line, stepping over function calls.
@@ -27491,6 +27937,7 @@ items on the list.
@cindex debugger commands, @code{eval}
@cindex @code{eval} debugger command
+@cindex evaluate expressions, in debugger
@item @code{eval "@var{awk statements}"}
Evaluate @var{awk statements} in the context of the running program.
You can do anything that an @command{awk} program would do: assign
@@ -27508,6 +27955,7 @@ parameters defined by the program.
@cindex debugger commands, @code{print}
@cindex @code{print} debugger command
@cindex @code{p} debugger command (alias for @code{print})
+@cindex print variables, in debugger
@item @code{print} @var{var1}[@code{,} @var{var2} @dots{}]
@itemx @code{p} @var{var1}[@code{,} @var{var2} @dots{}]
Print the value of a @command{gawk} variable or field.
@@ -27541,6 +27989,7 @@ No newline is printed unless one is specified.
@cindex debugger commands, @code{set}
@cindex @code{set} debugger command
+@cindex assign values to variables, in debugger
@item @code{set} @var{var}@code{=}@var{value}
Assign a constant (number or string) value to an @command{awk} variable
or field.
@@ -27553,6 +28002,7 @@ You can also set special @command{awk} variables, such as @code{FS},
@cindex debugger commands, @code{watch}
@cindex @code{watch} debugger command
@cindex @code{w} debugger command (alias for @code{watch})
+@cindex set watchpoint
@item @code{watch} @var{var} | @code{$}@var{n} [@code{"@var{expression}"}]
@itemx @code{w} @var{var} | @code{$}@var{n} [@code{"@var{expression}"}]
Add variable @var{var} (or field @code{$@var{n}}) to the watch list.
@@ -27569,12 +28019,14 @@ then the debugger stops execution and prompts for a command. Otherwise,
@cindex debugger commands, @code{undisplay}
@cindex @code{undisplay} debugger command
+@cindex stop automatic display, in debugger
@item @code{undisplay} [@var{n}]
Remove item number @var{n} (or all items, if no argument) from the
automatic display list.
@cindex debugger commands, @code{unwatch}
@cindex @code{unwatch} debugger command
+@cindex delete watchpoint
@item @code{unwatch} [@var{n}]
Remove item number @var{n} (or all items, if no argument) from the
watch list.
@@ -27595,12 +28047,14 @@ functions which called the one you are in. The commands for doing this are:
@cindex debugger commands, @code{backtrace}
@cindex @code{backtrace} debugger command
@cindex @code{bt} debugger command (alias for @code{backtrace})
+@cindex call stack, display in debugger
+@cindex traceback, display in debugger
@item @code{backtrace} [@var{count}]
@itemx @code{bt} [@var{count}]
Print a backtrace of all function calls (stack frames), or innermost @var{count}
frames if @var{count} > 0. Print the outermost @var{count} frames if
@var{count} < 0. The backtrace displays the name and arguments to each
-function, the source @value{FN}, and the line number.
+function, the source file name, and the line number.
@cindex debugger commands, @code{down}
@cindex @code{down} debugger command
@@ -27648,25 +28102,32 @@ The value for @var{what} should be one of the following:
@c nested table
@table @code
@item args
+@cindex show function arguments, in debugger
Arguments of the selected frame.
@item break
+@cindex show breakpoints
List all currently set breakpoints.
@item display
+@cindex automatic displays, in debugger
List all items in the automatic display list.
@item frame
+@cindex describe call stack frame, in debugger
Description of the selected stack frame.
@item functions
+@cindex list function definitions, in debugger
List all function definitions including source file names and
line numbers.
@item locals
+@cindex show local variables, in debugger
Local variables of the selected frame.
@item source
+@cindex show name of current source file, in debugger
The name of the current source file. Each time the program stops, the
current source file is the file containing the current instruction.
When the debugger first starts, the current source file is the first file
@@ -27675,12 +28136,15 @@ included via the @option{-f} option. The
be used at any time to change the current source.
@item sources
+@cindex show all source files, in debugger
List all program sources.
@item variables
+@cindex list all global variables, in debugger
List all global variables.
@item watch
+@cindex show watchpoints
List all items in the watch list.
@end table
@end table
@@ -27694,6 +28158,8 @@ from a file. The commands are:
@cindex debugger commands, @code{option}
@cindex @code{option} debugger command
@cindex @code{o} debugger command (alias for @code{option})
+@cindex display debugger options
+@cindex debugger options
@item @code{option} [@var{name}[@code{=}@var{value}]]
@itemx @code{o} [@var{name}[@code{=}@var{value}]]
Without an argument, display the available debugger options
@@ -27705,38 +28171,46 @@ The available options are:
@c nested table
@table @code
@item history_size
+@cindex debugger history size
The maximum number of lines to keep in the history file @file{./.gawk_history}.
The default is 100.
@item listsize
+@cindex debugger default list amount
The number of lines that @code{list} prints. The default is 15.
@item outfile
+@cindex redirect @command{gawk} output, in debugger
Send @command{gawk} output to a file; debugger output still goes
to standard output. An empty string (@code{""}) resets output to
standard output.
@item prompt
+@cindex debugger prompt
The debugger prompt. The default is @samp{@w{gawk> }}.
@item save_history @r{[}on @r{|} off@r{]}
+@cindex debugger history file
Save command history to file @file{./.gawk_history}.
The default is @code{on}.
@item save_options @r{[}on @r{|} off@r{]}
+@cindex save debugger options
Save current options to file @file{./.gawkrc} upon exit.
The default is @code{on}.
Options are read back in to the next session upon startup.
@item trace @r{[}on @r{|} off@r{]}
+@cindex instruction tracing, in debugger
Turn instruction tracing on or off. The default is @code{off}.
@end table
@item @code{save} @var{filename}
-Save the commands from the current session to the given @value{FN},
+Save the commands from the current session to the given file name,
so that they can be replayed using the @command{source} command.
@item @code{source} @var{filename}
+@cindex debugger, read commands from a file
Run command(s) from a file; an error in any command does not
terminate execution of subsequent commands. Comments (lines starting
with @samp{#}) are allowed in a command file.
@@ -27835,8 +28309,8 @@ about the command @var{command}.
@cindex debugger commands, @code{list}
@cindex @code{list} debugger command
@cindex @code{l} debugger command (alias for @code{list})
-@item @code{list} [@code{-} | @code{+} | @var{n} | @var{filename@code{:}n} | @var{n}--@var{m} | @var{function}]
-@itemx @code{l} [@code{-} | @code{+} | @var{n} | @var{filename@code{:}n} | @var{n}--@var{m} | @var{function}]
+@item @code{list} [@code{-} | @code{+} | @var{n} | @var{filename}@code{:}@var{n} | @var{n}--@var{m} | @var{function}]
+@itemx @code{l} [@code{-} | @code{+} | @var{n} | @var{filename}@code{:}@var{n} | @var{n}--@var{m} | @var{function}]
Print the specified lines (default 15) from the current source file
or the file named @var{filename}. The possible arguments to @code{list}
are as follows:
@@ -27856,7 +28330,7 @@ Print lines centered around line number @var{n}.
@item @var{n}--@var{m}
Print lines from @var{n} to @var{m}.
-@item @var{filename@code{:}n}
+@item @var{filename}@code{:}@var{n}
Print lines centered around line number @var{n} in
source file @var{filename}. This command may change the current source file.
@@ -27869,6 +28343,7 @@ function @var{function}. This command may change the current source file.
@cindex debugger commands, @code{quit}
@cindex @code{quit} debugger command
@cindex @code{q} debugger command (alias for @code{quit})
+@cindex exit the debugger
@item @code{quit}
@itemx @code{q}
Exit the debugger. Debugging is great fun, but sometimes we all have
@@ -27892,6 +28367,8 @@ fairly self-explanatory, and using @code{stepi} and @code{nexti} while
@node Readline Support
@section Readline Support
+@cindex command completion, in debugger
+@cindex history expansion, in debugger
If @command{gawk} is compiled with the @code{readline} library, you
can take advantage of that library's command completion and history expansion
@@ -27901,8 +28378,8 @@ features. The following types of completion are available:
@item Command completion
Command names.
-@item Source @value{FN} completion
-Source @value{FN}s. Relevant commands are
+@item Source file name completion
+Source file names. Relevant commands are
@code{break},
@code{clear},
@code{list},
@@ -27979,9 +28456,7 @@ be added, and of course feel free to try to add them yourself!
@cindex arbitrary precision
@cindex multiple precision
@cindex infinite precision
-@cindex floating-point numbers, arbitrary precision
-@cindex MPFR
-@cindex GMP
+@cindex floating-point, numbers@comma{} arbitrary precision
@cindex Knuth, Donald
@quotation
@@ -27990,11 +28465,11 @@ to believe. Novice computer users solve this problem by implicitly trusting
in the computer as an infallible authority; they tend to believe that all
digits of a printed answer are significant. Disillusioned computer users have
just the opposite approach; they are constantly afraid that their answers
-are almost meaningless.}@*
-Donald Knuth@footnote{Donald E.@: Knuth.
+are almost meaningless.}@footnote{Donald E.@: Knuth.
@cite{The Art of Computer Programming}. Volume 2,
@cite{Seminumerical Algorithms}, third edition,
1998, ISBN 0-201-89683-4, p.@: 229.}
+@author Donald Knuth
@end quotation
This @value{CHAPTER} discusses issues that you may encounter
@@ -28132,7 +28607,7 @@ This makes it clear that the full numeric value is different from
what the default string representations show.
@code{CONVFMT}'s default value is @code{"%.6g"}, which yields a value with
-at least six significant digits. For some applications, you might want to
+at most six significant digits. For some applications, you might want to
change it to specify more precision.
On most modern machines, most of the time,
17 digits is enough to capture a floating-point number's
@@ -28161,7 +28636,7 @@ $ @kbd{awk '@{ printf("%010d\n", $1 * 100) @}'}
@print{} 0000051580
515.82
@print{} 0000051582
-@kbd{@value{CTL}-d}
+@kbd{Ctrl-d}
@end example
@noindent
@@ -28325,23 +28800,38 @@ then the answer is
@math{2^{53}}.
@end iftex
@ifnottex
+@ifnotdocbook
2^53.
+@end ifnotdocbook
@end ifnottex
+@docbook
+2<superscript>53</superscript>. @c
+@end docbook
The next representable number is the even number
@iftex
@math{2^{53} + 2},
@end iftex
@ifnottex
+@ifnotdocbook
2^53 + 2,
+@end ifnotdocbook
@end ifnottex
+@docbook
+2<superscript>53</superscript> &plus; 2, @c
+@end docbook
meaning it is unlikely that you will be able to make
@command{gawk} print
@iftex
@math{2^{53} + 1}
@end iftex
@ifnottex
+@ifnotdocbook
2^53 + 1
+@end ifnotdocbook
@end ifnottex
+@docbook
+2<superscript>53</superscript> &plus; 1 @c
+@end docbook
in integer format.
The range of integers exactly representable by a 64-bit double
is
@@ -28349,8 +28839,13 @@ is
@math{[-2^{53}, 2^{53}]}.
@end iftex
@ifnottex
+@ifnotdocbook
[@minus{}2^53, 2^53].
+@end ifnotdocbook
@end ifnottex
+@docbook
+[&minus;2<superscript>53</superscript>, 2<superscript>53</superscript>]. @c
+@end docbook
If you ever see an integer outside this range in @command{awk}
using 64-bit doubles, you have reason to be very suspicious about
the accuracy of the output. Here is a simple program with erroneous output:
@@ -28574,8 +29069,13 @@ number is then
@math{s @cdot 2^e}.
@end iftex
@ifnottex
+@ifnotdocbook
@var{s * 2^e}.
+@end ifnotdocbook
@end ifnottex
+@docbook
+<emphasis>s &sdot; 2<superscript>e</superscript></emphasis>. @c
+@end docbook
The first bit of a non-zero binary significand
is always one, so the significand in an IEEE-754 format only includes the
fractional part, leaving the leading one implicit.
@@ -28745,6 +29245,8 @@ when you change the rounding mode.
@node Gawk and MPFR
@section @command{gawk} + MPFR = Powerful Arithmetic
+@cindex MPFR
+@cindex GMP
The rest of this @value{CHAPTER} describes how to use the arbitrary precision
(also known as @dfn{multiple precision} or @dfn{infinite precision}) numeric
@@ -28757,12 +29259,17 @@ The easiest way to find out is to look at the output of
the following command:
@example
-$ @kbd{gawk --version}
-@print{} GNU Awk 4.1.0, API: 1.0 (GNU MPFR 3.1.0-p3, GNU MP 5.0.2)
-@print{} Copyright (C) 1989, 1991-2013 Free Software Foundation.
+$ @kbd{./gawk --version}
+@print{} GNU Awk 4.1.1, API: 1.1 (GNU MPFR 3.1.0-p3, GNU MP 5.0.2)
+@print{} Copyright (C) 1989, 1991-2014 Free Software Foundation.
@dots{}
@end example
+@noindent
+(You may see different version numbers than what's shown here. That's OK;
+what's important is to see that GNU MPFR and GNU MP are listed in
+the output.)
+
@command{gawk} uses the
@uref{http://www.mpfr.org, GNU MPFR}
and
@@ -28816,8 +29323,13 @@ numbers are not implemented.}
(@math{emax = 2^{30} - 1, emin = -emax})
@end iftex
@ifnottex
+@ifnotdocbook
(@var{emax} = 2^30 @minus{} 1, @var{emin} = @minus{}@var{emax})
+@end ifnotdocbook
@end ifnottex
+@docbook
+(<emphasis>emax</emphasis> = 2<superscript>30</superscript> &minus; 1, <emphasis>emin</emphasis> = &minus;<emphasis>emax</emphasis>) @c
+@end docbook
for all floating-point contexts.
There is no explicit mechanism to adjust the exponent range.
MPFR does not implement subnormal numbers by default,
@@ -28849,6 +29361,7 @@ your program.
@node Setting Precision
@subsection Setting the Working Precision
@cindex @code{PREC} variable
+@cindex setting working precision
@command{gawk} uses a global working precision; it does not keep track of
the precision or accuracy of individual numbers. Performing an arithmetic
@@ -28888,8 +29401,15 @@ formula:
@math{prec = 3.322 @cdot dps}
@end iftex
@ifnottex
+@ifnotdocbook
@var{prec} = 3.322 * @var{dps}
+@end ifnotdocbook
@end ifnottex
+@docbook
+<para>
+<emphasis>prec</emphasis> = 3.322 &sdot; <emphasis>dps</emphasis> @c
+</para>
+@end docbook
@noindent
Here, @var{prec} denotes the binary precision
@@ -28924,6 +29444,7 @@ issues that occur because numbers are stored internally in binary.
@node Setting Rounding Mode
@subsection Setting the Rounding Mode
@cindex @code{ROUNDMODE} variable
+@cindex setting rounding mode
The @code{ROUNDMODE} variable provides
program level control over the rounding mode.
@@ -28991,6 +29512,7 @@ In the first case, the number is stored with the default precision of 53 bits.
@node Changing Precision
@subsection Changing the Precision of a Number
+@cindex changing precision of a number
@cindex Laurie, Dirk
@quotation
@@ -29001,11 +29523,10 @@ floating-point format to a precision lower than working precision.
Do we promote them to full membership of the high-precision club,
or do we treat them and all their associates as second-class citizens?
Sometimes the first course is proper, sometimes the second, and it takes
-careful analysis to tell which.}
-
-Dirk Laurie@footnote{Dirk Laurie.
+careful analysis to tell which.}@footnote{Dirk Laurie.
@cite{Variable-precision Arithmetic Considered Perilous --- A Detective Story}.
Electronic Transactions on Numerical Analysis. Volume 28, pp. 168-173, 2008.}
+@author Dirk Laurie
@end quotation
@command{gawk} does not implicitly modify the precision of any previously
@@ -29109,7 +29630,8 @@ the problem at hand is often the correct approach in such situations.
@node Arbitrary Precision Integers
@section Arbitrary Precision Integer Arithmetic with @command{gawk}
-@cindex integer, arbitrary precision
+@cindex integers, arbitrary precision
+@cindex arbitrary precision integers
If one of the options @option{--bignum} or @option{-M} is specified,
@command{gawk} performs all
@@ -29123,8 +29645,13 @@ For example, the following computes
@math{5^{4^{3^{2}}}},
@end iftex
@ifnottex
+@ifnotdocbook
5^4^3^2,
+@end ifnotdocbook
@end ifnottex
+@docbook
+5<superscript>4<superscript>3<superscript>2</superscript></superscript></superscript>, @c
+@end docbook
the result of which is beyond the
limits of ordinary @command{gawk} numbers:
@@ -29146,9 +29673,16 @@ floating-point values instead, the precision needed for correct output
would be @math{3.322 @cdot 183231},
@end iftex
@ifnottex
+@ifnotdocbook
@samp{prec = 3.322 * dps}),
would be 3.322 x 183231,
+@end ifnotdocbook
@end ifnottex
+@docbook
+<emphasis>prec</emphasis> = 3.322 &sdot; <emphasis>dps</emphasis>),
+would be
+<emphasis>prec</emphasis> = 3.322 &sdot; 183231, @c
+@end docbook
or 608693.
The result from an arithmetic operation with an integer and a floating-point value
@@ -29197,7 +29731,7 @@ to begin with:
gawk -M 'BEGIN @{ n = 13.0; print n % 2.0 @}'
@end example
-Note that for the particular example above, there is likely best
+Note that for the particular example above, it is likely best
to just use the following:
@example
@@ -29206,6 +29740,7 @@ gawk -M 'BEGIN @{ n = 13; print n % 2 @}'
@node Dynamic Extensions
@chapter Writing Extensions for @command{gawk}
+@cindex dynamically loaded extensions
It is possible to add new functions written in C or C++ to @command{gawk} using
dynamically loaded libraries. This facility is available on systems
@@ -29240,6 +29775,7 @@ When @option{--sandbox} is specified, extensions are disabled
@node Extension Intro
@section Introduction
+@cindex plug-in
An @dfn{extension} (sometimes called a @dfn{plug-in}) is a piece of
external compiled code that @command{gawk} can load at runtime to
provide additional functionality, over and above the built-in capabilities
@@ -29285,8 +29821,14 @@ Communication between
@command{gawk} and an extension is two-way. First, when an extension
is loaded, it is passed a pointer to a @code{struct} whose fields are
function pointers.
+@ifnotdocbook
This is shown in @ref{load-extension}.
+@end ifnotdocbook
+@ifdocbook
+This is shown in @inlineraw{docbook, <xref linkend="load-extension"/>}.
+@end ifdocbook
+@ifnotdocbook
@float Figure,load-extension
@caption{Loading The Extension}
@c FIXME: One day, it should not be necessary to have two cases,
@@ -29299,13 +29841,27 @@ This is shown in @ref{load-extension}.
@center @image{api-figure1, , , Loading the extension}
@end ifnotinfo
@end float
+@end ifnotdocbook
+
+@docbook
+<figure id="load-extension">
+<title>Loading the extension</title>
+<graphic fileref="api-figure1.eps"/>
+</figure>
+@end docbook
The extension can call functions inside @command{gawk} through these
function pointers, at runtime, without needing (link-time) access
to @command{gawk}'s symbols. One of these function pointers is to a
function for ``registering'' new built-in functions.
+@ifnotdocbook
This is shown in @ref{load-new-function}.
+@end ifnotdocbook
+@ifdocbook
+This is shown in @inlineraw{docbook, <xref linkend="load-new-function"/>}.
+@end ifdocbook
+@ifnotdocbook
@float Figure,load-new-function
@caption{Loading The New Function}
@ifinfo
@@ -29315,14 +29871,28 @@ This is shown in @ref{load-new-function}.
@center @image{api-figure2, , , Loading the new function}
@end ifnotinfo
@end float
+@end ifnotdocbook
+
+@docbook
+<figure id="load-new-function">
+<title>Loading the new function</title>
+<graphic fileref="api-figure2.eps"/>
+</figure>
+@end docbook
In the other direction, the extension registers its new functions
with @command{gawk} by passing function pointers to the functions that
provide the new feature (@code{do_chdir()}, for example). @command{gawk}
associates the function pointer with a name and can then call it, using a
defined calling convention.
+@ifnotdocbook
This is shown in @ref{call-new-function}.
+@end ifnotdocbook
+@ifdocbook
+This is shown in @inlineraw{docbook, <xref linkend="call-new-function"/>}.
+@end ifdocbook
+@ifnotdocbook
@float Figure,call-new-function
@caption{Calling The New Function}
@ifinfo
@@ -29332,6 +29902,14 @@ This is shown in @ref{call-new-function}.
@center @image{api-figure3, , , Calling the new function}
@end ifnotinfo
@end float
+@end ifnotdocbook
+
+@docbook
+<figure id="call-new-function">
+<title>Calling The New Function</title>
+<graphic fileref="api-figure3.eps"/>
+</figure>
+@end docbook
The @code{do_@var{xxx}()} function, in turn, then uses the function
pointers in the API @code{struct} to do its work, such as updating
@@ -29368,6 +29946,7 @@ happen, but we all know how @emph{that} goes.)
@node Extension API Description
@section API Description
+@cindex extension API
This (rather large) @value{SECTION} describes the API in detail.
@@ -29375,6 +29954,7 @@ This (rather large) @value{SECTION} describes the API in detail.
* Extension API Functions Introduction:: Introduction to the API functions.
* General Data Types:: The data types.
* Requesting Values:: How to get a value.
+* Memory Allocation Functions:: Functions for allocating memory.
* Constructor Functions:: Functions for creating values.
* Registration Functions:: Functions to register things with
@command{gawk}.
@@ -29430,6 +30010,9 @@ Symbol table access: retrieving a global variable, creating one,
or changing one.
@item
+Allocating, reallocating, and releasing memory.
+
+@item
Creating and releasing cached values; this provides an
efficient way to use values for multiple variables and
can be a big performance win.
@@ -29468,10 +30051,8 @@ corresponding standard header file @emph{before} including @file{gawkapi.h}:
@item @code{EOF} @tab @code{<stdio.h>}
@item @code{FILE} @tab @code{<stdio.h>}
@item @code{NULL} @tab @code{<stddef.h>}
-@item @code{malloc()} @tab @code{<stdlib.h>}
@item @code{memcpy()} @tab @code{<string.h>}
@item @code{memset()} @tab @code{<string.h>}
-@item @code{realloc()} @tab @code{<stdlib.h>}
@item @code{size_t} @tab @code{<sys/types.h>}
@item @code{struct stat} @tab @code{<sys/stat.h>}
@end multitable
@@ -29501,8 +30082,9 @@ does not support this keyword, you should either place
All pointers filled in by @command{gawk} are to memory
managed by @command{gawk} and should be treated by the extension as
read-only. Memory for @emph{all} strings passed into @command{gawk}
-from the extension @emph{must} come from @code{malloc()} and is managed
-by @command{gawk} from then on.
+from the extension @emph{must} come from calling the API-provided function
+pointers @code{api_malloc()}, @code{api_calloc()} or @code{api_realloc()},
+and is managed by @command{gawk} from then on.
@item
The API defines several simple @code{struct}s that map values as seen
@@ -29542,13 +30124,17 @@ the macros as if they were functions.
@node General Data Types
@subsection General Purpose Data Types
+@cindex Robbins, Arnold
+@cindex Ramey, Chet
@quotation
-@i{I have a true love/hate relationship with unions.}@*
-Arnold Robbins
+@i{I have a true love/hate relationship with unions.}
+@author Arnold Robbins
+@end quotation
+@quotation
@i{That's the thing about unions: the compiler will arrange things so they
-can accommodate both love and hate.}@*
-Chet Ramey
+can accommodate both love and hate.}
+@author Chet Ramey
@end quotation
The extension API defines a number of simple types and structures for general
@@ -29568,9 +30154,9 @@ certain fields in the API data structures unwritable from extension code,
while allowing @command{gawk} to use them as it needs to.
@item typedef enum awk_bool @{
-@item @ @ @ @ awk_false = 0,
-@item @ @ @ @ awk_true
-@item @} awk_bool_t;
+@itemx @ @ @ @ awk_false = 0,
+@itemx @ @ @ @ awk_true
+@itemx @} awk_bool_t;
A simple boolean type.
@item typedef struct awk_string @{
@@ -29580,7 +30166,8 @@ A simple boolean type.
This represents a mutable string. @command{gawk}
owns the memory pointed to if it supplied
the value. Otherwise, it takes ownership of the memory pointed to.
-@strong{Such memory must come from @code{malloc()}!}
+@strong{Such memory must come from calling the API-provided function
+pointers @code{api_malloc()}, @code{api_calloc()}, or @code{api_realloc()}!}
As mentioned earlier, strings are maintained using the current
multibyte encoding.
@@ -29696,7 +30283,94 @@ print an error message, or reissue the request for the actual
value type, as appropriate. This behavior is summarized in
@ref{table-value-types-returned}.
+@c FIXME: Try to do this with spans...
+@ifdocbook
+@anchor{table-value-types-returned}
+@end ifdocbook
+@docbook
+<informaltable>
+<tgroup cols="2">
+ <colspec colwidth="50*"/><colspec colwidth="50*"/>
+ <thead>
+ <row><entry></entry><entry><para>Type of Actual Value:</para></entry></row>
+ </thead>
+ <tbody>
+ <row><entry></entry><entry></entry></row>
+ </tbody>
+</tgroup>
+<tgroup cols="6">
+ <colspec colwidth="16.6*"/>
+ <colspec colwidth="16.6*"/>
+ <colspec colwidth="19.8*"/>
+ <colspec colwidth="15*"/>
+ <colspec colwidth="15*"/>
+ <colspec colwidth="16.6*"/>
+ <thead>
+ <row>
+ <entry></entry>
+ <entry></entry>
+ <entry><para>String</para></entry>
+ <entry><para>Number</para></entry>
+ <entry><para>Array</para></entry>
+ <entry><para>Undefined</para></entry>
+ </row>
+ </thead>
+ <tbody>
+ <row>
+ <entry></entry>
+ <entry><para><emphasis role="bold">String</emphasis></para></entry>
+ <entry><para>String</para></entry>
+ <entry><para>String</para></entry>
+ <entry><para>false</para></entry>
+ <entry><para>false</para></entry>
+ </row>
+ <row>
+ <entry></entry>
+ <entry><para><emphasis role="bold">Number</emphasis></para></entry>
+ <entry><para>Number if can be converted, else false</para></entry>
+ <entry><para>Number</para></entry>
+ <entry><para>false</para></entry>
+ <entry><para>false</para></entry>
+ </row>
+ <row>
+ <entry><para><emphasis role="bold">Type</emphasis></para></entry>
+ <entry><para><emphasis role="bold">Array</emphasis></para></entry>
+ <entry><para>false</para></entry>
+ <entry><para>false</para></entry>
+ <entry><para>Array</para></entry>
+ <entry><para>false</para></entry>
+ </row>
+ <row>
+ <entry><para><emphasis role="bold">Requested:</emphasis></para></entry>
+ <entry><para><emphasis role="bold">Scalar</emphasis></para></entry>
+ <entry><para>Scalar</para></entry>
+ <entry><para>Scalar</para></entry>
+ <entry><para>false</para></entry>
+ <entry><para>false</para></entry>
+ </row>
+ <row>
+ <entry></entry>
+ <entry><para><emphasis role="bold">Undefined</emphasis></para></entry>
+ <entry><para>String</para></entry>
+ <entry><para>Number</para></entry>
+ <entry><para>Array</para></entry>
+ <entry><para>Undefined</para></entry>
+ </row>
+ <row>
+ <entry></entry>
+ <entry><para><emphasis role="bold">Value Cookie</emphasis></para></entry>
+ <entry><para>false</para></entry>
+ <entry><para>false</para></entry>
+ <entry><para>false</para>
+ </entry><entry><para>false</para></entry>
+ </row>
+ </tbody>
+</tgroup>
+</informaltable>
+@end docbook
+
@ifnotplaintext
+@ifnotdocbook
@float Table,table-value-types-returned
@caption{Value Types Returned}
@multitable @columnfractions .50 .50
@@ -29712,6 +30386,7 @@ value type, as appropriate. This behavior is summarized in
@item @tab @b{Value Cookie} @tab false @tab false @tab false @tab false
@end multitable
@end float
+@end ifnotdocbook
@end ifnotplaintext
@ifplaintext
@float Table,table-value-types-returned
@@ -29742,45 +30417,46 @@ value type, as appropriate. This behavior is summarized in
@end float
@end ifplaintext
-@node Constructor Functions
-@subsection Constructor Functions and Convenience Macros
+@node Memory Allocation Functions
+@subsection Memory Allocation Functions and Convenience Macros
+@cindex allocating memory for extensions
+@cindex extensions, allocating memory
-The API provides a number of @dfn{constructor} functions for creating
-string and numeric values, as well as a number of convenience macros.
-This @value{SUBSECTION} presents them all as function prototypes, in
-the way that extension code would use them.
+The API provides a number of @dfn{memory allocation} functions for
+allocating memory that can be passed to @command{gawk}, as well as a number of
+convenience macros.
@table @code
-@item static inline awk_value_t *
-@itemx make_const_string(const char *string, size_t length, awk_value_t *result)
-This function creates a string value in the @code{awk_value_t} variable
-pointed to by @code{result}. It expects @code{string} to be a C string constant
-(or other string data), and automatically creates a @emph{copy} of the data
-for storage in @code{result}. It returns @code{result}.
+@item void *gawk_malloc(size_t size);
+Call @command{gawk}-provided @code{api_malloc()} to allocate storage that may
+be passed to @command{gawk}.
-@item static inline awk_value_t *
-@itemx make_malloced_string(const char *string, size_t length, awk_value_t *result)
-This function creates a string value in the @code{awk_value_t} variable
-pointed to by @code{result}. It expects @code{string} to be a @samp{char *}
-value pointing to data previously obtained from @code{malloc()}. The idea here
-is that the data is passed directly to @command{gawk}, which assumes
-responsibility for it. It returns @code{result}.
+@item void *gawk_calloc(size_t nmemb, size_t size);
+Call @command{gawk}-provided @code{api_calloc()} to allocate storage that may
+be passed to @command{gawk}.
-@item static inline awk_value_t *
-@itemx make_null_string(awk_value_t *result)
-This specialized function creates a null string (the ``undefined'' value)
-in the @code{awk_value_t} variable pointed to by @code{result}.
-It returns @code{result}.
+@item void *gawk_realloc(void *ptr, size_t size);
+Call @command{gawk}-provided @code{api_realloc()} to allocate storage that may
+be passed to @command{gawk}.
-@item static inline awk_value_t *
-@itemx make_number(double num, awk_value_t *result)
-This function simply creates a numeric value in the @code{awk_value_t} variable
-pointed to by @code{result}.
+@item void gawk_free(void *ptr);
+Call @command{gawk}-provided @code{api_free()} to release storage that was
+allocated with @code{gawk_malloc()}, @code{gawk_calloc()} or @code{gawk_realloc()}.
@end table
-Two convenience macros may be used for allocating storage from @code{malloc()}
-and @code{realloc()}. If the allocation fails, they cause @command{gawk} to
-exit with a fatal error message. They should be used as if they were
+The API has to provide these functions because it is possible
+for an extension to be compiled and linked against a different
+version of the C library than was used for the @command{gawk}
+executable.@footnote{This is more common on MS-Windows systems, but
+can happen on Unix-like systems as well.} If @command{gawk} were
+to use its version of @code{free()} when the memory came from an
+unrelated version of @code{malloc()}, unexpected behavior would
+likely result.
+
+Two convenience macros may be used for allocating storage
+from the API-provided function pointers @code{api_malloc()} and
+@code{api_realloc()}. If the allocation fails, they cause @command{gawk}
+to exit with a fatal error message. They should be used as if they were
procedure calls that do not return a value.
@table @code
@@ -29792,7 +30468,7 @@ The arguments to this macro are as follows:
The pointer variable to point at the allocated storage.
@item type
-The type of the pointer variable, used to create a cast for the call to @code{malloc()}.
+The type of the pointer variable, used to create a cast for the call to @code{api_malloc()}.
@item size
The total number of bytes to be allocated.
@@ -29816,13 +30492,51 @@ make_malloced_string(message, strlen(message), & result);
@end example
@item #define erealloc(pointer, type, size, message) @dots{}
-This is like @code{emalloc()}, but it calls @code{realloc()},
-instead of @code{malloc()}.
+This is like @code{emalloc()}, but it calls @code{api_realloc()},
+instead of @code{api_malloc()}.
The arguments are the same as for the @code{emalloc()} macro.
@end table
+@node Constructor Functions
+@subsection Constructor Functions
+
+The API provides a number of @dfn{constructor} functions for creating
+string and numeric values, as well as a number of convenience macros.
+This @value{SUBSECTION} presents them all as function prototypes, in
+the way that extension code would use them.
+
+@table @code
+@item static inline awk_value_t *
+@itemx make_const_string(const char *string, size_t length, awk_value_t *result)
+This function creates a string value in the @code{awk_value_t} variable
+pointed to by @code{result}. It expects @code{string} to be a C string constant
+(or other string data), and automatically creates a @emph{copy} of the data
+for storage in @code{result}. It returns @code{result}.
+
+@item static inline awk_value_t *
+@itemx make_malloced_string(const char *string, size_t length, awk_value_t *result)
+This function creates a string value in the @code{awk_value_t} variable
+pointed to by @code{result}. It expects @code{string} to be a @samp{char *}
+value pointing to data previously obtained from the api-provided functions @code{api_malloc()}, @code{api_calloc()} or @code{api_realloc()}. The idea here
+is that the data is passed directly to @command{gawk}, which assumes
+responsibility for it. It returns @code{result}.
+
+@item static inline awk_value_t *
+@itemx make_null_string(awk_value_t *result)
+This specialized function creates a null string (the ``undefined'' value)
+in the @code{awk_value_t} variable pointed to by @code{result}.
+It returns @code{result}.
+
+@item static inline awk_value_t *
+@itemx make_number(double num, awk_value_t *result)
+This function simply creates a numeric value in the @code{awk_value_t} variable
+pointed to by @code{result}.
+@end table
+
@node Registration Functions
@subsection Registration Functions
+@cindex register extension
+@cindex extension registration
This @value{SECTION} describes the API functions for
registering parts of your extension with @command{gawk}.
@@ -29867,8 +30581,8 @@ Letter case in function names is significant.
This is a pointer to the C function that provides the desired
functionality.
The function must fill in the result with either a number
-or a string. @command{awk} takes ownership of any string memory.
-As mentioned earlier, string memory @strong{must} come from @code{malloc()}.
+or a string. @command{gawk} takes ownership of any string memory.
+As mentioned earlier, string memory @strong{must} come from the api-provided functions @code{api_malloc()}, @code{api_calloc()} or @code{api_realloc()}.
The @code{num_actual_args} argument tells the C function how many
actual parameters were passed from the calling @command{awk} code.
@@ -29944,6 +30658,7 @@ is invoked with the @option{--version} option.
@node Input Parsers
@subsubsection Customized Input Parsers
+@cindex customized input parser
By default, @command{gawk} reads text files as its input. It uses the value
of @code{RS} to find the end of the record, and then uses @code{FS}
@@ -30191,7 +30906,9 @@ Register the input parser pointed to by @code{input_parser} with
@node Output Wrappers
@subsubsection Customized Output Wrappers
+@cindex customized output wrapper
+@cindex output wrapper
An @dfn{output wrapper} is the mirror image of an input parser.
It allows an extension to take over the output to a file opened
with the @samp{>} or @samp{>>} I/O redirection operators (@pxref{Redirection}).
@@ -30305,6 +31022,7 @@ Register the output wrapper pointed to by @code{output_wrapper} with
@node Two-way processors
@subsubsection Customized Two-way Processors
+@cindex customized two-way processor
A @dfn{two-way processor} combines an input parser and an output wrapper for
two-way I/O with the @samp{|&} operator (@pxref{Redirection}). It makes identical
@@ -30362,6 +31080,8 @@ Register the two-way processor pointed to by @code{two_way_processor} with
@node Printing Messages
@subsection Printing Messages
+@cindex printing messages from extensions
+@cindex messages from extensions
You can print different kinds of warning messages from your
extension, as described below. Note that for these functions,
@@ -30435,6 +31155,7 @@ for more information on creating arrays.
@node Symbol Table Access
@subsection Symbol Table Access
+@cindex accessing global variables from extensions
Two sets of routines provide access to global variables, and one set
allows you to create and release cached values.
@@ -30480,6 +31201,13 @@ An extension can look up the value of @command{gawk}'s special variables.
However, with the exception of the @code{PROCINFO} array, an extension
cannot change any of those variables.
+@quotation NOTE
+It is possible for the lookup of @code{PROCINFO} to fail. This happens if
+the @command{awk} program being run does not reference @code{PROCINFO};
+in this case @command{gawk} doesn't bother to create the array and
+populate it.
+@end quotation
+
@node Symbol table by cookie
@subsubsection Variable Access and Update by Cookie
@@ -30606,7 +31334,7 @@ assign those values to variables using @code{sym_update()}
or @code{sym_update_scalar()}, as you like.
However, you can understand the point of cached values if you remember that
-@emph{every} string value's storage @emph{must} come from @code{malloc()}.
+@emph{every} string value's storage @emph{must} come from @code{api_malloc()}, @code{api_calloc()} or @code{api_realloc()}.
If you have 20 variables, all of which have the same string value, you
must create 20 identical copies of the string.@footnote{Numeric values
are clearly less problematic, requiring only a C @code{double} to store.}
@@ -30692,6 +31420,7 @@ you should release any cached values that you created, using
@node Array Manipulation
@subsection Array Manipulation
+@cindex array manipulation in extensions
The primary data structure@footnote{Okay, the only data structure.} in @command{awk}
is the associative array (@pxref{Arrays}).
@@ -30803,7 +31532,7 @@ requires that you understand how such values are converted to strings
(@pxref{Conversion}); thus using integral values is safest.
As with @emph{all} strings passed into @code{gawk} from an extension,
-the string value of @code{index} must come from @code{malloc()}, and
+the string value of @code{index} must come from the API-provided functions @code{api_malloc()}, @code{api_calloc()} or @code{api_realloc()} and
@command{gawk} releases the storage.
@item awk_bool_t set_array_element(awk_array_t a_cookie,
@@ -31271,6 +32000,8 @@ information about how @command{gawk} was invoked.
@node Extension Versioning
@subsubsection API Version Constants and Variables
+@cindex API version
+@cindex extension API version
The API provides both a ``major'' and a ``minor'' version number.
The API versions are available at compile time as constants:
@@ -31324,6 +32055,8 @@ provided in @file{gawkapi.h} (discussed later, in
@node Extension API Informational Variables
@subsubsection Informational Variables
+@cindex API informational variables
+@cindex extension API informational variables
The API provides access to several variables that describe
whether the corresponding command-line options were enabled when
@@ -31469,6 +32202,8 @@ the version string with @command{gawk}.
@node Finding Extensions
@section How @command{gawk} Finds Extensions
+@cindex extension search path
+@cindex finding extensions
Compiled extensions have to be installed in a directory where
@command{gawk} can find them. If @command{gawk} is configured and
@@ -31479,10 +32214,11 @@ path with a list of directories to search for compiled extensions.
@node Extension Example
@section Example: Some File Functions
+@cindex extension example
@quotation
-@i{No matter where you go, there you are.} @*
-Buckaroo Bonzai
+@i{No matter where you go, there you are.}
+@author Buckaroo Bonzai
@end quotation
@c It's enough to show chdir and stat, no need for fts
@@ -31937,7 +32673,7 @@ do_stat(int nargs, awk_value_t *result)
awk_array_t array;
int ret;
struct stat sbuf;
- /* default is stat() */
+ /* default is lstat() */
int (*statfunc)(const char *path, struct stat *sbuf) = lstat;
assert(result != NULL);
@@ -32123,6 +32859,7 @@ $ @kbd{AWKLIBPATH=$PWD gawk -f testff.awk}
@node Extension Samples
@section The Sample Extensions In The @command{gawk} Distribution
+@cindex extensions distributed with @command{gawk}
This @value{SECTION} provides brief overviews of the sample extensions
that come in the @command{gawk} distribution. Some of them are intended
@@ -32157,15 +32894,15 @@ The usage is:
@item @@load "filefuncs"
This is how you load the extension.
-@cindex @code{chdir} extension function
+@cindex @code{chdir()} extension function
@item result = chdir("/some/directory")
The @code{chdir()} function is a direct hook to the @code{chdir()}
system call to change the current directory. It returns zero
upon success or less than zero upon error. In the latter case it updates
@code{ERRNO}.
-@cindex @code{stat} extension function
-@item result = stat("/some/path", statdata [, follow])
+@cindex @code{stat()} extension function
+@item result = stat("/some/path", statdata @r{[}, follow@r{]})
The @code{stat()} function provides a hook into the
@code{stat()} system call.
It returns zero upon success or less than zero upon error.
@@ -32254,7 +32991,7 @@ or
Not all systems support all file types.
@end multitable
-@cindex @code{fts} extension function
+@cindex @code{fts()} extension function
@item flags = or(FTS_PHYSICAL, ...)
@itemx result = fts(pathlist, flags, filedata)
Walk the file trees provided in @code{pathlist} and fill in the
@@ -32265,7 +33002,7 @@ Return zero if there were no errors, otherwise return @minus{}1.
The @code{fts()} function provides a hook to the C library @code{fts()}
routines for traversing file hierarchies. Instead of returning data
-about one file at a time in a stream, it fills in a multi-dimensional
+about one file at a time in a stream, it fills in a multidimensional
array with data about each file and directory encountered in the requested
hierarchies.
@@ -32366,7 +33103,7 @@ be more comfortable to use from an @command{awk} program. This includes the
lack of a comparison function, since @command{gawk} already provides
powerful array sorting facilities. While an @code{fts_read()}-like
interface could have been provided, this felt less natural than simply
-creating a multi-dimensional array to represent the file hierarchy and
+creating a multidimensional array to represent the file hierarchy and
its information.
@end quotation
@@ -32375,19 +33112,23 @@ See @file{test/fts.awk} in the @command{gawk} distribution for an example.
@node Extension Sample Fnmatch
@subsection Interface To @code{fnmatch()}
-@cindex @code{fnmatch} extension function
This extension provides an interface to the C library
@code{fnmatch()} function. The usage is:
-@example
-@@load "fnmatch"
+@table @code
+@item @@load "fnmatch"
+This is how you load the extension.
-result = fnmatch(pattern, string, flags)
-@end example
+@cindex @code{fnmatch()} extension function
+@item result = fnmatch(pattern, string, flags)
+The return value is zero on success, @code{FNM_NOMATCH}
+if the string did not match the pattern, or
+a different non-zero value if an error occurred.
+@end table
-The @code{fnmatch} extension adds a single function named
-@code{fnmatch()}, one constant (@code{FNM_NOMATCH}), and an array of
-flag values named @code{FNM}.
+Besides the @code{fnmatch()} function, the @code{fnmatch} extension
+adds one constant (@code{FNM_NOMATCH}), and an array of flag values
+named @code{FNM}.
The arguments to @code{fnmatch()} are:
@@ -32403,10 +33144,6 @@ Either zero, or the bitwise OR of one or more of the
flags in the @code{FNM} array.
@end table
-The return value is zero on success, @code{FNM_NOMATCH}
-if the string did not match the pattern, or
-a different non-zero value if an error occurred.
-
The flags are follows:
@multitable @columnfractions .25 .75
@@ -32448,21 +33185,21 @@ The @code{fork} extension adds three functions, as follows.
@item @@load "fork"
This is how you load the extension.
-@cindex @code{fork} extension function
+@cindex @code{fork()} extension function
@item pid = fork()
-This function creates a new process. The return value is the zero in the
-child and the process-id number of the child in the parent, or @minus{}1
+This function creates a new process. The return value is zero in the
+child and the process-ID number of the child in the parent, or @minus{}1
upon error. In the latter case, @code{ERRNO} indicates the problem.
In the child, @code{PROCINFO["pid"]} and @code{PROCINFO["ppid"]} are
updated to reflect the correct values.
-@cindex @code{waitpid} extension function
+@cindex @code{waitpid()} extension function
@item ret = waitpid(pid)
-This function takes a numeric argument, which is the process-id to
+This function takes a numeric argument, which is the process-ID to
wait for. The return value is that of the
@code{waitpid()} system call.
-@cindex @code{wait} extension function
+@cindex @code{wait()} extension function
@item ret = wait()
This function waits for the first child to die.
The return value is that of the
@@ -32549,11 +33286,11 @@ The @code{ordchr} extension adds two functions, named
@item @@load "ordchr"
This is how you load the extension.
-@cindex @code{ord} extension function
+@cindex @code{ord()} extension function
@item number = ord(string)
Return the numeric value of the first character in @code{string}.
-@cindex @code{chr} extension function
+@cindex @code{chr()} extension function
@item char = chr(number)
Return a string whose first character is that represented by @code{number}.
@end table
@@ -32670,14 +33407,14 @@ The @code{rwarray} extension adds two functions,
named @code{writea()} and @code{reada()}, as follows:
@table @code
-@cindex @code{writea} extension function
+@cindex @code{writea()} extension function
@item ret = writea(file, array)
This function takes a string argument, which is the name of the file
to which dump the array, and the array itself as the second argument.
@code{writea()} understands multidimensional arrays. It returns one on
success, or zero upon failure.
-@cindex @code{reada} extension function
+@cindex @code{reada()} extension function
@item ret = reada(file, array)
@code{reada()} is the inverse of @code{writea()};
it reads the file named as its first argument, filling in
@@ -32714,17 +33451,23 @@ ret = reada("arraydump.bin", array)
@subsection Reading An Entire File
The @code{readfile} extension adds a single function
-named @code{readfile()}:
+named @code{readfile()}, and an input parser:
@table @code
@item @@load "readfile"
This is how you load the extension.
-@cindex @code{readfile} extension function
+@cindex @code{readfile()} extension function
@item result = readfile("/some/path")
The argument is the name of the file to read. The return value is a
string containing the entire contents of the requested file. Upon error,
the function returns the empty string and sets @code{ERRNO}.
+
+@item BEGIN @{ PROCINFO["readfile"] = 1 @}
+In addition, the extension adds an input parser that is activated if
+@code{PROCINFO["readfile"]} exists.
+When activated, each input file is returned in its entirety as @code{$0}.
+@code{RT} is set to the null string.
@end table
Here is an example:
@@ -32761,7 +33504,7 @@ inserting @samp{@@load "time"} in your script.
@item @@load "time"
This is how you load the extension.
-@cindex @code{gettimeofday} extension function
+@cindex @code{gettimeofday()} extension function
@item the_time = gettimeofday()
Return the time in seconds that has elapsed since 1970-01-01 UTC as a
floating point value. If the time is unavailable on this platform, return
@@ -32771,7 +33514,7 @@ If the standard C @code{gettimeofday()} system call is available on this
platform, then it simply returns the value. Otherwise, if on Windows,
it tries to use @code{GetSystemTimeAsFileTime()}.
-@cindex @code{sleep} extension function
+@cindex @code{sleep()} extension function
@item result = sleep(@var{seconds})
Attempt to sleep for @var{seconds} seconds. If @var{seconds} is negative,
or the attempt to sleep fails, return @minus{}1 and set @code{ERRNO}.
@@ -32783,6 +33526,8 @@ tries to use @code{nanosleep()} or @code{select()} to implement the delay.
@node gawkextlib
@section The @code{gawkextlib} Project
+@cindex @code{gawkextlib}
+@cindex extensions, where to find
@cindex @code{gawkextlib} project
The @uref{http://sourceforge.net/projects/gawkextlib/, @code{gawkextlib}}
@@ -32790,7 +33535,7 @@ project provides a number of @command{gawk} extensions, including one for
processing XML files. This is the evolution of the original @command{xgawk}
(XML @command{gawk}) project.
-As of this writing, there are four extensions:
+As of this writing, there are five extensions:
@itemize @bullet
@item
@@ -32798,6 +33543,9 @@ XML parser extension, using the @uref{http://expat.sourceforge.net, Expat}
XML parsing library.
@item
+PDF extension.
+
+@item
PostgreSQL extension.
@item
@@ -32813,6 +33561,7 @@ The @code{time} extension described earlier (@pxref{Extension Sample
Time}) was originally from this project but has been moved in to the
main @command{gawk} distribution.
+@cindex @command{git} utility
You can check out the code for the @code{gawkextlib} project
using the @uref{http://git-scm.com, GIT} distributed source
code control system. The command is as follows:
@@ -32927,6 +33676,7 @@ of the @value{DOCUMENT} where you can find more information.
@command{awk}.
* POSIX/GNU:: The extensions in @command{gawk} not in POSIX
@command{awk}.
+* Feature History:: The history of the features in @command{gawk}.
* Common Extensions:: Common Extensions Summary.
* Ranges and Locales:: How locales used to affect regexp ranges.
* Contributors:: The major contributors to @command{gawk}.
@@ -33024,7 +33774,7 @@ Multiple @code{BEGIN} and @code{END} rules
@item
Multidimensional arrays
-(@pxref{Multi-dimensional}).
+(@pxref{Multidimensional}).
@end itemize
@c ENDOFRANGE gawkv1
@@ -33231,7 +33981,7 @@ Special files in I/O redirections:
@itemize @minus{}
@item
The @file{/dev/stdin}, @file{/dev/stdout}, @file{/dev/stderr} and
-@file{/dev/fd/@var{N}} special @value{FN}s
+@file{/dev/fd/@var{N}} special file names
(@pxref{Special Files}).
@item
@@ -33455,7 +34205,7 @@ long options
@item
Support for the following obsolete systems was removed from the code
-and the documentation for @command{gawk} @value{PVERSION} 4.0:
+and the documentation for @command{gawk} version 4.0:
@c nested table
@itemize @minus
@@ -33492,6 +34242,9 @@ Tandem (non-POSIX)
@item
Prestandard VAX C compiler for VAX/VMS
+@item
+GCC for VAX and Alpha has not been tested for a while.
+
@end itemize
@end itemize
@@ -33502,6 +34255,612 @@ Prestandard VAX C compiler for VAX/VMS
@c ENDOFRANGE exgnot
@c ENDOFRANGE posnot
+@node Feature History
+@appendixsec History of @command{gawk} Features
+
+@ignore
+See the thread:
+https://groups.google.com/forum/#!topic/comp.lang.awk/SAUiRuff30c
+This motivated me to add this section.
+@end ignore
+
+@ignore
+I've tried to follow this general order, esp.@: for the 3.0 and 3.1 sections:
+ variables
+ special files
+ language changes (e.g., hex constants)
+ differences in standard awk functions
+ new gawk functions
+ new keywords
+ new command-line options
+ behavioral changes
+ new ports
+Within each category, be alphabetical.
+@end ignore
+
+This @value{SECTION} describes the features in @command{gawk}
+over and above those in POSIX @command{awk},
+in the order they were added to @command{gawk}.
+
+Version 2.10 of @command{gawk} introduced the following features:
+
+@itemize @bullet
+@item
+The @env{AWKPATH} environment variable for specifying a path search for
+the @option{-f} command-line option
+(@pxref{Options}).
+
+@item
+The @code{IGNORECASE} variable and its effects
+(@pxref{Case-sensitivity}).
+
+@item
+The @file{/dev/stdin}, @file{/dev/stdout}, @file{/dev/stderr} and
+@file{/dev/fd/@var{N}} special file names
+(@pxref{Special Files}).
+@end itemize
+
+Version 2.13 of @command{gawk} introduced the following features:
+
+@itemize @bullet
+@item
+The @code{FIELDWIDTHS} variable and its effects
+(@pxref{Constant Size}).
+
+@item
+The @code{systime()} and @code{strftime()} built-in functions for obtaining
+and printing timestamps
+(@pxref{Time Functions}).
+
+@item
+Additional command-line options
+(@pxref{Options}):
+
+@itemize @minus
+@item
+The @option{-W lint} option to provide error and portability checking
+for both the source code and at runtime.
+
+@item
+The @option{-W compat} option to turn off the GNU extensions.
+
+@item
+The @option{-W posix} option for full POSIX compliance.
+@end itemize
+@end itemize
+
+Version 2.14 of @command{gawk} introduced the following feature:
+
+@itemize @bullet
+@item
+The @code{next file} statement for skipping to the next data file
+(@pxref{Nextfile Statement}).
+@end itemize
+
+Version 2.15 of @command{gawk} introduced the following features:
+
+@itemize @bullet
+@item
+New variables (@pxref{Built-in Variables}):
+
+@itemize @minus
+@item
+@code{ARGIND}, which tracks the movement of @code{FILENAME}
+through @code{ARGV}.
+
+@item
+@code{ERRNO}, which contains the system error message when
+@code{getline} returns @minus{}1 or @code{close()} fails.
+@end itemize
+
+@item
+The @file{/dev/pid}, @file{/dev/ppid}, @file{/dev/pgrpid}, and
+@file{/dev/user} special file names. These have since been removed.
+
+@item
+The ability to delete all of an array at once with @samp{delete @var{array}}
+(@pxref{Delete}).
+
+@item
+Command line option changes
+(@pxref{Options}):
+
+@itemize @minus
+@item
+The ability to use GNU-style long-named options that start with @option{--}.
+
+@item
+The @option{--source} option for mixing command-line and library-file
+source code.
+@end itemize
+@end itemize
+
+Version 3.0 of @command{gawk} introduced the following features:
+
+@itemize @bullet
+@item
+New or changed variables:
+
+@itemize @minus
+@item
+@code{IGNORECASE} changed, now applying to string comparison as well
+as regexp operations
+(@pxref{Case-sensitivity}).
+
+@item
+@code{RT}, which contains the input text that matched @code{RS}
+(@pxref{Records}).
+@end itemize
+
+@item
+Full support for both POSIX and GNU regexps
+(@pxref{Regexp}).
+
+@item
+The @code{gensub()} function for more powerful text manipulation
+(@pxref{String Functions}).
+
+@item
+The @code{strftime()} function acquired a default time format,
+allowing it to be called with no arguments
+(@pxref{Time Functions}).
+
+@item
+The ability for @code{FS} and for the third
+argument to @code{split()} to be null strings
+(@pxref{Single Character Fields}).
+
+@item
+The ability for @code{RS} to be a regexp
+(@pxref{Records}).
+
+@item
+The @code{next file} statement became @code{nextfile}
+(@pxref{Nextfile Statement}).
+
+@item
+The @code{fflush()} function from the
+Bell Laboratories research version of @command{awk}
+(@pxref{I/O Functions}).
+
+@item
+New command line options:
+
+@itemize @minus
+@item
+The @option{--lint-old} option to
+warn about constructs that are not available in
+the original Version 7 Unix version of @command{awk}
+(@pxref{V7/SVR3.1}).
+
+@item
+The @option{-m} option from the
+Bell Laboratories research version of @command{awk}
+This was later removed.
+
+@item
+The @option{--re-interval} option to provide interval expressions in regexps
+(@pxref{Regexp Operators}).
+
+@item
+The @option{--traditional} option was added as a better name for
+@option{--compat} (@pxref{Options}).
+@end itemize
+
+@item
+The use of GNU Autoconf to control the configuration process
+(@pxref{Quick Installation}).
+
+@item
+Amiga support.
+
+@end itemize
+
+Version 3.1 of @command{gawk} introduced the following features:
+
+@itemize @bullet
+@item
+New variables
+(@pxref{Built-in Variables}):
+
+@itemize @minus
+@item
+@code{BINMODE}, for non-POSIX systems,
+which allows binary I/O for input and/or output files
+(@pxref{PC Using}).
+
+@item
+@code{LINT}, which dynamically controls lint warnings.
+
+@item
+@code{PROCINFO}, an array for providing process-related information.
+
+@item
+@code{TEXTDOMAIN}, for setting an application's internationalization text domain
+(@pxref{Internationalization}).
+@end itemize
+
+@item
+The ability to use octal and hexadecimal constants in @command{awk}
+program source code
+(@pxref{Nondecimal-numbers}).
+
+@item
+The @samp{|&} operator for two-way I/O to a coprocess
+(@pxref{Two-way I/O}).
+
+@item
+The @file{/inet} special files for TCP/IP networking using @samp{|&}
+(@pxref{TCP/IP Networking}).
+
+@item
+The optional second argument to @code{close()} that allows closing one end
+of a two-way pipe to a coprocess
+(@pxref{Two-way I/O}).
+
+@item
+The optional third argument to the @code{match()} function
+for capturing text-matching subexpressions within a regexp
+(@pxref{String Functions}).
+
+@item
+Positional specifiers in @code{printf} formats for
+making translations easier
+(@pxref{Printf Ordering}).
+
+@item
+A number of new built-in functions:
+
+@itemize @minus
+@item
+The @code{asort()} and @code{asorti()} functions for sorting arrays
+(@pxref{Array Sorting}).
+
+@item
+The @code{bindtextdomain()}, @code{dcgettext()} and @code{dcngettext()} functions
+for internationalization
+(@pxref{Programmer i18n}).
+
+@item
+The @code{extension()} function and the ability to add
+new built-in functions dynamically
+(@pxref{Dynamic Extensions}).
+
+@item
+The @code{mktime()} function for creating timestamps
+(@pxref{Time Functions}).
+
+@item
+The @code{and()}, @code{or()}, @code{xor()}, @code{compl()},
+@code{lshift()}, @code{rshift()}, and @code{strtonum()} functions
+(@pxref{Bitwise Functions}).
+@end itemize
+
+@item
+@cindex @code{next file} statement
+The support for @samp{next file} as two words was removed completely
+(@pxref{Nextfile Statement}).
+
+@item
+Additional commnd line options
+(@pxref{Options}):
+
+@itemize @minus
+@item
+The @option{--dump-variables} option to print a list of all global variables.
+
+@item
+The @option{--exec} option, for use in CGI scripts.
+
+@item
+The @option{--gen-po} command-line option and the use of a leading
+underscore to mark strings that should be translated
+(@pxref{String Extraction}).
+
+@item
+The @option{--non-decimal-data} option to allow non-decimal
+input data
+(@pxref{Nondecimal Data}).
+
+@item
+The @option{--profile} option and @command{pgawk}, the
+profiling version of @command{gawk}, for producing execution
+profiles of @command{awk} programs
+(@pxref{Profiling}).
+
+@item
+The @option{--use-lc-numeric} option to force @command{gawk}
+to use the locale's decimal point for parsing input data
+(@pxref{Conversion}).
+@end itemize
+
+@item
+The use of GNU Automake to help in standardizing the configuration process
+(@pxref{Quick Installation}).
+
+@item
+The use of GNU @code{gettext} for @command{gawk}'s own message output
+(@pxref{Gawk I18N}).
+
+@item
+BeOS support. This was later removed.
+
+@item
+Tandem support. This was later removed.
+
+@item
+The Atari port became officially unsupported.
+
+@item
+The source code changed to use ISO C standard-style function definitions.
+
+@item
+POSIX compliance for @code{sub()} and @code{gsub()}
+(@pxref{Gory Details}).
+
+@item
+The @code{length()} function was extended to accept an array argument
+and return the number of elements in the array
+(@pxref{String Functions}).
+
+@item
+The @code{strftime()} function acquired a third argument to
+enable printing times as UTC
+(@pxref{Time Functions}).
+@end itemize
+
+Version 4.0 of @command{gawk} introduced the following features:
+
+@itemize @bullet
+
+@item
+Variable additions:
+
+@itemize @minus
+@item
+@code{FPAT}, which allows you to specify a regexp that matches
+the fields, instead of matching the field separator
+(@pxref{Splitting By Content}).
+
+@item
+If @code{PROCINFO["sorted_in"]} exists, @samp{for(iggy in foo)} loops sort the
+indices before looping over them. The value of this element
+provides control over how the indices are sorted before the loop
+traversal starts
+(@pxref{Controlling Scanning}).
+
+@item
+@code{PROCINFO["strftime"]}, which holds
+the default format for @code{strftime()}
+(@pxref{Time Functions}).
+@end itemize
+
+@item
+The special files @file{/dev/pid}, @file{/dev/ppid}, @file{/dev/pgrpid}
+and @file{/dev/user} were removed.
+
+@item
+Support for IPv6 was added via the @file{/inet6} special file.
+@file{/inet4} forces IPv4 and @file{/inet} chooses the system
+default, which is probably IPv4
+(@pxref{TCP/IP Networking}).
+
+@item
+The use of @samp{\s} and @samp{\S} escape sequences in regular expressions
+(@pxref{GNU Regexp Operators}).
+
+@item
+Interval expressions became part of default regular expressions
+(@pxref{Regexp Operators}).
+
+@item
+POSIX character classes work even with @option{--traditional}
+(@pxref{Regexp Operators}).
+
+@item
+@code{break} and @code{continue} became invalid outside a loop,
+even with @option{--traditional}
+(@pxref{Break Statement}, and also see
+@ref{Continue Statement}).
+
+@item
+@code{fflush()}, @code{nextfile}, and @samp{delete @var{array}}
+are allowed if @option{--posix} or @option{--traditional}, since they
+are all now part of POSIX.
+
+@item
+An optional third argument to
+@code{asort()} and @code{asorti()}, specifying how to sort
+(@pxref{String Functions}).
+
+@item
+The behavior of @code{fflush()} changed to match Brian Kernighan's @command{awk}
+and for POSIX; now both @samp{fflush()} and @samp{fflush("")}
+flush all open output redirections
+(@pxref{I/O Functions}).
+
+@item
+The @code{isarray()}
+function which distinguishes if an item is an array
+or not, to make it possible to traverse multidimensional arrays
+(@pxref{Type Functions}).
+
+@item
+The @code{patsplit()}
+function which gives the same capability as @code{FPAT}, for splitting
+(@pxref{String Functions}).
+
+@item
+An optional fourth argument to the @code{split()} function,
+which is an array to hold the values of the separators
+(@pxref{String Functions}).
+
+@item
+Arrays of arrays
+(@pxref{Arrays of Arrays}).
+
+@item
+The @code{BEGINFILE} and @code{ENDFILE} special patterns
+(@pxref{BEGINFILE/ENDFILE}).
+
+@item
+Indirect function calls
+(@pxref{Indirect Calls}).
+
+@item
+@code{switch} / @code{case} are enabled by default
+(@pxref{Switch Statement}).
+
+@item
+Command line option changes
+(@pxref{Options}):
+
+@itemize @minus
+@item
+The @option{-b} and @option{--characters-as-bytes} options
+which prevent @command{gawk} from treating input as a multibyte string.
+
+@item
+The redundant @option{--compat}, @option{--copyleft}, and @option{--usage}
+long options were removed.
+
+@item
+The @option{--gen-po} option was finally renamed to the correct @option{--gen-pot}.
+
+@item
+The @option{--sandbox} option which disables certain features.
+
+@item
+All long options acquired corresponding short options, for use in @samp{#!} scripts.
+@end itemize
+
+@item
+Directories named on the command line now produce a warning, not a fatal
+error, unless @option{--posix} or @option{--traditional} are used
+(@pxref{Command line directories}).
+
+@item
+The @command{gawk} internals were rewritten, bringing the @command{dgawk}
+debugger and possibly improved performance
+(@pxref{Debugger}).
+
+@item
+Per the GNU Coding Standards, dynamic extensions must now define
+a global symbol indicating that they are GPL-compatible
+(@pxref{Plugin License}).
+
+@item
+In POSIX mode, string comparisons use @code{strcoll()} / @code{wcscoll()}
+(@pxref{POSIX String Comparison}).
+
+@item
+The option for raw sockets was removed, since it was never implemented
+(@pxref{TCP/IP Networking}).
+
+@item
+Ranges of the form @samp{[d-h]} are treated as if they were in the
+C locale, no matter what kind of regexp is being used, and even if
+@option{--posix}
+(@pxref{Ranges and Locales}).
+
+@item
+Support was removed for the following systems:
+
+@itemize @minus
+@item
+Atari
+
+@item
+Amiga
+
+@item
+BeOS
+
+@item
+Cray
+
+@item
+MIPS RiscOS
+
+@item
+MS-DOS with Microsoft Compiler
+
+@item
+MS-Windows with Microsoft Compiler
+
+@item
+NeXT
+
+@item
+SunOS 3.x, Sun 386 (Road Runner)
+
+@item
+Tandem (non-POSIX)
+
+@item
+Prestandard VAX C compiler for VAX/VMS
+@end itemize
+@end itemize
+
+Version 4.1 of @command{gawk} introduced the following features:
+
+@itemize @bullet
+
+@item
+Three new arrays:
+@code{SYMTAB}, @code{FUNCTAB}, and @code{PROCINFO["identifiers"]}
+(@pxref{Auto-set}).
+
+@item
+The three executables @command{gawk}, @command{pgawk}, and @command{dgawk}, were merged into
+one, named just @command{gawk}. As a result the command line options changed.
+
+@item
+Command line option changes
+(@pxref{Options}):
+
+@itemize @minus
+@item
+The @option{-D} option invokes the debugger.
+
+@item
+The @option{-i} and @option{--include} options
+load @command{awk} library files.
+
+@item
+The @option{-l} and @option{--load} options load compiled dynamic extensions.
+
+@item
+The @option{-M} and @option{--bignum} options enable MPFR.
+
+@item
+The @option{-o} only does pretty-printing.
+
+@item
+The @option{-p} option is used for profiling.
+
+@item
+The @option{-R} option was removed.
+@end itemize
+
+@item
+Support for high precision arithmetic with MPFR.
+(@pxref{Gawk and MPFR}).
+
+@item
+The @code{and()}, @code{or()} and @code{xor()} functions
+changed to allow any number of arguments,
+with a minimum of two
+(@pxref{Bitwise Functions}).
+
+@item
+The dynamic extension interface was completely redone
+(@pxref{Dynamic Extensions}).
+
+@end itemize
+
+@c XXX ADD MORE STUFF HERE
+
@node Common Extensions
@appendixsec Common Extensions Summary
@@ -33515,18 +34874,18 @@ the three most widely-used freely available versions of @command{awk}
@multitable {@file{/dev/stderr} special file} {BWK Awk} {Mawk} {GNU Awk}
@headitem Feature @tab BWK Awk @tab Mawk @tab GNU Awk
@item @samp{\x} Escape sequence @tab X @tab X @tab X
-@item @code{RS} as regexp @tab @tab X @tab X
@item @code{FS} as null string @tab X @tab X @tab X
-@item @file{/dev/stdin} special file @tab X @tab @tab X
+@item @file{/dev/stdin} special file @tab X @tab X @tab X
@item @file{/dev/stdout} special file @tab X @tab X @tab X
@item @file{/dev/stderr} special file @tab X @tab X @tab X
-@item @code{**} and @code{**=} operators @tab X @tab @tab X
+@item @code{delete} without subscript @tab X @tab X @tab X
@item @code{fflush()} function @tab X @tab X @tab X
-@item @code{func} keyword @tab X @tab @tab X
+@item @code{length()} of an array @tab X @tab X @tab X
@item @code{nextfile} statement @tab X @tab X @tab X
-@item @code{delete} without subscript @tab X @tab X @tab X
-@item @code{length()} of an array @tab X @tab @tab X
+@item @code{**} and @code{**=} operators @tab X @tab @tab X
+@item @code{func} keyword @tab X @tab @tab X
@item @code{BINMODE} variable @tab @tab X @tab X
+@item @code{RS} as regexp @tab @tab X @tab X
@item Time related functions @tab @tab X @tab X
@end multitable
@@ -33546,7 +34905,7 @@ character ranges (such as @samp{[a-z]}) to match any character between
the first character in the range and the last character in the range,
inclusive. Ordering was based on the numeric value of each character
in the machine's native character set. Thus, on ASCII-based systems,
-@code{[a-z]} matched all the lowercase letters, and only the lowercase
+@samp{[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 contiguous. (On an EBCDIC system, the range @samp{[a-z]}
includes additional, non-alphabetic characters as well.)
@@ -33557,7 +34916,7 @@ as working in this fashion, and in particular, would teach that the
that @samp{[A-Z]} was the ``correct'' way to match uppercase letters.
And indeed, this was true.@footnote{And Life was good.}
-The 1993 POSIX standard introduced the idea of locales (@pxref{Locales}).
+The 1992 POSIX standard introduced the idea of locales (@pxref{Locales}).
Since many locales include other letters besides the plain twenty-six
letters of the American English alphabet, the POSIX standard added
character classes (@pxref{Bracket Expressions}) as a way to match
@@ -33596,6 +34955,7 @@ This output is unexpected, since the @samp{bc} at the end of
This result is due to the locale setting (and thus you may not see
it on your system).
+@cindex Unicode
Similar considerations apply to other ranges. For example, @samp{["-/]}
is perfectly valid in ASCII, but is not valid in many Unicode locales,
such as @samp{en_US.UTF-8}.
@@ -33607,18 +34967,19 @@ When @command{gawk} switched to using locale-aware regexp matchers,
the problems began; especially as both GNU/Linux and commercial Unix
vendors started implementing non-ASCII locales, @emph{and making them
the default}. Perhaps the most frequently asked question became something
-like ``why does @code{[A-Z]} match lowercase letters?!?''
+like ``why does @samp{[A-Z]} match lowercase letters?!?''
+@cindex Berry, Karl
This situation existed for close to 10 years, if not more, and
the @command{gawk} maintainer grew weary of trying to explain that
@command{gawk} was being nicely standards-compliant, and that the issue
was in the user's locale. During the development of version 4.0,
he modified @command{gawk} to always treat ranges in the original,
pre-POSIX fashion, unless @option{--posix} was used (@pxref{Options}).@footnote{And
-thus was born the Campain for Rational Range Interpretation (or RRI). A number
-of GNU tools, such as @command{grep} and @command{sed}, have either
-implemented this change, or will soon. Thanks to Karl Berry for coining the phrase
-``Rational Range Interpretation.''}
+thus was born the Campaign for Rational Range Interpretation (or
+RRI). A number of GNU tools have either implemented this change,
+or will soon. Thanks to Karl Berry for coining the phrase ``Rational
+Range Interpretation.''}
Fortunately, shortly before the final release of @command{gawk} 4.0,
the maintainer learned that the 2008 standard had changed the
@@ -33631,15 +34992,15 @@ and
By using this lovely technical term, the standard gives license
to implementors to implement ranges in whatever way they choose.
The @command{gawk} maintainer chose to apply the pre-POSIX meaning in all
-cases: the default regexp matching; with @option{--traditional}, and with
+cases: the default regexp matching; with @option{--traditional} and with
@option{--posix}; in all cases, @command{gawk} remains POSIX compliant.
@node Contributors
@appendixsec Major Contributors to @command{gawk}
@cindex @command{gawk}, list of contributors to
@quotation
-@i{Always give credit where credit is due.}@*
-Anonymous
+@i{Always give credit where credit is due.}
+@author Anonymous
@end quotation
This @value{SECTION} names the major contributors to @command{gawk}
@@ -33827,6 +35188,15 @@ environments.
(This is no longer supported)
@item
+@cindex Wallin, Anders
+Anders Wallin helped keep the VMS port going for several years.
+
+@item
+@cindex Gordon, Assaf
+Assaf Gordon contributed the code to implement the
+@option{--sandbox} option.
+
+@item
@cindex Haque, John
John Haque made the following contributions:
@@ -33836,6 +35206,10 @@ The modifications to convert @command{gawk}
into a byte-code interpreter, including the debugger.
@item
+The addition of true multidimensional arrays.
+@ref{Arrays of Arrays}.
+
+@item
The additional modifications for support of arbitrary precision arithmetic.
@item
@@ -33848,6 +35222,10 @@ into one, for the 4.1 release.
@item
Improved array internals for arrays indexed by integers.
+
+@item
+The improved array sorting features were driven by John together
+with Pat Rankin.
@end itemize
@item
@@ -33862,6 +35240,11 @@ Arnold Robbins and Andrew Schorr, with notable contributions from
the rest of the development team.
@item
+@cindex Colombo, Antonio
+Antonio Giovanni Colombo rewrote a number of examples in the early
+chapters that were severely dated, for which I am incredibly grateful.
+
+@item
@cindex Robbins, Arnold
Arnold Robbins
has been working on @command{gawk} since 1988, at first
@@ -33872,7 +35255,7 @@ helping David Trueman, and as the primary maintainer since around 1994.
@appendix Installing @command{gawk}
@c last two commas are part of see also
-@cindex operating systems, See Also GNU/Linux, PC operating systems, Unix
+@cindex operating systems, See Also GNU/Linux@comma{} PC operating systems@comma{} Unix
@c STARTOFRANGE gligawk
@cindex @command{gawk}, installing
@c STARTOFRANGE ingawk
@@ -33969,7 +35352,7 @@ Extracting the archive
creates a directory named @file{gawk-@value{VERSION}.@value{PATCHLEVEL}}
in the current directory.
-The distribution @value{FN} is of the form
+The distribution file name is of the form
@file{gawk-@var{V}.@var{R}.@var{P}.tar.gz}.
The @var{V} represents the major version of @command{gawk},
the @var{R} represents the current release of version @var{V}, and
@@ -34001,6 +35384,13 @@ The actual @command{gawk} source code.
@end table
@table @file
+@item ABOUT-NLS
+Information about GNU @command{gettext} and translations.
+
+@item AUTHORS
+A file with some information about the authorship of @command{gawk}.
+It exists only to satisfy the pedants at the Free Software Foundation.
+
@item README
@itemx README_d/README.*
Descriptive files: @file{README} for @command{gawk} under Unix and the
@@ -34024,16 +35414,6 @@ An older list of changes to @command{gawk}.
@item COPYING
The GNU General Public License.
-@item FUTURES
-A brief list of features and changes being contemplated for future
-releases, with some indication of the time frame for the feature, based
-on its difficulty.
-
-@item LIMITATIONS
-A list of those factors that limit @command{gawk}'s performance.
-Most of these depend on the hardware or operating system software and
-are not limits in @command{gawk} itself.
-
@item POSIX.STD
A description of behaviors in the POSIX standard for @command{awk} which
are left undefined, or where @command{gawk} may not comply fully, as well
@@ -34066,12 +35446,19 @@ The @command{troff} source for a manual page describing @command{gawk}.
This is distributed for the convenience of Unix users.
@cindex Texinfo
-@item doc/gawk.texi
+@item doc/gawktexi.in
+@itemx doc/sidebar.awk
The Texinfo source file for this @value{DOCUMENT}.
-It should be processed with @TeX{}
-(via @command{texi2dvi} or @command{texi2pdf})
+It should be processed by @file{doc/sidebar.awk}
+before processing with @command{texi2dvi} or @command{texi2pdf}
to produce a printed document, and
with @command{makeinfo} to produce an Info or HTML file.
+The @file{Makefile} takes care of this processing and produces
+printable output via @command{texi2dvi} or @command{texi2pdf}.
+
+@item doc/gawk.texi
+The file produced after processing @file{gawktexi.in}
+with @file{sidebar.awk}.
@item doc/gawk.info
The generated Info file for this @value{DOCUMENT}.
@@ -34110,15 +35497,21 @@ the @file{Makefile.in} files used by @command{autoconf} and
@item Makefile.in
@itemx aclocal.m4
+@itemx bisonfix.awk
+@itemx config.guess
@itemx configh.in
@itemx configure.ac
@itemx configure
@itemx custom.h
+@itemx depcomp
+@itemx install-sh
@itemx missing_d/*
+@itemx mkinstalldirs
@itemx m4/*
-These files and subdirectories are used when configuring @command{gawk}
-for various Unix systems. They are explained in
-@ref{Unix Installation}.
+These files and subdirectories are used when configuring and compiling
+@command{gawk} for various Unix systems. Most of them are explained
+in @ref{Unix Installation}. The rest are there to support the main
+infrastructure.
@item po/*
The @file{po} library contains message translations.
@@ -34142,6 +35535,11 @@ They are installed as part of the installation process.
The rest of the programs in this @value{DOCUMENT} are available in appropriate
subdirectories of @file{awklib/eg}.
+@item extension/*
+The source code, manual pages, and infrastructure files for
+the sample extensions included with @command{gawk}.
+@xref{Dynamic Extensions}, for more information.
+
@item posix/*
Files needed for building @command{gawk} on POSIX-compliant systems.
@@ -34245,7 +35643,7 @@ please send in a bug report (@pxref{Bugs}).
Of course, once you've built @command{gawk}, it is likely that you will
wish to install it. To do so, you need to run the command @samp{make
-check}, as a user with the appropriate permissions. How to do this
+install}, as a user with the appropriate permissions. How to do this
varies by system, but on many systems you can use the @command{sudo}
command to do so. The command then becomes @samp{sudo make install}. It
is likely that you will be asked for your password, and you will have
@@ -34262,7 +35660,15 @@ command line when compiling @command{gawk} from scratch, including:
@table @code
-@cindex @code{--disable-lint} configuration option
+@cindex @option{--disable-extensions} configuration option
+@cindex configuration option, @code{--disable-extensions}
+@item --disable-extensions
+Disable configuring and building the sample extensions in the
+@file{extension} directory. This is useful for cross-compiling.
+The default action is to dynamically check if the extensions
+can be configured and compiled.
+
+@cindex @option{--disable-lint} configuration option
@cindex configuration option, @code{--disable-lint}
@item --disable-lint
Disable all lint checking within @code{gawk}. The
@@ -34282,14 +35688,14 @@ Using this option may bring you some slight performance improvement.
Using this option will cause some of the tests in the test suite
to fail. This option may be removed at a later date.
-@cindex @code{--disable-nls} configuration option
+@cindex @option{--disable-nls} configuration option
@cindex configuration option, @code{--disable-nls}
@item --disable-nls
Disable all message-translation facilities.
This is usually not desirable, but it may bring you some slight performance
improvement.
-@cindex @code{--with-whiny-user-strftime} configuration option
+@cindex @option{--with-whiny-user-strftime} configuration option
@cindex configuration option, @code{--with-whiny-user-strftime}
@item --with-whiny-user-strftime
Force use of the included version of the @code{strftime()}
@@ -34563,11 +35969,10 @@ multibyte functionality is not available.
@c STARTOFRANGE pcgawon
@cindex PC operating systems, @command{gawk} on
-With the exception of the Cygwin environment,
-the @samp{|&} operator and TCP/IP networking
-(@pxref{TCP/IP Networking})
-are not supported for MS-DOS or MS-Windows. EMX (OS/2 only) does support
-at least the @samp{|&} operator.
+Under MS-DOS and MS-Windows, the Cygwin and MinGW environments support
+both the @samp{|&} operator and TCP/IP networking
+(@pxref{TCP/IP Networking}).
+EMX (OS/2 only) supports at least the @samp{|&} operator.
@cindex search paths
@cindex search paths, for source files
@@ -34697,7 +36102,7 @@ moved into the @code{BEGIN} rule.
@command{gawk} can be built and used ``out of the box'' under MS-Windows
if you are using the @uref{http://www.cygwin.com, Cygwin environment}.
-This environment provides an excellent simulation of Unix, using the
+This environment provides an excellent simulation of GNU/Linux, using the
GNU tools, such as Bash, the GNU Compiler Collection (GCC), GNU Make,
and other GNU programs. Compilation and installation for Cygwin is the
same as for a Unix system:
@@ -34713,13 +36118,6 @@ When compared to GNU/Linux on the same system, the @samp{configure}
step on Cygwin takes considerably longer. However, it does finish,
and then the @samp{make} proceeds as usual.
-@quotation NOTE
-The @samp{|&} operator and TCP/IP networking
-(@pxref{TCP/IP Networking})
-are fully supported in the Cygwin environment. This is not true
-for any other environment on MS-Windows.
-@end quotation
-
@node MSYS
@appendixsubsubsec Using @command{gawk} In The MSYS Environment
@@ -34745,8 +36143,11 @@ The older designation ``VMS'' is used throughout to refer to OpenVMS.
@menu
* VMS Compilation:: How to compile @command{gawk} under VMS.
+* VMS Dynamic Extensions:: Compiling @command{gawk} dynamic extensions on
+ VMS.
* VMS Installation Details:: How to install @command{gawk} under VMS.
* VMS Running:: How to run @command{gawk} under VMS.
+* VMS GNV:: The VMS GNV Project.
* VMS Old Gawk:: An old version comes with some VMS systems.
@end menu
@@ -34754,41 +36155,110 @@ The older designation ``VMS'' is used throughout to refer to OpenVMS.
@appendixsubsubsec Compiling @command{gawk} on VMS
@cindex compiling @command{gawk} for VMS
-To compile @command{gawk} under VMS, there is a @code{DCL} command procedure that
-issues all the necessary @code{CC} and @code{LINK} commands. There is
-also a @file{Makefile} for use with the @code{MMS} utility. From the source
-directory, use either:
+To compile @command{gawk} under VMS, there is a @code{DCL} command procedure
+that issues all the necessary @code{CC} and @code{LINK} commands. There is
+also a @file{Makefile} for use with the @code{MMS} and @code{MMK} utilities.
+From the source directory, use either:
+
+@example
+$ @kbd{@@[.vms]vmsbuild.com}
+@end example
+
+@noindent
+or:
@example
-$ @kbd{@@[.VMS]VMSBUILD.COM}
+$ @kbd{MMS/DESCRIPTION=[.vms]descrip.mms gawk}
@end example
@noindent
or:
@example
-$ @kbd{MMS/DESCRIPTION=[.VMS]DESCRIP.MMS GAWK}
+$ @kbd{MMK/DESCRIPTION=[.vms]descrip.mms gawk}
@end example
-Older versions of @command{gawk} could be built with VAX C or
-GNU C on VAX/VMS, as well as with DEC C, but that is no longer
-supported. DEC C (also briefly known as ``Compaq C'' and now known
-as ``HP C,'' but referred to here as ``DEC C'') is required. Both
-@code{VMSBUILD.COM} and @code{DESCRIP.MMS} contain some obsolete support
-for the older compilers but are set up to use DEC C by default.
+@code{MMK} is an open source, free, near-clone of @code{MMS} and
+can better handle @code{ODS-5} volumes with upper- and lowercase filenames.
+@code{MMK} is available from @uref{https://github.com/endlesssoftware/mmk}.
+
+With @code{ODS-5} volumes and extended parsing enabled, the case of the target
+parameter may need to be exact.
+
+@command{gawk} has been tested under VAX/VMS 7.3 and Alpha/VMS 7.3-1
+using Compaq C V6.4, and Alpha/VMS 7.3, Alpha/VMS 7.3-2, and IA64/VMS 8.3.
+The most recent builds used HP C V7.3 on Alpha VMS 8.3 and both
+Alpha and IA64 VMS 8.4 used HP C 7.3.@footnote{The IA64 architecture
+is also known as ``Itanium.''}
+
+The @file{[.vms]gawk_build_steps.txt} provides information on how to build
+@command{gawk} into a PCSI kit that is compatible with the GNV product.
+
+@node VMS Dynamic Extensions
+@appendixsubsubsec Compiling @command{gawk} Dynamic Extensions on VMS
+
+The extensions that have been ported to VMS can be built using one of
+the following commands.
+
+@example
+$ @kbd{MMS/DESCRIPTION=[.vms]descrip.mms extensions}
+@end example
+
+@noindent
+or:
+
+@example
+$ @kbd{MMK/DESCRIPTION=[.vms]descrip.mms extensions}
+@end example
-@command{gawk} has been tested under Alpha/VMS 7.3-1 using Compaq C V6.4,
-and on Alpha/VMS 7.3, Alpha/VMS 7.3-2, and IA64/VMS 8.3.@footnote{The IA64
-architecture is also known as ``Itanium.''}
+@command{gawk} uses @code{AWKLIBPATH} as either an environment variable
+or a logical name to find the dynamic extensions.
+
+Dynamic extensions need to be compiled with the same compiler options for
+floating point, pointer size, and symbol name handling as were used
+to compile @command{gawk} itself.
+Alpha and Itanium should use IEEE floating point. The pointer size is 32 bits,
+and the symbol name handling should be exact case with CRC shortening for
+symbols longer than 32 bits.
+
+For Alpha and Itanium:
+
+@example
+/name=(as_is,short)
+/float=ieee/ieee_mode=denorm_results
+@end example
+
+For VAX:
+
+@example
+/name=(as_is,short)
+@end example
+
+Compile time macros need to be defined before the first VMS-supplied
+header file is included.
+
+@example
+#if (__CRTL_VER >= 70200000) && !defined (__VAX)
+#define _LARGEFILE 1
+#endif
+
+#ifndef __VAX
+#ifdef __CRTL_VER
+#if __CRTL_VER >= 80200000
+#define _USE_STD_STAT 1
+#endif
+#endif
+#endif
+@end example
@node VMS Installation Details
@appendixsubsubsec Installing @command{gawk} on VMS
-To install @command{gawk}, all you need is a ``foreign'' command, which is
-a @code{DCL} symbol whose value begins with a dollar sign. For example:
+To use @command{gawk}, all you need is a ``foreign'' command, which is a
+@code{DCL} symbol whose value begins with a dollar sign. For example:
@example
-$ @kbd{GAWK :== $disk1:[gnubin]GAWK}
+$ @kbd{GAWK :== $disk1:[gnubin]gawk}
@end example
@noindent
@@ -34800,10 +36270,29 @@ Alternatively, the symbol may be placed in the system-wide
@file{sylogin.com} procedure, which allows all users
to run @command{gawk}.
-Optionally, the help entry can be loaded into a VMS help library:
+If your @command{gawk} was installed by a PCSI kit into the
+@file{GNV$GNU:} directory tree, the program will be known as
+@file{GNV$GNU:[bin]gnv$gawk.exe} and the help file will be
+@file{GNV$GNU:[vms_help]gawk.hlp}.
+
+The PCSI kit also installs a @file{GNV$GNU:[vms_bin]gawk_verb.cld} file
+which can be used to add @command{gawk} and @command{awk} as DCL commands.
+
+For just the current process you can use:
+
+@example
+$ @kbd{set command gnv$gnu:[vms_bin]gawk_verb.cld}
+@end example
+
+Or the system manager can use @file{GNV$GNU:[vms_bin]gawk_verb.cld} to
+add the @command{gawk} and @command{awk} to the system wide @samp{DCLTABLES}.
+
+The DCL syntax is documented in the @file{gawk.hlp} file.
+
+Optionally, the @file{gawk.hlp} entry can be loaded into a VMS help library:
@example
-$ @kbd{LIBRARY/HELP SYS$HELP:HELPLIB [.VMS]GAWK.HLP}
+$ @kbd{LIBRARY/HELP sys$help:helplib [.vms]gawk.hlp}
@end example
@noindent
@@ -34821,7 +36310,7 @@ provides information about both the @command{gawk} implementation and the
The logical name @samp{AWK_LIBRARY} can designate a default location
for @command{awk} program files. For the @option{-f} option, if the specified
-@value{FN} has no device or directory path information in it, @command{gawk}
+file name has no device or directory path information in it, @command{gawk}
looks in the current directory first, then in the directory specified
by the translation of @samp{AWK_LIBRARY} if the file is not found.
If, after searching in both directories, the file still is not found,
@@ -34854,9 +36343,42 @@ One side effect of dual command-line parsing is that if there is only a
single parameter (as in the quoted string program above), the command
becomes ambiguous. To work around this, the normally optional @option{--}
flag is required to force Unix-style parsing rather than @code{DCL} parsing. If any
-other dash-type options (or multiple parameters such as @value{DF}s to
+other dash-type options (or multiple parameters such as data files to
process) are present, there is no ambiguity and @option{--} can be omitted.
+@cindex exit status, of VMS
+The @code{exit} value is a Unix-style value and is encoded to a VMS exit
+status value when the program exits.
+
+The VMS severity bits will be set based on the @code{exit} value.
+A failure is indicated by 1 and VMS sets the @code{ERROR} status.
+A fatal error is indicated by 2 and VMS will set the @code{FATAL} status.
+All other values will have the @code{SUCCESS} status. The exit value is
+encoded to comply with VMS coding standards and will have the
+@code{C_FACILITY_NO} of @code{0x350000} with the constant @code{0xA000}
+added to the number shifted over by 3 bits to make room for the severity codes.
+
+To extract the actual @command{gawk} exit code from the VMS status use:
+
+@example
+unix_status = (vms_status .and. &x7f8) / 8
+@end example
+
+@noindent
+A C program that uses @code{exec()} to call @command{gawk} will get the original
+Unix-style exit value.
+
+Older versions of @command{gawk} treated a Unix exit code 0 as 1, a failure
+as 2, a fatal error as 4, and passed all the other numbers through.
+This violated the VMS exit status coding requirements.
+
+@cindex floating-point, VAX/VMS
+VAX/VMS floating point uses unbiased rounding. @xref{Round Function}.
+
+VMS reports time values in GMT unless one of the @code{SYS$TIMEZONE_RULE}
+or @code{TZ} logical names is set. Older versions of VMS, such as VAX/VMS
+7.3 do not set these logical names.
+
@c @cindex directory search
@c @cindex path, search
@cindex search paths
@@ -34868,6 +36390,21 @@ of @env{AWKPATH} is a comma-separated list of directory specifications.
When defining it, the value should be quoted so that it retains a single
translation and not a multitranslation @code{RMS} searchlist.
+@node VMS GNV
+@appendixsubsubsec The VMS GNV Project
+
+The VMS GNV package provides a build environment similar to POSIX with ports
+of a collection of open source tools. The @command{gawk} found in the GNV
+base kit is an older port. Currently the GNV project is being reorganized
+to supply individual PCSI packages for each component.
+See @uref{https://sourceforge.net/p/gnv/wiki/InstallingGNVPackages/}.
+
+The normal build procedure for @command{gawk} produces a program that
+is suitable for use with GNV.
+
+The @file{vms/gawk_build_steps.txt} in the source documents the procedure
+for building a VMS PCSI kit that is compatible with GNV.
+
@ignore
@c The VMS POSIX product, also known as POSIX for OpenVMS, is long defunct
@c and building gawk for it has not been tested in many years, but these
@@ -34915,7 +36452,7 @@ define a symbol, as follows:
$ @kbd{gawk :== $sys$common:[syshlp.examples.tcpip.snmp]gawk.exe}
@end example
-This is apparently @value{PVERSION} 2.15.6, which is extremely old. We
+This is apparently version 2.15.6, which is extremely old. We
recommend compiling and using the current version.
@c ENDOFRANGE opgawx
@@ -34925,8 +36462,8 @@ recommend compiling and using the current version.
@appendixsec Reporting Problems and Bugs
@cindex archeologists
@quotation
-@i{There is nothing more dangerous than a bored archeologist.}@*
-The Hitchhiker's Guide to the Galaxy
+@i{There is nothing more dangerous than a bored archeologist.}
+@author The Hitchhiker's Guide to the Galaxy
@end quotation
@c the radio show, not the book. :-)
@@ -34944,8 +36481,8 @@ what you're trying to do. If it's not clear whether you should be able
to do something or not, report that too; it's a bug in the documentation!
Before reporting a bug or trying to fix it yourself, try to isolate it
-to the smallest possible @command{awk} program and input @value{DF} that
-reproduces the problem. Then send us the program and @value{DF},
+to the smallest possible @command{awk} program and input data file that
+reproduces the problem. Then send us the program and data file,
some idea of what kind of Unix system you're using,
the compiler you used to compile @command{gawk}, and the exact results
@command{gawk} gave you. Also say what you expected to occur; this helps
@@ -34999,32 +36536,37 @@ mail at the Internet address noted previously.
If you find bugs in one of the non-Unix ports of @command{gawk}, please send
an electronic mail message to the person who maintains that port. They
-are named in the following list, as well as in the @file{README} file in the @command{gawk}
-distribution. Information in the @file{README} file should be considered
-authoritative if it conflicts with this @value{DOCUMENT}.
+are named in the following list, as well as in the @file{README} file
+in the @command{gawk} distribution. Information in the @file{README}
+file should be considered authoritative if it conflicts with this
+@value{DOCUMENT}.
The people maintaining the non-Unix ports of @command{gawk} are
as follows:
-@multitable {MS-Windows with MINGW} {123456789012345678901234567890123456789001234567890}
+@c put the index entries outside the table, for docbook
@cindex Deifik, Scott
+@cindex Zaretskii, Eli
+@cindex Buening, Andreas
+@cindex Rankin, Pat
+@cindex Malmberg, John
+@cindex Pitts, Dave
+@multitable {MS-Windows with MINGW} {123456789012345678901234567890123456789001234567890}
@item MS-DOS with DJGPP @tab Scott Deifik, @EMAIL{scottd.mail@@sbcglobal.net,scottd dot mail at sbcglobal dot net}.
-@cindex Zaretskii, Eli
@item MS-Windows with MINGW @tab Eli Zaretskii, @EMAIL{eliz@@gnu.org,eliz at gnu dot org}.
-@cindex Buening, Andreas
@item OS/2 @tab Andreas Buening, @EMAIL{andreas.buening@@nexgo.de,andreas dot buening at nexgo dot de}.
-@cindex Rankin, Pat
-@item VMS @tab Pat Rankin, @EMAIL{r.pat.rankin@@gmail.com,r.pat.rankin at gmail.com}
+@item VMS @tab Pat Rankin, @EMAIL{r.pat.rankin@@gmail.com,r.pat.rankin at gmail.com}, and
+John Malmberg, @EMAIL{wb8tyw@@qsl.net,wb8tyw at qsl.net}.
-@cindex Pitts, Dave
@item z/OS (OS/390) @tab Dave Pitts, @EMAIL{dpitts@@cozx.com,dpitts at cozx dot com}.
@end multitable
If your bug is also reproducible under Unix, please send a copy of your
-report to the @EMAIL{bug-gawk@@gnu.org,bug-gawk at gnu dot org} email list as well.
+report to the @EMAIL{bug-gawk@@gnu.org,bug-gawk at gnu dot org} email
+list as well.
@c ENDOFRANGE dbugg
@c ENDOFRANGE tblgawb
@@ -35042,8 +36584,8 @@ Date: Wed, 4 Sep 1996 08:11:48 -0700 (PDT)
@cindex Brennan, Michael
@quotation
@i{It's kind of fun to put comments like this in your awk code.}@*
-@ @ @ @ @ @ @code{// Do C++ comments work? answer: yes! of course}@*
-Michael Brennan
+@ @ @ @ @ @ @code{// Do C++ comments work? answer: yes! of course}
+@author Michael Brennan
@end quotation
There are a number of other freely available @command{awk} implementations.
@@ -35053,7 +36595,7 @@ This @value{SECTION} briefly describes where to get them:
@cindex Kernighan, Brian
@cindex source code, Brian Kernighan's @command{awk}
@cindex @command{awk}, versions of, See Also Brian Kernighan's @command{awk}
-@cindex Brian Kernighan's @command{awk}
+@cindex Brian Kernighan's @command{awk}, source code
@item Unix @command{awk}
Brian Kernighan, one of the original designers of Unix @command{awk},
has made his implementation of
@@ -35073,6 +36615,7 @@ It is available in several archive formats:
@uref{http://www.cs.princeton.edu/~bwk/btl.mirror/awk.zip}
@end table
+@cindex @command{git} utility
You can also retrieve it from Git Hub:
@example
@@ -35085,16 +36628,14 @@ repository in a directory named @file{bwkawk}. If you leave that argument
off the @command{git} command line, the repository copy is created in a
directory named @file{awk}.
-This version requires an ISO C (1990 standard) compiler;
-the C compiler from
-GCC (the GNU Compiler Collection)
-works quite nicely.
+This version requires an ISO C (1990 standard) compiler; the C compiler
+from GCC (the GNU Compiler Collection) works quite nicely.
@xref{Common Extensions},
for a list of extensions in this @command{awk} that are not in POSIX @command{awk}.
@cindex Brennan, Michael
-@cindex @command{mawk} program
+@cindex @command{mawk} utility
@cindex source code, @command{mawk}
@item @command{mawk}
Michael Brennan wrote an independent implementation of @command{awk},
@@ -35140,7 +36681,7 @@ To get @command{awka}, go to @url{http://sourceforge.net/projects/awka}.
The project seems to be frozen; no new code changes have been made
since approximately 2003.
-@cindex Beebe, Nelson
+@cindex Beebe, Nelson H.F.@:
@cindex @command{pawk} (profiling version of Brian Kernighan's @command{awk})
@cindex source code, @command{pawk}
@item @command{pawk}
@@ -35169,15 +36710,22 @@ information, see the @uref{http://busybox.net, project's home page}.
@cindex source code, Solaris @command{awk}
@item The OpenSolaris POSIX @command{awk}
The version of @command{awk} in @file{/usr/xpg4/bin} on Solaris is
-more-or-less
-POSIX-compliant. It is based on the @command{awk} from Mortice Kern
-Systems for PCs. The source code can be downloaded from
-the @uref{http://www.opensolaris.org, OpenSolaris web site}.
+more-or-less POSIX-compliant. It is based on the @command{awk} from
+Mortice Kern Systems for PCs.
This author was able to make it compile and work under GNU/Linux
with 1--2 hours of work. Making it more generally portable (using
GNU Autoconf and/or Automake) would take more work, and this
has not been done, at least to our knowledge.
+@cindex Illumos
+@cindex Illumos, POSIX-compliant @command{awk}
+@cindex source code, Illumos @command{awk}
+The source code used to be available from the OpenSolaris web site.
+However, that project was ended and the web site shut down. Fortunately, the
+@uref{http://wiki.illumos.org/display/illumos/illumos+Home, Illumos project}
+makes this implementation available. You can view the files one at a time from
+@uref{https://github.com/joyent/illumos-joyent/blob/master/usr/src/cmd/awk_xpg4}.
+
@cindex @command{jawk}
@cindex Java implementation of @command{awk}
@cindex source code, @command{jawk}
@@ -35196,6 +36744,7 @@ This is an embeddable @command{awk} interpreter derived from
@uref{http://repo.hu/projects/libmawk/}.
@item @code{pawk}
+@cindex source code, @command{pawk} (Python version)
@cindex @code{pawk}, @command{awk}-like facilities for Python
This is a Python module that claims to bring @command{awk}-like
features to Python. See @uref{https://github.com/alecthomas/pawk}
@@ -35218,6 +36767,10 @@ under the GPL. It has a large number of extensions over standard
See @uref{http://www.quiktrim.org/QTawk.html} for more information,
including the manual and a download link.
+@item Other Versions
+See also the @uref{http://en.wikipedia.org/wiki/Awk_language#Versions_and_implementations,
+Wikipedia article}, for information on additional versions.
+
@end table
@c ENDOFRANGE gligawk
@c ENDOFRANGE ingawk
@@ -35297,6 +36850,7 @@ As @command{gawk} is Free Software, the source code is always available.
@ref{Gawk Distribution}, describes how to get and build the formal,
released versions of @command{gawk}.
+@cindex @command{git} utility
However, if you want to modify @command{gawk} and contribute back your
changes, you will probably wish to work with the development version.
To do so, you will need to access the @command{gawk} source code
@@ -35368,7 +36922,7 @@ for information on getting the latest version of @command{gawk}.)
@item
@ifnotinfo
-Follow the @cite{GNU Coding Standards}.
+Follow the @uref{http://www.gnu.org/prep/standards/, @cite{GNU Coding Standards}}.
@end ifnotinfo
@ifinfo
See @inforef{Top, , Version, standards, GNU Coding Standards}.
@@ -35472,6 +37026,7 @@ If possible, please update the @command{man} page as well.
You will also have to sign paperwork for your documentation changes.
+@cindex @command{git} utility
@item
Submit changes as unified diffs.
Use @samp{diff -u -r -N} to compare
@@ -35527,11 +37082,9 @@ Be prepared to sign the appropriate paperwork.
In order for the FSF to distribute your code, you must either place
your code in the public domain and submit a signed statement to that
effect, or assign the copyright in your code to the FSF.
-@ifinfo
Both of these actions are easy to do and @emph{many} people have done so
already. If you have questions, please contact me, or
@email{gnu@@gnu.org}.
-@end ifinfo
@item
When doing a port, bear in mind that your code must coexist peacefully
@@ -35607,6 +37160,8 @@ coding style and brace layout that suits your taste.
@node Derived Files
@appendixsubsec Why Generated Files Are Kept In @command{git}
+@c STARTOFRANGE gawkgit
+@cindex @command{git}, use of for @command{gawk} source code
@c From emails written March 22, 2012, to the gawk developers list.
If you look at the @command{gawk} source in the @command{git}
@@ -35786,7 +37341,7 @@ wget http://git.savannah.gnu.org/cgit/gawk.git/snapshot/gawk-@var{branchname}.ta
@noindent
to retrieve a snapshot of the given branch.
-
+@c ENDOFRANGE gawkgit
@node Future Extensions
@appendixsec Probable Future Extensions
@@ -35828,11 +37383,13 @@ Larry
@cindex Wall, Larry
@cindex Robbins, Arnold
@quotation
-@i{AWK is a language similar to PERL, only considerably more elegant.}@*
-Arnold Robbins
+@i{AWK is a language similar to PERL, only considerably more elegant.}
+@author Arnold Robbins
+@end quotation
-@i{Hey!}@*
-Larry Wall
+@quotation
+@i{Hey!}
+@author Larry Wall
@end quotation
The @file{TODO} file in the @command{gawk} Git repository lists possible
@@ -35964,7 +37521,7 @@ in order to loop over all the element in an easy fashion for C code.
@item
The ability to create arrays (including @command{gawk}'s true
-multi-dimensional arrays).
+multidimensional arrays).
@end itemize
@end itemize
@@ -36097,11 +37654,11 @@ to any of the above.
@ref{Dynamic Extensions}, describes the supported API and mechanisms
for writing extensions for @command{gawk}. This API was introduced
-in @value{PVERSION} 4.1. However, for many years @command{gawk}
+in version 4.1. However, for many years @command{gawk}
provided an extension mechanism that required knowledge of @command{gawk}
internals and that was not as well designed.
-In order to provide a transition period, @command{gawk} @value{PVERSION}
+In order to provide a transition period, @command{gawk} version
4.1 continues to support the original extension mechanism.
This will be true for the life of exactly one major release. This support
will be withdrawn, and removed from the source code, at the next major
@@ -36155,8 +37712,15 @@ other introductory texts that you should refer to instead.)
@cindex processing data
At the most basic level, the job of a program is to process
-some input data and produce results. See @ref{figure-general-flow}.
+some input data and produce results.
+@ifnotdocbook
+See @ref{figure-general-flow}.
+@end ifnotdocbook
+@ifdocbook
+See @inlineraw{docbook, <xref linkend="figure-general-flow"/>}.
+@end ifdocbook
+@ifnotdocbook
@float Figure,figure-general-flow
@caption{General Program Flow}
@ifinfo
@@ -36166,6 +37730,14 @@ some input data and produce results. See @ref{figure-general-flow}.
@center @image{general-program, , , General program flow}
@end ifnotinfo
@end float
+@end ifnotdocbook
+
+@docbook
+<figure id="figure-general-flow">
+<title>General Program Flow</title>
+<graphic fileref="general-program.eps"/>
+</figure>
+@end docbook
@cindex compiled programs
@cindex interpreted programs
@@ -36181,9 +37753,15 @@ instructions in your program to process the data.
@cindex programming, basic steps
When you write a program, it usually consists
-of the following, very basic set of steps, as shown
-in @ref{figure-process-flow}:
+of the following, very basic set of steps,
+@ifnotdocbook
+as shown in @ref{figure-process-flow}:
+@end ifnotdocbook
+@ifdocbook
+as shown in @inlineraw{docbook <xref linkend="figure-process-flow"/>}:
+@end ifdocbook
+@ifnotdocbook
@float Figure,figure-process-flow
@caption{Basic Program Steps}
@ifinfo
@@ -36193,6 +37771,14 @@ in @ref{figure-process-flow}:
@center @image{process-flow, , , Basic Program Stages}
@end ifnotinfo
@end float
+@end ifnotdocbook
+
+@docbook
+<figure id="figure-process-flow">
+<title>Basic Program Stages</title>
+<graphic fileref="process-flow.eps"/>
+</figure>
+@end docbook
@table @asis
@item Initialization
@@ -36363,7 +37949,7 @@ better written in another language.
You can get it from @uref{http://awk.info/?awk100/aaa}.
@cindex Ada programming language
-@cindex Programming languages, Ada
+@cindex programming languages, Ada
@item Ada
A programming language originally defined by the U.S.@: Department of
Defense for embedded programming. It was designed to enforce good
@@ -36431,9 +38017,6 @@ The GNU version of the standard shell
@end ifinfo
See also ``Bourne Shell.''
-@item BBS
-See ``Bulletin Board System.''
-
@item Bit
Short for ``Binary Digit.''
All values in computer memory ultimately reduce to binary digits: values
@@ -36508,11 +38091,6 @@ Changing some of them affects @command{awk}'s running environment.
@item Braces
See ``Curly Braces.''
-@item Bulletin Board System
-A computer system allowing users to log in and read and/or leave messages
-for other users of the system, much like leaving paper notes on a bulletin
-board.
-
@item C
The system programming language that most GNU software is written in. The
@command{awk} programming language has C-like syntax, and this @value{DOCUMENT}
@@ -36539,6 +38117,8 @@ The @uref{http://www.unicode.org, Unicode character set} is
becoming increasingly popular and standard, and is particularly
widely used on GNU/Linux systems.
+@cindex Kernighan, Brian
+@cindex Bentley, Jon
@cindex @command{chem} utility
@item CHEM
A preprocessor for @command{pic} that reads descriptions of molecules
@@ -36675,7 +38255,7 @@ ordinary expression. It could be a string constant, such as
(@xref{Computed Regexps}.)
@item Environment
-A collection of strings, of the form @var{name@code{=}val}, that each
+A collection of strings, of the form @var{name}@code{=}@code{val}, that each
program has available to it. Users generally place values into the
environment in order to provide information to various programs. Typical
examples are the environment variables @env{HOME} and @env{PATH}.
@@ -36844,7 +38424,7 @@ information about the name of the organization and its language-independent
three-letter acronym.
@cindex Java programming language
-@cindex Programming languages, Java
+@cindex programming languages, Java
@item Java
A modern programming language originally developed by Sun Microsystems
(now Oracle) supporting Object-Oriented programming. Although usually
@@ -37069,7 +38649,7 @@ numeric values. It is the C type @code{float}.
The character generated by hitting the space bar on the keyboard.
@item Special File
-A @value{FN} interpreted internally by @command{gawk}, instead of being handed
+A file name interpreted internally by @command{gawk}, instead of being handed
directly to the underlying operating system---for example, @file{/dev/stderr}.
(@xref{Special Files}.)
@@ -37131,7 +38711,12 @@ record or a string.
@c The GNU General Public License.
@node Copying
@unnumbered GNU General Public License
+@ifnotdocbook
@center Version 3, 29 June 2007
+@end ifnotdocbook
+@docbook
+<subtitle>Version 3, 29 June 2007</subtitle>
+@end docbook
@c This file is intended to be included within another document,
@c hence no sectioning command or @node.
@@ -37856,10 +39441,17 @@ first, please read @url{http://www.gnu.org/philosophy/why-not-lgpl.html}.
@c The GNU Free Documentation License.
@node GNU Free Documentation License
@unnumbered GNU Free Documentation License
+@ifnotdocbook
+@center Version 1.3, 3 November 2008
+@end ifnotdocbook
+
+@docbook
+<subtitle>Version 1.3, 3 November 2008</subtitle>
+@end docbook
+
@cindex FDL (Free Documentation License)
@cindex Free Documentation License (FDL)
@cindex GNU Free Documentation License
-@center Version 1.3, 3 November 2008
@c This file is intended to be included within another document,
@c hence no sectioning command or @node.
@@ -38364,8 +39956,10 @@ to permit their use in free software.
@c ispell-local-pdict: "ispell-dict"
@c End:
+@ifnotdocbook
@node Index
@unnumbered Index
+@end ifnotdocbook
@printindex cp
@bye
@@ -38450,6 +40044,7 @@ Consistency issues:
Use MS-Windows not MS Windows
Use MS-DOS not MS-DOS
Use an empty set of parentheses after built-in and awk function names.
+ Use "multiFOO" without a hyphen.
Date: Wed, 13 Apr 94 15:20:52 -0400
From: rms@gnu.org (Richard Stallman)
@@ -38475,8 +40070,6 @@ Suggestions:
% Next edition:
% 1. Standardize the error messages from the functions and programs
% in the two sample code chapters.
-% 2. Nuke the BBS stuff and use something that won't be obsolete
-% 3. Turn the advanced notes into sidebars by using @cartouche
Better sidebars can almost sort of be done with:
@@ -38508,4 +40101,3 @@ But to use it you have to say
}
which sorta sucks.
-
diff --git a/doc/gawkinet.info b/doc/gawkinet.info
index c8ce6b8d..0a0d69d8 100644
--- a/doc/gawkinet.info
+++ b/doc/gawkinet.info
@@ -613,7 +613,7 @@ tcp, udp x 0 x Invalid
tcp, udp 0 0 0 Invalid
tcp, udp 0 x 0 Invalid
-Table 2.1: /inet Special File Components
+Table 2.1: /inet Special File Components
In general, TCP is the preferred mechanism to use. It is the
simplest protocol to understand and to use. Use UDP only if
@@ -4358,40 +4358,40 @@ Node: Using Networking17966
Node: Gawk Special Files20284
Node: Special File Fields22094
Ref: table-inet-components25967
-Node: Comparing Protocols27290
-Node: File /inet/tcp27823
-Node: File /inet/udp28849
-Node: TCP Connecting29947
-Node: Troubleshooting32285
-Ref: Troubleshooting-Footnote-135337
-Node: Interacting35906
-Node: Setting Up38636
-Node: Email42130
-Node: Web page44456
-Ref: Web page-Footnote-147261
-Node: Primitive Service47458
-Node: Interacting Service50192
-Ref: Interacting Service-Footnote-159321
-Node: CGI Lib59353
-Node: Simple Server66314
-Ref: Simple Server-Footnote-174037
-Node: Caveats74138
-Node: Challenges75281
-Node: Some Applications and Techniques83960
-Node: PANIC86417
-Node: GETURL88135
-Node: REMCONF90758
-Node: URLCHK96234
-Node: WEBGRAB100069
-Node: STATIST104519
-Ref: STATIST-Footnote-1116227
-Node: MAZE116672
-Node: MOBAGWHO122856
-Ref: MOBAGWHO-Footnote-1136800
-Node: STOXPRED136855
-Node: PROTBASE151110
-Node: Links164191
-Node: GNU Free Documentation License167625
-Node: Index192764
+Node: Comparing Protocols27287
+Node: File /inet/tcp27820
+Node: File /inet/udp28846
+Node: TCP Connecting29944
+Node: Troubleshooting32282
+Ref: Troubleshooting-Footnote-135334
+Node: Interacting35903
+Node: Setting Up38633
+Node: Email42127
+Node: Web page44453
+Ref: Web page-Footnote-147258
+Node: Primitive Service47455
+Node: Interacting Service50189
+Ref: Interacting Service-Footnote-159318
+Node: CGI Lib59350
+Node: Simple Server66311
+Ref: Simple Server-Footnote-174034
+Node: Caveats74135
+Node: Challenges75278
+Node: Some Applications and Techniques83957
+Node: PANIC86414
+Node: GETURL88132
+Node: REMCONF90755
+Node: URLCHK96231
+Node: WEBGRAB100066
+Node: STATIST104516
+Ref: STATIST-Footnote-1116224
+Node: MAZE116669
+Node: MOBAGWHO122853
+Ref: MOBAGWHO-Footnote-1136797
+Node: STOXPRED136852
+Node: PROTBASE151107
+Node: Links164188
+Node: GNU Free Documentation License167622
+Node: Index192761

End Tag Table
diff --git a/doc/gawkinet.texi b/doc/gawkinet.texi
index eb0f2d81..40198e1d 100644
--- a/doc/gawkinet.texi
+++ b/doc/gawkinet.texi
@@ -597,7 +597,7 @@ is started, @command{gawk} creates the appropriate network
connection, and then two-way I/O proceeds as usual.
@c last comma is part of see-also
-@cindex input/output, two-way, See Also @command{gawk}, networking
+@cindex input/output, two-way, See Also @command{gawk}@comma{} networking
@cindex TCP/IP, sockets and
At the C, C++, and Perl level, networking is accomplished
via @dfn{sockets}, an Application Programming Interface (API) originally
@@ -1144,9 +1144,9 @@ or the application cannot tolerate virtual circuit overhead.
@node Setting Up, Email, Interacting, Using Networking
@section Setting Up a Service
@c last comma is part of tertiary
-@cindex networks, @command{gawk} and, service, establishing
+@cindex networks, @command{gawk} and, service@comma{} establishing
@c last comma is part of tertiary
-@cindex @command{gawk}, networking, service, establishing
+@cindex @command{gawk}, networking, service@comma{} establishing
The preceding programs behaved as clients that connect to a server somewhere
on the Internet and request a particular service. Now we set up such a
service to mimic the behavior of the @samp{daytime} service.
diff --git a/doc/gawktexi.in b/doc/gawktexi.in
index 59ee1a69..791f787f 100644
--- a/doc/gawktexi.in
+++ b/doc/gawktexi.in
@@ -14,6 +14,20 @@
* awk: (gawk)Invoking gawk. Text scanning and processing.
@end direntry
+@ifset FOR_PRINT
+@tex
+\gdef\xrefprintnodename#1{``#1''}
+@end tex
+@end ifset
+@ifclear FOR_PRINT
+@c With early 2014 texinfo.tex, restore PDF links and colors
+@tex
+\gdef\linkcolor{0.5 0.09 0.12} % Dark Red
+\gdef\urlcolor{0.5 0.09 0.12} % Also
+\global\urefurlonlylinktrue
+@end tex
+@end ifclear
+
@set xref-automatic-section-title
@c The following information should be updated here only!
@@ -21,9 +35,9 @@
@c applies to and all the info about who's publishing this edition
@c These apply across the board.
-@set UPDATE-MONTH May, 2013
+@set UPDATE-MONTH April, 2014
@set VERSION 4.1
-@set PATCHLEVEL 0
+@set PATCHLEVEL 1
@set FSF
@@ -97,11 +111,19 @@
@end ifnottex
@ifnottex
+@ifnotdocbook
@macro ii{text}
@i{\text\}
@end macro
+@end ifnotdocbook
@end ifnottex
+@ifdocbook
+@macro ii{text}
+@inlineraw{docbook,<lineannotation>\text\</lineannotation>}
+@end macro
+@end ifdocbook
+
@c For HTML, spell out email addresses, to avoid problems with
@c address harvesters for spammers.
@ifhtml
@@ -115,19 +137,36 @@
@end macro
@end ifnothtml
-@set FN file name
-@set FFN File Name
-@set DF data file
-@set DDF Data File
-@set PVERSION version
-@set CTL Ctrl
+@c Indexing macros
+@ifinfo
+
+@macro cindexawkfunc{name}
+@cindex @code{\name\}
+@end macro
+
+@macro cindexgawkfunc{name}
+@cindex @code{\name\}
+@end macro
+
+@end ifinfo
+
+@ifnotinfo
+
+@macro cindexawkfunc{name}
+@cindex @code{\name\()} function
+@end macro
+
+@macro cindexgawkfunc{name}
+@cindex @code{\name\()} function (@command{gawk})
+@end macro
+@end ifnotinfo
@ignore
Some comments on the layout for TeX.
-1. Use at least texinfo.tex 2000-09-06.09
-2. I have done A LOT of work to make this look good. There are `@page' commands
- and use of `@group ... @end group' in a number of places. If you muck
- with anything, it's your responsibility not to break the layout.
+1. Use at least texinfo.tex 2014-01-30.15
+2. When using @docbook, if the last line is part of a paragraph, end
+it with a space and @c so that the lines won't run together. This is a
+quirk of the language / makeinfo, and isn't going to change.
@end ignore
@c merge the function and variable indexes into the concept index
@@ -143,6 +182,10 @@ Some comments on the layout for TeX.
@syncodeindex fn cp
@syncodeindex vr cp
@end ifxml
+@ifdocbook
+@synindex fn cp
+@synindex vr cp
+@end ifdocbook
@c If "finalout" is commented out, the printed output will show
@c black boxes that mark lines that are too long. Thus, it is
@@ -154,9 +197,26 @@ Some comments on the layout for TeX.
@end iftex
@copying
-Copyright @copyright{} 1989, 1991, 1992, 1993, 1996, 1997, 1998, 1999,
-2000, 2001, 2002, 2003, 2004, 2005, 2007, 2009, 2010, 2011, 2012, 2013
+@docbook
+<para>Published by:</para>
+
+<literallayout class="normal">Free Software Foundation
+51 Franklin Street, Fifth Floor
+Boston, MA 02110-1301 USA
+Phone: +1-617-542-5942
+Fax: +1-617-542-2652
+Email: <email>gnu@@gnu.org</email>
+URL: <ulink url="http://www.gnu.org">http://www.gnu.org/</ulink></literallayout>
+
+<literallayout class="normal">Copyright &copy; 1989, 1991, 1992, 1993, 1996&ndash;2005, 2007, 2009&ndash;2014
Free Software Foundation, Inc.
+All Rights Reserved.</literallayout>
+@end docbook
+
+@ifnotdocbook
+Copyright @copyright{} 1989, 1991, 1992, 1993, 1996--2005, 2007, 2009--2014 @*
+Free Software Foundation, Inc.
+@end ifnotdocbook
@sp 2
This is Edition @value{EDITION} of @cite{@value{TITLE}: @value{SUBTITLE}},
@@ -196,6 +256,7 @@ supports it in developing GNU and promoting software freedom.''
@c during editing and review.
@setchapternewpage odd
+@shorttitlepage GNU Awk
@titlepage
@title @value{TITLE}
@subtitle @value{SUBTITLE}
@@ -203,6 +264,7 @@ supports it in developing GNU and promoting software freedom.''
@subtitle @value{UPDATE-MONTH}
@author Arnold D. Robbins
+@ifnotdocbook
@c Include the Distribution inside the titlepage environment so
@c that headings are turned off. Headings on and off do not work.
@@ -227,6 +289,7 @@ URL: @uref{http://www.gnu.org/} @*
ISBN 1-882114-28-0 @*
@sp 2
@insertcopying
+@end ifnotdocbook
@end titlepage
@c Thanks to Bob Chassell for directions on doing dedications.
@@ -251,6 +314,18 @@ ISBN 1-882114-28-0 @*
@headings on
@end iftex
+@docbook
+<dedication>
+<simplelist>
+<member>To Miriam, for making me complete.</member>
+<member>To Chana, for the joy you bring us.</member>
+<member>To Rivka, for the exponential increase.</member>
+<member>To Nachum, for the added dimension.</member>
+<member>To Malka, for the new beginning.</member>
+</simplelist>
+</dedication>
+@end docbook
+
@iftex
@headings off
@evenheading @thispage@ @ @ @strong{@value{TITLE}} @| @|
@@ -259,6 +334,7 @@ ISBN 1-882114-28-0 @*
@ifnottex
@ifnotxml
+@ifnotdocbook
@node Top
@top General Introduction
@c Preface node should come right after the Top
@@ -270,6 +346,7 @@ particular records in a file and perform operations upon them.
@insertcopying
+@end ifnotdocbook
@end ifnotxml
@end ifnottex
@@ -402,10 +479,12 @@ particular records in a file and perform operations upon them.
field.
* Command Line Field Separator:: Setting @code{FS} from the
command-line.
+* Full Line Fields:: Making the full line be a single
+ field.
* 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.
+* Multiple Line:: Reading multiline records.
* Getline:: Reading files under explicit program
control using the @code{getline}
function.
@@ -556,9 +635,9 @@ particular records in a file and perform operations upon them.
@command{awk}.
* Uninitialized Subscripts:: Using Uninitialized variables as
subscripts.
-* Multi-dimensional:: Emulating multidimensional arrays in
+* Multidimensional:: Emulating multidimensional arrays in
@command{awk}.
-* Multi-scanning:: Scanning multidimensional arrays.
+* Multiscanning:: 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.
@@ -610,6 +689,8 @@ particular records in a file and perform operations upon them.
* Join Function:: A function to join an array into a
string.
* Getlocaltime Function:: A function to get formatted times.
+* Readfile Function:: A function to read an entire file at
+ once.
* Data File Management:: Functions for managing command-line
data files.
* Filetrans Function:: A function for handling data file
@@ -727,6 +808,7 @@ particular records in a file and perform operations upon them.
* Extension API Functions Introduction:: Introduction to the API functions.
* General Data Types:: The data types.
* Requesting Values:: How to get a value.
+* Memory Allocation Functions:: Functions for allocating memory.
* Constructor Functions:: Functions for creating values.
* Registration Functions:: Functions to register things with
@command{gawk}.
@@ -789,6 +871,8 @@ particular records in a file and perform operations upon them.
version of @command{awk}.
* POSIX/GNU:: The extensions in @command{gawk} not
in POSIX @command{awk}.
+* Feature History:: The history of the features in
+ @command{gawk}.
* Common Extensions:: Common Extensions Summary.
* Ranges and Locales:: How locales used to affect regexp
ranges.
@@ -821,9 +905,12 @@ particular records in a file and perform operations upon them.
* VMS Installation:: Installing @command{gawk} on VMS.
* VMS Compilation:: How to compile @command{gawk} under
VMS.
+* VMS Dynamic Extensions:: Compiling @command{gawk} dynamic
+ extensions on VMS.
* VMS Installation Details:: How to install @command{gawk} under
VMS.
* VMS Running:: How to run @command{gawk} under VMS.
+* VMS GNV:: The VMS GNV Project.
* VMS Old Gawk:: An old version comes with some VMS
systems.
* Bugs:: Reporting Problems and Bugs.
@@ -957,21 +1044,37 @@ and the AWK prototype becomes the product.
The new @command{pgawk} (profiling @command{gawk}), produces
program execution counts.
I recently experimented with an algorithm that for
-@math{n} lines of input, exhibited
+@ifnotdocbook
+@math{n}
+@end ifnotdocbook
+@ifdocbook
+@i{n}
+@end ifdocbook
+lines of input, exhibited
@tex
$\sim\! Cn^2$
@end tex
@ifnottex
+@ifnotdocbook
~ C n^2
+@end ifnotdocbook
@end ifnottex
+@docbook
+<emphasis>&sim; Cn<superscript>2</superscript></emphasis> @c
+@end docbook
performance, while
theory predicted
@tex
$\sim\! Cn\log n$
@end tex
@ifnottex
+@ifnotdocbook
~ C n log n
+@end ifnotdocbook
@end ifnottex
+@docbook
+<emphasis>&sim; Cn log n</emphasis> @c
+@end docbook
behavior. A few minutes poring
over the @file{awkprof.out} profile pinpointed the problem to
a single line of code. @command{pgawk} is a welcome addition to
@@ -981,6 +1084,7 @@ Arnold has distilled over a decade of experience writing and
using AWK programs, and developing @command{gawk}, into this book. If you use
AWK or want to learn how, then read this book.
+@cindex Brennan, Michael
@display
Michael Brennan
Author of @command{mawk}
@@ -1005,6 +1109,7 @@ Such jobs are often easier with @command{awk}.
The @command{awk} utility interprets a special-purpose programming language
that makes it easy to handle simple data-reformatting jobs.
+@cindex Brian Kernighan's @command{awk}
The GNU implementation of @command{awk} is called @command{gawk}; if you
invoke it with the proper options or environment variables
(@pxref{Options}), it is fully
@@ -1155,17 +1260,17 @@ wrote the bulk of
@cite{TCP/IP Internetworking with @command{gawk}}
(a separate document, available as part of the @command{gawk} distribution).
His code finally became part of the main @command{gawk} distribution
-with @command{gawk} @value{PVERSION} 3.1.
+with @command{gawk} version 3.1.
John Haque rewrote the @command{gawk} internals, in the process providing
an @command{awk}-level debugger. This version became available as
-@command{gawk} @value{PVERSION} 4.0, in 2011.
+@command{gawk} version 4.0, in 2011.
@xref{Contributors},
for a complete list of those who made important contributions to @command{gawk}.
@node Names
-@section A Rose by Any Other Name
+@unnumberedsec A Rose by Any Other Name
@cindex @command{awk}, new vs.@: old
The @command{awk} language has evolved over the years. Full details are
@@ -1201,7 +1306,7 @@ we simply use the term @command{awk}. When referring to a feature that is
specific to the GNU implementation, we use the term @command{gawk}.
@node This Manual
-@section Using This Book
+@unnumberedsec Using This Book
@cindex @command{awk}, terms describing
The term @command{awk} refers to a particular program as well as to the language you
@@ -1211,7 +1316,7 @@ and the program ``the @command{awk} utility.''
This @value{DOCUMENT} explains
both how to write programs in the @command{awk} language and how to
run the @command{awk} utility.
-The term @dfn{@command{awk} program} refers to a program written by you in
+The term ``@command{awk} program'' refers to a program written by you in
the @command{awk} programming language.
@cindex @command{gawk}, @command{awk} and
@@ -1374,7 +1479,7 @@ present the licenses that cover the @command{gawk} source code
and this @value{DOCUMENT}, respectively.
@node Conventions
-@section Typographical Conventions
+@unnumberedsec Typographical Conventions
@cindex Texinfo
This @value{DOCUMENT} is written in @uref{http://www.gnu.org/software/texinfo/, Texinfo},
@@ -1413,23 +1518,23 @@ emphasized @emph{like this}, and if a point needs to be made
strongly, it is done @strong{like this}. The first occurrence of
a new term is usually its @dfn{definition} and appears in the same
font as the previous occurrence of ``definition'' in this sentence.
-Finally, @value{FN}s are indicated like this: @file{/path/to/ourfile}.
+Finally, file names are indicated like this: @file{/path/to/ourfile}.
@end ifnotinfo
Characters that you type at the keyboard look @kbd{like this}. In particular,
there are special characters called ``control characters.'' These are
characters that you type by holding down both the @kbd{CONTROL} key and
-another key, at the same time. For example, a @kbd{@value{CTL}-d} is typed
+another key, at the same time. For example, a @kbd{Ctrl-d} is typed
by first pressing and holding the @kbd{CONTROL} key, next
pressing the @kbd{d} key and finally releasing both keys.
@c fakenode --- for prepinfo
-@subsubheading Dark Corners
+@unnumberedsubsec Dark Corners
@cindex Kernighan, Brian
@quotation
@i{Dark corners are basically fractal --- no matter how much
-you illuminate, there's always a smaller but darker one.}@*
-Brian Kernighan
+you illuminate, there's always a smaller but darker one.}
+@author Brian Kernighan
@end quotation
@cindex d.c., See dark corner
@@ -1564,7 +1669,7 @@ of @cite{GAWK: The GNU Awk User's Guide}.
Edition @value{EDITION} maintains the basic structure of Edition 1.0,
but with significant additional material, reflecting the host of new features
-in @command{gawk} @value{PVERSION} @value{VERSION}.
+in @command{gawk} version @value{VERSION}.
Of particular note is
@ref{Array Sorting},
@ref{Bitwise Functions},
@@ -1727,7 +1832,7 @@ significant editorial help for this @value{DOCUMENT} for the
3.1 release of @command{gawk}.
@end quotation
-@cindex Beebe, Nelson
+@cindex Beebe, Nelson H.F.@:
@cindex Buening, Andreas
@cindex Collado, Manuel
@cindex Colombo, Antonio
@@ -1744,7 +1849,6 @@ significant editorial help for this @value{DOCUMENT} for the
@cindex Rankin, Pat
@cindex Schorr, Andrew
@cindex Vinschen, Corinna
-@cindex Wallin, Anders
@cindex Zaretskii, Eli
Dr.@: Nelson Beebe,
@@ -1764,7 +1868,6 @@ Chet Ramey,
Pat Rankin,
Andrew Schorr,
Corinna Vinschen,
-Anders Wallin,
and Eli Zaretskii
(in alphabetical order)
make up the current
@@ -2000,9 +2103,9 @@ awk '@var{program}'
@noindent
@command{awk} applies the @var{program} to the @dfn{standard input},
which usually means whatever you type on the terminal. This continues
-until you indicate end-of-file by typing @kbd{@value{CTL}-d}.
+until you indicate end-of-file by typing @kbd{Ctrl-d}.
(On other operating systems, the end-of-file character may be different.
-For example, on OS/2, it is @kbd{@value{CTL}-z}.)
+For example, on OS/2, it is @kbd{Ctrl-z}.)
@cindex files, input, See input files
@cindex input files, running @command{awk} without
@@ -2022,11 +2125,11 @@ $ @kbd{awk "BEGIN @{ print \"Don't Panic!\" @}"}
@print{} Don't Panic!
@end example
-@cindex quoting
-@cindex double quote (@code{"})
-@cindex @code{"} (double quote)
-@cindex @code{\} (backslash)
-@cindex backslash (@code{\})
+@cindex shell quoting, double quote
+@cindex double quote (@code{"}) in shell commands
+@cindex @code{"} (double quote) in shell commands
+@cindex @code{\} (backslash) in shell commands
+@cindex backslash (@code{\}) in shell commands
This program does not read any input. The @samp{\} before each of the
inner double quotes is necessary because of the shell's quoting
rules---in particular because it mixes both single quotes and
@@ -2048,7 +2151,7 @@ $ @kbd{awk '@{ print @}'}
@print{} Four score and seven years ago, ...
@kbd{What, me worry?}
@print{} What, me worry?
-@kbd{@value{CTL}-d}
+@kbd{Ctrl-d}
@end example
@node Long
@@ -2065,11 +2168,10 @@ more convenient to put the program into a separate file. In order to tell
awk -f @var{source-file} @var{input-file1} @var{input-file2} @dots{}
@end example
-@cindex @code{-f} option
-@cindex command line, options
-@cindex options, command-line
+@cindex @option{-f} option
+@cindex command line, option @option{-f}
The @option{-f} instructs the @command{awk} utility to get the @command{awk} program
-from the file @var{source-file}. Any @value{FN} can be used for
+from the file @var{source-file}. Any file name can be used for
@var{source-file}. For example, you could put the program:
@example
@@ -2090,22 +2192,22 @@ does the same thing as this one:
awk "BEGIN @{ print \"Don't Panic!\" @}"
@end example
-@cindex quoting
+@cindex quoting in @command{gawk} command lines
@noindent
This was explained earlier
(@pxref{Read Terminal}).
-Note that you don't usually need single quotes around the @value{FN} that you
-specify with @option{-f}, because most @value{FN}s don't contain any of the shell's
+Note that you don't usually need single quotes around the file name that you
+specify with @option{-f}, because most file names don't contain any of the shell's
special characters. Notice that in @file{advice}, the @command{awk}
program did not have single quotes around it. The quotes are only needed
for programs that are provided on the @command{awk} command line.
@c STARTOFRANGE sq1x
-@cindex single quote (@code{'})
+@cindex single quote (@code{'}) in @command{gawk} command lines
@c STARTOFRANGE qs2x
-@cindex @code{'} (single quote)
+@cindex @code{'} (single quote) in @command{gawk} command lines
If you want to clearly identify your @command{awk} program files as such,
-you can add the extension @file{.awk} to the @value{FN}. This doesn't
+you can add the extension @file{.awk} to the file name. This doesn't
affect the execution of the @command{awk} program but it does make
``housekeeping'' easier.
@@ -2132,13 +2234,13 @@ BEGIN @{ print "Don't Panic!" @}
After making this file executable (with the @command{chmod} utility),
simply type @samp{advice}
at the shell and the system arranges to run @command{awk}@footnote{The
-line beginning with @samp{#!} lists the full @value{FN} of an interpreter
+line beginning with @samp{#!} lists the full file name of an interpreter
to run and an optional initial command-line argument to pass to that
interpreter. The operating system then runs the interpreter with the given
argument and the full argument list of the executed program. The first argument
-in the list is the full @value{FN} of the @command{awk} program.
+in the list is the full file name of the @command{awk} program.
The rest of the
-argument list contains either options to @command{awk}, or @value{DF}s,
+argument list contains either options to @command{awk}, or data files,
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}:
@@ -2213,7 +2315,7 @@ programs, but this usually isn't very useful; the purpose of a
comment is to help you or another person understand the program
when reading it at a later time.
-@cindex quoting
+@cindex quoting, for small awk programs
@cindex single quote (@code{'}), vs.@: apostrophe
@cindex @code{'} (single quote), vs.@: apostrophe
@quotation CAUTION
@@ -2254,7 +2356,7 @@ The next @value{SUBSECTION} describes the shell's quoting rules.
@node Quoting
@subsection Shell-Quoting Issues
-@cindex quoting, rules for
+@cindex shell quoting, rules for
@menu
* DOS Quoting:: Quoting in Windows Batch Files.
@@ -2289,10 +2391,10 @@ that character. The shell removes the backslash and passes the quoted
character on to the command.
@item
-@cindex @code{\} (backslash)
-@cindex backslash (@code{\})
-@cindex single quote (@code{'})
-@cindex @code{'} (single quote)
+@cindex @code{\} (backslash), in shell commands
+@cindex backslash (@code{\}), in shell commands
+@cindex single quote (@code{'}), in shell commands
+@cindex @code{'} (single quote), in shell commands
Single quotes protect everything between the opening and closing quotes.
The shell does no interpretation of the quoted text, passing it on verbatim
to the command.
@@ -2302,8 +2404,8 @@ Refer back to
for an example of what happens if you try.
@item
-@cindex double quote (@code{"})
-@cindex @code{"} (double quote)
+@cindex double quote (@code{"}), in shell commands
+@cindex @code{"} (double quote), in shell commands
Double quotes protect most things between the opening and closing quotes.
The shell does at least variable and command substitution on the quoted text.
Different shells may do additional kinds of processing on double-quoted text.
@@ -2340,7 +2442,7 @@ awk -F "" '@var{program}' @var{files} # correct
@end example
@noindent
-@cindex null strings, quoting and
+@cindex null strings in @command{gawk} arguments, quoting and
Don't use this:
@example
@@ -2349,11 +2451,11 @@ awk -F"" '@var{program}' @var{files} # wrong!
@noindent
In the second case, @command{awk} will attempt to use the text of the program
-as the value of @code{FS}, and the first @value{FN} as the text of the program!
+as the value of @code{FS}, and the first file name as the text of the program!
This results in syntax errors at best, and confusing behavior at worst.
@end itemize
-@cindex quoting, tricks for
+@cindex quoting in @command{gawk} command lines, tricks for
Mixing single and double quotes is difficult. You have to resort
to shell quoting tricks, like this:
@@ -2464,49 +2566,48 @@ gawk "@{ print \"\042\" $0 \"\042\" @}" @var{file}
@node Sample Data Files
-@section @value{DDF}s for the Examples
+@section Data Files for the Examples
@c For gawk >= 4.0, update these data files. No-one has such slow modems!
@cindex input files, examples
-@cindex @code{BBS-list} file
+@cindex @code{mail-list} file
Many of the examples in this @value{DOCUMENT} take their input from two sample
-@value{DF}s. The first, @file{BBS-list}, represents a list of
-computer bulletin board systems together with information about those systems.
-The second @value{DF}, called @file{inventory-shipped}, contains
+data files. The first, @file{mail-list}, represents a list of peoples' names
+together with their email addresses and information about those people.
+The second data file, called @file{inventory-shipped}, contains
information about monthly shipments. In both files,
each line is considered to be one @dfn{record}.
-In the @value{DF} @file{BBS-list}, each record contains the name of a computer
-bulletin board, its phone number, the board's baud rate(s), and a code for
-the number of hours it is operational. An @samp{A} in the last column
-means the board operates 24 hours a day. A @samp{B} in the last
-column means the board only operates on evening and weekend hours.
-A @samp{C} means the board operates only on weekends:
+In the data file @file{mail-list}, each record contains the name of a person,
+his/her phone number, his/her email-address, and a code for their relationship
+with the author of the list. An @samp{A} in the last column
+means that the person is an acquaintance. An @samp{F} in the last
+column means that the person is a friend.
+An @samp{R} means that the person is a relative:
-@c 2e: Update the baud rates to reflect today's faster modems
@example
@c system if test ! -d eg ; then mkdir eg ; fi
@c system if test ! -d eg/lib ; then mkdir eg/lib ; fi
@c system if test ! -d eg/data ; then mkdir eg/data ; fi
@c system if test ! -d eg/prog ; then mkdir eg/prog ; fi
@c system if test ! -d eg/misc ; then mkdir eg/misc ; fi
-@c file eg/data/BBS-list
-aardvark 555-5553 1200/300 B
-alpo-net 555-3412 2400/1200/300 A
-barfly 555-7685 1200/300 A
-bites 555-1675 2400/1200/300 A
-camelot 555-0542 300 C
-core 555-2912 1200/300 C
-fooey 555-1234 2400/1200/300 B
-foot 555-6699 1200/300 B
-macfoo 555-6480 1200/300 A
-sdace 555-3430 2400/1200/300 A
-sabafoo 555-2127 1200/300 C
+@c file eg/data/mail-list
+Amelia 555-5553 amelia.zodiacusque@@gmail.com F
+Anthony 555-3412 anthony.asserturo@@hotmail.com A
+Becky 555-7685 becky.algebrarum@@gmail.com A
+Bill 555-1675 bill.drowning@@hotmail.com A
+Broderick 555-0542 broderick.aliquotiens@@yahoo.com R
+Camilla 555-2912 camilla.infusarum@@skynet.be R
+Fabius 555-1234 fabius.undevicesimus@@ucb.edu F
+Julie 555-6699 julie.perscrutabor@@skeeve.com F
+Martin 555-6480 martin.codicibus@@hotmail.com A
+Samuel 555-3430 samuel.lanceolis@@shu.edu A
+Jean-Paul 555-2127 jeanpaul.campanorum@@nyu.edu R
@c endfile
@end example
@cindex @code{inventory-shipped} file
-The @value{DF} @file{inventory-shipped} represents
+The data file @file{inventory-shipped} represents
information about shipments during the year.
Each record contains the month, the number
of green crates shipped, the number of red boxes shipped, the number of
@@ -2536,45 +2637,30 @@ Apr 21 70 74 514
@c endfile
@end example
-@ifinfo
-If you are reading this in GNU Emacs using Info, you can copy the regions
-of text showing these sample files into your own test files. This way you
-can try out the examples shown in the remainder of this document. You do
-this by using the command @kbd{M-x write-region} to copy text from the Info
-file into a file for use with @command{awk}
-(@xref{Misc File Ops, , Miscellaneous File Operations, emacs, GNU Emacs Manual},
-for more information). Using this information, create your own
-@file{BBS-list} and @file{inventory-shipped} files and practice what you
-learn in this @value{DOCUMENT}.
-
-@cindex Texinfo
-If you are using the stand-alone version of Info,
-see @ref{Extract Program},
-for an @command{awk} program that extracts these @value{DF}s from
-@file{gawk.texi}, the Texinfo source file for this Info file.
-@end ifinfo
+The sample files are included in the @command{gawk} distribution,
+in the directory @file{awklib/eg/data}.
@node Very Simple
@section Some Simple Examples
The following command runs a simple @command{awk} program that searches the
-input file @file{BBS-list} for the character string @samp{foo} (a
+input file @file{mail-list} for the character string @samp{li} (a
grouping of characters is usually called a @dfn{string};
the term @dfn{string} is based on similar usage in English, such
as ``a string of pearls,'' or ``a string of cars in a train''):
@example
-awk '/foo/ @{ print $0 @}' BBS-list
+awk '/li/ @{ print $0 @}' mail-list
@end example
@noindent
-When lines containing @samp{foo} are found, they are printed because
+When lines containing @samp{li} are found, they are printed because
@w{@samp{print $0}} means print the current line. (Just @samp{print} by
itself means the same thing, so we could have written that
instead.)
-You will notice that slashes (@samp{/}) surround the string @samp{foo}
-in the @command{awk} program. The slashes indicate that @samp{foo}
+You will notice that slashes (@samp{/}) surround the string @samp{li}
+in the @command{awk} program. The slashes indicate that @samp{li}
is the pattern to search for. This type of pattern is called a
@dfn{regular expression}, which is covered in more detail later
(@pxref{Regexp}).
@@ -2586,11 +2672,11 @@ interpret any of it as special shell characters.
Here is what this program prints:
@example
-$ @kbd{awk '/foo/ @{ print $0 @}' BBS-list}
-@print{} fooey 555-1234 2400/1200/300 B
-@print{} foot 555-6699 1200/300 B
-@print{} macfoo 555-6480 1200/300 A
-@print{} sabafoo 555-2127 1200/300 C
+$ @kbd{awk '/li/ @{ print $0 @}' mail-list}
+@print{} Amelia 555-5553 amelia.zodiacusque@@gmail.com F
+@print{} Broderick 555-0542 broderick.aliquotiens@@yahoo.com R
+@print{} Julie 555-6699 julie.perscrutabor@@skeeve.com F
+@print{} Samuel 555-3430 samuel.lanceolis@@shu.edu A
@end example
@cindex actions, default
@@ -2603,7 +2689,7 @@ action is to print all lines that match the pattern.
@cindex actions, empty
Thus, we could leave out the action (the @code{print} statement and the curly
braces) in the previous example and the result would be the same:
-@command{awk} prints all lines matching the pattern @samp{foo}. By comparison,
+@command{awk} prints all lines matching the pattern @samp{li}. By comparison,
omitting the @code{print} statement but retaining the curly braces makes an
empty action that does nothing (i.e., no lines are printed).
@@ -2613,9 +2699,9 @@ collection of useful, short programs to get you started. Some of these
programs contain constructs that haven't been covered yet. (The description
of the program will give you a good idea of what is going on, but please
read the rest of the @value{DOCUMENT} to become an @command{awk} expert!)
-Most of the examples use a @value{DF} named @file{data}. This is just a
+Most of the examples use a data file named @file{data}. This is just a
placeholder; if you use these programs yourself, substitute
-your own @value{FN}s for @file{data}.
+your own file names for @file{data}.
For future reference, note that there is often more than
one way to do things in @command{awk}. At some point, you may want
to look back at these examples and see if
@@ -2705,7 +2791,7 @@ awk 'END @{ print NR @}' data
@end example
@item
-Print the even-numbered lines in the @value{DF}:
+Print the even-numbered lines in the data file:
@example
awk 'NR % 2 == 0' data
@@ -2747,30 +2833,24 @@ This program prints every line that contains the string
@samp{12} @emph{or} the string @samp{21}. If a line contains both
strings, it is printed twice, once by each rule.
-This is what happens if we run this program on our two sample @value{DF}s,
-@file{BBS-list} and @file{inventory-shipped}:
+This is what happens if we run this program on our two sample data files,
+@file{mail-list} and @file{inventory-shipped}:
@example
$ @kbd{awk '/12/ @{ print $0 @}}
-> @kbd{/21/ @{ print $0 @}' BBS-list inventory-shipped}
-@print{} aardvark 555-5553 1200/300 B
-@print{} alpo-net 555-3412 2400/1200/300 A
-@print{} barfly 555-7685 1200/300 A
-@print{} bites 555-1675 2400/1200/300 A
-@print{} core 555-2912 1200/300 C
-@print{} fooey 555-1234 2400/1200/300 B
-@print{} foot 555-6699 1200/300 B
-@print{} macfoo 555-6480 1200/300 A
-@print{} sdace 555-3430 2400/1200/300 A
-@print{} sabafoo 555-2127 1200/300 C
-@print{} sabafoo 555-2127 1200/300 C
+> @kbd{/21/ @{ print $0 @}' mail-list inventory-shipped}
+@print{} Anthony 555-3412 anthony.asserturo@@hotmail.com A
+@print{} Camilla 555-2912 camilla.infusarum@@skynet.be R
+@print{} Fabius 555-1234 fabius.undevicesimus@@ucb.edu F
+@print{} Jean-Paul 555-2127 jeanpaul.campanorum@@nyu.edu R
+@print{} Jean-Paul 555-2127 jeanpaul.campanorum@@nyu.edu R
@print{} Jan 21 36 64 620
@print{} Apr 21 70 74 514
@end example
@noindent
-Note how the line beginning with @samp{sabafoo}
-in @file{BBS-list} was printed twice, once for each rule.
+Note how the line beginning with @samp{Jean-Paul}
+in @file{mail-list} was printed twice, once for each rule.
@node More Complex
@section A More Complex Example
@@ -2813,7 +2893,7 @@ the file. The fourth field identifies the group of the file.
The fifth field contains the size of the file in bytes. The
sixth, seventh, and eighth fields contain the month, day, and time,
respectively, that the file was last modified. Finally, the ninth field
-contains the @value{FN}.@footnote{The @samp{LC_ALL=C} is
+contains the file name.@footnote{The @samp{LC_ALL=C} is
needed to produce this traditional-style output from @command{ls}.}
@c @cindex automatic initialization
@@ -2849,7 +2929,7 @@ separate rule, like this:
@example
awk '/12/ @{ print $0 @}
- /21/ @{ print $0 @}' BBS-list inventory-shipped
+ /21/ @{ print $0 @}' mail-list inventory-shipped
@end example
@cindex @command{gawk}, newlines in
@@ -2964,8 +3044,8 @@ noticed because it is ``hidden'' inside the comment. Thus, the
@code{BEGIN} is noted as a syntax error.
@cindex statements, multiple
-@cindex @code{;} (semicolon)
-@cindex semicolon (@code{;})
+@cindex @code{;} (semicolon), separating statements in actions
+@cindex semicolon (@code{;}), separating statements in actions
When @command{awk} statements within one rule are short, you might want to put
more than one of them on a line. This is accomplished by separating the statements
with a semicolon (@samp{;}).
@@ -3025,6 +3105,7 @@ used once, and thrown away. Because @command{awk} programs are interpreted, you
can avoid the (usually lengthy) compilation part of the typical
edit-compile-test-debug cycle of software development.
+@cindex Brian Kernighan's @command{awk}
Complex programs have been written in @command{awk}, including a complete
retargetable assembler for eight-bit microprocessors (@pxref{Glossary}, for
more information), and a microcode assembler for a special-purpose Prolog
@@ -3049,7 +3130,7 @@ easier to maintain and usually run more efficiently.
@node Invoking Gawk
@chapter Running @command{awk} and @command{gawk}
-This @value{CHAPTER} covers how to run awk, both POSIX-standard
+This @value{CHAPTER} covers how to run @command{awk}, both POSIX-standard
and @command{gawk}-specific command-line options, and what
@command{awk} and
@command{gawk} do with non-option arguments.
@@ -3087,10 +3168,19 @@ There are two ways to run @command{awk}---with an explicit program or with
one or more program files. Here are templates for both of them; items
enclosed in [@dots{}] in these templates are optional:
+@ifnotdocbook
@example
awk @r{[@var{options}]} -f progfile @r{[@code{--}]} @var{file} @dots{}
awk @r{[@var{options}]} @r{[@code{--}]} '@var{program}' @var{file} @dots{}
@end example
+@end ifnotdocbook
+
+@c FIXME - find a better way to mark this up in docbook
+@docbook
+<screen>awk [<replaceable>options</replaceable>] -f progfile [<literal>--</literal>] <replaceable>file</replaceable> &#8230;
+awk [<replaceable>options</replaceable>] [<literal>--</literal>] '<replaceable>program</replaceable>' <replaceable>file</replaceable> &#8230;
+</screen>
+@end docbook
@cindex GNU long options
@cindex long options
@@ -3106,7 +3196,7 @@ It is possible to invoke @command{awk} with an empty program:
awk '' datafile1 datafile2
@end example
-@cindex @code{--lint} option
+@cindex @option{--lint} option
@noindent
Doing so makes little sense, though; @command{awk} exits
silently when given an empty program.
@@ -3146,43 +3236,27 @@ The following list describes options mandated by the POSIX standard:
@table @code
@item -F @var{fs}
@itemx --field-separator @var{fs}
-@cindex @code{-F} option
-@cindex @code{--field-separator} option
+@cindex @option{-F} option
+@cindex @option{--field-separator} option
@cindex @code{FS} variable, @code{--field-separator} option and
Set the @code{FS} variable to @var{fs}
(@pxref{Field Separators}).
@item -f @var{source-file}
@itemx --file @var{source-file}
-@cindex @code{-f} option
-@cindex @code{--file} option
+@cindex @option{-f} option
+@cindex @option{--file} option
@cindex @command{awk} programs, location of
Read @command{awk} program source from @var{source-file}
instead of in the first non-option argument.
This option may be given multiple times; the @command{awk}
-program consists of the concatenation the contents of
+program consists of the concatenation of the contents of
each specified @var{source-file}.
-@item -i @var{source-file}
-@itemx --include @var{source-file}
-@cindex @code{-i} option
-@cindex @code{--include} option
-@cindex @command{awk} programs, location of
-Read @command{awk} source library from @var{source-file}. This option is
-completely equivalent to using the @samp{@@include} directive inside
-your program. This option is very
-similar to the @option{-f} option, but there are two important differences.
-First, when @option{-i} is used, the program source will not be loaded if it has
-been previously loaded, whereas the @option{-f} will always load the file.
-Second, because this option is intended to be used with code libraries,
-@command{gawk} does not recognize such files as constituting main program
-input. Thus, after processing an @option{-i} argument, @command{gawk} still expects to
-find the main source code via the @option{-f} option or on the command-line.
-
@item -v @var{var}=@var{val}
@itemx --assign @var{var}=@var{val}
-@cindex @code{-v} option
-@cindex @code{--assign} option
+@cindex @option{-v} option
+@cindex @option{--assign} option
@cindex variables, setting
Set the variable @var{var} to the value @var{val} @emph{before}
execution of the program begins. Such variable values are available
@@ -3203,7 +3277,7 @@ predefined value you may have given.
@end quotation
@item -W @var{gawk-opt}
-@cindex @code{-W} option
+@cindex @option{-W} option
Provide an implementation-specific option.
This is the POSIX convention for providing implementation-specific options.
These options
@@ -3222,8 +3296,8 @@ conventions.
@cindex @code{-} (hyphen), filenames beginning with
@cindex hyphen (@code{-}), filenames beginning with
-This is useful if you have @value{FN}s that start with @samp{-},
-or in shell scripts, if you have @value{FN}s that will be specified
+This is useful if you have file names that start with @samp{-},
+or in shell scripts, if you have file names that will be specified
by the user that could start with @samp{-}.
It is also useful for passing options on to the @command{awk}
program; see @ref{Getopt Function}.
@@ -3236,8 +3310,8 @@ The following list describes @command{gawk}-specific options:
@table @code
@item -b
@itemx --characters-as-bytes
-@cindex @code{-b} option
-@cindex @code{--characters-as-bytes} option
+@cindex @option{-b} option
+@cindex @option{--characters-as-bytes} option
Cause @command{gawk} to treat all input data as single-byte characters.
In addition, all output written with @code{print} or @code{printf}
are treated as single-byte characters.
@@ -3251,8 +3325,8 @@ multibyte characters. This option is an easy way to tell @command{gawk}:
@item -c
@itemx --traditional
-@cindex @code{--c} option
-@cindex @code{--traditional} option
+@cindex @option{-c} option
+@cindex @option{--traditional} option
@cindex compatibility mode (@command{gawk}), specifying
Specify @dfn{compatibility mode}, in which the GNU extensions to
the @command{awk} language are disabled, so that @command{gawk} behaves just
@@ -3263,17 +3337,18 @@ which summarizes the extensions. Also see
@item -C
@itemx --copyright
-@cindex @code{-C} option
-@cindex @code{--copyright} option
+@cindex @option{-C} option
+@cindex @option{--copyright} option
@cindex GPL (General Public License), printing
Print the short version of the General Public License and then exit.
@item -d@r{[}@var{file}@r{]}
@itemx --dump-variables@r{[}=@var{file}@r{]}
-@cindex @code{-d} option
-@cindex @code{--dump-variables} option
-@cindex @code{awkvars.out} file
-@cindex files, @code{awkvars.out}
+@cindex @option{-d} option
+@cindex @option{--dump-variables} option
+@cindex dump all variables of a program
+@cindex @file{awkvars.out} file
+@cindex files, @file{awkvars.out}
@cindex variables, global, printing list of
Print a sorted list of global variables, their types, and final values
to @var{file}. If no @var{file} is provided, print this
@@ -3292,8 +3367,8 @@ names like @code{i}, @code{j}, etc.)
@item -D@r{[}@var{file}@r{]}
@itemx --debug=@r{[}@var{file}@r{]}
-@cindex @code{-D} option
-@cindex @code{--debug} option
+@cindex @option{-D} option
+@cindex @option{--debug} option
@cindex @command{awk} debugging, enabling
Enable debugging of @command{awk} programs
(@pxref{Debugging}).
@@ -3305,8 +3380,8 @@ No space is allowed between the @option{-D} and @var{file}, if
@item -e @var{program-text}
@itemx --source @var{program-text}
-@cindex @code{-e} option
-@cindex @code{--source} option
+@cindex @option{-e} option
+@cindex @option{--source} option
@cindex source code, mixing
Provide program source code in the @var{program-text}.
This option allows you to mix source code in files with source
@@ -3317,8 +3392,8 @@ programs (@pxref{AWKPATH Variable}).
@item -E @var{file}
@itemx --exec @var{file}
-@cindex @code{-E} option
-@cindex @code{--exec} option
+@cindex @option{-E} option
+@cindex @option{--exec} option
@cindex @command{awk} programs, location of
@cindex CGI, @command{awk} scripts for
Similar to @option{-f}, read @command{awk} program text from @var{file}.
@@ -3348,8 +3423,8 @@ with @samp{#!} scripts (@pxref{Executable Scripts}), like so:
@item -g
@itemx --gen-pot
-@cindex @code{-g} option
-@cindex @code{--gen-pot} option
+@cindex @option{-g} option
+@cindex @option{--gen-pot} option
@cindex portable object files, generating
@cindex files, portable object, generating
Analyze the source program and
@@ -3360,18 +3435,34 @@ for information about this option.
@item -h
@itemx --help
-@cindex @code{-h} option
-@cindex @code{--help} option
+@cindex @option{-h} option
+@cindex @option{--help} option
@cindex GNU long options, printing list of
@cindex options, printing list of
@cindex printing, list of options
Print a ``usage'' message summarizing the short and long style options
that @command{gawk} accepts and then exit.
+@item -i @var{source-file}
+@itemx --include @var{source-file}
+@cindex @option{-i} option
+@cindex @option{--include} option
+@cindex @command{awk} programs, location of
+Read @command{awk} source library from @var{source-file}. This option is
+completely equivalent to using the @samp{@@include} directive inside
+your program. This option is very
+similar to the @option{-f} option, but there are two important differences.
+First, when @option{-i} is used, the program source will not be loaded if it has
+been previously loaded, whereas the @option{-f} will always load the file.
+Second, because this option is intended to be used with code libraries,
+@command{gawk} does not recognize such files as constituting main program
+input. Thus, after processing an @option{-i} argument, @command{gawk} still expects to
+find the main source code via the @option{-f} option or on the command-line.
+
@item -l @var{lib}
@itemx --load @var{lib}
-@cindex @code{-l} option
-@cindex @code{--load} option
+@cindex @option{-l} option
+@cindex @option{--load} option
@cindex loading, library
Load a shared library @var{lib}. This searches for the library using the @env{AWKLIBPATH}
environment variable. The correct library suffix for your platform will be
@@ -3382,8 +3473,8 @@ a shared library.
@item -L @r{[}value@r{]}
@itemx --lint@r{[}=value@r{]}
-@cindex @code{-l} option
-@cindex @code{--lint} option
+@cindex @option{-l} option
+@cindex @option{--lint} option
@cindex lint checking, issuing warnings
@cindex warnings, issuing
Warn about constructs that are dubious or nonportable to
@@ -3405,16 +3496,16 @@ care to search for all occurrences of each inappropriate construct. As
@item -M
@itemx --bignum
-@cindex @code{-M} option
-@cindex @code{--bignum} option
+@cindex @option{-M} option
+@cindex @option{--bignum} option
Force arbitrary precision arithmetic on numbers. This option has no effect
if @command{gawk} is not compiled to use the GNU MPFR and MP libraries
-(@pxref{Arbitrary Precision Arithmetic}).
+(@pxref{Gawk and MPFR}).
@item -n
@itemx --non-decimal-data
-@cindex @code{-n} option
-@cindex @code{--non-decimal-data} option
+@cindex @option{-n} option
+@cindex @option{--non-decimal-data} option
@cindex hexadecimal values@comma{} enabling interpretation of
@cindex octal values@comma{} enabling interpretation of
@cindex troubleshooting, @code{--non-decimal-data} option
@@ -3429,40 +3520,40 @@ Use with care.
@item -N
@itemx --use-lc-numeric
-@cindex @code{-N} option
-@cindex @code{--use-lc-numeric} option
+@cindex @option{-N} option
+@cindex @option{--use-lc-numeric} option
Force the use of the locale's decimal point character
when parsing numeric input data (@pxref{Locales}).
@item -o@r{[}@var{file}@r{]}
@itemx --pretty-print@r{[}=@var{file}@r{]}
-@cindex @code{-o} option
-@cindex @code{--pretty-print} option
+@cindex @option{-o} option
+@cindex @option{--pretty-print} option
Enable pretty-printing of @command{awk} programs.
By default, output program is created in a file named @file{awkprof.out}.
The optional @var{file} argument allows you to specify a different
-@value{FN} for the output.
+file name for the output.
No space is allowed between the @option{-o} and @var{file}, if
@var{file} is supplied.
@item -O
@itemx --optimize
-@cindex @code{--optimize} option
-@cindex @code{-O} option
+@cindex @option{--optimize} option
+@cindex @option{-O} option
Enable some optimizations on the internal representation of the program.
At the moment this includes just simple constant folding. The @command{gawk}
maintainer hopes to add more optimizations over time.
@item -p@r{[}@var{file}@r{]}
@itemx --profile@r{[}=@var{file}@r{]}
-@cindex @code{-p} option
-@cindex @code{--profile} option
+@cindex @option{-p} option
+@cindex @option{--profile} option
@cindex @command{awk} profiling, enabling
Enable profiling of @command{awk} programs
(@pxref{Profiling}).
By default, profiles are created in a file named @file{awkprof.out}.
The optional @var{file} argument allows you to specify a different
-@value{FN} for the profile file.
+file name for the profile file.
No space is allowed between the @option{-p} and @var{file}, if
@var{file} is supplied.
@@ -3471,8 +3562,8 @@ in the left margin, and function call counts for each function.
@item -P
@itemx --posix
-@cindex @code{-P} option
-@cindex @code{--posix} option
+@cindex @option{-P} option
+@cindex @option{--posix} option
@cindex POSIX mode
@cindex @command{gawk}, extensions@comma{} disabling
Operate in strict POSIX mode. This disables all @command{gawk}
@@ -3513,16 +3604,16 @@ data (@pxref{Locales}).
@c @cindex automatic warnings
@c @cindex warnings, automatic
-@cindex @code{--traditional} option, @code{--posix} option and
-@cindex @code{--posix} option, @code{--traditional} option and
+@cindex @option{--traditional} option, @code{--posix} option and
+@cindex @option{--posix} option, @code{--traditional} option and
If you supply both @option{--traditional} and @option{--posix} on the
command line, @option{--posix} takes precedence. @command{gawk}
also issues a warning if both options are supplied.
@item -r
@itemx --re-interval
-@cindex @code{-r} option
-@cindex @code{--re-interval} option
+@cindex @option{-r} option
+@cindex @option{--re-interval} option
@cindex regular expressions, interval expressions and
Allow interval expressions
(@pxref{Regexp Operators})
@@ -3533,8 +3624,8 @@ and for use in combination with the @option{--traditional} option.
@item -S
@itemx --sandbox
-@cindex @code{-S} option
-@cindex @code{--sandbox} option
+@cindex @option{-S} option
+@cindex @option{--sandbox} option
@cindex sandbox mode
Disable the @code{system()} function,
input redirections with @code{getline},
@@ -3546,16 +3637,16 @@ can't access your system (other than the specified input data file).
@item -t
@itemx --lint-old
-@cindex @code{--L} option
-@cindex @code{--lint-old} option
+@cindex @option{-L} option
+@cindex @option{--lint-old} option
Warn about constructs that are not available in the original version of
@command{awk} from Version 7 Unix
(@pxref{V7/SVR3.1}).
@item -V
@itemx --version
-@cindex @code{-V} option
-@cindex @code{--version} option
+@cindex @option{-V} option
+@cindex @option{--version} option
@cindex @command{gawk}, versions of, information about@comma{} printing
Print version information for this particular copy of @command{gawk}.
This allows you to determine if your copy of @command{gawk} is up to date
@@ -3569,14 +3660,14 @@ As long as program text has been supplied,
any other options are flagged as invalid with a warning message but
are otherwise ignored.
-@cindex @code{-F} option, @code{-Ft} sets @code{FS} to TAB
+@cindex @option{-F} option, @option{-Ft} sets @code{FS} to TAB
In compatibility mode, as a special case, if the value of @var{fs} supplied
to the @option{-F} option is @samp{t}, then @code{FS} is set to the TAB
character (@code{"\t"}). This is true only for @option{--traditional} and not
for @option{--posix}
(@pxref{Field Separators}).
-@cindex @code{-f} option, multiple uses
+@cindex @option{-f} option, multiple uses
The @option{-f} option may be used more than once on the command line.
If it is, @command{awk} reads its program source from all of the named files, as
if they had been concatenated together into one big file. This is
@@ -3590,7 +3681,7 @@ function names must be unique.)
With standard @command{awk}, library functions can still be used, even
if the program is entered at the terminal,
by specifying @samp{-f /dev/tty}. After typing your program,
-type @kbd{@value{CTL}-d} (the end-of-file character) to terminate it.
+type @kbd{Ctrl-d} (the end-of-file character) to terminate it.
(You may also use @samp{-f -} to read program source from the standard
input but then you will not be able to also use the standard input as a
source of data.)
@@ -3603,7 +3694,7 @@ and library source code
(@pxref{AWKPATH Variable}).
The @option{--source} option may also be used multiple times on the command line.
-@cindex @code{--source} option
+@cindex @option{--source} option
If no @option{-f} or @option{--source} option is specified, then @command{gawk}
uses the first non-option command-line argument as the text of the
program source code.
@@ -3662,6 +3753,7 @@ file at all.
@cindex @command{gawk}, @code{ARGIND} variable in
@cindex @code{ARGIND} variable, command-line arguments
+@cindex @code{ARGV} array, indexing into
@cindex @code{ARGC}/@code{ARGV} variables, command-line arguments
All these arguments are made available to your @command{awk} program in the
@code{ARGV} array (@pxref{Built-in Variables}). Command-line options
@@ -3672,9 +3764,10 @@ sets the variable @code{ARGIND} to the index in @code{ARGV} of the
current element.
@cindex input files, variable assignments and
-The distinction between @value{FN} arguments and variable-assignment
+@cindex variable assignments and input files
+The distinction between file name arguments and variable-assignment
arguments is made when @command{awk} is about to open the next input file.
-At that point in execution, it checks the @value{FN} to see whether
+At that point in execution, it checks the file name to see whether
it is really a variable assignment; if so, @command{awk} sets the variable
instead of reading a file.
@@ -3691,7 +3784,7 @@ sequences (@pxref{Escape Sequences}).
@value{DARKCORNER}
In some earlier implementations of @command{awk}, when a variable assignment
-occurred before any @value{FN}s, the assignment would happen @emph{before}
+occurred before any file names, the assignment would happen @emph{before}
the @code{BEGIN} rule was executed. @command{awk}'s behavior was thus
inconsistent; some command-line assignments were available inside the
@code{BEGIN} rule, while others were not. Unfortunately,
@@ -3702,8 +3795,8 @@ upon the old behavior.
The variable assignment feature is most useful for assigning to variables
such as @code{RS}, @code{OFS}, and @code{ORS}, which control input and
-output formats before scanning the @value{DF}s. It is also useful for
-controlling state if multiple passes are needed over a @value{DF}. For
+output formats before scanning the data files. It is also useful for
+controlling state if multiple passes are needed over a data file. For
example:
@cindex files, multiple passes over
@@ -3739,16 +3832,17 @@ You may also use @code{"-"} to name standard input when reading
files with @code{getline} (@pxref{Getline/File}).
In addition, @command{gawk} allows you to specify the special
-@value{FN} @file{/dev/stdin}, both on the command line and
+file name @file{/dev/stdin}, both on the command line and
with @code{getline}.
Some other versions of @command{awk} also support this, but it
is not standard.
(Some operating systems provide a @file{/dev/stdin} file
in the file system, however, @command{gawk} always processes
-this @value{FN} itself.)
+this file name itself.)
@node Environment Variables
@section The Environment Variables @command{gawk} Uses
+@cindex environment variables used by @command{gawk}
A number of environment variables influence how @command{gawk}
behaves.
@@ -3764,8 +3858,7 @@ behaves.
@node AWKPATH Variable
@subsection The @env{AWKPATH} Environment Variable
@cindex @env{AWKPATH} environment variable
-@cindex directories, searching
-@cindex search paths
+@cindex directories, searching for source files
@cindex search paths, for source files
@cindex differences in @command{awk} and @command{gawk}, @code{AWKPATH} environment variable
@ifinfo
@@ -3775,14 +3868,14 @@ on the command-line with the @option{-f} option.
In most @command{awk}
implementations, you must supply a precise path name for each program
file, unless the file is in the current directory.
-But in @command{gawk}, if the @value{FN} supplied to the @option{-f}
+But in @command{gawk}, if the file name supplied to the @option{-f}
or @option{-i} options
-does not contain a @samp{/}, then @command{gawk} searches a list of
+does not contain a directory separator @samp{/}, then @command{gawk} searches a list of
directories (called the @dfn{search path}), one by one, looking for a
file with the specified name.
The search path is a string consisting of directory names
-separated by colons. @command{gawk} gets its search path from the
+separated by colons@footnote{Semicolons on MS-Windows and MS-DOS.}. @command{gawk} gets its search path from the
@env{AWKPATH} environment variable. If that variable does not exist,
@command{gawk} uses a default path,
@samp{.:/usr/local/share/awk}.@footnote{Your version of @command{gawk}
@@ -3795,7 +3888,7 @@ though.}
The search path feature is particularly useful for building libraries
of useful @command{awk} functions. The library files can be placed in a
standard directory in the default path and then specified on
-the command line with a short @value{FN}. Otherwise, the full @value{FN}
+the command line with a short file name. Otherwise, the full file name
would have to be typed for each file.
By using the @option{-i} option, or the @option{--source} and @option{-f} options, your command-line
@@ -3840,8 +3933,7 @@ found, and @command{gawk} no longer needs to use @env{AWKPATH}.
@node AWKLIBPATH Variable
@subsection The @env{AWKLIBPATH} Environment Variable
@cindex @env{AWKLIBPATH} environment variable
-@cindex directories, searching
-@cindex search paths
+@cindex directories, searching for shared libraries
@cindex search paths, for shared libraries
@cindex differences in @command{awk} and @command{gawk}, @code{AWKLIBPATH} environment variable
@@ -3889,10 +3981,6 @@ for use by the @command{gawk} developers for testing and tuning.
They are subject to change. The variables are:
@table @env
-@item AVG_CHAIN_MAX
-The average number of items @command{gawk} will maintain on a
-hash chain for managing arrays.
-
@item AWK_HASH
If this variable exists with a value of @samp{gst}, @command{gawk}
will switch to using the hash function from GNU Smalltalk for
@@ -3905,6 +3993,13 @@ files one line at a time, instead of reading in blocks. This exists
for debugging problems on filesystems on non-POSIX operating systems
where I/O is performed in records, not in blocks.
+@item GAWK_MSG_SRC
+If this variable exists, @command{gawk} includes the source file
+name and line number from which warning and/or fatal messages
+are generated. Its purpose is to help isolate the source of a
+message, since there can be multiple places which produce the
+same warning or error message.
+
@item GAWK_NO_DFA
If this variable exists, @command{gawk} does not use the DFA regexp matcher
for ``does it match'' kinds of tests. This can cause @command{gawk}
@@ -3917,6 +4012,14 @@ coordinate with each other.)
This specifies the amount by which @command{gawk} should grow its
internal evaluation stack, when needed.
+@item INT_CHAIN_MAX
+The average number of items @command{gawk} will maintain on a
+hash chain for managing arrays indexed by integers.
+
+@item STR_CHAIN_MAX
+The average number of items @command{gawk} will maintain on a
+hash chain for managing arrays indexed by strings.
+
@item TIDYMEM
If this variable exists, @command{gawk} uses the @code{mtrace()} library
calls from GNU LIBC to help track down possible memory leaks.
@@ -3995,7 +4098,7 @@ use @samp{@@include} followed by the name of the file to be included,
enclosed in double quotes.
@quotation NOTE
-Keep in mind that this is a language construct and the @value{FN} cannot
+Keep in mind that this is a language construct and the file name cannot
be a string variable, but rather just a literal string in double quotes.
@end quotation
@@ -4020,7 +4123,7 @@ $ @kbd{gawk -f test3}
@print{} This is file test3.
@end example
-The @value{FN} can, of course, be a pathname. For example:
+The file name can, of course, be a pathname. For example:
@example
@@include "../io_funcs"
@@ -4115,10 +4218,9 @@ they will @emph{not} be in the next release).
@c update this section for each release!
-@cindex @code{PROCINFO} array
The process-related special files @file{/dev/pid}, @file{/dev/ppid},
@file{/dev/pgrpid}, and @file{/dev/user} were deprecated in @command{gawk}
-3.1, but still worked. As of @value{PVERSION} 4.0, they are no longer
+3.1, but still worked. As of version 4.0, they are no longer
interpreted specially by @command{gawk}. (Use @code{PROCINFO} instead;
see @ref{Auto-set}.)
@@ -4137,10 +4239,11 @@ in case some option becomes obsolete in a future version of @command{gawk}.
@cindex Jedi knights
@cindex Knights, jedi
@quotation
-@i{Use the Source, Luke!}@*
-Obi-Wan
+@i{Use the Source, Luke!}
+@author Obi-Wan
@end quotation
+@cindex shells, sea
This @value{SECTION} intentionally left
blank.
@@ -4153,7 +4256,7 @@ blank.
@table @code
@item -W nostalgia
@itemx --nostalgia
-Print the message @code{"awk: bailing out near line 1"} and dump core.
+Print the message @samp{awk: bailing out near line 1} and dump core.
This option was inspired by the common behavior of very early versions of
Unix @command{awk} and by a t--shirt.
The message is @emph{not} subject to translation in non-English locales.
@@ -4199,7 +4302,7 @@ long-undocumented ``feature'' of Unix @code{awk}.
@node Regexp
@chapter Regular Expressions
-@cindex regexp, See regular expressions
+@cindex regexp
@c STARTOFRANGE regexp
@cindex regular expressions
@@ -4208,8 +4311,8 @@ set of strings.
Because regular expressions are such a fundamental part of @command{awk}
programming, their format and use deserve a separate @value{CHAPTER}.
-@cindex forward slash (@code{/})
-@cindex @code{/} (forward slash)
+@cindex forward slash (@code{/}) to enclose regular expressions
+@cindex @code{/} (forward slash) to enclose regular expressions
A regular expression enclosed in slashes (@samp{/})
is an @command{awk} pattern that matches every input record whose text
belongs to that set.
@@ -4246,14 +4349,14 @@ slashes. Then the regular expression is tested against the
entire text of each record. (Normally, it only needs
to match some part of the text in order to succeed.) For example, the
following prints the second field of each record that contains the string
-@samp{foo} anywhere in it:
+@samp{li} anywhere in it:
@example
-$ @kbd{awk '/foo/ @{ print $2 @}' BBS-list}
-@print{} 555-1234
+$ @kbd{awk '/li/ @{ print $2 @}' mail-list}
+@print{} 555-5553
+@print{} 555-0542
@print{} 555-6699
-@print{} 555-6480
-@print{} 555-2127
+@print{} 555-3430
@end example
@cindex regular expressions, operators
@@ -4265,9 +4368,9 @@ $ @kbd{awk '/foo/ @{ print $2 @}' BBS-list}
@cindex @code{!} (exclamation point), @code{!~} operator
@cindex exclamation point (@code{!}), @code{!~} operator
@c @cindex operators, @code{!~}
-@cindex @code{if} statement
-@cindex @code{while} statement
-@cindex @code{do}-@code{while} statement
+@cindex @code{if} statement, use of regexps in
+@cindex @code{while} statement, use of regexps in
+@cindex @code{do}-@code{while} statement, use of regexps in
@c @cindex statements, @code{if}
@c @cindex statements, @code{while}
@c @cindex statements, @code{do}
@@ -4326,6 +4429,7 @@ $ @kbd{awk '$1 !~ /J/' inventory-shipped}
@end example
@cindex regexp constants
+@cindex constant regexps
@cindex regular expressions, constants, See regexp constants
When a regexp is enclosed in slashes, such as @code{/foo/}, we call it
a @dfn{regexp constant}, much like @code{5.27} is a numeric constant and
@@ -4334,7 +4438,7 @@ a @dfn{regexp constant}, much like @code{5.27} is a numeric constant and
@node Escape Sequences
@section Escape Sequences
-@cindex escape sequences
+@cindex escape sequences, in strings
@cindex backslash (@code{\}), in escape sequences
@cindex @code{\} (backslash), in escape sequences
Some characters cannot be included literally in string constants
@@ -4374,39 +4478,39 @@ A literal backslash, @samp{\}.
@cindex @code{\} (backslash), @code{\a} escape sequence
@cindex backslash (@code{\}), @code{\a} escape sequence
@item \a
-The ``alert'' character, @kbd{@value{CTL}-g}, ASCII code 7 (BEL).
+The ``alert'' character, @kbd{Ctrl-g}, ASCII code 7 (BEL).
(This usually makes some sort of audible noise.)
@cindex @code{\} (backslash), @code{\b} escape sequence
@cindex backslash (@code{\}), @code{\b} escape sequence
@item \b
-Backspace, @kbd{@value{CTL}-h}, ASCII code 8 (BS).
+Backspace, @kbd{Ctrl-h}, ASCII code 8 (BS).
@cindex @code{\} (backslash), @code{\f} escape sequence
@cindex backslash (@code{\}), @code{\f} escape sequence
@item \f
-Formfeed, @kbd{@value{CTL}-l}, ASCII code 12 (FF).
+Formfeed, @kbd{Ctrl-l}, ASCII code 12 (FF).
@cindex @code{\} (backslash), @code{\n} escape sequence
@cindex backslash (@code{\}), @code{\n} escape sequence
@item \n
-Newline, @kbd{@value{CTL}-j}, ASCII code 10 (LF).
+Newline, @kbd{Ctrl-j}, ASCII code 10 (LF).
@cindex @code{\} (backslash), @code{\r} escape sequence
@cindex backslash (@code{\}), @code{\r} escape sequence
@item \r
-Carriage return, @kbd{@value{CTL}-m}, ASCII code 13 (CR).
+Carriage return, @kbd{Ctrl-m}, ASCII code 13 (CR).
@cindex @code{\} (backslash), @code{\t} escape sequence
@cindex backslash (@code{\}), @code{\t} escape sequence
@item \t
-Horizontal TAB, @kbd{@value{CTL}-i}, ASCII code 9 (HT).
+Horizontal TAB, @kbd{Ctrl-i}, ASCII code 9 (HT).
@c @cindex @command{awk} language, V.4 version
@cindex @code{\} (backslash), @code{\v} escape sequence
@cindex backslash (@code{\}), @code{\v} escape sequence
@item \v
-Vertical tab, @kbd{@value{CTL}-k}, ASCII code 11 (VT).
+Vertical tab, @kbd{Ctrl-k}, ASCII code 11 (VT).
@cindex @code{\} (backslash), @code{\}@var{nnn} escape sequence
@cindex backslash (@code{\}), @code{\}@var{nnn} escape sequence
@@ -4499,6 +4603,7 @@ leaves what happens as undefined. There are two choices:
@c @cindex automatic warnings
@c @cindex warnings, automatic
+@cindex Brian Kernighan's @command{awk}
@table @asis
@item Strip the backslash out
This is what Brian Kernighan's @command{awk} and @command{gawk} both do.
@@ -4512,6 +4617,7 @@ two backslashes in the string: @samp{FS = @w{"[ \t]+\\|[ \t]+"}}.)
@cindex @command{gawk}, escape sequences
@cindex Unix @command{awk}, backslashes in escape sequences
+@cindex @command{mawk} utility
@item Leave the backslash alone
Some other @command{awk} implementations do this.
In such implementations, typing @code{"a\qc"} is the same as typing
@@ -4543,6 +4649,7 @@ escape sequences literally when used in regexp constants. Thus,
@section Regular Expression Operators
@c STARTOFRANGE regexpo
@cindex regular expressions, operators
+@cindex metacharacters in regular expressions
You can combine regular expressions with special characters,
called @dfn{regular expression operators} or @dfn{metacharacters}, to
@@ -4561,8 +4668,8 @@ Here is a list of metacharacters. All characters that are not escape
sequences and that are not listed in the table stand for themselves:
@table @code
-@cindex backslash (@code{\})
-@cindex @code{\} (backslash)
+@cindex backslash (@code{\}), regexp operator
+@cindex @code{\} (backslash), regexp operator
@item \
This is used to suppress the special meaning of a character when
matching. For example, @samp{\$}
@@ -4587,8 +4694,8 @@ The condition is not true in the following example:
if ("line1\nLINE 2" ~ /^L/) @dots{}
@end example
-@cindex @code{$} (dollar sign)
-@cindex dollar sign (@code{$})
+@cindex @code{$} (dollar sign), regexp operator
+@cindex dollar sign (@code{$}), regexp operator
@item $
This is similar to @samp{^}, but it matches only at the end of a string.
For example, @samp{p$}
@@ -4600,8 +4707,8 @@ The condition in the following example is not true:
if ("line1\nLINE 2" ~ /1$/) @dots{}
@end example
-@cindex @code{.} (period)
-@cindex period (@code{.})
+@cindex @code{.} (period), regexp operator
+@cindex period (@code{.}), regexp operator
@item . @r{(period)}
This matches any single character,
@emph{including} the newline character. For example, @samp{.P}
@@ -4617,11 +4724,12 @@ character, which is a character with all bits equal to zero.
Otherwise, @sc{nul} is just another character. Other versions of @command{awk}
may not be able to match the @sc{nul} character.
-@cindex @code{[]} (square brackets)
-@cindex square brackets (@code{[]})
+@cindex @code{[]} (square brackets), regexp operator
+@cindex square brackets (@code{[]}), regexp operator
@cindex bracket expressions
@cindex character sets, See Also bracket expressions
@cindex character lists, See bracket expressions
+@cindex character classes, See bracket expressions
@item [@dots{}]
This is called a @dfn{bracket expression}.@footnote{In other literature,
you may see a bracket expression referred to as either a
@@ -4654,8 +4762,8 @@ means it matches any string that starts with @samp{P} or contains a digit.
The alternation applies to the largest possible regexps on either side.
-@cindex @code{()} (parentheses)
-@cindex parentheses @code{()}
+@cindex @code{()} (parentheses), regexp operator
+@cindex parentheses @code{()}, regexp operator
@item (@dots{})
Parentheses are used for grouping in regular expressions, as in
arithmetic. They can be used to concatenate regular expressions
@@ -4683,8 +4791,8 @@ prints every record in @file{sample} containing a string of the form
Notice the escaping of the parentheses by preceding them
with backslashes.
-@cindex @code{+} (plus sign)
-@cindex plus sign (@code{+})
+@cindex @code{+} (plus sign), regexp operator
+@cindex plus sign (@code{+}), regexp operator
@item +
This symbol is similar to @samp{*}, except that the preceding expression must be
matched at least once. This means that @samp{wh+y}
@@ -4697,14 +4805,14 @@ way of writing the last @samp{*} example:
awk '/\(c[ad]+r x\)/ @{ print @}' sample
@end example
-@cindex @code{?} (question mark) regexp operator
-@cindex question mark (@code{?}) regexp operator
+@cindex @code{?} (question mark), regexp operator
+@cindex question mark (@code{?}), regexp operator
@item ?
This symbol is similar to @samp{*}, except that the preceding expression can be
matched either once or not at all. For example, @samp{fe?d}
matches @samp{fed} and @samp{fd}, but nothing else.
-@cindex interval expressions
+@cindex interval expressions, regexp operator
@item @{@var{n}@}
@itemx @{@var{n},@}
@itemx @{@var{n},@var{m}@}
@@ -4738,7 +4846,7 @@ constants,
@command{gawk} did @emph{not} match interval expressions
in regexps.
-However, beginning with @value{PVERSION} 4.0,
+However, beginning with version 4.0,
@command{gawk} does match interval expressions by default.
This is because compatibility with POSIX has become more
important to most @command{gawk} users than compatibility with
@@ -4781,6 +4889,7 @@ expressions are not available in regular expressions.
@cindex bracket expressions
@cindex bracket expressions, range expressions
@cindex range expressions (regexps)
+@cindex character lists in regular expression
As mentioned earlier, a bracket expression matches any character amongst
those listed between the opening and closing square brackets.
@@ -4882,8 +4991,8 @@ These sequences are:
@item Collating symbols
Multicharacter collating elements enclosed between
@samp{[.} and @samp{.]}. For example, if @samp{ch} is a collating element,
-then @code{[[.ch.]]} is a regexp that matches this collating element, whereas
-@code{[ch]} is a regexp that matches either @samp{c} or @samp{h}.
+then @samp{[[.ch.]]} is a regexp that matches this collating element, whereas
+@samp{[ch]} is a regexp that matches either @samp{c} or @samp{h}.
@cindex bracket expressions, equivalence classes
@item Equivalence classes
@@ -4891,7 +5000,7 @@ Locale-specific names for a list of
characters that are equal. The name is enclosed between
@samp{[=} and @samp{=]}.
For example, the name @samp{e} might be used to represent all of
-``e,'' ``@`e,'' and ``@'e.'' In this case, @code{[[=e=]]} is a regexp
+``e,'' ``@`e,'' and ``@'e.'' In this case, @samp{[[=e=]]} is a regexp
that matches any of @samp{e}, @samp{@'e}, or @samp{@`e}.
@end table
@@ -4935,7 +5044,7 @@ or underscores (@samp{_}):
@item \s
Matches any whitespace character.
Think of it as shorthand for
-@w{@code{[[:space:]]}}.
+@w{@samp{[[:space:]]}}.
@c @cindex operators, @code{\S} (@command{gawk})
@cindex backslash (@code{\}), @code{\S} operator (@command{gawk})
@@ -4943,7 +5052,7 @@ Think of it as shorthand for
@item \S
Matches any character that is not whitespace.
Think of it as shorthand for
-@w{@code{[^[:space:]]}}.
+@w{@samp{[^[:space:]]}}.
@c @cindex operators, @code{\w} (@command{gawk})
@cindex backslash (@code{\}), @code{\w} operator (@command{gawk})
@@ -4951,7 +5060,7 @@ Think of it as shorthand for
@item \w
Matches any word-constituent character---that is, it matches any
letter, digit, or underscore. Think of it as shorthand for
-@w{@code{[[:alnum:]_]}}.
+@w{@samp{[[:alnum:]_]}}.
@c @cindex operators, @code{\W} (@command{gawk})
@cindex backslash (@code{\}), @code{\W} operator (@command{gawk})
@@ -4959,7 +5068,7 @@ letter, digit, or underscore. Think of it as shorthand for
@item \W
Matches any character that is not word-constituent.
Think of it as shorthand for
-@w{@code{[^[:alnum:]_]}}.
+@w{@samp{[^[:alnum:]_]}}.
@c @cindex operators, @code{\<} (@command{gawk})
@cindex backslash (@code{\}), @code{\<} operator (@command{gawk})
@@ -5020,10 +5129,10 @@ Matches the empty string at the
end of a buffer (string).
@end table
-@cindex @code{^} (caret)
-@cindex caret (@code{^})
-@cindex @code{?} (question mark) regexp operator
-@cindex question mark (@code{?}) regexp operator
+@cindex @code{^} (caret), regexp operator
+@cindex caret (@code{^}), regexp operator
+@cindex @code{?} (question mark), regexp operator
+@cindex question mark (@code{?}), regexp operator
Because @samp{^} and @samp{$} always work in terms of the beginning
and end of strings, these operators don't add any new capabilities
for @command{awk}. They are provided for compatibility with other
@@ -5044,7 +5153,7 @@ lesser of two evils.
@c
@c Should really do this with file inclusion.
@cindex regular expressions, @command{gawk}, command-line options
-@cindex @command{gawk}, command-line options
+@cindex @command{gawk}, command-line options, and regular expressions
The various command-line options
(@pxref{Options})
control how @command{gawk} interprets characters in regexps:
@@ -5067,10 +5176,11 @@ Only POSIX regexps are supported; the GNU operators are not special
(e.g., @samp{\w} matches a literal @samp{w}). Interval expressions
are allowed.
+@cindex Brian Kernighan's @command{awk}
@item @code{--traditional}
Traditional Unix @command{awk} regexps are matched. The GNU operators
are not special, and interval expressions are not available.
-The POSIX character classes (@code{[[:alnum:]]}, etc.) are supported,
+The POSIX character classes (@samp{[[:alnum:]]}, etc.) are supported,
as Brian Kernighan's @command{awk} does support them.
Characters described by octal and hexadecimal escape sequences are
treated literally, even if they represent regexp metacharacters.
@@ -5122,7 +5232,7 @@ This works in any POSIX-compliant @command{awk}.
@cindex tilde (@code{~}), @code{~} operator
@cindex @code{!} (exclamation point), @code{!~} operator
@cindex exclamation point (@code{!}), @code{!~} operator
-@cindex @code{IGNORECASE} variable
+@cindex @code{IGNORECASE} variable, with @code{~} and @code{!~} operators
@cindex @command{gawk}, @code{IGNORECASE} variable in
@c @cindex variables, @code{IGNORECASE}
Another method, specific to @command{gawk}, is to set the variable
@@ -5329,7 +5439,7 @@ But a newline in a regexp constant works with no problem:
$ @kbd{awk '$0 ~ /[ \t\n]/'}
@kbd{here is a sample line}
@print{} here is a sample line
-@kbd{@value{CTL}-d}
+@kbd{Ctrl-d}
@end example
@command{gawk} does not have this problem, and it isn't likely to
@@ -5343,6 +5453,7 @@ occur often in practice, but it's worth noting for future reference.
@chapter Reading Input Files
@c STARTOFRANGE infir
+@cindex reading input files
@cindex input files, reading
@cindex input files
@cindex @code{FILENAME} variable
@@ -5379,7 +5490,7 @@ used with it do not have to be named on the @command{awk} command line
* Field Separators:: The field separator and how to change it.
* Constant Size:: Reading constant width data.
* Splitting By Content:: Defining Fields By Content
-* Multiple Line:: Reading multi-line records.
+* Multiple Line:: Reading multiline records.
* Getline:: Reading files under explicit program control
using the @code{getline} function.
* Read Timeout:: Reading input with a timeout.
@@ -5404,7 +5515,7 @@ so far
from the current input file. This value is stored in a
built-in variable called @code{FNR}. It is reset to zero when a new
file is started. Another built-in variable, @code{NR}, records the total
-number of input records read so far from all @value{DF}s. It starts at zero,
+number of input records read so far from all data files. It starts at zero,
but is never automatically reset to zero.
@cindex separators, for records
@@ -5429,69 +5540,80 @@ To do this, use the special @code{BEGIN} pattern
(@pxref{BEGIN/END}).
For example:
-@cindex @code{BEGIN} pattern
@example
-awk 'BEGIN @{ RS = "/" @}
- @{ print $0 @}' BBS-list
+awk 'BEGIN @{ RS = "u" @}
+ @{ print $0 @}' mail-list
@end example
@noindent
-changes the value of @code{RS} to @code{"/"}, before reading any input.
-This is a string whose first character is a slash; as a result, records
-are separated by slashes. Then the input file is read, and the second
+changes the value of @code{RS} to @samp{u}, before reading any input.
+This is a string whose first character is the letter ``u;'' as a result, records
+are separated by the letter ``u.'' Then the input file is read, and the second
rule in the @command{awk} program (the action with no pattern) prints each
record. Because each @code{print} statement adds a newline at the end of
its output, this @command{awk} program copies the input
-with each slash changed to a newline. Here are the results of running
-the program on @file{BBS-list}:
-
-@example
-$ @kbd{awk 'BEGIN @{ RS = "/" @}}
-> @kbd{@{ print $0 @}' BBS-list}
-@print{} aardvark 555-5553 1200
-@print{} 300 B
-@print{} alpo-net 555-3412 2400
-@print{} 1200
-@print{} 300 A
-@print{} barfly 555-7685 1200
-@print{} 300 A
-@print{} bites 555-1675 2400
-@print{} 1200
-@print{} 300 A
-@print{} camelot 555-0542 300 C
-@print{} core 555-2912 1200
-@print{} 300 C
-@print{} fooey 555-1234 2400
-@print{} 1200
-@print{} 300 B
-@print{} foot 555-6699 1200
-@print{} 300 B
-@print{} macfoo 555-6480 1200
-@print{} 300 A
-@print{} sdace 555-3430 2400
-@print{} 1200
-@print{} 300 A
-@print{} sabafoo 555-2127 1200
-@print{} 300 C
-@print{}
+with each @samp{u} changed to a newline. Here are the results of running
+the program on @file{mail-list}:
+
+@example
+$ @kbd{awk 'BEGIN @{ RS = "u" @}}
+> @kbd{@{ print $0 @}' mail-list}
+@print{} Amelia 555-5553 amelia.zodiac
+@print{} sq
+@print{} e@@gmail.com F
+@print{} Anthony 555-3412 anthony.assert
+@print{} ro@@hotmail.com A
+@print{} Becky 555-7685 becky.algebrar
+@print{} m@@gmail.com A
+@print{} Bill 555-1675 bill.drowning@@hotmail.com A
+@print{} Broderick 555-0542 broderick.aliq
+@print{} otiens@@yahoo.com R
+@print{} Camilla 555-2912 camilla.inf
+@print{} sar
+@print{} m@@skynet.be R
+@print{} Fabi
+@print{} s 555-1234 fabi
+@print{} s.
+@print{} ndevicesim
+@print{} s@@
+@print{} cb.ed
+@print{} F
+@print{} J
+@print{} lie 555-6699 j
+@print{} lie.perscr
+@print{} tabor@@skeeve.com F
+@print{} Martin 555-6480 martin.codicib
+@print{} s@@hotmail.com A
+@print{} Sam
+@print{} el 555-3430 sam
+@print{} el.lanceolis@@sh
+@print{} .ed
+@print{} A
+@print{} Jean-Pa
+@print{} l 555-2127 jeanpa
+@print{} l.campanor
+@print{} m@@ny
+@print{} .ed
+@print{} R
+@print{}
@end example
@noindent
-Note that the entry for the @samp{camelot} BBS is not split.
-In the original @value{DF}
+Note that the entry for the name @samp{Bill} is not split.
+In the original data file
(@pxref{Sample Data Files}),
the line looks like this:
@example
-camelot 555-0542 300 C
+Bill 555-1675 bill.drowning@@hotmail.com A
@end example
@noindent
-It has one baud rate only, so there are no slashes in the record,
-unlike the others which have two or more baud rates.
-In fact, this record is treated as part of the record
-for the @samp{core} BBS; the newline separating them in the output
-is the original newline in the @value{DF}, not the one added by
+It contains no @samp{u} so there is no reason to split the record,
+unlike the others which have one or more occurrences of the @samp{u}.
+In fact, this record is treated as part of the previous record;
+the newline separating them in the output
+is the original newline in the data file, not the one added by
@command{awk} when it printed the record!
@cindex record separators, changing
@@ -5501,14 +5623,17 @@ using the variable-assignment feature
(@pxref{Other Arguments}):
@example
-awk '@{ print $0 @}' RS="/" BBS-list
+awk '@{ print $0 @}' RS="u" mail-list
@end example
@noindent
-This sets @code{RS} to @samp{/} before processing @file{BBS-list}.
+This sets @code{RS} to @samp{u} before processing @file{mail-list}.
-Using an unusual character such as @samp{/} for the record separator
-produces correct behavior in the vast majority of cases.
+Using an alphabetic character such as @samp{u} for the record separator
+is highly likely to produce strange results.
+Using an unusual character such as @samp{/} is more likely to
+produce correct behavior in the majority of cases, but there
+are no guarantees. The moral is: Know Your Data.
There is one unusual case, that occurs when @command{gawk} is
being fully POSIX-compliant (@pxref{Options}).
@@ -5530,6 +5655,7 @@ Reaching the end of an input file terminates the current input record,
even if the last character in the file is not the character in @code{RS}.
@value{DARKCORNER}
+@cindex empty strings
@cindex null strings
@cindex strings, empty, See null strings
The empty string @code{""} (a string without any characters)
@@ -5627,8 +5753,8 @@ In compatibility mode, only the first character of the value of
@code{RS} is used to determine the end of the record.
@sidebar @code{RS = "\0"} Is Not Portable
-@cindex portability, @value{DF}s as single record
-There are times when you might want to treat an entire @value{DF} as a
+@cindex portability, data files as single record
+There are times when you might want to treat an entire data file as a
single record. The only way to make this happen is to give @code{RS}
a value that you know doesn't occur in the input file. This is hard
to do in a general way, such that a program always works for arbitrary
@@ -5647,20 +5773,26 @@ BEGIN @{ RS = "\0" @} # whole file becomes one record?
@command{gawk} in fact accepts this, and uses the @sc{nul}
character for the record separator.
However, this usage is @emph{not} portable
-to other @command{awk} implementations.
+to most other @command{awk} implementations.
@cindex dark corner, strings, storing
-All other @command{awk} implementations@footnote{At least that we know
+Almost all other @command{awk} implementations@footnote{At least that we know
about.} store strings internally as C-style strings. C strings use the
@sc{nul} character as the string terminator. In effect, this means that
@samp{RS = "\0"} is the same as @samp{RS = ""}.
@value{DARKCORNER}
+It happens that recent versions of @command{mawk} can use the @sc{nul}
+character as a record separator. However, this is a special case:
+@command{mawk} does not allow embedded @sc{nul} characters in strings.
+
@cindex records, treating files as
-@cindex files, as single records
+@cindex treating files, as single records
The best way to treat a whole file as a single record is to
simply read the file in, one record at a time, concatenating each
record onto the end of the previous ones.
+
+@c @strong{FIXME}: Using @sc{nul} is good for @file{/proc/environ} etc.
@end sidebar
@c ENDOFRANGE inspl
@c ENDOFRANGE recspl
@@ -5732,31 +5864,29 @@ when you are not interested in specific fields.
Here are some more examples:
@example
-$ @kbd{awk '$1 ~ /foo/ @{ print $0 @}' BBS-list}
-@print{} fooey 555-1234 2400/1200/300 B
-@print{} foot 555-6699 1200/300 B
-@print{} macfoo 555-6480 1200/300 A
-@print{} sabafoo 555-2127 1200/300 C
+$ @kbd{awk '$1 ~ /li/ @{ print $0 @}' mail-list}
+@print{} Amelia 555-5553 amelia.zodiacusque@@gmail.com F
+@print{} Julie 555-6699 julie.perscrutabor@@skeeve.com F
@end example
@noindent
-This example prints each record in the file @file{BBS-list} whose first
-field contains the string @samp{foo}. The operator @samp{~} is called a
+This example prints each record in the file @file{mail-list} whose first
+field contains the string @samp{li}. The operator @samp{~} is called a
@dfn{matching operator}
(@pxref{Regexp Usage});
it tests whether a string (here, the field @code{$1}) matches a given regular
expression.
By contrast, the following example
-looks for @samp{foo} in @emph{the entire record} and prints the first
+looks for @samp{li} in @emph{the entire record} and prints the first
field and the last field for each matching input record:
@example
-$ @kbd{awk '/foo/ @{ print $1, $NF @}' BBS-list}
-@print{} fooey B
-@print{} foot B
-@print{} macfoo A
-@print{} sabafoo C
+$ @kbd{awk '/li/ @{ print $1, $NF @}' mail-list}
+@print{} Amelia F
+@print{} Broderick R
+@print{} Julie F
+@print{} Samuel A
@end example
@c ENDOFRANGE fiex
@@ -5784,7 +5914,7 @@ the record has fewer than 20 fields, so this prints a blank line.
Here is another example of using expressions as field numbers:
@example
-awk '@{ print $(2*2) @}' BBS-list
+awk '@{ print $(2*2) @}' mail-list
@end example
@command{awk} evaluates the expression @samp{(2*2)} and uses
@@ -5793,8 +5923,8 @@ represents multiplication, so the expression @samp{2*2} evaluates to four.
The parentheses are used so that the multiplication is done before the
@samp{$} operation; they are necessary whenever there is a binary
operator in the field-number expression. This example, then, prints the
-hours of operation (the fourth field) for every line of the file
-@file{BBS-list}. (All of the @command{awk} operators are listed, in
+type of relationship (the fourth field) for every line of the file
+@file{mail-list}. (All of the @command{awk} operators are listed, in
order of decreasing precedence, in
@ref{Precedence}.)
@@ -6017,6 +6147,7 @@ with a statement such as @samp{$1 = $1}, as described earlier.
* 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.
+* Full Line Fields:: Making the full line be a single field.
* Field Splitting Summary:: Some final points and a summary table.
@end menu
@@ -6204,7 +6335,7 @@ was ignored when finding @code{$1}, it is not part of the new @code{$0}.
Finally, the last @code{print} statement prints the new @code{$0}.
@cindex @code{FS}, containing @code{^}
-@cindex @code{^}, in @code{FS}
+@cindex @code{^} (caret), in @code{FS}
@cindex dark corner, @code{^}, in @code{FS}
There is an additional subtlety to be aware of when using regular expressions
for field splitting.
@@ -6215,6 +6346,7 @@ different @command{awk} versions answer this question differently, and you
should not rely on any specific behavior in your programs.
@value{DARKCORNER}
+@cindex Brian Kernighan's @command{awk}
As a point of information, Brian Kernighan's @command{awk} allows @samp{^}
to match only at the beginning of the record. @command{gawk}
also works this way. For example:
@@ -6258,7 +6390,7 @@ $ @kbd{echo a b | gawk 'BEGIN @{ FS = "" @}}
@end example
@cindex dark corner, @code{FS} as null string
-@cindex FS variable, as null string
+@cindex @code{FS} variable, as null string
Traditionally, the behavior of @code{FS} equal to @code{""} was not defined.
In this case, most versions of Unix @command{awk} simply treat the entire record
as only having one field.
@@ -6270,10 +6402,8 @@ behaves this way.
@node Command Line Field Separator
@subsection Setting @code{FS} from the Command Line
-@cindex @code{-F} option
-@cindex options, command-line
-@cindex command line, options
-@cindex field separators, on command line
+@cindex @option{-F} option, command line
+@cindex field separator, on command line
@cindex command line, @code{FS} on@comma{} setting
@cindex @code{FS} variable, setting from command line
@@ -6323,68 +6453,76 @@ figures that you really want your fields to be separated with TABs and
not @samp{t}s. Use @samp{-v FS="t"} or @samp{-F"[t]"} on the command line
if you really do want to separate your fields with @samp{t}s.
-As an example, let's use an @command{awk} program file called @file{baud.awk}
-that contains the pattern @code{/300/} and the action @samp{print $1}:
+As an example, let's use an @command{awk} program file called @file{edu.awk}
+that contains the pattern @code{/edu/} and the action @samp{print $1}:
@example
-/300/ @{ print $1 @}
+/edu/ @{ print $1 @}
@end example
Let's also set @code{FS} to be the @samp{-} character and run the
-program on the file @file{BBS-list}. The following command prints a
-list of the names of the bulletin boards that operate at 300 baud and
+program on the file @file{mail-list}. The following command prints a
+list of the names of the people that work at or attend a university, and
the first three digits of their phone numbers:
@c tweaked to make the tex output look better in @smallbook
@example
-$ @kbd{awk -F- -f baud.awk BBS-list}
-@print{} aardvark 555
-@print{} alpo
-@print{} barfly 555
-@print{} bites 555
-@print{} camelot 555
-@print{} core 555
-@print{} fooey 555
-@print{} foot 555
-@print{} macfoo 555
-@print{} sdace 555
-@print{} sabafoo 555
+$ @kbd{awk -F- -f edu.awk mail-list}
+@print{} Fabius 555
+@print{} Samuel 555
+@print{} Jean
@end example
@noindent
-Note the second line of output. The second line
+Note the third line of output. The third line
in the original file looked like this:
@example
-alpo-net 555-3412 2400/1200/300 A
+Jean-Paul 555-2127 jeanpaul.campanorum@@nyu.edu R
@end example
-The @samp{-} as part of the system's name was used as the field
+The @samp{-} as part of the person's name was used as the field
separator, instead of the @samp{-} in the phone number that was
originally intended. This demonstrates why you have to be careful in
choosing your field and record separators.
@cindex Unix @command{awk}, password files@comma{} field separators and
-Perhaps the most common use of a single character as the field
-separator occurs when processing the Unix system password file.
-On many Unix systems, each user has a separate entry in the system password
-file, one line per user. The information in these lines is separated
-by colons. The first field is the user's login name and the second is
-the user's (encrypted or shadow) password. A password file entry might look
-like this:
+Perhaps the most common use of a single character as the field separator
+occurs when processing the Unix system password file. On many Unix
+systems, each user has a separate entry in the system password file, one
+line per user. The information in these lines is separated by colons.
+The first field is the user's login name and the second is the user's
+encrypted or shadow password. (A shadow password is indicated by the
+presence of a single @samp{x} in the second field.) A password file
+entry might look like this:
@cindex Robbins, Arnold
@example
-arnold:xyzzy:2076:10:Arnold Robbins:/home/arnold:/bin/bash
+arnold:x:2076:10:Arnold Robbins:/home/arnold:/bin/bash
@end example
The following program searches the system password file and prints
-the entries for users who have no password:
+the entries for users whose full name is not indicated:
+
+@example
+awk -F: '$5 == ""' /etc/passwd
+@end example
+
+@node Full Line Fields
+@subsection Making The Full Line Be A Single Field
+
+Occasionally, it's useful to treat the whole input line as a
+single field. This can be done easily and portably simply by
+setting @code{FS} to @code{"\n"} (a newline).@footnote{Thanks to
+Andrew Schorr for this tip.}
@example
-awk -F: '$2 == ""' /etc/passwd
+awk -F'\n' '@var{program}' @var{files @dots{}}
@end example
+@noindent
+When you do this, @code{$1} is the same as @code{$0}.
+
@node Field Splitting Summary
@subsection Field-Splitting Summary
@@ -6425,7 +6563,7 @@ POSIX standard.)
@sidebar Changing @code{FS} Does Not Affect the Fields
@cindex POSIX @command{awk}, field separators and
-@cindex field separators, POSIX and
+@cindex field separator, POSIX and
According to the POSIX standard, @command{awk} is supposed to behave
as if each record is split into fields at the time it is read.
In particular, this means that if you change the value of @code{FS}
@@ -6495,19 +6633,11 @@ will take effect.
@node Constant Size
@section Reading Fixed-Width Data
-@ifnotinfo
@quotation NOTE
This @value{SECTION} discusses an advanced
feature of @command{gawk}. If you are a novice @command{awk} user,
you might want to skip it on the first reading.
@end quotation
-@end ifnotinfo
-
-@ifinfo
-(This @value{SECTION} discusses an advanced feature of @command{awk}.
-If you are a novice @command{awk} user, you might want to skip it on
-the first reading.)
-@end ifinfo
@cindex data, fixed-width
@cindex fixed-width data
@@ -6637,19 +6767,11 @@ for an example of such a function).
@node Splitting By Content
@section Defining Fields By Content
-@ifnotinfo
@quotation NOTE
This @value{SECTION} discusses an advanced
feature of @command{gawk}. If you are a novice @command{awk} user,
you might want to skip it on the first reading.
@end quotation
-@end ifnotinfo
-
-@ifinfo
-(This @value{SECTION} discusses an advanced feature of @command{awk}.
-If you are a novice @command{awk} user, you might want to skip it on
-the first reading.)
-@end ifinfo
@cindex advanced features, specifying field content
Normally, when using @code{FS}, @command{gawk} defines the fields as the
@@ -6764,6 +6886,7 @@ available for splitting regular strings (@pxref{String Functions}).
@node Multiple Line
@section Multiple-Line Records
+@cindex multiple-line records
@c STARTOFRANGE recm
@cindex records, multiline
@c STARTOFRANGE imr
@@ -6810,12 +6933,13 @@ appear in a row, they are considered one record separator.
@cindex dark corner, multiline records
There is an important difference between @samp{RS = ""} and
@samp{RS = "\n\n+"}. In the first case, leading newlines in the input
-@value{DF} are ignored, and if a file ends without extra blank lines
+data file are ignored, and if a file ends without extra blank lines
after the last record, the final newline is removed from the record.
In the second case, this special processing is not done.
@value{DARKCORNER}
-@cindex field separators, in multiline records
+@cindex field separator, in multiline records
+@cindex @code{FS}, in multiline records
Now that the input is separated into records, the second step is to
separate the fields in the record. One way to do this is to divide each
of the lines into fields in the normal manner. This happens by default
@@ -6845,7 +6969,7 @@ Another way to separate fields is to
put each field on a separate line: to do this, just set the
variable @code{FS} to the string @code{"\n"}. (This single
character separator matches a single newline.)
-A practical example of a @value{DF} organized this way might be a mailing
+A practical example of a data file organized this way might be a mailing
list, where each entry is separated by blank lines. Consider a mailing
list in a file named @file{addresses}, which looks like this:
@@ -6910,7 +7034,7 @@ value of
@table @code
@item RS == "\n"
Records are separated by the newline character (@samp{\n}). In effect,
-every line in the @value{DF} is a separate record, including blank lines.
+every line in the data file is a separate record, including blank lines.
This is the default.
@item RS == @var{any single character}
@@ -6946,6 +7070,7 @@ then @command{gawk} sets @code{RT} to the null string.
@c STARTOFRANGE getl
@cindex @code{getline} command, explicit input with
+@c STARTOFRANGE inex
@cindex input, explicit
So far we have been getting our input data from @command{awk}'s main
input stream---either the standard input (usually your terminal, sometimes
@@ -6962,10 +7087,10 @@ and study the @code{getline} command @emph{after} you have reviewed the
rest of this @value{DOCUMENT} and have a good knowledge of how @command{awk} works.
@cindex @command{gawk}, @code{ERRNO} variable in
-@cindex @code{ERRNO} variable
+@cindex @code{ERRNO} variable, with @command{getline} command
@cindex differences in @command{awk} and @command{gawk}, @code{getline} command
@cindex @code{getline} command, return values
-@cindex @code{--sandbox} option, input redirection with @command{getline}
+@cindex @option{--sandbox} option, input redirection with @code{getline}
The @code{getline} command returns one if it finds a record and zero if
it encounters the end of the file. If there is some error in getting
@@ -7058,6 +7183,7 @@ rule in the program. @xref{Next Statement}.
@node Getline/Variable
@subsection Using @code{getline} into a Variable
+@cindex @code{getline} into a variable
@cindex variables, @code{getline} command into@comma{} using
You can use @samp{getline @var{var}} to read the next record from
@@ -7109,6 +7235,7 @@ the value of @code{NF} do not change.
@node Getline/File
@subsection Using @code{getline} from a File
+@cindex @code{getline} from a file
@cindex input redirection
@cindex redirection of input
@cindex @code{<} (left angle bracket), @code{<} operator (I/O)
@@ -7116,7 +7243,7 @@ the value of @code{NF} do not change.
@cindex operators, input/output
Use @samp{getline < @var{file}} to read the next record from @var{file}.
Here @var{file} is a string-valued expression that
-specifies the @value{FN}. @samp{< @var{file}} is called a @dfn{redirection}
+specifies the file name. @samp{< @var{file}} is called a @dfn{redirection}
because it directs input to come from a different place.
For example, the following
program reads its input record from the file @file{secondary.input} when it
@@ -7157,8 +7284,6 @@ from the file
@var{file}, and put it in the variable @var{var}. As above, @var{file}
is a string-valued expression that specifies the file from which to read.
-@cindex @command{gawk}, @code{RT} variable in
-@cindex @code{RT} variable
In this version of @code{getline}, none of the built-in variables are
changed and the record is not split into fields. The only variable
changed is @var{var}.@footnote{This is not quite true. @code{RT} could
@@ -7183,7 +7308,6 @@ Note here how the name of the extra input file is not built into
the program; it is taken directly from the data, specifically from the second field on
the @samp{@@include} line.
-@cindex @code{close()} function
The @code{close()} function is called to ensure that if two identical
@samp{@@include} lines appear in the input, the entire specified file is
included twice.
@@ -7200,16 +7324,17 @@ that does handle nested @samp{@@include} statements.
@subsection Using @code{getline} from a Pipe
@c From private email, dated October 2, 1988. Used by permission, March 2013.
+@cindex Kernighan, Brian
@quotation
@i{Omniscience has much to recommend it.
-Failing that, attention to details would be useful.}@*
-Brian Kernighan
+Failing that, attention to details would be useful.}
+@author Brian Kernighan
@end quotation
@cindex @code{|} (vertical bar), @code{|} operator (I/O)
@cindex vertical bar (@code{|}), @code{|} operator (I/O)
@cindex input pipeline
-@cindex pipes, input
+@cindex pipe, input
@cindex operators, input/output
The output of a command can also be piped into @code{getline}, using
@samp{@var{command} | getline}. In
@@ -7233,7 +7358,6 @@ produced by running the rest of the line as a shell command:
@end example
@noindent
-@cindex @code{close()} function
The @code{close()} function is called to ensure that if two identical
@samp{@@execute} lines appear in the input, the command is run for
each one.
@@ -7287,6 +7411,8 @@ because the concatenation operator is not parenthesized. You should
write it as @samp{(@w{"echo "} "date") | getline} if you want your program
to be portable to all @command{awk} implementations.
+@cindex Brian Kernighan's @command{awk}
+@cindex @command{mawk} utility
@quotation NOTE
Unfortunately, @command{gawk} has not been consistent in its treatment
of a construct like @samp{@w{"echo "} "date" | getline}.
@@ -7423,10 +7549,10 @@ system permits.
@item
An interesting side effect occurs if you use @code{getline} without a
redirection inside a @code{BEGIN} rule. Because an unredirected @code{getline}
-reads from the command-line @value{DF}s, the first @code{getline} command
+reads from the command-line data files, the first @code{getline} command
causes @command{awk} to set the value of @code{FILENAME}. Normally,
@code{FILENAME} does not have a value inside @code{BEGIN} rules, because you
-have not yet started to process the command-line @value{DF}s.
+have not yet started to process the command-line data files.
@value{DARKCORNER}
(@xref{BEGIN/END},
also @pxref{Auto-set}.)
@@ -7611,6 +7737,7 @@ indefinitely until some other process opens it for writing.
@node Command line directories
@section Directories On The Command Line
+@cindex differences in @command{awk} and @command{gawk}, command line directories
@cindex directories, command line
@cindex command line, directories on
@@ -7648,7 +7775,7 @@ For printing with specifications, you need the @code{printf} statement
@cindex @code{printf} statement
Besides basic and formatted printing, this @value{CHAPTER}
also covers I/O redirections to files and pipes, introduces
-the special @value{FN}s that @command{gawk} processes internally,
+the special file names that @command{gawk} processes internally,
and discusses the @code{close()} built-in function.
@menu
@@ -7854,13 +7981,29 @@ program by using a new value of @code{OFS}.
@example
$ @kbd{awk 'BEGIN @{ OFS = ";"; ORS = "\n\n" @}}
-> @kbd{@{ print $1, $2 @}' BBS-list}
-@print{} aardvark;555-5553
-@print{}
-@print{} alpo-net;555-3412
-@print{}
-@print{} barfly;555-7685
-@dots{}
+> @kbd{@{ print $1, $2 @}' mail-list}
+@print{} Amelia;555-5553
+@print{}
+@print{} Anthony;555-3412
+@print{}
+@print{} Becky;555-7685
+@print{}
+@print{} Bill;555-1675
+@print{}
+@print{} Broderick;555-0542
+@print{}
+@print{} Camilla;555-2912
+@print{}
+@print{} Fabius;555-1234
+@print{}
+@print{} Julie;555-6699
+@print{}
+@print{} Martin;555-6480
+@print{}
+@print{} Samuel;555-3430
+@print{}
+@print{} Jean-Paul;555-2127
+@print{}
@end example
If the value of @code{ORS} does not contain a newline, the program's output
@@ -7882,7 +8025,7 @@ numbers can be formatted. The different format specifications are discussed
more fully in
@ref{Control Letters}.
-@cindex @code{sprintf()} function
+@cindexawkfunc{sprintf}
@cindex @code{OFMT} variable
@cindex output, format specifier@comma{} @code{OFMT}
The built-in variable @code{OFMT} contains the default format specification
@@ -7948,7 +8091,7 @@ parentheses are necessary if any of the item expressions use the @samp{>}
relational operator; otherwise, it can be confused with an output redirection
(@pxref{Redirection}).
-@cindex format strings
+@cindex format specifiers
The difference between @code{printf} and @code{print} is the @var{format}
argument. This is an expression whose value is taken as a string; it
specifies how to output each of the other arguments. It is called the
@@ -8334,30 +8477,30 @@ The following simple example shows
how to use @code{printf} to make an aligned table:
@example
-awk '@{ printf "%-10s %s\n", $1, $2 @}' BBS-list
+awk '@{ printf "%-10s %s\n", $1, $2 @}' mail-list
@end example
@noindent
This command
-prints the names of the bulletin boards (@code{$1}) in the file
-@file{BBS-list} as a string of 10 characters that are left-justified. It also
+prints the names of the people (@code{$1}) in the file
+@file{mail-list} as a string of 10 characters that are left-justified. It also
prints the phone numbers (@code{$2}) next on the line. This
produces an aligned two-column table of names and phone numbers,
as shown here:
@example
-$ @kbd{awk '@{ printf "%-10s %s\n", $1, $2 @}' BBS-list}
-@print{} aardvark 555-5553
-@print{} alpo-net 555-3412
-@print{} barfly 555-7685
-@print{} bites 555-1675
-@print{} camelot 555-0542
-@print{} core 555-2912
-@print{} fooey 555-1234
-@print{} foot 555-6699
-@print{} macfoo 555-6480
-@print{} sdace 555-3430
-@print{} sabafoo 555-2127
+$ @kbd{awk '@{ printf "%-10s %s\n", $1, $2 @}' mail-list}
+@print{} Amelia 555-5553
+@print{} Anthony 555-3412
+@print{} Becky 555-7685
+@print{} Bill 555-1675
+@print{} Broderick 555-0542
+@print{} Camilla 555-2912
+@print{} Fabius 555-1234
+@print{} Julie 555-6699
+@print{} Martin 555-6480
+@print{} Samuel 555-3430
+@print{} Jean-Paul 555-2127
@end example
In this case, the phone numbers had to be printed as strings because
@@ -8378,7 +8521,7 @@ the @command{awk} program:
@example
awk 'BEGIN @{ print "Name Number"
print "---- ------" @}
- @{ printf "%-10s %s\n", $1, $2 @}' BBS-list
+ @{ printf "%-10s %s\n", $1, $2 @}' mail-list
@end example
The above example mixes @code{print} and @code{printf} statements in
@@ -8388,7 +8531,7 @@ same results:
@example
awk 'BEGIN @{ printf "%-10s %s\n", "Name", "Number"
printf "%-10s %s\n", "----", "------" @}
- @{ printf "%-10s %s\n", $1, $2 @}' BBS-list
+ @{ printf "%-10s %s\n", $1, $2 @}' mail-list
@end example
@noindent
@@ -8403,7 +8546,7 @@ emphasized by storing it in a variable, like this:
awk 'BEGIN @{ format = "%-10s %s\n"
printf format, "Name", "Number"
printf format, "----", "------" @}
- @{ printf format, $1, $2 @}' BBS-list
+ @{ printf format, $1, $2 @}' mail-list
@end example
@c !!! exercise
@@ -8417,9 +8560,11 @@ on the @code{print} statement
@node Redirection
@section Redirecting Output of @code{print} and @code{printf}
+@c STARTOFRANGE outre
@cindex output redirection
+@c STARTOFRANGE reout
@cindex redirection of output
-@cindex @code{--sandbox} option, output redirection with @code{print}, @code{printf}
+@cindex @option{--sandbox} option, output redirection with @code{print}, @code{printf}
So far, the output from @code{print} and @code{printf} has gone
to the standard
output, usually the screen. Both @code{print} and @code{printf} can
@@ -8436,8 +8581,8 @@ Redirections in @command{awk} are written just like redirections in shell
commands, except that they are written inside the @command{awk} program.
@c the commas here are part of the see also
-@cindex @code{print} statement, See Also redirection, of output
-@cindex @code{printf} statement, See Also redirection, of output
+@cindex @code{print} statement, See Also redirection@comma{} of output
+@cindex @code{printf} statement, See Also redirection@comma{} of output
There are four forms of output redirection: output to a file, output
appended to a file, output through a pipe to another command, and output
to a coprocess. They are all shown for the @code{print} statement,
@@ -8449,29 +8594,29 @@ but they work identically for @code{printf}:
@cindex operators, input/output
@item print @var{items} > @var{output-file}
This redirection prints the items into the output file named
-@var{output-file}. The @value{FN} @var{output-file} can be any
+@var{output-file}. The file name @var{output-file} can be any
expression. Its value is changed to a string and then used as a
-@value{FN} (@pxref{Expressions}).
+file name (@pxref{Expressions}).
When this type of redirection is used, the @var{output-file} is erased
before the first output is written to it. Subsequent writes to the same
@var{output-file} do not erase @var{output-file}, but append to it.
(This is different from how you use redirections in shell scripts.)
If @var{output-file} does not exist, it is created. For example, here
-is how an @command{awk} program can write a list of BBS names to one
+is how an @command{awk} program can write a list of peoples' names to one
file named @file{name-list}, and a list of phone numbers to another file
named @file{phone-list}:
@example
$ @kbd{awk '@{ print $2 > "phone-list"}
-> @kbd{print $1 > "name-list" @}' BBS-list}
+> @kbd{print $1 > "name-list" @}' mail-list}
$ @kbd{cat phone-list}
@print{} 555-5553
@print{} 555-3412
@dots{}
$ @kbd{cat name-list}
-@print{} aardvark
-@print{} alpo-net
+@print{} Amelia
+@print{} Anthony
@dots{}
@end example
@@ -8489,7 +8634,7 @@ appended to the file.
If @var{output-file} does not exist, then it is created.
@cindex @code{|} (vertical bar), @code{|} operator (I/O)
-@cindex pipes, output
+@cindex pipe, output
@cindex output, pipes
@item print @var{items} | @var{command}
It is possible to send output to another program through a pipe
@@ -8500,7 +8645,7 @@ to another process created to execute @var{command}.
The redirection argument @var{command} is actually an @command{awk}
expression. Its value is converted to a string whose contents give
the shell command to be run. For example, the following produces two
-files, one unsorted list of BBS names, and one list sorted in reverse
+files, one unsorted list of peoples' names, and one list sorted in reverse
alphabetical order:
@ignore
@@ -8513,7 +8658,7 @@ alone for now and let's hope no-one notices.
@example
awk '@{ print $1 > "names.unsorted"
command = "sort -r > names.sorted"
- print $1 | command @}' BBS-list
+ print $1 | command @}' mail-list
@end example
The unsorted list is written with an ordinary redirection, while
@@ -8617,7 +8762,7 @@ open as many pipelines as the underlying operating system permits.
A particularly powerful way to use redirection is to build command lines
and pipe them into the shell, @command{sh}. For example, suppose you
-have a list of files brought over from a system where all the @value{FN}s
+have a list of files brought over from a system where all the file names
are stored in uppercase, and you wish to rename them to have names in
all lowercase. The following program is both simple and efficient:
@@ -8639,12 +8784,12 @@ It then sends the list to the shell for execution.
@c ENDOFRANGE reout
@node Special Files
-@section Special @value{FFN}s in @command{gawk}
+@section Special File Names in @command{gawk}
@c STARTOFRANGE gfn
-@cindex @command{gawk}, @value{FN}s in
+@cindex @command{gawk}, file names in
-@command{gawk} provides a number of special @value{FN}s that it interprets
-internally. These @value{FN}s provide access to standard file descriptors
+@command{gawk} provides a number of special file names that it interprets
+internally. These file names provide access to standard file descriptors
and TCP/IP networking.
@menu
@@ -8708,12 +8853,12 @@ that happens, writing to the screen is not correct. In fact, if
terminal at all.
Then opening @file{/dev/tty} fails.
-@command{gawk} provides special @value{FN}s for accessing the three standard
+@command{gawk} provides special file names for accessing the three standard
streams. @value{COMMONEXT}. It also provides syntax for accessing
-any other inherited open files. If the @value{FN} matches
+any other inherited open files. If the file name matches
one of these special names when @command{gawk} redirects input or output,
-then it directly uses the stream that the @value{FN} stands for.
-These special @value{FN}s work for all operating systems that @command{gawk}
+then it directly uses the stream that the file name stands for.
+These special file names work for all operating systems that @command{gawk}
has been ported to, not just those that are POSIX-compliant:
@cindex common extensions, @code{/dev/stdin} special file
@@ -8722,10 +8867,10 @@ has been ported to, not just those that are POSIX-compliant:
@cindex extensions, common@comma{} @code{/dev/stdin} special file
@cindex extensions, common@comma{} @code{/dev/stdout} special file
@cindex extensions, common@comma{} @code{/dev/stderr} special file
-@cindex @value{FN}s, standard streams in @command{gawk}
-@cindex @code{/dev/@dots{}} special files (@command{gawk})
+@cindex file names, standard streams in @command{gawk}
+@cindex @code{/dev/@dots{}} special files
@cindex files, @code{/dev/@dots{}} special files
-@cindex @code{/dev/fd/@var{N}} special files
+@cindex @code{/dev/fd/@var{N}} special files (@command{gawk})
@table @file
@item /dev/stdin
The standard input (file descriptor 0).
@@ -8743,7 +8888,7 @@ the shell). Unless special pains are taken in the shell from which
@command{gawk} is invoked, only descriptors 0, 1, and 2 are available.
@end table
-The @value{FN}s @file{/dev/stdin}, @file{/dev/stdout}, and @file{/dev/stderr}
+The file names @file{/dev/stdin}, @file{/dev/stdout}, and @file{/dev/stderr}
are aliases for @file{/dev/fd/0}, @file{/dev/fd/1}, and @file{/dev/fd/2},
respectively. However, they are more self-explanatory.
The proper way to write an error message in a @command{gawk} program
@@ -8753,14 +8898,14 @@ is to use @file{/dev/stderr}, like this:
print "Serious error detected!" > "/dev/stderr"
@end example
-@cindex troubleshooting, quotes with @value{FN}s
-Note the use of quotes around the @value{FN}.
+@cindex troubleshooting, quotes with file names
+Note the use of quotes around the file name.
Like any other redirection, the value must be a string.
It is a common error to omit the quotes, which leads
to confusing results.
@c Exercise: What does it do? :-)
-Finally, using the @code{close()} function on a @value{FN} of the
+Finally, using the @code{close()} function on a file name of the
form @code{"/dev/fd/@var{N}"}, for file descriptor numbers
above two, does actually close the given file descriptor.
@@ -8776,7 +8921,7 @@ versions of @command{awk}.
@command{gawk} programs
can open a two-way
TCP/IP connection, acting as either a client or a server.
-This is done using a special @value{FN} of the form:
+This is done using a special file name of the form:
@example
@file{/@var{net-type}/@var{protocol}/@var{local-port}/@var{remote-host}/@var{remote-port}}
@@ -8786,7 +8931,7 @@ The @var{net-type} is one of @samp{inet}, @samp{inet4} or @samp{inet6}.
The @var{protocol} is one of @samp{tcp} or @samp{udp},
and the other fields represent the other essential pieces of information
for making a networking connection.
-These @value{FN}s are used with the @samp{|&} operator for communicating
+These file names are used with the @samp{|&} operator for communicating
with a coprocess
(@pxref{Two-way I/O}).
This is an advanced feature, mentioned here only for completeness.
@@ -8794,21 +8939,21 @@ Full discussion is delayed until
@ref{TCP/IP Networking}.
@node Special Caveats
-@subsection Special @value{FFN} Caveats
+@subsection Special File Name Caveats
Here is a list of things to bear in mind when using the
-special @value{FN}s that @command{gawk} provides:
+special file names that @command{gawk} provides:
@itemize @bullet
-@cindex compatibility mode (@command{gawk}), @value{FN}s
-@cindex @value{FN}s, in compatibility mode
+@cindex compatibility mode (@command{gawk}), file names
+@cindex file names, in compatibility mode
@item
-Recognition of these special @value{FN}s is disabled if @command{gawk} is in
+Recognition of these special file names is disabled if @command{gawk} is in
compatibility mode (@pxref{Options}).
@item
@command{gawk} @emph{always}
-interprets these special @value{FN}s.
+interprets these special file names.
For example, using @samp{/dev/fd/4}
for output actually writes on file descriptor 4, and not on a new
file descriptor that is @code{dup()}'ed from file descriptor 4. Most of
@@ -8826,12 +8971,12 @@ Doing so results in unpredictable behavior.
@c STARTOFRANGE ofc
@cindex output, files@comma{} closing
@c STARTOFRANGE pc
-@cindex pipes, closing
+@cindex pipe, closing
@c STARTOFRANGE cc
@cindex coprocesses, closing
@cindex @code{getline} command, coprocesses@comma{} using from
-If the same @value{FN} or the same shell command is used with @code{getline}
+If the same file name or the same shell command is used with @code{getline}
more than once during the execution of an @command{awk} program
(@pxref{Getline}),
the file is opened (or the command is executed) the first time only.
@@ -8840,11 +8985,11 @@ The next time the same file or command is used with @code{getline},
another record is read from it, and so on.
Similarly, when a file or pipe is opened for output, @command{awk} remembers
-the @value{FN} or command associated with it, and subsequent
+the file name or command associated with it, and subsequent
writes to the same file or command are appended to the previous writes.
The file or pipe stays open until @command{awk} exits.
-@cindex @code{close()} function
+@cindexawkfunc{close}
This implies that special steps are necessary in order to read the same
file again from the beginning, or to rerun a shell command (rather than
reading more output from the same command). The @code{close()} function
@@ -8882,7 +9027,7 @@ file or command, or the next @code{print} or @code{printf} to that
file or command, reopens the file or reruns the command.
Because the expression that you use to close a file or pipeline must
exactly match the expression used to open the file or run the command,
-it is good practice to use a variable to store the @value{FN} or command.
+it is good practice to use a variable to store the file name or command.
The previous example becomes the following:
@example
@@ -8929,9 +9074,10 @@ a separate message.
@cindex differences in @command{awk} and @command{gawk}, @code{close()} function
@cindex portability, @code{close()} function and
+@cindex @code{close()} function, portability
If you use more files than the system allows you to have open,
@command{gawk} attempts to multiplex the available open files among
-your @value{DF}s. @command{gawk}'s ability to do this depends upon the
+your data files. @command{gawk}'s ability to do this depends upon the
facilities of your operating system, so it may not always work. It is
therefore both good practice and good portability advice to always
use @code{close()} on your files when you are done with them.
@@ -9008,7 +9154,7 @@ retval = close(command) # syntax error in many Unix awks
@end example
@cindex @command{gawk}, @code{ERRNO} variable in
-@cindex @code{ERRNO} variable
+@cindex @code{ERRNO} variable, with @command{close()} function
@command{gawk} treats @code{close()} as a function.
The return value is @minus{}1 if the argument names something
that was never opened with a redirection, or if there is
@@ -9086,6 +9232,8 @@ which provide the values used in expressions.
@node Constants
@subsection Constant Expressions
+
+@c STARTOFRANGE cnst
@cindex constants, types of
The simplest type of expression is the @dfn{constant}, which always has
@@ -9105,7 +9253,8 @@ have different forms, but are stored identically internally.
@node Scalar Constants
@subsubsection Numeric and String Constants
-@cindex numeric, constants
+@cindex constants, numeric
+@cindex numeric constants
A @dfn{numeric constant} stands for a number. This number can be an
integer, a decimal fraction, or a number in scientific (exponential)
notation.@footnote{The internal representation of all numbers,
@@ -9131,7 +9280,7 @@ double-quotation marks. For example:
@noindent
@cindex differences in @command{awk} and @command{gawk}, strings
-@cindex strings, length of
+@cindex strings, length limitations
represents the string whose contents are @samp{parrot}. Strings in
@command{gawk} can be of any length, and they can contain any of the possible
eight-bit ASCII characters including ASCII @sc{nul} (character code zero).
@@ -9318,9 +9467,9 @@ upon the contents of the current input record.
@cindex differences in @command{awk} and @command{gawk}, regexp constants
@cindex dark corner, regexp constants, as arguments to user-defined functions
-@cindex @code{gensub()} function (@command{gawk})
-@cindex @code{sub()} function
-@cindex @code{gsub()} function
+@cindexgawkfunc{gensub}
+@cindexawkfunc{sub}
+@cindexawkfunc{gsub}
Constant regular expressions are also used as the first argument for
the @code{gensub()}, @code{sub()}, and @code{gsub()} functions, as the
second argument of the @code{match()} function,
@@ -9431,7 +9580,7 @@ Such an assignment has the following form:
@var{variable}=@var{text}
@end example
-@cindex @code{-v} option
+@cindex @option{-v} option
@noindent
With it, a variable is set either at the beginning of the
@command{awk} run or in between input files.
@@ -9445,7 +9594,7 @@ as in the following:
@noindent
the variable is set at the very beginning, even before the
@code{BEGIN} rules execute. The @option{-v} option and its assignment
-must precede all the @value{FN} arguments, as well as the program text.
+must precede all the file name arguments, as well as the program text.
(@xref{Options}, for more information about
the @option{-v} option.)
Otherwise, the variable assignment is performed at a time determined by
@@ -9453,7 +9602,7 @@ its position among the input file arguments---after the processing of the
preceding input file argument. For example:
@example
-awk '@{ print $n @}' n=4 inventory-shipped n=2 BBS-list
+awk '@{ print $n @}' n=4 inventory-shipped n=2 mail-list
@end example
@noindent
@@ -9462,10 +9611,10 @@ the first file is read, the command line sets the variable @code{n}
equal to four. This causes the fourth field to be printed in lines from
@file{inventory-shipped}. After the first file has finished,
but before the second file is started, @code{n} is set to two, so that the
-second field is printed in lines from @file{BBS-list}:
+second field is printed in lines from @file{mail-list}:
@example
-$ @kbd{awk '@{ print $n @}' n=4 inventory-shipped n=2 BBS-list}
+$ @kbd{awk '@{ print $n @}' n=4 inventory-shipped n=2 mail-list}
@print{} 15
@print{} 24
@dots{}
@@ -9527,7 +9676,7 @@ with @code{CONVFMT} as the format
specifier
(@pxref{String Functions}).
-@code{CONVFMT}'s default value is @code{"%.6g"}, which prints a value with
+@code{CONVFMT}'s default value is @code{"%.6g"}, which creates a value with
at most six significant digits. For some applications, you might want to
change it to specify more precision.
On most modern machines,
@@ -9589,7 +9738,7 @@ point when reading the @command{awk} program source code, and for command-line
variable assignments (@pxref{Other Arguments}).
However, when interpreting input data, for @code{print} and @code{printf} output,
and for number to string conversion, the local decimal point character is used.
-@value{DARKCORNER}.
+@value{DARKCORNER}
Here are some examples indicating the difference in behavior,
on a GNU/Linux system:
@@ -9776,8 +9925,8 @@ For maximum portability, do not use the @samp{**} operator.
@subsection String Concatenation
@cindex Kernighan, Brian
@quotation
-@i{It seemed like a good idea at the time.}@*
-Brian Kernighan
+@i{It seemed like a good idea at the time.}
+@author Brian Kernighan
@end quotation
@cindex string operators
@@ -9788,9 +9937,9 @@ specific operator to represent it. Instead, concatenation is performed by
writing expressions next to one another, with no operator. For example:
@example
-$ @kbd{awk '@{ print "Field number one: " $1 @}' BBS-list}
-@print{} Field number one: aardvark
-@print{} Field number one: alpo-net
+$ @kbd{awk '@{ print "Field number one: " $1 @}' mail-list}
+@print{} Field number one: Amelia
+@print{} Field number one: Anthony
@dots{}
@end example
@@ -9798,9 +9947,9 @@ Without the space in the string constant after the @samp{:}, the line
runs together. For example:
@example
-$ @kbd{awk '@{ print "Field number one:" $1 @}' BBS-list}
-@print{} Field number one:aardvark
-@print{} Field number one:alpo-net
+$ @kbd{awk '@{ print "Field number one:" $1 @}' mail-list}
+@print{} Field number one:Amelia
+@print{} Field number one:Anthony
@dots{}
@end example
@@ -9817,6 +9966,8 @@ name = "name"
print "something meaningful" > file name
@end example
+@cindex Brian Kernighan's @command{awk}
+@cindex @command{mawk} utility
@noindent
This produces a syntax error with some versions of Unix
@command{awk}.@footnote{It happens that Brian Kernighan's
@@ -10208,6 +10359,7 @@ just like variables. (Use @samp{$(i++)} when you want to do a field reference
and a variable increment at the same time. The parentheses are necessary
because of the precedence of the field reference operator @samp{$}.)
+@c STARTOFRANGE deop
@cindex decrement operators
The decrement operator @samp{--} works just like @samp{++}, except that
it subtracts one instead of adding it. As with @samp{++}, it can be used before
@@ -10248,8 +10400,8 @@ like @samp{@var{lvalue}++}, but instead of adding, it subtracts.)
@cindex Marx, Groucho
@quotation
@i{Doctor, doctor! It hurts when I do this!@*
-So don't do that!}@*
-Groucho Marx
+So don't do that!}
+@author Groucho Marx
@end quotation
@noindent
@@ -10346,8 +10498,8 @@ the string constant @code{"0"} is actually true, because it is non-null.
@node Typing and Comparison
@subsection Variable Typing and Comparison Expressions
@quotation
-@i{The Guide is definitive. Reality is frequently inaccurate.}@*
-The Hitchhiker's Guide to the Galaxy
+@i{The Guide is definitive. Reality is frequently inaccurate.}
+@author The Hitchhiker's Guide to the Galaxy
@end quotation
@c STARTOFRANGE comex
@@ -10626,7 +10778,7 @@ string comparison (true)
string comparison (true)
@item a = 2; b = " +2"
-@item a == b
+@itemx a == b
string comparison (false)
@end table
@@ -10760,10 +10912,10 @@ The Boolean operators are:
@item @var{boolean1} && @var{boolean2}
True if both @var{boolean1} and @var{boolean2} are true. For example,
the following statement prints the current input record if it contains
-both @samp{2400} and @samp{foo}:
+both @samp{edu} and @samp{li}:
@example
-if ($0 ~ /2400/ && $0 ~ /foo/) print
+if ($0 ~ /edu/ && $0 ~ /li/) print
@end example
@cindex side effects, Boolean operators
@@ -10776,11 +10928,11 @@ no substring @samp{foo} in the record.
@item @var{boolean1} || @var{boolean2}
True if at least one of @var{boolean1} or @var{boolean2} is true.
For example, the following statement prints all records in the input
-that contain @emph{either} @samp{2400} or
-@samp{foo} or both:
+that contain @emph{either} @samp{edu} or
+@samp{li} or both:
@example
-if ($0 ~ /2400/ || $0 ~ /foo/) print
+if ($0 ~ /edu/ || $0 ~ /li/) print
@end example
The subexpression @var{boolean2} is evaluated only if @var{boolean1}
@@ -11005,7 +11157,7 @@ $ @kbd{awk '@{ print "The square root of", $1, "is", sqrt($1) @}'}
@print{} The square root of 3 is 1.73205
@kbd{5}
@print{} The square root of 5 is 2.23607
-@kbd{@value{CTL}-d}
+@kbd{Ctrl-d}
@end example
A function can also have side effects, such as assigning
@@ -11375,7 +11527,7 @@ slashes (@code{/@var{regexp}/}), or any expression whose string value
is used as a dynamic regular expression
(@pxref{Computed Regexps}).
The following example prints the second field of each input record
-whose first field is precisely @samp{foo}:
+whose first field is precisely @samp{li}:
@cindex @code{/} (forward slash), patterns and
@cindex forward slash (@code{/}), patterns and
@@ -11384,68 +11536,65 @@ whose first field is precisely @samp{foo}:
@cindex @code{!} (exclamation point), @code{!~} operator
@cindex exclamation point (@code{!}), @code{!~} operator
@example
-$ @kbd{awk '$1 == "foo" @{ print $2 @}' BBS-list}
+$ @kbd{awk '$1 == "li" @{ print $2 @}' mail-list}
@end example
@noindent
-(There is no output, because there is no BBS site with the exact name @samp{foo}.)
+(There is no output, because there is no person with the exact name @samp{li}.)
Contrast this with the following regular expression match, which
-accepts any record with a first field that contains @samp{foo}:
+accepts any record with a first field that contains @samp{li}:
@example
-$ @kbd{awk '$1 ~ /foo/ @{ print $2 @}' BBS-list}
-@print{} 555-1234
+$ @kbd{awk '$1 ~ /foo/ @{ print $2 @}' mail-list}
+@print{} 555-5553
@print{} 555-6699
-@print{} 555-6480
-@print{} 555-2127
@end example
@cindex regexp constants, as patterns
@cindex patterns, regexp constants as
A regexp constant as a pattern is also a special case of an expression
-pattern. The expression @code{/foo/} has the value one if @samp{foo}
-appears in the current input record. Thus, as a pattern, @code{/foo/}
-matches any record containing @samp{foo}.
+pattern. The expression @code{/li/} has the value one if @samp{li}
+appears in the current input record. Thus, as a pattern, @code{/li/}
+matches any record containing @samp{li}.
@cindex Boolean expressions, as patterns
Boolean expressions are also commonly used as patterns.
Whether the pattern
matches an input record depends on whether its subexpressions match.
For example, the following command prints all the records in
-@file{BBS-list} that contain both @samp{2400} and @samp{foo}:
+@file{mail-list} that contain both @samp{edu} and @samp{li}:
@example
-$ @kbd{awk '/2400/ && /foo/' BBS-list}
-@print{} fooey 555-1234 2400/1200/300 B
+$ @kbd{awk '/edu/ && /li/' mail-list}
+@print{} Samuel 555-3430 samuel.lanceolis@@shu.edu A
@end example
The following command prints all records in
-@file{BBS-list} that contain @emph{either} @samp{2400} or @samp{foo}
+@file{mail-list} that contain @emph{either} @samp{edu} or @samp{li}
(or both, of course):
@example
-$ @kbd{awk '/2400/ || /foo/' BBS-list}
-@print{} alpo-net 555-3412 2400/1200/300 A
-@print{} bites 555-1675 2400/1200/300 A
-@print{} fooey 555-1234 2400/1200/300 B
-@print{} foot 555-6699 1200/300 B
-@print{} macfoo 555-6480 1200/300 A
-@print{} sdace 555-3430 2400/1200/300 A
-@print{} sabafoo 555-2127 1200/300 C
+$ @kbd{awk '/edu/ || /li/' mail-list}
+@print{} Amelia 555-5553 amelia.zodiacusque@@gmail.com F
+@print{} Broderick 555-0542 broderick.aliquotiens@@yahoo.com R
+@print{} Fabius 555-1234 fabius.undevicesimus@@ucb.edu F
+@print{} Julie 555-6699 julie.perscrutabor@@skeeve.com F
+@print{} Samuel 555-3430 samuel.lanceolis@@shu.edu A
+@print{} Jean-Paul 555-2127 jeanpaul.campanorum@@nyu.edu R
@end example
The following command prints all records in
-@file{BBS-list} that do @emph{not} contain the string @samp{foo}:
+@file{mail-list} that do @emph{not} contain the string @samp{li}:
@example
-$ @kbd{awk '! /foo/' BBS-list}
-@print{} aardvark 555-5553 1200/300 B
-@print{} alpo-net 555-3412 2400/1200/300 A
-@print{} barfly 555-7685 1200/300 A
-@print{} bites 555-1675 2400/1200/300 A
-@print{} camelot 555-0542 300 C
-@print{} core 555-2912 1200/300 C
-@print{} sdace 555-3430 2400/1200/300 A
+$ @kbd{awk '! /li/' mail-list}
+@print{} Anthony 555-3412 anthony.asserturo@@hotmail.com A
+@print{} Becky 555-7685 becky.algebrarum@@gmail.com A
+@print{} Bill 555-1675 bill.drowning@@hotmail.com A
+@print{} Camilla 555-2912 camilla.infusarum@@skynet.be R
+@print{} Fabius 555-1234 fabius.undevicesimus@@ucb.edu F
+@print{} Martin 555-6480 martin.codicibus@@hotmail.com A
+@print{} Jean-Paul 555-2127 jeanpaul.campanorum@@nyu.edu R
@end example
@cindex @code{BEGIN} pattern, Boolean patterns and
@@ -11549,6 +11698,11 @@ $ @kbd{echo Yes | gawk '(/1/,/2/) || /Yes/'}
@error{} gawk: cmd. line:1: ^ syntax error
@end example
+@cindex range patterns, line continuation and
+As a minor point of interest, although it is poor style,
+POSIX allows you to put a newline after the comma in
+a range pattern. @value{DARKCORNER}
+
@node BEGIN/END
@subsection The @code{BEGIN} and @code{END} Special Patterns
@@ -11573,28 +11727,30 @@ programmers.
@node Using BEGIN/END
@subsubsection Startup and Cleanup Actions
+@cindex @code{BEGIN} pattern
+@cindex @code{END} pattern
A @code{BEGIN} rule is executed once only, before the first input record
is read. Likewise, an @code{END} rule is executed once only, after all the
input is read. For example:
@example
$ @kbd{awk '}
-> @kbd{BEGIN @{ print "Analysis of \"foo\"" @}}
-> @kbd{/foo/ @{ ++n @}}
-> @kbd{END @{ print "\"foo\" appears", n, "times." @}' BBS-list}
-@print{} Analysis of "foo"
-@print{} "foo" appears 4 times.
+> @kbd{BEGIN @{ print "Analysis of \"li\"" @}}
+> @kbd{/li/ @{ ++n @}}
+> @kbd{END @{ print "\"li\" appears in", n, "records." @}' mail-list}
+@print{} Analysis of "li"
+@print{} "li" appears in 4 records.
@end example
@cindex @code{BEGIN} pattern, operators and
@cindex @code{END} pattern, operators and
-This program finds the number of records in the input file @file{BBS-list}
-that contain the string @samp{foo}. The @code{BEGIN} rule prints a title
+This program finds the number of records in the input file @file{mail-list}
+that contain the string @samp{li}. The @code{BEGIN} rule prints a title
for the report. There is no need to use the @code{BEGIN} rule to
initialize the counter @code{n} to zero, since @command{awk} does this
automatically (@pxref{Variables}).
The second rule increments the variable @code{n} every time a
-record containing the pattern @samp{foo} is read. The @code{END} rule
+record containing the pattern @samp{li} is read. The @code{END} rule
prints the value of @code{n} at the end of the run.
The special patterns @code{BEGIN} and @code{END} cannot be used in ranges
@@ -11647,6 +11803,7 @@ to give @code{$0} a real value is to execute a @code{getline} command
without a variable (@pxref{Getline}).
Another way is simply to assign a value to @code{$0}.
+@cindex Brian Kernighan's @command{awk}
@cindex differences in @command{awk} and @command{gawk}, @code{BEGIN}/@code{END} patterns
@cindex POSIX @command{awk}, @code{BEGIN}/@code{END} patterns
@cindex @code{print} statement, @code{BEGIN}/@code{END} patterns and
@@ -11715,7 +11872,7 @@ you can bypass the fatal error and move on to the next file on the
command line.
@cindex @command{gawk}, @code{ERRNO} variable in
-@cindex @code{ERRNO} variable
+@cindex @code{ERRNO} variable, with @code{BEGINFILE} pattern
@cindex @code{nextfile} statement, @code{BEGINFILE}/@code{ENDFILE} patterns and
You do this by checking if the @code{ERRNO} variable is not the empty
string; if so, then @command{gawk} was not able to open the file. In
@@ -11757,7 +11914,7 @@ both @code{BEGINFILE} and @code{ENDFILE}. Only the @samp{getline
In most other @command{awk} implementations, or if @command{gawk} is in
compatibility mode (@pxref{Options}), they are not special.
-@c FIXME: For 4.1 maybe deal with this?
+@c FIXME: For 4.2 maybe deal with this?
@ignore
Date: Tue, 17 May 2011 02:06:10 PDT
From: rankin@pactechdata.com (Pat Rankin)
@@ -11788,7 +11945,7 @@ An empty (i.e., nonexistent) pattern is considered to match @emph{every}
input record. For example, the program:
@example
-awk '@{ print $1 @}' BBS-list
+awk '@{ print $1 @}' mail-list
@end example
@noindent
@@ -12041,6 +12198,7 @@ the first thing on its line.
@subsection The @code{while} Statement
@cindex @code{while} statement
@cindex loops
+@cindex loops, @code{while}
@cindex loops, See Also @code{while} statement
In programming, a @dfn{loop} is a part of a program that can
@@ -12101,6 +12259,7 @@ program is harder to read without it.
@node Do Statement
@subsection The @code{do}-@code{while} Statement
@cindex @code{do}-@code{while} statement
+@cindex loops, @code{do}-@code{while}
The @code{do} loop is a variation of the @code{while} looping statement.
The @code{do} loop executes the @var{body} once and then repeats the
@@ -12146,6 +12305,7 @@ occasionally is there a real use for a @code{do} statement.
@node For Statement
@subsection The @code{for} Statement
@cindex @code{for} statement
+@cindex loops, @code{for}, iterative
The @code{for} statement makes it more convenient to count iterations of a
loop. The general form of the @code{for} statement looks like this:
@@ -12252,6 +12412,8 @@ for more information on this version of the @code{for} loop.
@cindex @code{case} keyword
@cindex @code{default} keyword
+This @value{SECTION} describes a @command{gawk}-specific feature.
+
The @code{switch} statement allows the evaluation of an expression and
the execution of statements based on a @code{case} match. Case statements
are checked for a match in the order they are defined. If no suitable
@@ -12316,6 +12478,7 @@ it is not available.
@subsection The @code{break} Statement
@cindex @code{break} statement
@cindex loops, exiting
+@cindex loops, @code{break} statement and
The @code{break} statement jumps out of the innermost @code{for},
@code{while}, or @code{do} loop that encloses it. The following example
@@ -12375,6 +12538,7 @@ This is discussed in @ref{Switch Statement}.
@cindex POSIX @command{awk}, @code{break} statement and
@cindex dark corner, @code{break} statement
@cindex @command{gawk}, @code{break} statement in
+@cindex Brian Kernighan's @command{awk}
The @code{break} statement has no meaning when
used outside the body of a loop or @code{switch}.
However, although it was never documented,
@@ -12439,6 +12603,7 @@ This program loops forever once @code{x} reaches 5.
@cindex POSIX @command{awk}, @code{continue} statement and
@cindex dark corner, @code{continue} statement
@cindex @command{gawk}, @code{continue} statement in
+@cindex Brian Kernighan's @command{awk}
The @code{continue} statement has no special meaning with respect to the
@code{switch} statement, nor does it have any meaning when used outside the
body of a loop. Historical versions of @command{awk} treated a @code{continue}
@@ -12527,11 +12692,11 @@ The @code{nextfile} statement
is similar to the @code{next} statement.
However, instead of abandoning processing of the current record, the
@code{nextfile} statement instructs @command{awk} to stop processing the
-current @value{DF}.
+current data file.
Upon execution of the @code{nextfile} statement,
@code{FILENAME} is
-updated to the name of the next @value{DF} listed on the command line,
+updated to the name of the next data file listed on the command line,
@code{FNR} is reset to one,
and processing
starts over with the first rule in the program.
@@ -12540,10 +12705,10 @@ then the code in any @code{END} rules is executed. An exception to this is
when @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
+The @code{nextfile} statement is useful when there are many data files
to process but it isn't necessary to process every record in every file.
Without @code{nextfile},
-in order to move on to the next @value{DF}, a program
+in order to move on to the next data file, a program
would have to continue scanning the unwanted records. The @code{nextfile}
statement accomplishes this much more efficiently.
@@ -12576,8 +12741,10 @@ See @uref{http://austingroupbugs.net/view.php?id=607, the Austin Group website}.
@cindex functions, user-defined, @code{next}/@code{nextfile} statements and
@cindex @code{nextfile} statement, user-defined functions and
-The current version of the Brian Kernighan's @command{awk} (@pxref{Other
-Versions}) also supports @code{nextfile}. However, it doesn't allow the
+@cindex Brian Kernighan's @command{awk}
+@cindex @command{mawk} utility
+The current version of the Brian Kernighan's @command{awk}, and @command{mawk} (@pxref{Other
+Versions}) also support @code{nextfile}. However, they don't allow the
@code{nextfile} statement inside function bodies (@pxref{User-defined}).
@command{gawk} does; a @code{nextfile} inside a function body reads the
next record and starts processing it with the first rule in the program,
@@ -12781,7 +12948,7 @@ exclusively on the value of @code{FS}.
@item FS
This is the input field separator
(@pxref{Field Separators}).
-The value is a single-character string or a multi-character regular
+The value is a single-character string or a multicharacter regular
expression that matches the separations between fields in an input
record. If the value is the null string (@code{""}), then each
character in the record becomes a separate field.
@@ -12814,8 +12981,8 @@ is to simply say @samp{FS = FS}, perhaps with an explanatory comment.
@cindex @command{gawk}, @code{IGNORECASE} variable in
@cindex @code{IGNORECASE} variable
@cindex differences in @command{awk} and @command{gawk}, @code{IGNORECASE} variable
-@cindex case sensitivity, string comparisons and
-@cindex case sensitivity, regexps and
+@cindex case sensitivity, and string comparisons
+@cindex case sensitivity, and regexps
@cindex regular expressions, case sensitivity
@item IGNORECASE #
If @code{IGNORECASE} is nonzero or non-null, then all string comparisons
@@ -12927,7 +13094,7 @@ This is the subscript separator. It has the default value of
@code{"\034"} and is used to separate the parts of the indices of a
multidimensional array. Thus, the expression @code{@w{foo["A", "B"]}}
really accesses @code{foo["A\034B"]}
-(@pxref{Multi-dimensional}).
+(@pxref{Multidimensional}).
@cindex @command{gawk}, @code{TEXTDOMAIN} variable in
@cindex @code{TEXTDOMAIN} variable
@@ -12980,16 +13147,16 @@ In the following example:
$ @kbd{awk 'BEGIN @{}
> @kbd{for (i = 0; i < ARGC; i++)}
> @kbd{print ARGV[i]}
-> @kbd{@}' inventory-shipped BBS-list}
+> @kbd{@}' inventory-shipped mail-list}
@print{} awk
@print{} inventory-shipped
-@print{} BBS-list
+@print{} mail-list
@end example
@noindent
@code{ARGV[0]} contains @samp{awk}, @code{ARGV[1]}
contains @samp{inventory-shipped}, and @code{ARGV[2]} contains
-@samp{BBS-list}. The value of @code{ARGC} is three, one more than the
+@samp{mail-list}. The value of @code{ARGC} is three, one more than the
index of the last element in @code{ARGV}, because the elements are numbered
from zero.
@@ -13010,17 +13177,17 @@ about how @command{awk} uses these variables.
@cindex differences in @command{awk} and @command{gawk}, @code{ARGIND} variable
@item ARGIND #
The index in @code{ARGV} of the current file being processed.
-Every time @command{gawk} opens a new @value{DF} for processing, it sets
-@code{ARGIND} to the index in @code{ARGV} of the @value{FN}.
+Every time @command{gawk} opens a new data file for processing, it sets
+@code{ARGIND} to the index in @code{ARGV} of the file name.
When @command{gawk} is processing the input files,
@samp{FILENAME == ARGV[ARGIND]} is always true.
@cindex files, processing@comma{} @code{ARGIND} variable and
This variable is useful in file processing; it allows you to tell how far
-along you are in the list of @value{DF}s as well as to distinguish between
-successive instances of the same @value{FN} on the command line.
+along you are in the list of data files as well as to distinguish between
+successive instances of the same file name on the command line.
-@cindex @value{FN}s, distinguishing
+@cindex file names, distinguishing
While you can change the value of @code{ARGIND} within your @command{awk}
program, @command{gawk} automatically sets it to a new value when the
next file is opened.
@@ -13032,15 +13199,23 @@ or if @command{gawk} is in compatibility mode
it is not special.
@cindex @code{ENVIRON} array
-@cindex environment variables
+@cindex environment variables, in @code{ENVIRON} array
@item ENVIRON
An associative array containing the values of the environment. The array
indices are the environment variable names; the elements are the values of
the particular environment variables. For example,
-@code{ENVIRON["HOME"]} might be @file{/home/arnold}. Changing this array
-does not affect the environment passed on to any programs that
-@command{awk} may spawn via redirection or the @code{system()} function.
-@c (In a future version of @command{gawk}, it may do so.)
+@code{ENVIRON["HOME"]} might be @file{/home/arnold}.
+
+For POSIX @command{awk}, changing this array does not affect the
+environment passed on to any programs that @command{awk} may spawn via
+redirection or the @code{system()} function.
+
+However, beginning with version 4.2, if not in POSIX
+compatibility mode, @command{gawk} does update its own environment when
+@code{ENVIRON} is changed, thus changing the environment seen by programs
+that it creates. You should therefore be especially careful if you
+modify @code{ENVIRON["PATH"]"}, which is the search path for finding
+executable programs.
Some operating systems may not have environment variables.
On such systems, the @code{ENVIRON} array is empty (except for
@@ -13082,14 +13257,14 @@ it is not special.
@cindex dark corner, @code{FILENAME} variable
@item FILENAME
The name of the file that @command{awk} is currently reading.
-When no @value{DF}s are listed on the command line, @command{awk} reads
+When no data files are listed on the command line, @command{awk} reads
from the standard input and @code{FILENAME} is set to @code{"-"}.
@code{FILENAME} is changed each time a new file is read
(@pxref{Reading Files}).
Inside a @code{BEGIN} rule, the value of @code{FILENAME} is
@code{""}, since there are no input files being processed
yet.@footnote{Some early implementations of Unix @command{awk} initialized
-@code{FILENAME} to @code{"-"}, even if there were @value{DF}s to be
+@code{FILENAME} to @code{"-"}, even if there were data files to be
processed. This behavior was incorrect and should not be relied
upon in your programs.}
@value{DARKCORNER}
@@ -13111,13 +13286,7 @@ The number of fields in the current input record.
@code{NF} is set each time a new record is read, when a new field is
created or when @code{$0} changes (@pxref{Fields}).
-Unlike most of the variables described in this
-@ifnotinfo
-section,
-@end ifnotinfo
-@ifinfo
-node,
-@end ifinfo
+Unlike most of the variables described in this @value{SUBSECTION},
assigning a value to @code{NF} has the potential to affect
@command{awk}'s internal workings. In particular, assignments
to @code{NF} can be used to create or remove fields from the
@@ -13153,10 +13322,12 @@ The following elements (listed alphabetically)
are guaranteed to be available:
@table @code
+@cindex effective group ID of @command{gawk} user
@item PROCINFO["egid"]
The value of the @code{getegid()} system call.
@item PROCINFO["euid"]
+@cindex effective user ID of @command{gawk} user
The value of the @code{geteuid()} system call.
@item PROCINFO["FS"]
@@ -13166,6 +13337,7 @@ This is
or @code{"FPAT"} if field matching with @code{FPAT} is in effect.
@item PROCINFO["identifiers"]
+@cindex program identifiers
A subarray, indexed by the names of all identifiers used in the
text of the AWK program. For each identifier, the value of the element is one of the following:
@@ -13194,15 +13366,19 @@ after it has finished parsing the program; they are @emph{not} updated
while the program runs.
@item PROCINFO["gid"]
+@cindex group ID of @command{gawk} user
The value of the @code{getgid()} system call.
@item PROCINFO["pgrpid"]
+@cindex process group idIDof @command{gawk} process
The process group ID of the current process.
@item PROCINFO["pid"]
+@cindex process ID of @command{gawk} process
The process ID of the current process.
@item PROCINFO["ppid"]
+@cindex parent process ID of @command{gawk} process
The parent process ID of the current process.
@item PROCINFO["sorted_in"]
@@ -13222,25 +13398,31 @@ Assigning a new value to this element changes the default.
The value of the @code{getuid()} system call.
@item PROCINFO["version"]
+@cindex version of @command{gawk}
+@cindex @command{gawk} version
The version of @command{gawk}.
@end table
The following additional elements in the array
are available to provide information about the MPFR and GMP libraries
if your version of @command{gawk} supports arbitrary precision numbers
-(@pxref{Arbitrary Precision Arithmetic}):
+(@pxref{Gawk and MPFR}):
@table @code
+@cindex version of GNU MPFR library
@item PROCINFO["mpfr_version"]
The version of the GNU MPFR library.
@item PROCINFO["gmp_version"]
+@cindex version of GNU MP library
The version of the GNU MP library.
@item PROCINFO["prec_max"]
+@cindex maximum precision supported by MPFR library
The maximum precision supported by MPFR.
@item PROCINFO["prec_min"]
+@cindex minimum precision supported by MPFR library
The minimum precision required by MPFR.
@end table
@@ -13251,12 +13433,15 @@ of @command{gawk} supports dynamic loading of extension functions
@table @code
@item PROCINFO["api_major"]
+@cindex version of @command{gawk} extension API
+@cindex extension API, version number
The major version of the extension API.
@item PROCINFO["api_minor"]
The minor version of the extension API.
@end table
+@cindex supplementary groups of @command{gawk} process
On some systems, there may be elements in the array, @code{"group1"}
through @code{"group@var{N}"} for some @var{N}. @var{N} is the number of
supplementary groups that the process has. Use the @code{in} operator
@@ -13264,7 +13449,7 @@ to test for these elements
(@pxref{Reference to Elements}).
@cindex @command{gawk}, @code{PROCINFO} array in
-@cindex @code{PROCINFO} array
+@cindex @code{PROCINFO} array, uses
The @code{PROCINFO} array has the following additional uses:
@itemize @bullet
@@ -13336,7 +13521,7 @@ if an element in @code{SYMTAB} is an array.
Also, you may not use the @code{delete} statement with the
@code{SYMTAB} array.
-You may use an index for @code{SYMTAB} that is not a predefined identifer:
+You may use an index for @code{SYMTAB} that is not a predefined identifier:
@example
SYMTAB["xxx"] = 5
@@ -13404,7 +13589,7 @@ changed.
@node ARGC and ARGV
@subsection Using @code{ARGC} and @code{ARGV}
-@cindex @code{ARGC}/@code{ARGV} variables
+@cindex @code{ARGC}/@code{ARGV} variables, how to use
@cindex arguments, command-line
@cindex command line, arguments
@@ -13416,16 +13601,16 @@ and @code{ARGV}:
$ @kbd{awk 'BEGIN @{}
> @kbd{for (i = 0; i < ARGC; i++)}
> @kbd{print ARGV[i]}
-> @kbd{@}' inventory-shipped BBS-list}
+> @kbd{@}' inventory-shipped mail-list}
@print{} awk
@print{} inventory-shipped
-@print{} BBS-list
+@print{} mail-list
@end example
@noindent
In this example, @code{ARGV[0]} contains @samp{awk}, @code{ARGV[1]}
contains @samp{inventory-shipped}, and @code{ARGV[2]} contains
-@samp{BBS-list}.
+@samp{mail-list}.
Notice that the @command{awk} program is not entered in @code{ARGV}. The
other command-line options, with their arguments, are also not
entered. This includes variable assignments done with the @option{-v}
@@ -13466,11 +13651,11 @@ additional files to be read.
If the value of @code{ARGC} is decreased, that eliminates input files
from the end of the list. By recording the old value of @code{ARGC}
elsewhere, a program can treat the eliminated arguments as
-something other than @value{FN}s.
+something other than file names.
To eliminate a file from the middle of the list, store the null string
(@code{""}) into @code{ARGV} in place of the file's name. As a
-special feature, @command{awk} ignores @value{FN}s that have been
+special feature, @command{awk} ignores file names that have been
replaced with the null string.
Another option is to
use the @code{delete} statement to remove elements from
@@ -13549,7 +13734,7 @@ ability to support true multidimensional arrays.
@cindex variables, names of
@cindex functions, names of
-@cindex arrays, names of
+@cindex arrays, names of, and names of functions/variables
@cindex names, arrays/variables
@cindex namespace issues
@command{awk} maintains a single set
@@ -13565,7 +13750,7 @@ same @command{awk} program.
* 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
+* Multidimensional:: Emulating multidimensional arrays in
@command{awk}.
* Arrays of Arrays:: True multidimensional arrays.
@end menu
@@ -13595,8 +13780,8 @@ an array.
@cindex Wall, Larry
@quotation
@i{Doing linear scans over an associative array is like trying to club someone
-to death with a loaded Uzi.}@*
-Larry Wall
+to death with a loaded Uzi.}
+@author Larry Wall
@end quotation
The @command{awk} language provides one-dimensional arrays
@@ -13725,10 +13910,9 @@ Here, the number @code{1} isn't double-quoted, since @command{awk}
automatically converts it to a string.
@cindex @command{gawk}, @code{IGNORECASE} variable in
-@cindex @code{IGNORECASE} variable
@cindex case sensitivity, array indices and
-@cindex arrays, @code{IGNORECASE} variable and
-@cindex @code{IGNORECASE} variable, array subscripts and
+@cindex arrays, and @code{IGNORECASE} variable
+@cindex @code{IGNORECASE} variable, and array indices
The value of @code{IGNORECASE} has no effect upon array subscripting.
The identical string value used to store an array element must be used
to retrieve it.
@@ -13744,8 +13928,9 @@ is independent of the number of elements in the array.
@node Reference to Elements
@subsection Referring to an Array Element
-@cindex arrays, elements, referencing
-@cindex elements in arrays
+@cindex arrays, referencing elements
+@cindex array members
+@cindex elements of arrays
The principal way to use an array is to refer to one of its elements.
An array reference is an expression as follows:
@@ -13762,11 +13947,16 @@ The value of the array reference is the current value of that array
element. For example, @code{foo[4.3]} is an expression for the element
of array @code{foo} at index @samp{4.3}.
+@cindex arrays, unassigned elements
+@cindex unassigned array elements
+@cindex empty array elements
A reference to an array element that has no recorded value yields a value of
@code{""}, the null string. This includes elements
that have not been assigned any value as well as elements that have been
deleted (@pxref{Delete}).
+@cindex non-existent array elements
+@cindex arrays, elements that don't exist
@quotation NOTE
A reference to an element that does not exist @emph{automatically} creates
that array element, with the null string as its value. (In some cases,
@@ -13786,7 +13976,7 @@ if it didn't exist before!
@end quotation
@c @cindex arrays, @code{in} operator and
-@cindex @code{in} operator
+@cindex @code{in} operator, testing if array element exists
To determine whether an element exists in an array at a certain index, use
the following expression:
@@ -13821,8 +14011,8 @@ if (frequencies[2] != "")
@node Assigning Elements
@subsection Assigning Array Elements
-@cindex arrays, elements, assigning
-@cindex elements in arrays, assigning
+@cindex arrays, elements, assigning values
+@cindex elements in arrays, assigning values
Array elements can be assigned values just like
@command{awk} variables:
@@ -13839,6 +14029,7 @@ assign to that element of the array.
@node Array Example
@subsection Basic Array Example
+@cindex arrays, an example of using
The following program takes a list of lines, each beginning with a line
number, and prints them out in order of line number. The line numbers
@@ -13908,7 +14099,9 @@ END @{
@node Scanning an Array
@subsection Scanning All Elements of an Array
@cindex elements in arrays, scanning
+@cindex scanning arrays
@cindex arrays, scanning
+@cindex loops, @code{for}, array scanning
In programs that use arrays, it is often necessary to use a loop that
executes once for each element of an array. In other languages, where
@@ -13925,7 +14118,7 @@ for (@var{var} in @var{array})
@end example
@noindent
-@cindex @code{in} operator
+@cindex @code{in} operator, use in loops
This loop executes @var{body} once for each index in @var{array} that the
program has previously used, with the variable @var{var} set to that index.
@@ -13964,8 +14157,9 @@ END @{
@xref{Word Sorting},
for a more detailed example of this type.
-@cindex arrays, elements, order of
-@cindex elements in arrays, order of
+@cindex arrays, elements, order of access by @code{in} operator
+@cindex elements in arrays, order of access by @code{in} operator
+@cindex @code{in} operator, order of array access
The order in which elements of the array are accessed by this statement
is determined by the internal arrangement of the array elements within
@command{awk} and normally cannot be controlled or changed. This can lead to
@@ -13983,6 +14177,8 @@ determines the order in which the array is traversed.
This order is usually based on the internal implementation of arrays
and will vary from one version of @command{awk} to the next.
+@cindex array scanning order, controlling
+@cindex controlling array scanning order
Often, though, you may wish to do something simple, such as
``traverse the array by comparing the indices in ascending order,''
or ``traverse the array by comparing the values in descending order.''
@@ -13999,6 +14195,7 @@ to use for comparison of array elements. This advanced feature
is described later, in @ref{Array Sorting}.
@end itemize
+@cindex @code{PROCINFO}, values of @code{sorted_in}
The following special values for @code{PROCINFO["sorted_in"]} are available:
@table @code
@@ -14007,29 +14204,29 @@ 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.
+Order by indices in ascending order 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.
+Order by indices in ascending order 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.
+Order by element values in ascending order (rather than by 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}).
+@pxref{Arrays of Arrays}.)
@item "@@val_str_asc"
-Order by element values rather than by indices. Scalar values are
+Order by element values in ascending order (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
+Order by element values in ascending order (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
@@ -14042,13 +14239,14 @@ across different environments.} which @command{gawk} uses internally
to perform the sorting.
@item "@@ind_str_desc"
-Reverse order from the most basic sort.
+String indices ordered from high to low.
@item "@@ind_num_desc"
Numeric indices ordered from high to low.
@item "@@val_type_desc"
-Element values, based on type, in descending order.
+Element values, based on type, ordered from high to low.
+Subarrays, if present, come out first.
@item "@@val_str_desc"
Element values, treated as strings, ordered from high to low.
@@ -14158,7 +14356,7 @@ if (4 in foo)
print "This will never be printed"
@end example
-@cindex null strings, array elements and
+@cindex null strings, and deleting array elements
It is important to note that deleting an element is @emph{not} the
same as assigning it a null value (the empty string, @code{""}).
For example:
@@ -14180,6 +14378,7 @@ is not in the array is deleted.
@cindex extensions, common@comma{} @code{delete} to delete entire arrays
@cindex arrays, deleting entire contents
@cindex deleting entire arrays
+@cindex @code{delete} @var{array}
@cindex differences in @command{awk} and @command{gawk}, array elements, deleting
All the elements of an array may be deleted with a single statement
by leaving off the subscript in the @code{delete} statement,
@@ -14194,6 +14393,7 @@ Using this version of the @code{delete} statement is about three times
more efficient than the equivalent loop that deletes each element one
at a time.
+@cindex Brian Kernighan's @command{awk}
@quotation NOTE
For many years,
using @code{delete} without a subscript was a @command{gawk} extension.
@@ -14236,9 +14436,9 @@ a = 3
@section Using Numbers to Subscript Arrays
@cindex numbers, as array subscripts
-@cindex arrays, subscripts
+@cindex arrays, numeric subscripts
@cindex subscripts in arrays, numbers as
-@cindex @code{CONVFMT} variable, array subscripts and
+@cindex @code{CONVFMT} variable, and array subscripts
An important aspect to remember about arrays is that @emph{array subscripts
are always strings}. When a numeric value is used as a subscript,
it is converted to a string value before being used for subscripting
@@ -14268,7 +14468,8 @@ string value from @code{xyz}---this time @code{"12.15"}---because the value of
@code{CONVFMT} only allows two significant digits. This test fails,
since @code{"12.15"} is different from @code{"12.153"}.
-@cindex converting, during subscripting
+@cindex converting integer array subscripts
+@cindex integer array indices
According to the rules for conversions
(@pxref{Conversion}), integer
values are always converted to strings as integers, no matter what the
@@ -14358,11 +14559,11 @@ Even though it is somewhat unusual, the null string
if @option{--lint} is provided
on the command line (@pxref{Options}).
-@node Multi-dimensional
+@node Multidimensional
@section Multidimensional Arrays
@menu
-* Multi-scanning:: Scanning multidimensional arrays.
+* Multiscanning:: Scanning multidimensional arrays.
@end menu
@cindex subscripts in arrays, multidimensional
@@ -14374,7 +14575,7 @@ languages, including @command{awk}) to refer to an element of a
two-dimensional array named @code{grid} is with
@code{grid[@var{x},@var{y}]}.
-@cindex @code{SUBSEP} variable, multidimensional arrays
+@cindex @code{SUBSEP} variable, and multidimensional arrays
Multidimensional arrays are supported in @command{awk} through
concatenation of indices into one string.
@command{awk} converts the indices into strings
@@ -14406,6 +14607,7 @@ combined strings that are ambiguous. Suppose that @code{SUBSEP} is
"b@@c"]}} are indistinguishable because both are actually
stored as @samp{foo["a@@b@@c"]}.
+@cindex @code{in} operator, index existence in multidimensional arrays
To test whether a particular index sequence exists in a
multidimensional array, use the same operator (@code{in}) that is
used for single dimensional arrays. Write the whole sequence of indices
@@ -14460,7 +14662,7 @@ the program produces the following output:
3 2 1 6
@end example
-@node Multi-scanning
+@node Multiscanning
@subsection Scanning Multidimensional Arrays
There is no special @code{for} statement for scanning a
@@ -14471,6 +14673,7 @@ multidimensional @emph{way of accessing} an array.
@cindex subscripts in arrays, multidimensional, scanning
@cindex arrays, multidimensional, scanning
+@cindex scanning multidimensional arrays
However, if your program has an array that is always accessed as
multidimensional, you can get the effect of scanning it by combining
the scanning @code{for} statement
@@ -14512,6 +14715,7 @@ separate indices is recovered.
@node Arrays of Arrays
@section Arrays of Arrays
+@cindex arrays of arrays
@command{gawk} goes beyond standard @command{awk}'s multidimensional
array access and provides true arrays of
@@ -14771,6 +14975,7 @@ two arguments 11 and 10.
@node Numeric Functions
@subsection Numeric Functions
+@cindex numeric functions
The following list describes all of
the built-in functions that work with numbers.
@@ -14778,22 +14983,26 @@ Optional parameters are enclosed in square brackets@w{ ([ ]):}
@table @code
@item atan2(@var{y}, @var{x})
-@cindex @code{atan2()} function
+@cindexawkfunc{atan2}
+@cindex arctangent
Return the arctangent of @code{@var{y} / @var{x}} in radians.
You can use @samp{pi = atan2(0, -1)} to retrieve the value of @value{PI}.
@item cos(@var{x})
-@cindex @code{cos()} function
+@cindexawkfunc{cos}
+@cindex cosine
Return the cosine of @var{x}, with @var{x} in radians.
@item exp(@var{x})
-@cindex @code{exp()} function
+@cindexawkfunc{exp}
+@cindex exponent
Return the exponential of @var{x} (@code{e ^ @var{x}}) or report
an error if @var{x} is out of range. The range of values @var{x} can have
depends on your machine's floating-point representation.
@item int(@var{x})
-@cindex @code{int()} function
+@cindexawkfunc{int}
+@cindex round to nearest integer
Return the nearest integer to @var{x}, located between @var{x} and zero and
truncated toward zero.
@@ -14801,12 +15010,13 @@ For example, @code{int(3)} is 3, @code{int(3.9)} is 3, @code{int(-3.9)}
is @minus{}3, and @code{int(-3)} is @minus{}3 as well.
@item log(@var{x})
-@cindex @code{log()} function
+@cindexawkfunc{log}
+@cindex logarithm
Return the natural logarithm of @var{x}, if @var{x} is positive;
otherwise, report an error.
@item rand()
-@cindex @code{rand()} function
+@cindexawkfunc{rand}
@cindex random numbers, @code{rand()}/@code{srand()} functions
Return a random number. The values of @code{rand()} are
uniformly distributed between zero and one.
@@ -14848,7 +15058,7 @@ function roll(n) @{ return 1 + int(rand() * n) @}
@}
@end example
-@cindex numbers, random
+@cindex seeding random number generator
@cindex random numbers, seed of
@quotation CAUTION
In most @command{awk} implementations, including @command{gawk},
@@ -14864,17 +15074,19 @@ use @code{srand()}.
@end quotation
@item sin(@var{x})
-@cindex @code{sin()} function
+@cindexawkfunc{sin}
+@cindex sine
Return the sine of @var{x}, with @var{x} in radians.
@item sqrt(@var{x})
-@cindex @code{sqrt()} function
+@cindexawkfunc{sqrt}
+@cindex square root
Return the positive square root of @var{x}.
@command{gawk} prints a warning message
if @var{x} is negative. Thus, @code{sqrt(4)} is 2.
@item srand(@r{[}@var{x}@r{]})
-@cindex @code{srand()} function
+@cindexawkfunc{srand}
Set the starting point, or seed,
for generating random numbers to the value @var{x}.
@@ -14904,16 +15116,18 @@ sequences of random numbers.
@node String Functions
@subsection String-Manipulation Functions
+@cindex string-manipulation functions
-The functions in this @value{SECTION} look at or change the text of one or more
-strings.
-@code{gawk} understands locales (@pxref{Locales}), and does all string processing in terms of
-@emph{characters}, not @emph{bytes}. This distinction is particularly important
-to understand for locales where one character
-may be represented by multiple bytes. Thus, for example, @code{length()}
-returns the number of characters in a string, and not the number of bytes
-used to represent those characters, Similarly, @code{index()} works with
-character indices, and not byte indices.
+The functions in this @value{SECTION} look at or change the text of one
+or more strings.
+
+@code{gawk} understands locales (@pxref{Locales}), and does all
+string processing in terms of @emph{characters}, not @emph{bytes}.
+This distinction is particularly important to understand for locales
+where one character may be represented by multiple bytes. Thus, for
+example, @code{length()} returns the number of characters in a string,
+and not the number of bytes used to represent those characters. Similarly,
+@code{index()} works with character indices, and not byte indices.
In the following list, optional parameters are enclosed in square brackets@w{ ([ ]).}
Several functions perform string substitution; the full discussion is
@@ -14930,30 +15144,34 @@ pound sign@w{ (@samp{#}):}
@table @code
@item asort(@var{source} @r{[}, @var{dest} @r{[}, @var{how} @r{]} @r{]}) #
+@itemx asorti(@var{source} @r{[}, @var{dest} @r{[}, @var{how} @r{]} @r{]}) #
+@cindexgawkfunc{asorti}
+@cindex sort array
@cindex arrays, elements, retrieving number of
-@cindex @code{asort()} function (@command{gawk})
+@cindexgawkfunc{asort}
+@cindex sort array indices
+These two functions are similar in behavior, so they are described
+together.
+
+@quotation NOTE
+The following description ignores the third argument, @var{how}, since it
+requires understanding features that we have not discussed yet. Thus,
+the discussion here is a deliberate simplification. (We do provide all
+the details later on: @xref{Array Sorting Functions}, for the full story.)
+@end quotation
+
+Both functions return the number of elements in the array @var{source}.
+For @command{asort()}, @command{gawk} sorts the values of @var{source}
+and replaces the indices of the sorted values of @var{source} with
+sequential integers starting with one. If the optional array @var{dest}
+is specified, then @var{source} is duplicated into @var{dest}. @var{dest}
+is then sorted, leaving the indices of @var{source} unchanged.
+
@cindex @command{gawk}, @code{IGNORECASE} variable in
-@cindex @code{IGNORECASE} variable
-Return the number of elements in the array @var{source}.
-@command{gawk} sorts the contents of @var{source}
-and replaces the indices
-of the sorted values of @var{source} with sequential
-integers starting with one. If the optional array @var{dest} is specified,
-then @var{source} is duplicated into @var{dest}. @var{dest} is then
-sorted, leaving the indices of @var{source} unchanged. The optional third
-argument @var{how} is a string which controls the rule for comparing values,
-and the sort direction. A single space is required between the
-comparison mode, @samp{string} or @samp{number}, and the direction specification,
-@samp{ascending} or @samp{descending}. You can omit direction and/or mode
-in which case it will default to @samp{ascending} and @samp{string}, respectively.
-An empty string "" is the same as the default @code{"ascending string"}
-for the value of @var{how}. If the @samp{source} array contains subarrays as values,
-they will come out last(first) in the @samp{dest} array for @samp{ascending}(@samp{descending})
-order specification. The value of @code{IGNORECASE} affects the sorting.
-The third argument can also be a user-defined function name in which case
-the value returned by the function is used to order the array elements
-before constructing the result array.
-@xref{Array Sorting Functions}, for more information.
+When comparing strings, @code{IGNORECASE} affects the sorting
+(@pxref{Array Sorting Functions}). If the
+@var{source} array contains subarrays as values (@pxref{Arrays of
+Arrays}), they will come last, after all scalar values.
For example, if the contents of @code{a} are as follows:
@@ -14979,32 +15197,24 @@ a[2] = "de"
a[3] = "sac"
@end example
-In order to reverse the direction of the sorted results in the above example,
-@code{asort()} can be called with three arguments as follows:
+The @code{asorti()} function works similarly to @code{asort()}, however,
+the @emph{indices} are sorted, instead of the values. Thus, in the
+previous example, starting with the same initial set of indices and
+values in @code{a}, calling @samp{asorti(a)} would yield:
@example
-asort(a, a, "descending")
+a[1] = "first"
+a[2] = "last"
+a[3] = "middle"
@end example
-The @code{asort()} function is described in more detail in
-@ref{Array Sorting Functions}.
-@code{asort()} is a @command{gawk} extension; it is not available
-in compatibility mode (@pxref{Options}).
-
-@item asorti(@var{source} @r{[}, @var{dest} @r{[}, @var{how} @r{]} @r{]}) #
-@cindex @code{asorti()} function (@command{gawk})
-Return the number of elements in the array @var{source}.
-It works similarly to @code{asort()}, however, the @emph{indices}
-are sorted, instead of the values. (Here too,
-@code{IGNORECASE} affects the sorting.)
-
-The @code{asorti()} function is described in more detail in
-@ref{Array Sorting Functions}.
-@code{asorti()} is a @command{gawk} extension; it is not available
-in compatibility mode (@pxref{Options}).
+@code{asort()} and @code{asorti()} are @command{gawk} extensions; they
+are not available in compatibility mode (@pxref{Options}).
@item gensub(@var{regexp}, @var{replacement}, @var{how} @r{[}, @var{target}@r{]}) #
-@cindex @code{gensub()} function (@command{gawk})
+@cindexgawkfunc{gensub}
+@cindex search and replace in strings
+@cindex substitute in string
Search the target string @var{target} for matches of the regular
expression @var{regexp}. If @var{how} is a string beginning with
@samp{g} or @samp{G} (short for ``global''), then replace all matches of @var{regexp} with
@@ -15013,7 +15223,7 @@ which match of @var{regexp} to replace. If no @var{target} is supplied,
use @code{$0}. It returns the modified string as the result
of the function and the original target string is @emph{not} changed.
-@code{gensub()} is a general substitution function. It's purpose is
+@code{gensub()} is a general substitution function. Its purpose is
to provide more features than the standard @code{sub()} and @code{gsub()}
functions.
@@ -15067,7 +15277,7 @@ is the original unchanged value of @var{target}.
in compatibility mode (@pxref{Options}).
@item gsub(@var{regexp}, @var{replacement} @r{[}, @var{target}@r{]})
-@cindex @code{gsub()} function
+@cindexawkfunc{gsub}
Search @var{target} for
@emph{all} of the longest, leftmost, @emph{nonoverlapping} matching
substrings it can find and replace them with @var{replacement}.
@@ -15089,8 +15299,9 @@ As in @code{sub()}, the characters @samp{&} and @samp{\} are special,
and the third argument must be assignable.
@item index(@var{in}, @var{find})
-@cindex @code{index()} function
-@cindex searching
+@cindexawkfunc{index}
+@cindex search in string
+@cindex find substring in string
Search the string @var{in} for the first occurrence of the string
@var{find}, and return the position in characters where that occurrence
begins in the string @var{in}. Consider the following example:
@@ -15107,7 +15318,9 @@ If @var{find} is not found, @code{index()} returns zero.
It is a fatal error to use a regexp constant for @var{find}.
@item length(@r{[}@var{string}@r{]})
-@cindex @code{length()} function
+@cindexawkfunc{length}
+@cindex string length
+@cindex length of string
Return the number of characters in @var{string}. If
@var{string} is a number, the length of the digit string representing
that number is returned. For example, @code{length("abcde")} is five. By
@@ -15115,6 +15328,8 @@ contrast, @code{length(15 * 35)} works out to three. In this example, 15 * 35 =
525, and 525 is then converted to the string @code{"525"}, which has
three characters.
+@cindex length of input record
+@cindex input record, length of
If no argument is supplied, @code{length()} returns the length of @code{$0}.
@c @cindex historical features
@@ -15153,6 +15368,8 @@ warning about this.
@cindex common extensions, @code{length()} applied to an array
@cindex extensions, common@comma{} @code{length()} applied to an array
@cindex differences between @command{gawk} and @command{awk}
+@cindex number of array elements
+@cindex array, number of elements
With @command{gawk} and several other @command{awk} implementations, when given an
array argument, the @code{length()} function returns the number of elements
in the array. @value{COMMONEXT}
@@ -15166,7 +15383,9 @@ If @option{--posix} is supplied, using an array argument is a fatal error
(@pxref{Arrays}).
@item match(@var{string}, @var{regexp} @r{[}, @var{array}@r{]})
-@cindex @code{match()} function
+@cindexawkfunc{match}
+@cindex string, regular expression match
+@cindex match regexp in string
Search @var{string} for the
longest, leftmost substring matched by the regular expression,
@var{regexp} and return the character position, or @dfn{index},
@@ -15281,7 +15500,8 @@ The @var{array} argument to @code{match()} is a
using a third argument is a fatal error.
@item patsplit(@var{string}, @var{array} @r{[}, @var{fieldpat} @r{[}, @var{seps} @r{]} @r{]}) #
-@cindex @code{patsplit()} function (@command{gawk})
+@cindexgawkfunc{patsplit}
+@cindex split string into array
Divide
@var{string} into pieces defined by @var{fieldpat}
and store the pieces in @var{array} and the separator strings in the
@@ -15312,7 +15532,7 @@ The @code{patsplit()} function is a
it is not available.
@item split(@var{string}, @var{array} @r{[}, @var{fieldsep} @r{[}, @var{seps} @r{]} @r{]})
-@cindex @code{split()} function
+@cindexawkfunc{split}
Divide @var{string} into pieces separated by @var{fieldsep}
and store the pieces in @var{array} and the separator strings in the
@var{seps} array. The first piece is stored in
@@ -15341,7 +15561,7 @@ split("cul-de-sac", a, "-", seps)
@end example
@noindent
-@cindex strings, splitting
+@cindex strings splitting, example
splits the string @samp{cul-de-sac} into three fields using @samp{-} as the
separator. It sets the contents of the array @code{a} as follows:
@@ -15397,7 +15617,8 @@ If @var{string} does not match @var{fieldsep} at all (but is not null),
@var{string}.
@item sprintf(@var{format}, @var{expression1}, @dots{})
-@cindex @code{sprintf()} function
+@cindexawkfunc{sprintf}
+@cindex formatting strings
Return (without printing) the string that @code{printf} would
have printed out with the same arguments
(@pxref{Printf}).
@@ -15410,7 +15631,8 @@ pival = sprintf("pi = %.2f (approx.)", 22/7)
@noindent
assigns the string @w{@samp{pi = 3.14 (approx.)}} to the variable @code{pival}.
-@cindex @code{strtonum()} function (@command{gawk})
+@cindexgawkfunc{strtonum}
+@cindex convert string to number
@item strtonum(@var{str}) #
Examine @var{str} and return its numeric value. If @var{str}
begins with a leading @samp{0}, @code{strtonum()} assumes that @var{str}
@@ -15433,12 +15655,12 @@ you use the @option{--non-decimal-data} option, which isn't recommended.
Note also that @code{strtonum()} uses the current locale's decimal point
for recognizing numbers (@pxref{Locales}).
-@cindex differences in @command{awk} and @command{gawk}, @code{strtonum()} function (@command{gawk})
@code{strtonum()} is a @command{gawk} extension; it is not available
in compatibility mode (@pxref{Options}).
@item sub(@var{regexp}, @var{replacement} @r{[}, @var{target}@r{]})
-@cindex @code{sub()} function
+@cindexawkfunc{sub}
+@cindex replace in string
Search @var{target}, which is treated as a string, for the
leftmost, longest substring matched by the regular expression @var{regexp}.
Modify the entire string
@@ -15538,7 +15760,8 @@ Finally, if the @var{regexp} is not a regexp constant, it is converted into a
string, and then the value of that string is treated as the regexp to match.
@item substr(@var{string}, @var{start} @r{[}, @var{length}@r{]})
-@cindex @code{substr()} function
+@cindexawkfunc{substr}
+@cindex substring
Return a @var{length}-character-long substring of @var{string},
starting at character number @var{start}. The first character of a
string is character number one.@footnote{This is different from
@@ -15552,6 +15775,7 @@ suffix is also returned
if @var{length} is greater than the number of characters remaining
in the string, counting from character @var{start}.
+@cindex Brian Kernighan's @command{awk}
If @var{start} is less than one, @code{substr()} treats it as
if it was one. (POSIX doesn't specify what to do in this case:
Brian Kernighan's @command{awk} acts this way, and therefore @command{gawk}
@@ -15594,16 +15818,18 @@ string = substr(string, 1, 2) "CDE" substr(string, 6)
@end example
@cindex case sensitivity, converting case
-@cindex converting, case
+@cindex strings, converting letter case
@item tolower(@var{string})
-@cindex @code{tolower()} function
+@cindexawkfunc{tolower}
+@cindex convert string to lower case
Return a copy of @var{string}, with each uppercase character
in the string replaced with its corresponding lowercase character.
Nonalphabetic characters are left unchanged. For example,
@code{tolower("MiXeD cAsE 123")} returns @code{"mixed case 123"}.
@item toupper(@var{string})
-@cindex @code{toupper()} function
+@cindexawkfunc{toupper}
+@cindex convert string to upper case
Return a copy of @var{string}, with each lowercase character
in the string replaced with its corresponding uppercase character.
Nonalphabetic characters are left unchanged. For example,
@@ -15631,6 +15857,7 @@ and builds an internal copy of it that can be executed.
Then there is the runtime level, which is when @command{awk} actually scans the
replacement string to determine what to generate.
+@cindex Brian Kernighan's @command{awk}
At both levels, @command{awk} looks for a defined set of characters that
can come after a backslash. At the lexical level, it looks for the
escape sequences listed in @ref{Escape Sequences}.
@@ -15900,17 +16127,17 @@ _bigskip}
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
+Starting with version 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 years.
-When @value{PVERSION} 4.0.0 was released, the @command{gawk} maintainer
+When version 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
+and as of version 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
@@ -15995,14 +16222,16 @@ Although this makes a certain amount of sense, it can be surprising.
@node I/O Functions
@subsection Input/Output Functions
+@cindex input/output functions
The following functions relate to input/output (I/O).
Optional parameters are enclosed in square brackets ([ ]):
@table @code
@item close(@var{filename} @r{[}, @var{how}@r{]})
-@cindex @code{close()} function
+@cindexawkfunc{close}
@cindex files, closing
+@cindex close file or coprocess
Close the file @var{filename} for input or output. Alternatively, the
argument may be a shell command that was used for creating a coprocess, or
for redirecting to or from a pipe; then the coprocess or pipe is closed.
@@ -16019,7 +16248,8 @@ not matter.
which discusses this feature in more detail and gives an example.
@item fflush(@r{[}@var{filename}@r{]})
-@cindex @code{fflush()} function
+@cindexawkfunc{fflush}
+@cindex flush buffered output
Flush any buffered output associated with @var{filename}, which is either a
file opened for writing or a shell command for redirecting output to
a pipe or coprocess.
@@ -16037,11 +16267,12 @@ This is the purpose of the @code{fflush()} function---@command{gawk} also
buffers its output and the @code{fflush()} function forces
@command{gawk} to flush its buffers.
-@code{fflush()} was added to Brian Kernighan's
-version of @command{awk} in 1994.
-For over two decades, it was not part of the POSIX standard.
-As of December, 2012, it was accepted for
-inclusion into the POSIX standard.
+@cindex extensions, common@comma{} @code{fflush()} function
+@cindex Brian Kernighan's @command{awk}
+@code{fflush()} was added to Brian Kernighan's version of @command{awk} in
+April of 1992. For two decades, it was not part of the POSIX standard.
+As of December, 2012, it was accepted for inclusion into the POSIX
+standard.
See @uref{http://austingroupbugs.net/view.php?id=634, the Austin Group website}.
POSIX standardizes @code{fflush()} as follows: If there
@@ -16077,7 +16308,8 @@ or if @var{filename} is not an open file, pipe, or coprocess.
In such a case, @code{fflush()} returns @minus{}1, as well.
@item system(@var{command})
-@cindex @code{system()} function
+@cindexawkfunc{system}
+@cindex invoke shell command
@cindex interacting with other programs
Execute the operating-system
command @var{command} and then return to the @command{awk} program.
@@ -16108,7 +16340,7 @@ close("/bin/sh")
@noindent
@cindex troubleshooting, @code{system()} function
-@cindex @code{--sandbox} option, disabling @code{system()} function
+@cindex @option{--sandbox} option, disabling @code{system()} function
However, if your @command{awk}
program is interactive, @code{system()} is useful for running large
self-contained programs, such as a shell or an editor.
@@ -16144,7 +16376,7 @@ $ @kbd{awk '@{ print $1 + $2 @}'}
@print{} 2
@kbd{2 3}
@print{} 5
-@kbd{@value{CTL}-d}
+@kbd{Ctrl-d}
@end example
@noindent
@@ -16155,13 +16387,13 @@ with this example:
$ @kbd{awk '@{ print $1 + $2 @}' | cat}
@kbd{1 1}
@kbd{2 3}
-@kbd{@value{CTL}-d}
+@kbd{Ctrl-d}
@print{} 2
@print{} 5
@end example
@noindent
-Here, no output is printed until after the @kbd{@value{CTL}-d} is typed, because
+Here, no output is printed until after the @kbd{Ctrl-d} is typed, because
it is all buffered and sent down the pipe to @command{cat} in one shot.
@end sidebar
@@ -16224,6 +16456,7 @@ you would see the latter (undesirable) output.
@node Time Functions
@subsection Time Functions
+@cindex time functions
@c STARTOFRANGE tst
@cindex timestamps
@@ -16243,7 +16476,18 @@ it is the number of seconds since
1970-01-01 00:00:00 UTC, not counting leap seconds.@footnote{@xref{Glossary},
especially the entries ``Epoch'' and ``UTC.''}
All known POSIX-compliant systems support timestamps from 0 through
-@math{2^{31} - 1}, which is sufficient to represent times through
+@iftex
+@math{2^{31} - 1},
+@end iftex
+@ifnottex
+@ifnotdocbook
+2^31 - 1,
+@end ifnotdocbook
+@end ifnottex
+@docbook
+2<superscript>31</superscript> &minus; 1, @c
+@end docbook
+which is sufficient to represent times through
2038-01-19 03:14:07 UTC. Many systems support a wider range of timestamps,
including negative timestamps that represent times before the
epoch.
@@ -16262,7 +16506,8 @@ Optional parameters are enclosed in square brackets ([ ]):
@table @code
@item mktime(@var{datespec})
-@cindex @code{mktime()} function (@command{gawk})
+@cindexgawkfunc{mktime}
+@cindex generate time values
Turn @var{datespec} into a timestamp in the same form
as is returned by @code{systime()}. It is similar to the function of the
same name in ISO C. The argument, @var{datespec}, is a string of the form
@@ -16292,7 +16537,8 @@ is out of range, @code{mktime()} returns @minus{}1.
@cindex @code{PROCINFO} array
@item strftime(@r{[}@var{format} @r{[}, @var{timestamp} @r{[}, @var{utc-flag}@r{]]]})
@c STARTOFRANGE strf
-@cindex @code{strftime()} function (@command{gawk})
+@cindexgawkfunc{strftime}
+@cindex format time string
Format the time specified by @var{timestamp}
based on the contents of the @var{format} string and return the result.
It is similar to the function of the same name in ISO C.
@@ -16309,11 +16555,12 @@ The default string value is
@code{@w{"%a %b %e %H:%M:%S %Z %Y"}}. This format string produces
output that is equivalent to that of the @command{date} utility.
You can assign a new value to @code{PROCINFO["strftime"]} to
-change the default format.
+change the default format; see below for the various format directives.
@item systime()
-@cindex @code{systime()} function (@command{gawk})
+@cindexgawkfunc{systime}
@cindex timestamps
+@cindex current system time
Return the current time as the number of seconds since
the system epoch. On POSIX systems, this is the number of seconds
since 1970-01-01 00:00:00 UTC, not counting leap seconds.
@@ -16607,6 +16854,7 @@ gawk 'BEGIN @{
@node Bitwise Functions
@subsection Bit-Manipulation Functions
+@cindex bit-manipulation functions
@c STARTOFRANGE bit
@cindex bitwise, operations
@c STARTOFRANGE and
@@ -16618,8 +16866,8 @@ gawk 'BEGIN @{
@c STARTOFRANGE opbit
@cindex operations, bitwise
@quotation
-@i{I can explain it for you, but I can't understand it for you.}@*
-Anonymous
+@i{I can explain it for you, but I can't understand it for you.}
+@author Anonymous
@end quotation
Many languages provide the ability to perform @dfn{bitwise} operations
@@ -16769,27 +17017,33 @@ bitwise operations just described. They are:
@cindex @command{gawk}, bitwise operations in
@table @code
-@cindex @code{and()} function (@command{gawk})
+@cindexgawkfunc{and}
+@cindex bitwise AND
@item and(@var{v1}, @var{v2} @r{[}, @r{@dots{}]})
Return the bitwise AND of the arguments. There must be at least two.
-@cindex @code{compl()} function (@command{gawk})
+@cindexgawkfunc{compl}
+@cindex bitwise complement
@item compl(@var{val})
Return the bitwise complement of @var{val}.
-@cindex @code{lshift()} function (@command{gawk})
+@cindexgawkfunc{lshift}
+@cindex left shift
@item lshift(@var{val}, @var{count})
Return the value of @var{val}, shifted left by @var{count} bits.
-@cindex @code{or()} function (@command{gawk})
+@cindexgawkfunc{or}
+@cindex bitwise OR
@item or(@var{v1}, @var{v2} @r{[}, @r{@dots{}]})
Return the bitwise OR of the arguments. There must be at least two.
-@cindex @code{rshift()} function (@command{gawk})
+@cindexgawkfunc{rshift}
+@cindex right shift
@item rshift(@var{val}, @var{count})
Return the value of @var{val}, shifted right by @var{count} bits.
-@cindex @code{xor()} function (@command{gawk})
+@cindexgawkfunc{xor}
+@cindex bitwise XOR
@item xor(@var{v1}, @var{v2} @r{[}, @r{@dots{}]})
Return the bitwise XOR of the arguments. There must be at least two.
@end table
@@ -16881,6 +17135,7 @@ $ @kbd{gawk -f testbits.awk}
@cindex strings, converting
@cindex numbers, converting
@cindex converting, numbers to strings
+@cindex number as string of bits
The @code{bits2str()} function turns a binary number into a string.
The number @code{1} represents a binary value where the rightmost bit
is set to 1. Using this mask,
@@ -16916,7 +17171,8 @@ that traverses every element of a true multidimensional array
(@pxref{Arrays of Arrays}).
@table @code
-@cindex @code{isarray()} function (@command{gawk})
+@cindexgawkfunc{isarray}
+@cindex scalar or array
@item isarray(@var{x})
Return a true value if @var{x} is an array. Otherwise return false.
@end table
@@ -16924,7 +17180,7 @@ Return a true value if @var{x} is an array. Otherwise return false.
@code{isarray()} is meant for use in two circumstances. The first is when
traversing a multidimensional array: you can test if an element is itself
an array or not. The second is inside the body of a user-defined function
-(not discussed yet; @pxref{User-defined}), to test if a paramater is an
+(not discussed yet; @pxref{User-defined}), to test if a parameter is an
array or not.
Note, however, that using @code{isarray()} at the global level to test
@@ -16938,6 +17194,7 @@ will end up turning it into a scalar.
@subsection String-Translation Functions
@cindex @command{gawk}, string-translation functions
@cindex functions, string-translation
+@cindex string-translation functions
@cindex internationalization
@cindex @command{awk} programs, internationalizing
@@ -16949,7 +17206,8 @@ for the full story.
Optional parameters are enclosed in square brackets ([ ]):
@table @code
-@cindex @code{bindtextdomain()} function (@command{gawk})
+@cindexgawkfunc{bindtextdomain}
+@cindex set directory of message catalogs
@item bindtextdomain(@var{directory} @r{[}, @var{domain}@r{]})
Set the directory in which
@command{gawk} will look for message translation files, in case they
@@ -16962,14 +17220,15 @@ If @var{directory} is the null string (@code{""}), then
@code{bindtextdomain()} returns the current binding for the
given @var{domain}.
-@cindex @code{dcgettext()} function (@command{gawk})
+@cindexgawkfunc{dcgettext}
+@cindex translate string
@item dcgettext(@var{string} @r{[}, @var{domain} @r{[}, @var{category}@r{]]})
Return the translation of @var{string} in
text domain @var{domain} for locale category @var{category}.
The default value for @var{domain} is the current value of @code{TEXTDOMAIN}.
The default value for @var{category} is @code{"LC_MESSAGES"}.
-@cindex @code{dcngettext()} function (@command{gawk})
+@cindexgawkfunc{dcngettext}
@item dcngettext(@var{string1}, @var{string2}, @var{number} @r{[}, @var{domain} @r{[}, @var{category}@r{]]})
Return the plural form used for @var{number} of the
translation of @var{string1} and @var{string2} in text domain
@@ -16986,7 +17245,7 @@ The default value for @var{category} is @code{"LC_MESSAGES"}.
@section User-Defined Functions
@c STARTOFRANGE udfunc
-@cindex user-defined, functions
+@cindex user-defined functions
@c STARTOFRANGE funcud
@cindex functions, user-defined
Complicated @command{awk} programs can often be simplified by defining
@@ -17045,7 +17304,7 @@ have a parameter with the same name as the function itself.
In addition, according to the POSIX standard, function parameters cannot have the same
name as one of the special built-in variables
(@pxref{Built-in Variables}. Not all versions of @command{awk}
-enforce this restriction.
+enforce this restriction.)
The @var{body-of-function} consists of @command{awk} statements. It is the
most important part of the definition, because it says what the function
@@ -17072,6 +17331,7 @@ conventional to place some extra space between the arguments and
the local variables, in order to document how your function is supposed to be used.
@cindex variables, shadowing
+@cindex shadowing of variable values
During execution of the function body, the arguments and local variable
values hide, or @dfn{shadow}, any variables of the same names used in the
rest of the program. The shadowed variables are not accessible in the
@@ -17092,7 +17352,7 @@ function. When this happens, we say the function is @dfn{recursive}.
The act of a function calling itself is called @dfn{recursion}.
All the built-in functions return a value to their caller.
-User-defined functions can do also, using the @code{return} statement,
+User-defined functions can do so also, using the @code{return} statement,
which is described in detail in @ref{Return Statement}.
Many of the subsequent examples in this @value{SECTION} use
the @code{return} statement.
@@ -17130,6 +17390,7 @@ keyword @code{function} when defining a function.
@node Function Example
@subsection Function Definition Examples
+@cindex function definition example
Here is an example of a user-defined function, called @code{myprint()}, that
takes a number and prints it in a specific format:
@@ -17184,7 +17445,8 @@ Instead of having
to repeat this loop everywhere that you need to clear out
an array, your program can just call @code{delarray}.
(This guarantees portability. The use of @samp{delete @var{array}} to delete
-the contents of an entire array is a nonstandard extension.)
+the contents of an entire array is a recent@footnote{Late in 2012.}
+addition to the POSIX standard.)
The following is an example of a recursive function. It takes a string
as an input parameter and returns the string in backwards order.
@@ -17240,7 +17502,10 @@ function ctime(ts, format)
@subsection Calling User-Defined Functions
@c STARTOFRANGE fudc
-This section describes how to call a user-defined function.
+@cindex functions, user-defined, calling
+@dfn{Calling a function} means causing the function to run and do its job.
+A function call is an expression and its value is the value returned by
+the function.
@menu
* Calling A Function:: Don't use spaces.
@@ -17251,11 +17516,6 @@ This section describes how to call a user-defined function.
@node Calling A Function
@subsubsection Writing A Function Call
-@cindex functions, user-defined, calling
-@dfn{Calling a function} means causing the function to run and do its job.
-A function call is an expression and its value is the value returned by
-the function.
-
A function call consists of the function name followed by the arguments
in parentheses. @command{awk} expressions are what you write in the
call for the arguments. Each time the call is executed, these
@@ -17279,8 +17539,8 @@ an error.
@node Variable Scope
@subsubsection Controlling Variable Scope
-@cindex local variables
-@cindex variables, local
+@cindex local variables, in a function
+@cindex variables, local to a function
There is no way to make a variable local to a @code{@{ @dots{} @}} block in
@command{awk}, but you can make a variable local to a function. It is
good practice to do so whenever a variable is needed only in that
@@ -17725,7 +17985,7 @@ character:
@example
the_func = "sum"
-result = @@the_func() # calls the `sum' function
+result = @@the_func() # calls the sum() function
@end example
Here is a full program that processes the previously shown data,
@@ -17846,8 +18106,9 @@ We can do something similar using @command{gawk}, like this:
@ignore
@c file eg/lib/quicksort.awk
#
-# Arnold Robbins, arnold@skeeve.com, Public Domain
+# Arnold Robbins, arnold@@skeeve.com, Public Domain
# January 2009
+
@c endfile
@end ignore
@@ -17920,7 +18181,7 @@ or equal to), which yields data sorted in descending order.
Next comes a sorting function. It is parameterized with the starting and
ending field numbers and the comparison function. It builds an array with
-the data and calls @code{quicksort} appropriately, and then formats the
+the data and calls @code{quicksort()} appropriately, and then formats the
results as a single string:
@example
@@ -18058,9 +18319,11 @@ it allows you to encapsulate algorithms and program tasks in a single
place. It simplifies programming, making program development more
manageable, and making programs more readable.
-In their seminal 1976 book, @cite{Software Tools}@footnote{Sadly, over 35
+@cindex Kernighan, Brian
+@cindex Plauger, P.J.@:
+In their seminal 1976 book, @cite{Software Tools},@footnote{Sadly, over 35
years later, many of the lessons taught by this book have yet to be
-learned by a vast number of practicing programmers.}, Brian Kernighan
+learned by a vast number of practicing programmers.} Brian Kernighan
and P.J.@: Plauger wrote:
@quotation
@@ -18187,7 +18450,7 @@ with the user's program.
@cindex underscore (@code{_}), in names of private variables
In addition, several of the library functions use a prefix that helps
indicate what function or set of functions use the variables---for example,
-@code{_pw_byname} in the user database routines
+@code{_pw_byname()} in the user database routines
(@pxref{Passwd Functions}).
This convention is recommended, since it even further decreases the
chance of inadvertent conflict among variable names. Note that this
@@ -18206,7 +18469,7 @@ The leading capital letter indicates that it is global, while the fact that
the variable name is not all capital letters indicates that the variable is
not one of @command{awk}'s built-in variables, such as @code{FS}.
-@cindex @code{--dump-variables} option
+@cindex @option{--dump-variables} option, using for library functions
It is also important that @emph{all} variables in library
functions that do not need to save state are, in fact, declared
local.@footnote{@command{gawk}'s @option{--dump-variables} command-line
@@ -18259,6 +18522,7 @@ programming use.
vice versa.
* Join Function:: A function to join an array into a string.
* Getlocaltime Function:: A function to get formatted times.
+* Readfile Function:: A function to read an entire file at once.
@end menu
@node Strtonum Function
@@ -18474,7 +18738,7 @@ An @code{END} rule is automatically added
to the program calling @code{assert()}. Normally, if a program consists
of just a @code{BEGIN} rule, the input files and/or standard input are
not read. However, now that the program has an @code{END} rule, @command{awk}
-attempts to read the input @value{DF}s or standard input
+attempts to read the input data files or standard input
(@pxref{Using BEGIN/END}),
most likely causing the program to hang as it waits for input.
@@ -18500,9 +18764,9 @@ with an @code{exit} statement.
The way @code{printf} and @code{sprintf()}
(@pxref{Printf})
perform rounding often depends upon the system's C @code{sprintf()}
-subroutine. On many machines, @code{sprintf()} rounding is ``unbiased,''
-which means it doesn't always round a trailing @samp{.5} up, contrary
-to naive expectations. In unbiased rounding, @samp{.5} rounds to even,
+subroutine. On many machines, @code{sprintf()} rounding is @dfn{unbiased},
+which means it doesn't always round a trailing .5 up, contrary
+to naive expectations. In unbiased rounding, .5 rounds to even,
rather than always up, so 1.5 rounds to 2 but 4.5 rounds to 4. This means
that if you are using a format that does rounding (e.g., @code{"%.0f"}),
you should check what your system does. The following function does
@@ -18551,7 +18815,7 @@ function round(x, ival, aval, fraction)
@c don't include test harness in the file that gets installed
# test harness
-@{ print $0, round($0) @}
+# @{ print $0, round($0) @}
@end example
@node Cliff Random Function
@@ -18618,6 +18882,7 @@ reason to build them into the @command{awk} interpreter:
@cindex @code{ord()} user-defined function
@cindex @code{chr()} user-defined function
+@cindex @code{_ord_init()} user-defined function
@example
@c file eg/lib/ord.awk
# ord.awk --- do ord and chr
@@ -18664,8 +18929,9 @@ function _ord_init( low, high, i, t)
@cindex character sets (machine character encodings)
@cindex ASCII
@cindex EBCDIC
+@cindex Unicode
@cindex mark parity
-Some explanation of the numbers used by @code{chr} is worthwhile.
+Some explanation of the numbers used by @code{_ord_init()} is worthwhile.
The most prominent character set in use today is ASCII.@footnote{This
is changing; many systems use Unicode, a very large character set
that includes ASCII as a subset. On systems with full Unicode support,
@@ -18676,7 +18942,7 @@ Although an
defines characters that use the values from 0 to 127.@footnote{ASCII
has been extended in many countries to use the values from 128 to 255
for country-specific characters. If your system uses these extensions,
-you can simplify @code{_ord_init} to loop from 0 to 255.}
+you can simplify @code{_ord_init()} to loop from 0 to 255.}
In the now distant past,
at least one minicomputer manufacturer
@c Pr1me, blech
@@ -18883,17 +19149,92 @@ A more general design for the @code{getlocaltime()} function would have
allowed the user to supply an optional timestamp value to use instead
of the current time.
+@node Readfile Function
+@subsection Reading A Whole File At Once
+
+Often, it is convenient to have the entire contents of a file available
+in memory as a single string. A straightforward but naive way to
+do that might be as follows:
+
+@example
+function readfile(file, tmp, contents)
+@{
+ if ((getline tmp < file) < 0)
+ return
+
+ contents = tmp
+ while (getline tmp < file) > 0)
+ contents = contents RT tmp
+
+ close(file)
+ return contents
+@}
+@end example
+
+This function reads from @code{file} one record at a time, building
+up the full contents of the file in the local variable @code{contents}.
+It works, but is not necessarily efficient.
+
+The following function, based on a suggestion by Denis Shirokov,
+reads the entire contents of the named file in one shot:
+
+@cindex @code{readfile()} user-defined function
+@example
+@c file eg/lib/readfile.awk
+# readfile.awk --- read an entire file at once
+@c endfile
+@ignore
+@c file eg/lib/readfile.awk
+#
+# Original idea by Denis Shirokov, cosmogen@@gmail.com, April 2013
+#
+@c endfile
+@end ignore
+@c file eg/lib/readfile.awk
+
+function readfile(file, tmp, save_rs)
+@{
+ save_rs = RS
+ RS = "^$"
+ getline tmp < file
+ close(file)
+ RS = save_rs
+
+ return tmp
+@}
+@c endfile
+@end example
+
+It works by setting @code{RS} to @samp{^$}, a regular expression that
+will never match if the file has contents. @command{gawk} reads data from
+the file into @code{tmp} attempting to match @code{RS}. The match fails
+after each read, but fails quickly, such that @command{gawk} fills
+@code{tmp} with the entire contents of the file.
+(@xref{Records}, for information on @code{RT} and @code{RS}.)
+
+In the case that @code{file} is empty, the return value is the null
+string. Thus calling code may use something like:
+
+@example
+contents = readfile("/some/path")
+if (length(contents) == 0)
+ # file was empty @dots{}
+@end example
+
+This tests the result to see if it is empty or not. An equivalent
+test would be @samp{contents == ""}.
+
@node Data File Management
-@section @value{DDF} Management
+@section Data File Management
@c STARTOFRANGE dataf
@cindex files, managing
@c STARTOFRANGE libfdataf
-@cindex libraries of @command{awk} functions, managing, @value{DF}s
+@cindex libraries of @command{awk} functions, managing, data files
@c STARTOFRANGE flibdataf
-@cindex functions, library, managing @value{DF}s
+@cindex functions, library, managing data files
This @value{SECTION} presents functions that are useful for managing
-command-line @value{DF}s.
+command-line data files.
@menu
* Filetrans Function:: A function for handling data file transitions.
@@ -18904,16 +19245,16 @@ command-line @value{DF}s.
@end menu
@node Filetrans Function
-@subsection Noting @value{DDF} Boundaries
+@subsection Noting Data File Boundaries
-@cindex files, managing, @value{DF} boundaries
+@cindex files, managing, data file boundaries
@cindex files, initialization and cleanup
The @code{BEGIN} and @code{END} rules are each executed exactly once at
the beginning and end of your @command{awk} program, respectively
(@pxref{BEGIN/END}).
We (the @command{gawk} authors) once had a user who mistakenly thought that the
-@code{BEGIN} rule is executed at the beginning of each @value{DF} and the
-@code{END} rule is executed at the end of each @value{DF}.
+@code{BEGIN} rule is executed at the beginning of each data file and the
+@code{END} rule is executed at the end of each data file.
When informed
that this was not the case, the user requested that we add new special
@@ -18924,7 +19265,7 @@ Adding these special patterns to @command{gawk} wasn't necessary;
the job can be done cleanly in @command{awk} itself, as illustrated
by the following library program.
It arranges to call two user-supplied functions, @code{beginfile()} and
-@code{endfile()}, at the beginning and end of each @value{DF}.
+@code{endfile()}, at the beginning and end of each data file.
Besides solving the problem in only nine(!) lines of code, it does so
@emph{portably}; this works with any implementation of @command{awk}:
@@ -18955,17 +19296,17 @@ This file must be loaded before the user's ``main'' program, so that the
rule it supplies is executed first.
This rule relies on @command{awk}'s @code{FILENAME} variable that
-automatically changes for each new @value{DF}. The current @value{FN} is
+automatically changes for each new data file. The current file name is
saved in a private variable, @code{_oldfilename}. If @code{FILENAME} does
-not equal @code{_oldfilename}, then a new @value{DF} is being processed and
+not equal @code{_oldfilename}, then a new data file is being processed and
it is necessary to call @code{endfile()} for the old file. Because
@code{endfile()} should only be called if a file has been processed, the
program first checks to make sure that @code{_oldfilename} is not the null
-string. The program then assigns the current @value{FN} to
+string. The program then assigns the current file name to
@code{_oldfilename} and calls @code{beginfile()} for the file.
Because, like all @command{awk} variables, @code{_oldfilename} is
initialized to the null string, this rule executes correctly even for the
-first @value{DF}.
+first data file.
The program also supplies an @code{END} rule to do the final processing for
the last file. Because this @code{END} rule comes before any @code{END} rules
@@ -18974,7 +19315,7 @@ again the value of multiple @code{BEGIN} and @code{END} rules should be clear.
@cindex @code{beginfile()} user-defined function
@cindex @code{endfile()} user-defined function
-If the same @value{DF} occurs twice in a row on the command line, then
+If the same data file occurs twice in a row on the command line, then
@code{endfile()} and @code{beginfile()} are not executed at the end of the
first pass and at the beginning of the second pass.
The following version solves the problem:
@@ -19089,12 +19430,12 @@ The @code{rewind()} function also relies on the @code{nextfile} keyword
(@pxref{Nextfile Statement}).
@node File Checking
-@subsection Checking for Readable @value{DDF}s
+@subsection Checking for Readable Data Files
-@cindex troubleshooting, readable @value{DF}s
-@cindex readable @value{DF}s@comma{} checking
+@cindex troubleshooting, readable data files
+@cindex readable data files@comma{} checking
@cindex files, skipping
-Normally, if you give @command{awk} a @value{DF} that isn't readable,
+Normally, if you give @command{awk} a data file that isn't readable,
it stops with a fatal error. There are times when you
might want to just ignore such files and keep going. You can
do this by prepending the following program to your @command{awk}
@@ -19143,15 +19484,15 @@ This is a by-product of @command{awk}'s implicit
read-a-record-and-match-against-the-rules loop: when @command{awk}
tries to read a record from an empty file, it immediately receives an
end of file indication, closes the file, and proceeds on to the next
-command-line @value{DF}, @emph{without} executing any user-level
+command-line data file, @emph{without} executing any user-level
@command{awk} program code.
Using @command{gawk}'s @code{ARGIND} variable
(@pxref{Built-in Variables}), it is possible to detect when an empty
-@value{DF} has been skipped. Similar to the library file presented
+data file has been skipped. Similar to the library file presented
in @ref{Filetrans Function}, the following library file calls a function named
@code{zerofile()} that the user must provide. The arguments passed are
-the @value{FN} and the position in @code{ARGV} where it was found:
+the file name and the position in @code{ARGV} where it was found:
@cindex @code{zerofile.awk} program
@example
@@ -19239,15 +19580,15 @@ END @{
@end ignore
@node Ignoring Assigns
-@subsection Treating Assignments as @value{FFN}s
+@subsection Treating Assignments as File Names
@cindex assignments as filenames
@cindex filenames, assignments as
Occasionally, you might not want @command{awk} to process command-line
variable assignments
(@pxref{Assignment Options}).
-In particular, if you have a @value{FN} that contain an @samp{=} character,
-@command{awk} treats the @value{FN} as an assignment, and does not process it.
+In particular, if you have a file name that contains an @samp{=} character,
+@command{awk} treats the file name as an assignment, and does not process it.
Some users have suggested an additional command-line option for @command{gawk}
to disable command-line assignments. However, some simple programming with
@@ -19291,7 +19632,7 @@ awk -v No_command_assign=1 -f noassign.awk -f yourprog.awk *
The function works by looping through the arguments.
It prepends @samp{./} to
any argument that matches the form
-of a variable assignment, turning that argument into a @value{FN}.
+of a variable assignment, turning that argument into a file name.
The use of @code{No_command_assign} allows you to disable command-line
assignments at invocation time, by giving the variable a true value.
@@ -19458,7 +19799,7 @@ The discussion that follows walks through the code a bit at a time:
# <c> a character representing the current option
# Private Data:
-# _opti -- index in multi-flag option, e.g., -abc
+# _opti -- index in multiflag option, e.g., -abc
@c endfile
@end example
@@ -19650,7 +19991,7 @@ After @code{getopt()} is through, it is the responsibility of the user level
code to
clear out all the elements of @code{ARGV} from 1 to @code{Optind},
so that @command{awk} does not try to process the command-line options
-as @value{FN}s.
+as file names.
@end quotation
Several of the sample programs presented in
@@ -19667,7 +20008,7 @@ use @code{getopt()} to process their arguments.
@c STARTOFRANGE libfudata
@cindex libraries of @command{awk} functions, user database, reading
@c STARTOFRANGE flibudata
-@cindex functions, library, user database, reading
+@cindex functions, library, user database@comma{} reading
@c STARTOFRANGE udatar
@cindex user database@comma{} reading
@c STARTOFRANGE dataur
@@ -19916,7 +20257,7 @@ from anywhere within a user's program, and the user may have his
or her
own way of splitting records and fields.
-@cindex @code{PROCINFO} array
+@cindex @code{PROCINFO} array, testing the field splitting
The @code{using_fw} variable checks @code{PROCINFO["FS"]}, which
is @code{"FIELDWIDTHS"} if field splitting is being done with
@code{FIELDWIDTHS}. This makes it possible to restore the correct
@@ -19925,7 +20266,7 @@ field-splitting mechanism later. The test can only be true for
or on some other @command{awk} implementation.
The code that checks for using @code{FPAT}, using @code{using_fpat}
-and @code{PROCINFO["FS"]} is similar.
+and @code{PROCINFO["FS"]}, is similar.
The main part of the function uses a loop to read database lines, split
the line into fields, and then store the line into each array as necessary.
@@ -19955,10 +20296,9 @@ function getpwnam(name)
@end example
@cindex @code{getpwuid()} function (C library)
-Similarly,
-the @code{getpwuid} function takes a user ID number argument. If that
-user number is in the database, it returns the appropriate line. Otherwise, it
-returns the null string:
+Similarly, the @code{getpwuid()} function takes a user ID number
+argument. If that user number is in the database, it returns the
+appropriate line. Otherwise, it returns the null string:
@cindex @code{getpwuid()} user-defined function
@example
@@ -20035,12 +20375,12 @@ uses these functions.
@c STARTOFRANGE libfgdata
@cindex libraries of @command{awk} functions, group database, reading
@c STARTOFRANGE flibgdata
-@cindex functions, library, group database, reading
+@cindex functions, library, group database@comma{} reading
@c STARTOFRANGE gdatar
@cindex group database, reading
@c STARTOFRANGE datagr
@cindex database, group, reading
-@cindex @code{PROCINFO} array
+@cindex @code{PROCINFO} array, and group membership
@cindex @code{getgrent()} function (C library)
@cindex @code{getgrent()} user-defined function
@cindex groups@comma{} information about
@@ -20462,7 +20802,7 @@ index and value, use the indirect function call syntax
and the value.
When calling @code{walk_array()}, you would pass the name of a user-defined
-function that expects to receive and index and a value, and then processes
+function that expects to receive an index and a value, and then processes
the element.
@@ -20524,7 +20864,7 @@ awk -f @var{program} -- @var{options} @var{files}
@noindent
Here, @var{program} is the name of the @command{awk} program (such as
@file{cut.awk}), @var{options} are any command-line options for the
-program that start with a @samp{-}, and @var{files} are the actual @value{DF}s.
+program that start with a @samp{-}, and @var{files} are the actual data files.
If your system supports the @samp{#!} executable interpreter mechanism
(@pxref{Executable Scripts}),
@@ -20729,7 +21069,7 @@ spaces. Also remember that after @code{getopt()} is through
we have to
clear out all the elements of @code{ARGV} from 1 to @code{Optind},
so that @command{awk} does not try to process the command-line options
-as @value{FN}s.
+as file names.
After dealing with the command-line options, the program verifies that the
options make sense. Only one or the other of @option{-c} and @option{-f}
@@ -20816,7 +21156,7 @@ complete field list, including filler fields:
@example
@c file eg/prog/cut.awk
-function set_charlist( field, i, j, f, g, t,
+function set_charlist( field, i, j, f, g, n, m, t,
filler, last, len)
@{
field = 1 # count total fields
@@ -20913,6 +21253,7 @@ of picking the input line apart by characters.
@cindex searching, files for regular expressions
@c STARTOFRANGE fsregexp
@cindex files, searching for regular expressions
+@c STARTOFRANGE egrep
@cindex @command{egrep} utility
The @command{egrep} utility searches files for patterns. It uses regular
expressions that are almost identical to those available in @command{awk}
@@ -20925,8 +21266,8 @@ egrep @r{[} @var{options} @r{]} '@var{pattern}' @var{files} @dots{}
The @var{pattern} is a regular expression. In typical usage, the regular
expression is quoted to prevent the shell from expanding any of the
-special characters as @value{FN} wildcards. Normally, @command{egrep}
-prints the lines that matched. If multiple @value{FN}s are provided on
+special characters as file name wildcards. Normally, @command{egrep}
+prints the lines that matched. If multiple file names are provided on
the command line, each output line is preceded by the name of the file
and a colon.
@@ -21017,7 +21358,7 @@ pattern is supplied with @option{-e}, the first nonoption on the
command line is used. The @command{awk} command-line arguments up to @code{ARGV[Optind]}
are cleared, so that @command{awk} won't try to process them as files. If no
files are specified, the standard input is used, and if multiple files are
-specified, we make sure to note this so that the @value{FN}s can precede the
+specified, we make sure to note this so that the file names can precede the
matched lines in the output:
@example
@@ -21115,9 +21456,9 @@ A number of additional tests are made, but they are only done if we
are not counting lines. First, if the user only wants exit status
(@code{no_print} is true), then it is enough to know that @emph{one}
line in this file matched, and we can skip on to the next file with
-@code{nextfile}. Similarly, if we are only printing @value{FN}s, we can
-print the @value{FN}, and then skip to the next file with @code{nextfile}.
-Finally, each line is printed, with a leading @value{FN} and colon
+@code{nextfile}. Similarly, if we are only printing file names, we can
+print the file name, and then skip to the next file with @code{nextfile}.
+Finally, each line is printed, with a leading file name and colon
if necessary:
@cindex @code{!} (exclamation point), @code{!} operator
@@ -21198,12 +21539,14 @@ or not.
@c ENDOFRANGE regexps
@c ENDOFRANGE sfregexp
@c ENDOFRANGE fsregexp
+@c ENDOFRANGE egrep
@node Id Program
@subsection Printing out User Information
@cindex printing, user information
@cindex users, information about, printing
+@c STARTOFRANGE id
@cindex @command{id} utility
The @command{id} utility lists a user's real and effective user ID numbers,
real and effective group ID numbers, and the user's group set, if any.
@@ -21216,7 +21559,7 @@ $ @kbd{id}
@print{} uid=500(arnold) gid=500(arnold) groups=6(disk),7(lp),19(floppy)
@end example
-@cindex @code{PROCINFO} array
+@cindex @code{PROCINFO} array, and user and group ID numbers
This information is part of what is provided by @command{gawk}'s
@code{PROCINFO} array (@pxref{Built-in Variables}).
However, the @command{id} utility provides a more palatable output than just
@@ -21317,7 +21660,6 @@ BEGIN \
@c endfile
@end example
-@cindex @code{in} operator
The test in the @code{for} loop is worth noting.
Any supplementary groups in the @code{PROCINFO} array have the
indices @code{"group1"} through @code{"group@var{N}"} for some
@@ -21327,7 +21669,7 @@ there are.
This loop works by starting at one, concatenating the value with
@code{"group"}, and then using @code{in} to see if that value is
-in the array. Eventually, @code{i} is incremented past
+in the array (@pxref{Reference to Elements}). Eventually, @code{i} is incremented past
the last group in the array and the loop exits.
The loop is also correct if there are @emph{no} supplementary
@@ -21340,6 +21682,7 @@ The POSIX version of @command{id} takes arguments that control which
information is printed. Modify this version to accept the same
arguments and perform in the same way.
@end ignore
+@c ENDOFRANGE id
@node Split Program
@subsection Splitting a Large File into Pieces
@@ -21348,6 +21691,7 @@ arguments and perform in the same way.
@c STARTOFRANGE filspl
@cindex files, splitting
+@c STARTOFRANGE split
@cindex @code{split} utility
The @command{split} program splits large text files into smaller pieces.
Usage is as follows:@footnote{This is the traditional usage. The
@@ -21365,7 +21709,7 @@ number of lines in each file, supply a number on the command line
preceded with a minus; e.g., @samp{-500} for files with 500 lines in them
instead of 1000. To change the name of the output files to something like
@file{myfileaa}, @file{myfileab}, and so on, supply an additional
-argument that specifies the @value{FN} prefix.
+argument that specifies the file name prefix.
Here is a version of @command{split} in @command{awk}. It uses the
@code{ord()} and @code{chr()} functions presented in
@@ -21375,8 +21719,8 @@ The program first sets its defaults, and then tests to make sure there are
not too many arguments. It then looks at each argument in turn. The
first argument could be a minus sign followed by a number. If it is, this happens
to look like a negative number, so it is made positive, and that is the
-count of lines. The data @value{FN} is skipped over and the final argument
-is used as the prefix for the output @value{FN}s:
+count of lines. The data file name is skipped over and the final argument
+is used as the prefix for the output file names:
@cindex @code{split.awk} program
@example
@@ -21425,7 +21769,7 @@ BEGIN @{
The next rule does most of the work. @code{tcount} (temporary count) tracks
how many lines have been printed to the output file so far. If it is greater
than @code{count}, it is time to close the current file and start a new one.
-@code{s1} and @code{s2} track the current suffixes for the @value{FN}. If
+@code{s1} and @code{s2} track the current suffixes for the file name. If
they are both @samp{z}, the file is just too big. Otherwise, @code{s1}
moves to the next letter in the alphabet and @code{s2} starts over again at
@samp{a}:
@@ -21491,12 +21835,14 @@ which isn't true for EBCDIC systems.
@c Exercise: Fix these problems.
@c BFD...
@c ENDOFRANGE filspl
+@c ENDOFRANGE split
@node Tee Program
@subsection Duplicating Output into Multiple Files
@cindex files, multiple@comma{} duplicating output into
@cindex output, duplicating into files
+@c STARTOFRANGE tee
@cindex @code{tee} utility
The @code{tee} program is known as a ``pipe fitting.'' @code{tee} copies
its standard input to its standard output and also duplicates it to the
@@ -21513,13 +21859,13 @@ The @code{BEGIN} rule first makes a copy of all the command-line arguments
into an array named @code{copy}.
@code{ARGV[0]} is not copied, since it is not needed.
@code{tee} cannot use @code{ARGV} directly, since @command{awk} attempts to
-process each @value{FN} in @code{ARGV} as input data.
+process each file name in @code{ARGV} as input data.
@cindex flag variables
If the first argument is @option{-a}, then the flag variable
@code{append} is set to true, and both @code{ARGV[1]} and
@code{copy[1]} are deleted. If @code{ARGC} is less than two, then no
-@value{FN}s were supplied and @code{tee} prints a usage message and exits.
+file names were supplied and @code{tee} prints a usage message and exits.
Finally, @command{awk} is forced to read the standard input by setting
@code{ARGV[1]} to @code{"-"} and @code{ARGC} to two:
@@ -21611,6 +21957,7 @@ END \
@}
@c endfile
@end example
+@c ENDOFRANGE tee
@node Uniq Program
@subsection Printing Nonduplicated Lines of Text
@@ -21621,6 +21968,7 @@ END \
@cindex printing, unduplicated lines of text
@c STARTOFRANGE tpul
@cindex text@comma{} printing, unduplicated lines of
+@c STARTOFRANGE uniq
@cindex @command{uniq} utility
The @command{uniq} utility reads sorted lines of data on its standard
input, and by default removes duplicate lines. In other words, it only
@@ -21872,6 +22220,7 @@ END @{
@end example
@c ENDOFRANGE prunt
@c ENDOFRANGE tpul
+@c ENDOFRANGE uniq
@node Wc Program
@subsection Counting Things
@@ -21888,6 +22237,7 @@ END @{
@cindex characters, counting
@c STARTOFRANGE lico
@cindex lines, counting
+@c STARTOFRANGE wc
@cindex @command{wc} utility
The @command{wc} (word count) utility counts lines, words, and characters in
one or more input files. Its usage is as follows:
@@ -21981,7 +22331,7 @@ BEGIN @{
@end example
The @code{beginfile()} function is simple; it just resets the counts of lines,
-words, and characters to zero, and saves the current @value{FN} in
+words, and characters to zero, and saves the current file name in
@code{fname}:
@example
@@ -22003,7 +22353,7 @@ you will see that
@code{FNR} has already been reset by the time
@code{endfile()} is called.} It then prints out those numbers
for the file that was just read. It relies on @code{beginfile()} to reset the
-numbers for the following @value{DF}:
+numbers for the following data file:
@c FIXME: ONE DAY: make the above footnote an exercise,
@c instead of giving away the answer.
@@ -22070,6 +22420,7 @@ END @{
@c ENDOFRANGE lico
@c ENDOFRANGE woco
@c ENDOFRANGE chco
+@c ENDOFRANGE wc
@c ENDOFRANGE posimawk
@node Miscellaneous Programs
@@ -22171,8 +22522,34 @@ word, comparing it to the previous one:
@cindex insomnia, cure for
@cindex Robbins, Arnold
@quotation
-@i{Nothing cures insomnia like a ringing alarm clock.}@*
-Arnold Robbins
+@i{Nothing cures insomnia like a ringing alarm clock.}
+@author Arnold Robbins
+@end quotation
+@cindex Quanstrom, Erik
+@ignore
+Date: Sat, 15 Feb 2014 16:47:09 -0500
+Subject: Re: 9atom install question
+Message-ID: <l2jcvx6j6mey60xnrkb0hhob.1392500829294@email.android.com>
+From: Erik Quanstrom <quanstro@quanstro.net>
+To: Aharon Robbins <arnold@skeeve.com>
+
+yes.
+
+- erik
+
+Aharon Robbins <arnold@skeeve.com> wrote:
+
+>> sleep is for web developers.
+>
+>Can I quote you, in the gawk manual?
+>
+>Thanks,
+>
+>Arnold
+@end ignore
+@quotation
+@i{Sleep is for web developers.}
+@author Erik Quanstrom
@end quotation
@c STARTOFRANGE tialarm
@@ -22338,6 +22715,7 @@ seconds are necessary:
@c STARTOFRANGE chtra
@cindex characters, transliterating
+@c STARTOFRANGE tr
@cindex @command{tr} utility
The system @command{tr} utility transliterates characters. For example, it is
often used to map uppercase letters into lowercase for further processing:
@@ -22348,12 +22726,10 @@ often used to map uppercase letters into lowercase for further processing:
@command{tr} requires two lists of characters.@footnote{On some older
systems,
-@ifset ORA
including Solaris,
-@end ifset
@command{tr} may require that the lists be written as
range expressions enclosed in square brackets (@samp{[a-z]}) and quoted,
-to prevent the shell from attempting a @value{FN} expansion. This is
+to prevent the shell from attempting a file name expansion. This is
not a feature.} When processing the input, the first character in the
first list is replaced with the first character in the second list,
the second character in the first list is replaced with the second
@@ -22488,6 +22864,7 @@ An obvious improvement to this program would be to set up the
assumes that the ``from'' and ``to'' lists
will never change throughout the lifetime of the program.
@c ENDOFRANGE chtra
+@c ENDOFRANGE tr
@node Labels Program
@subsection Printing Mailing Labels
@@ -22547,6 +22924,7 @@ that there are two blank lines at the top and two blank lines at the bottom.
The @code{END} rule arranges to flush the final page of labels; there may
not have been an even multiple of 20 labels in the data:
+@c STARTOFRANGE labels
@cindex @code{labels.awk} program
@example
@c file eg/prog/labels.awk
@@ -22614,6 +22992,7 @@ END \
@end example
@c ENDOFRANGE prml
@c ENDOFRANGE mlprint
+@c ENDOFRANGE labels
@node Word Sorting
@subsection Generating Word-Usage Counts
@@ -22680,6 +23059,7 @@ to remove punctuation characters. Finally, we solve the third problem
by using the system @command{sort} utility to process the output of the
@command{awk} script. Here is the new version of the program:
+@c STARTOFRANGE wordfreq
@cindex @code{wordfreq.awk} program
@example
@c file eg/prog/wordfreq.awk
@@ -22741,6 +23121,7 @@ have true pipes at the command-line (or batch-file) level.
See the general operating system documentation for more information on how
to use the @command{sort} program.
@c ENDOFRANGE worus
+@c ENDOFRANGE wordfreq
@node History Sorting
@subsection Removing Duplicates from Unsorted Text
@@ -22751,7 +23132,7 @@ The @command{uniq} program
(@pxref{Uniq Program}),
removes duplicate lines from @emph{sorted} data.
-Suppose, however, you need to remove duplicate lines from a @value{DF} but
+Suppose, however, you need to remove duplicate lines from a data file but
that you want to preserve the order the lines are in. A good example of
this might be a shell history file. The history file keeps a copy of all
the commands you have entered, and it is not unusual to repeat a command
@@ -22770,6 +23151,7 @@ Each element of @code{lines} is a unique command, and the indices of
The @code{END} rule simply prints out the lines, in order:
@cindex Rakitzis, Byron
+@c STARTOFRANGE histsort
@cindex @code{histsort.awk} program
@example
@c file eg/prog/histsort.awk
@@ -22812,6 +23194,7 @@ print data[lines[i]], lines[i]
This works because @code{data[$0]} is incremented each time a line is
seen.
@c ENDOFRANGE lidu
+@c ENDOFRANGE histsort
@node Extract Program
@subsection Extracting Programs from Texinfo Source Files
@@ -22843,7 +23226,8 @@ printed and online documentation.
@ifnotinfo
Texinfo is fully documented in the book
@cite{Texinfo---The GNU Documentation Format},
-available from the Free Software Foundation.
+available from the Free Software Foundation,
+and also available @uref{http://www.gnu.org/software/texinfo/manual/texinfo/, online}.
@end ifnotinfo
@ifinfo
The Texinfo language is described fully, starting with
@@ -22887,7 +23271,7 @@ Lines containing @samp{@@group} and @samp{@@end group} are simply removed.
(@pxref{Join Function}).
The example programs in the online Texinfo source for @cite{@value{TITLE}}
-(@file{gawk.texi}) have all been bracketed inside @samp{file} and
+(@file{gawktexi.in}) have all been bracketed inside @samp{file} and
@samp{endfile} lines. The @command{gawk} distribution uses a copy of
@file{extract.awk} to extract the sample programs and install many
of them in a standard directory where @command{gawk} can find them.
@@ -22921,6 +23305,7 @@ The first rule handles calling @code{system()}, checking that a command is
given (@code{NF} is at least three) and also checking that the command
exits with a zero exit status, signifying OK:
+@c STARTOFRANGE extract
@cindex @code{extract.awk} program
@example
@c file eg/prog/extract.awk
@@ -22970,7 +23355,7 @@ screen.
@end ifnottex
The second rule handles moving data into files. It verifies that a
-@value{FN} is given in the directive. If the file named is not the
+file name is given in the directive. If the file named is not the
current file, then the current file is closed. Keeping the current file
open until a new file is encountered allows the use of the @samp{>}
redirection for printing the contents, keeping open file management
@@ -23052,7 +23437,7 @@ subsequent output is appended to the file
(@pxref{Redirection}).
This makes it easy to mix program text and explanatory prose for the same
sample source file (as has been done here!) without any hassle. The file is
-only closed when a new data @value{FN} is encountered or at the end of the
+only closed when a new data file name is encountered or at the end of the
input file.
Finally, the function @code{@w{unexpected_eof()}} prints an appropriate
@@ -23079,6 +23464,7 @@ END @{
@end example
@c ENDOFRANGE texse
@c ENDOFRANGE fitex
+@c ENDOFRANGE extract
@node Simple Sed
@subsection A Simple Stream Editor
@@ -23104,10 +23490,11 @@ Here, @samp{s/old/new/g} tells @command{sed} to look for the regexp
The following program, @file{awksed.awk}, accepts at least two command-line
arguments: the pattern to look for and the text to replace it with. Any
-additional arguments are treated as data @value{FN}s to process. If none
+additional arguments are treated as data file names to process. If none
are provided, the standard input is used:
@cindex Brennan, Michael
+@c STARTOFRANGE awksed
@cindex @command{awksed.awk} program
@c @cindex simple stream editor
@c @cindex stream editor, simple
@@ -23177,7 +23564,7 @@ The @code{BEGIN} rule handles the setup, checking for the right number
of arguments and calling @code{usage()} if there is a problem. Then it sets
@code{RS} and @code{ORS} from the command-line arguments and sets
@code{ARGV[1]} and @code{ARGV[2]} to the null string, so that they are
-not treated as @value{FN}s
+not treated as file names
(@pxref{ARGC and ARGV}).
The @code{usage()} function prints an error message and exits.
@@ -23204,6 +23591,7 @@ Exercise: what are the advantages and disadvantages of this version versus sed?
Others?
@end ignore
+@c ENDOFRANGE awksed
@node Igawk Program
@subsection An Easy Way to Use Library Functions
@@ -23275,7 +23663,7 @@ Literal text, provided with @option{--source} or @option{--source=}. This
text is just appended directly.
@item
-Source @value{FN}s, provided with @option{-f}. We use a neat trick and append
+Source file names, provided with @option{-f}. We use a neat trick and append
@samp{@@include @var{filename}} to the shell variable's contents. Since the file-inclusion
program works the way @command{gawk} does, this gets the text
of the file included into the program at the correct point.
@@ -23288,7 +23676,7 @@ shell variable.
@item
Run the expanded program with @command{gawk} and any other original command-line
-arguments that the user supplied (such as the data @value{FN}s).
+arguments that the user supplied (such as the data file names).
@end enumerate
This program uses shell variables extensively: for storing command-line arguments,
@@ -23319,7 +23707,7 @@ programming trick. Don't worry about it if you are not familiar with
These are saved and passed on to @command{gawk}.
@item -f@r{,} --file@r{,} --file=@r{,} -Wfile=
-The @value{FN} is appended to the shell variable @code{program} with an
+The file name is appended to the shell variable @code{program} with an
@samp{@@include} statement.
The @command{expr} utility is used to remove the leading option part of the
argument (e.g., @samp{--file=}).
@@ -23347,6 +23735,7 @@ program.
The program is as follows:
+@c STARTOFRANGE igawk
@cindex @code{igawk.sh} program
@example
@c file eg/prog/igawk.sh
@@ -23443,10 +23832,10 @@ is stored in the shell variable @code{expand_prog}. Doing this keeps
the shell script readable. The @command{awk} program
reads through the user's program, one line at a time, using @code{getline}
(@pxref{Getline}). The input
-@value{FN}s and @samp{@@include} statements are managed using a stack.
-As each @samp{@@include} is encountered, the current @value{FN} is
+file names and @samp{@@include} statements are managed using a stack.
+As each @samp{@@include} is encountered, the current file name is
``pushed'' onto the stack and the file named in the @samp{@@include}
-directive becomes the current @value{FN}. As each file is finished,
+directive becomes the current file name. As each file is finished,
the stack is ``popped,'' and the previous input file becomes the current
input file again. The process is started by making the original file
the first one on the stack.
@@ -23455,16 +23844,16 @@ The @code{pathto()} function does the work of finding the full path to
a file. It simulates @command{gawk}'s behavior when searching the
@env{AWKPATH} environment variable
(@pxref{AWKPATH Variable}).
-If a @value{FN} has a @samp{/} in it, no path search is done.
-Similarly, if the @value{FN} is @code{"-"}, then that string is
+If a file name has a @samp{/} in it, no path search is done.
+Similarly, if the file name is @code{"-"}, then that string is
used as-is. Otherwise,
-the @value{FN} is concatenated with the name of each directory in
-the path, and an attempt is made to open the generated @value{FN}.
+the file name is concatenated with the name of each directory in
+the path, and an attempt is made to open the generated file name.
The only way to test if a file can be read in @command{awk} is to go
ahead and try to read it with @code{getline}; this is what @code{pathto()}
does.@footnote{On some very old versions of @command{awk}, the test
@samp{getline junk < t} can loop forever if the file exists but is empty.
-Caveat emptor.} If the file can be read, it is closed and the @value{FN}
+Caveat emptor.} If the file can be read, it is closed and the file name
is returned:
@ignore
@@ -23519,17 +23908,17 @@ BEGIN @{
@c endfile
@end example
-The stack is initialized with @code{ARGV[1]}, which will be @file{/dev/stdin}.
+The stack is initialized with @code{ARGV[1]}, which will be @samp{/dev/stdin}.
The main loop comes next. Input lines are read in succession. Lines that
do not start with @samp{@@include} are printed verbatim.
-If the line does start with @samp{@@include}, the @value{FN} is in @code{$2}.
+If the line does start with @samp{@@include}, the file name is in @code{$2}.
@code{pathto()} is called to generate the full path. If it cannot, then the program
prints an error message and continues.
The next thing to check is if the file is included already. The
-@code{processed} array is indexed by the full @value{FN} of each included
+@code{processed} array is indexed by the full file name of each included
file and it tracks this information for us. If the file is
-seen again, a warning message is printed. Otherwise, the new @value{FN} is
+seen again, a warning message is printed. Otherwise, the new file name is
pushed onto the stack and processing continues.
Finally, when @code{getline} encounters the end of the input file, the file
@@ -23607,10 +23996,10 @@ options and command-line arguments that the user supplied.
@c this causes more problems than it solves, so leave it out.
@ignore
-The special file @file{/dev/null} is passed as a @value{DF} to @command{gawk}
+The special file @file{/dev/null} is passed as a data file to @command{gawk}
to handle an interesting case. Suppose that the user's program only has
-a @code{BEGIN} rule and there are no @value{DF}s to read.
-The program should exit without reading any @value{DF}s.
+a @code{BEGIN} rule and there are no data files to read.
+The program should exit without reading any data files.
However, suppose that an included library file defines an @code{END}
rule of its own. In this case, @command{gawk} will hang, reading standard
input. In order to avoid this, @file{/dev/null} is explicitly added to the
@@ -23706,10 +24095,12 @@ statements for the desired library functions.
@c ENDOFRANGE libfex
@c ENDOFRANGE flibex
@c ENDOFRANGE awkpex
+@c ENDOFRANGE igawk
@node Anagram Program
@subsection Finding Anagrams From A Dictionary
+@cindex anagrams, finding
An interesting programming challenge is to
search for @dfn{anagrams} in a
word list (such as
@@ -23729,6 +24120,7 @@ The following program uses arrays of arrays to bring together
words with the same signature and array sorting to print the words
in sorted order.
+@c STARTOFRANGE anagram
@cindex @code{anagram.awk} program
@example
@c file eg/prog/anagram.awk
@@ -23836,10 +24228,13 @@ babels beslab
babery yabber
@dots{}
@end example
+@c ENDOFRANGE anagram
@node Signature Program
@subsection And Now For Something Completely Different
+@cindex signature program
+@cindex Brini, Davide
The following program was written by Davide Brini
@c (@email{dave_br@@gmx.com})
and is published on @uref{http://backreference.org/2011/02/03/obfuscated-awk/,
@@ -23971,12 +24366,15 @@ It contains the following chapters:
@item
@ref{Dynamic Extensions}.
+@end itemize
@end ifdocbook
@end ignore
@node Advanced Features
@chapter Advanced Features of @command{gawk}
-@cindex advanced features, network connections, See Also networks, connections
+@ifset WITH_NETWORK_CHAPTER
+@cindex advanced features, network connections, See Also networks@comma{} connections
+@end ifset
@c STARTOFRANGE gawadv
@cindex @command{gawk}, features, advanced
@c STARTOFRANGE advgaw
@@ -23991,8 +24389,8 @@ who knows where you live."
@end ignore
@quotation
@i{Write documentation as if whoever reads it is
-a violent psychopath who knows where you live.}@*
-Steve English, as quoted by Peter Langston
+a violent psychopath who knows where you live.}
+@author Steve English, as quoted by Peter Langston
@end quotation
This @value{CHAPTER} discusses advanced features in @command{gawk}.
@@ -24042,7 +24440,7 @@ discusses the ability to dynamically add new built-in functions to
@node Nondecimal Data
@section Allowing Nondecimal Input Data
-@cindex @code{--non-decimal-data} option
+@cindex @option{--non-decimal-data} option
@cindex advanced features, nondecimal input data
@cindex input, data@comma{} nondecimal
@cindex constants, nondecimal
@@ -24086,7 +24484,7 @@ using this facility could lead to surprising results, the default is to leave it
disabled. If you want it, you must explicitly request it.
@cindex programming conventions, @code{--non-decimal-data} option
-@cindex @code{--non-decimal-data} option, @code{strtonum()} function and
+@cindex @option{--non-decimal-data} option, @code{strtonum()} function and
@cindex @code{strtonum()} function (@command{gawk}), @code{--non-decimal-data} option and
@quotation CAUTION
@emph{Use of this option is not recommended.}
@@ -24311,7 +24709,7 @@ ordered data:
@example
function cmp_randomize(i1, v1, i2, v2)
@{
- # random order
+ # random order (caution: this may never terminate!)
return (2 - 4 * rand())
@}
@end example
@@ -24326,7 +24724,7 @@ with otherwise equal values is to include the indices in the comparison
rules. Note that doing this may make the loop traversal less efficient,
so consider it only if necessary. The following comparison functions
force a deterministic order, and are based on the fact that the
-indices of two elements are never equal:
+(string) indices of two elements are never equal:
@example
function cmp_numeric(i1, v1, i2, v2)
@@ -24383,17 +24781,16 @@ sorted array traversal is not the default.
@subsection Sorting Array Values and Indices with @command{gawk}
@cindex arrays, sorting
-@cindex @code{asort()} function (@command{gawk})
+@cindexgawkfunc{asort}
@cindex @code{asort()} function (@command{gawk}), arrays@comma{} sorting
+@cindexgawkfunc{asorti}
+@cindex @code{asorti()} function (@command{gawk}), arrays@comma{} sorting
@cindex sort function, arrays, sorting
-In most @command{awk} implementations, sorting an array requires
-writing 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()}
-and @code{asorti()} functions
-(@pxref{String Functions})
-for sorting arrays. For example:
+In most @command{awk} implementations, sorting an array requires 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()} and @code{asorti()}
+functions (@pxref{String Functions}) for sorting arrays. For example:
@example
@var{populate the array} data
@@ -24406,7 +24803,7 @@ After the call to @code{asort()}, the array @code{data} is indexed from 1
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 comparison is based on the type of the elements
+The default 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.
@@ -24428,24 +24825,11 @@ In this case, @command{gawk} copies the @code{source} array into the
@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 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
-array's element values. The ability to control comparison merely
-affects the way in which they are sorted.
-@end quotation
-
Often, what's needed is to sort on the values of the @emph{indices}
-instead of the values of the elements.
-To do that, use the
-@code{asorti()} function. The interface is identical to that of
-@code{asort()}, except that the index values are used for sorting, and
-become the values of the result array:
+instead of the values of the elements. To do that, use the
+@code{asorti()} function. The interface and behavior are identical to
+that of @code{asort()}, except that the index values are used for sorting,
+and become the values of the result array:
@example
@{ source[$0] = some_func($0) @}
@@ -24462,29 +24846,40 @@ END @{
@}
@end example
-Similar to @code{asort()},
-in all cases, the sorted element values consist of the original
-array's indices. The ability to control comparison merely
-affects the way in which they are sorted.
+So far, so good. Now it starts to get interesting. Both @code{asort()}
+and @code{asorti()} accept a third string argument to control comparison
+of array elements. In @ref{String Functions}, we ignored this third
+argument; however, the time has now come to describe how this argument
+affects these two functions.
+
+Basically, the third argument specifies how the array is to be sorted.
+There are two possibilities. As with @code{PROCINFO["sorted_in"]},
+this argument may be one of the predefined names that @command{gawk}
+provides (@pxref{Controlling Scanning}), or it may be the name of a
+user-defined function (@pxref{Controlling Array Traversal}).
-Sorting the array by replacing the indices provides maximal flexibility.
-To traverse the elements in decreasing order, use a loop that goes from
-@var{n} down to 1, either over the elements or over the indices.@footnote{You
-may also use one of the predefined sorting names that sorts in
-decreasing order.}
+In the latter case, @emph{the function can compare elements in any way
+it chooses}, taking into account just the indices, just the values,
+or both. This is extremely powerful.
+
+Once the array is sorted, @code{asort()} takes the @emph{values} in
+their final order, and uses them to fill in the result array, whereas
+@code{asorti()} takes the @emph{indices} in their final order, and uses
+them to fill in the result array.
@cindex reference counting, sorting arrays
+@quotation NOTE
Copying array indices and elements isn't expensive in terms of memory.
Internally, @command{gawk} maintains @dfn{reference counts} to data.
For example, when @code{asort()} copies the first array to the second one,
there is only one copy of the original array elements' data, even though
both arrays use the values.
+@end quotation
@c Document It And Call It A Feature. Sigh.
@cindex @command{gawk}, @code{IGNORECASE} variable in
-@cindex @code{IGNORECASE} variable
-@cindex arrays, sorting, @code{IGNORECASE} variable and
-@cindex @code{IGNORECASE} variable, array sorting and
+@cindex arrays, sorting, and @code{IGNORECASE} variable
+@cindex @code{IGNORECASE} variable, and array sorting functions
Because @code{IGNORECASE} affects string comparisons, the value
of @code{IGNORECASE} also affects sorting for both @code{asort()} and @code{asorti()}.
Note also that the locale's sorting order does @emph{not}
@@ -24563,7 +24958,7 @@ open a @emph{two-way} pipe to another process. The second process is
termed a @dfn{coprocess}, since it runs in parallel with @command{gawk}.
The two-way connection is created using the @samp{|&} operator
(borrowed from the Korn shell, @command{ksh}):@footnote{This is very
-different from the same operator in the C shell.}
+different from the same operator in the C shell and in Bash.}
@example
do @{
@@ -24653,7 +25048,7 @@ As a side note, the assignment @samp{LC_ALL=C} in the @command{sort}
command ensures traditional Unix (ASCII) sorting from @command{sort}.
@cindex @command{gawk}, @code{PROCINFO} array in
-@cindex @code{PROCINFO} array
+@cindex @code{PROCINFO} array, and communications via ptys
You may also use pseudo-ttys (ptys) for
two-way communication instead of pipes, if your system supports them.
This is done on a per-command basis, by setting a special element
@@ -24704,10 +25099,10 @@ another process on another system across an IP network connection.
You can think of this as just a @emph{very long} two-way pipeline to
a coprocess.
The way @command{gawk} decides that you want to use TCP/IP networking is
-by recognizing special @value{FN}s that begin with one of @samp{/inet/},
+by recognizing special file names that begin with one of @samp{/inet/},
@samp{/inet4/} or @samp{/inet6}.
-The full syntax of the special @value{FN} is
+The full syntax of the special file name is
@file{/@var{net-type}/@var{protocol}/@var{local-port}/@var{remote-host}/@var{remote-port}}.
The components are:
@@ -24796,7 +25191,7 @@ When @command{gawk} has finished running, it creates a profile of your program i
named @file{awkprof.out}. Because it is profiling, it also executes up to 45% slower than
@command{gawk} normally does.
-@cindex @code{--profile} option
+@cindex @option{--profile} option
As shown in the following example,
the @option{--profile} option can be used to change the name of the file
where @command{gawk} will write the profile:
@@ -24851,52 +25246,60 @@ foo
junk
@end example
-Here is the @file{awkprof.out} that results from running the @command{gawk}
-profiler on this program and data (this example also illustrates that @command{awk}
-programmers sometimes have to work late):
+Here is the @file{awkprof.out} that results from running the
+@command{gawk} profiler on this program and data. (This example also
+illustrates that @command{awk} programmers sometimes get up very early
+in the morning to work.)
-@cindex @code{BEGIN} pattern
-@cindex @code{END} pattern
+@cindex @code{BEGIN} pattern, and profiling
+@cindex @code{END} pattern, and profiling
@example
- # gawk profile, created Sun Aug 13 00:00:15 2000
+ # gawk profile, created Thu Feb 27 05:16:21 2014
- # BEGIN block(s)
+ # BEGIN block(s)
- BEGIN @{
- 1 print "First BEGIN rule"
- 1 print "Second BEGIN rule"
- @}
+ BEGIN @{
+ 1 print "First BEGIN rule"
+ @}
- # Rule(s)
+ BEGIN @{
+ 1 print "Second BEGIN rule"
+ @}
- 5 /foo/ @{ # 2
- 2 print "matched /foo/, gosh"
- 6 for (i = 1; i <= 3; i++) @{
- 6 sing()
- @}
- @}
+ # Rule(s)
- 5 @{
- 5 if (/foo/) @{ # 2
- 2 print "if is true"
- 3 @} else @{
- 3 print "else is true"
- @}
- @}
+ 5 /foo/ @{ # 2
+ 2 print "matched /foo/, gosh"
+ 6 for (i = 1; i <= 3; i++) @{
+ 6 sing()
+ @}
+ @}
- # END block(s)
+ 5 @{
+ 5 if (/foo/) @{ # 2
+ 2 print "if is true"
+ 3 @} else @{
+ 3 print "else is true"
+ @}
+ @}
- END @{
- 1 print "First END rule"
- 1 print "Second END rule"
- @}
+ # END block(s)
+
+ END @{
+ 1 print "First END rule"
+ @}
+
+ END @{
+ 1 print "Second END rule"
+ @}
- # Functions, listed alphabetically
- 6 function sing(dummy)
- @{
- 6 print "I gotta be me!"
- @}
+ # Functions, listed alphabetically
+
+ 6 function sing(dummy)
+ @{
+ 6 print "I gotta be me!"
+ @}
@end example
This example illustrates many of the basic features of profiling output.
@@ -24904,15 +25307,16 @@ They are as follows:
@itemize @bullet
@item
-The program is printed in the order @code{BEGIN} rule,
-@code{BEGINFILE} rule,
+The program is printed in the order @code{BEGIN} rules,
+@code{BEGINFILE} rules,
pattern/action rules,
-@code{ENDFILE} rule, @code{END} rule and functions, listed
+@code{ENDFILE} rules, @code{END} rules and functions, listed
alphabetically.
-Multiple @code{BEGIN} and @code{END} rules are merged together,
-as are multiple @code{BEGINFILE} and @code{ENDFILE} rules.
+Multiple @code{BEGIN} and @code{END} rules retain their
+separate identities, as do
+multiple @code{BEGINFILE} and @code{ENDFILE} rules.
-@cindex patterns, counts
+@cindex patterns, counts, in a profile
@item
Pattern-action rules have two counts.
The first count, to the left of the rule, shows how many times
@@ -24932,7 +25336,7 @@ is a count showing how many times the condition was true.
The count for the @code{else}
indicates how many times the test failed.
-@cindex loops, count for header
+@cindex loops, count for header, in a profile
@item
The count for a loop header (such as @code{for}
or @code{while}) shows how many times the loop test was executed.
@@ -24940,8 +25344,8 @@ or @code{while}) shows how many times the loop test was executed.
statement in a rule to determine how many times the rule was executed.
If the first statement is a loop, the count is misleading.)
-@cindex functions, user-defined, counts
-@cindex user-defined, functions, counts
+@cindex functions, user-defined, counts, in a profile
+@cindex user-defined, functions, counts, in a profile
@item
For user-defined functions, the count next to the @code{function}
keyword indicates how many times the function was called.
@@ -24955,8 +25359,8 @@ The layout uses ``K&R'' style with TABs.
Braces are used everywhere, even when
the body of an @code{if}, @code{else}, or loop is only a single statement.
-@cindex @code{()} (parentheses)
-@cindex parentheses @code{()}
+@cindex @code{()} (parentheses), in a profile
+@cindex parentheses @code{()}, in a profile
@item
Parentheses are used only where needed, as indicated by the structure
of the program and the precedence rules.
@@ -24991,8 +25395,8 @@ typed when you wrote it. This is because @command{gawk} creates the
profiled version by ``pretty printing'' its internal representation of
the program. The advantage to this is that @command{gawk} can produce
a standard representation. The disadvantage is that all source-code
-comments are lost, as are the distinctions among multiple @code{BEGIN},
-@code{END}, @code{BEGINFILE}, and @code{ENDFILE} rules. Also, things such as:
+comments are lost.
+Also, things such as:
@example
/foo/
@@ -25012,6 +25416,7 @@ which is correct, but possibly surprising.
@cindex profiling @command{awk} programs, dynamically
@cindex @command{gawk} program, dynamic profiling
+@cindex dynamic profiling
Besides creating profiles when a program has completed,
@command{gawk} can produce a profile while it is running.
This is useful if your @command{awk} program goes into an
@@ -25025,9 +25430,9 @@ $ @kbd{gawk --profile -f myprog &}
@end example
@cindex @command{kill} command@comma{} dynamic profiling
-@cindex @code{USR1} signal
-@cindex @code{SIGUSR1} signal
-@cindex signals, @code{USR1}/@code{SIGUSR1}
+@cindex @code{USR1} signal, for dynamic profiling
+@cindex @code{SIGUSR1} signal, for dynamic profiling
+@cindex signals, @code{USR1}/@code{SIGUSR1}, for profiling
@noindent
The shell prints a job number and process ID number; in this case, 13992.
Use the @command{kill} command to send the @code{USR1} signal
@@ -25058,9 +25463,9 @@ You may send @command{gawk} the @code{USR1} signal as many times as you like.
Each time, the profile and function call trace are appended to the output
profile file.
-@cindex @code{HUP} signal
-@cindex @code{SIGHUP} signal
-@cindex signals, @code{HUP}/@code{SIGHUP}
+@cindex @code{HUP} signal, for dynamic profiling
+@cindex @code{SIGHUP} signal, for dynamic profiling
+@cindex signals, @code{HUP}/@code{SIGHUP}, for profiling
If you use the @code{HUP} signal instead of the @code{USR1} signal,
@command{gawk} produces the profile and the function call trace and then exits.
@@ -25076,12 +25481,17 @@ the case of the @code{INT} signal, @command{gawk} exits. This is
because these systems don't support the @command{kill} command, so the
only signals you can deliver to a program are those generated by the
keyboard. The @code{INT} signal is generated by the
-@kbd{@value{CTL}-@key{C}} or @kbd{@value{CTL}-@key{BREAK}} key, while the
-@code{QUIT} signal is generated by the @kbd{@value{CTL}-@key{\}} key.
+@kbd{Ctrl-@key{C}} or @kbd{Ctrl-@key{BREAK}} key, while the
+@code{QUIT} signal is generated by the @kbd{Ctrl-@key{\}} key.
Finally, @command{gawk} also accepts another option, @option{--pretty-print}.
When called this way, @command{gawk} ``pretty prints'' the program into
@file{awkprof.out}, without any execution counts.
+
+@quotation NOTE
+The @option{--pretty-print} option still runs your program.
+This will change in the next major release.
+@end quotation
@c ENDOFRANGE advgaw
@c ENDOFRANGE gawadv
@c ENDOFRANGE awkp
@@ -25193,6 +25603,7 @@ lookup of the translations.
@cindex @code{.po} files
@cindex files, @code{.po}
+@c STARTOFRANGE portobfi
@cindex portable object files
@cindex files, portable object
@item
@@ -25204,6 +25615,7 @@ For example, there might be a @file{fr.po} for a French translation.
@cindex @code{.gmo} files
@cindex files, @code{.gmo}
@cindex message object files
+@c STARTOFRANGE portmsgfi
@cindex files, message object
@item
Each language's @file{.po} file is converted into a binary
@@ -25351,7 +25763,7 @@ String constants marked with a leading underscore
are candidates for translation at runtime.
String constants without a leading underscore are not translated.
-@cindex @code{dcgettext()} function (@command{gawk})
+@cindexgawkfunc{dcgettext}
@item dcgettext(@var{string} @r{[}, @var{domain} @r{[}, @var{category}@r{]]})
Return the translation of @var{string} in
text domain @var{domain} for locale category @var{category}.
@@ -25377,7 +25789,7 @@ chosen to be simple and to allow for reasonable @command{awk}-style
default arguments.
@end quotation
-@cindex @code{dcngettext()} function (@command{gawk})
+@cindexgawkfunc{dcngettext}
@item dcngettext(@var{string1}, @var{string2}, @var{number} @r{[}, @var{domain} @r{[}, @var{category}@r{]]})
Return the plural form used for @var{number} of the
translation of @var{string1} and @var{string2} in text domain
@@ -25393,7 +25805,7 @@ The same remarks about argument order as for the @code{dcgettext()} function app
@cindex files, @code{.gmo}, specifying directory of
@cindex message object files, specifying directory of
@cindex files, message object, specifying directory of
-@cindex @code{bindtextdomain()} function (@command{gawk})
+@cindexgawkfunc{bindtextdomain}
@item bindtextdomain(@var{directory} @r{[}, @var{domain}@r{]})
Change the directory in which
@code{gettext} looks for @file{.gmo} files, in case they
@@ -25495,7 +25907,7 @@ and use translations from @command{awk}.
@cindex portable object files
@cindex files, portable object
Once a program's translatable strings have been marked, they must
-be extracted to create the initial @file{.po} file.
+be extracted to create the initial @file{.pot} file.
As part of translation, it is often helpful to rearrange the order
in which arguments to @code{printf} are output.
@@ -25515,13 +25927,13 @@ is covered.
@subsection Extracting Marked Strings
@cindex strings, extracting
@cindex marked strings@comma{} extracting
-@cindex @code{--gen-pot} option
+@cindex @option{--gen-pot} option
@cindex command-line options, string extraction
@cindex string extraction (internationalization)
@cindex marked string extraction (internationalization)
@cindex extraction, of marked strings (internationalization)
-@cindex @code{--gen-pot} option
+@cindex @option{--gen-pot} option
Once your @command{awk} program is working, and all the strings have
been marked and you've set (and perhaps bound) the text domain,
it is time to produce translations.
@@ -25544,6 +25956,8 @@ second argument to @code{dcngettext()}.@footnote{The
@xref{I18N Example},
for the full list of steps to go through to create and test
translations for @command{guide}.
+@c ENDOFRANGE portobfi
+@c ENDOFRANGE portmsgfi
@node Printf Ordering
@subsection Rearranging @code{printf} Arguments
@@ -25590,7 +26004,7 @@ example, @samp{string} is the first argument and @samp{length(string)} is the se
@example
$ @kbd{gawk 'BEGIN @{}
> @kbd{string = "Dont Panic"}
-> @kbd{printf _"%2$d characters live in \"%1$s\"\n",}
+> @kbd{printf "%2$d characters live in \"%1$s\"\n",}
> @kbd{string, length(string)}
> @kbd{@}'}
@print{} 10 characters live in "Dont Panic"
@@ -25624,7 +26038,7 @@ This is somewhat counterintuitive.
and those with positional specifiers in the same string:
@example
-$ @kbd{gawk 'BEGIN @{ printf _"%d %3$s\n", 1, 2, "hi" @}'}
+$ @kbd{gawk 'BEGIN @{ printf "%d %3$s\n", 1, 2, "hi" @}'}
@error{} gawk: cmd. line:1: fatal: must use `count$' on all formats or none
@end example
@@ -25869,7 +26283,7 @@ complete detail in
@cite{GNU gettext tools}.)
@end ifnotinfo
As of this writing, the latest version of GNU @code{gettext} is
-@uref{ftp://ftp.gnu.org/gnu/gettext/gettext-0.18.2.1.tar.gz, @value{PVERSION} 0.18.2.1}.
+@uref{ftp://ftp.gnu.org/gnu/gettext/gettext-0.18.2.1.tar.gz, version 0.18.2.1}.
If a translation of @command{gawk}'s messages exists,
then @command{gawk} produces usage messages, warnings,
@@ -25965,6 +26379,7 @@ The following list defines terms used throughout the rest of
this @value{CHAPTER}.
@table @dfn
+@cindex stack frame
@item Stack Frame
Programs generally call functions during the course of their execution.
One function can call another, or a function can call itself (recursion).
@@ -25986,6 +26401,7 @@ invoked. Commands that print the call stack print information about
each stack frame (as detailed later on).
@item Breakpoint
+@cindex breakpoint
During debugging, you often wish to let the program run until it
reaches a certain point, and then continue execution from there one
statement (or instruction) at a time. The way to do this is to set
@@ -25995,6 +26411,7 @@ take over control of the program's execution. You can add and remove
as many breakpoints as you like.
@item Watchpoint
+@cindex watchpoint
A watchpoint is similar to a breakpoint. The difference is that
breakpoints are oriented around the code: stop when a certain point in the
code is reached. A watchpoint, however, specifies that program execution
@@ -26026,6 +26443,7 @@ by the higher-level @command{awk} commands.
@node Sample Debugging Session
@section Sample Debugging Session
+@cindex sample debugging session
In order to illustrate the use of @command{gawk} as a debugger, let's look at a sample
debugging session. We will use the @command{awk} implementation of the
@@ -26039,13 +26457,16 @@ as our example.
@node Debugger Invocation
@subsection How to Start the Debugger
+@cindex starting the debugger
+@cindex debugger, how to start
-Starting the debugger is almost exactly like running @command{awk}, except you have to
-pass an additional option @option{--debug} or the corresponding short option @option{-D}.
-The file(s) containing the program and any supporting code are given on the command
-line as arguments to one or more @option{-f} options. (@command{gawk} is not designed
-to debug command-line programs, only programs contained in files.) In our case,
-we invoke the debugger like this:
+Starting the debugger is almost exactly like running @command{gawk},
+except you have to pass an additional option @option{--debug} or the
+corresponding short option @option{-D}. The file(s) containing the
+program and any supporting code are given on the command line as arguments
+to one or more @option{-f} options. (@command{gawk} is not designed
+to debug command-line programs, only programs contained in files.)
+In our case, we invoke the debugger like this:
@example
$ @kbd{gawk -D -f getopt.awk -f join.awk -f uniq.awk inputfile}
@@ -26178,7 +26599,7 @@ gawk> @kbd{p NR}
@noindent
So we can see that @code{are_equal()} was only called for the second record
-of the file. Of course, this is because our program contained a rule for
+of the file. Of course, this is because our program contains a rule for
@samp{NR == 1}:
@example
@@ -26378,21 +26799,24 @@ controlling breakpoints are:
@cindex debugger commands, @code{break}
@cindex @code{break} debugger command
@cindex @code{b} debugger command (alias for @code{break})
+@cindex set breakpoint
+@cindex breakpoint, setting
@item @code{break} [[@var{filename}@code{:}]@var{n} | @var{function}] [@code{"@var{expression}"}]
@itemx @code{b} [[@var{filename}@code{:}]@var{n} | @var{function}] [@code{"@var{expression}"}]
Without any argument, set a breakpoint at the next instruction
to be executed in the selected stack frame.
Arguments can be one of the following:
+@c @asis for docbook
@c nested table
-@table @var
-@item n
+@table @asis
+@item @var{n}
Set a breakpoint at line number @var{n} in the current source file.
-@item filename@code{:}n
+@item @var{filename}@code{:}@var{n}
Set a breakpoint at line number @var{n} in source file @var{filename}.
-@item function
+@item @var{function}
Set a breakpoint at entry to (the first instruction of)
function @var{function}.
@end table
@@ -26408,6 +26832,8 @@ it continues executing the program.
@cindex debugger commands, @code{clear}
@cindex @code{clear} debugger command
+@cindex delete breakpoint at location
+@cindex breakpoint at location, how to delete
@item @code{clear} [[@var{filename}@code{:}]@var{n} | @var{function}]
Without any argument, delete any breakpoint at the next instruction
to be executed in the selected stack frame. If the program stops at
@@ -26415,19 +26841,20 @@ a breakpoint, this deletes that breakpoint so that the program
does not stop at that location again. Arguments can be one of the following:
@c nested table
-@table @var
-@item n
+@table @asis
+@item @var{n}
Delete breakpoint(s) set at line number @var{n} in the current source file.
-@item filename@code{:}n
+@item @var{filename}@code{:}@var{n}
Delete breakpoint(s) set at line number @var{n} in source file @var{filename}.
-@item function
+@item @var{function}
Delete breakpoint(s) set at entry to function @var{function}.
@end table
@cindex debugger commands, @code{condition}
@cindex @code{condition} debugger command
+@cindex breakpoint condition
@item @code{condition} @var{n} @code{"@var{expression}"}
Add a condition to existing breakpoint or watchpoint @var{n}. The
condition is an @command{awk} expression that the debugger evaluates
@@ -26441,6 +26868,8 @@ watchpoint is made unconditional.
@cindex debugger commands, @code{delete}
@cindex @code{delete} debugger command
@cindex @code{d} debugger command (alias for @code{delete})
+@cindex delete breakpoint by number
+@cindex breakpoint, delete by number
@item @code{delete} [@var{n1 n2} @dots{}] [@var{n}--@var{m}]
@itemx @code{d} [@var{n1 n2} @dots{}] [@var{n}--@var{m}]
Delete specified breakpoints or a range of breakpoints. Deletes
@@ -26448,6 +26877,8 @@ all defined breakpoints if no argument is supplied.
@cindex debugger commands, @code{disable}
@cindex @code{disable} debugger command
+@cindex disable breakpoint
+@cindex breakpoint, how to disable or enable
@item @code{disable} [@var{n1 n2} @dots{} | @var{n}--@var{m}]
Disable specified breakpoints or a range of breakpoints. Without
any argument, disables all breakpoints.
@@ -26456,6 +26887,7 @@ any argument, disables all breakpoints.
@cindex debugger commands, @code{enable}
@cindex @code{enable} debugger command
@cindex @code{e} debugger command (alias for @code{enable})
+@cindex enable breakpoint
@item @code{enable} [@code{del} | @code{once}] [@var{n1 n2} @dots{}] [@var{n}--@var{m}]
@itemx @code{e} [@code{del} | @code{once}] [@var{n1 n2} @dots{}] [@var{n}--@var{m}]
Enable specified breakpoints or a range of breakpoints. Without
@@ -26475,6 +26907,7 @@ the program stops at the breakpoint.
@cindex debugger commands, @code{ignore}
@cindex @code{ignore} debugger command
+@cindex ignore breakpoint
@item @code{ignore} @var{n} @var{count}
Ignore breakpoint number @var{n} the next @var{count} times it is
hit.
@@ -26483,6 +26916,7 @@ hit.
@cindex debugger commands, @code{tbreak}
@cindex @code{tbreak} debugger command
@cindex @code{t} debugger command (alias for @code{tbreak})
+@cindex temporary breakpoint
@item @code{tbreak} [[@var{filename}@code{:}]@var{n} | @var{function}]
@itemx @code{t} [[@var{filename}@code{:}]@var{n} | @var{function}]
Set a temporary breakpoint (enabled for only one stop).
@@ -26503,6 +26937,8 @@ execution of the program than we saw in our earlier example:
@cindex @code{silent} debugger command
@cindex debugger commands, @code{end}
@cindex @code{end} debugger command
+@cindex breakpoint commands
+@cindex commands to execute at breakpoint
@item @code{commands} [@var{n}]
@itemx @code{silent}
@itemx @dots{}
@@ -26530,6 +26966,7 @@ gawk>
@cindex debugger commands, @code{c} (@code{continue})
@cindex debugger commands, @code{continue}
+@cindex continue program, in debugger
@item @code{continue} [@var{count}]
@itemx @code{c} [@var{count}]
Resume program execution. If continued from a breakpoint and @var{count} is
@@ -26546,6 +26983,7 @@ Print the returned value.
@cindex debugger commands, @code{next}
@cindex @code{next} debugger command
@cindex @code{n} debugger command (alias for @code{next})
+@cindex single-step execution, in the debugger
@item @code{next} [@var{count}]
@itemx @code{n} [@var{count}]
Continue execution to the next source line, stepping over function calls.
@@ -26640,6 +27078,7 @@ items on the list.
@cindex debugger commands, @code{eval}
@cindex @code{eval} debugger command
+@cindex evaluate expressions, in debugger
@item @code{eval "@var{awk statements}"}
Evaluate @var{awk statements} in the context of the running program.
You can do anything that an @command{awk} program would do: assign
@@ -26657,6 +27096,7 @@ parameters defined by the program.
@cindex debugger commands, @code{print}
@cindex @code{print} debugger command
@cindex @code{p} debugger command (alias for @code{print})
+@cindex print variables, in debugger
@item @code{print} @var{var1}[@code{,} @var{var2} @dots{}]
@itemx @code{p} @var{var1}[@code{,} @var{var2} @dots{}]
Print the value of a @command{gawk} variable or field.
@@ -26690,6 +27130,7 @@ No newline is printed unless one is specified.
@cindex debugger commands, @code{set}
@cindex @code{set} debugger command
+@cindex assign values to variables, in debugger
@item @code{set} @var{var}@code{=}@var{value}
Assign a constant (number or string) value to an @command{awk} variable
or field.
@@ -26702,6 +27143,7 @@ You can also set special @command{awk} variables, such as @code{FS},
@cindex debugger commands, @code{watch}
@cindex @code{watch} debugger command
@cindex @code{w} debugger command (alias for @code{watch})
+@cindex set watchpoint
@item @code{watch} @var{var} | @code{$}@var{n} [@code{"@var{expression}"}]
@itemx @code{w} @var{var} | @code{$}@var{n} [@code{"@var{expression}"}]
Add variable @var{var} (or field @code{$@var{n}}) to the watch list.
@@ -26718,12 +27160,14 @@ then the debugger stops execution and prompts for a command. Otherwise,
@cindex debugger commands, @code{undisplay}
@cindex @code{undisplay} debugger command
+@cindex stop automatic display, in debugger
@item @code{undisplay} [@var{n}]
Remove item number @var{n} (or all items, if no argument) from the
automatic display list.
@cindex debugger commands, @code{unwatch}
@cindex @code{unwatch} debugger command
+@cindex delete watchpoint
@item @code{unwatch} [@var{n}]
Remove item number @var{n} (or all items, if no argument) from the
watch list.
@@ -26744,12 +27188,14 @@ functions which called the one you are in. The commands for doing this are:
@cindex debugger commands, @code{backtrace}
@cindex @code{backtrace} debugger command
@cindex @code{bt} debugger command (alias for @code{backtrace})
+@cindex call stack, display in debugger
+@cindex traceback, display in debugger
@item @code{backtrace} [@var{count}]
@itemx @code{bt} [@var{count}]
Print a backtrace of all function calls (stack frames), or innermost @var{count}
frames if @var{count} > 0. Print the outermost @var{count} frames if
@var{count} < 0. The backtrace displays the name and arguments to each
-function, the source @value{FN}, and the line number.
+function, the source file name, and the line number.
@cindex debugger commands, @code{down}
@cindex @code{down} debugger command
@@ -26797,25 +27243,32 @@ The value for @var{what} should be one of the following:
@c nested table
@table @code
@item args
+@cindex show function arguments, in debugger
Arguments of the selected frame.
@item break
+@cindex show breakpoints
List all currently set breakpoints.
@item display
+@cindex automatic displays, in debugger
List all items in the automatic display list.
@item frame
+@cindex describe call stack frame, in debugger
Description of the selected stack frame.
@item functions
+@cindex list function definitions, in debugger
List all function definitions including source file names and
line numbers.
@item locals
+@cindex show local variables, in debugger
Local variables of the selected frame.
@item source
+@cindex show name of current source file, in debugger
The name of the current source file. Each time the program stops, the
current source file is the file containing the current instruction.
When the debugger first starts, the current source file is the first file
@@ -26824,12 +27277,15 @@ included via the @option{-f} option. The
be used at any time to change the current source.
@item sources
+@cindex show all source files, in debugger
List all program sources.
@item variables
+@cindex list all global variables, in debugger
List all global variables.
@item watch
+@cindex show watchpoints
List all items in the watch list.
@end table
@end table
@@ -26843,6 +27299,8 @@ from a file. The commands are:
@cindex debugger commands, @code{option}
@cindex @code{option} debugger command
@cindex @code{o} debugger command (alias for @code{option})
+@cindex display debugger options
+@cindex debugger options
@item @code{option} [@var{name}[@code{=}@var{value}]]
@itemx @code{o} [@var{name}[@code{=}@var{value}]]
Without an argument, display the available debugger options
@@ -26854,38 +27312,46 @@ The available options are:
@c nested table
@table @code
@item history_size
+@cindex debugger history size
The maximum number of lines to keep in the history file @file{./.gawk_history}.
The default is 100.
@item listsize
+@cindex debugger default list amount
The number of lines that @code{list} prints. The default is 15.
@item outfile
+@cindex redirect @command{gawk} output, in debugger
Send @command{gawk} output to a file; debugger output still goes
to standard output. An empty string (@code{""}) resets output to
standard output.
@item prompt
+@cindex debugger prompt
The debugger prompt. The default is @samp{@w{gawk> }}.
@item save_history @r{[}on @r{|} off@r{]}
+@cindex debugger history file
Save command history to file @file{./.gawk_history}.
The default is @code{on}.
@item save_options @r{[}on @r{|} off@r{]}
+@cindex save debugger options
Save current options to file @file{./.gawkrc} upon exit.
The default is @code{on}.
Options are read back in to the next session upon startup.
@item trace @r{[}on @r{|} off@r{]}
+@cindex instruction tracing, in debugger
Turn instruction tracing on or off. The default is @code{off}.
@end table
@item @code{save} @var{filename}
-Save the commands from the current session to the given @value{FN},
+Save the commands from the current session to the given file name,
so that they can be replayed using the @command{source} command.
@item @code{source} @var{filename}
+@cindex debugger, read commands from a file
Run command(s) from a file; an error in any command does not
terminate execution of subsequent commands. Comments (lines starting
with @samp{#}) are allowed in a command file.
@@ -26984,8 +27450,8 @@ about the command @var{command}.
@cindex debugger commands, @code{list}
@cindex @code{list} debugger command
@cindex @code{l} debugger command (alias for @code{list})
-@item @code{list} [@code{-} | @code{+} | @var{n} | @var{filename@code{:}n} | @var{n}--@var{m} | @var{function}]
-@itemx @code{l} [@code{-} | @code{+} | @var{n} | @var{filename@code{:}n} | @var{n}--@var{m} | @var{function}]
+@item @code{list} [@code{-} | @code{+} | @var{n} | @var{filename}@code{:}@var{n} | @var{n}--@var{m} | @var{function}]
+@itemx @code{l} [@code{-} | @code{+} | @var{n} | @var{filename}@code{:}@var{n} | @var{n}--@var{m} | @var{function}]
Print the specified lines (default 15) from the current source file
or the file named @var{filename}. The possible arguments to @code{list}
are as follows:
@@ -27005,7 +27471,7 @@ Print lines centered around line number @var{n}.
@item @var{n}--@var{m}
Print lines from @var{n} to @var{m}.
-@item @var{filename@code{:}n}
+@item @var{filename}@code{:}@var{n}
Print lines centered around line number @var{n} in
source file @var{filename}. This command may change the current source file.
@@ -27018,6 +27484,7 @@ function @var{function}. This command may change the current source file.
@cindex debugger commands, @code{quit}
@cindex @code{quit} debugger command
@cindex @code{q} debugger command (alias for @code{quit})
+@cindex exit the debugger
@item @code{quit}
@itemx @code{q}
Exit the debugger. Debugging is great fun, but sometimes we all have
@@ -27041,6 +27508,8 @@ fairly self-explanatory, and using @code{stepi} and @code{nexti} while
@node Readline Support
@section Readline Support
+@cindex command completion, in debugger
+@cindex history expansion, in debugger
If @command{gawk} is compiled with the @code{readline} library, you
can take advantage of that library's command completion and history expansion
@@ -27050,8 +27519,8 @@ features. The following types of completion are available:
@item Command completion
Command names.
-@item Source @value{FN} completion
-Source @value{FN}s. Relevant commands are
+@item Source file name completion
+Source file names. Relevant commands are
@code{break},
@code{clear},
@code{list},
@@ -27128,9 +27597,7 @@ be added, and of course feel free to try to add them yourself!
@cindex arbitrary precision
@cindex multiple precision
@cindex infinite precision
-@cindex floating-point numbers, arbitrary precision
-@cindex MPFR
-@cindex GMP
+@cindex floating-point, numbers@comma{} arbitrary precision
@cindex Knuth, Donald
@quotation
@@ -27139,11 +27606,11 @@ to believe. Novice computer users solve this problem by implicitly trusting
in the computer as an infallible authority; they tend to believe that all
digits of a printed answer are significant. Disillusioned computer users have
just the opposite approach; they are constantly afraid that their answers
-are almost meaningless.}@*
-Donald Knuth@footnote{Donald E.@: Knuth.
+are almost meaningless.}@footnote{Donald E.@: Knuth.
@cite{The Art of Computer Programming}. Volume 2,
@cite{Seminumerical Algorithms}, third edition,
1998, ISBN 0-201-89683-4, p.@: 229.}
+@author Donald Knuth
@end quotation
This @value{CHAPTER} discusses issues that you may encounter
@@ -27281,7 +27748,7 @@ This makes it clear that the full numeric value is different from
what the default string representations show.
@code{CONVFMT}'s default value is @code{"%.6g"}, which yields a value with
-at least six significant digits. For some applications, you might want to
+at most six significant digits. For some applications, you might want to
change it to specify more precision.
On most modern machines, most of the time,
17 digits is enough to capture a floating-point number's
@@ -27310,7 +27777,7 @@ $ @kbd{awk '@{ printf("%010d\n", $1 * 100) @}'}
@print{} 0000051580
515.82
@print{} 0000051582
-@kbd{@value{CTL}-d}
+@kbd{Ctrl-d}
@end example
@noindent
@@ -27474,23 +27941,38 @@ then the answer is
@math{2^{53}}.
@end iftex
@ifnottex
+@ifnotdocbook
2^53.
+@end ifnotdocbook
@end ifnottex
+@docbook
+2<superscript>53</superscript>. @c
+@end docbook
The next representable number is the even number
@iftex
@math{2^{53} + 2},
@end iftex
@ifnottex
+@ifnotdocbook
2^53 + 2,
+@end ifnotdocbook
@end ifnottex
+@docbook
+2<superscript>53</superscript> &plus; 2, @c
+@end docbook
meaning it is unlikely that you will be able to make
@command{gawk} print
@iftex
@math{2^{53} + 1}
@end iftex
@ifnottex
+@ifnotdocbook
2^53 + 1
+@end ifnotdocbook
@end ifnottex
+@docbook
+2<superscript>53</superscript> &plus; 1 @c
+@end docbook
in integer format.
The range of integers exactly representable by a 64-bit double
is
@@ -27498,8 +27980,13 @@ is
@math{[-2^{53}, 2^{53}]}.
@end iftex
@ifnottex
+@ifnotdocbook
[@minus{}2^53, 2^53].
+@end ifnotdocbook
@end ifnottex
+@docbook
+[&minus;2<superscript>53</superscript>, 2<superscript>53</superscript>]. @c
+@end docbook
If you ever see an integer outside this range in @command{awk}
using 64-bit doubles, you have reason to be very suspicious about
the accuracy of the output. Here is a simple program with erroneous output:
@@ -27723,8 +28210,13 @@ number is then
@math{s @cdot 2^e}.
@end iftex
@ifnottex
+@ifnotdocbook
@var{s * 2^e}.
+@end ifnotdocbook
@end ifnottex
+@docbook
+<emphasis>s &sdot; 2<superscript>e</superscript></emphasis>. @c
+@end docbook
The first bit of a non-zero binary significand
is always one, so the significand in an IEEE-754 format only includes the
fractional part, leaving the leading one implicit.
@@ -27894,6 +28386,8 @@ when you change the rounding mode.
@node Gawk and MPFR
@section @command{gawk} + MPFR = Powerful Arithmetic
+@cindex MPFR
+@cindex GMP
The rest of this @value{CHAPTER} describes how to use the arbitrary precision
(also known as @dfn{multiple precision} or @dfn{infinite precision}) numeric
@@ -27906,12 +28400,17 @@ The easiest way to find out is to look at the output of
the following command:
@example
-$ @kbd{gawk --version}
-@print{} GNU Awk 4.1.0, API: 1.0 (GNU MPFR 3.1.0-p3, GNU MP 5.0.2)
-@print{} Copyright (C) 1989, 1991-2013 Free Software Foundation.
+$ @kbd{./gawk --version}
+@print{} GNU Awk 4.1.1, API: 1.1 (GNU MPFR 3.1.0-p3, GNU MP 5.0.2)
+@print{} Copyright (C) 1989, 1991-2014 Free Software Foundation.
@dots{}
@end example
+@noindent
+(You may see different version numbers than what's shown here. That's OK;
+what's important is to see that GNU MPFR and GNU MP are listed in
+the output.)
+
@command{gawk} uses the
@uref{http://www.mpfr.org, GNU MPFR}
and
@@ -27965,8 +28464,13 @@ numbers are not implemented.}
(@math{emax = 2^{30} - 1, emin = -emax})
@end iftex
@ifnottex
+@ifnotdocbook
(@var{emax} = 2^30 @minus{} 1, @var{emin} = @minus{}@var{emax})
+@end ifnotdocbook
@end ifnottex
+@docbook
+(<emphasis>emax</emphasis> = 2<superscript>30</superscript> &minus; 1, <emphasis>emin</emphasis> = &minus;<emphasis>emax</emphasis>) @c
+@end docbook
for all floating-point contexts.
There is no explicit mechanism to adjust the exponent range.
MPFR does not implement subnormal numbers by default,
@@ -27998,6 +28502,7 @@ your program.
@node Setting Precision
@subsection Setting the Working Precision
@cindex @code{PREC} variable
+@cindex setting working precision
@command{gawk} uses a global working precision; it does not keep track of
the precision or accuracy of individual numbers. Performing an arithmetic
@@ -28037,8 +28542,15 @@ formula:
@math{prec = 3.322 @cdot dps}
@end iftex
@ifnottex
+@ifnotdocbook
@var{prec} = 3.322 * @var{dps}
+@end ifnotdocbook
@end ifnottex
+@docbook
+<para>
+<emphasis>prec</emphasis> = 3.322 &sdot; <emphasis>dps</emphasis> @c
+</para>
+@end docbook
@noindent
Here, @var{prec} denotes the binary precision
@@ -28073,6 +28585,7 @@ issues that occur because numbers are stored internally in binary.
@node Setting Rounding Mode
@subsection Setting the Rounding Mode
@cindex @code{ROUNDMODE} variable
+@cindex setting rounding mode
The @code{ROUNDMODE} variable provides
program level control over the rounding mode.
@@ -28140,6 +28653,7 @@ In the first case, the number is stored with the default precision of 53 bits.
@node Changing Precision
@subsection Changing the Precision of a Number
+@cindex changing precision of a number
@cindex Laurie, Dirk
@quotation
@@ -28150,11 +28664,10 @@ floating-point format to a precision lower than working precision.
Do we promote them to full membership of the high-precision club,
or do we treat them and all their associates as second-class citizens?
Sometimes the first course is proper, sometimes the second, and it takes
-careful analysis to tell which.}
-
-Dirk Laurie@footnote{Dirk Laurie.
+careful analysis to tell which.}@footnote{Dirk Laurie.
@cite{Variable-precision Arithmetic Considered Perilous --- A Detective Story}.
Electronic Transactions on Numerical Analysis. Volume 28, pp. 168-173, 2008.}
+@author Dirk Laurie
@end quotation
@command{gawk} does not implicitly modify the precision of any previously
@@ -28258,7 +28771,8 @@ the problem at hand is often the correct approach in such situations.
@node Arbitrary Precision Integers
@section Arbitrary Precision Integer Arithmetic with @command{gawk}
-@cindex integer, arbitrary precision
+@cindex integers, arbitrary precision
+@cindex arbitrary precision integers
If one of the options @option{--bignum} or @option{-M} is specified,
@command{gawk} performs all
@@ -28272,8 +28786,13 @@ For example, the following computes
@math{5^{4^{3^{2}}}},
@end iftex
@ifnottex
+@ifnotdocbook
5^4^3^2,
+@end ifnotdocbook
@end ifnottex
+@docbook
+5<superscript>4<superscript>3<superscript>2</superscript></superscript></superscript>, @c
+@end docbook
the result of which is beyond the
limits of ordinary @command{gawk} numbers:
@@ -28295,9 +28814,16 @@ floating-point values instead, the precision needed for correct output
would be @math{3.322 @cdot 183231},
@end iftex
@ifnottex
+@ifnotdocbook
@samp{prec = 3.322 * dps}),
would be 3.322 x 183231,
+@end ifnotdocbook
@end ifnottex
+@docbook
+<emphasis>prec</emphasis> = 3.322 &sdot; <emphasis>dps</emphasis>),
+would be
+<emphasis>prec</emphasis> = 3.322 &sdot; 183231, @c
+@end docbook
or 608693.
The result from an arithmetic operation with an integer and a floating-point value
@@ -28346,7 +28872,7 @@ to begin with:
gawk -M 'BEGIN @{ n = 13.0; print n % 2.0 @}'
@end example
-Note that for the particular example above, there is likely best
+Note that for the particular example above, it is likely best
to just use the following:
@example
@@ -28355,6 +28881,7 @@ gawk -M 'BEGIN @{ n = 13; print n % 2 @}'
@node Dynamic Extensions
@chapter Writing Extensions for @command{gawk}
+@cindex dynamically loaded extensions
It is possible to add new functions written in C or C++ to @command{gawk} using
dynamically loaded libraries. This facility is available on systems
@@ -28389,6 +28916,7 @@ When @option{--sandbox} is specified, extensions are disabled
@node Extension Intro
@section Introduction
+@cindex plug-in
An @dfn{extension} (sometimes called a @dfn{plug-in}) is a piece of
external compiled code that @command{gawk} can load at runtime to
provide additional functionality, over and above the built-in capabilities
@@ -28434,8 +28962,14 @@ Communication between
@command{gawk} and an extension is two-way. First, when an extension
is loaded, it is passed a pointer to a @code{struct} whose fields are
function pointers.
+@ifnotdocbook
This is shown in @ref{load-extension}.
+@end ifnotdocbook
+@ifdocbook
+This is shown in @inlineraw{docbook, <xref linkend="load-extension"/>}.
+@end ifdocbook
+@ifnotdocbook
@float Figure,load-extension
@caption{Loading The Extension}
@c FIXME: One day, it should not be necessary to have two cases,
@@ -28448,13 +28982,27 @@ This is shown in @ref{load-extension}.
@center @image{api-figure1, , , Loading the extension}
@end ifnotinfo
@end float
+@end ifnotdocbook
+
+@docbook
+<figure id="load-extension">
+<title>Loading the extension</title>
+<graphic fileref="api-figure1.eps"/>
+</figure>
+@end docbook
The extension can call functions inside @command{gawk} through these
function pointers, at runtime, without needing (link-time) access
to @command{gawk}'s symbols. One of these function pointers is to a
function for ``registering'' new built-in functions.
+@ifnotdocbook
This is shown in @ref{load-new-function}.
+@end ifnotdocbook
+@ifdocbook
+This is shown in @inlineraw{docbook, <xref linkend="load-new-function"/>}.
+@end ifdocbook
+@ifnotdocbook
@float Figure,load-new-function
@caption{Loading The New Function}
@ifinfo
@@ -28464,14 +29012,28 @@ This is shown in @ref{load-new-function}.
@center @image{api-figure2, , , Loading the new function}
@end ifnotinfo
@end float
+@end ifnotdocbook
+
+@docbook
+<figure id="load-new-function">
+<title>Loading the new function</title>
+<graphic fileref="api-figure2.eps"/>
+</figure>
+@end docbook
In the other direction, the extension registers its new functions
with @command{gawk} by passing function pointers to the functions that
provide the new feature (@code{do_chdir()}, for example). @command{gawk}
associates the function pointer with a name and can then call it, using a
defined calling convention.
+@ifnotdocbook
This is shown in @ref{call-new-function}.
+@end ifnotdocbook
+@ifdocbook
+This is shown in @inlineraw{docbook, <xref linkend="call-new-function"/>}.
+@end ifdocbook
+@ifnotdocbook
@float Figure,call-new-function
@caption{Calling The New Function}
@ifinfo
@@ -28481,6 +29043,14 @@ This is shown in @ref{call-new-function}.
@center @image{api-figure3, , , Calling the new function}
@end ifnotinfo
@end float
+@end ifnotdocbook
+
+@docbook
+<figure id="call-new-function">
+<title>Calling The New Function</title>
+<graphic fileref="api-figure3.eps"/>
+</figure>
+@end docbook
The @code{do_@var{xxx}()} function, in turn, then uses the function
pointers in the API @code{struct} to do its work, such as updating
@@ -28517,6 +29087,7 @@ happen, but we all know how @emph{that} goes.)
@node Extension API Description
@section API Description
+@cindex extension API
This (rather large) @value{SECTION} describes the API in detail.
@@ -28524,6 +29095,7 @@ This (rather large) @value{SECTION} describes the API in detail.
* Extension API Functions Introduction:: Introduction to the API functions.
* General Data Types:: The data types.
* Requesting Values:: How to get a value.
+* Memory Allocation Functions:: Functions for allocating memory.
* Constructor Functions:: Functions for creating values.
* Registration Functions:: Functions to register things with
@command{gawk}.
@@ -28579,6 +29151,9 @@ Symbol table access: retrieving a global variable, creating one,
or changing one.
@item
+Allocating, reallocating, and releasing memory.
+
+@item
Creating and releasing cached values; this provides an
efficient way to use values for multiple variables and
can be a big performance win.
@@ -28617,10 +29192,8 @@ corresponding standard header file @emph{before} including @file{gawkapi.h}:
@item @code{EOF} @tab @code{<stdio.h>}
@item @code{FILE} @tab @code{<stdio.h>}
@item @code{NULL} @tab @code{<stddef.h>}
-@item @code{malloc()} @tab @code{<stdlib.h>}
@item @code{memcpy()} @tab @code{<string.h>}
@item @code{memset()} @tab @code{<string.h>}
-@item @code{realloc()} @tab @code{<stdlib.h>}
@item @code{size_t} @tab @code{<sys/types.h>}
@item @code{struct stat} @tab @code{<sys/stat.h>}
@end multitable
@@ -28650,8 +29223,9 @@ does not support this keyword, you should either place
All pointers filled in by @command{gawk} are to memory
managed by @command{gawk} and should be treated by the extension as
read-only. Memory for @emph{all} strings passed into @command{gawk}
-from the extension @emph{must} come from @code{malloc()} and is managed
-by @command{gawk} from then on.
+from the extension @emph{must} come from calling the API-provided function
+pointers @code{api_malloc()}, @code{api_calloc()} or @code{api_realloc()},
+and is managed by @command{gawk} from then on.
@item
The API defines several simple @code{struct}s that map values as seen
@@ -28691,13 +29265,17 @@ the macros as if they were functions.
@node General Data Types
@subsection General Purpose Data Types
+@cindex Robbins, Arnold
+@cindex Ramey, Chet
@quotation
-@i{I have a true love/hate relationship with unions.}@*
-Arnold Robbins
+@i{I have a true love/hate relationship with unions.}
+@author Arnold Robbins
+@end quotation
+@quotation
@i{That's the thing about unions: the compiler will arrange things so they
-can accommodate both love and hate.}@*
-Chet Ramey
+can accommodate both love and hate.}
+@author Chet Ramey
@end quotation
The extension API defines a number of simple types and structures for general
@@ -28717,9 +29295,9 @@ certain fields in the API data structures unwritable from extension code,
while allowing @command{gawk} to use them as it needs to.
@item typedef enum awk_bool @{
-@item @ @ @ @ awk_false = 0,
-@item @ @ @ @ awk_true
-@item @} awk_bool_t;
+@itemx @ @ @ @ awk_false = 0,
+@itemx @ @ @ @ awk_true
+@itemx @} awk_bool_t;
A simple boolean type.
@item typedef struct awk_string @{
@@ -28729,7 +29307,8 @@ A simple boolean type.
This represents a mutable string. @command{gawk}
owns the memory pointed to if it supplied
the value. Otherwise, it takes ownership of the memory pointed to.
-@strong{Such memory must come from @code{malloc()}!}
+@strong{Such memory must come from calling the API-provided function
+pointers @code{api_malloc()}, @code{api_calloc()}, or @code{api_realloc()}!}
As mentioned earlier, strings are maintained using the current
multibyte encoding.
@@ -28845,7 +29424,94 @@ print an error message, or reissue the request for the actual
value type, as appropriate. This behavior is summarized in
@ref{table-value-types-returned}.
+@c FIXME: Try to do this with spans...
+@ifdocbook
+@anchor{table-value-types-returned}
+@end ifdocbook
+@docbook
+<informaltable>
+<tgroup cols="2">
+ <colspec colwidth="50*"/><colspec colwidth="50*"/>
+ <thead>
+ <row><entry></entry><entry><para>Type of Actual Value:</para></entry></row>
+ </thead>
+ <tbody>
+ <row><entry></entry><entry></entry></row>
+ </tbody>
+</tgroup>
+<tgroup cols="6">
+ <colspec colwidth="16.6*"/>
+ <colspec colwidth="16.6*"/>
+ <colspec colwidth="19.8*"/>
+ <colspec colwidth="15*"/>
+ <colspec colwidth="15*"/>
+ <colspec colwidth="16.6*"/>
+ <thead>
+ <row>
+ <entry></entry>
+ <entry></entry>
+ <entry><para>String</para></entry>
+ <entry><para>Number</para></entry>
+ <entry><para>Array</para></entry>
+ <entry><para>Undefined</para></entry>
+ </row>
+ </thead>
+ <tbody>
+ <row>
+ <entry></entry>
+ <entry><para><emphasis role="bold">String</emphasis></para></entry>
+ <entry><para>String</para></entry>
+ <entry><para>String</para></entry>
+ <entry><para>false</para></entry>
+ <entry><para>false</para></entry>
+ </row>
+ <row>
+ <entry></entry>
+ <entry><para><emphasis role="bold">Number</emphasis></para></entry>
+ <entry><para>Number if can be converted, else false</para></entry>
+ <entry><para>Number</para></entry>
+ <entry><para>false</para></entry>
+ <entry><para>false</para></entry>
+ </row>
+ <row>
+ <entry><para><emphasis role="bold">Type</emphasis></para></entry>
+ <entry><para><emphasis role="bold">Array</emphasis></para></entry>
+ <entry><para>false</para></entry>
+ <entry><para>false</para></entry>
+ <entry><para>Array</para></entry>
+ <entry><para>false</para></entry>
+ </row>
+ <row>
+ <entry><para><emphasis role="bold">Requested:</emphasis></para></entry>
+ <entry><para><emphasis role="bold">Scalar</emphasis></para></entry>
+ <entry><para>Scalar</para></entry>
+ <entry><para>Scalar</para></entry>
+ <entry><para>false</para></entry>
+ <entry><para>false</para></entry>
+ </row>
+ <row>
+ <entry></entry>
+ <entry><para><emphasis role="bold">Undefined</emphasis></para></entry>
+ <entry><para>String</para></entry>
+ <entry><para>Number</para></entry>
+ <entry><para>Array</para></entry>
+ <entry><para>Undefined</para></entry>
+ </row>
+ <row>
+ <entry></entry>
+ <entry><para><emphasis role="bold">Value Cookie</emphasis></para></entry>
+ <entry><para>false</para></entry>
+ <entry><para>false</para></entry>
+ <entry><para>false</para>
+ </entry><entry><para>false</para></entry>
+ </row>
+ </tbody>
+</tgroup>
+</informaltable>
+@end docbook
+
@ifnotplaintext
+@ifnotdocbook
@float Table,table-value-types-returned
@caption{Value Types Returned}
@multitable @columnfractions .50 .50
@@ -28861,6 +29527,7 @@ value type, as appropriate. This behavior is summarized in
@item @tab @b{Value Cookie} @tab false @tab false @tab false @tab false
@end multitable
@end float
+@end ifnotdocbook
@end ifnotplaintext
@ifplaintext
@float Table,table-value-types-returned
@@ -28891,45 +29558,46 @@ value type, as appropriate. This behavior is summarized in
@end float
@end ifplaintext
-@node Constructor Functions
-@subsection Constructor Functions and Convenience Macros
+@node Memory Allocation Functions
+@subsection Memory Allocation Functions and Convenience Macros
+@cindex allocating memory for extensions
+@cindex extensions, allocating memory
-The API provides a number of @dfn{constructor} functions for creating
-string and numeric values, as well as a number of convenience macros.
-This @value{SUBSECTION} presents them all as function prototypes, in
-the way that extension code would use them.
+The API provides a number of @dfn{memory allocation} functions for
+allocating memory that can be passed to @command{gawk}, as well as a number of
+convenience macros.
@table @code
-@item static inline awk_value_t *
-@itemx make_const_string(const char *string, size_t length, awk_value_t *result)
-This function creates a string value in the @code{awk_value_t} variable
-pointed to by @code{result}. It expects @code{string} to be a C string constant
-(or other string data), and automatically creates a @emph{copy} of the data
-for storage in @code{result}. It returns @code{result}.
+@item void *gawk_malloc(size_t size);
+Call @command{gawk}-provided @code{api_malloc()} to allocate storage that may
+be passed to @command{gawk}.
-@item static inline awk_value_t *
-@itemx make_malloced_string(const char *string, size_t length, awk_value_t *result)
-This function creates a string value in the @code{awk_value_t} variable
-pointed to by @code{result}. It expects @code{string} to be a @samp{char *}
-value pointing to data previously obtained from @code{malloc()}. The idea here
-is that the data is passed directly to @command{gawk}, which assumes
-responsibility for it. It returns @code{result}.
+@item void *gawk_calloc(size_t nmemb, size_t size);
+Call @command{gawk}-provided @code{api_calloc()} to allocate storage that may
+be passed to @command{gawk}.
-@item static inline awk_value_t *
-@itemx make_null_string(awk_value_t *result)
-This specialized function creates a null string (the ``undefined'' value)
-in the @code{awk_value_t} variable pointed to by @code{result}.
-It returns @code{result}.
+@item void *gawk_realloc(void *ptr, size_t size);
+Call @command{gawk}-provided @code{api_realloc()} to allocate storage that may
+be passed to @command{gawk}.
-@item static inline awk_value_t *
-@itemx make_number(double num, awk_value_t *result)
-This function simply creates a numeric value in the @code{awk_value_t} variable
-pointed to by @code{result}.
+@item void gawk_free(void *ptr);
+Call @command{gawk}-provided @code{api_free()} to release storage that was
+allocated with @code{gawk_malloc()}, @code{gawk_calloc()} or @code{gawk_realloc()}.
@end table
-Two convenience macros may be used for allocating storage from @code{malloc()}
-and @code{realloc()}. If the allocation fails, they cause @command{gawk} to
-exit with a fatal error message. They should be used as if they were
+The API has to provide these functions because it is possible
+for an extension to be compiled and linked against a different
+version of the C library than was used for the @command{gawk}
+executable.@footnote{This is more common on MS-Windows systems, but
+can happen on Unix-like systems as well.} If @command{gawk} were
+to use its version of @code{free()} when the memory came from an
+unrelated version of @code{malloc()}, unexpected behavior would
+likely result.
+
+Two convenience macros may be used for allocating storage
+from the API-provided function pointers @code{api_malloc()} and
+@code{api_realloc()}. If the allocation fails, they cause @command{gawk}
+to exit with a fatal error message. They should be used as if they were
procedure calls that do not return a value.
@table @code
@@ -28941,7 +29609,7 @@ The arguments to this macro are as follows:
The pointer variable to point at the allocated storage.
@item type
-The type of the pointer variable, used to create a cast for the call to @code{malloc()}.
+The type of the pointer variable, used to create a cast for the call to @code{api_malloc()}.
@item size
The total number of bytes to be allocated.
@@ -28965,13 +29633,51 @@ make_malloced_string(message, strlen(message), & result);
@end example
@item #define erealloc(pointer, type, size, message) @dots{}
-This is like @code{emalloc()}, but it calls @code{realloc()},
-instead of @code{malloc()}.
+This is like @code{emalloc()}, but it calls @code{api_realloc()},
+instead of @code{api_malloc()}.
The arguments are the same as for the @code{emalloc()} macro.
@end table
+@node Constructor Functions
+@subsection Constructor Functions
+
+The API provides a number of @dfn{constructor} functions for creating
+string and numeric values, as well as a number of convenience macros.
+This @value{SUBSECTION} presents them all as function prototypes, in
+the way that extension code would use them.
+
+@table @code
+@item static inline awk_value_t *
+@itemx make_const_string(const char *string, size_t length, awk_value_t *result)
+This function creates a string value in the @code{awk_value_t} variable
+pointed to by @code{result}. It expects @code{string} to be a C string constant
+(or other string data), and automatically creates a @emph{copy} of the data
+for storage in @code{result}. It returns @code{result}.
+
+@item static inline awk_value_t *
+@itemx make_malloced_string(const char *string, size_t length, awk_value_t *result)
+This function creates a string value in the @code{awk_value_t} variable
+pointed to by @code{result}. It expects @code{string} to be a @samp{char *}
+value pointing to data previously obtained from the api-provided functions @code{api_malloc()}, @code{api_calloc()} or @code{api_realloc()}. The idea here
+is that the data is passed directly to @command{gawk}, which assumes
+responsibility for it. It returns @code{result}.
+
+@item static inline awk_value_t *
+@itemx make_null_string(awk_value_t *result)
+This specialized function creates a null string (the ``undefined'' value)
+in the @code{awk_value_t} variable pointed to by @code{result}.
+It returns @code{result}.
+
+@item static inline awk_value_t *
+@itemx make_number(double num, awk_value_t *result)
+This function simply creates a numeric value in the @code{awk_value_t} variable
+pointed to by @code{result}.
+@end table
+
@node Registration Functions
@subsection Registration Functions
+@cindex register extension
+@cindex extension registration
This @value{SECTION} describes the API functions for
registering parts of your extension with @command{gawk}.
@@ -29016,8 +29722,8 @@ Letter case in function names is significant.
This is a pointer to the C function that provides the desired
functionality.
The function must fill in the result with either a number
-or a string. @command{awk} takes ownership of any string memory.
-As mentioned earlier, string memory @strong{must} come from @code{malloc()}.
+or a string. @command{gawk} takes ownership of any string memory.
+As mentioned earlier, string memory @strong{must} come from the api-provided functions @code{api_malloc()}, @code{api_calloc()} or @code{api_realloc()}.
The @code{num_actual_args} argument tells the C function how many
actual parameters were passed from the calling @command{awk} code.
@@ -29093,6 +29799,7 @@ is invoked with the @option{--version} option.
@node Input Parsers
@subsubsection Customized Input Parsers
+@cindex customized input parser
By default, @command{gawk} reads text files as its input. It uses the value
of @code{RS} to find the end of the record, and then uses @code{FS}
@@ -29340,7 +30047,9 @@ Register the input parser pointed to by @code{input_parser} with
@node Output Wrappers
@subsubsection Customized Output Wrappers
+@cindex customized output wrapper
+@cindex output wrapper
An @dfn{output wrapper} is the mirror image of an input parser.
It allows an extension to take over the output to a file opened
with the @samp{>} or @samp{>>} I/O redirection operators (@pxref{Redirection}).
@@ -29454,6 +30163,7 @@ Register the output wrapper pointed to by @code{output_wrapper} with
@node Two-way processors
@subsubsection Customized Two-way Processors
+@cindex customized two-way processor
A @dfn{two-way processor} combines an input parser and an output wrapper for
two-way I/O with the @samp{|&} operator (@pxref{Redirection}). It makes identical
@@ -29511,6 +30221,8 @@ Register the two-way processor pointed to by @code{two_way_processor} with
@node Printing Messages
@subsection Printing Messages
+@cindex printing messages from extensions
+@cindex messages from extensions
You can print different kinds of warning messages from your
extension, as described below. Note that for these functions,
@@ -29584,6 +30296,7 @@ for more information on creating arrays.
@node Symbol Table Access
@subsection Symbol Table Access
+@cindex accessing global variables from extensions
Two sets of routines provide access to global variables, and one set
allows you to create and release cached values.
@@ -29629,6 +30342,13 @@ An extension can look up the value of @command{gawk}'s special variables.
However, with the exception of the @code{PROCINFO} array, an extension
cannot change any of those variables.
+@quotation NOTE
+It is possible for the lookup of @code{PROCINFO} to fail. This happens if
+the @command{awk} program being run does not reference @code{PROCINFO};
+in this case @command{gawk} doesn't bother to create the array and
+populate it.
+@end quotation
+
@node Symbol table by cookie
@subsubsection Variable Access and Update by Cookie
@@ -29755,7 +30475,7 @@ assign those values to variables using @code{sym_update()}
or @code{sym_update_scalar()}, as you like.
However, you can understand the point of cached values if you remember that
-@emph{every} string value's storage @emph{must} come from @code{malloc()}.
+@emph{every} string value's storage @emph{must} come from @code{api_malloc()}, @code{api_calloc()} or @code{api_realloc()}.
If you have 20 variables, all of which have the same string value, you
must create 20 identical copies of the string.@footnote{Numeric values
are clearly less problematic, requiring only a C @code{double} to store.}
@@ -29841,6 +30561,7 @@ you should release any cached values that you created, using
@node Array Manipulation
@subsection Array Manipulation
+@cindex array manipulation in extensions
The primary data structure@footnote{Okay, the only data structure.} in @command{awk}
is the associative array (@pxref{Arrays}).
@@ -29952,7 +30673,7 @@ requires that you understand how such values are converted to strings
(@pxref{Conversion}); thus using integral values is safest.
As with @emph{all} strings passed into @code{gawk} from an extension,
-the string value of @code{index} must come from @code{malloc()}, and
+the string value of @code{index} must come from the API-provided functions @code{api_malloc()}, @code{api_calloc()} or @code{api_realloc()} and
@command{gawk} releases the storage.
@item awk_bool_t set_array_element(awk_array_t a_cookie,
@@ -30420,6 +31141,8 @@ information about how @command{gawk} was invoked.
@node Extension Versioning
@subsubsection API Version Constants and Variables
+@cindex API version
+@cindex extension API version
The API provides both a ``major'' and a ``minor'' version number.
The API versions are available at compile time as constants:
@@ -30473,6 +31196,8 @@ provided in @file{gawkapi.h} (discussed later, in
@node Extension API Informational Variables
@subsubsection Informational Variables
+@cindex API informational variables
+@cindex extension API informational variables
The API provides access to several variables that describe
whether the corresponding command-line options were enabled when
@@ -30618,6 +31343,8 @@ the version string with @command{gawk}.
@node Finding Extensions
@section How @command{gawk} Finds Extensions
+@cindex extension search path
+@cindex finding extensions
Compiled extensions have to be installed in a directory where
@command{gawk} can find them. If @command{gawk} is configured and
@@ -30628,10 +31355,11 @@ path with a list of directories to search for compiled extensions.
@node Extension Example
@section Example: Some File Functions
+@cindex extension example
@quotation
-@i{No matter where you go, there you are.} @*
-Buckaroo Bonzai
+@i{No matter where you go, there you are.}
+@author Buckaroo Bonzai
@end quotation
@c It's enough to show chdir and stat, no need for fts
@@ -31086,7 +31814,7 @@ do_stat(int nargs, awk_value_t *result)
awk_array_t array;
int ret;
struct stat sbuf;
- /* default is stat() */
+ /* default is lstat() */
int (*statfunc)(const char *path, struct stat *sbuf) = lstat;
assert(result != NULL);
@@ -31272,6 +32000,7 @@ $ @kbd{AWKLIBPATH=$PWD gawk -f testff.awk}
@node Extension Samples
@section The Sample Extensions In The @command{gawk} Distribution
+@cindex extensions distributed with @command{gawk}
This @value{SECTION} provides brief overviews of the sample extensions
that come in the @command{gawk} distribution. Some of them are intended
@@ -31306,15 +32035,15 @@ The usage is:
@item @@load "filefuncs"
This is how you load the extension.
-@cindex @code{chdir} extension function
+@cindex @code{chdir()} extension function
@item result = chdir("/some/directory")
The @code{chdir()} function is a direct hook to the @code{chdir()}
system call to change the current directory. It returns zero
upon success or less than zero upon error. In the latter case it updates
@code{ERRNO}.
-@cindex @code{stat} extension function
-@item result = stat("/some/path", statdata [, follow])
+@cindex @code{stat()} extension function
+@item result = stat("/some/path", statdata @r{[}, follow@r{]})
The @code{stat()} function provides a hook into the
@code{stat()} system call.
It returns zero upon success or less than zero upon error.
@@ -31403,7 +32132,7 @@ or
Not all systems support all file types.
@end multitable
-@cindex @code{fts} extension function
+@cindex @code{fts()} extension function
@item flags = or(FTS_PHYSICAL, ...)
@itemx result = fts(pathlist, flags, filedata)
Walk the file trees provided in @code{pathlist} and fill in the
@@ -31414,7 +32143,7 @@ Return zero if there were no errors, otherwise return @minus{}1.
The @code{fts()} function provides a hook to the C library @code{fts()}
routines for traversing file hierarchies. Instead of returning data
-about one file at a time in a stream, it fills in a multi-dimensional
+about one file at a time in a stream, it fills in a multidimensional
array with data about each file and directory encountered in the requested
hierarchies.
@@ -31515,7 +32244,7 @@ be more comfortable to use from an @command{awk} program. This includes the
lack of a comparison function, since @command{gawk} already provides
powerful array sorting facilities. While an @code{fts_read()}-like
interface could have been provided, this felt less natural than simply
-creating a multi-dimensional array to represent the file hierarchy and
+creating a multidimensional array to represent the file hierarchy and
its information.
@end quotation
@@ -31524,19 +32253,23 @@ See @file{test/fts.awk} in the @command{gawk} distribution for an example.
@node Extension Sample Fnmatch
@subsection Interface To @code{fnmatch()}
-@cindex @code{fnmatch} extension function
This extension provides an interface to the C library
@code{fnmatch()} function. The usage is:
-@example
-@@load "fnmatch"
+@table @code
+@item @@load "fnmatch"
+This is how you load the extension.
-result = fnmatch(pattern, string, flags)
-@end example
+@cindex @code{fnmatch()} extension function
+@item result = fnmatch(pattern, string, flags)
+The return value is zero on success, @code{FNM_NOMATCH}
+if the string did not match the pattern, or
+a different non-zero value if an error occurred.
+@end table
-The @code{fnmatch} extension adds a single function named
-@code{fnmatch()}, one constant (@code{FNM_NOMATCH}), and an array of
-flag values named @code{FNM}.
+Besides the @code{fnmatch()} function, the @code{fnmatch} extension
+adds one constant (@code{FNM_NOMATCH}), and an array of flag values
+named @code{FNM}.
The arguments to @code{fnmatch()} are:
@@ -31552,10 +32285,6 @@ Either zero, or the bitwise OR of one or more of the
flags in the @code{FNM} array.
@end table
-The return value is zero on success, @code{FNM_NOMATCH}
-if the string did not match the pattern, or
-a different non-zero value if an error occurred.
-
The flags are follows:
@multitable @columnfractions .25 .75
@@ -31597,21 +32326,21 @@ The @code{fork} extension adds three functions, as follows.
@item @@load "fork"
This is how you load the extension.
-@cindex @code{fork} extension function
+@cindex @code{fork()} extension function
@item pid = fork()
-This function creates a new process. The return value is the zero in the
-child and the process-id number of the child in the parent, or @minus{}1
+This function creates a new process. The return value is zero in the
+child and the process-ID number of the child in the parent, or @minus{}1
upon error. In the latter case, @code{ERRNO} indicates the problem.
In the child, @code{PROCINFO["pid"]} and @code{PROCINFO["ppid"]} are
updated to reflect the correct values.
-@cindex @code{waitpid} extension function
+@cindex @code{waitpid()} extension function
@item ret = waitpid(pid)
-This function takes a numeric argument, which is the process-id to
+This function takes a numeric argument, which is the process-ID to
wait for. The return value is that of the
@code{waitpid()} system call.
-@cindex @code{wait} extension function
+@cindex @code{wait()} extension function
@item ret = wait()
This function waits for the first child to die.
The return value is that of the
@@ -31698,11 +32427,11 @@ The @code{ordchr} extension adds two functions, named
@item @@load "ordchr"
This is how you load the extension.
-@cindex @code{ord} extension function
+@cindex @code{ord()} extension function
@item number = ord(string)
Return the numeric value of the first character in @code{string}.
-@cindex @code{chr} extension function
+@cindex @code{chr()} extension function
@item char = chr(number)
Return a string whose first character is that represented by @code{number}.
@end table
@@ -31819,14 +32548,14 @@ The @code{rwarray} extension adds two functions,
named @code{writea()} and @code{reada()}, as follows:
@table @code
-@cindex @code{writea} extension function
+@cindex @code{writea()} extension function
@item ret = writea(file, array)
This function takes a string argument, which is the name of the file
to which dump the array, and the array itself as the second argument.
@code{writea()} understands multidimensional arrays. It returns one on
success, or zero upon failure.
-@cindex @code{reada} extension function
+@cindex @code{reada()} extension function
@item ret = reada(file, array)
@code{reada()} is the inverse of @code{writea()};
it reads the file named as its first argument, filling in
@@ -31863,17 +32592,23 @@ ret = reada("arraydump.bin", array)
@subsection Reading An Entire File
The @code{readfile} extension adds a single function
-named @code{readfile()}:
+named @code{readfile()}, and an input parser:
@table @code
@item @@load "readfile"
This is how you load the extension.
-@cindex @code{readfile} extension function
+@cindex @code{readfile()} extension function
@item result = readfile("/some/path")
The argument is the name of the file to read. The return value is a
string containing the entire contents of the requested file. Upon error,
the function returns the empty string and sets @code{ERRNO}.
+
+@item BEGIN @{ PROCINFO["readfile"] = 1 @}
+In addition, the extension adds an input parser that is activated if
+@code{PROCINFO["readfile"]} exists.
+When activated, each input file is returned in its entirety as @code{$0}.
+@code{RT} is set to the null string.
@end table
Here is an example:
@@ -31910,7 +32645,7 @@ inserting @samp{@@load "time"} in your script.
@item @@load "time"
This is how you load the extension.
-@cindex @code{gettimeofday} extension function
+@cindex @code{gettimeofday()} extension function
@item the_time = gettimeofday()
Return the time in seconds that has elapsed since 1970-01-01 UTC as a
floating point value. If the time is unavailable on this platform, return
@@ -31920,7 +32655,7 @@ If the standard C @code{gettimeofday()} system call is available on this
platform, then it simply returns the value. Otherwise, if on Windows,
it tries to use @code{GetSystemTimeAsFileTime()}.
-@cindex @code{sleep} extension function
+@cindex @code{sleep()} extension function
@item result = sleep(@var{seconds})
Attempt to sleep for @var{seconds} seconds. If @var{seconds} is negative,
or the attempt to sleep fails, return @minus{}1 and set @code{ERRNO}.
@@ -31932,6 +32667,8 @@ tries to use @code{nanosleep()} or @code{select()} to implement the delay.
@node gawkextlib
@section The @code{gawkextlib} Project
+@cindex @code{gawkextlib}
+@cindex extensions, where to find
@cindex @code{gawkextlib} project
The @uref{http://sourceforge.net/projects/gawkextlib/, @code{gawkextlib}}
@@ -31939,7 +32676,7 @@ project provides a number of @command{gawk} extensions, including one for
processing XML files. This is the evolution of the original @command{xgawk}
(XML @command{gawk}) project.
-As of this writing, there are four extensions:
+As of this writing, there are five extensions:
@itemize @bullet
@item
@@ -31947,6 +32684,9 @@ XML parser extension, using the @uref{http://expat.sourceforge.net, Expat}
XML parsing library.
@item
+PDF extension.
+
+@item
PostgreSQL extension.
@item
@@ -31962,6 +32702,7 @@ The @code{time} extension described earlier (@pxref{Extension Sample
Time}) was originally from this project but has been moved in to the
main @command{gawk} distribution.
+@cindex @command{git} utility
You can check out the code for the @code{gawkextlib} project
using the @uref{http://git-scm.com, GIT} distributed source
code control system. The command is as follows:
@@ -32076,6 +32817,7 @@ of the @value{DOCUMENT} where you can find more information.
@command{awk}.
* POSIX/GNU:: The extensions in @command{gawk} not in POSIX
@command{awk}.
+* Feature History:: The history of the features in @command{gawk}.
* Common Extensions:: Common Extensions Summary.
* Ranges and Locales:: How locales used to affect regexp ranges.
* Contributors:: The major contributors to @command{gawk}.
@@ -32173,7 +32915,7 @@ Multiple @code{BEGIN} and @code{END} rules
@item
Multidimensional arrays
-(@pxref{Multi-dimensional}).
+(@pxref{Multidimensional}).
@end itemize
@c ENDOFRANGE gawkv1
@@ -32380,7 +33122,7 @@ Special files in I/O redirections:
@itemize @minus{}
@item
The @file{/dev/stdin}, @file{/dev/stdout}, @file{/dev/stderr} and
-@file{/dev/fd/@var{N}} special @value{FN}s
+@file{/dev/fd/@var{N}} special file names
(@pxref{Special Files}).
@item
@@ -32604,7 +33346,7 @@ long options
@item
Support for the following obsolete systems was removed from the code
-and the documentation for @command{gawk} @value{PVERSION} 4.0:
+and the documentation for @command{gawk} version 4.0:
@c nested table
@itemize @minus
@@ -32641,6 +33383,9 @@ Tandem (non-POSIX)
@item
Prestandard VAX C compiler for VAX/VMS
+@item
+GCC for VAX and Alpha has not been tested for a while.
+
@end itemize
@end itemize
@@ -32651,6 +33396,612 @@ Prestandard VAX C compiler for VAX/VMS
@c ENDOFRANGE exgnot
@c ENDOFRANGE posnot
+@node Feature History
+@appendixsec History of @command{gawk} Features
+
+@ignore
+See the thread:
+https://groups.google.com/forum/#!topic/comp.lang.awk/SAUiRuff30c
+This motivated me to add this section.
+@end ignore
+
+@ignore
+I've tried to follow this general order, esp.@: for the 3.0 and 3.1 sections:
+ variables
+ special files
+ language changes (e.g., hex constants)
+ differences in standard awk functions
+ new gawk functions
+ new keywords
+ new command-line options
+ behavioral changes
+ new ports
+Within each category, be alphabetical.
+@end ignore
+
+This @value{SECTION} describes the features in @command{gawk}
+over and above those in POSIX @command{awk},
+in the order they were added to @command{gawk}.
+
+Version 2.10 of @command{gawk} introduced the following features:
+
+@itemize @bullet
+@item
+The @env{AWKPATH} environment variable for specifying a path search for
+the @option{-f} command-line option
+(@pxref{Options}).
+
+@item
+The @code{IGNORECASE} variable and its effects
+(@pxref{Case-sensitivity}).
+
+@item
+The @file{/dev/stdin}, @file{/dev/stdout}, @file{/dev/stderr} and
+@file{/dev/fd/@var{N}} special file names
+(@pxref{Special Files}).
+@end itemize
+
+Version 2.13 of @command{gawk} introduced the following features:
+
+@itemize @bullet
+@item
+The @code{FIELDWIDTHS} variable and its effects
+(@pxref{Constant Size}).
+
+@item
+The @code{systime()} and @code{strftime()} built-in functions for obtaining
+and printing timestamps
+(@pxref{Time Functions}).
+
+@item
+Additional command-line options
+(@pxref{Options}):
+
+@itemize @minus
+@item
+The @option{-W lint} option to provide error and portability checking
+for both the source code and at runtime.
+
+@item
+The @option{-W compat} option to turn off the GNU extensions.
+
+@item
+The @option{-W posix} option for full POSIX compliance.
+@end itemize
+@end itemize
+
+Version 2.14 of @command{gawk} introduced the following feature:
+
+@itemize @bullet
+@item
+The @code{next file} statement for skipping to the next data file
+(@pxref{Nextfile Statement}).
+@end itemize
+
+Version 2.15 of @command{gawk} introduced the following features:
+
+@itemize @bullet
+@item
+New variables (@pxref{Built-in Variables}):
+
+@itemize @minus
+@item
+@code{ARGIND}, which tracks the movement of @code{FILENAME}
+through @code{ARGV}.
+
+@item
+@code{ERRNO}, which contains the system error message when
+@code{getline} returns @minus{}1 or @code{close()} fails.
+@end itemize
+
+@item
+The @file{/dev/pid}, @file{/dev/ppid}, @file{/dev/pgrpid}, and
+@file{/dev/user} special file names. These have since been removed.
+
+@item
+The ability to delete all of an array at once with @samp{delete @var{array}}
+(@pxref{Delete}).
+
+@item
+Command line option changes
+(@pxref{Options}):
+
+@itemize @minus
+@item
+The ability to use GNU-style long-named options that start with @option{--}.
+
+@item
+The @option{--source} option for mixing command-line and library-file
+source code.
+@end itemize
+@end itemize
+
+Version 3.0 of @command{gawk} introduced the following features:
+
+@itemize @bullet
+@item
+New or changed variables:
+
+@itemize @minus
+@item
+@code{IGNORECASE} changed, now applying to string comparison as well
+as regexp operations
+(@pxref{Case-sensitivity}).
+
+@item
+@code{RT}, which contains the input text that matched @code{RS}
+(@pxref{Records}).
+@end itemize
+
+@item
+Full support for both POSIX and GNU regexps
+(@pxref{Regexp}).
+
+@item
+The @code{gensub()} function for more powerful text manipulation
+(@pxref{String Functions}).
+
+@item
+The @code{strftime()} function acquired a default time format,
+allowing it to be called with no arguments
+(@pxref{Time Functions}).
+
+@item
+The ability for @code{FS} and for the third
+argument to @code{split()} to be null strings
+(@pxref{Single Character Fields}).
+
+@item
+The ability for @code{RS} to be a regexp
+(@pxref{Records}).
+
+@item
+The @code{next file} statement became @code{nextfile}
+(@pxref{Nextfile Statement}).
+
+@item
+The @code{fflush()} function from the
+Bell Laboratories research version of @command{awk}
+(@pxref{I/O Functions}).
+
+@item
+New command line options:
+
+@itemize @minus
+@item
+The @option{--lint-old} option to
+warn about constructs that are not available in
+the original Version 7 Unix version of @command{awk}
+(@pxref{V7/SVR3.1}).
+
+@item
+The @option{-m} option from the
+Bell Laboratories research version of @command{awk}
+This was later removed.
+
+@item
+The @option{--re-interval} option to provide interval expressions in regexps
+(@pxref{Regexp Operators}).
+
+@item
+The @option{--traditional} option was added as a better name for
+@option{--compat} (@pxref{Options}).
+@end itemize
+
+@item
+The use of GNU Autoconf to control the configuration process
+(@pxref{Quick Installation}).
+
+@item
+Amiga support.
+
+@end itemize
+
+Version 3.1 of @command{gawk} introduced the following features:
+
+@itemize @bullet
+@item
+New variables
+(@pxref{Built-in Variables}):
+
+@itemize @minus
+@item
+@code{BINMODE}, for non-POSIX systems,
+which allows binary I/O for input and/or output files
+(@pxref{PC Using}).
+
+@item
+@code{LINT}, which dynamically controls lint warnings.
+
+@item
+@code{PROCINFO}, an array for providing process-related information.
+
+@item
+@code{TEXTDOMAIN}, for setting an application's internationalization text domain
+(@pxref{Internationalization}).
+@end itemize
+
+@item
+The ability to use octal and hexadecimal constants in @command{awk}
+program source code
+(@pxref{Nondecimal-numbers}).
+
+@item
+The @samp{|&} operator for two-way I/O to a coprocess
+(@pxref{Two-way I/O}).
+
+@item
+The @file{/inet} special files for TCP/IP networking using @samp{|&}
+(@pxref{TCP/IP Networking}).
+
+@item
+The optional second argument to @code{close()} that allows closing one end
+of a two-way pipe to a coprocess
+(@pxref{Two-way I/O}).
+
+@item
+The optional third argument to the @code{match()} function
+for capturing text-matching subexpressions within a regexp
+(@pxref{String Functions}).
+
+@item
+Positional specifiers in @code{printf} formats for
+making translations easier
+(@pxref{Printf Ordering}).
+
+@item
+A number of new built-in functions:
+
+@itemize @minus
+@item
+The @code{asort()} and @code{asorti()} functions for sorting arrays
+(@pxref{Array Sorting}).
+
+@item
+The @code{bindtextdomain()}, @code{dcgettext()} and @code{dcngettext()} functions
+for internationalization
+(@pxref{Programmer i18n}).
+
+@item
+The @code{extension()} function and the ability to add
+new built-in functions dynamically
+(@pxref{Dynamic Extensions}).
+
+@item
+The @code{mktime()} function for creating timestamps
+(@pxref{Time Functions}).
+
+@item
+The @code{and()}, @code{or()}, @code{xor()}, @code{compl()},
+@code{lshift()}, @code{rshift()}, and @code{strtonum()} functions
+(@pxref{Bitwise Functions}).
+@end itemize
+
+@item
+@cindex @code{next file} statement
+The support for @samp{next file} as two words was removed completely
+(@pxref{Nextfile Statement}).
+
+@item
+Additional commnd line options
+(@pxref{Options}):
+
+@itemize @minus
+@item
+The @option{--dump-variables} option to print a list of all global variables.
+
+@item
+The @option{--exec} option, for use in CGI scripts.
+
+@item
+The @option{--gen-po} command-line option and the use of a leading
+underscore to mark strings that should be translated
+(@pxref{String Extraction}).
+
+@item
+The @option{--non-decimal-data} option to allow non-decimal
+input data
+(@pxref{Nondecimal Data}).
+
+@item
+The @option{--profile} option and @command{pgawk}, the
+profiling version of @command{gawk}, for producing execution
+profiles of @command{awk} programs
+(@pxref{Profiling}).
+
+@item
+The @option{--use-lc-numeric} option to force @command{gawk}
+to use the locale's decimal point for parsing input data
+(@pxref{Conversion}).
+@end itemize
+
+@item
+The use of GNU Automake to help in standardizing the configuration process
+(@pxref{Quick Installation}).
+
+@item
+The use of GNU @code{gettext} for @command{gawk}'s own message output
+(@pxref{Gawk I18N}).
+
+@item
+BeOS support. This was later removed.
+
+@item
+Tandem support. This was later removed.
+
+@item
+The Atari port became officially unsupported.
+
+@item
+The source code changed to use ISO C standard-style function definitions.
+
+@item
+POSIX compliance for @code{sub()} and @code{gsub()}
+(@pxref{Gory Details}).
+
+@item
+The @code{length()} function was extended to accept an array argument
+and return the number of elements in the array
+(@pxref{String Functions}).
+
+@item
+The @code{strftime()} function acquired a third argument to
+enable printing times as UTC
+(@pxref{Time Functions}).
+@end itemize
+
+Version 4.0 of @command{gawk} introduced the following features:
+
+@itemize @bullet
+
+@item
+Variable additions:
+
+@itemize @minus
+@item
+@code{FPAT}, which allows you to specify a regexp that matches
+the fields, instead of matching the field separator
+(@pxref{Splitting By Content}).
+
+@item
+If @code{PROCINFO["sorted_in"]} exists, @samp{for(iggy in foo)} loops sort the
+indices before looping over them. The value of this element
+provides control over how the indices are sorted before the loop
+traversal starts
+(@pxref{Controlling Scanning}).
+
+@item
+@code{PROCINFO["strftime"]}, which holds
+the default format for @code{strftime()}
+(@pxref{Time Functions}).
+@end itemize
+
+@item
+The special files @file{/dev/pid}, @file{/dev/ppid}, @file{/dev/pgrpid}
+and @file{/dev/user} were removed.
+
+@item
+Support for IPv6 was added via the @file{/inet6} special file.
+@file{/inet4} forces IPv4 and @file{/inet} chooses the system
+default, which is probably IPv4
+(@pxref{TCP/IP Networking}).
+
+@item
+The use of @samp{\s} and @samp{\S} escape sequences in regular expressions
+(@pxref{GNU Regexp Operators}).
+
+@item
+Interval expressions became part of default regular expressions
+(@pxref{Regexp Operators}).
+
+@item
+POSIX character classes work even with @option{--traditional}
+(@pxref{Regexp Operators}).
+
+@item
+@code{break} and @code{continue} became invalid outside a loop,
+even with @option{--traditional}
+(@pxref{Break Statement}, and also see
+@ref{Continue Statement}).
+
+@item
+@code{fflush()}, @code{nextfile}, and @samp{delete @var{array}}
+are allowed if @option{--posix} or @option{--traditional}, since they
+are all now part of POSIX.
+
+@item
+An optional third argument to
+@code{asort()} and @code{asorti()}, specifying how to sort
+(@pxref{String Functions}).
+
+@item
+The behavior of @code{fflush()} changed to match Brian Kernighan's @command{awk}
+and for POSIX; now both @samp{fflush()} and @samp{fflush("")}
+flush all open output redirections
+(@pxref{I/O Functions}).
+
+@item
+The @code{isarray()}
+function which distinguishes if an item is an array
+or not, to make it possible to traverse multidimensional arrays
+(@pxref{Type Functions}).
+
+@item
+The @code{patsplit()}
+function which gives the same capability as @code{FPAT}, for splitting
+(@pxref{String Functions}).
+
+@item
+An optional fourth argument to the @code{split()} function,
+which is an array to hold the values of the separators
+(@pxref{String Functions}).
+
+@item
+Arrays of arrays
+(@pxref{Arrays of Arrays}).
+
+@item
+The @code{BEGINFILE} and @code{ENDFILE} special patterns
+(@pxref{BEGINFILE/ENDFILE}).
+
+@item
+Indirect function calls
+(@pxref{Indirect Calls}).
+
+@item
+@code{switch} / @code{case} are enabled by default
+(@pxref{Switch Statement}).
+
+@item
+Command line option changes
+(@pxref{Options}):
+
+@itemize @minus
+@item
+The @option{-b} and @option{--characters-as-bytes} options
+which prevent @command{gawk} from treating input as a multibyte string.
+
+@item
+The redundant @option{--compat}, @option{--copyleft}, and @option{--usage}
+long options were removed.
+
+@item
+The @option{--gen-po} option was finally renamed to the correct @option{--gen-pot}.
+
+@item
+The @option{--sandbox} option which disables certain features.
+
+@item
+All long options acquired corresponding short options, for use in @samp{#!} scripts.
+@end itemize
+
+@item
+Directories named on the command line now produce a warning, not a fatal
+error, unless @option{--posix} or @option{--traditional} are used
+(@pxref{Command line directories}).
+
+@item
+The @command{gawk} internals were rewritten, bringing the @command{dgawk}
+debugger and possibly improved performance
+(@pxref{Debugger}).
+
+@item
+Per the GNU Coding Standards, dynamic extensions must now define
+a global symbol indicating that they are GPL-compatible
+(@pxref{Plugin License}).
+
+@item
+In POSIX mode, string comparisons use @code{strcoll()} / @code{wcscoll()}
+(@pxref{POSIX String Comparison}).
+
+@item
+The option for raw sockets was removed, since it was never implemented
+(@pxref{TCP/IP Networking}).
+
+@item
+Ranges of the form @samp{[d-h]} are treated as if they were in the
+C locale, no matter what kind of regexp is being used, and even if
+@option{--posix}
+(@pxref{Ranges and Locales}).
+
+@item
+Support was removed for the following systems:
+
+@itemize @minus
+@item
+Atari
+
+@item
+Amiga
+
+@item
+BeOS
+
+@item
+Cray
+
+@item
+MIPS RiscOS
+
+@item
+MS-DOS with Microsoft Compiler
+
+@item
+MS-Windows with Microsoft Compiler
+
+@item
+NeXT
+
+@item
+SunOS 3.x, Sun 386 (Road Runner)
+
+@item
+Tandem (non-POSIX)
+
+@item
+Prestandard VAX C compiler for VAX/VMS
+@end itemize
+@end itemize
+
+Version 4.1 of @command{gawk} introduced the following features:
+
+@itemize @bullet
+
+@item
+Three new arrays:
+@code{SYMTAB}, @code{FUNCTAB}, and @code{PROCINFO["identifiers"]}
+(@pxref{Auto-set}).
+
+@item
+The three executables @command{gawk}, @command{pgawk}, and @command{dgawk}, were merged into
+one, named just @command{gawk}. As a result the command line options changed.
+
+@item
+Command line option changes
+(@pxref{Options}):
+
+@itemize @minus
+@item
+The @option{-D} option invokes the debugger.
+
+@item
+The @option{-i} and @option{--include} options
+load @command{awk} library files.
+
+@item
+The @option{-l} and @option{--load} options load compiled dynamic extensions.
+
+@item
+The @option{-M} and @option{--bignum} options enable MPFR.
+
+@item
+The @option{-o} only does pretty-printing.
+
+@item
+The @option{-p} option is used for profiling.
+
+@item
+The @option{-R} option was removed.
+@end itemize
+
+@item
+Support for high precision arithmetic with MPFR.
+(@pxref{Gawk and MPFR}).
+
+@item
+The @code{and()}, @code{or()} and @code{xor()} functions
+changed to allow any number of arguments,
+with a minimum of two
+(@pxref{Bitwise Functions}).
+
+@item
+The dynamic extension interface was completely redone
+(@pxref{Dynamic Extensions}).
+
+@end itemize
+
+@c XXX ADD MORE STUFF HERE
+
@node Common Extensions
@appendixsec Common Extensions Summary
@@ -32664,18 +34015,18 @@ the three most widely-used freely available versions of @command{awk}
@multitable {@file{/dev/stderr} special file} {BWK Awk} {Mawk} {GNU Awk}
@headitem Feature @tab BWK Awk @tab Mawk @tab GNU Awk
@item @samp{\x} Escape sequence @tab X @tab X @tab X
-@item @code{RS} as regexp @tab @tab X @tab X
@item @code{FS} as null string @tab X @tab X @tab X
-@item @file{/dev/stdin} special file @tab X @tab @tab X
+@item @file{/dev/stdin} special file @tab X @tab X @tab X
@item @file{/dev/stdout} special file @tab X @tab X @tab X
@item @file{/dev/stderr} special file @tab X @tab X @tab X
-@item @code{**} and @code{**=} operators @tab X @tab @tab X
+@item @code{delete} without subscript @tab X @tab X @tab X
@item @code{fflush()} function @tab X @tab X @tab X
-@item @code{func} keyword @tab X @tab @tab X
+@item @code{length()} of an array @tab X @tab X @tab X
@item @code{nextfile} statement @tab X @tab X @tab X
-@item @code{delete} without subscript @tab X @tab X @tab X
-@item @code{length()} of an array @tab X @tab @tab X
+@item @code{**} and @code{**=} operators @tab X @tab @tab X
+@item @code{func} keyword @tab X @tab @tab X
@item @code{BINMODE} variable @tab @tab X @tab X
+@item @code{RS} as regexp @tab @tab X @tab X
@item Time related functions @tab @tab X @tab X
@end multitable
@@ -32695,7 +34046,7 @@ character ranges (such as @samp{[a-z]}) to match any character between
the first character in the range and the last character in the range,
inclusive. Ordering was based on the numeric value of each character
in the machine's native character set. Thus, on ASCII-based systems,
-@code{[a-z]} matched all the lowercase letters, and only the lowercase
+@samp{[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 contiguous. (On an EBCDIC system, the range @samp{[a-z]}
includes additional, non-alphabetic characters as well.)
@@ -32706,7 +34057,7 @@ as working in this fashion, and in particular, would teach that the
that @samp{[A-Z]} was the ``correct'' way to match uppercase letters.
And indeed, this was true.@footnote{And Life was good.}
-The 1993 POSIX standard introduced the idea of locales (@pxref{Locales}).
+The 1992 POSIX standard introduced the idea of locales (@pxref{Locales}).
Since many locales include other letters besides the plain twenty-six
letters of the American English alphabet, the POSIX standard added
character classes (@pxref{Bracket Expressions}) as a way to match
@@ -32745,6 +34096,7 @@ This output is unexpected, since the @samp{bc} at the end of
This result is due to the locale setting (and thus you may not see
it on your system).
+@cindex Unicode
Similar considerations apply to other ranges. For example, @samp{["-/]}
is perfectly valid in ASCII, but is not valid in many Unicode locales,
such as @samp{en_US.UTF-8}.
@@ -32756,18 +34108,19 @@ When @command{gawk} switched to using locale-aware regexp matchers,
the problems began; especially as both GNU/Linux and commercial Unix
vendors started implementing non-ASCII locales, @emph{and making them
the default}. Perhaps the most frequently asked question became something
-like ``why does @code{[A-Z]} match lowercase letters?!?''
+like ``why does @samp{[A-Z]} match lowercase letters?!?''
+@cindex Berry, Karl
This situation existed for close to 10 years, if not more, and
the @command{gawk} maintainer grew weary of trying to explain that
@command{gawk} was being nicely standards-compliant, and that the issue
was in the user's locale. During the development of version 4.0,
he modified @command{gawk} to always treat ranges in the original,
pre-POSIX fashion, unless @option{--posix} was used (@pxref{Options}).@footnote{And
-thus was born the Campain for Rational Range Interpretation (or RRI). A number
-of GNU tools, such as @command{grep} and @command{sed}, have either
-implemented this change, or will soon. Thanks to Karl Berry for coining the phrase
-``Rational Range Interpretation.''}
+thus was born the Campaign for Rational Range Interpretation (or
+RRI). A number of GNU tools have either implemented this change,
+or will soon. Thanks to Karl Berry for coining the phrase ``Rational
+Range Interpretation.''}
Fortunately, shortly before the final release of @command{gawk} 4.0,
the maintainer learned that the 2008 standard had changed the
@@ -32780,15 +34133,15 @@ and
By using this lovely technical term, the standard gives license
to implementors to implement ranges in whatever way they choose.
The @command{gawk} maintainer chose to apply the pre-POSIX meaning in all
-cases: the default regexp matching; with @option{--traditional}, and with
+cases: the default regexp matching; with @option{--traditional} and with
@option{--posix}; in all cases, @command{gawk} remains POSIX compliant.
@node Contributors
@appendixsec Major Contributors to @command{gawk}
@cindex @command{gawk}, list of contributors to
@quotation
-@i{Always give credit where credit is due.}@*
-Anonymous
+@i{Always give credit where credit is due.}
+@author Anonymous
@end quotation
This @value{SECTION} names the major contributors to @command{gawk}
@@ -32976,6 +34329,15 @@ environments.
(This is no longer supported)
@item
+@cindex Wallin, Anders
+Anders Wallin helped keep the VMS port going for several years.
+
+@item
+@cindex Gordon, Assaf
+Assaf Gordon contributed the code to implement the
+@option{--sandbox} option.
+
+@item
@cindex Haque, John
John Haque made the following contributions:
@@ -32985,6 +34347,10 @@ The modifications to convert @command{gawk}
into a byte-code interpreter, including the debugger.
@item
+The addition of true multidimensional arrays.
+@ref{Arrays of Arrays}.
+
+@item
The additional modifications for support of arbitrary precision arithmetic.
@item
@@ -32997,6 +34363,10 @@ into one, for the 4.1 release.
@item
Improved array internals for arrays indexed by integers.
+
+@item
+The improved array sorting features were driven by John together
+with Pat Rankin.
@end itemize
@item
@@ -33011,6 +34381,11 @@ Arnold Robbins and Andrew Schorr, with notable contributions from
the rest of the development team.
@item
+@cindex Colombo, Antonio
+Antonio Giovanni Colombo rewrote a number of examples in the early
+chapters that were severely dated, for which I am incredibly grateful.
+
+@item
@cindex Robbins, Arnold
Arnold Robbins
has been working on @command{gawk} since 1988, at first
@@ -33021,7 +34396,7 @@ helping David Trueman, and as the primary maintainer since around 1994.
@appendix Installing @command{gawk}
@c last two commas are part of see also
-@cindex operating systems, See Also GNU/Linux, PC operating systems, Unix
+@cindex operating systems, See Also GNU/Linux@comma{} PC operating systems@comma{} Unix
@c STARTOFRANGE gligawk
@cindex @command{gawk}, installing
@c STARTOFRANGE ingawk
@@ -33118,7 +34493,7 @@ Extracting the archive
creates a directory named @file{gawk-@value{VERSION}.@value{PATCHLEVEL}}
in the current directory.
-The distribution @value{FN} is of the form
+The distribution file name is of the form
@file{gawk-@var{V}.@var{R}.@var{P}.tar.gz}.
The @var{V} represents the major version of @command{gawk},
the @var{R} represents the current release of version @var{V}, and
@@ -33150,6 +34525,13 @@ The actual @command{gawk} source code.
@end table
@table @file
+@item ABOUT-NLS
+Information about GNU @command{gettext} and translations.
+
+@item AUTHORS
+A file with some information about the authorship of @command{gawk}.
+It exists only to satisfy the pedants at the Free Software Foundation.
+
@item README
@itemx README_d/README.*
Descriptive files: @file{README} for @command{gawk} under Unix and the
@@ -33173,16 +34555,6 @@ An older list of changes to @command{gawk}.
@item COPYING
The GNU General Public License.
-@item FUTURES
-A brief list of features and changes being contemplated for future
-releases, with some indication of the time frame for the feature, based
-on its difficulty.
-
-@item LIMITATIONS
-A list of those factors that limit @command{gawk}'s performance.
-Most of these depend on the hardware or operating system software and
-are not limits in @command{gawk} itself.
-
@item POSIX.STD
A description of behaviors in the POSIX standard for @command{awk} which
are left undefined, or where @command{gawk} may not comply fully, as well
@@ -33215,12 +34587,19 @@ The @command{troff} source for a manual page describing @command{gawk}.
This is distributed for the convenience of Unix users.
@cindex Texinfo
-@item doc/gawk.texi
+@item doc/gawktexi.in
+@itemx doc/sidebar.awk
The Texinfo source file for this @value{DOCUMENT}.
-It should be processed with @TeX{}
-(via @command{texi2dvi} or @command{texi2pdf})
+It should be processed by @file{doc/sidebar.awk}
+before processing with @command{texi2dvi} or @command{texi2pdf}
to produce a printed document, and
with @command{makeinfo} to produce an Info or HTML file.
+The @file{Makefile} takes care of this processing and produces
+printable output via @command{texi2dvi} or @command{texi2pdf}.
+
+@item doc/gawk.texi
+The file produced after processing @file{gawktexi.in}
+with @file{sidebar.awk}.
@item doc/gawk.info
The generated Info file for this @value{DOCUMENT}.
@@ -33259,15 +34638,21 @@ the @file{Makefile.in} files used by @command{autoconf} and
@item Makefile.in
@itemx aclocal.m4
+@itemx bisonfix.awk
+@itemx config.guess
@itemx configh.in
@itemx configure.ac
@itemx configure
@itemx custom.h
+@itemx depcomp
+@itemx install-sh
@itemx missing_d/*
+@itemx mkinstalldirs
@itemx m4/*
-These files and subdirectories are used when configuring @command{gawk}
-for various Unix systems. They are explained in
-@ref{Unix Installation}.
+These files and subdirectories are used when configuring and compiling
+@command{gawk} for various Unix systems. Most of them are explained
+in @ref{Unix Installation}. The rest are there to support the main
+infrastructure.
@item po/*
The @file{po} library contains message translations.
@@ -33291,6 +34676,11 @@ They are installed as part of the installation process.
The rest of the programs in this @value{DOCUMENT} are available in appropriate
subdirectories of @file{awklib/eg}.
+@item extension/*
+The source code, manual pages, and infrastructure files for
+the sample extensions included with @command{gawk}.
+@xref{Dynamic Extensions}, for more information.
+
@item posix/*
Files needed for building @command{gawk} on POSIX-compliant systems.
@@ -33394,7 +34784,7 @@ please send in a bug report (@pxref{Bugs}).
Of course, once you've built @command{gawk}, it is likely that you will
wish to install it. To do so, you need to run the command @samp{make
-check}, as a user with the appropriate permissions. How to do this
+install}, as a user with the appropriate permissions. How to do this
varies by system, but on many systems you can use the @command{sudo}
command to do so. The command then becomes @samp{sudo make install}. It
is likely that you will be asked for your password, and you will have
@@ -33411,7 +34801,15 @@ command line when compiling @command{gawk} from scratch, including:
@table @code
-@cindex @code{--disable-lint} configuration option
+@cindex @option{--disable-extensions} configuration option
+@cindex configuration option, @code{--disable-extensions}
+@item --disable-extensions
+Disable configuring and building the sample extensions in the
+@file{extension} directory. This is useful for cross-compiling.
+The default action is to dynamically check if the extensions
+can be configured and compiled.
+
+@cindex @option{--disable-lint} configuration option
@cindex configuration option, @code{--disable-lint}
@item --disable-lint
Disable all lint checking within @code{gawk}. The
@@ -33431,14 +34829,14 @@ Using this option may bring you some slight performance improvement.
Using this option will cause some of the tests in the test suite
to fail. This option may be removed at a later date.
-@cindex @code{--disable-nls} configuration option
+@cindex @option{--disable-nls} configuration option
@cindex configuration option, @code{--disable-nls}
@item --disable-nls
Disable all message-translation facilities.
This is usually not desirable, but it may bring you some slight performance
improvement.
-@cindex @code{--with-whiny-user-strftime} configuration option
+@cindex @option{--with-whiny-user-strftime} configuration option
@cindex configuration option, @code{--with-whiny-user-strftime}
@item --with-whiny-user-strftime
Force use of the included version of the @code{strftime()}
@@ -33712,11 +35110,10 @@ multibyte functionality is not available.
@c STARTOFRANGE pcgawon
@cindex PC operating systems, @command{gawk} on
-With the exception of the Cygwin environment,
-the @samp{|&} operator and TCP/IP networking
-(@pxref{TCP/IP Networking})
-are not supported for MS-DOS or MS-Windows. EMX (OS/2 only) does support
-at least the @samp{|&} operator.
+Under MS-DOS and MS-Windows, the Cygwin and MinGW environments support
+both the @samp{|&} operator and TCP/IP networking
+(@pxref{TCP/IP Networking}).
+EMX (OS/2 only) supports at least the @samp{|&} operator.
@cindex search paths
@cindex search paths, for source files
@@ -33846,7 +35243,7 @@ moved into the @code{BEGIN} rule.
@command{gawk} can be built and used ``out of the box'' under MS-Windows
if you are using the @uref{http://www.cygwin.com, Cygwin environment}.
-This environment provides an excellent simulation of Unix, using the
+This environment provides an excellent simulation of GNU/Linux, using the
GNU tools, such as Bash, the GNU Compiler Collection (GCC), GNU Make,
and other GNU programs. Compilation and installation for Cygwin is the
same as for a Unix system:
@@ -33862,13 +35259,6 @@ When compared to GNU/Linux on the same system, the @samp{configure}
step on Cygwin takes considerably longer. However, it does finish,
and then the @samp{make} proceeds as usual.
-@quotation NOTE
-The @samp{|&} operator and TCP/IP networking
-(@pxref{TCP/IP Networking})
-are fully supported in the Cygwin environment. This is not true
-for any other environment on MS-Windows.
-@end quotation
-
@node MSYS
@appendixsubsubsec Using @command{gawk} In The MSYS Environment
@@ -33894,8 +35284,11 @@ The older designation ``VMS'' is used throughout to refer to OpenVMS.
@menu
* VMS Compilation:: How to compile @command{gawk} under VMS.
+* VMS Dynamic Extensions:: Compiling @command{gawk} dynamic extensions on
+ VMS.
* VMS Installation Details:: How to install @command{gawk} under VMS.
* VMS Running:: How to run @command{gawk} under VMS.
+* VMS GNV:: The VMS GNV Project.
* VMS Old Gawk:: An old version comes with some VMS systems.
@end menu
@@ -33903,41 +35296,110 @@ The older designation ``VMS'' is used throughout to refer to OpenVMS.
@appendixsubsubsec Compiling @command{gawk} on VMS
@cindex compiling @command{gawk} for VMS
-To compile @command{gawk} under VMS, there is a @code{DCL} command procedure that
-issues all the necessary @code{CC} and @code{LINK} commands. There is
-also a @file{Makefile} for use with the @code{MMS} utility. From the source
-directory, use either:
+To compile @command{gawk} under VMS, there is a @code{DCL} command procedure
+that issues all the necessary @code{CC} and @code{LINK} commands. There is
+also a @file{Makefile} for use with the @code{MMS} and @code{MMK} utilities.
+From the source directory, use either:
+
+@example
+$ @kbd{@@[.vms]vmsbuild.com}
+@end example
+
+@noindent
+or:
+
+@example
+$ @kbd{MMS/DESCRIPTION=[.vms]descrip.mms gawk}
+@end example
+
+@noindent
+or:
+
+@example
+$ @kbd{MMK/DESCRIPTION=[.vms]descrip.mms gawk}
+@end example
+
+@code{MMK} is an open source, free, near-clone of @code{MMS} and
+can better handle @code{ODS-5} volumes with upper- and lowercase filenames.
+@code{MMK} is available from @uref{https://github.com/endlesssoftware/mmk}.
+
+With @code{ODS-5} volumes and extended parsing enabled, the case of the target
+parameter may need to be exact.
+
+@command{gawk} has been tested under VAX/VMS 7.3 and Alpha/VMS 7.3-1
+using Compaq C V6.4, and Alpha/VMS 7.3, Alpha/VMS 7.3-2, and IA64/VMS 8.3.
+The most recent builds used HP C V7.3 on Alpha VMS 8.3 and both
+Alpha and IA64 VMS 8.4 used HP C 7.3.@footnote{The IA64 architecture
+is also known as ``Itanium.''}
+
+The @file{[.vms]gawk_build_steps.txt} provides information on how to build
+@command{gawk} into a PCSI kit that is compatible with the GNV product.
+
+@node VMS Dynamic Extensions
+@appendixsubsubsec Compiling @command{gawk} Dynamic Extensions on VMS
+
+The extensions that have been ported to VMS can be built using one of
+the following commands.
@example
-$ @kbd{@@[.VMS]VMSBUILD.COM}
+$ @kbd{MMS/DESCRIPTION=[.vms]descrip.mms extensions}
@end example
@noindent
or:
@example
-$ @kbd{MMS/DESCRIPTION=[.VMS]DESCRIP.MMS GAWK}
+$ @kbd{MMK/DESCRIPTION=[.vms]descrip.mms extensions}
@end example
-Older versions of @command{gawk} could be built with VAX C or
-GNU C on VAX/VMS, as well as with DEC C, but that is no longer
-supported. DEC C (also briefly known as ``Compaq C'' and now known
-as ``HP C,'' but referred to here as ``DEC C'') is required. Both
-@code{VMSBUILD.COM} and @code{DESCRIP.MMS} contain some obsolete support
-for the older compilers but are set up to use DEC C by default.
+@command{gawk} uses @code{AWKLIBPATH} as either an environment variable
+or a logical name to find the dynamic extensions.
+
+Dynamic extensions need to be compiled with the same compiler options for
+floating point, pointer size, and symbol name handling as were used
+to compile @command{gawk} itself.
+Alpha and Itanium should use IEEE floating point. The pointer size is 32 bits,
+and the symbol name handling should be exact case with CRC shortening for
+symbols longer than 32 bits.
+
+For Alpha and Itanium:
-@command{gawk} has been tested under Alpha/VMS 7.3-1 using Compaq C V6.4,
-and on Alpha/VMS 7.3, Alpha/VMS 7.3-2, and IA64/VMS 8.3.@footnote{The IA64
-architecture is also known as ``Itanium.''}
+@example
+/name=(as_is,short)
+/float=ieee/ieee_mode=denorm_results
+@end example
+
+For VAX:
+
+@example
+/name=(as_is,short)
+@end example
+
+Compile time macros need to be defined before the first VMS-supplied
+header file is included.
+
+@example
+#if (__CRTL_VER >= 70200000) && !defined (__VAX)
+#define _LARGEFILE 1
+#endif
+
+#ifndef __VAX
+#ifdef __CRTL_VER
+#if __CRTL_VER >= 80200000
+#define _USE_STD_STAT 1
+#endif
+#endif
+#endif
+@end example
@node VMS Installation Details
@appendixsubsubsec Installing @command{gawk} on VMS
-To install @command{gawk}, all you need is a ``foreign'' command, which is
-a @code{DCL} symbol whose value begins with a dollar sign. For example:
+To use @command{gawk}, all you need is a ``foreign'' command, which is a
+@code{DCL} symbol whose value begins with a dollar sign. For example:
@example
-$ @kbd{GAWK :== $disk1:[gnubin]GAWK}
+$ @kbd{GAWK :== $disk1:[gnubin]gawk}
@end example
@noindent
@@ -33949,10 +35411,29 @@ Alternatively, the symbol may be placed in the system-wide
@file{sylogin.com} procedure, which allows all users
to run @command{gawk}.
-Optionally, the help entry can be loaded into a VMS help library:
+If your @command{gawk} was installed by a PCSI kit into the
+@file{GNV$GNU:} directory tree, the program will be known as
+@file{GNV$GNU:[bin]gnv$gawk.exe} and the help file will be
+@file{GNV$GNU:[vms_help]gawk.hlp}.
+
+The PCSI kit also installs a @file{GNV$GNU:[vms_bin]gawk_verb.cld} file
+which can be used to add @command{gawk} and @command{awk} as DCL commands.
+
+For just the current process you can use:
+
+@example
+$ @kbd{set command gnv$gnu:[vms_bin]gawk_verb.cld}
+@end example
+
+Or the system manager can use @file{GNV$GNU:[vms_bin]gawk_verb.cld} to
+add the @command{gawk} and @command{awk} to the system wide @samp{DCLTABLES}.
+
+The DCL syntax is documented in the @file{gawk.hlp} file.
+
+Optionally, the @file{gawk.hlp} entry can be loaded into a VMS help library:
@example
-$ @kbd{LIBRARY/HELP SYS$HELP:HELPLIB [.VMS]GAWK.HLP}
+$ @kbd{LIBRARY/HELP sys$help:helplib [.vms]gawk.hlp}
@end example
@noindent
@@ -33970,7 +35451,7 @@ provides information about both the @command{gawk} implementation and the
The logical name @samp{AWK_LIBRARY} can designate a default location
for @command{awk} program files. For the @option{-f} option, if the specified
-@value{FN} has no device or directory path information in it, @command{gawk}
+file name has no device or directory path information in it, @command{gawk}
looks in the current directory first, then in the directory specified
by the translation of @samp{AWK_LIBRARY} if the file is not found.
If, after searching in both directories, the file still is not found,
@@ -34003,9 +35484,42 @@ One side effect of dual command-line parsing is that if there is only a
single parameter (as in the quoted string program above), the command
becomes ambiguous. To work around this, the normally optional @option{--}
flag is required to force Unix-style parsing rather than @code{DCL} parsing. If any
-other dash-type options (or multiple parameters such as @value{DF}s to
+other dash-type options (or multiple parameters such as data files to
process) are present, there is no ambiguity and @option{--} can be omitted.
+@cindex exit status, of VMS
+The @code{exit} value is a Unix-style value and is encoded to a VMS exit
+status value when the program exits.
+
+The VMS severity bits will be set based on the @code{exit} value.
+A failure is indicated by 1 and VMS sets the @code{ERROR} status.
+A fatal error is indicated by 2 and VMS will set the @code{FATAL} status.
+All other values will have the @code{SUCCESS} status. The exit value is
+encoded to comply with VMS coding standards and will have the
+@code{C_FACILITY_NO} of @code{0x350000} with the constant @code{0xA000}
+added to the number shifted over by 3 bits to make room for the severity codes.
+
+To extract the actual @command{gawk} exit code from the VMS status use:
+
+@example
+unix_status = (vms_status .and. &x7f8) / 8
+@end example
+
+@noindent
+A C program that uses @code{exec()} to call @command{gawk} will get the original
+Unix-style exit value.
+
+Older versions of @command{gawk} treated a Unix exit code 0 as 1, a failure
+as 2, a fatal error as 4, and passed all the other numbers through.
+This violated the VMS exit status coding requirements.
+
+@cindex floating-point, VAX/VMS
+VAX/VMS floating point uses unbiased rounding. @xref{Round Function}.
+
+VMS reports time values in GMT unless one of the @code{SYS$TIMEZONE_RULE}
+or @code{TZ} logical names is set. Older versions of VMS, such as VAX/VMS
+7.3 do not set these logical names.
+
@c @cindex directory search
@c @cindex path, search
@cindex search paths
@@ -34017,6 +35531,21 @@ of @env{AWKPATH} is a comma-separated list of directory specifications.
When defining it, the value should be quoted so that it retains a single
translation and not a multitranslation @code{RMS} searchlist.
+@node VMS GNV
+@appendixsubsubsec The VMS GNV Project
+
+The VMS GNV package provides a build environment similar to POSIX with ports
+of a collection of open source tools. The @command{gawk} found in the GNV
+base kit is an older port. Currently the GNV project is being reorganized
+to supply individual PCSI packages for each component.
+See @uref{https://sourceforge.net/p/gnv/wiki/InstallingGNVPackages/}.
+
+The normal build procedure for @command{gawk} produces a program that
+is suitable for use with GNV.
+
+The @file{vms/gawk_build_steps.txt} in the source documents the procedure
+for building a VMS PCSI kit that is compatible with GNV.
+
@ignore
@c The VMS POSIX product, also known as POSIX for OpenVMS, is long defunct
@c and building gawk for it has not been tested in many years, but these
@@ -34064,7 +35593,7 @@ define a symbol, as follows:
$ @kbd{gawk :== $sys$common:[syshlp.examples.tcpip.snmp]gawk.exe}
@end example
-This is apparently @value{PVERSION} 2.15.6, which is extremely old. We
+This is apparently version 2.15.6, which is extremely old. We
recommend compiling and using the current version.
@c ENDOFRANGE opgawx
@@ -34074,8 +35603,8 @@ recommend compiling and using the current version.
@appendixsec Reporting Problems and Bugs
@cindex archeologists
@quotation
-@i{There is nothing more dangerous than a bored archeologist.}@*
-The Hitchhiker's Guide to the Galaxy
+@i{There is nothing more dangerous than a bored archeologist.}
+@author The Hitchhiker's Guide to the Galaxy
@end quotation
@c the radio show, not the book. :-)
@@ -34093,8 +35622,8 @@ what you're trying to do. If it's not clear whether you should be able
to do something or not, report that too; it's a bug in the documentation!
Before reporting a bug or trying to fix it yourself, try to isolate it
-to the smallest possible @command{awk} program and input @value{DF} that
-reproduces the problem. Then send us the program and @value{DF},
+to the smallest possible @command{awk} program and input data file that
+reproduces the problem. Then send us the program and data file,
some idea of what kind of Unix system you're using,
the compiler you used to compile @command{gawk}, and the exact results
@command{gawk} gave you. Also say what you expected to occur; this helps
@@ -34148,32 +35677,37 @@ mail at the Internet address noted previously.
If you find bugs in one of the non-Unix ports of @command{gawk}, please send
an electronic mail message to the person who maintains that port. They
-are named in the following list, as well as in the @file{README} file in the @command{gawk}
-distribution. Information in the @file{README} file should be considered
-authoritative if it conflicts with this @value{DOCUMENT}.
+are named in the following list, as well as in the @file{README} file
+in the @command{gawk} distribution. Information in the @file{README}
+file should be considered authoritative if it conflicts with this
+@value{DOCUMENT}.
The people maintaining the non-Unix ports of @command{gawk} are
as follows:
-@multitable {MS-Windows with MINGW} {123456789012345678901234567890123456789001234567890}
+@c put the index entries outside the table, for docbook
@cindex Deifik, Scott
+@cindex Zaretskii, Eli
+@cindex Buening, Andreas
+@cindex Rankin, Pat
+@cindex Malmberg, John
+@cindex Pitts, Dave
+@multitable {MS-Windows with MINGW} {123456789012345678901234567890123456789001234567890}
@item MS-DOS with DJGPP @tab Scott Deifik, @EMAIL{scottd.mail@@sbcglobal.net,scottd dot mail at sbcglobal dot net}.
-@cindex Zaretskii, Eli
@item MS-Windows with MINGW @tab Eli Zaretskii, @EMAIL{eliz@@gnu.org,eliz at gnu dot org}.
-@cindex Buening, Andreas
@item OS/2 @tab Andreas Buening, @EMAIL{andreas.buening@@nexgo.de,andreas dot buening at nexgo dot de}.
-@cindex Rankin, Pat
-@item VMS @tab Pat Rankin, @EMAIL{r.pat.rankin@@gmail.com,r.pat.rankin at gmail.com}
+@item VMS @tab Pat Rankin, @EMAIL{r.pat.rankin@@gmail.com,r.pat.rankin at gmail.com}, and
+John Malmberg, @EMAIL{wb8tyw@@qsl.net,wb8tyw at qsl.net}.
-@cindex Pitts, Dave
@item z/OS (OS/390) @tab Dave Pitts, @EMAIL{dpitts@@cozx.com,dpitts at cozx dot com}.
@end multitable
If your bug is also reproducible under Unix, please send a copy of your
-report to the @EMAIL{bug-gawk@@gnu.org,bug-gawk at gnu dot org} email list as well.
+report to the @EMAIL{bug-gawk@@gnu.org,bug-gawk at gnu dot org} email
+list as well.
@c ENDOFRANGE dbugg
@c ENDOFRANGE tblgawb
@@ -34191,8 +35725,8 @@ Date: Wed, 4 Sep 1996 08:11:48 -0700 (PDT)
@cindex Brennan, Michael
@quotation
@i{It's kind of fun to put comments like this in your awk code.}@*
-@ @ @ @ @ @ @code{// Do C++ comments work? answer: yes! of course}@*
-Michael Brennan
+@ @ @ @ @ @ @code{// Do C++ comments work? answer: yes! of course}
+@author Michael Brennan
@end quotation
There are a number of other freely available @command{awk} implementations.
@@ -34202,7 +35736,7 @@ This @value{SECTION} briefly describes where to get them:
@cindex Kernighan, Brian
@cindex source code, Brian Kernighan's @command{awk}
@cindex @command{awk}, versions of, See Also Brian Kernighan's @command{awk}
-@cindex Brian Kernighan's @command{awk}
+@cindex Brian Kernighan's @command{awk}, source code
@item Unix @command{awk}
Brian Kernighan, one of the original designers of Unix @command{awk},
has made his implementation of
@@ -34222,6 +35756,7 @@ It is available in several archive formats:
@uref{http://www.cs.princeton.edu/~bwk/btl.mirror/awk.zip}
@end table
+@cindex @command{git} utility
You can also retrieve it from Git Hub:
@example
@@ -34234,16 +35769,14 @@ repository in a directory named @file{bwkawk}. If you leave that argument
off the @command{git} command line, the repository copy is created in a
directory named @file{awk}.
-This version requires an ISO C (1990 standard) compiler;
-the C compiler from
-GCC (the GNU Compiler Collection)
-works quite nicely.
+This version requires an ISO C (1990 standard) compiler; the C compiler
+from GCC (the GNU Compiler Collection) works quite nicely.
@xref{Common Extensions},
for a list of extensions in this @command{awk} that are not in POSIX @command{awk}.
@cindex Brennan, Michael
-@cindex @command{mawk} program
+@cindex @command{mawk} utility
@cindex source code, @command{mawk}
@item @command{mawk}
Michael Brennan wrote an independent implementation of @command{awk},
@@ -34289,7 +35822,7 @@ To get @command{awka}, go to @url{http://sourceforge.net/projects/awka}.
The project seems to be frozen; no new code changes have been made
since approximately 2003.
-@cindex Beebe, Nelson
+@cindex Beebe, Nelson H.F.@:
@cindex @command{pawk} (profiling version of Brian Kernighan's @command{awk})
@cindex source code, @command{pawk}
@item @command{pawk}
@@ -34318,15 +35851,22 @@ information, see the @uref{http://busybox.net, project's home page}.
@cindex source code, Solaris @command{awk}
@item The OpenSolaris POSIX @command{awk}
The version of @command{awk} in @file{/usr/xpg4/bin} on Solaris is
-more-or-less
-POSIX-compliant. It is based on the @command{awk} from Mortice Kern
-Systems for PCs. The source code can be downloaded from
-the @uref{http://www.opensolaris.org, OpenSolaris web site}.
+more-or-less POSIX-compliant. It is based on the @command{awk} from
+Mortice Kern Systems for PCs.
This author was able to make it compile and work under GNU/Linux
with 1--2 hours of work. Making it more generally portable (using
GNU Autoconf and/or Automake) would take more work, and this
has not been done, at least to our knowledge.
+@cindex Illumos
+@cindex Illumos, POSIX-compliant @command{awk}
+@cindex source code, Illumos @command{awk}
+The source code used to be available from the OpenSolaris web site.
+However, that project was ended and the web site shut down. Fortunately, the
+@uref{http://wiki.illumos.org/display/illumos/illumos+Home, Illumos project}
+makes this implementation available. You can view the files one at a time from
+@uref{https://github.com/joyent/illumos-joyent/blob/master/usr/src/cmd/awk_xpg4}.
+
@cindex @command{jawk}
@cindex Java implementation of @command{awk}
@cindex source code, @command{jawk}
@@ -34345,6 +35885,7 @@ This is an embeddable @command{awk} interpreter derived from
@uref{http://repo.hu/projects/libmawk/}.
@item @code{pawk}
+@cindex source code, @command{pawk} (Python version)
@cindex @code{pawk}, @command{awk}-like facilities for Python
This is a Python module that claims to bring @command{awk}-like
features to Python. See @uref{https://github.com/alecthomas/pawk}
@@ -34367,6 +35908,10 @@ under the GPL. It has a large number of extensions over standard
See @uref{http://www.quiktrim.org/QTawk.html} for more information,
including the manual and a download link.
+@item Other Versions
+See also the @uref{http://en.wikipedia.org/wiki/Awk_language#Versions_and_implementations,
+Wikipedia article}, for information on additional versions.
+
@end table
@c ENDOFRANGE gligawk
@c ENDOFRANGE ingawk
@@ -34446,6 +35991,7 @@ As @command{gawk} is Free Software, the source code is always available.
@ref{Gawk Distribution}, describes how to get and build the formal,
released versions of @command{gawk}.
+@cindex @command{git} utility
However, if you want to modify @command{gawk} and contribute back your
changes, you will probably wish to work with the development version.
To do so, you will need to access the @command{gawk} source code
@@ -34517,7 +36063,7 @@ for information on getting the latest version of @command{gawk}.)
@item
@ifnotinfo
-Follow the @cite{GNU Coding Standards}.
+Follow the @uref{http://www.gnu.org/prep/standards/, @cite{GNU Coding Standards}}.
@end ifnotinfo
@ifinfo
See @inforef{Top, , Version, standards, GNU Coding Standards}.
@@ -34621,6 +36167,7 @@ If possible, please update the @command{man} page as well.
You will also have to sign paperwork for your documentation changes.
+@cindex @command{git} utility
@item
Submit changes as unified diffs.
Use @samp{diff -u -r -N} to compare
@@ -34676,11 +36223,9 @@ Be prepared to sign the appropriate paperwork.
In order for the FSF to distribute your code, you must either place
your code in the public domain and submit a signed statement to that
effect, or assign the copyright in your code to the FSF.
-@ifinfo
Both of these actions are easy to do and @emph{many} people have done so
already. If you have questions, please contact me, or
@email{gnu@@gnu.org}.
-@end ifinfo
@item
When doing a port, bear in mind that your code must coexist peacefully
@@ -34756,6 +36301,8 @@ coding style and brace layout that suits your taste.
@node Derived Files
@appendixsubsec Why Generated Files Are Kept In @command{git}
+@c STARTOFRANGE gawkgit
+@cindex @command{git}, use of for @command{gawk} source code
@c From emails written March 22, 2012, to the gawk developers list.
If you look at the @command{gawk} source in the @command{git}
@@ -34935,7 +36482,7 @@ wget http://git.savannah.gnu.org/cgit/gawk.git/snapshot/gawk-@var{branchname}.ta
@noindent
to retrieve a snapshot of the given branch.
-
+@c ENDOFRANGE gawkgit
@node Future Extensions
@appendixsec Probable Future Extensions
@@ -34977,11 +36524,13 @@ Larry
@cindex Wall, Larry
@cindex Robbins, Arnold
@quotation
-@i{AWK is a language similar to PERL, only considerably more elegant.}@*
-Arnold Robbins
+@i{AWK is a language similar to PERL, only considerably more elegant.}
+@author Arnold Robbins
+@end quotation
-@i{Hey!}@*
-Larry Wall
+@quotation
+@i{Hey!}
+@author Larry Wall
@end quotation
The @file{TODO} file in the @command{gawk} Git repository lists possible
@@ -35113,7 +36662,7 @@ in order to loop over all the element in an easy fashion for C code.
@item
The ability to create arrays (including @command{gawk}'s true
-multi-dimensional arrays).
+multidimensional arrays).
@end itemize
@end itemize
@@ -35246,11 +36795,11 @@ to any of the above.
@ref{Dynamic Extensions}, describes the supported API and mechanisms
for writing extensions for @command{gawk}. This API was introduced
-in @value{PVERSION} 4.1. However, for many years @command{gawk}
+in version 4.1. However, for many years @command{gawk}
provided an extension mechanism that required knowledge of @command{gawk}
internals and that was not as well designed.
-In order to provide a transition period, @command{gawk} @value{PVERSION}
+In order to provide a transition period, @command{gawk} version
4.1 continues to support the original extension mechanism.
This will be true for the life of exactly one major release. This support
will be withdrawn, and removed from the source code, at the next major
@@ -35304,8 +36853,15 @@ other introductory texts that you should refer to instead.)
@cindex processing data
At the most basic level, the job of a program is to process
-some input data and produce results. See @ref{figure-general-flow}.
+some input data and produce results.
+@ifnotdocbook
+See @ref{figure-general-flow}.
+@end ifnotdocbook
+@ifdocbook
+See @inlineraw{docbook, <xref linkend="figure-general-flow"/>}.
+@end ifdocbook
+@ifnotdocbook
@float Figure,figure-general-flow
@caption{General Program Flow}
@ifinfo
@@ -35315,6 +36871,14 @@ some input data and produce results. See @ref{figure-general-flow}.
@center @image{general-program, , , General program flow}
@end ifnotinfo
@end float
+@end ifnotdocbook
+
+@docbook
+<figure id="figure-general-flow">
+<title>General Program Flow</title>
+<graphic fileref="general-program.eps"/>
+</figure>
+@end docbook
@cindex compiled programs
@cindex interpreted programs
@@ -35330,9 +36894,15 @@ instructions in your program to process the data.
@cindex programming, basic steps
When you write a program, it usually consists
-of the following, very basic set of steps, as shown
-in @ref{figure-process-flow}:
+of the following, very basic set of steps,
+@ifnotdocbook
+as shown in @ref{figure-process-flow}:
+@end ifnotdocbook
+@ifdocbook
+as shown in @inlineraw{docbook <xref linkend="figure-process-flow"/>}:
+@end ifdocbook
+@ifnotdocbook
@float Figure,figure-process-flow
@caption{Basic Program Steps}
@ifinfo
@@ -35342,6 +36912,14 @@ in @ref{figure-process-flow}:
@center @image{process-flow, , , Basic Program Stages}
@end ifnotinfo
@end float
+@end ifnotdocbook
+
+@docbook
+<figure id="figure-process-flow">
+<title>Basic Program Stages</title>
+<graphic fileref="process-flow.eps"/>
+</figure>
+@end docbook
@table @asis
@item Initialization
@@ -35512,7 +37090,7 @@ better written in another language.
You can get it from @uref{http://awk.info/?awk100/aaa}.
@cindex Ada programming language
-@cindex Programming languages, Ada
+@cindex programming languages, Ada
@item Ada
A programming language originally defined by the U.S.@: Department of
Defense for embedded programming. It was designed to enforce good
@@ -35580,9 +37158,6 @@ The GNU version of the standard shell
@end ifinfo
See also ``Bourne Shell.''
-@item BBS
-See ``Bulletin Board System.''
-
@item Bit
Short for ``Binary Digit.''
All values in computer memory ultimately reduce to binary digits: values
@@ -35657,11 +37232,6 @@ Changing some of them affects @command{awk}'s running environment.
@item Braces
See ``Curly Braces.''
-@item Bulletin Board System
-A computer system allowing users to log in and read and/or leave messages
-for other users of the system, much like leaving paper notes on a bulletin
-board.
-
@item C
The system programming language that most GNU software is written in. The
@command{awk} programming language has C-like syntax, and this @value{DOCUMENT}
@@ -35688,6 +37258,8 @@ The @uref{http://www.unicode.org, Unicode character set} is
becoming increasingly popular and standard, and is particularly
widely used on GNU/Linux systems.
+@cindex Kernighan, Brian
+@cindex Bentley, Jon
@cindex @command{chem} utility
@item CHEM
A preprocessor for @command{pic} that reads descriptions of molecules
@@ -35824,7 +37396,7 @@ ordinary expression. It could be a string constant, such as
(@xref{Computed Regexps}.)
@item Environment
-A collection of strings, of the form @var{name@code{=}val}, that each
+A collection of strings, of the form @var{name}@code{=}@code{val}, that each
program has available to it. Users generally place values into the
environment in order to provide information to various programs. Typical
examples are the environment variables @env{HOME} and @env{PATH}.
@@ -35993,7 +37565,7 @@ information about the name of the organization and its language-independent
three-letter acronym.
@cindex Java programming language
-@cindex Programming languages, Java
+@cindex programming languages, Java
@item Java
A modern programming language originally developed by Sun Microsystems
(now Oracle) supporting Object-Oriented programming. Although usually
@@ -36218,7 +37790,7 @@ numeric values. It is the C type @code{float}.
The character generated by hitting the space bar on the keyboard.
@item Special File
-A @value{FN} interpreted internally by @command{gawk}, instead of being handed
+A file name interpreted internally by @command{gawk}, instead of being handed
directly to the underlying operating system---for example, @file{/dev/stderr}.
(@xref{Special Files}.)
@@ -36280,7 +37852,12 @@ record or a string.
@c The GNU General Public License.
@node Copying
@unnumbered GNU General Public License
+@ifnotdocbook
@center Version 3, 29 June 2007
+@end ifnotdocbook
+@docbook
+<subtitle>Version 3, 29 June 2007</subtitle>
+@end docbook
@c This file is intended to be included within another document,
@c hence no sectioning command or @node.
@@ -37005,10 +38582,17 @@ first, please read @url{http://www.gnu.org/philosophy/why-not-lgpl.html}.
@c The GNU Free Documentation License.
@node GNU Free Documentation License
@unnumbered GNU Free Documentation License
+@ifnotdocbook
+@center Version 1.3, 3 November 2008
+@end ifnotdocbook
+
+@docbook
+<subtitle>Version 1.3, 3 November 2008</subtitle>
+@end docbook
+
@cindex FDL (Free Documentation License)
@cindex Free Documentation License (FDL)
@cindex GNU Free Documentation License
-@center Version 1.3, 3 November 2008
@c This file is intended to be included within another document,
@c hence no sectioning command or @node.
@@ -37513,8 +39097,10 @@ to permit their use in free software.
@c ispell-local-pdict: "ispell-dict"
@c End:
+@ifnotdocbook
@node Index
@unnumbered Index
+@end ifnotdocbook
@printindex cp
@bye
@@ -37599,6 +39185,7 @@ Consistency issues:
Use MS-Windows not MS Windows
Use MS-DOS not MS-DOS
Use an empty set of parentheses after built-in and awk function names.
+ Use "multiFOO" without a hyphen.
Date: Wed, 13 Apr 94 15:20:52 -0400
From: rms@gnu.org (Richard Stallman)
@@ -37624,8 +39211,6 @@ Suggestions:
% Next edition:
% 1. Standardize the error messages from the functions and programs
% in the two sample code chapters.
-% 2. Nuke the BBS stuff and use something that won't be obsolete
-% 3. Turn the advanced notes into sidebars by using @cartouche
Better sidebars can almost sort of be done with:
@@ -37657,4 +39242,3 @@ But to use it you have to say
}
which sorta sucks.
-
diff --git a/doc/texinfo.tex b/doc/texinfo.tex
index 9cf29f2e..7506dffb 100644
--- a/doc/texinfo.tex
+++ b/doc/texinfo.tex
@@ -3,11 +3,11 @@
% Load plain if necessary, i.e., if running under initex.
\expandafter\ifx\csname fmtname\endcsname\relax\input plain\fi
%
-\def\texinfoversion{2013-06-21.17}
+\def\texinfoversion{2014-03-18.17}
%
% Copyright 1985, 1986, 1988, 1990, 1991, 1992, 1993, 1994, 1995,
% 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006,
-% 2007, 2008, 2009, 2010, 2011, 2012, 2013 Free Software Foundation, Inc.
+% 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 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
@@ -281,9 +281,9 @@
\toks6=\expandafter{\prevsectiondefs}%
\toks8=\expandafter{\lastcolordefs}%
\mark{%
- \the\toks0 \the\toks2
- \noexpand\or \the\toks4 \the\toks6
- \noexpand\else \the\toks8
+ \the\toks0 \the\toks2 % 0: top marks (\last...)
+ \noexpand\or \the\toks4 \the\toks6 % 1: bottom marks (default, \prev...)
+ \noexpand\else \the\toks8 % 2: color marks
}%
}
% \topmark doesn't work for the very first chapter (after the title
@@ -322,10 +322,13 @@
%
% Do this outside of the \shipout so @code etc. will be expanded in
% the headline as they should be, not taken literally (outputting ''code).
+ \def\commmonheadfootline{\let\hsize=\pagewidth \texinfochars}
+ %
\ifodd\pageno \getoddheadingmarks \else \getevenheadingmarks \fi
- \setbox\headlinebox = \vbox{\let\hsize=\pagewidth \makeheadline}%
+ \global\setbox\headlinebox = \vbox{\commmonheadfootline \makeheadline}%
+ %
\ifodd\pageno \getoddfootingmarks \else \getevenfootingmarks \fi
- \setbox\footlinebox = \vbox{\let\hsize=\pagewidth \makefootline}%
+ \global\setbox\footlinebox = \vbox{\commmonheadfootline \makefootline}%
%
{%
% Have to do this stuff outside the \shipout because we want it to
@@ -1135,10 +1138,12 @@ output) for that.)}
\ifpdf
%
- % Color manipulation macros based on pdfcolor.tex,
+ % Color manipulation macros using ideas from pdfcolor.tex,
% except using rgb instead of cmyk; the latter is said to render as a
% very dark gray on-screen and a very dark halftone in print, instead
- % of actual black.
+ % of actual black. The dark red here is dark enough to print on paper as
+ % nearly black, but still distinguishable for online viewing. We use
+ % black by default, though.
\def\rgbDarkRed{0.50 0.09 0.12}
\def\rgbBlack{0 0 0}
%
@@ -1248,10 +1253,9 @@ output) for that.)}
% used to mark target names; must be expandable.
\def\pdfmkpgn#1{#1}
%
- % by default, use a color that is dark enough to print on paper as
- % nearly black, but still distinguishable for online viewing.
- \def\urlcolor{\rgbDarkRed}
- \def\linkcolor{\rgbDarkRed}
+ % by default, use black for everything.
+ \def\urlcolor{\rgbBlack}
+ \def\linkcolor{\rgbBlack}
\def\endlink{\setcolor{\maincolor}\pdfendlink}
%
% Adding outlines to PDF; macros for calculating structure of outlines
@@ -2377,8 +2381,10 @@ end
\ifx\next,%
\else\ifx\next-%
\else\ifx\next.%
+ \else\ifx\next\.%
+ \else\ifx\next\comma%
\else\ptexslash
- \fi\fi\fi
+ \fi\fi\fi\fi\fi
\aftersmartic
}
@@ -2519,7 +2525,9 @@ end
\ifx\codedashprev\codedash
\else \discretionary{}{}{}\fi
\fi
- \global\let\codedashprev=\next
+ % we need the space after the = for the case when \next itself is a
+ % space token; it would get swallowed otherwise. As in @code{- a}.
+ \global\let\codedashprev= \next
}
}
\def\normaldash{-}
@@ -2567,37 +2575,21 @@ end
\let\file=\code
\let\option=\code
-% @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.
-% (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}%
- \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\ (\code{#1})% DVI: 2nd arg given, show both it and url
- \fi
- \else
- \code{#1}% only url given, so show it
- \fi
- \fi
- \endlink
-\endgroup}
+% @uref (abbreviation for `urlref') aka @url 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.
+
+% TeX-only option to allow changing PDF output to show only the second
+% arg (if given), and not the url (which is then just the link target).
+\newif\ifurefurlonlylink
-% This \urefbreak definition is the active one.
+% The main macro is \urefbreak, which allows breaking at expected
+% places within the url. (There used to be another version, which
+% didn't support automatic breaking.)
\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
@@ -2606,12 +2598,19 @@ end
\ifdim\wd0 > 0pt
\unhbox0 % third arg given, show only that
\else
- \setbox0 = \hbox{\ignorespaces #2}%
+ \setbox0 = \hbox{\ignorespaces #2}% look for second arg
\ifdim\wd0 > 0pt
\ifpdf
- \unhbox0 % PDF: 2nd arg given, show only it
+ \ifurefurlonlylink
+ % PDF plus option to not display url, show just arg
+ \unhbox0
+ \else
+ % PDF, normally display both arg and url for consistency,
+ % visibility, if the pdf is eventually used to print, etc.
+ \unhbox0\ (\urefcode{#1})%
+ \fi
\else
- \unhbox0\ (\urefcode{#1})% DVI: 2nd arg given, show both it and url
+ \unhbox0\ (\urefcode{#1})% DVI, always show arg and url
\fi
\else
\urefcode{#1}% only url given, so show it
@@ -2651,8 +2650,10 @@ end
% 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\urefprestretchamount{.13em}
+\def\urefpoststretchamount{.1em}
+\def\urefprestretch{\urefprebreak \hskip0pt plus\urefprestretchamount\relax}
+\def\urefpoststretch{\urefpostbreak \hskip0pt plus\urefprestretchamount\relax}
%
\def\urefcodeamp{\urefprestretch \&\urefpoststretch}
\def\urefcodedot{\urefprestretch .\urefpoststretch}
@@ -2887,6 +2888,15 @@ end
\def\inlinefmtname{#1}%
\ifx\inlinefmtname\outfmtnametex \ignorespaces #2\fi
}
+%
+% @inlinefmtifelse{FMTNAME,THEN-TEXT,ELSE-TEXT} expands THEN-TEXT if
+% FMTNAME is tex, else ELSE-TEXT.
+\long\def\inlinefmtifelse#1{\doinlinefmtifelse #1,,,\finish}
+\long\def\doinlinefmtifelse#1,#2,#3,#4,\finish{%
+ \def\inlinefmtname{#1}%
+ \ifx\inlinefmtname\outfmtnametex \ignorespaces #2\else \ignorespaces #3\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
@@ -2903,6 +2913,23 @@ end
\endgroup % close group opened by \tex.
}
+% @inlineifset{VAR, TEXT} expands TEXT if VAR is @set.
+%
+\long\def\inlineifset#1{\doinlineifset #1,\finish}
+\long\def\doinlineifset#1,#2,\finish{%
+ \def\inlinevarname{#1}%
+ \expandafter\ifx\csname SET\inlinevarname\endcsname\relax
+ \else\ignorespaces#2\fi
+}
+
+% @inlineifclear{VAR, TEXT} expands TEXT if VAR is not @set.
+%
+\long\def\inlineifclear#1{\doinlineifclear #1,\finish}
+\long\def\doinlineifclear#1,#2,\finish{%
+ \def\inlinevarname{#1}%
+ \expandafter\ifx\csname SET\inlinevarname\endcsname\relax \ignorespaces#2\fi
+}
+
\message{glyphs,}
% and logos.
@@ -3658,7 +3685,7 @@ end
\parskip=\smallskipamount
\ifdim\parskip=0pt \parskip=2pt \fi
%
- % Try typesetting the item mark that if the document erroneously says
+ % Try typesetting the item mark so that if the document erroneously says
% something like @itemize @samp (intending @table), there's an error
% right away at the @itemize. It's not the best error message in the
% world, but it's better than leaving it to the @item. This means if
@@ -3908,19 +3935,23 @@ end
}
% multitable-only commands.
-%
-% @headitem starts a heading row, which we typeset in bold.
-% Assignments have to be global since we are inside the implicit group
-% of an alignment entry. \everycr resets \everytab so we don't have to
+%
+% @headitem starts a heading row, which we typeset in bold. Assignments
+% have to be global since we are inside the implicit group of an
+% alignment entry. \everycr below resets \everytab so we don't have to
% undo it ourselves.
\def\headitemfont{\b}% for people to use in the template row; not changeable
\def\headitem{%
\checkenv\multitable
\crcr
+ \gdef\headitemcrhook{\nobreak}% attempt to avoid page break after headings
\global\everytab={\bf}% can't use \headitemfont since the parsing differs
\the\everytab % for the first item
}%
%
+% default for tables with no headings.
+\let\headitemcrhook=\relax
+%
% A \tab used to include \hskip1sp. But then the space in a template
% line is not enough. That is bad. So let's go back to just `&' until
% we again encounter the problem the 1sp was intended to solve.
@@ -3951,15 +3982,15 @@ end
%
\everycr = {%
\noalign{%
- \global\everytab={}%
+ \global\everytab={}% Reset from possible headitem.
\global\colcount=0 % Reset the column counter.
- % Check for saved footnotes, etc.
+ %
+ % Check for saved footnotes, etc.:
\checkinserts
- % Keeps underfull box messages off when table breaks over pages.
- %\filbreak
- % Maybe so, but it also creates really weird page breaks when the
- % table breaks over pages. Wouldn't \vfil be better? Wait until the
- % problem manifests itself, so it can be fixed for real --karl.
+ %
+ % Perhaps a \nobreak, then reset:
+ \headitemcrhook
+ \global\let\headitemcrhook=\relax
}%
}%
%
@@ -4198,7 +4229,7 @@ end
\def\value{\begingroup\makevalueexpandable\valuexxx}
\def\valuexxx#1{\expandablevalue{#1}\endgroup}
{
- \catcode`\- = \active \catcode`\_ = \active
+ \catcode`\-=\active \catcode`\_=\active
%
\gdef\makevalueexpandable{%
\let\value = \expandablevalue
@@ -4218,7 +4249,12 @@ end
% variable's value contains other Texinfo commands, it's almost certain
% it will fail (although perhaps we could fix that with sufficient work
% to do a one-level expansion on the result, instead of complete).
-%
+%
+% Unfortunately, this has the consequence that when _ is in the *value*
+% of an @set, it does not print properly in the roman fonts (get the cmr
+% dot accent at position 126 instead). No fix comes to mind, and it's
+% been this way since 2003 or earlier, so just ignore it.
+%
\def\expandablevalue#1{%
\expandafter\ifx\csname SET#1\endcsname\relax
{[No value for ``#1'']}%
@@ -4396,7 +4432,7 @@ end
% complicated, when \tex is in effect and \{ is a \delimiter again.
% We can't use \lbracecmd and \rbracecmd because texindex assumes
% braces and backslashes are used only as delimiters. Perhaps we
- % should define @lbrace and @rbrace commands a la @comma.
+ % should use @lbracechar and @rbracechar?
\def\{{{\tt\char123}}%
\def\}{{\tt\char125}}%
%
@@ -4417,8 +4453,7 @@ end
% @end macro
% ...
% @funindex commtest
- %
- % The above is not enough to reproduce the bug, but it gives the flavor.
+ % This is not enough to reproduce the bug, but it gives the flavor.
%
% Sample whatsit resulting:
% .@write3{\entry{xyz}{@folio }{@code {xyz@endinput }}}
@@ -4619,8 +4654,21 @@ end
\definedummyword\verb
\definedummyword\w
\definedummyword\xref
+ %
+ % Consider:
+ % @macro mkind{arg1,arg2}
+ % @cindex \arg2\
+ % @end macro
+ % @mkind{foo, bar}
+ % The space after the comma will end up in the temporary definition
+ % that we make for arg2 (see \parsemargdef ff.). We want all this to be
+ % expanded for the sake of the index, so we end up just seeing "bar".
+ \let\xeatspaces = \eatspaces
}
+% For testing: output @{ and @} in index sort strings as \{ and \}.
+\newif\ifusebracesinindexes
+
% \indexnofonts is used when outputting the strings to sort the index
% by, and when constructing control sequence names. It eliminates all
% control sequences and just writes whatever the best ASCII sort string
@@ -4649,11 +4697,16 @@ end
% Unfortunately, texindex is not prepared to handle braces in the
% content at all. So for index sorting, we map @{ and @} to strings
% starting with |, since that ASCII character is between ASCII { and }.
- \def\{{|a}%
- \def\lbracechar{|a}%
+ \ifusebracesinindexes
+ \def\lbracechar{\lbracecmd}%
+ \def\rbracechar{\rbracecmd}%
+ \else
+ \def\lbracechar{|a}%
+ \def\rbracechar{|b}%
+ \fi
+ \let\{=\lbracechar
+ \let\}=\rbracechar
%
- \def\}{|b}%
- \def\rbracechar{|b}%
%
% Non-English letters.
\def\AA{AA}%
@@ -5905,7 +5958,7 @@ end
%
% Now the second mark, after the heading break. No break points
% between here and the heading.
- \let\prevsectiondefs=\lastsectiondefs
+ \global\let\prevsectiondefs=\lastsectiondefs
\domark
%
% Only insert the space after the number if we have a section number.
@@ -6272,8 +6325,8 @@ end
\catcode `\|=\other
\catcode `\<=\other
\catcode `\>=\other
- \catcode`\`=\other
- \catcode`\'=\other
+ \catcode `\`=\other
+ \catcode `\'=\other
\escapechar=`\\
%
% ' is active in math mode (mathcode"8000). So reset it, and all our
@@ -6297,7 +6350,7 @@ end
\let\/=\ptexslash
\let\*=\ptexstar
\let\t=\ptext
- \expandafter \let\csname top\endcsname=\ptextop % outer
+ \expandafter \let\csname top\endcsname=\ptextop % we've made it outer
\let\frenchspacing=\plainfrenchspacing
%
\def\endldots{\mathinner{\ldots\ldots\ldots\ldots}}%
@@ -6381,8 +6434,6 @@ end
% side, and for 6pt waste from
% each corner char, and rule thickness
\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
@@ -6549,9 +6600,13 @@ end
% @raggedright does more-or-less normal line breaking but no right
-% justification. From plain.tex.
+% justification. From plain.tex. Don't stretch around special
+% characters in urls in this environment, since the stretch at the right
+% should be enough.
\envdef\raggedright{%
- \rightskip0pt plus2em \spaceskip.3333em \xspaceskip.5em\relax
+ \rightskip0pt plus2.4em \spaceskip.3333em \xspaceskip.5em\relax
+ \def\urefprestretchamount{0pt}%
+ \def\urefpoststretchamount{0pt}%
}
\let\Eraggedright\par
@@ -7444,7 +7499,7 @@ end
% 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 some hook where the argument si to be expanded. If
+% in the params list to some hook where the argument is 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.
@@ -8306,6 +8361,7 @@ end
\gdef\footnote{%
\let\indent=\ptexindent
\let\noindent=\ptexnoindent
+ %
\global\advance\footnoteno by \@ne
\edef\thisfootno{$^{\the\footnoteno}$}%
%
@@ -8329,6 +8385,11 @@ end
%
\gdef\dofootnote{%
\insert\footins\bgroup
+ %
+ % Nested footnotes are not supported in TeX, that would take a lot
+ % more work. (\startsavinginserts does not suffice.)
+ \let\footnote=\errfootnote
+ %
% We want to typeset this text as a normal paragraph, even if the
% footnote reference occurs in (for example) a display environment.
% So reset some parameters.
@@ -8366,13 +8427,19 @@ end
}
}%end \catcode `\@=11
+\def\errfootnote{%
+ \errhelp=\EMsimple
+ \errmessage{Nested footnotes not supported in texinfo.tex,
+ even though they work in makeinfo; sorry}
+}
+
% In case a @footnote appears in a vbox, save the footnote text and create
% the real \insert just after the vbox finished. Otherwise, the insertion
% would be lost.
% Similarly, if a @footnote appears inside an alignment, save the footnote
% text to a box and make the \insert when a row of the table is finished.
% And the same can be done for other insert classes. --kasal, 16nov03.
-
+%
% Replace the \insert primitive by a cheating macro.
% Deeper inside, just make sure that the saved insertions are not spilled
% out prematurely.
@@ -9940,11 +10007,9 @@ directory should work if nowhere else does.}
\catcode`\"=\active
\def\activedoublequote{{\tt\char34}}
\let"=\activedoublequote
-\catcode`\~=\active
-\def~{{\tt\char126}}
+\catcode`\~=\active \def\activetilde{{\tt\char126}} \let~ = \activetilde
\chardef\hat=`\^
-\catcode`\^=\active
-\def^{{\tt \hat}}
+\catcode`\^=\active \def\activehat{{\tt \hat}} \let^ = \activehat
\catcode`\_=\active
\def_{\ifusingtt\normalunderscore\_}
@@ -9954,16 +10019,26 @@ directory should work if nowhere else does.}
\catcode`\|=\active
\def|{{\tt\char124}}
+
\chardef \less=`\<
-\catcode`\<=\active
-\def<{{\tt \less}}
+\catcode`\<=\active \def\activeless{{\tt \less}}\let< = \activeless
\chardef \gtr=`\>
-\catcode`\>=\active
-\def>{{\tt \gtr}}
-\catcode`\+=\active
-\def+{{\tt \char 43}}
-\catcode`\$=\active
-\def${\ifusingit{{\sl\$}}\normaldollar}%$ font-lock fix
+\catcode`\>=\active \def\activegtr{{\tt \gtr}}\let> = \activegtr
+\catcode`\+=\active \def+{{\tt \char 43}}
+\catcode`\$=\active \def${\ifusingit{{\sl\$}}\normaldollar}%$ font-lock fix
+
+% used for headline/footline in the output routine, in case the page
+% breaks in the middle of an @tex block.
+\def\texinfochars{%
+ \let< = \activeless
+ \let> = \activegtr
+ \let~ = \activetilde
+ \let^ = \activehat
+ \markupsetuplqdefault \markupsetuprqdefault
+ \let\b = \strong
+ \let\i = \smartitalic
+ % in principle, all other definitions in \tex have to be undone too.
+}
% If a .fmt file is being used, characters that might appear in a file
% name cannot be active until we have parsed the command line.
diff --git a/eval.c b/eval.c
index 4ad5afe0..d8647869 100644
--- a/eval.c
+++ b/eval.c
@@ -440,6 +440,7 @@ flags2str(int flagval)
{ WSTRCUR, "WSTRCUR" },
{ MPFN, "MPFN" },
{ MPZN, "MPZN" },
+ { NULL_FIELD, "NULL_FIELD" },
{ ARRAYMAXED, "ARRAYMAXED" },
{ HALFHAT, "HALFHAT" },
{ XARRAY, "XARRAY" },
@@ -1183,7 +1184,7 @@ r_get_field(NODE *n, Func_ptr *assign, bool reference)
*assign = reset_record;
} else
lhs = get_field(field_num, assign);
- if (do_lint && reference && (*lhs == Null_field || *lhs == Nnull_string))
+ if (do_lint && reference && ((*lhs)->flags & NULL_FIELD) != 0)
lintwarn(_("reference to uninitialized field `$%ld'"),
field_num);
return lhs;
@@ -1243,7 +1244,7 @@ setup_frame(INSTRUCTION *pc)
arg_count = (pc + 1)->expr_count;
/* tail recursion optimization */
- tail_optimize = ((pc + 1)->tail_call && do_optimize > 1
+ tail_optimize = ((pc + 1)->tail_call && do_optimize
&& ! do_debug && ! do_profile);
if (tail_optimize) {
diff --git a/ext.c b/ext.c
index 9e17761a..09e10164 100644
--- a/ext.c
+++ b/ext.c
@@ -7,7 +7,7 @@
*/
/*
- * Copyright (C) 1995 - 2001, 2003-2013 the Free Software Foundation, Inc.
+ * Copyright (C) 1995 - 2001, 2003-2014 the Free Software Foundation, Inc.
*
* This file is part of GAWK, the GNU implementation of the
* AWK Programming Language.
@@ -174,9 +174,9 @@ load_old_ext(SRCFILE *s, const char *init_func, const char *fini_func, NODE *obj
fatal(_("`extension' is a gawk extension"));
if (lib_name == NULL)
- fatal(_("load_ext: received NULL lib_name"));
+ fatal(_("extension: received NULL lib_name"));
- if ((dl = dlopen(s->fullpath, flags)) == NULL)
+ if ((dl = dlopen(lib_name, flags)) == NULL)
fatal(_("extension: cannot open library `%s' (%s)"), lib_name,
dlerror());
@@ -221,13 +221,11 @@ make_builtin(const awk_ext_func_t *funcinfo)
fatal(_("make_builtin: missing function name"));
if (! is_letter(*sp))
- return false;
-
- sp++;
+ return awk_false;
- while ((c = *sp++) != '\0') {
+ for (sp++; (c = *sp++) != '\0';) {
if (! is_identifier_char(c))
- return false;
+ return awk_false;
}
f = lookup(name);
@@ -240,7 +238,7 @@ make_builtin(const awk_ext_func_t *funcinfo)
/* multiple extension() calls etc. */
if (do_lint)
lintwarn(_("make_builtin: function `%s' already defined"), name);
- return false;
+ return awk_false;
} else
/* variable name etc. */
fatal(_("make_builtin: function name `%s' previously defined"), name);
@@ -260,7 +258,7 @@ make_builtin(const awk_ext_func_t *funcinfo)
symbol = install_symbol(estrdup(name, strlen(name)), Node_ext_func);
symbol->code_ptr = b;
track_ext_func(name);
- return true;
+ return awk_true;
}
/* make_old_builtin --- register name to be called as func with a builtin body */
@@ -277,9 +275,11 @@ make_old_builtin(const char *name, NODE *(*func)(int), int count) /* temporary *
if (sp == NULL || *sp == '\0')
fatal(_("extension: missing function name"));
- while ((c = *sp++) != '\0') {
- if ((sp == & name[1] && c != '_' && ! isalpha((unsigned char) c))
- || (sp > &name[1] && ! is_identifier_char((unsigned char) c)))
+ if (! is_letter(*sp))
+ fatal(_("extension: illegal character `%c' in function name `%s'"), *sp, name);
+
+ for (sp++; (c = *sp++) != '\0';) {
+ if (! is_identifier_char(c))
fatal(_("extension: illegal character `%c' in function name `%s'"), c, name);
}
@@ -312,6 +312,7 @@ make_old_builtin(const char *name, NODE *(*func)(int), int count) /* temporary *
symbol = install_symbol(estrdup(name, strlen(name)), Node_old_ext_func);
symbol->code_ptr = b;
+ track_ext_func(name);
}
diff --git a/extension/ChangeLog b/extension/ChangeLog
index 2fb742a9..d555d0e4 100644
--- a/extension/ChangeLog
+++ b/extension/ChangeLog
@@ -1,3 +1,123 @@
+2014-04-11 Arnold D. Robbins <arnold@skeeve.com>
+
+ * Makefile.am (install-data-hook): Use $(DESTDIR) when removing
+ the .la files. Thanks to Lars Wendler <polynomial-c@gentoo.org>
+ for the report and fix.
+
+2014-04-08 Arnold D. Robbins <arnold@skeeve.com>
+
+ * 4.1.1: Release tar ball made.
+
+2014-04-08 Arnold D. Robbins <arnold@skeeve.com>
+
+ * configure.ac: Bump version before release.
+
+2014-04-04 Arnold D. Robbins <arnold@skeeve.com>
+
+ * time.c: Include <time.h> unconditionally to get declaration
+ of nanosleep on Linux. Avoids a warning. Thanks to Michal
+ Jaegermann.
+
+2014-03-31 Arnold D. Robbins <arnold@skeeve.com>
+
+ * configure.ac: Remove -Wextra to avoid killing compilations
+ on older versions of gcc. Thanks to Antonio Diaz Diaz for
+ the report.
+
+2014-03-28 Arnold D. Robbins <arnold@skeeve.com>
+
+ * configure.ac: Add AC_HEADER_TIME and AC_HEADER_DIRENT, and
+ rearrange order of macros some. May help on older systems.
+
+2014-03-27 Arnold D. Robbins <arnold@skeeve.com>
+
+ * readfile.c: Add an input parser that works off of
+ PROCINFO["readfile"].
+ * readfile.3am: Document same.
+
+2014-03-23 Arnold D. Robbins <arnold@skeeve.com>
+
+ * gawkfts.c (MAXPATHLEN): Add a default definition. Thanks to
+ Antonio Diaz Dian and Nelson H.F. Beebe.
+ * readdir.c (PATH_MAX): Add a default definition. Thanks to
+ Nelson H.F. Beebe.
+
+2014-03-08 Andrew J. Schorr <aschorr@telemetry-investments.com>
+
+ * filefuncs.c (read_symlink, do_fts): Replace free with gawk_free.
+ * inplace.c (at_exit, do_inplace_end): Ditto.
+ * readdir.c (dir_close): Ditto.
+ * readfile.c (do_readfile): Ditto.
+ * revtwoway.c (close_two_proc_data): Ditto.
+ * rwarray.c (read_elem): Replace realloc with gawk_realloc.
+ (read_value): Replace malloc and free with gawk_malloc and gawk_free.
+ * testext.c (try_modify_environ): Replace free with gawk_free.
+
+2014-02-12 John E. Malmberg <wb8tyw@qsl.net>
+
+ * time.c: Better hack for nanosleep bug based on feedback from HP.
+
+2013-12-29 John E. Malmberg <wb8tyw@qsl.net>
+
+ * filefuncs.c: Fix compile on VMS.
+ * time.c: Fix compile on VMS.
+
+2013-12-29 Arnold D. Robbins <arnold@skeeve.com>
+
+ * gawkfts.c: Wrap include of <sys/param.h> in HAVE_SYS_PARAM_H,
+ as I should have done to start with. For VMS.
+
+2013-12-29 John E. Malmberg <wb8tyw@qsl.net>
+
+ * gawkdirfd.h: Adjust include for VMS.
+ * filefuncs.c: Make it compile on VMS.
+ * fnmatch.c: Make it compile on VMS.
+
+2013-12-21 Mike Frysinger <vapier@gentoo.org>
+
+ * configure.ac: Remove MirBSD and OS/390 hack to create
+ do-nothing Makefile. Should be handled by configure in the
+ parent directory.
+
+2013-12-21 Arnold D. Robbins <arnold@skeeve.com>
+
+ * configure, aclocal.m4: Updated to automake 1.13.4 and
+ libtool 2.4.2.418.
+
+2013-11-28 Arnold D. Robbins <arnold@skeeve.com>
+
+ * Makefile.am (uninstall-so, uninstall-recursive): Remove the
+ .so files. Keeps make distcheck happy.
+
+2013-11-17 Dmitry V. Levin <ldv@altlinux.org>
+
+ * Makefile.am (dist_man_MANS): Add inplace.3am.
+
+2013-10-23 Michael Haubenwallner <michael.haubenwallner@salomon.at>
+
+ Fix portability for AIX.
+
+ * inplace.c (_XOPEN_SOURCE): Define when not defined yet.
+ (_XOPEN_SOURCE_EXTENDED): Ditto. Needs to define a number.
+
+2013-08-22 Arnold D. Robbins <arnold@skeeve.com>
+
+ Clean up some warnings from -Wextra.
+
+ * gawkfts.c (fts_set): Add cast to void for sp.
+ * inplace.c (at_exit): Add cast to void for data and exit_status.
+ * readdir.c (ftype): Add cast to void for dirname.
+ (dir_get_record): Assign NULL to *rt_start.
+ * revtwoway.c (rev2way_get_record): Add cast to void for errcode.
+ (rev2way_fwrite): Add cast to void for fp.
+ (rev2way_take_control_of): Add cast to void for name.
+ * testext.c (test_array_param, test_scalar, test_scalar_reserved,
+ test_indirect_vars): Add cast to void for nargs.
+
+2013-08-20 Arnold D. Robbins <arnold@skeeve.com>
+
+ * gawkdirfd.h: Include ../nonposix.h to get FAKE_FD_VALUE.
+
2013-08-06 Arnold D. Robbins <arnold@skeeve.com>
* filefuncs.c: Change _WIN32 to __MINGW32__ globally, per
diff --git a/extension/Makefile.am b/extension/Makefile.am
index ac1b7a29..bfc12472 100644
--- a/extension/Makefile.am
+++ b/extension/Makefile.am
@@ -110,9 +110,15 @@ testext_la_LIBADD = $(MY_LIBS)
install-data-hook:
for i in $(pkgextension_LTLIBRARIES) ; do \
- $(RM) $(pkgextensiondir)/$$i ; \
+ $(RM) $(DESTDIR)$(pkgextensiondir)/$$i ; \
done
+# Keep the uninstall check working:
+uninstall-so:
+ $(RM) $(pkgextensiondir)/*.so
+
+uninstall-recursive: uninstall-so
+
EXTRA_DIST = build-aux/config.rpath \
ChangeLog \
ChangeLog.0 \
@@ -122,24 +128,9 @@ EXTRA_DIST = build-aux/config.rpath \
siglist.h
dist_man_MANS = \
- filefuncs.3am fnmatch.3am fork.3am ordchr.3am \
- readdir.3am readfile.3am revoutput.3am \
+ filefuncs.3am fnmatch.3am fork.3am inplace.3am \
+ ordchr.3am readdir.3am readfile.3am revoutput.3am \
revtwoway.3am rwarray.3am time.3am
# gettext requires this
SUBDIRS =
-
-# This is an ugly hack, initially for MirBSD but probably needed for other
-# systems. If gawk doesn't have the API built in, don't try to build the
-# extensions.
-#
-# Given the workaround in configure, this isn't strictly necessary, but
-# we're leaving it in, in case of some other system needing it.
-check-recursive all-recursive: check-for-shared-lib-support
-
-check-for-shared-lib-support:
- @if ../gawk$(EXEEXT) --version | sed 1q | grep API > /dev/null; \
- then : do nothing ; \
- else echo Building the extensions is not supported on this platform ; \
- exit 1; \
- fi
diff --git a/extension/Makefile.in b/extension/Makefile.in
index 5def0031..edd43399 100644
--- a/extension/Makefile.in
+++ b/extension/Makefile.in
@@ -1,7 +1,7 @@
-# Makefile.in generated by automake 1.13.1 from Makefile.am.
+# Makefile.in generated by automake 1.13.4 from Makefile.am.
# @configure_input@
-# Copyright (C) 1994-2012 Free Software Foundation, Inc.
+# Copyright (C) 1994-2013 Free Software Foundation, Inc.
# This Makefile.in is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
@@ -38,23 +38,51 @@
#
VPATH = @srcdir@
-am__make_dryrun = \
- { \
- am__dry=no; \
+am__is_gnu_make = test -n '$(MAKEFILE_LIST)' && test -n '$(MAKELEVEL)'
+am__make_running_with_option = \
+ case $${target_option-} in \
+ ?) ;; \
+ *) echo "am__make_running_with_option: internal error: invalid" \
+ "target option '$${target_option-}' specified" >&2; \
+ exit 1;; \
+ esac; \
+ has_opt=no; \
+ sane_makeflags=$$MAKEFLAGS; \
+ if $(am__is_gnu_make); then \
+ sane_makeflags=$$MFLAGS; \
+ else \
case $$MAKEFLAGS in \
*\\[\ \ ]*) \
- echo 'am--echo: ; @echo "AM" OK' | $(MAKE) -f - 2>/dev/null \
- | grep '^AM OK$$' >/dev/null || am__dry=yes;; \
- *) \
- for am__flg in $$MAKEFLAGS; do \
- case $$am__flg in \
- *=*|--*) ;; \
- *n*) am__dry=yes; break;; \
- esac; \
- done;; \
+ bs=\\; \
+ sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \
+ | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \
esac; \
- test $$am__dry = yes; \
- }
+ fi; \
+ skip_next=no; \
+ strip_trailopt () \
+ { \
+ flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \
+ }; \
+ for flg in $$sane_makeflags; do \
+ test $$skip_next = yes && { skip_next=no; continue; }; \
+ case $$flg in \
+ *=*|--*) continue;; \
+ -*I) strip_trailopt 'I'; skip_next=yes;; \
+ -*I?*) strip_trailopt 'I';; \
+ -*O) strip_trailopt 'O'; skip_next=yes;; \
+ -*O?*) strip_trailopt 'O';; \
+ -*l) strip_trailopt 'l'; skip_next=yes;; \
+ -*l?*) strip_trailopt 'l';; \
+ -[dEDm]) skip_next=yes;; \
+ -[JT]) skip_next=yes;; \
+ esac; \
+ case $$flg in \
+ *$$target_option*) has_opt=yes; break;; \
+ esac; \
+ done; \
+ test $$has_opt = yes
+am__make_dryrun = (target_option=n; $(am__make_running_with_option))
+am__make_keepgoing = (target_option=k; $(am__make_running_with_option))
pkgdatadir = $(datadir)/@PACKAGE@
pkgincludedir = $(includedir)/@PACKAGE@
pkglibdir = $(libdir)/@PACKAGE@
@@ -572,8 +600,8 @@ EXTRA_DIST = build-aux/config.rpath \
siglist.h
dist_man_MANS = \
- filefuncs.3am fnmatch.3am fork.3am ordchr.3am \
- readdir.3am readfile.3am revoutput.3am \
+ filefuncs.3am fnmatch.3am fork.3am inplace.3am \
+ ordchr.3am readdir.3am readfile.3am revoutput.3am \
revtwoway.3am rwarray.3am time.3am
@@ -668,32 +696,46 @@ clean-pkgextensionLTLIBRARIES:
echo rm -f $${locs}; \
rm -f $${locs}; \
}
+
errno.la: $(errno_la_OBJECTS) $(errno_la_DEPENDENCIES) $(EXTRA_errno_la_DEPENDENCIES)
$(AM_V_CCLD)$(errno_la_LINK) -rpath $(pkgextensiondir) $(errno_la_OBJECTS) $(errno_la_LIBADD) $(LIBS)
+
filefuncs.la: $(filefuncs_la_OBJECTS) $(filefuncs_la_DEPENDENCIES) $(EXTRA_filefuncs_la_DEPENDENCIES)
$(AM_V_CCLD)$(filefuncs_la_LINK) -rpath $(pkgextensiondir) $(filefuncs_la_OBJECTS) $(filefuncs_la_LIBADD) $(LIBS)
+
fnmatch.la: $(fnmatch_la_OBJECTS) $(fnmatch_la_DEPENDENCIES) $(EXTRA_fnmatch_la_DEPENDENCIES)
$(AM_V_CCLD)$(fnmatch_la_LINK) -rpath $(pkgextensiondir) $(fnmatch_la_OBJECTS) $(fnmatch_la_LIBADD) $(LIBS)
+
fork.la: $(fork_la_OBJECTS) $(fork_la_DEPENDENCIES) $(EXTRA_fork_la_DEPENDENCIES)
$(AM_V_CCLD)$(fork_la_LINK) -rpath $(pkgextensiondir) $(fork_la_OBJECTS) $(fork_la_LIBADD) $(LIBS)
+
inplace.la: $(inplace_la_OBJECTS) $(inplace_la_DEPENDENCIES) $(EXTRA_inplace_la_DEPENDENCIES)
$(AM_V_CCLD)$(inplace_la_LINK) -rpath $(pkgextensiondir) $(inplace_la_OBJECTS) $(inplace_la_LIBADD) $(LIBS)
+
ordchr.la: $(ordchr_la_OBJECTS) $(ordchr_la_DEPENDENCIES) $(EXTRA_ordchr_la_DEPENDENCIES)
$(AM_V_CCLD)$(ordchr_la_LINK) -rpath $(pkgextensiondir) $(ordchr_la_OBJECTS) $(ordchr_la_LIBADD) $(LIBS)
+
readdir.la: $(readdir_la_OBJECTS) $(readdir_la_DEPENDENCIES) $(EXTRA_readdir_la_DEPENDENCIES)
$(AM_V_CCLD)$(readdir_la_LINK) -rpath $(pkgextensiondir) $(readdir_la_OBJECTS) $(readdir_la_LIBADD) $(LIBS)
+
readfile.la: $(readfile_la_OBJECTS) $(readfile_la_DEPENDENCIES) $(EXTRA_readfile_la_DEPENDENCIES)
$(AM_V_CCLD)$(readfile_la_LINK) -rpath $(pkgextensiondir) $(readfile_la_OBJECTS) $(readfile_la_LIBADD) $(LIBS)
+
revoutput.la: $(revoutput_la_OBJECTS) $(revoutput_la_DEPENDENCIES) $(EXTRA_revoutput_la_DEPENDENCIES)
$(AM_V_CCLD)$(revoutput_la_LINK) -rpath $(pkgextensiondir) $(revoutput_la_OBJECTS) $(revoutput_la_LIBADD) $(LIBS)
+
revtwoway.la: $(revtwoway_la_OBJECTS) $(revtwoway_la_DEPENDENCIES) $(EXTRA_revtwoway_la_DEPENDENCIES)
$(AM_V_CCLD)$(revtwoway_la_LINK) -rpath $(pkgextensiondir) $(revtwoway_la_OBJECTS) $(revtwoway_la_LIBADD) $(LIBS)
+
rwarray.la: $(rwarray_la_OBJECTS) $(rwarray_la_DEPENDENCIES) $(EXTRA_rwarray_la_DEPENDENCIES)
$(AM_V_CCLD)$(rwarray_la_LINK) -rpath $(pkgextensiondir) $(rwarray_la_OBJECTS) $(rwarray_la_LIBADD) $(LIBS)
+
select.la: $(select_la_OBJECTS) $(select_la_DEPENDENCIES) $(EXTRA_select_la_DEPENDENCIES)
$(AM_V_CCLD)$(select_la_LINK) -rpath $(pkgextensiondir) $(select_la_OBJECTS) $(select_la_LIBADD) $(LIBS)
+
testext.la: $(testext_la_OBJECTS) $(testext_la_DEPENDENCIES) $(EXTRA_testext_la_DEPENDENCIES)
$(AM_V_CCLD)$(testext_la_LINK) -rpath $(pkgextensiondir) $(testext_la_OBJECTS) $(testext_la_LIBADD) $(LIBS)
+
time.la: $(time_la_OBJECTS) $(time_la_DEPENDENCIES) $(EXTRA_time_la_DEPENDENCIES)
$(AM_V_CCLD)$(time_la_LINK) -rpath $(pkgextensiondir) $(time_la_OBJECTS) $(time_la_LIBADD) $(LIBS)
@@ -800,13 +842,12 @@ uninstall-man3:
# (which will cause the Makefiles to be regenerated when you run 'make');
# (2) otherwise, pass the desired values on the 'make' command line.
$(am__recursive_targets):
- @fail= failcom='exit 1'; \
- for f in x $$MAKEFLAGS; do \
- case $$f in \
- *=* | --[!k]*);; \
- *k*) failcom='fail=yes';; \
- esac; \
- done; \
+ @fail=; \
+ if $(am__make_keepgoing); then \
+ failcom='fail=yes'; \
+ else \
+ failcom='exit 1'; \
+ fi; \
dot_seen=no; \
target=`echo $@ | sed s/-recursive//`; \
case "$@" in \
@@ -1222,23 +1263,14 @@ uninstall-man: uninstall-man3
install-data-hook:
for i in $(pkgextension_LTLIBRARIES) ; do \
- $(RM) $(pkgextensiondir)/$$i ; \
+ $(RM) $(DESTDIR)$(pkgextensiondir)/$$i ; \
done
-# This is an ugly hack, initially for MirBSD but probably needed for other
-# systems. If gawk doesn't have the API built in, don't try to build the
-# extensions.
-#
-# Given the workaround in configure, this isn't strictly necessary, but
-# we're leaving it in, in case of some other system needing it.
-check-recursive all-recursive: check-for-shared-lib-support
-
-check-for-shared-lib-support:
- @if ../gawk$(EXEEXT) --version | sed 1q | grep API > /dev/null; \
- then : do nothing ; \
- else echo Building the extensions is not supported on this platform ; \
- exit 1; \
- fi
+# Keep the uninstall check working:
+uninstall-so:
+ $(RM) $(pkgextensiondir)/*.so
+
+uninstall-recursive: uninstall-so
# Tell versions [3.59,3.63) of GNU make to not export all variables.
# Otherwise a system limit (for SysV at least) may be exceeded.
diff --git a/extension/aclocal.m4 b/extension/aclocal.m4
index c5a96e32..7e987650 100644
--- a/extension/aclocal.m4
+++ b/extension/aclocal.m4
@@ -1,6 +1,6 @@
-# generated automatically by aclocal 1.13.1 -*- Autoconf -*-
+# generated automatically by aclocal 1.13.4 -*- Autoconf -*-
-# Copyright (C) 1996-2012 Free Software Foundation, Inc.
+# Copyright (C) 1996-2013 Free Software Foundation, Inc.
# This file is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
@@ -35,7 +35,7 @@ AC_DEFUN([AM_AUTOMAKE_VERSION],
[am__api_version='1.13'
dnl Some users find AM_AUTOMAKE_VERSION and mistake it for a way to
dnl require some minimum version. Point them to the right macro.
-m4_if([$1], [1.13.1], [],
+m4_if([$1], [1.13.4], [],
[AC_FATAL([Do not call $0, use AM_INIT_AUTOMAKE([$1]).])])dnl
])
@@ -51,7 +51,7 @@ m4_define([_AM_AUTOCONF_VERSION], [])
# Call AM_AUTOMAKE_VERSION and AM_AUTOMAKE_VERSION so they can be traced.
# This function is AC_REQUIREd by AM_INIT_AUTOMAKE.
AC_DEFUN([AM_SET_CURRENT_AUTOMAKE_VERSION],
-[AM_AUTOMAKE_VERSION([1.13.1])dnl
+[AM_AUTOMAKE_VERSION([1.13.4])dnl
m4_ifndef([AC_AUTOCONF_VERSION],
[m4_copy([m4_PACKAGE_VERSION], [AC_AUTOCONF_VERSION])])dnl
_AM_AUTOCONF_VERSION(m4_defn([AC_AUTOCONF_VERSION]))])
@@ -432,7 +432,7 @@ AC_DEFUN([_AM_OUTPUT_DEPENDENCY_COMMANDS],
DEPDIR=`sed -n 's/^DEPDIR = //p' < "$mf"`
test -z "$DEPDIR" && continue
am__include=`sed -n 's/^am__include = //p' < "$mf"`
- test -z "am__include" && continue
+ test -z "$am__include" && continue
am__quote=`sed -n 's/^am__quote = //p' < "$mf"`
# Find all dependency output files, they are included files with
# $(DEPDIR) in their names. We invoke sed twice because it is the
@@ -984,76 +984,114 @@ AC_DEFUN([AM_SUBST_NOTMAKE], [_AM_SUBST_NOTMAKE($@)])
# Substitute a variable $(am__untar) that extract such
# a tarball read from stdin.
# $(am__untar) < result.tar
+#
AC_DEFUN([_AM_PROG_TAR],
[# Always define AMTAR for backward compatibility. Yes, it's still used
# in the wild :-( We should find a proper way to deprecate it ...
AC_SUBST([AMTAR], ['$${TAR-tar}'])
-m4_if([$1], [v7],
- [am__tar='$${TAR-tar} chof - "$$tardir"' am__untar='$${TAR-tar} xf -'],
- [m4_case([$1], [ustar],, [pax],,
- [m4_fatal([Unknown tar format])])
-AC_MSG_CHECKING([how to create a $1 tar archive])
-# Loop over all known methods to create a tar archive until one works.
+
+# We'll loop over all known methods to create a tar archive until one works.
_am_tools='gnutar m4_if([$1], [ustar], [plaintar]) pax cpio none'
-_am_tools=${am_cv_prog_tar_$1-$_am_tools}
-# Do not fold the above two line into one, because Tru64 sh and
-# Solaris sh will not grok spaces in the rhs of '-'.
-for _am_tool in $_am_tools
-do
- case $_am_tool in
- gnutar)
- for _am_tar in tar gnutar gtar;
- do
- AM_RUN_LOG([$_am_tar --version]) && break
- done
- am__tar="$_am_tar --format=m4_if([$1], [pax], [posix], [$1]) -chf - "'"$$tardir"'
- am__tar_="$_am_tar --format=m4_if([$1], [pax], [posix], [$1]) -chf - "'"$tardir"'
- am__untar="$_am_tar -xf -"
- ;;
- plaintar)
- # Must skip GNU tar: if it does not support --format= it doesn't create
- # ustar tarball either.
- (tar --version) >/dev/null 2>&1 && continue
- am__tar='tar chf - "$$tardir"'
- am__tar_='tar chf - "$tardir"'
- am__untar='tar xf -'
- ;;
- pax)
- am__tar='pax -L -x $1 -w "$$tardir"'
- am__tar_='pax -L -x $1 -w "$tardir"'
- am__untar='pax -r'
- ;;
- cpio)
- am__tar='find "$$tardir" -print | cpio -o -H $1 -L'
- am__tar_='find "$tardir" -print | cpio -o -H $1 -L'
- am__untar='cpio -i -H $1 -d'
- ;;
- none)
- am__tar=false
- am__tar_=false
- am__untar=false
- ;;
- esac
- # If the value was cached, stop now. We just wanted to have am__tar
- # and am__untar set.
- test -n "${am_cv_prog_tar_$1}" && break
+m4_if([$1], [v7],
+ [am__tar='$${TAR-tar} chof - "$$tardir"' am__untar='$${TAR-tar} xf -'],
+
+ [m4_case([$1],
+ [ustar],
+ [# The POSIX 1988 'ustar' format is defined with fixed-size fields.
+ # There is notably a 21 bits limit for the UID and the GID. In fact,
+ # the 'pax' utility can hang on bigger UID/GID (see automake bug#8343
+ # and bug#13588).
+ am_max_uid=2097151 # 2^21 - 1
+ am_max_gid=$am_max_uid
+ # The $UID and $GID variables are not portable, so we need to resort
+ # to the POSIX-mandated id(1) utility. Errors in the 'id' calls
+ # below are definitely unexpected, so allow the users to see them
+ # (that is, avoid stderr redirection).
+ am_uid=`id -u || echo unknown`
+ am_gid=`id -g || echo unknown`
+ AC_MSG_CHECKING([whether UID '$am_uid' is supported by ustar format])
+ if test $am_uid -le $am_max_uid; then
+ AC_MSG_RESULT([yes])
+ else
+ AC_MSG_RESULT([no])
+ _am_tools=none
+ fi
+ AC_MSG_CHECKING([whether GID '$am_gid' is supported by ustar format])
+ if test $am_gid -le $am_max_gid; then
+ AC_MSG_RESULT([yes])
+ else
+ AC_MSG_RESULT([no])
+ _am_tools=none
+ fi],
+
+ [pax],
+ [],
+
+ [m4_fatal([Unknown tar format])])
+
+ AC_MSG_CHECKING([how to create a $1 tar archive])
+
+ # Go ahead even if we have the value already cached. We do so because we
+ # need to set the values for the 'am__tar' and 'am__untar' variables.
+ _am_tools=${am_cv_prog_tar_$1-$_am_tools}
+
+ for _am_tool in $_am_tools; do
+ case $_am_tool in
+ gnutar)
+ for _am_tar in tar gnutar gtar; do
+ AM_RUN_LOG([$_am_tar --version]) && break
+ done
+ am__tar="$_am_tar --format=m4_if([$1], [pax], [posix], [$1]) -chf - "'"$$tardir"'
+ am__tar_="$_am_tar --format=m4_if([$1], [pax], [posix], [$1]) -chf - "'"$tardir"'
+ am__untar="$_am_tar -xf -"
+ ;;
+ plaintar)
+ # Must skip GNU tar: if it does not support --format= it doesn't create
+ # ustar tarball either.
+ (tar --version) >/dev/null 2>&1 && continue
+ am__tar='tar chf - "$$tardir"'
+ am__tar_='tar chf - "$tardir"'
+ am__untar='tar xf -'
+ ;;
+ pax)
+ am__tar='pax -L -x $1 -w "$$tardir"'
+ am__tar_='pax -L -x $1 -w "$tardir"'
+ am__untar='pax -r'
+ ;;
+ cpio)
+ am__tar='find "$$tardir" -print | cpio -o -H $1 -L'
+ am__tar_='find "$tardir" -print | cpio -o -H $1 -L'
+ am__untar='cpio -i -H $1 -d'
+ ;;
+ none)
+ am__tar=false
+ am__tar_=false
+ am__untar=false
+ ;;
+ esac
- # tar/untar a dummy directory, and stop if the command works
- rm -rf conftest.dir
- mkdir conftest.dir
- echo GrepMe > conftest.dir/file
- AM_RUN_LOG([tardir=conftest.dir && eval $am__tar_ >conftest.tar])
+ # If the value was cached, stop now. We just wanted to have am__tar
+ # and am__untar set.
+ test -n "${am_cv_prog_tar_$1}" && break
+
+ # tar/untar a dummy directory, and stop if the command works.
+ rm -rf conftest.dir
+ mkdir conftest.dir
+ echo GrepMe > conftest.dir/file
+ AM_RUN_LOG([tardir=conftest.dir && eval $am__tar_ >conftest.tar])
+ rm -rf conftest.dir
+ if test -s conftest.tar; then
+ AM_RUN_LOG([$am__untar <conftest.tar])
+ AM_RUN_LOG([cat conftest.dir/file])
+ grep GrepMe conftest.dir/file >/dev/null 2>&1 && break
+ fi
+ done
rm -rf conftest.dir
- if test -s conftest.tar; then
- AM_RUN_LOG([$am__untar <conftest.tar])
- grep GrepMe conftest.dir/file >/dev/null 2>&1 && break
- fi
-done
-rm -rf conftest.dir
-AC_CACHE_VAL([am_cv_prog_tar_$1], [am_cv_prog_tar_$1=$_am_tool])
-AC_MSG_RESULT([$am_cv_prog_tar_$1])])
+ AC_CACHE_VAL([am_cv_prog_tar_$1], [am_cv_prog_tar_$1=$_am_tool])
+ AC_MSG_RESULT([$am_cv_prog_tar_$1])])
+
AC_SUBST([am__tar])
AC_SUBST([am__untar])
]) # _AM_PROG_TAR
diff --git a/extension/build-aux/ChangeLog b/extension/build-aux/ChangeLog
index 35eb333c..697db607 100644
--- a/extension/build-aux/ChangeLog
+++ b/extension/build-aux/ChangeLog
@@ -1,3 +1,20 @@
+2014-04-08 Arnold D. Robbins <arnold@skeeve.com>
+
+ * 4.1.1: Release tar ball made.
+
+2014-01-03 Arnold D. Robbins <arnold@skeeve.com>
+
+ * config.guess, config.rpath, config.sub, depcomp,
+ install-sh: Updated.
+
+2013-12-24 Arnold D. Robbins <arnold@skeeve.com>
+
+ * config.guess: Updated.
+
+2013-12-21 Arnold D. Robbins <arnold@skeeve.com>
+
+ * ltmain.sh: Updated to libtool 2.4.2.418.
+
2013-05-09 Arnold D. Robbins <arnold@skeeve.com>
* 4.1.0: Release tar ball made.
diff --git a/extension/build-aux/config.guess b/extension/build-aux/config.guess
index aa04f04b..4438cd70 100755
--- a/extension/build-aux/config.guess
+++ b/extension/build-aux/config.guess
@@ -1,14 +1,12 @@
#! /bin/sh
# Attempt to guess a canonical system name.
-# Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999,
-# 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010,
-# 2011, 2012 Free Software Foundation, Inc.
+# Copyright 1992-2014 Free Software Foundation, Inc.
-timestamp='2012-06-17'
+timestamp='2014-01-01'
# This file is free software; you can redistribute it and/or modify it
# under the terms of the GNU General Public License as published by
-# the Free Software Foundation; either version 2 of the License, or
+# the Free Software Foundation; either version 3 of the License, or
# (at your option) any later version.
#
# This program is distributed in the hope that it will be useful, but
@@ -22,19 +20,17 @@ timestamp='2012-06-17'
# As a special exception to the GNU General Public License, if you
# distribute this file as part of a program that contains a
# configuration script generated by Autoconf, you may include it under
-# the same distribution terms that you use for the rest of that program.
-
-
-# Originally written by Per Bothner. Please send patches (context
-# diff format) to <config-patches@gnu.org> and include a ChangeLog
-# entry.
+# the same distribution terms that you use for the rest of that
+# program. This Exception is an additional permission under section 7
+# of the GNU General Public License, version 3 ("GPLv3").
#
-# This script attempts to guess a canonical system name similar to
-# config.sub. If it succeeds, it prints the system name on stdout, and
-# exits with 0. Otherwise, it exits with 1.
+# Originally written by Per Bothner.
#
# You can get the latest version of this script from:
# http://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.guess;hb=HEAD
+#
+# Please send patches with a ChangeLog entry to config-patches@gnu.org.
+
me=`echo "$0" | sed -e 's,.*/,,'`
@@ -54,9 +50,7 @@ version="\
GNU config.guess ($timestamp)
Originally written by Per Bothner.
-Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000,
-2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012
-Free Software Foundation, Inc.
+Copyright 1992-2014 Free Software Foundation, Inc.
This is free software; see the source for copying conditions. There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE."
@@ -138,6 +132,27 @@ UNAME_RELEASE=`(uname -r) 2>/dev/null` || UNAME_RELEASE=unknown
UNAME_SYSTEM=`(uname -s) 2>/dev/null` || UNAME_SYSTEM=unknown
UNAME_VERSION=`(uname -v) 2>/dev/null` || UNAME_VERSION=unknown
+case "${UNAME_SYSTEM}" in
+Linux|GNU|GNU/*)
+ # If the system lacks a compiler, then just pick glibc.
+ # We could probably try harder.
+ LIBC=gnu
+
+ eval $set_cc_for_build
+ cat <<-EOF > $dummy.c
+ #include <features.h>
+ #if defined(__UCLIBC__)
+ LIBC=uclibc
+ #elif defined(__dietlibc__)
+ LIBC=dietlibc
+ #else
+ LIBC=gnu
+ #endif
+ EOF
+ eval `$CC_FOR_BUILD -E $dummy.c 2>/dev/null | grep '^LIBC'`
+ ;;
+esac
+
# Note: order is significant - the case branches are not exclusive.
case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in
@@ -306,7 +321,7 @@ case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in
arm:RISC*:1.[012]*:*|arm:riscix:1.[012]*:*)
echo arm-acorn-riscix${UNAME_RELEASE}
exit ;;
- arm:riscos:*:*|arm:RISCOS:*:*)
+ arm*:riscos:*:*|arm*:RISCOS:*:*)
echo arm-unknown-riscos
exit ;;
SR2?01:HI-UX/MPP:*:* | SR8000:HI-UX/MPP:*:*)
@@ -805,6 +820,9 @@ EOF
i*:CYGWIN*:*)
echo ${UNAME_MACHINE}-pc-cygwin
exit ;;
+ *:MINGW64*:*)
+ echo ${UNAME_MACHINE}-pc-mingw64
+ exit ;;
*:MINGW*:*)
echo ${UNAME_MACHINE}-pc-mingw32
exit ;;
@@ -856,21 +874,21 @@ EOF
exit ;;
*:GNU:*:*)
# the GNU system
- echo `echo ${UNAME_MACHINE}|sed -e 's,[-/].*$,,'`-unknown-gnu`echo ${UNAME_RELEASE}|sed -e 's,/.*$,,'`
+ echo `echo ${UNAME_MACHINE}|sed -e 's,[-/].*$,,'`-unknown-${LIBC}`echo ${UNAME_RELEASE}|sed -e 's,/.*$,,'`
exit ;;
*:GNU/*:*:*)
# other systems with GNU libc and userland
- echo ${UNAME_MACHINE}-unknown-`echo ${UNAME_SYSTEM} | sed 's,^[^/]*/,,' | tr '[A-Z]' '[a-z]'``echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'`-gnu
+ echo ${UNAME_MACHINE}-unknown-`echo ${UNAME_SYSTEM} | sed 's,^[^/]*/,,' | tr '[A-Z]' '[a-z]'``echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'`-${LIBC}
exit ;;
i*86:Minix:*:*)
echo ${UNAME_MACHINE}-pc-minix
exit ;;
aarch64:Linux:*:*)
- echo ${UNAME_MACHINE}-unknown-linux-gnu
+ echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
exit ;;
aarch64_be:Linux:*:*)
UNAME_MACHINE=aarch64_be
- echo ${UNAME_MACHINE}-unknown-linux-gnu
+ echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
exit ;;
alpha:Linux:*:*)
case `sed -n '/^cpu model/s/^.*: \(.*\)/\1/p' < /proc/cpuinfo` in
@@ -883,59 +901,54 @@ EOF
EV68*) UNAME_MACHINE=alphaev68 ;;
esac
objdump --private-headers /bin/sh | grep -q ld.so.1
- if test "$?" = 0 ; then LIBC="libc1" ; else LIBC="" ; fi
- echo ${UNAME_MACHINE}-unknown-linux-gnu${LIBC}
+ if test "$?" = 0 ; then LIBC="gnulibc1" ; fi
+ echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
+ exit ;;
+ arc:Linux:*:* | arceb:Linux:*:*)
+ echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
exit ;;
arm*:Linux:*:*)
eval $set_cc_for_build
if echo __ARM_EABI__ | $CC_FOR_BUILD -E - 2>/dev/null \
| grep -q __ARM_EABI__
then
- echo ${UNAME_MACHINE}-unknown-linux-gnu
+ echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
else
if echo __ARM_PCS_VFP | $CC_FOR_BUILD -E - 2>/dev/null \
| grep -q __ARM_PCS_VFP
then
- echo ${UNAME_MACHINE}-unknown-linux-gnueabi
+ echo ${UNAME_MACHINE}-unknown-linux-${LIBC}eabi
else
- echo ${UNAME_MACHINE}-unknown-linux-gnueabihf
+ echo ${UNAME_MACHINE}-unknown-linux-${LIBC}eabihf
fi
fi
exit ;;
avr32*:Linux:*:*)
- echo ${UNAME_MACHINE}-unknown-linux-gnu
+ echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
exit ;;
cris:Linux:*:*)
- echo ${UNAME_MACHINE}-axis-linux-gnu
+ echo ${UNAME_MACHINE}-axis-linux-${LIBC}
exit ;;
crisv32:Linux:*:*)
- echo ${UNAME_MACHINE}-axis-linux-gnu
+ echo ${UNAME_MACHINE}-axis-linux-${LIBC}
exit ;;
frv:Linux:*:*)
- echo ${UNAME_MACHINE}-unknown-linux-gnu
+ echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
exit ;;
hexagon:Linux:*:*)
- echo ${UNAME_MACHINE}-unknown-linux-gnu
+ echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
exit ;;
i*86:Linux:*:*)
- LIBC=gnu
- eval $set_cc_for_build
- sed 's/^ //' << EOF >$dummy.c
- #ifdef __dietlibc__
- LIBC=dietlibc
- #endif
-EOF
- eval `$CC_FOR_BUILD -E $dummy.c 2>/dev/null | grep '^LIBC'`
- echo "${UNAME_MACHINE}-pc-linux-${LIBC}"
+ echo ${UNAME_MACHINE}-pc-linux-${LIBC}
exit ;;
ia64:Linux:*:*)
- echo ${UNAME_MACHINE}-unknown-linux-gnu
+ echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
exit ;;
m32r*:Linux:*:*)
- echo ${UNAME_MACHINE}-unknown-linux-gnu
+ echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
exit ;;
m68*:Linux:*:*)
- echo ${UNAME_MACHINE}-unknown-linux-gnu
+ echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
exit ;;
mips:Linux:*:* | mips64:Linux:*:*)
eval $set_cc_for_build
@@ -954,54 +967,63 @@ EOF
#endif
EOF
eval `$CC_FOR_BUILD -E $dummy.c 2>/dev/null | grep '^CPU'`
- test x"${CPU}" != x && { echo "${CPU}-unknown-linux-gnu"; exit; }
+ test x"${CPU}" != x && { echo "${CPU}-unknown-linux-${LIBC}"; exit; }
;;
+ or1k:Linux:*:*)
+ echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
+ exit ;;
or32:Linux:*:*)
- echo ${UNAME_MACHINE}-unknown-linux-gnu
+ echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
exit ;;
padre:Linux:*:*)
- echo sparc-unknown-linux-gnu
+ echo sparc-unknown-linux-${LIBC}
exit ;;
parisc64:Linux:*:* | hppa64:Linux:*:*)
- echo hppa64-unknown-linux-gnu
+ echo hppa64-unknown-linux-${LIBC}
exit ;;
parisc:Linux:*:* | hppa:Linux:*:*)
# Look for CPU level
case `grep '^cpu[^a-z]*:' /proc/cpuinfo 2>/dev/null | cut -d' ' -f2` in
- PA7*) echo hppa1.1-unknown-linux-gnu ;;
- PA8*) echo hppa2.0-unknown-linux-gnu ;;
- *) echo hppa-unknown-linux-gnu ;;
+ PA7*) echo hppa1.1-unknown-linux-${LIBC} ;;
+ PA8*) echo hppa2.0-unknown-linux-${LIBC} ;;
+ *) echo hppa-unknown-linux-${LIBC} ;;
esac
exit ;;
ppc64:Linux:*:*)
- echo powerpc64-unknown-linux-gnu
+ echo powerpc64-unknown-linux-${LIBC}
exit ;;
ppc:Linux:*:*)
- echo powerpc-unknown-linux-gnu
+ echo powerpc-unknown-linux-${LIBC}
+ exit ;;
+ ppc64le:Linux:*:*)
+ echo powerpc64le-unknown-linux-${LIBC}
+ exit ;;
+ ppcle:Linux:*:*)
+ echo powerpcle-unknown-linux-${LIBC}
exit ;;
s390:Linux:*:* | s390x:Linux:*:*)
- echo ${UNAME_MACHINE}-ibm-linux
+ echo ${UNAME_MACHINE}-ibm-linux-${LIBC}
exit ;;
sh64*:Linux:*:*)
- echo ${UNAME_MACHINE}-unknown-linux-gnu
+ echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
exit ;;
sh*:Linux:*:*)
- echo ${UNAME_MACHINE}-unknown-linux-gnu
+ echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
exit ;;
sparc:Linux:*:* | sparc64:Linux:*:*)
- echo ${UNAME_MACHINE}-unknown-linux-gnu
+ echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
exit ;;
tile*:Linux:*:*)
- echo ${UNAME_MACHINE}-unknown-linux-gnu
+ echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
exit ;;
vax:Linux:*:*)
- echo ${UNAME_MACHINE}-dec-linux-gnu
+ echo ${UNAME_MACHINE}-dec-linux-${LIBC}
exit ;;
x86_64:Linux:*:*)
- echo ${UNAME_MACHINE}-unknown-linux-gnu
+ echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
exit ;;
xtensa*:Linux:*:*)
- echo ${UNAME_MACHINE}-unknown-linux-gnu
+ echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
exit ;;
i*86:DYNIX/ptx:4*:*)
# ptx 4.0 does uname -s correctly, with DYNIX/ptx in there.
@@ -1205,6 +1227,9 @@ EOF
BePC:Haiku:*:*) # Haiku running on Intel PC compatible.
echo i586-pc-haiku
exit ;;
+ x86_64:Haiku:*:*)
+ echo x86_64-unknown-haiku
+ exit ;;
SX-4:SUPER-UX:*:*)
echo sx4-nec-superux${UNAME_RELEASE}
exit ;;
@@ -1231,19 +1256,31 @@ EOF
exit ;;
*:Darwin:*:*)
UNAME_PROCESSOR=`uname -p` || UNAME_PROCESSOR=unknown
- case $UNAME_PROCESSOR in
- i386)
- eval $set_cc_for_build
- if [ "$CC_FOR_BUILD" != 'no_compiler_found' ]; then
- if (echo '#ifdef __LP64__'; echo IS_64BIT_ARCH; echo '#endif') | \
- (CCOPTS= $CC_FOR_BUILD -E - 2>/dev/null) | \
- grep IS_64BIT_ARCH >/dev/null
- then
- UNAME_PROCESSOR="x86_64"
- fi
- fi ;;
- unknown) UNAME_PROCESSOR=powerpc ;;
- esac
+ eval $set_cc_for_build
+ if test "$UNAME_PROCESSOR" = unknown ; then
+ UNAME_PROCESSOR=powerpc
+ fi
+ if test `echo "$UNAME_RELEASE" | sed -e 's/\..*//'` -le 10 ; then
+ if [ "$CC_FOR_BUILD" != 'no_compiler_found' ]; then
+ if (echo '#ifdef __LP64__'; echo IS_64BIT_ARCH; echo '#endif') | \
+ (CCOPTS= $CC_FOR_BUILD -E - 2>/dev/null) | \
+ grep IS_64BIT_ARCH >/dev/null
+ then
+ case $UNAME_PROCESSOR in
+ i386) UNAME_PROCESSOR=x86_64 ;;
+ powerpc) UNAME_PROCESSOR=powerpc64 ;;
+ esac
+ fi
+ fi
+ elif test "$UNAME_PROCESSOR" = i386 ; then
+ # Avoid executing cc on OS X 10.9, as it ships with a stub
+ # that puts up a graphical alert prompting to install
+ # developer tools. Any system running Mac OS X 10.7 or
+ # later (Darwin 11 and later) is required to have a 64-bit
+ # processor. This is not true of the ARM version of Darwin
+ # that Apple uses in portable devices.
+ UNAME_PROCESSOR=x86_64
+ fi
echo ${UNAME_PROCESSOR}-apple-darwin${UNAME_RELEASE}
exit ;;
*:procnto*:*:* | *:QNX:[0123456789]*:*)
@@ -1334,9 +1371,6 @@ EOF
exit ;;
esac
-#echo '(No uname command or uname output not recognized.)' 1>&2
-#echo "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" 1>&2
-
eval $set_cc_for_build
cat >$dummy.c <<EOF
#ifdef _SEQUENT_
diff --git a/extension/build-aux/config.rpath b/extension/build-aux/config.rpath
index 17298f23..ab6fd995 100755
--- a/extension/build-aux/config.rpath
+++ b/extension/build-aux/config.rpath
@@ -2,7 +2,7 @@
# Output a system dependent set of variables, describing how to set the
# run time search path of shared libraries in an executable.
#
-# Copyright 1996-2010 Free Software Foundation, Inc.
+# Copyright 1996-2014 Free Software Foundation, Inc.
# Taken from GNU libtool, 2001
# Originally by Gordon Matzigkeit <gord@gnu.ai.mit.edu>, 1996
#
@@ -25,7 +25,7 @@
# known workaround is to choose shorter directory names for the build
# directory and/or the installation directory.
-# All known linkers require a `.a' archive for static linking (except MSVC,
+# All known linkers require a '.a' archive for static linking (except MSVC,
# which needs '.lib').
libext=a
shrext=.so
@@ -57,13 +57,6 @@ else
aix*)
wl='-Wl,'
;;
- darwin*)
- case $cc_basename in
- xlc*)
- wl='-Wl,'
- ;;
- esac
- ;;
mingw* | cygwin* | pw32* | os2* | cegcc*)
;;
hpux9* | hpux10* | hpux11*)
@@ -72,9 +65,7 @@ else
irix5* | irix6* | nonstopux*)
wl='-Wl,'
;;
- newsos6)
- ;;
- linux* | k*bsd*-gnu)
+ linux* | k*bsd*-gnu | kopensolaris*-gnu)
case $cc_basename in
ecc*)
wl='-Wl,'
@@ -85,17 +76,26 @@ else
lf95*)
wl='-Wl,'
;;
- pgcc | pgf77 | pgf90)
+ nagfor*)
+ wl='-Wl,-Wl,,'
+ ;;
+ pgcc* | pgf77* | pgf90* | pgf95* | pgfortran*)
wl='-Wl,'
;;
ccc*)
wl='-Wl,'
;;
+ xl* | bgxl* | bgf* | mpixl*)
+ wl='-Wl,'
+ ;;
como)
wl='-lopt='
;;
*)
case `$CC -V 2>&1 | sed 5q` in
+ *Sun\ F* | *Sun*Fortran*)
+ wl=
+ ;;
*Sun\ C*)
wl='-Wl,'
;;
@@ -103,13 +103,24 @@ else
;;
esac
;;
+ newsos6)
+ ;;
+ *nto* | *qnx*)
+ ;;
osf3* | osf4* | osf5*)
wl='-Wl,'
;;
rdos*)
;;
solaris*)
- wl='-Wl,'
+ case $cc_basename in
+ f77* | f90* | f95* | sunf77* | sunf90* | sunf95*)
+ wl='-Qoption ld '
+ ;;
+ *)
+ wl='-Wl,'
+ ;;
+ esac
;;
sunos4*)
wl='-Qoption ld '
@@ -171,15 +182,14 @@ if test "$with_gnu_ld" = yes; then
fi
;;
amigaos*)
- hardcode_libdir_flag_spec='-L$libdir'
- hardcode_minus_L=yes
- # Samuel A. Falvo II <kc5tja@dolphin.openprojects.net> reports
- # that the semantics of dynamic libraries on AmigaOS, at least up
- # to version 4, is to share data among multiple programs linked
- # with the same dynamic library. Since this doesn't match the
- # behavior of shared libraries on other platforms, we cannot use
- # them.
- ld_shlibs=no
+ case "$host_cpu" in
+ powerpc)
+ ;;
+ m68k)
+ hardcode_libdir_flag_spec='-L$libdir'
+ hardcode_minus_L=yes
+ ;;
+ esac
;;
beos*)
if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then
@@ -198,11 +208,13 @@ if test "$with_gnu_ld" = yes; then
ld_shlibs=no
fi
;;
+ haiku*)
+ ;;
interix[3-9]*)
hardcode_direct=no
hardcode_libdir_flag_spec='${wl}-rpath,$libdir'
;;
- gnu* | linux* | k*bsd*-gnu)
+ gnu* | linux* | tpf* | k*bsd*-gnu | kopensolaris*-gnu)
if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then
:
else
@@ -325,10 +337,14 @@ else
fi
;;
amigaos*)
- hardcode_libdir_flag_spec='-L$libdir'
- hardcode_minus_L=yes
- # see comment about different semantics on the GNU ld section
- ld_shlibs=no
+ case "$host_cpu" in
+ powerpc)
+ ;;
+ m68k)
+ hardcode_libdir_flag_spec='-L$libdir'
+ hardcode_minus_L=yes
+ ;;
+ esac
;;
bsdi[45]*)
;;
@@ -342,24 +358,15 @@ else
;;
darwin* | rhapsody*)
hardcode_direct=no
- if test "$GCC" = yes ; then
+ if { case $cc_basename in ifort*) true;; *) test "$GCC" = yes;; esac; }; then
:
else
- case $cc_basename in
- xlc*)
- ;;
- *)
- ld_shlibs=no
- ;;
- esac
+ ld_shlibs=no
fi
;;
dgux*)
hardcode_libdir_flag_spec='-L$libdir'
;;
- freebsd1*)
- ld_shlibs=no
- ;;
freebsd2.2*)
hardcode_libdir_flag_spec='-R$libdir'
hardcode_direct=yes
@@ -420,6 +427,8 @@ else
hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir'
hardcode_libdir_separator=:
;;
+ *nto* | *qnx*)
+ ;;
openbsd*)
if test -f /usr/libexec/ld.so; then
hardcode_direct=yes
@@ -515,7 +524,12 @@ case "$host_os" in
library_names_spec='$libname$shrext'
;;
amigaos*)
- library_names_spec='$libname.a'
+ case "$host_cpu" in
+ powerpc*)
+ library_names_spec='$libname$shrext' ;;
+ m68k)
+ library_names_spec='$libname.a' ;;
+ esac
;;
beos*)
library_names_spec='$libname$shrext'
@@ -534,8 +548,6 @@ case "$host_os" in
dgux*)
library_names_spec='$libname$shrext'
;;
- freebsd1*)
- ;;
freebsd* | dragonfly*)
case "$host_os" in
freebsd[123]*)
@@ -547,6 +559,9 @@ case "$host_os" in
gnu*)
library_names_spec='$libname$shrext'
;;
+ haiku*)
+ library_names_spec='$libname$shrext'
+ ;;
hpux9* | hpux10* | hpux11*)
case $host_cpu in
ia64*)
@@ -582,7 +597,7 @@ case "$host_os" in
;;
linux*oldld* | linux*aout* | linux*coff*)
;;
- linux* | k*bsd*-gnu)
+ linux* | k*bsd*-gnu | kopensolaris*-gnu)
library_names_spec='$libname$shrext'
;;
knetbsd*-gnu)
@@ -594,7 +609,7 @@ case "$host_os" in
newsos6)
library_names_spec='$libname$shrext'
;;
- nto-qnx*)
+ *nto* | *qnx*)
library_names_spec='$libname$shrext'
;;
openbsd*)
@@ -625,6 +640,9 @@ case "$host_os" in
sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX* | sysv4*uw2*)
library_names_spec='$libname$shrext'
;;
+ tpf*)
+ library_names_spec='$libname$shrext'
+ ;;
uts4*)
library_names_spec='$libname$shrext'
;;
diff --git a/extension/build-aux/config.sub b/extension/build-aux/config.sub
index aa2cf19b..092cff00 100755
--- a/extension/build-aux/config.sub
+++ b/extension/build-aux/config.sub
@@ -1,24 +1,18 @@
#! /bin/sh
# Configuration validation subroutine script.
-# Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999,
-# 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010,
-# 2011, 2012 Free Software Foundation, Inc.
+# Copyright 1992-2014 Free Software Foundation, Inc.
-timestamp='2012-06-17'
+timestamp='2014-01-01'
-# This file is (in principle) common to ALL GNU software.
-# The presence of a machine in this file suggests that SOME GNU software
-# can handle that machine. It does not imply ALL GNU software can.
-#
-# This file is free software; you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation; either version 2 of the License, or
+# This file is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 3 of the License, or
# (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.
+# 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, see <http://www.gnu.org/licenses/>.
@@ -26,11 +20,12 @@ timestamp='2012-06-17'
# As a special exception to the GNU General Public License, if you
# distribute this file as part of a program that contains a
# configuration script generated by Autoconf, you may include it under
-# the same distribution terms that you use for the rest of that program.
+# the same distribution terms that you use for the rest of that
+# program. This Exception is an additional permission under section 7
+# of the GNU General Public License, version 3 ("GPLv3").
-# Please send patches to <config-patches@gnu.org>. Submit a context
-# diff and a properly formatted GNU ChangeLog entry.
+# Please send patches with a ChangeLog entry to config-patches@gnu.org.
#
# Configuration subroutine to validate and canonicalize a configuration type.
# Supply the specified configuration type as an argument.
@@ -73,9 +68,7 @@ Report bugs and patches to <config-patches@gnu.org>."
version="\
GNU config.sub ($timestamp)
-Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000,
-2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012
-Free Software Foundation, Inc.
+Copyright 1992-2014 Free Software Foundation, Inc.
This is free software; see the source for copying conditions. There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE."
@@ -123,7 +116,7 @@ esac
maybe_os=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\2/'`
case $maybe_os in
nto-qnx* | linux-gnu* | linux-android* | linux-dietlibc | linux-newlib* | \
- linux-uclibc* | uclinux-uclibc* | uclinux-gnu* | kfreebsd*-gnu* | \
+ linux-musl* | linux-uclibc* | uclinux-uclibc* | uclinux-gnu* | kfreebsd*-gnu* | \
knetbsd*-gnu* | netbsd*-gnu* | \
kopensolaris*-gnu* | \
storm-chaos* | os2-emx* | rtmk-nova*)
@@ -156,7 +149,7 @@ case $os in
-convergent* | -ncr* | -news | -32* | -3600* | -3100* | -hitachi* |\
-c[123]* | -convex* | -sun | -crds | -omron* | -dg | -ultra | -tti* | \
-harris | -dolphin | -highlevel | -gould | -cbm | -ns | -masscomp | \
- -apple | -axis | -knuth | -cray | -microblaze)
+ -apple | -axis | -knuth | -cray | -microblaze*)
os=
basic_machine=$1
;;
@@ -259,10 +252,12 @@ case $basic_machine in
| alpha | alphaev[4-8] | alphaev56 | alphaev6[78] | alphapca5[67] \
| alpha64 | alpha64ev[4-8] | alpha64ev56 | alpha64ev6[78] | alpha64pca5[67] \
| am33_2.0 \
- | arc | arm | arm[bl]e | arme[lb] | armv[2345] | armv[345][lb] | avr | avr32 \
- | be32 | be64 \
+ | arc | arceb \
+ | arm | arm[bl]e | arme[lb] | armv[2-8] | armv[3-8][lb] | armv7[arm] \
+ | avr | avr32 \
+ | be32 | be64 \
| bfin \
- | c4x | clipper \
+ | c4x | c8051 | clipper \
| d10v | d30v | dlx | dsp16xx \
| epiphany \
| fido | fr30 | frv \
@@ -270,10 +265,11 @@ case $basic_machine in
| hexagon \
| i370 | i860 | i960 | ia64 \
| ip2k | iq2000 \
+ | k1om \
| le32 | le64 \
| lm32 \
| m32c | m32r | m32rle | m68000 | m68k | m88k \
- | maxq | mb | microblaze | mcore | mep | metag \
+ | maxq | mb | microblaze | microblazeel | mcore | mep | metag \
| mips | mipsbe | mipseb | mipsel | mipsle \
| mips16 \
| mips64 | mips64el \
@@ -291,16 +287,17 @@ case $basic_machine in
| mipsisa64r2 | mipsisa64r2el \
| mipsisa64sb1 | mipsisa64sb1el \
| mipsisa64sr71k | mipsisa64sr71kel \
+ | mipsr5900 | mipsr5900el \
| mipstx39 | mipstx39el \
| mn10200 | mn10300 \
| moxie \
| mt \
| msp430 \
| nds32 | nds32le | nds32be \
- | nios | nios2 \
+ | nios | nios2 | nios2eb | nios2el \
| ns16k | ns32k \
| open8 \
- | or32 \
+ | or1k | or32 \
| pdp10 | pdp11 | pj | pjl \
| powerpc | powerpc64 | powerpc64le | powerpcle \
| pyramid \
@@ -328,7 +325,7 @@ case $basic_machine in
c6x)
basic_machine=tic6x-unknown
;;
- m6811 | m68hc11 | m6812 | m68hc12 | m68hcs12x | picochip)
+ m6811 | m68hc11 | m6812 | m68hc12 | m68hcs12x | nvptx | picochip)
basic_machine=$basic_machine-unknown
os=-none
;;
@@ -370,13 +367,13 @@ case $basic_machine in
| aarch64-* | aarch64_be-* \
| alpha-* | alphaev[4-8]-* | alphaev56-* | alphaev6[78]-* \
| alpha64-* | alpha64ev[4-8]-* | alpha64ev56-* | alpha64ev6[78]-* \
- | alphapca5[67]-* | alpha64pca5[67]-* | arc-* \
+ | alphapca5[67]-* | alpha64pca5[67]-* | arc-* | arceb-* \
| arm-* | armbe-* | armle-* | armeb-* | armv*-* \
| avr-* | avr32-* \
| be32-* | be64-* \
| bfin-* | bs2000-* \
| c[123]* | c30-* | [cjt]90-* | c4x-* \
- | clipper-* | craynv-* | cydra-* \
+ | c8051-* | clipper-* | craynv-* | cydra-* \
| d10v-* | d30v-* | dlx-* \
| elxsi-* \
| f30[01]-* | f700-* | fido-* | fr30-* | frv-* | fx80-* \
@@ -385,11 +382,13 @@ case $basic_machine in
| hexagon-* \
| i*86-* | i860-* | i960-* | ia64-* \
| ip2k-* | iq2000-* \
+ | k1om-* \
| le32-* | le64-* \
| lm32-* \
| m32c-* | m32r-* | m32rle-* \
| m68000-* | m680[012346]0-* | m68360-* | m683?2-* | m68k-* \
- | m88110-* | m88k-* | maxq-* | mcore-* | metag-* | microblaze-* \
+ | m88110-* | m88k-* | maxq-* | mcore-* | metag-* \
+ | microblaze-* | microblazeel-* \
| mips-* | mipsbe-* | mipseb-* | mipsel-* | mipsle-* \
| mips16-* \
| mips64-* | mips64el-* \
@@ -407,12 +406,13 @@ case $basic_machine in
| mipsisa64r2-* | mipsisa64r2el-* \
| mipsisa64sb1-* | mipsisa64sb1el-* \
| mipsisa64sr71k-* | mipsisa64sr71kel-* \
+ | mipsr5900-* | mipsr5900el-* \
| mipstx39-* | mipstx39el-* \
| mmix-* \
| mt-* \
| msp430-* \
| nds32-* | nds32le-* | nds32be-* \
- | nios-* | nios2-* \
+ | nios-* | nios2-* | nios2eb-* | nios2el-* \
| none-* | np1-* | ns16k-* | ns32k-* \
| open8-* \
| orion-* \
@@ -788,11 +788,15 @@ case $basic_machine in
basic_machine=ns32k-utek
os=-sysv
;;
- microblaze)
+ microblaze*)
basic_machine=microblaze-xilinx
;;
+ mingw64)
+ basic_machine=x86_64-pc
+ os=-mingw64
+ ;;
mingw32)
- basic_machine=i386-pc
+ basic_machine=i686-pc
os=-mingw32
;;
mingw32ce)
@@ -828,7 +832,7 @@ case $basic_machine in
basic_machine=`echo $basic_machine | sed -e 's/ms1-/mt-/'`
;;
msys)
- basic_machine=i386-pc
+ basic_machine=i686-pc
os=-msys
;;
mvs)
@@ -1019,7 +1023,11 @@ case $basic_machine in
basic_machine=i586-unknown
os=-pw32
;;
- rdos)
+ rdos | rdos64)
+ basic_machine=x86_64-pc
+ os=-rdos
+ ;;
+ rdos32)
basic_machine=i386-pc
os=-rdos
;;
@@ -1346,7 +1354,7 @@ case $os in
-gnu* | -bsd* | -mach* | -minix* | -genix* | -ultrix* | -irix* \
| -*vms* | -sco* | -esix* | -isc* | -aix* | -cnk* | -sunos | -sunos[34]*\
| -hpux* | -unos* | -osf* | -luna* | -dgux* | -auroraux* | -solaris* \
- | -sym* | -kopensolaris* \
+ | -sym* | -kopensolaris* | -plan9* \
| -amigaos* | -amigados* | -msdos* | -newsos* | -unicos* | -aof* \
| -aos* | -aros* \
| -nindy* | -vxsim* | -vxworks* | -ebmon* | -hms* | -mvs* \
@@ -1359,8 +1367,8 @@ case $os in
| -udi* | -eabi* | -lites* | -ieee* | -go32* | -aux* \
| -chorusos* | -chorusrdb* | -cegcc* \
| -cygwin* | -msys* | -pe* | -psos* | -moss* | -proelf* | -rtems* \
- | -mingw32* | -linux-gnu* | -linux-android* \
- | -linux-newlib* | -linux-uclibc* \
+ | -mingw32* | -mingw64* | -linux-gnu* | -linux-android* \
+ | -linux-newlib* | -linux-musl* | -linux-uclibc* \
| -uxpv* | -beos* | -mpeix* | -udk* \
| -interix* | -uwin* | -mks* | -rhapsody* | -darwin* | -opened* \
| -openstep* | -oskit* | -conix* | -pw32* | -nonstopux* \
@@ -1492,9 +1500,6 @@ case $os in
-aros*)
os=-aros
;;
- -kaos*)
- os=-kaos
- ;;
-zvmoe)
os=-zvmoe
;;
@@ -1543,6 +1548,9 @@ case $basic_machine in
c4x-* | tic4x-*)
os=-coff
;;
+ c8051-*)
+ os=-elf
+ ;;
hexagon-*)
os=-elf
;;
@@ -1586,6 +1594,9 @@ case $basic_machine in
mips*-*)
os=-elf
;;
+ or1k-*)
+ os=-elf
+ ;;
or32-*)
os=-coff
;;
diff --git a/extension/build-aux/depcomp b/extension/build-aux/depcomp
index 0544c683..31788017 100755
--- a/extension/build-aux/depcomp
+++ b/extension/build-aux/depcomp
@@ -1,9 +1,9 @@
#! /bin/sh
# depcomp - compile a program generating dependencies as side-effects
-scriptversion=2012-07-12.20; # UTC
+scriptversion=2013-05-30.07; # UTC
-# Copyright (C) 1999-2012 Free Software Foundation, Inc.
+# Copyright (C) 1999-2013 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
@@ -27,9 +27,9 @@ scriptversion=2012-07-12.20; # UTC
case $1 in
'')
- echo "$0: No command. Try '$0 --help' for more information." 1>&2
- exit 1;
- ;;
+ echo "$0: No command. Try '$0 --help' for more information." 1>&2
+ exit 1;
+ ;;
-h | --h*)
cat <<\EOF
Usage: depcomp [--help] [--version] PROGRAM [ARGS]
@@ -56,11 +56,65 @@ EOF
;;
esac
+# Get the directory component of the given path, and save it in the
+# global variables '$dir'. Note that this directory component will
+# be either empty or ending with a '/' character. This is deliberate.
+set_dir_from ()
+{
+ case $1 in
+ */*) dir=`echo "$1" | sed -e 's|/[^/]*$|/|'`;;
+ *) dir=;;
+ esac
+}
+
+# Get the suffix-stripped basename of the given path, and save it the
+# global variable '$base'.
+set_base_from ()
+{
+ base=`echo "$1" | sed -e 's|^.*/||' -e 's/\.[^.]*$//'`
+}
+
+# If no dependency file was actually created by the compiler invocation,
+# we still have to create a dummy depfile, to avoid errors with the
+# Makefile "include basename.Plo" scheme.
+make_dummy_depfile ()
+{
+ echo "#dummy" > "$depfile"
+}
+
+# Factor out some common post-processing of the generated depfile.
+# Requires the auxiliary global variable '$tmpdepfile' to be set.
+aix_post_process_depfile ()
+{
+ # If the compiler actually managed to produce a dependency file,
+ # post-process it.
+ if test -f "$tmpdepfile"; then
+ # Each line is of the form 'foo.o: dependency.h'.
+ # Do two passes, one to just change these to
+ # $object: dependency.h
+ # and one to simply output
+ # dependency.h:
+ # which is needed to avoid the deleted-header problem.
+ { sed -e "s,^.*\.[$lower]*:,$object:," < "$tmpdepfile"
+ sed -e "s,^.*\.[$lower]*:[$tab ]*,," -e 's,$,:,' < "$tmpdepfile"
+ } > "$depfile"
+ rm -f "$tmpdepfile"
+ else
+ make_dummy_depfile
+ fi
+}
+
# A tabulation character.
tab=' '
# A newline character.
nl='
'
+# Character ranges might be problematic outside the C locale.
+# These definitions help.
+upper=ABCDEFGHIJKLMNOPQRSTUVWXYZ
+lower=abcdefghijklmnopqrstuvwxyz
+digits=0123456789
+alpha=${upper}${lower}
if test -z "$depmode" || test -z "$source" || test -z "$object"; then
echo "depcomp: Variables source, object and depmode must be set" 1>&2
@@ -74,6 +128,9 @@ tmpdepfile=${tmpdepfile-`echo "$depfile" | sed 's/\.\([^.]*\)$/.T\1/'`}
rm -f "$tmpdepfile"
+# Avoid interferences from the environment.
+gccflag= dashmflag=
+
# Some modes work just like other modes, but use different flags. We
# parameterize here, but still list the modes in the big case below,
# to make depend.m4 easier to write. Note that we *cannot* use a case
@@ -85,32 +142,32 @@ if test "$depmode" = hp; then
fi
if test "$depmode" = dashXmstdout; then
- # This is just like dashmstdout with a different argument.
- dashmflag=-xM
- depmode=dashmstdout
+ # This is just like dashmstdout with a different argument.
+ dashmflag=-xM
+ depmode=dashmstdout
fi
cygpath_u="cygpath -u -f -"
if test "$depmode" = msvcmsys; then
- # This is just like msvisualcpp but w/o cygpath translation.
- # Just convert the backslash-escaped backslashes to single forward
- # slashes to satisfy depend.m4
- cygpath_u='sed s,\\\\,/,g'
- depmode=msvisualcpp
+ # This is just like msvisualcpp but w/o cygpath translation.
+ # Just convert the backslash-escaped backslashes to single forward
+ # slashes to satisfy depend.m4
+ cygpath_u='sed s,\\\\,/,g'
+ depmode=msvisualcpp
fi
if test "$depmode" = msvc7msys; then
- # This is just like msvc7 but w/o cygpath translation.
- # Just convert the backslash-escaped backslashes to single forward
- # slashes to satisfy depend.m4
- cygpath_u='sed s,\\\\,/,g'
- depmode=msvc7
+ # This is just like msvc7 but w/o cygpath translation.
+ # Just convert the backslash-escaped backslashes to single forward
+ # slashes to satisfy depend.m4
+ cygpath_u='sed s,\\\\,/,g'
+ depmode=msvc7
fi
if test "$depmode" = xlc; then
- # IBM C/C++ Compilers xlc/xlC can output gcc-like dependency informations.
- gccflag=-qmakedep=gcc,-MF
- depmode=gcc
+ # IBM C/C++ Compilers xlc/xlC can output gcc-like dependency information.
+ gccflag=-qmakedep=gcc,-MF
+ depmode=gcc
fi
case "$depmode" in
@@ -133,8 +190,7 @@ gcc3)
done
"$@"
stat=$?
- if test $stat -eq 0; then :
- else
+ if test $stat -ne 0; then
rm -f "$tmpdepfile"
exit $stat
fi
@@ -142,13 +198,17 @@ gcc3)
;;
gcc)
+## Note that this doesn't just cater to obsosete pre-3.x GCC compilers.
+## but also to in-use compilers like IMB xlc/xlC and the HP C compiler.
+## (see the conditional assignment to $gccflag above).
## There are various ways to get dependency output from gcc. Here's
## why we pick this rather obscure method:
## - Don't want to use -MD because we'd like the dependencies to end
## up in a subdir. Having to rename by hand is ugly.
## (We might end up doing this anyway to support other compilers.)
## - The DEPENDENCIES_OUTPUT environment variable makes gcc act like
-## -MM, not -M (despite what the docs say).
+## -MM, not -M (despite what the docs say). Also, it might not be
+## supported by the other compilers which use the 'gcc' depmode.
## - Using -M directly means running the compiler twice (even worse
## than renaming).
if test -z "$gccflag"; then
@@ -156,15 +216,14 @@ gcc)
fi
"$@" -Wp,"$gccflag$tmpdepfile"
stat=$?
- if test $stat -eq 0; then :
- else
+ if test $stat -ne 0; then
rm -f "$tmpdepfile"
exit $stat
fi
rm -f "$depfile"
echo "$object : \\" > "$depfile"
- alpha=ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz
-## The second -e expression handles DOS-style file names with drive letters.
+ # The second -e expression handles DOS-style file names with drive
+ # letters.
sed -e 's/^[^:]*: / /' \
-e 's/^['$alpha']:\/[^:]*: / /' < "$tmpdepfile" >> "$depfile"
## This next piece of magic avoids the "deleted header file" problem.
@@ -173,15 +232,15 @@ gcc)
## typically no way to rebuild the header). We avoid this by adding
## dummy dependencies for each header file. Too bad gcc doesn't do
## this for us directly.
- tr ' ' "$nl" < "$tmpdepfile" |
## Some versions of gcc put a space before the ':'. On the theory
## that the space means something, we add a space to the output as
## well. hp depmode also adds that space, but also prefixes the VPATH
## to the object. Take care to not repeat it in the output.
## Some versions of the HPUX 10.20 sed can't process this invocation
## correctly. Breaking it into two sed invocations is a workaround.
- sed -e 's/^\\$//' -e '/^$/d' -e "s|.*$object$||" -e '/:$/d' \
- | sed -e 's/$/ :/' >> "$depfile"
+ tr ' ' "$nl" < "$tmpdepfile" \
+ | sed -e 's/^\\$//' -e '/^$/d' -e "s|.*$object$||" -e '/:$/d' \
+ | sed -e 's/$/ :/' >> "$depfile"
rm -f "$tmpdepfile"
;;
@@ -192,47 +251,6 @@ hp)
exit 1
;;
-sgi)
- if test "$libtool" = yes; then
- "$@" "-Wp,-MDupdate,$tmpdepfile"
- else
- "$@" -MDupdate "$tmpdepfile"
- fi
- stat=$?
- if test $stat -eq 0; then :
- else
- rm -f "$tmpdepfile"
- exit $stat
- fi
- rm -f "$depfile"
-
- if test -f "$tmpdepfile"; then # yes, the sourcefile depend on other files
- echo "$object : \\" > "$depfile"
-
- # Clip off the initial element (the dependent). Don't try to be
- # clever and replace this with sed code, as IRIX sed won't handle
- # lines with more than a fixed number of characters (4096 in
- # IRIX 6.2 sed, 8192 in IRIX 6.5). We also remove comment lines;
- # the IRIX cc adds comments like '#:fec' to the end of the
- # dependency line.
- tr ' ' "$nl" < "$tmpdepfile" \
- | sed -e 's/^.*\.o://' -e 's/#.*$//' -e '/^$/ d' | \
- tr "$nl" ' ' >> "$depfile"
- echo >> "$depfile"
-
- # The second pass generates a dummy entry for each header file.
- tr ' ' "$nl" < "$tmpdepfile" \
- | sed -e 's/^.*\.o://' -e 's/#.*$//' -e '/^$/ d' -e 's/$/:/' \
- >> "$depfile"
- else
- # The sourcefile does not contain any dependencies, so just
- # store a dummy comment line, to avoid errors with the Makefile
- # "include basename.Plo" scheme.
- echo "#dummy" > "$depfile"
- fi
- rm -f "$tmpdepfile"
- ;;
-
xlc)
# This case exists only to let depend.m4 do its work. It works by
# looking at the text of this script. This case will never be run,
@@ -246,9 +264,8 @@ aix)
# current directory. Also, the AIX compiler puts '$object:' at the
# start of each line; $object doesn't have directory information.
# Version 6 uses the directory in both cases.
- dir=`echo "$object" | sed -e 's|/[^/]*$|/|'`
- test "x$dir" = "x$object" && dir=
- base=`echo "$object" | sed -e 's|^.*/||' -e 's/\.o$//' -e 's/\.lo$//'`
+ set_dir_from "$object"
+ set_base_from "$object"
if test "$libtool" = yes; then
tmpdepfile1=$dir$base.u
tmpdepfile2=$base.u
@@ -261,9 +278,7 @@ aix)
"$@" -M
fi
stat=$?
-
- if test $stat -eq 0; then :
- else
+ if test $stat -ne 0; then
rm -f "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3"
exit $stat
fi
@@ -272,65 +287,37 @@ aix)
do
test -f "$tmpdepfile" && break
done
- if test -f "$tmpdepfile"; then
- # Each line is of the form 'foo.o: dependent.h'.
- # Do two passes, one to just change these to
- # '$object: dependent.h' and one to simply 'dependent.h:'.
- sed -e "s,^.*\.[a-z]*:,$object:," < "$tmpdepfile" > "$depfile"
- sed -e 's,^.*\.[a-z]*:['"$tab"' ]*,,' -e 's,$,:,' < "$tmpdepfile" >> "$depfile"
- else
- # The sourcefile does not contain any dependencies, so just
- # store a dummy comment line, to avoid errors with the Makefile
- # "include basename.Plo" scheme.
- echo "#dummy" > "$depfile"
- fi
- rm -f "$tmpdepfile"
+ aix_post_process_depfile
;;
-icc)
- # Intel's C compiler anf tcc (Tiny C Compiler) understand '-MD -MF file'.
- # However on
- # $CC -MD -MF foo.d -c -o sub/foo.o sub/foo.c
- # ICC 7.0 will fill foo.d with something like
- # foo.o: sub/foo.c
- # foo.o: sub/foo.h
- # which is wrong. We want
- # sub/foo.o: sub/foo.c
- # sub/foo.o: sub/foo.h
- # sub/foo.c:
- # sub/foo.h:
- # ICC 7.1 will output
- # foo.o: sub/foo.c sub/foo.h
- # and will wrap long lines using '\':
- # foo.o: sub/foo.c ... \
- # sub/foo.h ... \
- # ...
- # tcc 0.9.26 (FIXME still under development at the moment of writing)
- # will emit a similar output, but also prepend the continuation lines
- # with horizontal tabulation characters.
+tcc)
+ # tcc (Tiny C Compiler) understand '-MD -MF file' since version 0.9.26
+ # FIXME: That version still under development at the moment of writing.
+ # Make that this statement remains true also for stable, released
+ # versions.
+ # It will wrap lines (doesn't matter whether long or short) with a
+ # trailing '\', as in:
+ #
+ # foo.o : \
+ # foo.c \
+ # foo.h \
+ #
+ # It will put a trailing '\' even on the last line, and will use leading
+ # spaces rather than leading tabs (at least since its commit 0394caf7
+ # "Emit spaces for -MD").
"$@" -MD -MF "$tmpdepfile"
stat=$?
- if test $stat -eq 0; then :
- else
+ if test $stat -ne 0; then
rm -f "$tmpdepfile"
exit $stat
fi
rm -f "$depfile"
- # Each line is of the form 'foo.o: dependent.h',
- # or 'foo.o: dep1.h dep2.h \', or ' dep3.h dep4.h \'.
- # Do two passes, one to just change these to
- # '$object: dependent.h' and one to simply 'dependent.h:'.
- sed -e "s/^[ $tab][ $tab]*/ /" -e "s,^[^:]*:,$object :," \
- < "$tmpdepfile" > "$depfile"
- sed '
- s/[ '"$tab"'][ '"$tab"']*/ /g
- s/^ *//
- s/ *\\*$//
- s/^[^:]*: *//
- /^$/d
- /:$/d
- s/$/ :/
- ' < "$tmpdepfile" >> "$depfile"
+ # Each non-empty line is of the form 'foo.o : \' or ' dep.h \'.
+ # We have to change lines of the first kind to '$object: \'.
+ sed -e "s|.*:|$object :|" < "$tmpdepfile" > "$depfile"
+ # And for each line of the second kind, we have to emit a 'dep.h:'
+ # dummy dependency, to avoid the deleted-header problem.
+ sed -n -e 's|^ *\(.*\) *\\$|\1:|p' < "$tmpdepfile" >> "$depfile"
rm -f "$tmpdepfile"
;;
@@ -349,34 +336,37 @@ pgcc)
# foo.o: sub/foo.c ... \
# sub/foo.h ... \
# ...
- dir=`echo "$object" | sed -e 's|/[^/]*$|/|'`
- test "x$dir" = "x$object" && dir=
+ set_dir_from "$object"
# Use the source, not the object, to determine the base name, since
# that's sadly what pgcc will do too.
- base=`echo "$source" | sed -e 's|^.*/||' -e 's/\.[-_a-zA-Z0-9]*$//'`
- tmpdepfile="$base.d"
+ set_base_from "$source"
+ tmpdepfile=$base.d
# For projects that build the same source file twice into different object
# files, the pgcc approach of using the *source* file root name can cause
# problems in parallel builds. Use a locking strategy to avoid stomping on
# the same $tmpdepfile.
- lockdir="$base.d-lock"
- trap "echo '$0: caught signal, cleaning up...' >&2; rm -rf $lockdir" 1 2 13 15
+ lockdir=$base.d-lock
+ trap "
+ echo '$0: caught signal, cleaning up...' >&2
+ rmdir '$lockdir'
+ exit 1
+ " 1 2 13 15
numtries=100
i=$numtries
- while test $i -gt 0 ; do
+ while test $i -gt 0; do
# mkdir is a portable test-and-set.
- if mkdir $lockdir 2>/dev/null; then
+ if mkdir "$lockdir" 2>/dev/null; then
# This process acquired the lock.
"$@" -MD
stat=$?
# Release the lock.
- rm -rf $lockdir
+ rmdir "$lockdir"
break
else
- ## the lock is being held by a different process,
- ## wait until the winning process is done or we timeout
- while test -d $lockdir && test $i -gt 0; do
+ # If the lock is being held by a different process, wait
+ # until the winning process is done or we timeout.
+ while test -d "$lockdir" && test $i -gt 0; do
sleep 1
i=`expr $i - 1`
done
@@ -402,8 +392,8 @@ pgcc)
sed "s,^[^:]*:,$object :," < "$tmpdepfile" > "$depfile"
# Some versions of the HPUX 10.20 sed can't process this invocation
# correctly. Breaking it into two sed invocations is a workaround.
- sed 's,^[^:]*: \(.*\)$,\1,;s/^\\$//;/^$/d;/:$/d' < "$tmpdepfile" |
- sed -e 's/$/ :/' >> "$depfile"
+ sed 's,^[^:]*: \(.*\)$,\1,;s/^\\$//;/^$/d;/:$/d' < "$tmpdepfile" \
+ | sed -e 's/$/ :/' >> "$depfile"
rm -f "$tmpdepfile"
;;
@@ -414,9 +404,8 @@ hp2)
# 'foo.d', which lands next to the object file, wherever that
# happens to be.
# Much of this is similar to the tru64 case; see comments there.
- dir=`echo "$object" | sed -e 's|/[^/]*$|/|'`
- test "x$dir" = "x$object" && dir=
- base=`echo "$object" | sed -e 's|^.*/||' -e 's/\.o$//' -e 's/\.lo$//'`
+ set_dir_from "$object"
+ set_base_from "$object"
if test "$libtool" = yes; then
tmpdepfile1=$dir$base.d
tmpdepfile2=$dir.libs/$base.d
@@ -427,8 +416,7 @@ hp2)
"$@" +Maked
fi
stat=$?
- if test $stat -eq 0; then :
- else
+ if test $stat -ne 0; then
rm -f "$tmpdepfile1" "$tmpdepfile2"
exit $stat
fi
@@ -438,76 +426,61 @@ hp2)
test -f "$tmpdepfile" && break
done
if test -f "$tmpdepfile"; then
- sed -e "s,^.*\.[a-z]*:,$object:," "$tmpdepfile" > "$depfile"
+ sed -e "s,^.*\.[$lower]*:,$object:," "$tmpdepfile" > "$depfile"
# Add 'dependent.h:' lines.
sed -ne '2,${
- s/^ *//
- s/ \\*$//
- s/$/:/
- p
- }' "$tmpdepfile" >> "$depfile"
+ s/^ *//
+ s/ \\*$//
+ s/$/:/
+ p
+ }' "$tmpdepfile" >> "$depfile"
else
- echo "#dummy" > "$depfile"
+ make_dummy_depfile
fi
rm -f "$tmpdepfile" "$tmpdepfile2"
;;
tru64)
- # The Tru64 compiler uses -MD to generate dependencies as a side
- # effect. 'cc -MD -o foo.o ...' puts the dependencies into 'foo.o.d'.
- # At least on Alpha/Redhat 6.1, Compaq CCC V6.2-504 seems to put
- # dependencies in 'foo.d' instead, so we check for that too.
- # Subdirectories are respected.
- dir=`echo "$object" | sed -e 's|/[^/]*$|/|'`
- test "x$dir" = "x$object" && dir=
- base=`echo "$object" | sed -e 's|^.*/||' -e 's/\.o$//' -e 's/\.lo$//'`
-
- if test "$libtool" = yes; then
- # With Tru64 cc, shared objects can also be used to make a
- # static library. This mechanism is used in libtool 1.4 series to
- # handle both shared and static libraries in a single compilation.
- # With libtool 1.4, dependencies were output in $dir.libs/$base.lo.d.
- #
- # With libtool 1.5 this exception was removed, and libtool now
- # generates 2 separate objects for the 2 libraries. These two
- # compilations output dependencies in $dir.libs/$base.o.d and
- # in $dir$base.o.d. We have to check for both files, because
- # one of the two compilations can be disabled. We should prefer
- # $dir$base.o.d over $dir.libs/$base.o.d because the latter is
- # automatically cleaned when .libs/ is deleted, while ignoring
- # the former would cause a distcleancheck panic.
- tmpdepfile1=$dir.libs/$base.lo.d # libtool 1.4
- tmpdepfile2=$dir$base.o.d # libtool 1.5
- tmpdepfile3=$dir.libs/$base.o.d # libtool 1.5
- tmpdepfile4=$dir.libs/$base.d # Compaq CCC V6.2-504
- "$@" -Wc,-MD
- else
- tmpdepfile1=$dir$base.o.d
- tmpdepfile2=$dir$base.d
- tmpdepfile3=$dir$base.d
- tmpdepfile4=$dir$base.d
- "$@" -MD
- fi
-
- stat=$?
- if test $stat -eq 0; then :
- else
- rm -f "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3" "$tmpdepfile4"
- exit $stat
- fi
-
- for tmpdepfile in "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3" "$tmpdepfile4"
- do
- test -f "$tmpdepfile" && break
- done
- if test -f "$tmpdepfile"; then
- sed -e "s,^.*\.[a-z]*:,$object:," < "$tmpdepfile" > "$depfile"
- sed -e 's,^.*\.[a-z]*:['"$tab"' ]*,,' -e 's,$,:,' < "$tmpdepfile" >> "$depfile"
- else
- echo "#dummy" > "$depfile"
- fi
- rm -f "$tmpdepfile"
- ;;
+ # The Tru64 compiler uses -MD to generate dependencies as a side
+ # effect. 'cc -MD -o foo.o ...' puts the dependencies into 'foo.o.d'.
+ # At least on Alpha/Redhat 6.1, Compaq CCC V6.2-504 seems to put
+ # dependencies in 'foo.d' instead, so we check for that too.
+ # Subdirectories are respected.
+ set_dir_from "$object"
+ set_base_from "$object"
+
+ if test "$libtool" = yes; then
+ # Libtool generates 2 separate objects for the 2 libraries. These
+ # two compilations output dependencies in $dir.libs/$base.o.d and
+ # in $dir$base.o.d. We have to check for both files, because
+ # one of the two compilations can be disabled. We should prefer
+ # $dir$base.o.d over $dir.libs/$base.o.d because the latter is
+ # automatically cleaned when .libs/ is deleted, while ignoring
+ # the former would cause a distcleancheck panic.
+ tmpdepfile1=$dir$base.o.d # libtool 1.5
+ tmpdepfile2=$dir.libs/$base.o.d # Likewise.
+ tmpdepfile3=$dir.libs/$base.d # Compaq CCC V6.2-504
+ "$@" -Wc,-MD
+ else
+ tmpdepfile1=$dir$base.d
+ tmpdepfile2=$dir$base.d
+ tmpdepfile3=$dir$base.d
+ "$@" -MD
+ fi
+
+ stat=$?
+ if test $stat -ne 0; then
+ rm -f "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3"
+ exit $stat
+ fi
+
+ for tmpdepfile in "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3"
+ do
+ test -f "$tmpdepfile" && break
+ done
+ # Same post-processing that is required for AIX mode.
+ aix_post_process_depfile
+ ;;
msvc7)
if test "$libtool" = yes; then
@@ -518,8 +491,7 @@ msvc7)
"$@" $showIncludes > "$tmpdepfile"
stat=$?
grep -v '^Note: including file: ' "$tmpdepfile"
- if test "$stat" = 0; then :
- else
+ if test $stat -ne 0; then
rm -f "$tmpdepfile"
exit $stat
fi
@@ -545,6 +517,7 @@ $ {
G
p
}' >> "$depfile"
+ echo >> "$depfile" # make sure the fragment doesn't end with a backslash
rm -f "$tmpdepfile"
;;
@@ -596,13 +569,14 @@ dashmstdout)
# in the target name. This is to cope with DOS-style filenames:
# a dependency such as 'c:/foo/bar' could be seen as target 'c' otherwise.
"$@" $dashmflag |
- sed 's:^['"$tab"' ]*[^:'"$tab"' ][^:][^:]*\:['"$tab"' ]*:'"$object"'\: :' > "$tmpdepfile"
+ sed "s|^[$tab ]*[^:$tab ][^:][^:]*:[$tab ]*|$object: |" > "$tmpdepfile"
rm -f "$depfile"
cat < "$tmpdepfile" > "$depfile"
- tr ' ' "$nl" < "$tmpdepfile" | \
-## Some versions of the HPUX 10.20 sed can't process this invocation
-## correctly. Breaking it into two sed invocations is a workaround.
- sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' | sed -e 's/$/ :/' >> "$depfile"
+ # Some versions of the HPUX 10.20 sed can't process this sed invocation
+ # correctly. Breaking it into two sed invocations is a workaround.
+ tr ' ' "$nl" < "$tmpdepfile" \
+ | sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' \
+ | sed -e 's/$/ :/' >> "$depfile"
rm -f "$tmpdepfile"
;;
@@ -655,10 +629,12 @@ makedepend)
# makedepend may prepend the VPATH from the source file name to the object.
# No need to regex-escape $object, excess matching of '.' is harmless.
sed "s|^.*\($object *:\)|\1|" "$tmpdepfile" > "$depfile"
- sed '1,2d' "$tmpdepfile" | tr ' ' "$nl" | \
-## Some versions of the HPUX 10.20 sed can't process this invocation
-## correctly. Breaking it into two sed invocations is a workaround.
- sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' | sed -e 's/$/ :/' >> "$depfile"
+ # Some versions of the HPUX 10.20 sed can't process the last invocation
+ # correctly. Breaking it into two sed invocations is a workaround.
+ sed '1,2d' "$tmpdepfile" \
+ | tr ' ' "$nl" \
+ | sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' \
+ | sed -e 's/$/ :/' >> "$depfile"
rm -f "$tmpdepfile" "$tmpdepfile".bak
;;
@@ -694,10 +670,10 @@ cpp)
esac
done
- "$@" -E |
- sed -n -e '/^# [0-9][0-9]* "\([^"]*\)".*/ s:: \1 \\:p' \
- -e '/^#line [0-9][0-9]* "\([^"]*\)".*/ s:: \1 \\:p' |
- sed '$ s: \\$::' > "$tmpdepfile"
+ "$@" -E \
+ | sed -n -e '/^# [0-9][0-9]* "\([^"]*\)".*/ s:: \1 \\:p' \
+ -e '/^#line [0-9][0-9]* "\([^"]*\)".*/ s:: \1 \\:p' \
+ | sed '$ s: \\$::' > "$tmpdepfile"
rm -f "$depfile"
echo "$object : \\" > "$depfile"
cat < "$tmpdepfile" >> "$depfile"
@@ -729,15 +705,15 @@ msvisualcpp)
shift
;;
"-Gm"|"/Gm"|"-Gi"|"/Gi"|"-ZI"|"/ZI")
- set fnord "$@"
- shift
- shift
- ;;
+ set fnord "$@"
+ shift
+ shift
+ ;;
*)
- set fnord "$@" "$arg"
- shift
- shift
- ;;
+ set fnord "$@" "$arg"
+ shift
+ shift
+ ;;
esac
done
"$@" -E 2>/dev/null |
diff --git a/extension/build-aux/install-sh b/extension/build-aux/install-sh
index 377bb868..04367377 100755
--- a/extension/build-aux/install-sh
+++ b/extension/build-aux/install-sh
@@ -1,7 +1,7 @@
#!/bin/sh
# install - install a program, script, or datafile
-scriptversion=2011-11-20.07; # UTC
+scriptversion=2013-10-30.23; # UTC
# This originates from X11R5 (mit/util/scripts/install.sh), which was
# later released in X11R6 (xc/config/util/install.sh) with the
@@ -41,19 +41,15 @@ scriptversion=2011-11-20.07; # UTC
# This script is compatible with the BSD install script, but was written
# from scratch.
+tab=' '
nl='
'
-IFS=" "" $nl"
+IFS=" $tab$nl"
-# set DOITPROG to echo to test this script
+# Set DOITPROG to "echo" to test this script.
-# Don't use :- since 4.3BSD and earlier shells don't like it.
doit=${DOITPROG-}
-if test -z "$doit"; then
- doit_exec=exec
-else
- doit_exec=$doit
-fi
+doit_exec=${doit:-exec}
# Put in absolute file names if you don't have them in your path;
# or use environment vars.
@@ -68,17 +64,6 @@ mvprog=${MVPROG-mv}
rmprog=${RMPROG-rm}
stripprog=${STRIPPROG-strip}
-posix_glob='?'
-initialize_posix_glob='
- test "$posix_glob" != "?" || {
- if (set -f) 2>/dev/null; then
- posix_glob=
- else
- posix_glob=:
- fi
- }
-'
-
posix_mkdir=
# Desired mode of installed file.
@@ -137,40 +122,39 @@ while test $# -ne 0; do
-d) dir_arg=true;;
-g) chgrpcmd="$chgrpprog $2"
- shift;;
+ shift;;
--help) echo "$usage"; exit $?;;
-m) mode=$2
- case $mode in
- *' '* | *' '* | *'
-'* | *'*'* | *'?'* | *'['*)
- echo "$0: invalid mode: $mode" >&2
- exit 1;;
- esac
- shift;;
+ case $mode in
+ *' '* | *"$tab"* | *"$nl"* | *'*'* | *'?'* | *'['*)
+ echo "$0: invalid mode: $mode" >&2
+ exit 1;;
+ esac
+ shift;;
-o) chowncmd="$chownprog $2"
- shift;;
+ shift;;
-s) stripcmd=$stripprog;;
-t) dst_arg=$2
- # Protect names problematic for 'test' and other utilities.
- case $dst_arg in
- -* | [=\(\)!]) dst_arg=./$dst_arg;;
- esac
- shift;;
+ # Protect names problematic for 'test' and other utilities.
+ case $dst_arg in
+ -* | [=\(\)!]) dst_arg=./$dst_arg;;
+ esac
+ shift;;
-T) no_target_directory=true;;
--version) echo "$0 $scriptversion"; exit $?;;
- --) shift
- break;;
+ --) shift
+ break;;
- -*) echo "$0: invalid option: $1" >&2
- exit 1;;
+ -*) echo "$0: invalid option: $1" >&2
+ exit 1;;
*) break;;
esac
@@ -223,16 +207,16 @@ if test -z "$dir_arg"; then
*[0-7])
if test -z "$stripcmd"; then
- u_plus_rw=
+ u_plus_rw=
else
- u_plus_rw='% 200'
+ u_plus_rw='% 200'
fi
cp_umask=`expr '(' 777 - $mode % 1000 ')' $u_plus_rw`;;
*)
if test -z "$stripcmd"; then
- u_plus_rw=
+ u_plus_rw=
else
- u_plus_rw=,u+rw
+ u_plus_rw=,u+rw
fi
cp_umask=$mode$u_plus_rw;;
esac
@@ -270,40 +254,14 @@ do
# if double slashes aren't ignored.
if test -d "$dst"; then
if test -n "$no_target_directory"; then
- echo "$0: $dst_arg: Is a directory" >&2
- exit 1
+ echo "$0: $dst_arg: Is a directory" >&2
+ exit 1
fi
dstdir=$dst
dst=$dstdir/`basename "$src"`
dstdir_status=0
else
- # Prefer dirname, but fall back on a substitute if dirname fails.
- dstdir=`
- (dirname "$dst") 2>/dev/null ||
- expr X"$dst" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
- X"$dst" : 'X\(//\)[^/]' \| \
- X"$dst" : 'X\(//\)$' \| \
- X"$dst" : 'X\(/\)' \| . 2>/dev/null ||
- echo X"$dst" |
- sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{
- s//\1/
- q
- }
- /^X\(\/\/\)[^/].*/{
- s//\1/
- q
- }
- /^X\(\/\/\)$/{
- s//\1/
- q
- }
- /^X\(\/\).*/{
- s//\1/
- q
- }
- s/.*/./; q'
- `
-
+ dstdir=`dirname "$dst"`
test -d "$dstdir"
dstdir_status=$?
fi
@@ -314,74 +272,74 @@ do
if test $dstdir_status != 0; then
case $posix_mkdir in
'')
- # Create intermediate dirs using mode 755 as modified by the umask.
- # This is like FreeBSD 'install' as of 1997-10-28.
- umask=`umask`
- case $stripcmd.$umask in
- # Optimize common cases.
- *[2367][2367]) mkdir_umask=$umask;;
- .*0[02][02] | .[02][02] | .[02]) mkdir_umask=22;;
-
- *[0-7])
- mkdir_umask=`expr $umask + 22 \
- - $umask % 100 % 40 + $umask % 20 \
- - $umask % 10 % 4 + $umask % 2
- `;;
- *) mkdir_umask=$umask,go-w;;
- esac
-
- # With -d, create the new directory with the user-specified mode.
- # Otherwise, rely on $mkdir_umask.
- if test -n "$dir_arg"; then
- mkdir_mode=-m$mode
- else
- mkdir_mode=
- fi
-
- posix_mkdir=false
- case $umask in
- *[123567][0-7][0-7])
- # POSIX mkdir -p sets u+wx bits regardless of umask, which
- # is incompatible with FreeBSD 'install' when (umask & 300) != 0.
- ;;
- *)
- tmpdir=${TMPDIR-/tmp}/ins$RANDOM-$$
- trap 'ret=$?; rmdir "$tmpdir/d" "$tmpdir" 2>/dev/null; exit $ret' 0
-
- if (umask $mkdir_umask &&
- exec $mkdirprog $mkdir_mode -p -- "$tmpdir/d") >/dev/null 2>&1
- then
- if test -z "$dir_arg" || {
- # Check for POSIX incompatibilities with -m.
- # HP-UX 11.23 and IRIX 6.5 mkdir -m -p sets group- or
- # other-writable bit of parent directory when it shouldn't.
- # FreeBSD 6.1 mkdir -m -p sets mode of existing directory.
- ls_ld_tmpdir=`ls -ld "$tmpdir"`
- case $ls_ld_tmpdir in
- d????-?r-*) different_mode=700;;
- d????-?--*) different_mode=755;;
- *) false;;
- esac &&
- $mkdirprog -m$different_mode -p -- "$tmpdir" && {
- ls_ld_tmpdir_1=`ls -ld "$tmpdir"`
- test "$ls_ld_tmpdir" = "$ls_ld_tmpdir_1"
- }
- }
- then posix_mkdir=:
- fi
- rmdir "$tmpdir/d" "$tmpdir"
- else
- # Remove any dirs left behind by ancient mkdir implementations.
- rmdir ./$mkdir_mode ./-p ./-- 2>/dev/null
- fi
- trap '' 0;;
- esac;;
+ # Create intermediate dirs using mode 755 as modified by the umask.
+ # This is like FreeBSD 'install' as of 1997-10-28.
+ umask=`umask`
+ case $stripcmd.$umask in
+ # Optimize common cases.
+ *[2367][2367]) mkdir_umask=$umask;;
+ .*0[02][02] | .[02][02] | .[02]) mkdir_umask=22;;
+
+ *[0-7])
+ mkdir_umask=`expr $umask + 22 \
+ - $umask % 100 % 40 + $umask % 20 \
+ - $umask % 10 % 4 + $umask % 2
+ `;;
+ *) mkdir_umask=$umask,go-w;;
+ esac
+
+ # With -d, create the new directory with the user-specified mode.
+ # Otherwise, rely on $mkdir_umask.
+ if test -n "$dir_arg"; then
+ mkdir_mode=-m$mode
+ else
+ mkdir_mode=
+ fi
+
+ posix_mkdir=false
+ case $umask in
+ *[123567][0-7][0-7])
+ # POSIX mkdir -p sets u+wx bits regardless of umask, which
+ # is incompatible with FreeBSD 'install' when (umask & 300) != 0.
+ ;;
+ *)
+ tmpdir=${TMPDIR-/tmp}/ins$RANDOM-$$
+ trap 'ret=$?; rmdir "$tmpdir/d" "$tmpdir" 2>/dev/null; exit $ret' 0
+
+ if (umask $mkdir_umask &&
+ exec $mkdirprog $mkdir_mode -p -- "$tmpdir/d") >/dev/null 2>&1
+ then
+ if test -z "$dir_arg" || {
+ # Check for POSIX incompatibilities with -m.
+ # HP-UX 11.23 and IRIX 6.5 mkdir -m -p sets group- or
+ # other-writable bit of parent directory when it shouldn't.
+ # FreeBSD 6.1 mkdir -m -p sets mode of existing directory.
+ ls_ld_tmpdir=`ls -ld "$tmpdir"`
+ case $ls_ld_tmpdir in
+ d????-?r-*) different_mode=700;;
+ d????-?--*) different_mode=755;;
+ *) false;;
+ esac &&
+ $mkdirprog -m$different_mode -p -- "$tmpdir" && {
+ ls_ld_tmpdir_1=`ls -ld "$tmpdir"`
+ test "$ls_ld_tmpdir" = "$ls_ld_tmpdir_1"
+ }
+ }
+ then posix_mkdir=:
+ fi
+ rmdir "$tmpdir/d" "$tmpdir"
+ else
+ # Remove any dirs left behind by ancient mkdir implementations.
+ rmdir ./$mkdir_mode ./-p ./-- 2>/dev/null
+ fi
+ trap '' 0;;
+ esac;;
esac
if
$posix_mkdir && (
- umask $mkdir_umask &&
- $doit_exec $mkdirprog $mkdir_mode -p -- "$dstdir"
+ umask $mkdir_umask &&
+ $doit_exec $mkdirprog $mkdir_mode -p -- "$dstdir"
)
then :
else
@@ -391,53 +349,51 @@ do
# directory the slow way, step by step, checking for races as we go.
case $dstdir in
- /*) prefix='/';;
- [-=\(\)!]*) prefix='./';;
- *) prefix='';;
+ /*) prefix='/';;
+ [-=\(\)!]*) prefix='./';;
+ *) prefix='';;
esac
- eval "$initialize_posix_glob"
-
oIFS=$IFS
IFS=/
- $posix_glob set -f
+ set -f
set fnord $dstdir
shift
- $posix_glob set +f
+ set +f
IFS=$oIFS
prefixes=
for d
do
- test X"$d" = X && continue
-
- prefix=$prefix$d
- if test -d "$prefix"; then
- prefixes=
- else
- if $posix_mkdir; then
- (umask=$mkdir_umask &&
- $doit_exec $mkdirprog $mkdir_mode -p -- "$dstdir") && break
- # Don't fail if two instances are running concurrently.
- test -d "$prefix" || exit 1
- else
- case $prefix in
- *\'*) qprefix=`echo "$prefix" | sed "s/'/'\\\\\\\\''/g"`;;
- *) qprefix=$prefix;;
- esac
- prefixes="$prefixes '$qprefix'"
- fi
- fi
- prefix=$prefix/
+ test X"$d" = X && continue
+
+ prefix=$prefix$d
+ if test -d "$prefix"; then
+ prefixes=
+ else
+ if $posix_mkdir; then
+ (umask=$mkdir_umask &&
+ $doit_exec $mkdirprog $mkdir_mode -p -- "$dstdir") && break
+ # Don't fail if two instances are running concurrently.
+ test -d "$prefix" || exit 1
+ else
+ case $prefix in
+ *\'*) qprefix=`echo "$prefix" | sed "s/'/'\\\\\\\\''/g"`;;
+ *) qprefix=$prefix;;
+ esac
+ prefixes="$prefixes '$qprefix'"
+ fi
+ fi
+ prefix=$prefix/
done
if test -n "$prefixes"; then
- # Don't fail if two instances are running concurrently.
- (umask $mkdir_umask &&
- eval "\$doit_exec \$mkdirprog $prefixes") ||
- test -d "$dstdir" || exit 1
- obsolete_mkdir_used=true
+ # Don't fail if two instances are running concurrently.
+ (umask $mkdir_umask &&
+ eval "\$doit_exec \$mkdirprog $prefixes") ||
+ test -d "$dstdir" || exit 1
+ obsolete_mkdir_used=true
fi
fi
fi
@@ -472,15 +428,12 @@ do
# If -C, don't bother to copy if it wouldn't change the file.
if $copy_on_change &&
- old=`LC_ALL=C ls -dlL "$dst" 2>/dev/null` &&
- new=`LC_ALL=C ls -dlL "$dsttmp" 2>/dev/null` &&
-
- eval "$initialize_posix_glob" &&
- $posix_glob set -f &&
+ old=`LC_ALL=C ls -dlL "$dst" 2>/dev/null` &&
+ new=`LC_ALL=C ls -dlL "$dsttmp" 2>/dev/null` &&
+ set -f &&
set X $old && old=:$2:$4:$5:$6 &&
set X $new && new=:$2:$4:$5:$6 &&
- $posix_glob set +f &&
-
+ set +f &&
test "$old" = "$new" &&
$cmpprog "$dst" "$dsttmp" >/dev/null 2>&1
then
@@ -493,24 +446,24 @@ do
# to itself, or perhaps because mv is so ancient that it does not
# support -f.
{
- # Now remove or move aside any old file at destination location.
- # We try this two ways since rm can't unlink itself on some
- # systems and the destination file might be busy for other
- # reasons. In this case, the final cleanup might fail but the new
- # file should still install successfully.
- {
- test ! -f "$dst" ||
- $doit $rmcmd -f "$dst" 2>/dev/null ||
- { $doit $mvcmd -f "$dst" "$rmtmp" 2>/dev/null &&
- { $doit $rmcmd -f "$rmtmp" 2>/dev/null; :; }
- } ||
- { echo "$0: cannot unlink or rename $dst" >&2
- (exit 1); exit 1
- }
- } &&
-
- # Now rename the file to the real destination.
- $doit $mvcmd "$dsttmp" "$dst"
+ # Now remove or move aside any old file at destination location.
+ # We try this two ways since rm can't unlink itself on some
+ # systems and the destination file might be busy for other
+ # reasons. In this case, the final cleanup might fail but the new
+ # file should still install successfully.
+ {
+ test ! -f "$dst" ||
+ $doit $rmcmd -f "$dst" 2>/dev/null ||
+ { $doit $mvcmd -f "$dst" "$rmtmp" 2>/dev/null &&
+ { $doit $rmcmd -f "$rmtmp" 2>/dev/null; :; }
+ } ||
+ { echo "$0: cannot unlink or rename $dst" >&2
+ (exit 1); exit 1
+ }
+ } &&
+
+ # Now rename the file to the real destination.
+ $doit $mvcmd "$dsttmp" "$dst"
}
fi || exit 1
diff --git a/extension/build-aux/ltmain.sh b/extension/build-aux/ltmain.sh
index 63ae69dc..a50a21a6 100644
--- a/extension/build-aux/ltmain.sh
+++ b/extension/build-aux/ltmain.sh
@@ -1,9 +1,10 @@
+#! /bin/sh
-# libtool (GNU libtool) 2.4.2
+# libtool (GNU libtool) 2.4.2.418
+# Provide generalized library-building support services.
# Written by Gordon Matzigkeit <gord@gnu.ai.mit.edu>, 1996
-# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2003, 2004, 2005, 2006,
-# 2007, 2008, 2009, 2010, 2011 Free Software Foundation, Inc.
+# Copyright (C) 1996-2013 Free Software Foundation, Inc.
# This is free software; see the source for copying conditions. There is NO
# warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
@@ -23,881 +24,2013 @@
# General Public License for more details.
#
# You should have received a copy of the GNU General Public License
-# along with GNU Libtool; see the file COPYING. If not, a copy
-# can be downloaded from http://www.gnu.org/licenses/gpl.html,
-# or obtained by writing to the Free Software Foundation, Inc.,
-# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+# along with this program. If not, see <http://www.gnu.org/licenses/>.
-# Usage: $progname [OPTION]... [MODE-ARG]...
-#
-# Provide generalized library-building support services.
-#
-# --config show all configuration variables
-# --debug enable verbose shell tracing
-# -n, --dry-run display commands without modifying any files
-# --features display basic configuration information and exit
-# --mode=MODE use operation mode MODE
-# --preserve-dup-deps don't remove duplicate dependency libraries
-# --quiet, --silent don't print informational messages
-# --no-quiet, --no-silent
-# print informational messages (default)
-# --no-warn don't display warning messages
-# --tag=TAG use configuration variables from tag TAG
-# -v, --verbose print more informational messages than default
-# --no-verbose don't print the extra informational messages
-# --version print version information
-# -h, --help, --help-all print short, long, or detailed help message
-#
-# MODE must be one of the following:
-#
-# clean remove files from the build directory
-# compile compile a source file into a libtool object
-# execute automatically set library path, then run a program
-# finish complete the installation of libtool libraries
-# install install libraries or executables
-# link create a library or an executable
-# uninstall remove libraries from an installed directory
-#
-# MODE-ARGS vary depending on the MODE. When passed as first option,
-# `--mode=MODE' may be abbreviated as `MODE' or a unique abbreviation of that.
-# Try `$progname --help --mode=MODE' for a more detailed description of MODE.
-#
-# When reporting a bug, please describe a test case to reproduce it and
-# include the following information:
-#
-# host-triplet: $host
-# shell: $SHELL
-# compiler: $LTCC
-# compiler flags: $LTCFLAGS
-# linker: $LD (gnu? $with_gnu_ld)
-# $progname: (GNU libtool) 2.4.2
-# automake: $automake_version
-# autoconf: $autoconf_version
-#
-# Report bugs to <bug-libtool@gnu.org>.
-# GNU libtool home page: <http://www.gnu.org/software/libtool/>.
-# General help using GNU software: <http://www.gnu.org/gethelp/>.
PROGRAM=libtool
PACKAGE=libtool
-VERSION=2.4.2
-TIMESTAMP=""
-package_revision=1.3337
+VERSION=2.4.2.418
+package_revision=2.4.2.418
-# Be Bourne compatible
-if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then
+
+## ------ ##
+## Usage. ##
+## ------ ##
+
+# Run './libtool --help' for help with using this script from the
+# command line.
+
+
+## ------------------------------- ##
+## User overridable command paths. ##
+## ------------------------------- ##
+
+# After configure completes, it has a better idea of some of the
+# shell tools we need than the defaults used by the functions shared
+# with bootstrap, so set those here where they can still be over-
+# ridden by the user, but otherwise take precedence.
+
+: ${AUTOCONF="autoconf"}
+: ${AUTOMAKE="automake"}
+
+
+## -------------------------- ##
+## Source external libraries. ##
+## -------------------------- ##
+
+# Much of our low-level functionality needs to be sourced from external
+# libraries, which are installed to $pkgauxdir.
+
+# Set a version string for this script.
+scriptversion=2013-08-23.20; # UTC
+
+# General shell script boiler plate, and helper functions.
+# Written by Gary V. Vaughan, 2004
+
+# Copyright (C) 2004-2013 Free Software Foundation, Inc.
+# This is free software; see the source for copying conditions. There is NO
+# warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+
+# 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 of the License, or
+# (at your option) any later version.
+
+# As a special exception to the GNU General Public License, if you distribute
+# this file as part of a program or library that is built using GNU Libtool,
+# you may include this file under the same distribution terms that you use
+# for the rest of that program.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNES 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, see <http://www.gnu.org/licenses/>.
+
+# Please report bugs or propose patches to gary@gnu.org.
+
+
+## ------ ##
+## Usage. ##
+## ------ ##
+
+# Evaluate this file near the top of your script to gain access to
+# the functions and variables defined here:
+#
+# . `echo "$0" | ${SED-sed} 's|[^/]*$||'`/build-aux/funclib.sh
+#
+# If you need to override any of the default environment variable
+# settings, do that before evaluating this file.
+
+
+## -------------------- ##
+## Shell normalisation. ##
+## -------------------- ##
+
+# Some shells need a little help to be as Bourne compatible as possible.
+# Before doing anything else, make sure all that help has been provided!
+
+DUALCASE=1; export DUALCASE # for MKS sh
+if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then :
emulate sh
NULLCMD=:
- # Zsh 3.x and 4.x performs word splitting on ${1+"$@"}, which
+ # Pre-4.2 versions of Zsh do word splitting on ${1+"$@"}, which
# is contrary to our usage. Disable this feature.
alias -g '${1+"$@"}'='"$@"'
setopt NO_GLOB_SUBST
else
- case `(set -o) 2>/dev/null` in *posix*) set -o posix;; esac
+ case `(set -o) 2>/dev/null` in *posix*) set -o posix ;; esac
fi
-BIN_SH=xpg4; export BIN_SH # for Tru64
-DUALCASE=1; export DUALCASE # for MKS sh
-# A function that is used when there is no print builtin or printf.
-func_fallback_echo ()
-{
- eval 'cat <<_LTECHO_EOF
-$1
-_LTECHO_EOF'
-}
-
-# NLS nuisances: We save the old values to restore during execute mode.
-lt_user_locale=
-lt_safe_locale=
-for lt_var in LANG LANGUAGE LC_ALL LC_CTYPE LC_COLLATE LC_MESSAGES
+# NLS nuisances: We save the old values in case they are required later.
+_G_user_locale=
+_G_safe_locale=
+for _G_var in LANG LANGUAGE LC_ALL LC_CTYPE LC_COLLATE LC_MESSAGES
do
- eval "if test \"\${$lt_var+set}\" = set; then
- save_$lt_var=\$$lt_var
- $lt_var=C
- export $lt_var
- lt_user_locale=\"$lt_var=\\\$save_\$lt_var; \$lt_user_locale\"
- lt_safe_locale=\"$lt_var=C; \$lt_safe_locale\"
+ eval "if test set = \"\${$_G_var+set}\"; then
+ save_$_G_var=\$$_G_var
+ $_G_var=C
+ export $_G_var
+ _G_user_locale=\"$_G_var=\\\$save_\$_G_var; \$_G_user_locale\"
+ _G_safe_locale=\"$_G_var=C; \$_G_safe_locale\"
fi"
done
-LC_ALL=C
-LANGUAGE=C
-export LANGUAGE LC_ALL
-$lt_unset CDPATH
+# CDPATH.
+(unset CDPATH) >/dev/null 2>&1 && unset CDPATH
+# Make sure IFS has a sensible default
+sp=' '
+nl='
+'
+IFS="$sp $nl"
+
+# There are still modern systems that have problems with 'echo' mis-
+# handling backslashes, among others, so make sure $bs_echo is set to a
+# command that correctly interprets backslashes.
+# (this code from Autoconf 2.68)
+
+# Printing a long string crashes Solaris 7 /usr/bin/printf.
+bs_echo='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\'
+bs_echo=$bs_echo$bs_echo$bs_echo$bs_echo$bs_echo
+bs_echo=$bs_echo$bs_echo$bs_echo$bs_echo$bs_echo$bs_echo
+# Prefer a ksh shell builtin over an external printf program on Solaris,
+# but without wasting forks for bash or zsh.
+if test -z "$BASH_VERSION$ZSH_VERSION" \
+ && (test "X`print -r -- $bs_echo`" = "X$bs_echo") 2>/dev/null; then
+ bs_echo='print -r --'
+ bs_echo_n='print -rn --'
+elif (test "X`printf %s $bs_echo`" = "X$bs_echo") 2>/dev/null; then
+ bs_echo='printf %s\n'
+ bs_echo_n='printf %s'
+else
+ if test "X`(/usr/ucb/echo -n -n $bs_echo) 2>/dev/null`" = "X-n $bs_echo"; then
+ bs_echo_body='eval /usr/ucb/echo -n "$1$nl"'
+ bs_echo_n='/usr/ucb/echo -n'
+ else
+ bs_echo_body='eval expr "X$1" : "X\\(.*\\)"'
+ bs_echo_n_body='eval
+ arg=$1;
+ case $arg in #(
+ *"$nl"*)
+ expr "X$arg" : "X\\(.*\\)$nl";
+ arg=`expr "X$arg" : ".*$nl\\(.*\\)"`;;
+ esac;
+ expr "X$arg" : "X\\(.*\\)" | tr -d "$nl"
+ '
+ export bs_echo_n_body
+ bs_echo_n='sh -c $bs_echo_n_body bs_echo'
+ fi
+ export bs_echo_body
+ bs_echo='sh -c $bs_echo_body bs_echo'
+fi
-# Work around backward compatibility issue on IRIX 6.5. On IRIX 6.4+, sh
-# is ksh but when the shell is invoked as "sh" and the current value of
-# the _XPG environment variable is not equal to 1 (one), the special
-# positional parameter $0, within a function call, is the name of the
-# function.
-progpath="$0"
+## ------------------------------- ##
+## User overridable command paths. ##
+## ------------------------------- ##
+# All uppercase variable names are used for environment variables. These
+# variables can be overridden by the user before calling a script that
+# uses them if a suitable command of that name is not already available
+# in the command search PATH.
: ${CP="cp -f"}
-test "${ECHO+set}" = set || ECHO=${as_echo-'printf %s\n'}
+: ${ECHO="$bs_echo"}
+: ${EGREP="grep -E"}
+: ${FGREP="grep -F"}
+: ${GREP="grep"}
+: ${LN_S="ln -s"}
: ${MAKE="make"}
: ${MKDIR="mkdir"}
: ${MV="mv -f"}
: ${RM="rm -f"}
+: ${SED="sed"}
: ${SHELL="${CONFIG_SHELL-/bin/sh}"}
-: ${Xsed="$SED -e 1s/^X//"}
-
-# Global variables:
-EXIT_SUCCESS=0
-EXIT_FAILURE=1
-EXIT_MISMATCH=63 # $? = 63 is used to indicate version mismatch to missing.
-EXIT_SKIP=77 # $? = 77 is used to indicate a skipped test to automake.
-exit_status=$EXIT_SUCCESS
-# Make sure IFS has a sensible default
-lt_nl='
-'
-IFS=" $lt_nl"
+## -------------------- ##
+## Useful sed snippets. ##
+## -------------------- ##
-dirname="s,/[^/]*$,,"
-basename="s,^.*/,,"
+sed_dirname='s|/[^/]*$||'
+sed_basename='s|^.*/||'
-# func_dirname file append nondir_replacement
-# Compute the dirname of FILE. If nonempty, add APPEND to the result,
-# otherwise set result to NONDIR_REPLACEMENT.
-func_dirname ()
-{
- func_dirname_result=`$ECHO "${1}" | $SED "$dirname"`
- if test "X$func_dirname_result" = "X${1}"; then
- func_dirname_result="${3}"
- else
- func_dirname_result="$func_dirname_result${2}"
- fi
-} # func_dirname may be replaced by extended shell implementation
-
-
-# func_basename file
-func_basename ()
-{
- func_basename_result=`$ECHO "${1}" | $SED "$basename"`
-} # func_basename may be replaced by extended shell implementation
+# Sed substitution that helps us do robust quoting. It backslashifies
+# metacharacters that are still active within double-quoted strings.
+sed_quote_subst='s|\([`"$\\]\)|\\\1|g'
+# Same as above, but do not quote variable references.
+sed_double_quote_subst='s/\(["`\\]\)/\\\1/g'
-# func_dirname_and_basename file append nondir_replacement
-# perform func_basename and func_dirname in a single function
-# call:
-# dirname: Compute the dirname of FILE. If nonempty,
-# add APPEND to the result, otherwise set result
-# to NONDIR_REPLACEMENT.
-# value returned in "$func_dirname_result"
-# basename: Compute filename of FILE.
-# value retuned in "$func_basename_result"
-# Implementation must be kept synchronized with func_dirname
-# and func_basename. For efficiency, we do not delegate to
-# those functions but instead duplicate the functionality here.
-func_dirname_and_basename ()
-{
- # Extract subdirectory from the argument.
- func_dirname_result=`$ECHO "${1}" | $SED -e "$dirname"`
- if test "X$func_dirname_result" = "X${1}"; then
- func_dirname_result="${3}"
- else
- func_dirname_result="$func_dirname_result${2}"
- fi
- func_basename_result=`$ECHO "${1}" | $SED -e "$basename"`
-} # func_dirname_and_basename may be replaced by extended shell implementation
+# Sed substitution that turns a string into a regex matching for the
+# string literally.
+sed_make_literal_regex='s|[].[^$\\*\/]|\\&|g'
+# Sed substitution that converts a w32 file name or path
+# that contains forward slashes, into one that contains
+# (escaped) backslashes. A very naive implementation.
+sed_naive_backslashify='s|\\\\*|\\|g;s|/|\\|g;s|\\|\\\\|g'
+
+# Re-'\' parameter expansions in output of sed_double_quote_subst that
+# were '\'-ed in input to the same. If an odd number of '\' preceded a
+# '$' in input to sed_double_quote_subst, that '$' was protected from
+# expansion. Since each input '\' is now two '\'s, look for any number
+# of runs of four '\'s followed by two '\'s and then a '$'. '\' that '$'.
+_G_bs='\\'
+_G_bs2='\\\\'
+_G_bs4='\\\\\\\\'
+_G_dollar='\$'
+sed_double_backslash="\
+ s/$_G_bs4/&\\
+/g
+ s/^$_G_bs2$_G_dollar/$_G_bs&/
+ s/\\([^$_G_bs]\\)$_G_bs2$_G_dollar/\\1$_G_bs2$_G_bs$_G_dollar/g
+ s/\n//g"
-# func_stripname prefix suffix name
-# strip PREFIX and SUFFIX off of NAME.
-# PREFIX and SUFFIX must not contain globbing or regex special
-# characters, hashes, percent signs, but SUFFIX may contain a leading
-# dot (in which case that matches only a dot).
-# func_strip_suffix prefix name
-func_stripname ()
-{
- case ${2} in
- .*) func_stripname_result=`$ECHO "${3}" | $SED "s%^${1}%%; s%\\\\${2}\$%%"`;;
- *) func_stripname_result=`$ECHO "${3}" | $SED "s%^${1}%%; s%${2}\$%%"`;;
- esac
-} # func_stripname may be replaced by extended shell implementation
+## ----------------- ##
+## Global variables. ##
+## ----------------- ##
-# These SED scripts presuppose an absolute path with a trailing slash.
-pathcar='s,^/\([^/]*\).*$,\1,'
-pathcdr='s,^/[^/]*,,'
-removedotparts=':dotsl
- s@/\./@/@g
- t dotsl
- s,/\.$,/,'
-collapseslashes='s@/\{1,\}@/@g'
-finalslash='s,/*$,/,'
+# Except for the global variables explicitly listed below, the following
+# functions in the '^func_' namespace, and the '^require_' namespace
+# variables initialised in the 'Resource management' section, sourcing
+# this file will not pollute your global namespace with anything
+# else. There's no portable way to scope variables in Bourne shell
+# though, so actually running these functions will sometimes place
+# results into a variable named after the function, and often use
+# temporary variables in the '^_G_' namespace. If you are careful to
+# avoid using those namespaces casually in your sourcing script, things
+# should continue to work as you expect. And, of course, you can freely
+# overwrite any of the functions or variables defined here before
+# calling anything to customize them.
-# func_normal_abspath PATH
-# Remove doubled-up and trailing slashes, "." path components,
-# and cancel out any ".." path components in PATH after making
-# it an absolute path.
-# value returned in "$func_normal_abspath_result"
-func_normal_abspath ()
-{
- # Start from root dir and reassemble the path.
- func_normal_abspath_result=
- func_normal_abspath_tpath=$1
- func_normal_abspath_altnamespace=
- case $func_normal_abspath_tpath in
- "")
- # Empty path, that just means $cwd.
- func_stripname '' '/' "`pwd`"
- func_normal_abspath_result=$func_stripname_result
- return
- ;;
- # The next three entries are used to spot a run of precisely
- # two leading slashes without using negated character classes;
- # we take advantage of case's first-match behaviour.
- ///*)
- # Unusual form of absolute path, do nothing.
- ;;
- //*)
- # Not necessarily an ordinary path; POSIX reserves leading '//'
- # and for example Cygwin uses it to access remote file shares
- # over CIFS/SMB, so we conserve a leading double slash if found.
- func_normal_abspath_altnamespace=/
- ;;
- /*)
- # Absolute path, do nothing.
- ;;
- *)
- # Relative path, prepend $cwd.
- func_normal_abspath_tpath=`pwd`/$func_normal_abspath_tpath
- ;;
- esac
- # Cancel out all the simple stuff to save iterations. We also want
- # the path to end with a slash for ease of parsing, so make sure
- # there is one (and only one) here.
- func_normal_abspath_tpath=`$ECHO "$func_normal_abspath_tpath" | $SED \
- -e "$removedotparts" -e "$collapseslashes" -e "$finalslash"`
- while :; do
- # Processed it all yet?
- if test "$func_normal_abspath_tpath" = / ; then
- # If we ascended to the root using ".." the result may be empty now.
- if test -z "$func_normal_abspath_result" ; then
- func_normal_abspath_result=/
- fi
- break
- fi
- func_normal_abspath_tcomponent=`$ECHO "$func_normal_abspath_tpath" | $SED \
- -e "$pathcar"`
- func_normal_abspath_tpath=`$ECHO "$func_normal_abspath_tpath" | $SED \
- -e "$pathcdr"`
- # Figure out what to do with it
- case $func_normal_abspath_tcomponent in
- "")
- # Trailing empty path component, ignore it.
- ;;
- ..)
- # Parent dir; strip last assembled component from result.
- func_dirname "$func_normal_abspath_result"
- func_normal_abspath_result=$func_dirname_result
- ;;
- *)
- # Actual path component, append it.
- func_normal_abspath_result=$func_normal_abspath_result/$func_normal_abspath_tcomponent
- ;;
- esac
- done
- # Restore leading double-slash if one was found on entry.
- func_normal_abspath_result=$func_normal_abspath_altnamespace$func_normal_abspath_result
-}
+EXIT_SUCCESS=0
+EXIT_FAILURE=1
+EXIT_MISMATCH=63 # $? = 63 is used to indicate version mismatch to missing.
+EXIT_SKIP=77 # $? = 77 is used to indicate a skipped test to automake.
-# func_relative_path SRCDIR DSTDIR
-# generates a relative path from SRCDIR to DSTDIR, with a trailing
-# slash if non-empty, suitable for immediately appending a filename
-# without needing to append a separator.
-# value returned in "$func_relative_path_result"
-func_relative_path ()
-{
- func_relative_path_result=
- func_normal_abspath "$1"
- func_relative_path_tlibdir=$func_normal_abspath_result
- func_normal_abspath "$2"
- func_relative_path_tbindir=$func_normal_abspath_result
-
- # Ascend the tree starting from libdir
- while :; do
- # check if we have found a prefix of bindir
- case $func_relative_path_tbindir in
- $func_relative_path_tlibdir)
- # found an exact match
- func_relative_path_tcancelled=
- break
- ;;
- $func_relative_path_tlibdir*)
- # found a matching prefix
- func_stripname "$func_relative_path_tlibdir" '' "$func_relative_path_tbindir"
- func_relative_path_tcancelled=$func_stripname_result
- if test -z "$func_relative_path_result"; then
- func_relative_path_result=.
- fi
- break
- ;;
- *)
- func_dirname $func_relative_path_tlibdir
- func_relative_path_tlibdir=${func_dirname_result}
- if test "x$func_relative_path_tlibdir" = x ; then
- # Have to descend all the way to the root!
- func_relative_path_result=../$func_relative_path_result
- func_relative_path_tcancelled=$func_relative_path_tbindir
- break
- fi
- func_relative_path_result=../$func_relative_path_result
- ;;
- esac
- done
+# Allow overriding, eg assuming that you follow the convention of
+# putting '$debug_cmd' at the start of all your functions, you can get
+# bash to show function call trace with:
+#
+# debug_cmd='eval echo "${FUNCNAME[0]} $*" >&2' bash your-script-name
+debug_cmd=${debug_cmd-":"}
+exit_cmd=:
- # Now calculate path; take care to avoid doubling-up slashes.
- func_stripname '' '/' "$func_relative_path_result"
- func_relative_path_result=$func_stripname_result
- func_stripname '/' '/' "$func_relative_path_tcancelled"
- if test "x$func_stripname_result" != x ; then
- func_relative_path_result=${func_relative_path_result}/${func_stripname_result}
- fi
+# By convention, finish your script with:
+#
+# exit $exit_status
+#
+# so that you can set exit_status to non-zero if you want to indicate
+# something went wrong during execution without actually bailing out at
+# the point of failure.
+exit_status=$EXIT_SUCCESS
- # Normalisation. If bindir is libdir, return empty string,
- # else relative path ending with a slash; either way, target
- # file name can be directly appended.
- if test ! -z "$func_relative_path_result"; then
- func_stripname './' '' "$func_relative_path_result/"
- func_relative_path_result=$func_stripname_result
- fi
-}
+# Work around backward compatibility issue on IRIX 6.5. On IRIX 6.4+, sh
+# is ksh but when the shell is invoked as "sh" and the current value of
+# the _XPG environment variable is not equal to 1 (one), the special
+# positional parameter $0, within a function call, is the name of the
+# function.
+progpath=$0
-# The name of this program:
-func_dirname_and_basename "$progpath"
-progname=$func_basename_result
+# The name of this program.
+progname=`$bs_echo "$progpath" |$SED "$sed_basename"`
-# Make sure we have an absolute path for reexecution:
+# Make sure we have an absolute progpath for reexecution:
case $progpath in
[\\/]*|[A-Za-z]:\\*) ;;
*[\\/]*)
- progdir=$func_dirname_result
+ progdir=`$bs_echo "$progpath" |$SED "$sed_dirname"`
progdir=`cd "$progdir" && pwd`
- progpath="$progdir/$progname"
+ progpath=$progdir/$progname
;;
*)
- save_IFS="$IFS"
+ _G_IFS=$IFS
IFS=${PATH_SEPARATOR-:}
for progdir in $PATH; do
- IFS="$save_IFS"
+ IFS=$_G_IFS
test -x "$progdir/$progname" && break
done
- IFS="$save_IFS"
+ IFS=$_G_IFS
test -n "$progdir" || progdir=`pwd`
- progpath="$progdir/$progname"
+ progpath=$progdir/$progname
;;
esac
-# Sed substitution that helps us do robust quoting. It backslashifies
-# metacharacters that are still active within double-quoted strings.
-Xsed="${SED}"' -e 1s/^X//'
-sed_quote_subst='s/\([`"$\\]\)/\\\1/g'
-
-# Same as above, but do not quote variable references.
-double_quote_subst='s/\(["`\\]\)/\\\1/g'
-# Sed substitution that turns a string into a regex matching for the
-# string literally.
-sed_make_literal_regex='s,[].[^$\\*\/],\\&,g'
+## ----------------- ##
+## Standard options. ##
+## ----------------- ##
-# Sed substitution that converts a w32 file name or path
-# which contains forward slashes, into one that contains
-# (escaped) backslashes. A very naive implementation.
-lt_sed_naive_backslashify='s|\\\\*|\\|g;s|/|\\|g;s|\\|\\\\|g'
-
-# Re-`\' parameter expansions in output of double_quote_subst that were
-# `\'-ed in input to the same. If an odd number of `\' preceded a '$'
-# in input to double_quote_subst, that '$' was protected from expansion.
-# Since each input `\' is now two `\'s, look for any number of runs of
-# four `\'s followed by two `\'s and then a '$'. `\' that '$'.
-bs='\\'
-bs2='\\\\'
-bs4='\\\\\\\\'
-dollar='\$'
-sed_double_backslash="\
- s/$bs4/&\\
-/g
- s/^$bs2$dollar/$bs&/
- s/\\([^$bs]\\)$bs2$dollar/\\1$bs2$bs$dollar/g
- s/\n//g"
+# The following options affect the operation of the functions defined
+# below, and should be set appropriately depending on run-time para-
+# meters passed on the command line.
-# Standard options:
opt_dry_run=false
-opt_help=false
opt_quiet=false
opt_verbose=false
-opt_warning=:
-# func_echo arg...
-# Echo program name prefixed message, along with the current mode
-# name if it has been set yet.
-func_echo ()
+# Categories 'all' and 'none' are always available. Append any others
+# you will pass as the first argument to func_warning from your own
+# code.
+warning_categories=
+
+# By default, display warnings according to 'opt_warning_types'. Set
+# 'warning_func' to ':' to elide all warnings, or func_fatal_error to
+# treat the next displayed warning as a fatal error.
+warning_func=func_warn_and_continue
+
+# Set to 'all' to display all warnings, 'none' to suppress all
+# warnings, or a space delimited list of some subset of
+# 'warning_categories' to display only the listed warnings.
+opt_warning_types=all
+
+
+## -------------------- ##
+## Resource management. ##
+## -------------------- ##
+
+# This section contains definitions for functions that each ensure a
+# particular resource (a file, or a non-empty configuration variable for
+# example) is available, and if appropriate to extract default values
+# from pertinent package files. Call them using their associated
+# 'require_*' variable to ensure that they are executed, at most, once.
+#
+# It's entirely deliberate that calling these functions can set
+# variables that don't obey the namespace limitations obeyed by the rest
+# of this file, in order that that they be as useful as possible to
+# callers.
+
+
+# require_term_colors
+# -------------------
+# Allow display of bold text on terminals that support it.
+require_term_colors=func_require_term_colors
+func_require_term_colors ()
{
- $ECHO "$progname: ${opt_mode+$opt_mode: }$*"
+ $debug_cmd
+
+ test -t 1 && {
+ # COLORTERM and USE_ANSI_COLORS environment variables take
+ # precedence, because most terminfo databases neglect to describe
+ # whether color sequences are supported.
+ test -n "${COLORTERM+set}" && : ${USE_ANSI_COLORS="1"}
+
+ if test 1 = "$USE_ANSI_COLORS"; then
+ # Standard ANSI escape sequences
+ tc_reset=''
+ tc_bold=''; tc_standout=''
+ tc_red=''; tc_green=''
+ tc_blue=''; tc_cyan=''
+ else
+ # Otherwise trust the terminfo database after all.
+ test -n "`tput sgr0 2>/dev/null`" && {
+ tc_reset=`tput sgr0`
+ test -n "`tput bold 2>/dev/null`" && tc_bold=`tput bold`
+ tc_standout=$tc_bold
+ test -n "`tput smso 2>/dev/null`" && tc_standout=`tput smso`
+ test -n "`tput setaf 1 2>/dev/null`" && tc_red=`tput setaf 1`
+ test -n "`tput setaf 2 2>/dev/null`" && tc_green=`tput setaf 2`
+ test -n "`tput setaf 4 2>/dev/null`" && tc_blue=`tput setaf 4`
+ test -n "`tput setaf 5 2>/dev/null`" && tc_cyan=`tput setaf 5`
+ }
+ fi
+ }
+
+ require_term_colors=:
}
-# func_verbose arg...
-# Echo program name prefixed message in verbose mode only.
-func_verbose ()
+
+## ----------------- ##
+## Function library. ##
+## ----------------- ##
+
+# This section contains a variety of useful functions to call in your
+# scripts. Take note of the portable wrappers for features provided by
+# some modern shells, which will fall back to slower equivalents on
+# less featureful shells.
+
+
+# func_append VAR VALUE
+# ---------------------
+# Append VALUE onto the existing contents of VAR.
+
+ # We should try to minimise forks, especially on Windows where they are
+ # unreasonably slow, so skip the feature probes when bash or zsh are
+ # being used:
+ if test set = "${BASH_VERSION+set}${ZSH_VERSION+set}"; then
+ : ${_G_HAVE_ARITH_OP="yes"}
+ : ${_G_HAVE_XSI_OPS="yes"}
+ # The += operator was introduced in bash 3.1
+ case $BASH_VERSION in
+ [12].* | 3.0 | 3.0*) ;;
+ *)
+ : ${_G_HAVE_PLUSEQ_OP="yes"}
+ ;;
+ esac
+ fi
+
+ # _G_HAVE_PLUSEQ_OP
+ # Can be empty, in which case the shell is probed, "yes" if += is
+ # useable or anything else if it does not work.
+ test -z "$_G_HAVE_PLUSEQ_OP" \
+ && (eval 'x=a; x+=" b"; test "a b" = "$x"') 2>/dev/null \
+ && _G_HAVE_PLUSEQ_OP=yes
+
+if test yes = "$_G_HAVE_PLUSEQ_OP"
+then
+ # This is an XSI compatible shell, allowing a faster implementation...
+ eval 'func_append ()
+ {
+ $debug_cmd
+
+ eval "$1+=\$2"
+ }'
+else
+ # ...otherwise fall back to using expr, which is often a shell builtin.
+ func_append ()
+ {
+ $debug_cmd
+
+ eval "$1=\$$1\$2"
+ }
+fi
+
+
+# func_append_quoted VAR VALUE
+# ----------------------------
+# Quote VALUE and append to the end of shell variable VAR, separated
+# by a space.
+if test yes = "$_G_HAVE_PLUSEQ_OP"; then
+ eval 'func_append_quoted ()
+ {
+ $debug_cmd
+
+ func_quote_for_eval "$2"
+ eval "$1+=\\ \$func_quote_for_eval_result"
+ }'
+else
+ func_append_quoted ()
+ {
+ $debug_cmd
+
+ func_quote_for_eval "$2"
+ eval "$1=\$$1\\ \$func_quote_for_eval_result"
+ }
+fi
+
+
+# func_append_uniq VAR VALUE
+# --------------------------
+# Append unique VALUE onto the existing contents of VAR, assuming
+# entries are delimited by the first character of VALUE. For example:
+#
+# func_append_uniq options " --another-option option-argument"
+#
+# will only append to $options if " --another-option option-argument "
+# is not already present somewhere in $options already (note spaces at
+# each end implied by leading space in second argument).
+func_append_uniq ()
{
- $opt_verbose && func_echo ${1+"$@"}
+ $debug_cmd
- # A bug in bash halts the script if the last line of a function
- # fails when set -e is in force, so we need another command to
- # work around that:
- :
+ eval _G_current_value='`$bs_echo $'$1'`'
+ _G_delim=`expr "$2" : '\(.\)'`
+
+ case $_G_delim$_G_current_value$_G_delim in
+ *"$2$_G_delim"*) ;;
+ *) func_append "$@" ;;
+ esac
+}
+
+
+# func_arith TERM...
+# ------------------
+# Set func_arith_result to the result of evaluating TERMs.
+ test -z "$_G_HAVE_ARITH_OP" \
+ && (eval 'test 2 = $(( 1 + 1 ))') 2>/dev/null \
+ && _G_HAVE_ARITH_OP=yes
+
+if test yes = "$_G_HAVE_ARITH_OP"; then
+ eval 'func_arith ()
+ {
+ $debug_cmd
+
+ func_arith_result=$(( $* ))
+ }'
+else
+ func_arith ()
+ {
+ $debug_cmd
+
+ func_arith_result=`expr "$@"`
+ }
+fi
+
+
+# func_basename FILE
+# ------------------
+# Set func_basename_result to FILE with everything up to and including
+# the last / stripped.
+if test yes = "$_G_HAVE_XSI_OPS"; then
+ # If this shell supports suffix pattern removal, then use it to avoid
+ # forking. Hide the definitions single quotes in case the shell chokes
+ # on unsupported syntax...
+ _b='func_basename_result=${1##*/}'
+ _d='case $1 in
+ */*) func_dirname_result=${1%/*}$2 ;;
+ * ) func_dirname_result=$3 ;;
+ esac'
+
+else
+ # ...otherwise fall back to using sed.
+ _b='func_basename_result=`$ECHO "$1" |$SED "$sed_basename"`'
+ _d='func_dirname_result=`$ECHO "$1" |$SED "$sed_dirname"`
+ if test "X$func_dirname_result" = "X$1"; then
+ func_dirname_result=$3
+ else
+ func_append func_dirname_result "$2"
+ fi'
+fi
+
+eval 'func_basename ()
+{
+ $debug_cmd
+
+ '"$_b"'
+}'
+
+
+# func_dirname FILE APPEND NONDIR_REPLACEMENT
+# -------------------------------------------
+# Compute the dirname of FILE. If nonempty, add APPEND to the result,
+# otherwise set result to NONDIR_REPLACEMENT.
+eval 'func_dirname ()
+{
+ $debug_cmd
+
+ '"$_d"'
+}'
+
+
+# func_dirname_and_basename FILE APPEND NONDIR_REPLACEMENT
+# --------------------------------------------------------
+# Perform func_basename and func_dirname in a single function
+# call:
+# dirname: Compute the dirname of FILE. If nonempty,
+# add APPEND to the result, otherwise set result
+# to NONDIR_REPLACEMENT.
+# value returned in "$func_dirname_result"
+# basename: Compute filename of FILE.
+# value retuned in "$func_basename_result"
+# For efficiency, we do not delegate to the functions above but instead
+# duplicate the functionality here.
+eval 'func_dirname_and_basename ()
+{
+ $debug_cmd
+
+ '"$_b"'
+ '"$_d"'
+}'
+
+
+# func_echo ARG...
+# ----------------
+# Echo program name prefixed message.
+func_echo ()
+{
+ $debug_cmd
+
+ _G_message=$*
+
+ func_echo_IFS=$IFS
+ IFS=$nl
+ for _G_line in $_G_message; do
+ IFS=$func_echo_IFS
+ $bs_echo "$progname: $_G_line"
+ done
+ IFS=$func_echo_IFS
}
-# func_echo_all arg...
+
+# func_echo_all ARG...
+# --------------------
# Invoke $ECHO with all args, space-separated.
func_echo_all ()
{
$ECHO "$*"
}
-# func_error arg...
-# Echo program name prefixed message to standard error.
-func_error ()
+
+# func_echo_infix_1 INFIX ARG...
+# ------------------------------
+# Echo program name, followed by INFIX on the first line, with any
+# additional lines not showing INFIX.
+func_echo_infix_1 ()
{
- $ECHO "$progname: ${opt_mode+$opt_mode: }"${1+"$@"} 1>&2
+ $debug_cmd
+
+ $require_term_colors
+
+ _G_infix=$1; shift
+ _G_indent=$_G_infix
+ _G_prefix="$progname: $_G_infix: "
+ _G_message=$*
+
+ # Strip color escape sequences before counting printable length
+ for _G_tc in "$tc_reset" "$tc_bold" "$tc_standout" "$tc_red" "$tc_green" "$tc_blue" "$tc_cyan"
+ do
+ test -n "$_G_tc" && {
+ _G_esc_tc=`$bs_echo "$_G_tc" | sed "$sed_make_literal_regex"`
+ _G_indent=`$bs_echo "$_G_indent" | sed "s|$_G_esc_tc||g"`
+ }
+ done
+ _G_indent="$progname: "`echo "$_G_indent" | sed 's|.| |g'`" " ## exclude from sc_prohibit_nested_quotes
+
+ func_echo_infix_1_IFS=$IFS
+ IFS=$nl
+ for _G_line in $_G_message; do
+ IFS=$func_echo_infix_1_IFS
+ $bs_echo "$_G_prefix$tc_bold$_G_line$tc_reset" >&2
+ _G_prefix=$_G_indent
+ done
+ IFS=$func_echo_infix_1_IFS
}
-# func_warning arg...
-# Echo program name prefixed warning message to standard error.
-func_warning ()
+
+# func_error ARG...
+# -----------------
+# Echo program name prefixed message to standard error.
+func_error ()
{
- $opt_warning && $ECHO "$progname: ${opt_mode+$opt_mode: }warning: "${1+"$@"} 1>&2
+ $debug_cmd
- # bash bug again:
- :
+ $require_term_colors
+
+ func_echo_infix_1 " $tc_standout${tc_red}error$tc_reset" "$*" >&2
}
-# func_fatal_error arg...
+
+# func_fatal_error ARG...
+# -----------------------
# Echo program name prefixed message to standard error, and exit.
func_fatal_error ()
{
- func_error ${1+"$@"}
- exit $EXIT_FAILURE
-}
+ $debug_cmd
-# func_fatal_help arg...
-# Echo program name prefixed message to standard error, followed by
-# a help hint, and exit.
-func_fatal_help ()
-{
- func_error ${1+"$@"}
- func_fatal_error "$help"
+ func_error "$*"
+ exit $EXIT_FAILURE
}
-help="Try \`$progname --help' for more information." ## default
-# func_grep expression filename
+# func_grep EXPRESSION FILENAME
+# -----------------------------
# Check whether EXPRESSION matches any line of FILENAME, without output.
func_grep ()
{
+ $debug_cmd
+
$GREP "$1" "$2" >/dev/null 2>&1
}
-# func_mkdir_p directory-path
+# func_len STRING
+# ---------------
+# Set func_len_result to the length of STRING. STRING may not
+# start with a hyphen.
+ test -z "$_G_HAVE_XSI_OPS" \
+ && (eval 'x=a/b/c;
+ test 5aa/bb/cc = "${#x}${x%%/*}${x%/*}${x#*/}${x##*/}"') 2>/dev/null \
+ && _G_HAVE_XSI_OPS=yes
+
+if test yes = "$_G_HAVE_XSI_OPS"; then
+ eval 'func_len ()
+ {
+ $debug_cmd
+
+ func_len_result=${#1}
+ }'
+else
+ func_len ()
+ {
+ $debug_cmd
+
+ func_len_result=`expr "$1" : ".*" 2>/dev/null || echo $max_cmd_len`
+ }
+fi
+
+
+# func_mkdir_p DIRECTORY-PATH
+# ---------------------------
# Make sure the entire path to DIRECTORY-PATH is available.
func_mkdir_p ()
{
- my_directory_path="$1"
- my_dir_list=
+ $debug_cmd
+
+ _G_directory_path=$1
+ _G_dir_list=
- if test -n "$my_directory_path" && test "$opt_dry_run" != ":"; then
+ if test -n "$_G_directory_path" && test : != "$opt_dry_run"; then
- # Protect directory names starting with `-'
- case $my_directory_path in
- -*) my_directory_path="./$my_directory_path" ;;
+ # Protect directory names starting with '-'
+ case $_G_directory_path in
+ -*) _G_directory_path=./$_G_directory_path ;;
esac
# While some portion of DIR does not yet exist...
- while test ! -d "$my_directory_path"; do
+ while test ! -d "$_G_directory_path"; do
# ...make a list in topmost first order. Use a colon delimited
# list incase some portion of path contains whitespace.
- my_dir_list="$my_directory_path:$my_dir_list"
+ _G_dir_list=$_G_directory_path:$_G_dir_list
# If the last portion added has no slash in it, the list is done
- case $my_directory_path in */*) ;; *) break ;; esac
+ case $_G_directory_path in */*) ;; *) break ;; esac
# ...otherwise throw away the child directory and loop
- my_directory_path=`$ECHO "$my_directory_path" | $SED -e "$dirname"`
+ _G_directory_path=`$ECHO "$_G_directory_path" | $SED -e "$sed_dirname"`
done
- my_dir_list=`$ECHO "$my_dir_list" | $SED 's,:*$,,'`
+ _G_dir_list=`$ECHO "$_G_dir_list" | $SED 's|:*$||'`
- save_mkdir_p_IFS="$IFS"; IFS=':'
- for my_dir in $my_dir_list; do
- IFS="$save_mkdir_p_IFS"
- # mkdir can fail with a `File exist' error if two processes
+ func_mkdir_p_IFS=$IFS; IFS=:
+ for _G_dir in $_G_dir_list; do
+ IFS=$func_mkdir_p_IFS
+ # mkdir can fail with a 'File exist' error if two processes
# try to create one of the directories concurrently. Don't
# stop in that case!
- $MKDIR "$my_dir" 2>/dev/null || :
+ $MKDIR "$_G_dir" 2>/dev/null || :
done
- IFS="$save_mkdir_p_IFS"
+ IFS=$func_mkdir_p_IFS
# Bail out if we (or some other process) failed to create a directory.
- test -d "$my_directory_path" || \
- func_fatal_error "Failed to create \`$1'"
+ test -d "$_G_directory_path" || \
+ func_fatal_error "Failed to create '$1'"
fi
}
-# func_mktempdir [string]
+# func_mktempdir [BASENAME]
+# -------------------------
# Make a temporary directory that won't clash with other running
# libtool processes, and avoids race conditions if possible. If
-# given, STRING is the basename for that directory.
+# given, BASENAME is the basename for that directory.
func_mktempdir ()
{
- my_template="${TMPDIR-/tmp}/${1-$progname}"
+ $debug_cmd
- if test "$opt_dry_run" = ":"; then
+ _G_template=${TMPDIR-/tmp}/${1-$progname}
+
+ if test : = "$opt_dry_run"; then
# Return a directory name, but don't create it in dry-run mode
- my_tmpdir="${my_template}-$$"
+ _G_tmpdir=$_G_template-$$
else
# If mktemp works, use that first and foremost
- my_tmpdir=`mktemp -d "${my_template}-XXXXXXXX" 2>/dev/null`
+ _G_tmpdir=`mktemp -d "$_G_template-XXXXXXXX" 2>/dev/null`
- if test ! -d "$my_tmpdir"; then
+ if test ! -d "$_G_tmpdir"; then
# Failing that, at least try and use $RANDOM to avoid a race
- my_tmpdir="${my_template}-${RANDOM-0}$$"
+ _G_tmpdir=$_G_template-${RANDOM-0}$$
- save_mktempdir_umask=`umask`
+ func_mktempdir_umask=`umask`
umask 0077
- $MKDIR "$my_tmpdir"
- umask $save_mktempdir_umask
+ $MKDIR "$_G_tmpdir"
+ umask $func_mktempdir_umask
fi
# If we're not in dry-run mode, bomb out on failure
- test -d "$my_tmpdir" || \
- func_fatal_error "cannot create temporary directory \`$my_tmpdir'"
+ test -d "$_G_tmpdir" || \
+ func_fatal_error "cannot create temporary directory '$_G_tmpdir'"
fi
- $ECHO "$my_tmpdir"
+ $ECHO "$_G_tmpdir"
}
-# func_quote_for_eval arg
-# Aesthetically quote ARG to be evaled later.
-# This function returns two values: FUNC_QUOTE_FOR_EVAL_RESULT
-# is double-quoted, suitable for a subsequent eval, whereas
-# FUNC_QUOTE_FOR_EVAL_UNQUOTED_RESULT has merely all characters
-# which are still active within double quotes backslashified.
-func_quote_for_eval ()
+# func_normal_abspath PATH
+# ------------------------
+# Remove doubled-up and trailing slashes, "." path components,
+# and cancel out any ".." path components in PATH after making
+# it an absolute path.
+func_normal_abspath ()
{
- case $1 in
- *[\\\`\"\$]*)
- func_quote_for_eval_unquoted_result=`$ECHO "$1" | $SED "$sed_quote_subst"` ;;
- *)
- func_quote_for_eval_unquoted_result="$1" ;;
- esac
+ $debug_cmd
- case $func_quote_for_eval_unquoted_result in
- # Double-quote args containing shell metacharacters to delay
- # word splitting, command substitution and and variable
- # expansion for a subsequent eval.
- # Many Bourne shells cannot handle close brackets correctly
- # in scan sets, so we specify it separately.
- *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"")
- func_quote_for_eval_result="\"$func_quote_for_eval_unquoted_result\""
+ # These SED scripts presuppose an absolute path with a trailing slash.
+ _G_pathcar='s|^/\([^/]*\).*$|\1|'
+ _G_pathcdr='s|^/[^/]*||'
+ _G_removedotparts=':dotsl
+ s|/\./|/|g
+ t dotsl
+ s|/\.$|/|'
+ _G_collapseslashes='s|/\{1,\}|/|g'
+ _G_finalslash='s|/*$|/|'
+
+ # Start from root dir and reassemble the path.
+ func_normal_abspath_result=
+ func_normal_abspath_tpath=$1
+ func_normal_abspath_altnamespace=
+ case $func_normal_abspath_tpath in
+ "")
+ # Empty path, that just means $cwd.
+ func_stripname '' '/' "`pwd`"
+ func_normal_abspath_result=$func_stripname_result
+ return
+ ;;
+ # The next three entries are used to spot a run of precisely
+ # two leading slashes without using negated character classes;
+ # we take advantage of case's first-match behaviour.
+ ///*)
+ # Unusual form of absolute path, do nothing.
+ ;;
+ //*)
+ # Not necessarily an ordinary path; POSIX reserves leading '//'
+ # and for example Cygwin uses it to access remote file shares
+ # over CIFS/SMB, so we conserve a leading double slash if found.
+ func_normal_abspath_altnamespace=/
+ ;;
+ /*)
+ # Absolute path, do nothing.
;;
*)
- func_quote_for_eval_result="$func_quote_for_eval_unquoted_result"
+ # Relative path, prepend $cwd.
+ func_normal_abspath_tpath=`pwd`/$func_normal_abspath_tpath
+ ;;
esac
+
+ # Cancel out all the simple stuff to save iterations. We also want
+ # the path to end with a slash for ease of parsing, so make sure
+ # there is one (and only one) here.
+ func_normal_abspath_tpath=`$ECHO "$func_normal_abspath_tpath" | $SED \
+ -e "$_G_removedotparts" -e "$_G_collapseslashes" -e "$_G_finalslash"`
+ while :; do
+ # Processed it all yet?
+ if test / = "$func_normal_abspath_tpath"; then
+ # If we ascended to the root using ".." the result may be empty now.
+ if test -z "$func_normal_abspath_result"; then
+ func_normal_abspath_result=/
+ fi
+ break
+ fi
+ func_normal_abspath_tcomponent=`$ECHO "$func_normal_abspath_tpath" | $SED \
+ -e "$_G_pathcar"`
+ func_normal_abspath_tpath=`$ECHO "$func_normal_abspath_tpath" | $SED \
+ -e "$_G_pathcdr"`
+ # Figure out what to do with it
+ case $func_normal_abspath_tcomponent in
+ "")
+ # Trailing empty path component, ignore it.
+ ;;
+ ..)
+ # Parent dir; strip last assembled component from result.
+ func_dirname "$func_normal_abspath_result"
+ func_normal_abspath_result=$func_dirname_result
+ ;;
+ *)
+ # Actual path component, append it.
+ func_append func_normal_abspath_result "/$func_normal_abspath_tcomponent"
+ ;;
+ esac
+ done
+ # Restore leading double-slash if one was found on entry.
+ func_normal_abspath_result=$func_normal_abspath_altnamespace$func_normal_abspath_result
+}
+
+
+# func_notquiet ARG...
+# --------------------
+# Echo program name prefixed message only when not in quiet mode.
+func_notquiet ()
+{
+ $debug_cmd
+
+ $opt_quiet || func_echo ${1+"$@"}
+
+ # A bug in bash halts the script if the last line of a function
+ # fails when set -e is in force, so we need another command to
+ # work around that:
+ :
}
-# func_quote_for_expand arg
+# func_relative_path SRCDIR DSTDIR
+# --------------------------------
+# Set func_relative_path_result to the relative path from SRCDIR to DSTDIR.
+func_relative_path ()
+{
+ $debug_cmd
+
+ func_relative_path_result=
+ func_normal_abspath "$1"
+ func_relative_path_tlibdir=$func_normal_abspath_result
+ func_normal_abspath "$2"
+ func_relative_path_tbindir=$func_normal_abspath_result
+
+ # Ascend the tree starting from libdir
+ while :; do
+ # check if we have found a prefix of bindir
+ case $func_relative_path_tbindir in
+ $func_relative_path_tlibdir)
+ # found an exact match
+ func_relative_path_tcancelled=
+ break
+ ;;
+ $func_relative_path_tlibdir*)
+ # found a matching prefix
+ func_stripname "$func_relative_path_tlibdir" '' "$func_relative_path_tbindir"
+ func_relative_path_tcancelled=$func_stripname_result
+ if test -z "$func_relative_path_result"; then
+ func_relative_path_result=.
+ fi
+ break
+ ;;
+ *)
+ func_dirname $func_relative_path_tlibdir
+ func_relative_path_tlibdir=$func_dirname_result
+ if test -z "$func_relative_path_tlibdir"; then
+ # Have to descend all the way to the root!
+ func_relative_path_result=../$func_relative_path_result
+ func_relative_path_tcancelled=$func_relative_path_tbindir
+ break
+ fi
+ func_relative_path_result=../$func_relative_path_result
+ ;;
+ esac
+ done
+
+ # Now calculate path; take care to avoid doubling-up slashes.
+ func_stripname '' '/' "$func_relative_path_result"
+ func_relative_path_result=$func_stripname_result
+ func_stripname '/' '/' "$func_relative_path_tcancelled"
+ if test -n "$func_stripname_result"; then
+ func_append func_relative_path_result "/$func_stripname_result"
+ fi
+
+ # Normalisation. If bindir is libdir, return '.' else relative path.
+ if test -n "$func_relative_path_result"; then
+ func_stripname './' '' "$func_relative_path_result"
+ func_relative_path_result=$func_stripname_result
+ fi
+
+ test -n "$func_relative_path_result" || func_relative_path_result=.
+
+ :
+}
+
+
+# func_quote_for_eval ARG...
+# --------------------------
+# Aesthetically quote ARGs to be evaled later.
+# This function returns two values:
+# i) func_quote_for_eval_result
+# double-quoted, suitable for a subsequent eval
+# ii) func_quote_for_eval_unquoted_result
+# has all characters that are still active within double
+# quotes backslashified.
+func_quote_for_eval ()
+{
+ $debug_cmd
+
+ func_quote_for_eval_unquoted_result=
+ func_quote_for_eval_result=
+ while test 0 -lt $#; do
+ case $1 in
+ *[\\\`\"\$]*)
+ _G_unquoted_arg=`printf '%s\n' "$1" |$SED "$sed_quote_subst"` ;;
+ *)
+ _G_unquoted_arg=$1 ;;
+ esac
+ if test -n "$func_quote_for_eval_unquoted_result"; then
+ func_append func_quote_for_eval_unquoted_result " $_G_unquoted_arg"
+ else
+ func_append func_quote_for_eval_unquoted_result "$_G_unquoted_arg"
+ fi
+
+ case $_G_unquoted_arg in
+ # Double-quote args containing shell metacharacters to delay
+ # word splitting, command substitution and variable expansion
+ # for a subsequent eval.
+ # Many Bourne shells cannot handle close brackets correctly
+ # in scan sets, so we specify it separately.
+ *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"")
+ _G_quoted_arg=\"$_G_unquoted_arg\"
+ ;;
+ *)
+ _G_quoted_arg=$_G_unquoted_arg
+ ;;
+ esac
+
+ if test -n "$func_quote_for_eval_result"; then
+ func_append func_quote_for_eval_result " $_G_quoted_arg"
+ else
+ func_append func_quote_for_eval_result "$_G_quoted_arg"
+ fi
+ shift
+ done
+}
+
+
+# func_quote_for_expand ARG
+# -------------------------
# Aesthetically quote ARG to be evaled later; same as above,
# but do not quote variable references.
func_quote_for_expand ()
{
+ $debug_cmd
+
case $1 in
*[\\\`\"]*)
- my_arg=`$ECHO "$1" | $SED \
- -e "$double_quote_subst" -e "$sed_double_backslash"` ;;
+ _G_arg=`$ECHO "$1" | $SED \
+ -e "$sed_double_quote_subst" -e "$sed_double_backslash"` ;;
*)
- my_arg="$1" ;;
+ _G_arg=$1 ;;
esac
- case $my_arg in
+ case $_G_arg in
# Double-quote args containing shell metacharacters to delay
# word splitting and command substitution for a subsequent eval.
# Many Bourne shells cannot handle close brackets correctly
# in scan sets, so we specify it separately.
*[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"")
- my_arg="\"$my_arg\""
+ _G_arg=\"$_G_arg\"
;;
esac
- func_quote_for_expand_result="$my_arg"
+ func_quote_for_expand_result=$_G_arg
}
-# func_show_eval cmd [fail_exp]
-# Unless opt_silent is true, then output CMD. Then, if opt_dryrun is
+# func_stripname PREFIX SUFFIX NAME
+# ---------------------------------
+# strip PREFIX and SUFFIX from NAME, and store in func_stripname_result.
+# PREFIX and SUFFIX must not contain globbing or regex special
+# characters, hashes, percent signs, but SUFFIX may contain a leading
+# dot (in which case that matches only a dot).
+if test yes = "$_G_HAVE_XSI_OPS"; then
+ eval 'func_stripname ()
+ {
+ $debug_cmd
+
+ # pdksh 5.2.14 does not do ${X%$Y} correctly if both X and Y are
+ # positional parameters, so assign one to ordinary variable first.
+ func_stripname_result=$3
+ func_stripname_result=${func_stripname_result#"$1"}
+ func_stripname_result=${func_stripname_result%"$2"}
+ }'
+else
+ func_stripname ()
+ {
+ $debug_cmd
+
+ case $2 in
+ .*) func_stripname_result=`$ECHO "$3" | $SED -e "s%^$1%%" -e "s%\\\\$2\$%%"`;;
+ *) func_stripname_result=`$ECHO "$3" | $SED -e "s%^$1%%" -e "s%$2\$%%"`;;
+ esac
+ }
+fi
+
+
+# func_show_eval CMD [FAIL_EXP]
+# -----------------------------
+# Unless opt_quiet is true, then output CMD. Then, if opt_dryrun is
# not true, evaluate CMD. If the evaluation of CMD fails, and FAIL_EXP
# is given, then evaluate it.
func_show_eval ()
{
- my_cmd="$1"
- my_fail_exp="${2-:}"
+ $debug_cmd
- ${opt_silent-false} || {
- func_quote_for_expand "$my_cmd"
- eval "func_echo $func_quote_for_expand_result"
- }
+ _G_cmd=$1
+ _G_fail_exp=${2-':'}
+
+ func_quote_for_expand "$_G_cmd"
+ eval "func_notquiet $func_quote_for_expand_result"
- if ${opt_dry_run-false}; then :; else
- eval "$my_cmd"
- my_status=$?
- if test "$my_status" -eq 0; then :; else
- eval "(exit $my_status); $my_fail_exp"
+ $opt_dry_run || {
+ eval "$_G_cmd"
+ _G_status=$?
+ if test 0 -ne "$_G_status"; then
+ eval "(exit $_G_status); $_G_fail_exp"
fi
- fi
+ }
}
-# func_show_eval_locale cmd [fail_exp]
-# Unless opt_silent is true, then output CMD. Then, if opt_dryrun is
+# func_show_eval_locale CMD [FAIL_EXP]
+# ------------------------------------
+# Unless opt_quiet is true, then output CMD. Then, if opt_dryrun is
# not true, evaluate CMD. If the evaluation of CMD fails, and FAIL_EXP
# is given, then evaluate it. Use the saved locale for evaluation.
func_show_eval_locale ()
{
- my_cmd="$1"
- my_fail_exp="${2-:}"
+ $debug_cmd
+
+ _G_cmd=$1
+ _G_fail_exp=${2-':'}
- ${opt_silent-false} || {
- func_quote_for_expand "$my_cmd"
+ $opt_quiet || {
+ func_quote_for_expand "$_G_cmd"
eval "func_echo $func_quote_for_expand_result"
}
- if ${opt_dry_run-false}; then :; else
- eval "$lt_user_locale
- $my_cmd"
- my_status=$?
- eval "$lt_safe_locale"
- if test "$my_status" -eq 0; then :; else
- eval "(exit $my_status); $my_fail_exp"
+ $opt_dry_run || {
+ eval "$_G_user_locale
+ $_G_cmd"
+ _G_status=$?
+ eval "$_G_safe_locale"
+ if test 0 -ne "$_G_status"; then
+ eval "(exit $_G_status); $_G_fail_exp"
fi
- fi
+ }
}
+
# func_tr_sh
+# ----------
# Turn $1 into a string suitable for a shell variable name.
# Result is stored in $func_tr_sh_result. All characters
# not in the set a-zA-Z0-9_ are replaced with '_'. Further,
# if $1 begins with a digit, a '_' is prepended as well.
func_tr_sh ()
{
- case $1 in
- [0-9]* | *[!a-zA-Z0-9_]*)
- func_tr_sh_result=`$ECHO "$1" | $SED 's/^\([0-9]\)/_\1/; s/[^a-zA-Z0-9_]/_/g'`
- ;;
- * )
- func_tr_sh_result=$1
- ;;
- esac
+ $debug_cmd
+
+ case $1 in
+ [0-9]* | *[!a-zA-Z0-9_]*)
+ func_tr_sh_result=`$ECHO "$1" | $SED -e 's/^\([0-9]\)/_\1/' -e 's/[^a-zA-Z0-9_]/_/g'`
+ ;;
+ * )
+ func_tr_sh_result=$1
+ ;;
+ esac
}
-# func_version
-# Echo version message to standard output and exit.
-func_version ()
+# func_verbose ARG...
+# -------------------
+# Echo program name prefixed message in verbose mode only.
+func_verbose ()
{
- $opt_debug
+ $debug_cmd
- $SED -n '/(C)/!b go
- :more
- /\./!{
- N
- s/\n# / /
- b more
- }
- :go
- /^# '$PROGRAM' (GNU /,/# warranty; / {
- s/^# //
- s/^# *$//
- s/\((C)\)[ 0-9,-]*\( [1-9][0-9]*\)/\1\2/
- p
- }' < "$progpath"
- exit $?
+ $opt_verbose && func_echo "$*"
+
+ :
}
-# func_usage
-# Echo short help message to standard output and exit.
-func_usage ()
+
+# func_warn_and_continue ARG...
+# -----------------------------
+# Echo program name prefixed warning message to standard error.
+func_warn_and_continue ()
{
- $opt_debug
+ $debug_cmd
- $SED -n '/^# Usage:/,/^# *.*--help/ {
- s/^# //
- s/^# *$//
- s/\$progname/'$progname'/
- p
- }' < "$progpath"
- echo
- $ECHO "run \`$progname --help | more' for full usage"
- exit $?
+ $require_term_colors
+
+ func_echo_infix_1 "${tc_red}warning$tc_reset" "$*" >&2
+}
+
+
+# func_warning CATEGORY ARG...
+# ----------------------------
+# Echo program name prefixed warning message to standard error. Warning
+# messages can be filtered according to CATEGORY, where this function
+# elides messages where CATEGORY is not listed in the global variable
+# 'opt_warning_types'.
+func_warning ()
+{
+ $debug_cmd
+
+ # CATEGORY must be in the warning_categories list!
+ case " $warning_categories " in
+ *" $1 "*) ;;
+ *) func_internal_error "invalid warning category '$1'" ;;
+ esac
+
+ _G_category=$1
+ shift
+
+ case " $opt_warning_types " in
+ *" $_G_category "*) $warning_func ${1+"$@"} ;;
+ esac
}
-# func_help [NOEXIT]
-# Echo long help message to standard output and exit,
-# unless 'noexit' is passed as argument.
+
+# func_sort_ver VER1 VER2
+# -----------------------
+# 'sort -V' is not generally available.
+# Note this deviates from the version comparison in automake
+# in that it treats 1.5 < 1.5.0, and treats 1.4.4a < 1.4-p3a
+# but this should suffice as we won't be specifying old
+# version formats or redundant trailing .0 in bootstrap.conf.
+# If we did want full compatibility then we should probably
+# use m4_version_compare from autoconf.
+func_sort_ver ()
+{
+ $debug_cmd
+
+ ver1=$1
+ ver2=$2
+
+ # Split on '.' and compare each component.
+ i=1
+ while :; do
+ p1=`echo "$ver1" |cut -d. -f$i`
+ p2=`echo "$ver2" |cut -d. -f$i`
+ if test ! "$p1"; then
+ echo "$1 $2"
+ break
+ elif test ! "$p2"; then
+ echo "$2 $1"
+ break
+ elif test ! "$p1" = "$p2"; then
+ if test "$p1" -gt "$p2" 2>/dev/null; then # numeric comparison
+ echo "$2 $1"
+ elif test "$p2" -gt "$p1" 2>/dev/null; then # numeric comparison
+ echo "$1 $2"
+ else # numeric, then lexicographic comparison
+ lp=`printf "$p1\n$p2\n" |sort -n |tail -n1`
+ if test "$lp" = "$p2"; then
+ echo "$1 $2"
+ else
+ echo "$2 $1"
+ fi
+ fi
+ break
+ fi
+ i=`expr $i + 1`
+ done
+}
+
+
+# Local variables:
+# mode: shell-script
+# sh-indentation: 2
+# eval: (add-hook 'write-file-hooks 'time-stamp)
+# time-stamp-pattern: "10/scriptversion=%:y-%02m-%02d.%02H; # UTC"
+# time-stamp-time-zone: "UTC"
+# End:
+#! /bin/sh
+
+# Set a version string for this script.
+scriptversion=2012-10-21.11; # UTC
+
+# A portable, pluggable option parser for Bourne shell.
+# Written by Gary V. Vaughan, 2010
+
+# Copyright (C) 2010-2013 Free Software Foundation, Inc.
+# This is free software; see the source for copying conditions. There is NO
+# warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+
+# 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 of the License, 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, see <http://www.gnu.org/licenses/>.
+
+# Please report bugs or propose patches to gary@gnu.org.
+
+
+## ------ ##
+## Usage. ##
+## ------ ##
+
+# This file is a library for parsing options in your shell scripts along
+# with assorted other useful supporting features that you can make use
+# of too.
+#
+# For the simplest scripts you might need only:
+#
+# #!/bin/sh
+# . relative/path/to/funclib.sh
+# . relative/path/to/options-parser
+# scriptversion=1.0
+# func_options ${1+"$@"}
+# eval set dummy "$func_options_result"; shift
+# ...rest of your script...
+#
+# In order for the '--version' option to work, you will need to have a
+# suitably formatted comment like the one at the top of this file
+# starting with '# Written by ' and ending with '# warranty; '.
+#
+# For '-h' and '--help' to work, you will also need a one line
+# description of your script's purpose in a comment directly above the
+# '# Written by ' line, like the one at the top of this file.
+#
+# The default options also support '--debug', which will turn on shell
+# execution tracing (see the comment above debug_cmd below for another
+# use), and '--verbose' and the func_verbose function to allow your script
+# to display verbose messages only when your user has specified
+# '--verbose'.
+#
+# After sourcing this file, you can plug processing for additional
+# options by amending the variables from the 'Configuration' section
+# below, and following the instructions in the 'Option parsing'
+# section further down.
+
+## -------------- ##
+## Configuration. ##
+## -------------- ##
+
+# You should override these variables in your script after sourcing this
+# file so that they reflect the customisations you have added to the
+# option parser.
+
+# The usage line for option parsing errors and the start of '-h' and
+# '--help' output messages. You can embed shell variables for delayed
+# expansion at the time the message is displayed, but you will need to
+# quote other shell meta-characters carefully to prevent them being
+# expanded when the contents are evaled.
+usage='$progpath [OPTION]...'
+
+# Short help message in response to '-h' and '--help'. Add to this or
+# override it after sourcing this library to reflect the full set of
+# options your script accepts.
+usage_message="\
+ --debug enable verbose shell tracing
+ -W, --warnings=CATEGORY
+ report the warnings falling in CATEGORY [all]
+ -v, --verbose verbosely report processing
+ --version print version information and exit
+ -h, --help print short or long help message and exit
+"
+
+# Additional text appended to 'usage_message' in response to '--help'.
+long_help_message="
+Warning categories include:
+ 'all' show all warnings
+ 'none' turn off all the warnings
+ 'error' warnings are treated as fatal errors"
+
+# Help message printed before fatal option parsing errors.
+fatal_help="Try '\$progname --help' for more information."
+
+
+
+## ------------------------- ##
+## Hook function management. ##
+## ------------------------- ##
+
+# This section contains functions for adding, removing, and running hooks
+# to the main code. A hook is just a named list of of function, that can
+# be run in order later on.
+
+# func_hookable FUNC_NAME
+# -----------------------
+# Declare that FUNC_NAME will run hooks added with
+# 'func_add_hook FUNC_NAME ...'.
+func_hookable ()
+{
+ $debug_cmd
+
+ func_append hookable_fns " $1"
+}
+
+
+# func_add_hook FUNC_NAME HOOK_FUNC
+# ---------------------------------
+# Request that FUNC_NAME call HOOK_FUNC before it returns. FUNC_NAME must
+# first have been declared "hookable" by a call to 'func_hookable'.
+func_add_hook ()
+{
+ $debug_cmd
+
+ case " $hookable_fns " in
+ *" $1 "*) ;;
+ *) func_fatal_error "'$1' does not accept hook functions." ;;
+ esac
+
+ eval func_append ${1}_hooks '" $2"'
+}
+
+
+# func_remove_hook FUNC_NAME HOOK_FUNC
+# ------------------------------------
+# Remove HOOK_FUNC from the list of functions called by FUNC_NAME.
+func_remove_hook ()
+{
+ $debug_cmd
+
+ eval ${1}_hooks='`$bs_echo "\$'$1'_hooks" |$SED "s| '$2'||"`'
+}
+
+
+# func_run_hooks FUNC_NAME [ARG]...
+# ---------------------------------
+# Run all hook functions registered to FUNC_NAME.
+# It is assumed that the list of hook functions contains nothing more
+# than a whitespace-delimited list of legal shell function names, and
+# no effort is wasted trying to catch shell meta-characters or preserve
+# whitespace.
+func_run_hooks ()
+{
+ $debug_cmd
+
+ case " $hookable_fns " in
+ *" $1 "*) ;;
+ *) func_fatal_error "'$1' does not support hook funcions.n" ;;
+ esac
+
+ eval _G_hook_fns=\$$1_hooks; shift
+
+ for _G_hook in $_G_hook_fns; do
+ eval $_G_hook '"$@"'
+
+ # store returned options list back into positional
+ # parameters for next 'cmd' execution.
+ eval _G_hook_result=\$${_G_hook}_result
+ eval set dummy "$_G_hook_result"; shift
+ done
+
+ func_quote_for_eval ${1+"$@"}
+ func_run_hooks_result=$func_quote_for_eval_result
+}
+
+
+
+## --------------- ##
+## Option parsing. ##
+## --------------- ##
+
+# In order to add your own option parsing hooks, you must accept the
+# full positional parameter list in your hook function, remove any
+# options that you action, and then pass back the remaining unprocessed
+# options in '<hooked_function_name>_result', escaped suitably for
+# 'eval'. Like this:
+#
+# my_options_prep ()
+# {
+# $debug_cmd
+#
+# # Extend the existing usage message.
+# usage_message=$usage_message'
+# -s, --silent don'\''t print informational messages
+# '
+#
+# func_quote_for_eval ${1+"$@"}
+# my_options_prep_result=$func_quote_for_eval_result
+# }
+# func_add_hook func_options_prep my_options_prep
+#
+#
+# my_silent_option ()
+# {
+# $debug_cmd
+#
+# # Note that for efficiency, we parse as many options as we can
+# # recognise in a loop before passing the remainder back to the
+# # caller on the first unrecognised argument we encounter.
+# while test $# -gt 0; do
+# opt=$1; shift
+# case $opt in
+# --silent|-s) opt_silent=: ;;
+# # Separate non-argument short options:
+# -s*) func_split_short_opt "$_G_opt"
+# set dummy "$func_split_short_opt_name" \
+# "-$func_split_short_opt_arg" ${1+"$@"}
+# shift
+# ;;
+# *) set dummy "$_G_opt" "$*"; shift; break ;;
+# esac
+# done
+#
+# func_quote_for_eval ${1+"$@"}
+# my_silent_option_result=$func_quote_for_eval_result
+# }
+# func_add_hook func_parse_options my_silent_option
+#
+#
+# my_option_validation ()
+# {
+# $debug_cmd
+#
+# $opt_silent && $opt_verbose && func_fatal_help "\
+# '--silent' and '--verbose' options are mutually exclusive."
+#
+# func_quote_for_eval ${1+"$@"}
+# my_option_validation_result=$func_quote_for_eval_result
+# }
+# func_add_hook func_validate_options my_option_validation
+#
+# You'll alse need to manually amend $usage_message to reflect the extra
+# options you parse. It's preferable to append if you can, so that
+# multiple option parsing hooks can be added safely.
+
+
+# func_options [ARG]...
+# ---------------------
+# All the functions called inside func_options are hookable. See the
+# individual implementations for details.
+func_hookable func_options
+func_options ()
+{
+ $debug_cmd
+
+ func_options_prep ${1+"$@"}
+ eval func_parse_options \
+ ${func_options_prep_result+"$func_options_prep_result"}
+ eval func_validate_options \
+ ${func_parse_options_result+"$func_parse_options_result"}
+
+ eval func_run_hooks func_options \
+ ${func_validate_options_result+"$func_validate_options_result"}
+
+ # save modified positional parameters for caller
+ func_options_result=$func_run_hooks_result
+}
+
+
+# func_options_prep [ARG]...
+# --------------------------
+# All initialisations required before starting the option parse loop.
+# Note that when calling hook functions, we pass through the list of
+# positional parameters. If a hook function modifies that list, and
+# needs to propogate that back to rest of this script, then the complete
+# modified list must be put in 'func_run_hooks_result' before
+# returning.
+func_hookable func_options_prep
+func_options_prep ()
+{
+ $debug_cmd
+
+ # Option defaults:
+ opt_verbose=false
+ opt_warning_types=
+
+ func_run_hooks func_options_prep ${1+"$@"}
+
+ # save modified positional parameters for caller
+ func_options_prep_result=$func_run_hooks_result
+}
+
+
+# func_parse_options [ARG]...
+# ---------------------------
+# The main option parsing loop.
+func_hookable func_parse_options
+func_parse_options ()
+{
+ $debug_cmd
+
+ func_parse_options_result=
+
+ # this just eases exit handling
+ while test $# -gt 0; do
+ # Defer to hook functions for initial option parsing, so they
+ # get priority in the event of reusing an option name.
+ func_run_hooks func_parse_options ${1+"$@"}
+
+ # Adjust func_parse_options positional parameters to match
+ eval set dummy "$func_run_hooks_result"; shift
+
+ # Break out of the loop if we already parsed every option.
+ test $# -gt 0 || break
+
+ _G_opt=$1
+ shift
+ case $_G_opt in
+ --debug|-x) debug_cmd='set -x'
+ func_echo "enabling shell trace mode"
+ $debug_cmd
+ ;;
+
+ --no-warnings|--no-warning|--no-warn)
+ set dummy --warnings none ${1+"$@"}
+ shift
+ ;;
+
+ --warnings|--warning|-W)
+ test $# = 0 && func_missing_arg $_G_opt && break
+ case " $warning_categories $1" in
+ *" $1 "*)
+ # trailing space prevents matching last $1 above
+ func_append_uniq opt_warning_types " $1"
+ ;;
+ *all)
+ opt_warning_types=$warning_categories
+ ;;
+ *none)
+ opt_warning_types=none
+ warning_func=:
+ ;;
+ *error)
+ opt_warning_types=$warning_categories
+ warning_func=func_fatal_error
+ ;;
+ *)
+ func_fatal_error \
+ "unsupported warning category: '$1'"
+ ;;
+ esac
+ shift
+ ;;
+
+ --verbose|-v) opt_verbose=: ;;
+ --version) func_version ;;
+ -\?|-h) func_usage ;;
+ --help) func_help ;;
+
+ # Separate optargs to long options (plugins may need this):
+ --*=*) func_split_equals "$_G_opt"
+ set dummy "$func_split_equals_lhs" \
+ "$func_split_equals_rhs" ${1+"$@"}
+ shift
+ ;;
+
+ # Separate optargs to short options:
+ -W*)
+ func_split_short_opt "$_G_opt"
+ set dummy "$func_split_short_opt_name" \
+ "$func_split_short_opt_arg" ${1+"$@"}
+ shift
+ ;;
+
+ # Separate non-argument short options:
+ -\?*|-h*|-v*|-x*)
+ func_split_short_opt "$_G_opt"
+ set dummy "$func_split_short_opt_name" \
+ "-$func_split_short_opt_arg" ${1+"$@"}
+ shift
+ ;;
+
+ --) break ;;
+ -*) func_fatal_help "unrecognised option: '$_G_opt'" ;;
+ *) set dummy "$_G_opt" ${1+"$@"}; shift; break ;;
+ esac
+ done
+
+ # save modified positional parameters for caller
+ func_quote_for_eval ${1+"$@"}
+ func_parse_options_result=$func_quote_for_eval_result
+}
+
+
+# func_validate_options [ARG]...
+# ------------------------------
+# Perform any sanity checks on option settings and/or unconsumed
+# arguments.
+func_hookable func_validate_options
+func_validate_options ()
+{
+ $debug_cmd
+
+ # Display all warnings if -W was not given.
+ test -n "$opt_warning_types" || opt_warning_types=" $warning_categories"
+
+ func_run_hooks func_validate_options ${1+"$@"}
+
+ # Bail if the options were screwed!
+ $exit_cmd $EXIT_FAILURE
+
+ # save modified positional parameters for caller
+ func_validate_options_result=$func_run_hooks_result
+}
+
+
+
+## ------------------##
+## Helper functions. ##
+## ------------------##
+
+# This section contains the helper functions used by the rest of the
+# hookable option parser framework in ascii-betical order.
+
+
+# func_fatal_help ARG...
+# ----------------------
+# Echo program name prefixed message to standard error, followed by
+# a help hint, and exit.
+func_fatal_help ()
+{
+ $debug_cmd
+
+ eval \$bs_echo \""Usage: $usage"\"
+ eval \$bs_echo \""$fatal_help"\"
+ func_error ${1+"$@"}
+ exit $EXIT_FAILURE
+}
+
+
+# func_help
+# ---------
+# Echo long help message to standard output and exit.
func_help ()
{
- $opt_debug
-
- $SED -n '/^# Usage:/,/# Report bugs to/ {
- :print
- s/^# //
- s/^# *$//
- s*\$progname*'$progname'*
- s*\$host*'"$host"'*
- s*\$SHELL*'"$SHELL"'*
- s*\$LTCC*'"$LTCC"'*
- s*\$LTCFLAGS*'"$LTCFLAGS"'*
- s*\$LD*'"$LD"'*
- s/\$with_gnu_ld/'"$with_gnu_ld"'/
- s/\$automake_version/'"`(${AUTOMAKE-automake} --version) 2>/dev/null |$SED 1q`"'/
- s/\$autoconf_version/'"`(${AUTOCONF-autoconf} --version) 2>/dev/null |$SED 1q`"'/
- p
- d
- }
- /^# .* home page:/b print
- /^# General help using/b print
- ' < "$progpath"
- ret=$?
- if test -z "$1"; then
- exit $ret
- fi
+ $debug_cmd
+
+ func_usage_message
+ $bs_echo "$long_help_message"
+ exit 0
}
-# func_missing_arg argname
+
+# func_missing_arg ARGNAME
+# ------------------------
# Echo program name prefixed message to standard error and set global
# exit_cmd.
func_missing_arg ()
{
- $opt_debug
+ $debug_cmd
- func_error "missing argument for $1."
+ func_error "Missing argument for '$1'."
exit_cmd=exit
}
-# func_split_short_opt shortopt
+# func_split_equals STRING
+# ------------------------
+# Set func_split_equals_lhs and func_split_equals_rhs shell variables after
+# splitting STRING at the '=' sign.
+test -z "$_G_HAVE_XSI_OPS" \
+ && (eval 'x=a/b/c;
+ test 5aa/bb/cc = "${#x}${x%%/*}${x%/*}${x#*/}${x##*/}"') 2>/dev/null \
+ && _G_HAVE_XSI_OPS=yes
+
+if test yes = "$_G_HAVE_XSI_OPS"
+then
+ # This is an XSI compatible shell, allowing a faster implementation...
+ eval 'func_split_equals ()
+ {
+ $debug_cmd
+
+ func_split_equals_lhs=${1%%=*}
+ func_split_equals_rhs=${1#*=}
+ test "x$func_split_equals_lhs" = "x$1" \
+ && func_split_equals_rhs=
+ }'
+else
+ # ...otherwise fall back to using expr, which is often a shell builtin.
+ func_split_equals ()
+ {
+ $debug_cmd
+
+ func_split_equals_lhs=`expr "x$1" : 'x\([^=]*\)'`
+ func_split_equals_rhs=
+ test "x$func_split_equals_lhs" = "x$1" \
+ || func_split_equals_rhs=`expr "x$1" : 'x[^=]*=\(.*\)$'`
+ }
+fi #func_split_equals
+
+
+# func_split_short_opt SHORTOPT
+# -----------------------------
# Set func_split_short_opt_name and func_split_short_opt_arg shell
# variables after splitting SHORTOPT after the 2nd character.
-func_split_short_opt ()
-{
- my_sed_short_opt='1s/^\(..\).*$/\1/;q'
- my_sed_short_rest='1s/^..\(.*\)$/\1/;q'
+if test yes = "$_G_HAVE_XSI_OPS"
+then
+ # This is an XSI compatible shell, allowing a faster implementation...
+ eval 'func_split_short_opt ()
+ {
+ $debug_cmd
+
+ func_split_short_opt_arg=${1#??}
+ func_split_short_opt_name=${1%"$func_split_short_opt_arg"}
+ }'
+else
+ # ...otherwise fall back to using expr, which is often a shell builtin.
+ func_split_short_opt ()
+ {
+ $debug_cmd
- func_split_short_opt_name=`$ECHO "$1" | $SED "$my_sed_short_opt"`
- func_split_short_opt_arg=`$ECHO "$1" | $SED "$my_sed_short_rest"`
-} # func_split_short_opt may be replaced by extended shell implementation
+ func_split_short_opt_name=`expr "x$1" : 'x-\(.\)'`
+ func_split_short_opt_arg=`expr "x$1" : 'x-.\(.*\)$'`
+ }
+fi #func_split_short_opt
-# func_split_long_opt longopt
-# Set func_split_long_opt_name and func_split_long_opt_arg shell
-# variables after splitting LONGOPT at the `=' sign.
-func_split_long_opt ()
+# func_usage
+# ----------
+# Echo short help message to standard output and exit.
+func_usage ()
{
- my_sed_long_opt='1s/^\(--[^=]*\)=.*/\1/;q'
- my_sed_long_arg='1s/^--[^=]*=//'
+ $debug_cmd
- func_split_long_opt_name=`$ECHO "$1" | $SED "$my_sed_long_opt"`
- func_split_long_opt_arg=`$ECHO "$1" | $SED "$my_sed_long_arg"`
-} # func_split_long_opt may be replaced by extended shell implementation
+ func_usage_message
+ $bs_echo "Run '$progname --help |${PAGER-more}' for full usage"
+ exit 0
+}
-exit_cmd=:
+# func_usage_message
+# ------------------
+# Echo short help message to standard output.
+func_usage_message ()
+{
+ $debug_cmd
+ eval \$bs_echo \""Usage: $usage"\"
+ echo
+ $SED -n 's|^# ||
+ /^Written by/{
+ x;p;x
+ }
+ h
+ /^Written by/q' < "$progpath"
+ echo
+ eval \$bs_echo \""$usage_message"\"
+}
+# func_version
+# ------------
+# Echo version message to standard output and exit.
+func_version ()
+{
+ $debug_cmd
+
+ printf '%s\n' "$progname $scriptversion"
+ $SED -n '/^##/q
+ /(C)/!b go
+ :more
+ /\./!{
+ N
+ s|\n# | |
+ b more
+ }
+ :go
+ /^# Written by /,/# warranty; / {
+ s|^# ||
+ s|^# *$||
+ s|\((C)\)[ 0-9,-]*[ ,-]\([1-9][0-9]* \)|\1 \2|
+ p
+ }
+ /^# Written by / {
+ s|^# ||
+ p
+ }
+ /^warranty; /q' < "$progpath"
-magic="%%%MAGIC variable%%%"
-magic_exe="%%%MAGIC EXE variable%%%"
+ exit $?
+}
-# Global variables.
-nonopt=
-preserve_args=
-lo2o="s/\\.lo\$/.${objext}/"
-o2lo="s/\\.${objext}\$/.lo/"
-extracted_archives=
-extracted_serial=0
-# If this variable is set in any of the actions, the command in it
-# will be execed at the end. This prevents here-documents from being
-# left over by shells.
-exec_cmd=
+# Local variables:
+# mode: shell-script
+# sh-indentation: 2
+# eval: (add-hook 'write-file-hooks 'time-stamp)
+# time-stamp-pattern: "10/scriptversion=%:y-%02m-%02d.%02H; # UTC"
+# time-stamp-time-zone: "UTC"
+# End:
-# func_append var value
-# Append VALUE to the end of shell variable VAR.
-func_append ()
-{
- eval "${1}=\$${1}\${2}"
-} # func_append may be replaced by extended shell implementation
+# Set a version string.
+scriptversion='(GNU libtool) 2.4.2.418'
-# func_append_quoted var value
-# Quote VALUE and append to the end of shell variable VAR, separated
-# by a space.
-func_append_quoted ()
+
+# func_echo ARG...
+# ----------------
+# Libtool also displays the current mode in messages, so override
+# funclib.sh func_echo with this custom definition.
+func_echo ()
{
- func_quote_for_eval "${2}"
- eval "${1}=\$${1}\\ \$func_quote_for_eval_result"
-} # func_append_quoted may be replaced by extended shell implementation
+ $debug_cmd
+ _G_message=$*
-# func_arith arithmetic-term...
-func_arith ()
-{
- func_arith_result=`expr "${@}"`
-} # func_arith may be replaced by extended shell implementation
+ func_echo_IFS=$IFS
+ IFS=$nl
+ for _G_line in $_G_message; do
+ IFS=$func_echo_IFS
+ $bs_echo "$progname${opt_mode+: $opt_mode}: $_G_line"
+ done
+ IFS=$func_echo_IFS
+}
-# func_len string
-# STRING may not start with a hyphen.
-func_len ()
+# func_warning ARG...
+# -------------------
+# Libtool warnings are not categorized, so override funclib.sh
+# func_warning with this simpler definition.
+func_warning ()
{
- func_len_result=`expr "${1}" : ".*" 2>/dev/null || echo $max_cmd_len`
-} # func_len may be replaced by extended shell implementation
+ $debug_cmd
+ $warning_func ${1+"$@"}
+}
-# func_lo2o object
-func_lo2o ()
-{
- func_lo2o_result=`$ECHO "${1}" | $SED "$lo2o"`
-} # func_lo2o may be replaced by extended shell implementation
+## ---------------- ##
+## Options parsing. ##
+## ---------------- ##
+
+# Hook in the functions to make sure our own options are parsed during
+# the option parsing loop.
+
+usage='$progpath [OPTION]... [MODE-ARG]...'
+
+# Short help message in response to '-h'.
+usage_message="Options:
+ --config show all configuration variables
+ --debug enable verbose shell tracing
+ -n, --dry-run display commands without modifying any files
+ --features display basic configuration information and exit
+ --mode=MODE use operation mode MODE
+ --no-warnings equivalent to '-Wnone'
+ --preserve-dup-deps don't remove duplicate dependency libraries
+ --quiet, --silent don't print informational messages
+ --tag=TAG use configuration variables from tag TAG
+ -v, --verbose print more informational messages than default
+ --version print version information
+ -W, --warnings=CATEGORY report the warnings falling in CATEGORY [all]
+ -h, --help, --help-all print short, long, or detailed help message
+"
-# func_xform libobj-or-source
-func_xform ()
-{
- func_xform_result=`$ECHO "${1}" | $SED 's/\.[^.]*$/.lo/'`
-} # func_xform may be replaced by extended shell implementation
+# Additional text appended to 'usage_message' in response to '--help'.
+long_help_message=$long_help_message"
+
+MODE must be one of the following:
+
+ clean remove files from the build directory
+ compile compile a source file into a libtool object
+ execute automatically set library path, then run a program
+ finish complete the installation of libtool libraries
+ install install libraries or executables
+ link create a library or an executable
+ uninstall remove libraries from an installed directory
+
+MODE-ARGS vary depending on the MODE. When passed as first option,
+'--mode=MODE' may be abbreviated as 'MODE' or a unique abbreviation of that.
+Try '$progname --help --mode=MODE' for a more detailed description of MODE.
+
+When reporting a bug, please describe a test case to reproduce it and
+include the following information:
+
+ host-triplet: $host
+ shell: $SHELL
+ compiler: $LTCC
+ compiler flags: $LTCFLAGS
+ linker: $LD (gnu? $with_gnu_ld)
+ version: $progname (GNU libtool) 2.4.2.418
+ automake: `($AUTOMAKE --version) 2>/dev/null |$SED 1q`
+ autoconf: `($AUTOCONF --version) 2>/dev/null |$SED 1q`
+
+Report bugs to <bug-libtool@gnu.org>.
+GNU libtool home page: <http://www.gnu.org/software/libtool/>.
+General help using GNU software: <http://www.gnu.org/gethelp/>."
+
+
+# func_lo2o OBJECT-NAME
+# ---------------------
+# Transform OBJECT-NAME from a '.lo' suffix to the platform specific
+# object suffix.
+
+lo2o=s/\\.lo\$/.$objext/
+o2lo=s/\\.$objext\$/.lo/
+
+if test yes = "$_G_HAVE_XSI_OPS"; then
+ eval 'func_lo2o ()
+ {
+ case $1 in
+ *.lo) func_lo2o_result=${1%.lo}.$objext ;;
+ * ) func_lo2o_result=$1 ;;
+ esac
+ }'
+
+ # func_xform LIBOBJ-OR-SOURCE
+ # ---------------------------
+ # Transform LIBOBJ-OR-SOURCE from a '.o' or '.c' (or otherwise)
+ # suffix to a '.lo' libtool-object suffix.
+ eval 'func_xform ()
+ {
+ func_xform_result=${1%.*}.lo
+ }'
+else
+ # ...otherwise fall back to using sed.
+ func_lo2o ()
+ {
+ func_lo2o_result=`$ECHO "$1" | $SED "$lo2o"`
+ }
+
+ func_xform ()
+ {
+ func_xform_result=`$ECHO "$1" | $SED 's|\.[^.]*$|.lo|'`
+ }
+fi
-# func_fatal_configuration arg...
+# func_fatal_configuration ARG...
+# -------------------------------
# Echo program name prefixed message to standard error, followed by
# a configuration failure hint, and exit.
func_fatal_configuration ()
{
- func_error ${1+"$@"}
- func_error "See the $PACKAGE documentation for more information."
- func_fatal_error "Fatal configuration error."
+ func__fatal_error ${1+"$@"} \
+ "See the $PACKAGE documentation for more information." \
+ "Fatal configuration error."
}
# func_config
+# -----------
# Display the configuration for all the tags in this script.
func_config ()
{
@@ -915,17 +2048,19 @@ func_config ()
exit $?
}
+
# func_features
+# -------------
# Display the features supported by this script.
func_features ()
{
echo "host: $host"
- if test "$build_libtool_libs" = yes; then
+ if test yes = "$build_libtool_libs"; then
echo "enable shared libraries"
else
echo "disable shared libraries"
fi
- if test "$build_old_libs" = yes; then
+ if test yes = "$build_old_libs"; then
echo "enable static libraries"
else
echo "disable static libraries"
@@ -934,289 +2069,295 @@ func_features ()
exit $?
}
-# func_enable_tag tagname
+
+# func_enable_tag TAGNAME
+# -----------------------
# Verify that TAGNAME is valid, and either flag an error and exit, or
# enable the TAGNAME tag. We also add TAGNAME to the global $taglist
# variable here.
func_enable_tag ()
{
- # Global variable:
- tagname="$1"
+ # Global variable:
+ tagname=$1
- re_begincf="^# ### BEGIN LIBTOOL TAG CONFIG: $tagname\$"
- re_endcf="^# ### END LIBTOOL TAG CONFIG: $tagname\$"
- sed_extractcf="/$re_begincf/,/$re_endcf/p"
+ re_begincf="^# ### BEGIN LIBTOOL TAG CONFIG: $tagname\$"
+ re_endcf="^# ### END LIBTOOL TAG CONFIG: $tagname\$"
+ sed_extractcf=/$re_begincf/,/$re_endcf/p
- # Validate tagname.
- case $tagname in
- *[!-_A-Za-z0-9,/]*)
- func_fatal_error "invalid tag name: $tagname"
- ;;
- esac
+ # Validate tagname.
+ case $tagname in
+ *[!-_A-Za-z0-9,/]*)
+ func_fatal_error "invalid tag name: $tagname"
+ ;;
+ esac
- # Don't test for the "default" C tag, as we know it's
- # there but not specially marked.
- case $tagname in
- CC) ;;
+ # Don't test for the "default" C tag, as we know it's
+ # there but not specially marked.
+ case $tagname in
+ CC) ;;
*)
- if $GREP "$re_begincf" "$progpath" >/dev/null 2>&1; then
- taglist="$taglist $tagname"
-
- # Evaluate the configuration. Be careful to quote the path
- # and the sed script, to avoid splitting on whitespace, but
- # also don't use non-portable quotes within backquotes within
- # quotes we have to do it in 2 steps:
- extractedcf=`$SED -n -e "$sed_extractcf" < "$progpath"`
- eval "$extractedcf"
- else
- func_error "ignoring unknown tag $tagname"
- fi
- ;;
- esac
+ if $GREP "$re_begincf" "$progpath" >/dev/null 2>&1; then
+ taglist="$taglist $tagname"
+
+ # Evaluate the configuration. Be careful to quote the path
+ # and the sed script, to avoid splitting on whitespace, but
+ # also don't use non-portable quotes within backquotes within
+ # quotes we have to do it in 2 steps:
+ extractedcf=`$SED -n -e "$sed_extractcf" < "$progpath"`
+ eval "$extractedcf"
+ else
+ func_error "ignoring unknown tag $tagname"
+ fi
+ ;;
+ esac
}
+
# func_check_version_match
+# ------------------------
# Ensure that we are using m4 macros, and libtool script from the same
# release of libtool.
func_check_version_match ()
{
- if test "$package_revision" != "$macro_revision"; then
- if test "$VERSION" != "$macro_version"; then
- if test -z "$macro_version"; then
- cat >&2 <<_LT_EOF
+ if test "$package_revision" != "$macro_revision"; then
+ if test "$VERSION" != "$macro_version"; then
+ if test -z "$macro_version"; then
+ cat >&2 <<_LT_EOF
$progname: Version mismatch error. This is $PACKAGE $VERSION, but the
$progname: definition of this LT_INIT comes from an older release.
$progname: You should recreate aclocal.m4 with macros from $PACKAGE $VERSION
$progname: and run autoconf again.
_LT_EOF
- else
- cat >&2 <<_LT_EOF
+ else
+ cat >&2 <<_LT_EOF
$progname: Version mismatch error. This is $PACKAGE $VERSION, but the
$progname: definition of this LT_INIT comes from $PACKAGE $macro_version.
$progname: You should recreate aclocal.m4 with macros from $PACKAGE $VERSION
$progname: and run autoconf again.
_LT_EOF
- fi
- else
- cat >&2 <<_LT_EOF
+ fi
+ else
+ cat >&2 <<_LT_EOF
$progname: Version mismatch error. This is $PACKAGE $VERSION, revision $package_revision,
$progname: but the definition of this LT_INIT comes from revision $macro_revision.
$progname: You should recreate aclocal.m4 with macros from revision $package_revision
$progname: of $PACKAGE $VERSION and run autoconf again.
_LT_EOF
- fi
+ fi
- exit $EXIT_MISMATCH
- fi
+ exit $EXIT_MISMATCH
+ fi
}
-# Shorthand for --mode=foo, only valid as the first argument
-case $1 in
-clean|clea|cle|cl)
- shift; set dummy --mode clean ${1+"$@"}; shift
- ;;
-compile|compil|compi|comp|com|co|c)
- shift; set dummy --mode compile ${1+"$@"}; shift
- ;;
-execute|execut|execu|exec|exe|ex|e)
- shift; set dummy --mode execute ${1+"$@"}; shift
- ;;
-finish|finis|fini|fin|fi|f)
- shift; set dummy --mode finish ${1+"$@"}; shift
- ;;
-install|instal|insta|inst|ins|in|i)
- shift; set dummy --mode install ${1+"$@"}; shift
- ;;
-link|lin|li|l)
- shift; set dummy --mode link ${1+"$@"}; shift
- ;;
-uninstall|uninstal|uninsta|uninst|unins|unin|uni|un|u)
- shift; set dummy --mode uninstall ${1+"$@"}; shift
- ;;
-esac
+# libtool_options_prep [ARG]...
+# -----------------------------
+# Preparation for options parsed by libtool.
+libtool_options_prep ()
+{
+ $debug_mode
+ # Option defaults:
+ opt_config=false
+ opt_dlopen=
+ opt_dry_run=false
+ opt_help=false
+ opt_mode=
+ opt_preserve_dup_deps=false
+ opt_quiet=false
+ nonopt=
+ preserve_args=
-# Option defaults:
-opt_debug=:
-opt_dry_run=false
-opt_config=false
-opt_preserve_dup_deps=false
-opt_features=false
-opt_finish=false
-opt_help=false
-opt_help_all=false
-opt_silent=:
-opt_warning=:
-opt_verbose=:
-opt_silent=false
-opt_verbose=false
+ # Shorthand for --mode=foo, only valid as the first argument
+ case $1 in
+ clean|clea|cle|cl)
+ shift; set dummy --mode clean ${1+"$@"}; shift
+ ;;
+ compile|compil|compi|comp|com|co|c)
+ shift; set dummy --mode compile ${1+"$@"}; shift
+ ;;
+ execute|execut|execu|exec|exe|ex|e)
+ shift; set dummy --mode execute ${1+"$@"}; shift
+ ;;
+ finish|finis|fini|fin|fi|f)
+ shift; set dummy --mode finish ${1+"$@"}; shift
+ ;;
+ install|instal|insta|inst|ins|in|i)
+ shift; set dummy --mode install ${1+"$@"}; shift
+ ;;
+ link|lin|li|l)
+ shift; set dummy --mode link ${1+"$@"}; shift
+ ;;
+ uninstall|uninstal|uninsta|uninst|unins|unin|uni|un|u)
+ shift; set dummy --mode uninstall ${1+"$@"}; shift
+ ;;
+ esac
+
+ # Pass back the list of options.
+ func_quote_for_eval ${1+"$@"}
+ libtool_options_prep_result=$func_quote_for_eval_result
+}
+func_add_hook func_options_prep libtool_options_prep
-# Parse options once, thoroughly. This comes as soon as possible in the
-# script to make things like `--version' happen as quickly as we can.
+# libtool_parse_options [ARG]...
+# ---------------------------------
+# Provide handling for libtool specific options.
+libtool_parse_options ()
{
- # this just eases exit handling
- while test $# -gt 0; do
- opt="$1"
- shift
- case $opt in
- --debug|-x) opt_debug='set -x'
- func_echo "enabling shell trace mode"
- $opt_debug
- ;;
- --dry-run|--dryrun|-n)
- opt_dry_run=:
- ;;
- --config)
- opt_config=:
-func_config
- ;;
- --dlopen|-dlopen)
- optarg="$1"
- opt_dlopen="${opt_dlopen+$opt_dlopen
-}$optarg"
- shift
- ;;
- --preserve-dup-deps)
- opt_preserve_dup_deps=:
- ;;
- --features)
- opt_features=:
-func_features
- ;;
- --finish)
- opt_finish=:
-set dummy --mode finish ${1+"$@"}; shift
- ;;
- --help)
- opt_help=:
- ;;
- --help-all)
- opt_help_all=:
-opt_help=': help-all'
- ;;
- --mode)
- test $# = 0 && func_missing_arg $opt && break
- optarg="$1"
- opt_mode="$optarg"
-case $optarg in
- # Valid mode arguments:
- clean|compile|execute|finish|install|link|relink|uninstall) ;;
-
- # Catch anything else as an error
- *) func_error "invalid argument for $opt"
- exit_cmd=exit
- break
- ;;
-esac
- shift
- ;;
- --no-silent|--no-quiet)
- opt_silent=false
-func_append preserve_args " $opt"
- ;;
- --no-warning|--no-warn)
- opt_warning=false
-func_append preserve_args " $opt"
- ;;
- --no-verbose)
- opt_verbose=false
-func_append preserve_args " $opt"
- ;;
- --silent|--quiet)
- opt_silent=:
-func_append preserve_args " $opt"
- opt_verbose=false
- ;;
- --verbose|-v)
- opt_verbose=:
-func_append preserve_args " $opt"
-opt_silent=false
- ;;
- --tag)
- test $# = 0 && func_missing_arg $opt && break
- optarg="$1"
- opt_tag="$optarg"
-func_append preserve_args " $opt $optarg"
-func_enable_tag "$optarg"
- shift
- ;;
-
- -\?|-h) func_usage ;;
- --help) func_help ;;
- --version) func_version ;;
-
- # Separate optargs to long options:
- --*=*)
- func_split_long_opt "$opt"
- set dummy "$func_split_long_opt_name" "$func_split_long_opt_arg" ${1+"$@"}
- shift
- ;;
-
- # Separate non-argument short options:
- -\?*|-h*|-n*|-v*)
- func_split_short_opt "$opt"
- set dummy "$func_split_short_opt_name" "-$func_split_short_opt_arg" ${1+"$@"}
- shift
- ;;
-
- --) break ;;
- -*) func_fatal_help "unrecognized option \`$opt'" ;;
- *) set dummy "$opt" ${1+"$@"}; shift; break ;;
- esac
- done
+ $debug_cmd
- # Validate options:
+ # Perform our own loop to consume as many options as possible in
+ # each iteration.
+ while test $# -gt 0; do
+ _G_opt=$1
+ shift
+ case $_G_opt in
+ --dry-run|--dryrun|-n)
+ opt_dry_run=:
+ ;;
+
+ --config) func_config ;;
+
+ --dlopen|-dlopen)
+ opt_dlopen="${opt_dlopen+$opt_dlopen
+}$1"
+ shift
+ ;;
+
+ --preserve-dup-deps)
+ opt_preserve_dup_deps=: ;;
+
+ --features) func_features ;;
+
+ --finish) set dummy --mode finish ${1+"$@"}; shift ;;
+
+ --help) opt_help=: ;;
+
+ --help-all) opt_help=': help-all' ;;
+
+ --mode) test $# = 0 && func_missing_arg $_G_opt && break
+ opt_mode=$1
+ case $1 in
+ # Valid mode arguments:
+ clean|compile|execute|finish|install|link|relink|uninstall) ;;
+
+ # Catch anything else as an error
+ *) func_error "invalid argument for $_G_opt"
+ exit_cmd=exit
+ break
+ ;;
+ esac
+ shift
+ ;;
+
+ --no-silent|--no-quiet)
+ opt_quiet=false
+ func_append preserve_args " $_G_opt"
+ ;;
+
+ --no-warnings|--no-warning|--no-warn)
+ opt_warning=false
+ func_append preserve_args " $_G_opt"
+ ;;
+
+ --no-verbose)
+ opt_verbose=false
+ func_append preserve_args " $_G_opt"
+ ;;
+
+ --silent|--quiet)
+ opt_quiet=:
+ opt_verbose=false
+ func_append preserve_args " $_G_opt"
+ ;;
+
+ --tag) test $# = 0 && func_missing_arg $_G_opt && break
+ opt_tag=$1
+ func_append preserve_args " $_G_opt $1"
+ func_enable_tag "$1"
+ shift
+ ;;
+
+ --verbose|-v) opt_quiet=false
+ opt_verbose=:
+ func_append preserve_args " $_G_opt"
+ ;;
+
+ # An option not handled by this hook function:
+ *) set dummy "$_G_opt" ${1+"$@"}; shift; break ;;
+ esac
+ done
- # save first non-option argument
- if test "$#" -gt 0; then
- nonopt="$opt"
- shift
- fi
- # preserve --debug
- test "$opt_debug" = : || func_append preserve_args " --debug"
+ # save modified positional parameters for caller
+ func_quote_for_eval ${1+"$@"}
+ libtool_parse_options_result=$func_quote_for_eval_result
+}
+func_add_hook func_parse_options libtool_parse_options
- case $host in
- *cygwin* | *mingw* | *pw32* | *cegcc*)
- # don't eliminate duplications in $postdeps and $predeps
- opt_duplicate_compiler_generated_deps=:
- ;;
- *)
- opt_duplicate_compiler_generated_deps=$opt_preserve_dup_deps
- ;;
- esac
- $opt_help || {
- # Sanity checks first:
- func_check_version_match
- if test "$build_libtool_libs" != yes && test "$build_old_libs" != yes; then
- func_fatal_configuration "not configured to build any kind of library"
+# libtool_validate_options [ARG]...
+# ---------------------------------
+# Perform any sanity checks on option settings and/or unconsumed
+# arguments.
+libtool_validate_options ()
+{
+ # save first non-option argument
+ if test 0 -lt $#; then
+ nonopt=$1
+ shift
fi
- # Darwin sucks
- eval std_shrext=\"$shrext_cmds\"
+ # preserve --debug
+ test : = "$debug_cmd" || func_append preserve_args " --debug"
- # Only execute mode is allowed to have -dlopen flags.
- if test -n "$opt_dlopen" && test "$opt_mode" != execute; then
- func_error "unrecognized option \`-dlopen'"
- $ECHO "$help" 1>&2
- exit $EXIT_FAILURE
- fi
+ case $host in
+ *cygwin* | *mingw* | *pw32* | *cegcc*)
+ # don't eliminate duplications in $postdeps and $predeps
+ opt_duplicate_compiler_generated_deps=:
+ ;;
+ *)
+ opt_duplicate_compiler_generated_deps=$opt_preserve_dup_deps
+ ;;
+ esac
- # Change the help message to a mode-specific one.
- generic_help="$help"
- help="Try \`$progname --help --mode=$opt_mode' for more information."
- }
+ $opt_help || {
+ # Sanity checks first:
+ func_check_version_match
+
+ test yes != "$build_libtool_libs" \
+ && test yes != "$build_old_libs" \
+ && func_fatal_configuration "not configured to build any kind of library"
+
+ # Darwin sucks
+ eval std_shrext=\"$shrext_cmds\"
+ # Only execute mode is allowed to have -dlopen flags.
+ if test -n "$opt_dlopen" && test execute != "$opt_mode"; then
+ func_error "unrecognized option '-dlopen'"
+ $ECHO "$help" 1>&2
+ exit $EXIT_FAILURE
+ fi
+
+ # Change the help message to a mode-specific one.
+ generic_help=$help
+ help="Try '$progname --help --mode=$opt_mode' for more information."
+ }
- # Bail if the options were screwed
- $exit_cmd $EXIT_FAILURE
+ # Pass back the unparsed argument list
+ func_quote_for_eval ${1+"$@"}
+ libtool_validate_options_result=$func_quote_for_eval_result
}
+func_add_hook func_validate_options libtool_validate_options
+
+# Process options as early as possible so that --help and --version
+# can return quickly.
+func_options ${1+"$@"}
+eval set dummy "$func_options_result"; shift
@@ -1224,8 +2365,29 @@ func_enable_tag "$optarg"
## Main. ##
## ----------- ##
+magic='%%%MAGIC variable%%%'
+magic_exe='%%%MAGIC EXE variable%%%'
+
+# Global variables.
+extracted_archives=
+extracted_serial=0
+
+# If this variable is set in any of the actions, the command in it
+# will be execed at the end. This prevents here-documents from being
+# left over by shells.
+exec_cmd=
+
+
+# A function that is used when there is no print builtin or printf.
+func_fallback_echo ()
+{
+ eval 'cat <<_LTECHO_EOF
+$1
+_LTECHO_EOF'
+}
+
# func_lalib_p file
-# True iff FILE is a libtool `.la' library or `.lo' object file.
+# True iff FILE is a libtool '.la' library or '.lo' object file.
# This function is only a basic sanity check; it will hardly flush out
# determined imposters.
func_lalib_p ()
@@ -1236,12 +2398,12 @@ func_lalib_p ()
}
# func_lalib_unsafe_p file
-# True iff FILE is a libtool `.la' library or `.lo' object file.
+# True iff FILE is a libtool '.la' library or '.lo' object file.
# This function implements the same check as func_lalib_p without
# resorting to external programs. To this end, it redirects stdin and
# closes it afterwards, without saving the original file descriptor.
# As a safety measure, use it only where a negative result would be
-# fatal anyway. Works if `file' does not exist.
+# fatal anyway. Works if 'file' does not exist.
func_lalib_unsafe_p ()
{
lalib_p=no
@@ -1249,13 +2411,13 @@ func_lalib_unsafe_p ()
for lalib_p_l in 1 2 3 4
do
read lalib_p_line
- case "$lalib_p_line" in
+ case $lalib_p_line in
\#\ Generated\ by\ *$PACKAGE* ) lalib_p=yes; break;;
esac
done
exec 0<&5 5<&-
fi
- test "$lalib_p" = yes
+ test yes = "$lalib_p"
}
# func_ltwrapper_script_p file
@@ -1289,7 +2451,7 @@ func_ltwrapper_scriptname ()
{
func_dirname_and_basename "$1" "" "."
func_stripname '' '.exe' "$func_basename_result"
- func_ltwrapper_scriptname_result="$func_dirname_result/$objdir/${func_stripname_result}_ltshwrapper"
+ func_ltwrapper_scriptname_result=$func_dirname_result/$objdir/${func_stripname_result}_ltshwrapper
}
# func_ltwrapper_p file
@@ -1308,11 +2470,13 @@ func_ltwrapper_p ()
# FAIL_CMD may read-access the current command in variable CMD!
func_execute_cmds ()
{
- $opt_debug
+ $debug_cmd
+
save_ifs=$IFS; IFS='~'
for cmd in $1; do
- IFS=$save_ifs
+ IFS=$sp$nl
eval cmd=\"$cmd\"
+ IFS=$save_ifs
func_show_eval "$cmd" "${2-:}"
done
IFS=$save_ifs
@@ -1324,10 +2488,11 @@ func_execute_cmds ()
# Note that it is not necessary on cygwin/mingw to append a dot to
# FILE even if both FILE and FILE.exe exist: automatic-append-.exe
# behavior happens only for exec(3), not for open(2)! Also, sourcing
-# `FILE.' does not work on cygwin managed mounts.
+# 'FILE.' does not work on cygwin managed mounts.
func_source ()
{
- $opt_debug
+ $debug_cmd
+
case $1 in
*/* | *\\*) . "$1" ;;
*) . "./$1" ;;
@@ -1354,10 +2519,10 @@ func_resolve_sysroot ()
# store the result into func_replace_sysroot_result.
func_replace_sysroot ()
{
- case "$lt_sysroot:$1" in
+ case $lt_sysroot:$1 in
?*:"$lt_sysroot"*)
func_stripname "$lt_sysroot" '' "$1"
- func_replace_sysroot_result="=$func_stripname_result"
+ func_replace_sysroot_result='='$func_stripname_result
;;
*)
# Including no sysroot.
@@ -1374,7 +2539,8 @@ func_replace_sysroot ()
# arg is usually of the form 'gcc ...'
func_infer_tag ()
{
- $opt_debug
+ $debug_cmd
+
if test -n "$available_tags" && test -z "$tagname"; then
CC_quoted=
for arg in $CC; do
@@ -1393,7 +2559,7 @@ func_infer_tag ()
for z in $available_tags; do
if $GREP "^# ### BEGIN LIBTOOL TAG CONFIG: $z$" < "$progpath" > /dev/null; then
# Evaluate the configuration.
- eval "`${SED} -n -e '/^# ### BEGIN LIBTOOL TAG CONFIG: '$z'$/,/^# ### END LIBTOOL TAG CONFIG: '$z'$/p' < $progpath`"
+ eval "`$SED -n -e '/^# ### BEGIN LIBTOOL TAG CONFIG: '$z'$/,/^# ### END LIBTOOL TAG CONFIG: '$z'$/p' < $progpath`"
CC_quoted=
for arg in $CC; do
# Double-quote args containing other shell metacharacters.
@@ -1418,7 +2584,7 @@ func_infer_tag ()
# line option must be used.
if test -z "$tagname"; then
func_echo "unable to infer tagged configuration"
- func_fatal_error "specify a tag with \`--tag'"
+ func_fatal_error "specify a tag with '--tag'"
# else
# func_verbose "using $tagname tagged configuration"
fi
@@ -1434,15 +2600,15 @@ func_infer_tag ()
# but don't create it if we're doing a dry run.
func_write_libtool_object ()
{
- write_libobj=${1}
- if test "$build_libtool_libs" = yes; then
- write_lobj=\'${2}\'
+ write_libobj=$1
+ if test yes = "$build_libtool_libs"; then
+ write_lobj=\'$2\'
else
write_lobj=none
fi
- if test "$build_old_libs" = yes; then
- write_oldobj=\'${3}\'
+ if test yes = "$build_old_libs"; then
+ write_oldobj=\'$3\'
else
write_oldobj=none
fi
@@ -1450,7 +2616,7 @@ func_write_libtool_object ()
$opt_dry_run || {
cat >${write_libobj}T <<EOF
# $write_libobj - a libtool object file
-# Generated by $PROGRAM (GNU $PACKAGE$TIMESTAMP) $VERSION
+# Generated by $PROGRAM (GNU $PACKAGE) $VERSION
#
# Please DO NOT delete this file!
# It is necessary for linking the library.
@@ -1462,7 +2628,7 @@ pic_object=$write_lobj
non_pic_object=$write_oldobj
EOF
- $MV "${write_libobj}T" "${write_libobj}"
+ $MV "${write_libobj}T" "$write_libobj"
}
}
@@ -1482,8 +2648,9 @@ EOF
# be empty on error (or when ARG is empty)
func_convert_core_file_wine_to_w32 ()
{
- $opt_debug
- func_convert_core_file_wine_to_w32_result="$1"
+ $debug_cmd
+
+ func_convert_core_file_wine_to_w32_result=$1
if test -n "$1"; then
# Unfortunately, winepath does not exit with a non-zero error code, so we
# are forced to check the contents of stdout. On the other hand, if the
@@ -1491,9 +2658,9 @@ func_convert_core_file_wine_to_w32 ()
# *an error message* to stdout. So we must check for both error code of
# zero AND non-empty stdout, which explains the odd construction:
func_convert_core_file_wine_to_w32_tmp=`winepath -w "$1" 2>/dev/null`
- if test "$?" -eq 0 && test -n "${func_convert_core_file_wine_to_w32_tmp}"; then
+ if test "$?" -eq 0 && test -n "$func_convert_core_file_wine_to_w32_tmp"; then
func_convert_core_file_wine_to_w32_result=`$ECHO "$func_convert_core_file_wine_to_w32_tmp" |
- $SED -e "$lt_sed_naive_backslashify"`
+ $SED -e "$sed_naive_backslashify"`
else
func_convert_core_file_wine_to_w32_result=
fi
@@ -1514,18 +2681,19 @@ func_convert_core_file_wine_to_w32 ()
# are convertible, then the result may be empty.
func_convert_core_path_wine_to_w32 ()
{
- $opt_debug
+ $debug_cmd
+
# unfortunately, winepath doesn't convert paths, only file names
- func_convert_core_path_wine_to_w32_result=""
+ func_convert_core_path_wine_to_w32_result=
if test -n "$1"; then
oldIFS=$IFS
IFS=:
for func_convert_core_path_wine_to_w32_f in $1; do
IFS=$oldIFS
func_convert_core_file_wine_to_w32 "$func_convert_core_path_wine_to_w32_f"
- if test -n "$func_convert_core_file_wine_to_w32_result" ; then
+ if test -n "$func_convert_core_file_wine_to_w32_result"; then
if test -z "$func_convert_core_path_wine_to_w32_result"; then
- func_convert_core_path_wine_to_w32_result="$func_convert_core_file_wine_to_w32_result"
+ func_convert_core_path_wine_to_w32_result=$func_convert_core_file_wine_to_w32_result
else
func_append func_convert_core_path_wine_to_w32_result ";$func_convert_core_file_wine_to_w32_result"
fi
@@ -1554,7 +2722,8 @@ func_convert_core_path_wine_to_w32 ()
# environment variable; do not put it in $PATH.
func_cygpath ()
{
- $opt_debug
+ $debug_cmd
+
if test -n "$LT_CYGPATH" && test -f "$LT_CYGPATH"; then
func_cygpath_result=`$LT_CYGPATH "$@" 2>/dev/null`
if test "$?" -ne 0; then
@@ -1563,7 +2732,7 @@ func_cygpath ()
fi
else
func_cygpath_result=
- func_error "LT_CYGPATH is empty or specifies non-existent file: \`$LT_CYGPATH'"
+ func_error "LT_CYGPATH is empty or specifies non-existent file: '$LT_CYGPATH'"
fi
}
#end: func_cygpath
@@ -1574,10 +2743,11 @@ func_cygpath ()
# result in func_convert_core_msys_to_w32_result.
func_convert_core_msys_to_w32 ()
{
- $opt_debug
+ $debug_cmd
+
# awkward: cmd appends spaces to result
func_convert_core_msys_to_w32_result=`( cmd //c echo "$1" ) 2>/dev/null |
- $SED -e 's/[ ]*$//' -e "$lt_sed_naive_backslashify"`
+ $SED -e 's/[ ]*$//' -e "$sed_naive_backslashify"`
}
#end: func_convert_core_msys_to_w32
@@ -1588,13 +2758,14 @@ func_convert_core_msys_to_w32 ()
# func_to_host_file_result to ARG1).
func_convert_file_check ()
{
- $opt_debug
- if test -z "$2" && test -n "$1" ; then
+ $debug_cmd
+
+ if test -z "$2" && test -n "$1"; then
func_error "Could not determine host file name corresponding to"
- func_error " \`$1'"
+ func_error " '$1'"
func_error "Continuing, but uninstalled executables may not work."
# Fallback:
- func_to_host_file_result="$1"
+ func_to_host_file_result=$1
fi
}
# end func_convert_file_check
@@ -1606,10 +2777,11 @@ func_convert_file_check ()
# func_to_host_file_result to a simplistic fallback value (see below).
func_convert_path_check ()
{
- $opt_debug
+ $debug_cmd
+
if test -z "$4" && test -n "$3"; then
func_error "Could not determine the host path corresponding to"
- func_error " \`$3'"
+ func_error " '$3'"
func_error "Continuing, but uninstalled executables may not work."
# Fallback. This is a deliberately simplistic "conversion" and
# should not be "improved". See libtool.info.
@@ -1618,7 +2790,7 @@ func_convert_path_check ()
func_to_host_path_result=`echo "$3" |
$SED -e "$lt_replace_pathsep_chars"`
else
- func_to_host_path_result="$3"
+ func_to_host_path_result=$3
fi
fi
}
@@ -1630,9 +2802,10 @@ func_convert_path_check ()
# and appending REPL if ORIG matches BACKPAT.
func_convert_path_front_back_pathsep ()
{
- $opt_debug
+ $debug_cmd
+
case $4 in
- $1 ) func_to_host_path_result="$3$func_to_host_path_result"
+ $1 ) func_to_host_path_result=$3$func_to_host_path_result
;;
esac
case $4 in
@@ -1646,7 +2819,7 @@ func_convert_path_front_back_pathsep ()
##################################################
# $build to $host FILE NAME CONVERSION FUNCTIONS #
##################################################
-# invoked via `$to_host_file_cmd ARG'
+# invoked via '$to_host_file_cmd ARG'
#
# In each case, ARG is the path to be converted from $build to $host format.
# Result will be available in $func_to_host_file_result.
@@ -1657,7 +2830,8 @@ func_convert_path_front_back_pathsep ()
# in func_to_host_file_result.
func_to_host_file ()
{
- $opt_debug
+ $debug_cmd
+
$to_host_file_cmd "$1"
}
# end func_to_host_file
@@ -1669,7 +2843,8 @@ func_to_host_file ()
# in (the comma separated) LAZY, no conversion takes place.
func_to_tool_file ()
{
- $opt_debug
+ $debug_cmd
+
case ,$2, in
*,"$to_tool_file_cmd",*)
func_to_tool_file_result=$1
@@ -1687,7 +2862,7 @@ func_to_tool_file ()
# Copy ARG to func_to_host_file_result.
func_convert_file_noop ()
{
- func_to_host_file_result="$1"
+ func_to_host_file_result=$1
}
# end func_convert_file_noop
@@ -1698,11 +2873,12 @@ func_convert_file_noop ()
# func_to_host_file_result.
func_convert_file_msys_to_w32 ()
{
- $opt_debug
- func_to_host_file_result="$1"
+ $debug_cmd
+
+ func_to_host_file_result=$1
if test -n "$1"; then
func_convert_core_msys_to_w32 "$1"
- func_to_host_file_result="$func_convert_core_msys_to_w32_result"
+ func_to_host_file_result=$func_convert_core_msys_to_w32_result
fi
func_convert_file_check "$1" "$func_to_host_file_result"
}
@@ -1714,8 +2890,9 @@ func_convert_file_msys_to_w32 ()
# func_to_host_file_result.
func_convert_file_cygwin_to_w32 ()
{
- $opt_debug
- func_to_host_file_result="$1"
+ $debug_cmd
+
+ func_to_host_file_result=$1
if test -n "$1"; then
# because $build is cygwin, we call "the" cygpath in $PATH; no need to use
# LT_CYGPATH in this case.
@@ -1731,11 +2908,12 @@ func_convert_file_cygwin_to_w32 ()
# and a working winepath. Returns result in func_to_host_file_result.
func_convert_file_nix_to_w32 ()
{
- $opt_debug
- func_to_host_file_result="$1"
+ $debug_cmd
+
+ func_to_host_file_result=$1
if test -n "$1"; then
func_convert_core_file_wine_to_w32 "$1"
- func_to_host_file_result="$func_convert_core_file_wine_to_w32_result"
+ func_to_host_file_result=$func_convert_core_file_wine_to_w32_result
fi
func_convert_file_check "$1" "$func_to_host_file_result"
}
@@ -1747,12 +2925,13 @@ func_convert_file_nix_to_w32 ()
# Returns result in func_to_host_file_result.
func_convert_file_msys_to_cygwin ()
{
- $opt_debug
- func_to_host_file_result="$1"
+ $debug_cmd
+
+ func_to_host_file_result=$1
if test -n "$1"; then
func_convert_core_msys_to_w32 "$1"
func_cygpath -u "$func_convert_core_msys_to_w32_result"
- func_to_host_file_result="$func_cygpath_result"
+ func_to_host_file_result=$func_cygpath_result
fi
func_convert_file_check "$1" "$func_to_host_file_result"
}
@@ -1765,13 +2944,14 @@ func_convert_file_msys_to_cygwin ()
# in func_to_host_file_result.
func_convert_file_nix_to_cygwin ()
{
- $opt_debug
- func_to_host_file_result="$1"
+ $debug_cmd
+
+ func_to_host_file_result=$1
if test -n "$1"; then
# convert from *nix to w32, then use cygpath to convert from w32 to cygwin.
func_convert_core_file_wine_to_w32 "$1"
func_cygpath -u "$func_convert_core_file_wine_to_w32_result"
- func_to_host_file_result="$func_cygpath_result"
+ func_to_host_file_result=$func_cygpath_result
fi
func_convert_file_check "$1" "$func_to_host_file_result"
}
@@ -1781,7 +2961,7 @@ func_convert_file_nix_to_cygwin ()
#############################################
# $build to $host PATH CONVERSION FUNCTIONS #
#############################################
-# invoked via `$to_host_path_cmd ARG'
+# invoked via '$to_host_path_cmd ARG'
#
# In each case, ARG is the path to be converted from $build to $host format.
# The result will be available in $func_to_host_path_result.
@@ -1805,10 +2985,11 @@ func_convert_file_nix_to_cygwin ()
to_host_path_cmd=
func_init_to_host_path_cmd ()
{
- $opt_debug
+ $debug_cmd
+
if test -z "$to_host_path_cmd"; then
func_stripname 'func_convert_file_' '' "$to_host_file_cmd"
- to_host_path_cmd="func_convert_path_${func_stripname_result}"
+ to_host_path_cmd=func_convert_path_$func_stripname_result
fi
}
@@ -1818,7 +2999,8 @@ func_init_to_host_path_cmd ()
# in func_to_host_path_result.
func_to_host_path ()
{
- $opt_debug
+ $debug_cmd
+
func_init_to_host_path_cmd
$to_host_path_cmd "$1"
}
@@ -1829,7 +3011,7 @@ func_to_host_path ()
# Copy ARG to func_to_host_path_result.
func_convert_path_noop ()
{
- func_to_host_path_result="$1"
+ func_to_host_path_result=$1
}
# end func_convert_path_noop
@@ -1840,8 +3022,9 @@ func_convert_path_noop ()
# func_to_host_path_result.
func_convert_path_msys_to_w32 ()
{
- $opt_debug
- func_to_host_path_result="$1"
+ $debug_cmd
+
+ func_to_host_path_result=$1
if test -n "$1"; then
# Remove leading and trailing path separator characters from ARG. MSYS
# behavior is inconsistent here; cygpath turns them into '.;' and ';.';
@@ -1849,7 +3032,7 @@ func_convert_path_msys_to_w32 ()
func_stripname : : "$1"
func_to_host_path_tmp1=$func_stripname_result
func_convert_core_msys_to_w32 "$func_to_host_path_tmp1"
- func_to_host_path_result="$func_convert_core_msys_to_w32_result"
+ func_to_host_path_result=$func_convert_core_msys_to_w32_result
func_convert_path_check : ";" \
"$func_to_host_path_tmp1" "$func_to_host_path_result"
func_convert_path_front_back_pathsep ":*" "*:" ";" "$1"
@@ -1863,8 +3046,9 @@ func_convert_path_msys_to_w32 ()
# func_to_host_file_result.
func_convert_path_cygwin_to_w32 ()
{
- $opt_debug
- func_to_host_path_result="$1"
+ $debug_cmd
+
+ func_to_host_path_result=$1
if test -n "$1"; then
# See func_convert_path_msys_to_w32:
func_stripname : : "$1"
@@ -1883,14 +3067,15 @@ func_convert_path_cygwin_to_w32 ()
# a working winepath. Returns result in func_to_host_file_result.
func_convert_path_nix_to_w32 ()
{
- $opt_debug
- func_to_host_path_result="$1"
+ $debug_cmd
+
+ func_to_host_path_result=$1
if test -n "$1"; then
# See func_convert_path_msys_to_w32:
func_stripname : : "$1"
func_to_host_path_tmp1=$func_stripname_result
func_convert_core_path_wine_to_w32 "$func_to_host_path_tmp1"
- func_to_host_path_result="$func_convert_core_path_wine_to_w32_result"
+ func_to_host_path_result=$func_convert_core_path_wine_to_w32_result
func_convert_path_check : ";" \
"$func_to_host_path_tmp1" "$func_to_host_path_result"
func_convert_path_front_back_pathsep ":*" "*:" ";" "$1"
@@ -1904,15 +3089,16 @@ func_convert_path_nix_to_w32 ()
# Returns result in func_to_host_file_result.
func_convert_path_msys_to_cygwin ()
{
- $opt_debug
- func_to_host_path_result="$1"
+ $debug_cmd
+
+ func_to_host_path_result=$1
if test -n "$1"; then
# See func_convert_path_msys_to_w32:
func_stripname : : "$1"
func_to_host_path_tmp1=$func_stripname_result
func_convert_core_msys_to_w32 "$func_to_host_path_tmp1"
func_cygpath -u -p "$func_convert_core_msys_to_w32_result"
- func_to_host_path_result="$func_cygpath_result"
+ func_to_host_path_result=$func_cygpath_result
func_convert_path_check : : \
"$func_to_host_path_tmp1" "$func_to_host_path_result"
func_convert_path_front_back_pathsep ":*" "*:" : "$1"
@@ -1927,8 +3113,9 @@ func_convert_path_msys_to_cygwin ()
# func_to_host_file_result.
func_convert_path_nix_to_cygwin ()
{
- $opt_debug
- func_to_host_path_result="$1"
+ $debug_cmd
+
+ func_to_host_path_result=$1
if test -n "$1"; then
# Remove leading and trailing path separator characters from
# ARG. msys behavior is inconsistent here, cygpath turns them
@@ -1937,7 +3124,7 @@ func_convert_path_nix_to_cygwin ()
func_to_host_path_tmp1=$func_stripname_result
func_convert_core_path_wine_to_w32 "$func_to_host_path_tmp1"
func_cygpath -u -p "$func_convert_core_path_wine_to_w32_result"
- func_to_host_path_result="$func_cygpath_result"
+ func_to_host_path_result=$func_cygpath_result
func_convert_path_check : : \
"$func_to_host_path_tmp1" "$func_to_host_path_result"
func_convert_path_front_back_pathsep ":*" "*:" : "$1"
@@ -1946,13 +3133,31 @@ func_convert_path_nix_to_cygwin ()
# end func_convert_path_nix_to_cygwin
+# func_dll_def_p FILE
+# True iff FILE is a Windows DLL '.def' file.
+# Keep in sync with _LT_DLL_DEF_P in libtool.m4
+func_dll_def_p ()
+{
+ $debug_cmd
+
+ func_dll_def_p_tmp=`$SED -n \
+ -e 's/^[ ]*//' \
+ -e '/^\(;.*\)*$/d' \
+ -e 's/^\(EXPORTS\|LIBRARY\)\([ ].*\)*$/DEF/p' \
+ -e q \
+ "$1"`
+ test DEF = "$func_dll_def_p_tmp"
+}
+
+
# func_mode_compile arg...
func_mode_compile ()
{
- $opt_debug
+ $debug_cmd
+
# Get the compilation command and the source file.
base_compile=
- srcfile="$nonopt" # always keep a non-empty value in "srcfile"
+ srcfile=$nonopt # always keep a non-empty value in "srcfile"
suppress_opt=yes
suppress_output=
arg_mode=normal
@@ -1965,12 +3170,12 @@ func_mode_compile ()
case $arg_mode in
arg )
# do not "continue". Instead, add this to base_compile
- lastarg="$arg"
+ lastarg=$arg
arg_mode=normal
;;
target )
- libobj="$arg"
+ libobj=$arg
arg_mode=normal
continue
;;
@@ -1980,7 +3185,7 @@ func_mode_compile ()
case $arg in
-o)
test -n "$libobj" && \
- func_fatal_error "you cannot specify \`-o' more than once"
+ func_fatal_error "you cannot specify '-o' more than once"
arg_mode=target
continue
;;
@@ -2009,12 +3214,12 @@ func_mode_compile ()
func_stripname '-Wc,' '' "$arg"
args=$func_stripname_result
lastarg=
- save_ifs="$IFS"; IFS=','
+ save_ifs=$IFS; IFS=,
for arg in $args; do
- IFS="$save_ifs"
+ IFS=$save_ifs
func_append_quoted lastarg "$arg"
done
- IFS="$save_ifs"
+ IFS=$save_ifs
func_stripname ' ' '' "$lastarg"
lastarg=$func_stripname_result
@@ -2027,8 +3232,8 @@ func_mode_compile ()
# Accept the current argument as the source file.
# The previous "srcfile" becomes the current argument.
#
- lastarg="$srcfile"
- srcfile="$arg"
+ lastarg=$srcfile
+ srcfile=$arg
;;
esac # case $arg
;;
@@ -2043,13 +3248,13 @@ func_mode_compile ()
func_fatal_error "you must specify an argument for -Xcompile"
;;
target)
- func_fatal_error "you must specify a target with \`-o'"
+ func_fatal_error "you must specify a target with '-o'"
;;
*)
# Get the name of the library object.
test -z "$libobj" && {
func_basename "$srcfile"
- libobj="$func_basename_result"
+ libobj=$func_basename_result
}
;;
esac
@@ -2069,7 +3274,7 @@ func_mode_compile ()
case $libobj in
*.lo) func_lo2o "$libobj"; obj=$func_lo2o_result ;;
*)
- func_fatal_error "cannot determine name of library object from \`$libobj'"
+ func_fatal_error "cannot determine name of library object from '$libobj'"
;;
esac
@@ -2078,8 +3283,8 @@ func_mode_compile ()
for arg in $later; do
case $arg in
-shared)
- test "$build_libtool_libs" != yes && \
- func_fatal_configuration "can not build a shared library"
+ test yes = "$build_libtool_libs" \
+ || func_fatal_configuration "cannot build a shared library"
build_old_libs=no
continue
;;
@@ -2105,17 +3310,17 @@ func_mode_compile ()
func_quote_for_eval "$libobj"
test "X$libobj" != "X$func_quote_for_eval_result" \
&& $ECHO "X$libobj" | $GREP '[]~#^*{};<>?"'"'"' &()|`$[]' \
- && func_warning "libobj name \`$libobj' may not contain shell special characters."
+ && func_warning "libobj name '$libobj' may not contain shell special characters."
func_dirname_and_basename "$obj" "/" ""
- objname="$func_basename_result"
- xdir="$func_dirname_result"
- lobj=${xdir}$objdir/$objname
+ objname=$func_basename_result
+ xdir=$func_dirname_result
+ lobj=$xdir$objdir/$objname
test -z "$base_compile" && \
func_fatal_help "you must specify a compilation command"
# Delete any leftover library objects.
- if test "$build_old_libs" = yes; then
+ if test yes = "$build_old_libs"; then
removelist="$obj $lobj $libobj ${libobj}T"
else
removelist="$lobj $libobj ${libobj}T"
@@ -2127,16 +3332,16 @@ func_mode_compile ()
pic_mode=default
;;
esac
- if test "$pic_mode" = no && test "$deplibs_check_method" != pass_all; then
+ if test no = "$pic_mode" && test pass_all != "$deplibs_check_method"; then
# non-PIC code in shared libraries is not supported
pic_mode=default
fi
# Calculate the filename of the output object if compiler does
# not support -o with -c
- if test "$compiler_c_o" = no; then
- output_obj=`$ECHO "$srcfile" | $SED 's%^.*/%%; s%\.[^.]*$%%'`.${objext}
- lockfile="$output_obj.lock"
+ if test no = "$compiler_c_o"; then
+ output_obj=`$ECHO "$srcfile" | $SED 's%^.*/%%; s%\.[^.]*$%%'`.$objext
+ lockfile=$output_obj.lock
else
output_obj=
need_locks=no
@@ -2145,12 +3350,12 @@ func_mode_compile ()
# Lock this critical section if it is needed
# We use this script file to make the link, it avoids creating a new file
- if test "$need_locks" = yes; then
+ if test yes = "$need_locks"; then
until $opt_dry_run || ln "$progpath" "$lockfile" 2>/dev/null; do
func_echo "Waiting for $lockfile to be removed"
sleep 2
done
- elif test "$need_locks" = warn; then
+ elif test warn = "$need_locks"; then
if test -f "$lockfile"; then
$ECHO "\
*** ERROR, $lockfile exists and contains:
@@ -2158,7 +3363,7 @@ func_mode_compile ()
This indicates that another process is trying to use the same
temporary object file, and libtool could not work around it because
-your compiler does not support \`-c' and \`-o' together. If you
+your compiler does not support '-c' and '-o' together. If you
repeat this compilation, it may succeed, by chance, but you had better
avoid parallel builds (make -j) in this platform, or get a better
compiler."
@@ -2180,11 +3385,11 @@ compiler."
qsrcfile=$func_quote_for_eval_result
# Only build a PIC object if we are building libtool libraries.
- if test "$build_libtool_libs" = yes; then
+ if test yes = "$build_libtool_libs"; then
# Without this assignment, base_compile gets emptied.
fbsd_hideous_sh_bug=$base_compile
- if test "$pic_mode" != no; then
+ if test no != "$pic_mode"; then
command="$base_compile $qsrcfile $pic_flag"
else
# Don't build PIC code
@@ -2201,7 +3406,7 @@ compiler."
func_show_eval_locale "$command" \
'test -n "$output_obj" && $RM $removelist; exit $EXIT_FAILURE'
- if test "$need_locks" = warn &&
+ if test warn = "$need_locks" &&
test "X`cat $lockfile 2>/dev/null`" != "X$srcfile"; then
$ECHO "\
*** ERROR, $lockfile contains:
@@ -2212,7 +3417,7 @@ $srcfile
This indicates that another process is trying to use the same
temporary object file, and libtool could not work around it because
-your compiler does not support \`-c' and \`-o' together. If you
+your compiler does not support '-c' and '-o' together. If you
repeat this compilation, it may succeed, by chance, but you had better
avoid parallel builds (make -j) in this platform, or get a better
compiler."
@@ -2228,20 +3433,20 @@ compiler."
fi
# Allow error messages only from the first compilation.
- if test "$suppress_opt" = yes; then
+ if test yes = "$suppress_opt"; then
suppress_output=' >/dev/null 2>&1'
fi
fi
# Only build a position-dependent object if we build old libraries.
- if test "$build_old_libs" = yes; then
- if test "$pic_mode" != yes; then
+ if test yes = "$build_old_libs"; then
+ if test yes != "$pic_mode"; then
# Don't build PIC code
command="$base_compile $qsrcfile$pie_flag"
else
command="$base_compile $qsrcfile $pic_flag"
fi
- if test "$compiler_c_o" = yes; then
+ if test yes = "$compiler_c_o"; then
func_append command " -o $obj"
fi
@@ -2250,7 +3455,7 @@ compiler."
func_show_eval_locale "$command" \
'$opt_dry_run || $RM $removelist; exit $EXIT_FAILURE'
- if test "$need_locks" = warn &&
+ if test warn = "$need_locks" &&
test "X`cat $lockfile 2>/dev/null`" != "X$srcfile"; then
$ECHO "\
*** ERROR, $lockfile contains:
@@ -2261,7 +3466,7 @@ $srcfile
This indicates that another process is trying to use the same
temporary object file, and libtool could not work around it because
-your compiler does not support \`-c' and \`-o' together. If you
+your compiler does not support '-c' and '-o' together. If you
repeat this compilation, it may succeed, by chance, but you had better
avoid parallel builds (make -j) in this platform, or get a better
compiler."
@@ -2281,7 +3486,7 @@ compiler."
func_write_libtool_object "$libobj" "$objdir/$objname" "$objname"
# Unlock the critical section if it was locked
- if test "$need_locks" != no; then
+ if test no != "$need_locks"; then
removelist=$lockfile
$RM "$lockfile"
fi
@@ -2291,7 +3496,7 @@ compiler."
}
$opt_help || {
- test "$opt_mode" = compile && func_mode_compile ${1+"$@"}
+ test compile = "$opt_mode" && func_mode_compile ${1+"$@"}
}
func_mode_help ()
@@ -2311,7 +3516,7 @@ func_mode_help ()
Remove files from the build directory.
RM is the name of the program to use to delete files associated with each FILE
-(typically \`/bin/rm'). RM-OPTIONS are options (such as \`-f') to be passed
+(typically '/bin/rm'). RM-OPTIONS are options (such as '-f') to be passed
to RM.
If FILE is a libtool library, object or program, all the files associated
@@ -2330,16 +3535,16 @@ This mode accepts the following additional options:
-no-suppress do not suppress compiler output for multiple passes
-prefer-pic try to build PIC objects only
-prefer-non-pic try to build non-PIC objects only
- -shared do not build a \`.o' file suitable for static linking
- -static only build a \`.o' file suitable for static linking
+ -shared do not build a '.o' file suitable for static linking
+ -static only build a '.o' file suitable for static linking
-Wc,FLAG pass FLAG directly to the compiler
-COMPILE-COMMAND is a command to be used in creating a \`standard' object file
+COMPILE-COMMAND is a command to be used in creating a 'standard' object file
from the given SOURCEFILE.
The output file name is determined by removing the directory component from
-SOURCEFILE, then substituting the C source code suffix \`.c' with the
-library object suffix, \`.lo'."
+SOURCEFILE, then substituting the C source code suffix '.c' with the
+library object suffix, '.lo'."
;;
execute)
@@ -2352,7 +3557,7 @@ This mode accepts the following additional options:
-dlopen FILE add the directory containing FILE to the library path
-This mode sets the library path environment variable according to \`-dlopen'
+This mode sets the library path environment variable according to '-dlopen'
flags.
If any of the ARGS are libtool executable wrappers, then they are translated
@@ -2371,7 +3576,7 @@ Complete the installation of libtool libraries.
Each LIBDIR is a directory that contains libtool libraries.
The commands that this mode executes may require superuser privileges. Use
-the \`--dry-run' option if you just want to see what would be executed."
+the '--dry-run' option if you just want to see what would be executed."
;;
install)
@@ -2381,7 +3586,7 @@ the \`--dry-run' option if you just want to see what would be executed."
Install executables or libraries.
INSTALL-COMMAND is the installation command. The first component should be
-either the \`install' or \`cp' program.
+either the 'install' or 'cp' program.
The following components of INSTALL-COMMAND are treated specially:
@@ -2407,7 +3612,7 @@ The following components of LINK-COMMAND are treated specially:
-avoid-version do not add a version suffix if possible
-bindir BINDIR specify path to binaries directory (for systems where
libraries must be found in the PATH setting at runtime)
- -dlopen FILE \`-dlpreopen' FILE if it cannot be dlopened at runtime
+ -dlopen FILE '-dlpreopen' FILE if it cannot be dlopened at runtime
-dlpreopen FILE link in FILE and add its symbols to lt_preloaded_symbols
-export-dynamic allow symbols from OUTPUT-FILE to be resolved with dlsym(3)
-export-symbols SYMFILE
@@ -2441,20 +3646,20 @@ The following components of LINK-COMMAND are treated specially:
-Xlinker FLAG pass linker-specific FLAG directly to the linker
-XCClinker FLAG pass link-specific FLAG to the compiler driver (CC)
-All other options (arguments beginning with \`-') are ignored.
+All other options (arguments beginning with '-') are ignored.
-Every other argument is treated as a filename. Files ending in \`.la' are
+Every other argument is treated as a filename. Files ending in '.la' are
treated as uninstalled libtool libraries, other files are standard or library
object files.
-If the OUTPUT-FILE ends in \`.la', then a libtool library is created,
-only library objects (\`.lo' files) may be specified, and \`-rpath' is
+If the OUTPUT-FILE ends in '.la', then a libtool library is created,
+only library objects ('.lo' files) may be specified, and '-rpath' is
required, except when creating a convenience library.
-If OUTPUT-FILE ends in \`.a' or \`.lib', then a standard library is created
-using \`ar' and \`ranlib', or on Windows using \`lib'.
+If OUTPUT-FILE ends in '.a' or '.lib', then a standard library is created
+using 'ar' and 'ranlib', or on Windows using 'lib'.
-If OUTPUT-FILE ends in \`.lo' or \`.${objext}', then a reloadable object file
+If OUTPUT-FILE ends in '.lo' or '.$objext', then a reloadable object file
is created, otherwise an executable program is created."
;;
@@ -2465,7 +3670,7 @@ is created, otherwise an executable program is created."
Remove libraries from an installation directory.
RM is the name of the program to use to delete files associated with each FILE
-(typically \`/bin/rm'). RM-OPTIONS are options (such as \`-f') to be passed
+(typically '/bin/rm'). RM-OPTIONS are options (such as '-f') to be passed
to RM.
If FILE is a libtool library, all the files associated with it are deleted.
@@ -2473,17 +3678,17 @@ Otherwise, only FILE itself is deleted using RM."
;;
*)
- func_fatal_help "invalid operation mode \`$opt_mode'"
+ func_fatal_help "invalid operation mode '$opt_mode'"
;;
esac
echo
- $ECHO "Try \`$progname --help' for more information about other modes."
+ $ECHO "Try '$progname --help' for more information about other modes."
}
# Now that we've collected a possible --mode arg, show help if necessary
if $opt_help; then
- if test "$opt_help" = :; then
+ if test : = "$opt_help"; then
func_mode_help
else
{
@@ -2516,16 +3721,17 @@ fi
# func_mode_execute arg...
func_mode_execute ()
{
- $opt_debug
+ $debug_cmd
+
# The first argument is the command name.
- cmd="$nonopt"
+ cmd=$nonopt
test -z "$cmd" && \
func_fatal_help "you must specify a COMMAND"
# Handle -dlopen flags immediately.
for file in $opt_dlopen; do
test -f "$file" \
- || func_fatal_help "\`$file' is not a file"
+ || func_fatal_help "'$file' is not a file"
dir=
case $file in
@@ -2535,7 +3741,7 @@ func_mode_execute ()
# Check to see that this really is a libtool archive.
func_lalib_unsafe_p "$file" \
- || func_fatal_help "\`$lib' is not a valid libtool archive"
+ || func_fatal_help "'$lib' is not a valid libtool archive"
# Read the libtool library.
dlname=
@@ -2546,18 +3752,18 @@ func_mode_execute ()
if test -z "$dlname"; then
# Warn if it was a shared library.
test -n "$library_names" && \
- func_warning "\`$file' was not linked with \`-export-dynamic'"
+ func_warning "'$file' was not linked with '-export-dynamic'"
continue
fi
func_dirname "$file" "" "."
- dir="$func_dirname_result"
+ dir=$func_dirname_result
if test -f "$dir/$objdir/$dlname"; then
func_append dir "/$objdir"
else
if test ! -f "$dir/$dlname"; then
- func_fatal_error "cannot find \`$dlname' in \`$dir' or \`$dir/$objdir'"
+ func_fatal_error "cannot find '$dlname' in '$dir' or '$dir/$objdir'"
fi
fi
;;
@@ -2565,18 +3771,18 @@ func_mode_execute ()
*.lo)
# Just add the directory containing the .lo file.
func_dirname "$file" "" "."
- dir="$func_dirname_result"
+ dir=$func_dirname_result
;;
*)
- func_warning "\`-dlopen' is ignored for non-libtool libraries and objects"
+ func_warning "'-dlopen' is ignored for non-libtool libraries and objects"
continue
;;
esac
# Get the absolute pathname.
absdir=`cd "$dir" && pwd`
- test -n "$absdir" && dir="$absdir"
+ test -n "$absdir" && dir=$absdir
# Now add the directory to shlibpath_var.
if eval "test -z \"\$$shlibpath_var\""; then
@@ -2588,7 +3794,7 @@ func_mode_execute ()
# This variable tells wrapper scripts just to set shlibpath_var
# rather than running their programs.
- libtool_execute_magic="$magic"
+ libtool_execute_magic=$magic
# Check if any of the arguments is a wrapper script.
args=
@@ -2601,12 +3807,12 @@ func_mode_execute ()
if func_ltwrapper_script_p "$file"; then
func_source "$file"
# Transform arg to wrapped name.
- file="$progdir/$program"
+ file=$progdir/$program
elif func_ltwrapper_executable_p "$file"; then
func_ltwrapper_scriptname "$file"
func_source "$func_ltwrapper_scriptname_result"
# Transform arg to wrapped name.
- file="$progdir/$program"
+ file=$progdir/$program
fi
;;
esac
@@ -2614,7 +3820,15 @@ func_mode_execute ()
func_append_quoted args "$file"
done
- if test "X$opt_dry_run" = Xfalse; then
+ if $opt_dry_run; then
+ # Display what would be done.
+ if test -n "$shlibpath_var"; then
+ eval "\$ECHO \"\$shlibpath_var=\$$shlibpath_var\""
+ echo "export $shlibpath_var"
+ fi
+ $ECHO "$cmd$args"
+ exit $EXIT_SUCCESS
+ else
if test -n "$shlibpath_var"; then
# Export the shlibpath_var.
eval "export $shlibpath_var"
@@ -2631,25 +3845,18 @@ func_mode_execute ()
done
# Now prepare to actually exec the command.
- exec_cmd="\$cmd$args"
- else
- # Display what would be done.
- if test -n "$shlibpath_var"; then
- eval "\$ECHO \"\$shlibpath_var=\$$shlibpath_var\""
- echo "export $shlibpath_var"
- fi
- $ECHO "$cmd$args"
- exit $EXIT_SUCCESS
+ exec_cmd=\$cmd$args
fi
}
-test "$opt_mode" = execute && func_mode_execute ${1+"$@"}
+test execute = "$opt_mode" && func_mode_execute ${1+"$@"}
# func_mode_finish arg...
func_mode_finish ()
{
- $opt_debug
+ $debug_cmd
+
libs=
libdirs=
admincmds=
@@ -2663,11 +3870,11 @@ func_mode_finish ()
if func_lalib_unsafe_p "$opt"; then
func_append libs " $opt"
else
- func_warning "\`$opt' is not a valid libtool archive"
+ func_warning "'$opt' is not a valid libtool archive"
fi
else
- func_fatal_error "invalid argument \`$opt'"
+ func_fatal_error "invalid argument '$opt'"
fi
done
@@ -2682,12 +3889,12 @@ func_mode_finish ()
# Remove sysroot references
if $opt_dry_run; then
for lib in $libs; do
- echo "removing references to $lt_sysroot and \`=' prefixes from $lib"
+ echo "removing references to $lt_sysroot and '=' prefixes from $lib"
done
else
tmpdir=`func_mktempdir`
for lib in $libs; do
- sed -e "${sysroot_cmd} s/\([ ']-[LR]\)=/\1/g; s/\([ ']\)=/\1/g" $lib \
+ sed -e "$sysroot_cmd s/\([ ']-[LR]\)=/\1/g; s/\([ ']\)=/\1/g" $lib \
> $tmpdir/tmp-la
mv -f $tmpdir/tmp-la $lib
done
@@ -2712,7 +3919,7 @@ func_mode_finish ()
fi
# Exit here if they wanted silent mode.
- $opt_silent && exit $EXIT_SUCCESS
+ $opt_quiet && exit $EXIT_SUCCESS
if test -n "$finish_cmds$finish_eval" && test -n "$libdirs"; then
echo "----------------------------------------------------------------------"
@@ -2723,27 +3930,27 @@ func_mode_finish ()
echo
echo "If you ever happen to want to link against installed libraries"
echo "in a given directory, LIBDIR, you must either use libtool, and"
- echo "specify the full pathname of the library, or use the \`-LLIBDIR'"
+ echo "specify the full pathname of the library, or use the '-LLIBDIR'"
echo "flag during linking and do at least one of the following:"
if test -n "$shlibpath_var"; then
- echo " - add LIBDIR to the \`$shlibpath_var' environment variable"
+ echo " - add LIBDIR to the '$shlibpath_var' environment variable"
echo " during execution"
fi
if test -n "$runpath_var"; then
- echo " - add LIBDIR to the \`$runpath_var' environment variable"
+ echo " - add LIBDIR to the '$runpath_var' environment variable"
echo " during linking"
fi
if test -n "$hardcode_libdir_flag_spec"; then
libdir=LIBDIR
eval flag=\"$hardcode_libdir_flag_spec\"
- $ECHO " - use the \`$flag' linker flag"
+ $ECHO " - use the '$flag' linker flag"
fi
if test -n "$admincmds"; then
$ECHO " - have your system administrator run these commands:$admincmds"
fi
if test -f /etc/ld.so.conf; then
- echo " - have your system administrator add LIBDIR to \`/etc/ld.so.conf'"
+ echo " - have your system administrator add LIBDIR to '/etc/ld.so.conf'"
fi
echo
@@ -2762,18 +3969,20 @@ func_mode_finish ()
exit $EXIT_SUCCESS
}
-test "$opt_mode" = finish && func_mode_finish ${1+"$@"}
+test finish = "$opt_mode" && func_mode_finish ${1+"$@"}
# func_mode_install arg...
func_mode_install ()
{
- $opt_debug
+ $debug_cmd
+
# There may be an optional sh(1) argument at the beginning of
# install_prog (especially on Windows NT).
- if test "$nonopt" = "$SHELL" || test "$nonopt" = /bin/sh ||
+ if test "$SHELL" = "$nonopt" || test /bin/sh = "$nonopt" ||
# Allow the use of GNU shtool's install command.
- case $nonopt in *shtool*) :;; *) false;; esac; then
+ case $nonopt in *shtool*) :;; *) false;; esac
+ then
# Aesthetically quote it.
func_quote_for_eval "$nonopt"
install_prog="$func_quote_for_eval_result "
@@ -2800,7 +4009,7 @@ func_mode_install ()
opts=
prev=
install_type=
- isdir=no
+ isdir=false
stripme=
no_mode=:
for arg
@@ -2813,7 +4022,7 @@ func_mode_install ()
fi
case $arg in
- -d) isdir=yes ;;
+ -d) isdir=: ;;
-f)
if $install_cp; then :; else
prev=$arg
@@ -2831,7 +4040,7 @@ func_mode_install ()
*)
# If the previous option needed an argument, then skip it.
if test -n "$prev"; then
- if test "x$prev" = x-m && test -n "$install_override_mode"; then
+ if test X-m = "X$prev" && test -n "$install_override_mode"; then
arg2=$install_override_mode
no_mode=false
fi
@@ -2856,7 +4065,7 @@ func_mode_install ()
func_fatal_help "you must specify an install program"
test -n "$prev" && \
- func_fatal_help "the \`$prev' option requires an argument"
+ func_fatal_help "the '$prev' option requires an argument"
if test -n "$install_override_mode" && $no_mode; then
if $install_cp; then :; else
@@ -2878,19 +4087,19 @@ func_mode_install ()
dest=$func_stripname_result
# Check to see that the destination is a directory.
- test -d "$dest" && isdir=yes
- if test "$isdir" = yes; then
- destdir="$dest"
+ test -d "$dest" && isdir=:
+ if $isdir; then
+ destdir=$dest
destname=
else
func_dirname_and_basename "$dest" "" "."
- destdir="$func_dirname_result"
- destname="$func_basename_result"
+ destdir=$func_dirname_result
+ destname=$func_basename_result
# Not a directory, so check to see that there is only one file specified.
set dummy $files; shift
test "$#" -gt 1 && \
- func_fatal_help "\`$dest' is not a directory"
+ func_fatal_help "'$dest' is not a directory"
fi
case $destdir in
[\\/]* | [A-Za-z]:[\\/]*) ;;
@@ -2899,7 +4108,7 @@ func_mode_install ()
case $file in
*.lo) ;;
*)
- func_fatal_help "\`$destdir' must be an absolute directory name"
+ func_fatal_help "'$destdir' must be an absolute directory name"
;;
esac
done
@@ -2908,7 +4117,7 @@ func_mode_install ()
# This variable tells wrapper scripts just to set variables rather
# than running their programs.
- libtool_install_magic="$magic"
+ libtool_install_magic=$magic
staticlibs=
future_libdirs=
@@ -2928,7 +4137,7 @@ func_mode_install ()
# Check to see that this really is a libtool archive.
func_lalib_unsafe_p "$file" \
- || func_fatal_help "\`$file' is not a valid libtool archive"
+ || func_fatal_help "'$file' is not a valid libtool archive"
library_names=
old_library=
@@ -2950,7 +4159,7 @@ func_mode_install ()
fi
func_dirname "$file" "/" ""
- dir="$func_dirname_result"
+ dir=$func_dirname_result
func_append dir "$objdir"
if test -n "$relink_command"; then
@@ -2964,7 +4173,7 @@ func_mode_install ()
# are installed into $libdir/../bin (currently, that works fine)
# but it's something to keep an eye on.
test "$inst_prefix_dir" = "$destdir" && \
- func_fatal_error "error: cannot install \`$file' to a directory not ending in $libdir"
+ func_fatal_error "error: cannot install '$file' to a directory not ending in $libdir"
if test -n "$inst_prefix_dir"; then
# Stick the inst_prefix_dir data into the link command.
@@ -2973,29 +4182,29 @@ func_mode_install ()
relink_command=`$ECHO "$relink_command" | $SED "s%@inst_prefix_dir@%%"`
fi
- func_warning "relinking \`$file'"
+ func_warning "relinking '$file'"
func_show_eval "$relink_command" \
- 'func_fatal_error "error: relink \`$file'\'' with the above command before installing it"'
+ 'func_fatal_error "error: relink '\''$file'\'' with the above command before installing it"'
fi
# See the names of the shared library.
set dummy $library_names; shift
if test -n "$1"; then
- realname="$1"
+ realname=$1
shift
- srcname="$realname"
- test -n "$relink_command" && srcname="$realname"T
+ srcname=$realname
+ test -n "$relink_command" && srcname=${realname}T
# Install the shared library and build the symlinks.
func_show_eval "$install_shared_prog $dir/$srcname $destdir/$realname" \
'exit $?'
- tstripme="$stripme"
+ tstripme=$stripme
case $host_os in
cygwin* | mingw* | pw32* | cegcc*)
case $realname in
*.dll.a)
- tstripme=""
+ tstripme=
;;
esac
;;
@@ -3006,7 +4215,7 @@ func_mode_install ()
if test "$#" -gt 0; then
# Delete the old symlinks, and create new ones.
- # Try `ln -sf' first, because the `ln' binary might depend on
+ # Try 'ln -sf' first, because the 'ln' binary might depend on
# the symlink we replace! Solaris /bin/ln does not understand -f,
# so we also need to try rm && ln -s.
for linkname
@@ -3017,14 +4226,14 @@ func_mode_install ()
fi
# Do each command in the postinstall commands.
- lib="$destdir/$realname"
+ lib=$destdir/$realname
func_execute_cmds "$postinstall_cmds" 'exit $?'
fi
# Install the pseudo-library for information purposes.
func_basename "$file"
- name="$func_basename_result"
- instname="$dir/$name"i
+ name=$func_basename_result
+ instname=$dir/${name}i
func_show_eval "$install_prog $instname $destdir/$name" 'exit $?'
# Maybe install the static library, too.
@@ -3036,11 +4245,11 @@ func_mode_install ()
# Figure out destination file name, if it wasn't already specified.
if test -n "$destname"; then
- destfile="$destdir/$destname"
+ destfile=$destdir/$destname
else
func_basename "$file"
- destfile="$func_basename_result"
- destfile="$destdir/$destfile"
+ destfile=$func_basename_result
+ destfile=$destdir/$destfile
fi
# Deduce the name of the destination old-style object file.
@@ -3050,11 +4259,11 @@ func_mode_install ()
staticdest=$func_lo2o_result
;;
*.$objext)
- staticdest="$destfile"
+ staticdest=$destfile
destfile=
;;
*)
- func_fatal_help "cannot copy a libtool object to \`$destfile'"
+ func_fatal_help "cannot copy a libtool object to '$destfile'"
;;
esac
@@ -3063,7 +4272,7 @@ func_mode_install ()
func_show_eval "$install_prog $file $destfile" 'exit $?'
# Install the old object if enabled.
- if test "$build_old_libs" = yes; then
+ if test yes = "$build_old_libs"; then
# Deduce the name of the old-style object file.
func_lo2o "$file"
staticobj=$func_lo2o_result
@@ -3075,23 +4284,23 @@ func_mode_install ()
*)
# Figure out destination file name, if it wasn't already specified.
if test -n "$destname"; then
- destfile="$destdir/$destname"
+ destfile=$destdir/$destname
else
func_basename "$file"
- destfile="$func_basename_result"
- destfile="$destdir/$destfile"
+ destfile=$func_basename_result
+ destfile=$destdir/$destfile
fi
# If the file is missing, and there is a .exe on the end, strip it
# because it is most likely a libtool script we actually want to
# install
- stripped_ext=""
+ stripped_ext=
case $file in
*.exe)
if test ! -f "$file"; then
func_stripname '' '.exe' "$file"
file=$func_stripname_result
- stripped_ext=".exe"
+ stripped_ext=.exe
fi
;;
esac
@@ -3119,19 +4328,19 @@ func_mode_install ()
# Check the variables that should have been set.
test -z "$generated_by_libtool_version" && \
- func_fatal_error "invalid libtool wrapper script \`$wrapper'"
+ func_fatal_error "invalid libtool wrapper script '$wrapper'"
- finalize=yes
+ finalize=:
for lib in $notinst_deplibs; do
# Check to see that each library is installed.
libdir=
if test -f "$lib"; then
func_source "$lib"
fi
- libfile="$libdir/"`$ECHO "$lib" | $SED 's%^.*/%%g'` ### testsuite: skip nested quoting test
+ libfile=$libdir/`$ECHO "$lib" | $SED 's%^.*/%%g'`
if test -n "$libdir" && test ! -f "$libfile"; then
- func_warning "\`$lib' has not been installed in \`$libdir'"
- finalize=no
+ func_warning "'$lib' has not been installed in '$libdir'"
+ finalize=false
fi
done
@@ -3139,29 +4348,29 @@ func_mode_install ()
func_source "$wrapper"
outputname=
- if test "$fast_install" = no && test -n "$relink_command"; then
+ if test no = "$fast_install" && test -n "$relink_command"; then
$opt_dry_run || {
- if test "$finalize" = yes; then
+ if $finalize; then
tmpdir=`func_mktempdir`
func_basename "$file$stripped_ext"
- file="$func_basename_result"
- outputname="$tmpdir/$file"
+ file=$func_basename_result
+ outputname=$tmpdir/$file
# Replace the output file specification.
relink_command=`$ECHO "$relink_command" | $SED 's%@OUTPUT@%'"$outputname"'%g'`
- $opt_silent || {
+ $opt_quiet || {
func_quote_for_expand "$relink_command"
eval "func_echo $func_quote_for_expand_result"
}
if eval "$relink_command"; then :
else
- func_error "error: relink \`$file' with the above command before installing it"
+ func_error "error: relink '$file' with the above command before installing it"
$opt_dry_run || ${RM}r "$tmpdir"
continue
fi
- file="$outputname"
+ file=$outputname
else
- func_warning "cannot relink \`$file'"
+ func_warning "cannot relink '$file'"
fi
}
else
@@ -3198,10 +4407,10 @@ func_mode_install ()
for file in $staticlibs; do
func_basename "$file"
- name="$func_basename_result"
+ name=$func_basename_result
# Set up the ranlib parameters.
- oldlib="$destdir/$name"
+ oldlib=$destdir/$name
func_to_tool_file "$oldlib" func_convert_file_msys_to_w32
tool_oldlib=$func_to_tool_file_result
@@ -3216,18 +4425,18 @@ func_mode_install ()
done
test -n "$future_libdirs" && \
- func_warning "remember to run \`$progname --finish$future_libdirs'"
+ func_warning "remember to run '$progname --finish$future_libdirs'"
if test -n "$current_libdirs"; then
# Maybe just do a dry run.
$opt_dry_run && current_libdirs=" -n$current_libdirs"
- exec_cmd='$SHELL $progpath $preserve_args --finish$current_libdirs'
+ exec_cmd='$SHELL "$progpath" $preserve_args --finish$current_libdirs'
else
exit $EXIT_SUCCESS
fi
}
-test "$opt_mode" = install && func_mode_install ${1+"$@"}
+test install = "$opt_mode" && func_mode_install ${1+"$@"}
# func_generate_dlsyms outputname originator pic_p
@@ -3235,16 +4444,17 @@ test "$opt_mode" = install && func_mode_install ${1+"$@"}
# a dlpreopen symbol table.
func_generate_dlsyms ()
{
- $opt_debug
- my_outputname="$1"
- my_originator="$2"
- my_pic_p="${3-no}"
+ $debug_cmd
+
+ my_outputname=$1
+ my_originator=$2
+ my_pic_p=${3-false}
my_prefix=`$ECHO "$my_originator" | sed 's%[^a-zA-Z0-9]%_%g'`
my_dlsyms=
- if test -n "$dlfiles$dlprefiles" || test "$dlself" != no; then
+ if test -n "$dlfiles$dlprefiles" || test no != "$dlself"; then
if test -n "$NM" && test -n "$global_symbol_pipe"; then
- my_dlsyms="${my_outputname}S.c"
+ my_dlsyms=${my_outputname}S.c
else
func_error "not configured to extract global symbols from dlpreopened files"
fi
@@ -3255,7 +4465,7 @@ func_generate_dlsyms ()
"") ;;
*.c)
# Discover the nlist of each of the dlfiles.
- nlist="$output_objdir/${my_outputname}.nm"
+ nlist=$output_objdir/$my_outputname.nm
func_show_eval "$RM $nlist ${nlist}S ${nlist}T"
@@ -3263,34 +4473,36 @@ func_generate_dlsyms ()
func_verbose "creating $output_objdir/$my_dlsyms"
$opt_dry_run || $ECHO > "$output_objdir/$my_dlsyms" "\
-/* $my_dlsyms - symbol resolution table for \`$my_outputname' dlsym emulation. */
-/* Generated by $PROGRAM (GNU $PACKAGE$TIMESTAMP) $VERSION */
+/* $my_dlsyms - symbol resolution table for '$my_outputname' dlsym emulation. */
+/* Generated by $PROGRAM (GNU $PACKAGE) $VERSION */
#ifdef __cplusplus
extern \"C\" {
#endif
-#if defined(__GNUC__) && (((__GNUC__ == 4) && (__GNUC_MINOR__ >= 4)) || (__GNUC__ > 4))
+#if defined __GNUC__ && (((__GNUC__ == 4) && (__GNUC_MINOR__ >= 4)) || (__GNUC__ > 4))
#pragma GCC diagnostic ignored \"-Wstrict-prototypes\"
#endif
/* Keep this code in sync between libtool.m4, ltmain, lt_system.h, and tests. */
-#if defined(_WIN32) || defined(__CYGWIN__) || defined(_WIN32_WCE)
-/* DATA imports from DLLs on WIN32 con't be const, because runtime
+#if defined _WIN32 || defined __CYGWIN__ || defined _WIN32_WCE
+/* DATA imports from DLLs on WIN32 can't be const, because runtime
relocations are performed -- see ld's documentation on pseudo-relocs. */
# define LT_DLSYM_CONST
-#elif defined(__osf__)
+#elif defined __osf__
/* This system does not cope well with relocations in const data. */
# define LT_DLSYM_CONST
#else
# define LT_DLSYM_CONST const
#endif
+#define STREQ(s1, s2) (strcmp ((s1), (s2)) == 0)
+
/* External symbol declarations for the compiler. */\
"
- if test "$dlself" = yes; then
- func_verbose "generating symbol list for \`$output'"
+ if test yes = "$dlself"; then
+ func_verbose "generating symbol list for '$output'"
$opt_dry_run || echo ': @PROGRAM@ ' > "$nlist"
@@ -3298,7 +4510,7 @@ extern \"C\" {
progfiles=`$ECHO "$objs$old_deplibs" | $SP2NL | $SED "$lo2o" | $NL2SP`
for progfile in $progfiles; do
func_to_tool_file "$progfile" func_convert_file_msys_to_w32
- func_verbose "extracting global C symbols from \`$func_to_tool_file_result'"
+ func_verbose "extracting global C symbols from '$func_to_tool_file_result'"
$opt_dry_run || eval "$NM $func_to_tool_file_result | $global_symbol_pipe >> '$nlist'"
done
@@ -3318,10 +4530,10 @@ extern \"C\" {
# Prepare the list of exported symbols
if test -z "$export_symbols"; then
- export_symbols="$output_objdir/$outputname.exp"
+ export_symbols=$output_objdir/$outputname.exp
$opt_dry_run || {
$RM $export_symbols
- eval "${SED} -n -e '/^: @PROGRAM@ $/d' -e 's/^.* \(.*\)$/\1/p' "'< "$nlist" > "$export_symbols"'
+ eval "$SED -n -e '/^: @PROGRAM@ $/d' -e 's/^.* \(.*\)$/\1/p' "'< "$nlist" > "$export_symbols"'
case $host in
*cygwin* | *mingw* | *cegcc* )
eval "echo EXPORTS "'> "$output_objdir/$outputname.def"'
@@ -3331,7 +4543,7 @@ extern \"C\" {
}
else
$opt_dry_run || {
- eval "${SED} -e 's/\([].[*^$]\)/\\\\\1/g' -e 's/^/ /' -e 's/$/$/'"' < "$export_symbols" > "$output_objdir/$outputname.exp"'
+ eval "$SED -e 's/\([].[*^$]\)/\\\\\1/g' -e 's/^/ /' -e 's/$/$/'"' < "$export_symbols" > "$output_objdir/$outputname.exp"'
eval '$GREP -f "$output_objdir/$outputname.exp" < "$nlist" > "$nlist"T'
eval '$MV "$nlist"T "$nlist"'
case $host in
@@ -3345,22 +4557,22 @@ extern \"C\" {
fi
for dlprefile in $dlprefiles; do
- func_verbose "extracting global C symbols from \`$dlprefile'"
+ func_verbose "extracting global C symbols from '$dlprefile'"
func_basename "$dlprefile"
- name="$func_basename_result"
+ name=$func_basename_result
case $host in
*cygwin* | *mingw* | *cegcc* )
# if an import library, we need to obtain dlname
if func_win32_import_lib_p "$dlprefile"; then
func_tr_sh "$dlprefile"
eval "curr_lafile=\$libfile_$func_tr_sh_result"
- dlprefile_dlbasename=""
+ dlprefile_dlbasename=
if test -n "$curr_lafile" && func_lalib_p "$curr_lafile"; then
# Use subshell, to avoid clobbering current variable values
dlprefile_dlname=`source "$curr_lafile" && echo "$dlname"`
- if test -n "$dlprefile_dlname" ; then
+ if test -n "$dlprefile_dlname"; then
func_basename "$dlprefile_dlname"
- dlprefile_dlbasename="$func_basename_result"
+ dlprefile_dlbasename=$func_basename_result
else
# no lafile. user explicitly requested -dlpreopen <import library>.
$sharedlib_from_linklib_cmd "$dlprefile"
@@ -3368,7 +4580,7 @@ extern \"C\" {
fi
fi
$opt_dry_run || {
- if test -n "$dlprefile_dlbasename" ; then
+ if test -n "$dlprefile_dlbasename"; then
eval '$ECHO ": $dlprefile_dlbasename" >> "$nlist"'
else
func_warning "Could not compute DLL name from $name"
@@ -3424,6 +4636,11 @@ extern \"C\" {
echo '/* NONE */' >> "$output_objdir/$my_dlsyms"
fi
+ func_show_eval '$RM "${nlist}I"'
+ if test -n "$global_symbol_to_import"; then
+ eval "$global_symbol_to_import"' < "$nlist"S > "$nlist"I'
+ fi
+
echo >> "$output_objdir/$my_dlsyms" "\
/* The mapping between symbol names and symbols. */
@@ -3432,11 +4649,30 @@ typedef struct {
void *address;
} lt_dlsymlist;
extern LT_DLSYM_CONST lt_dlsymlist
-lt_${my_prefix}_LTX_preloaded_symbols[];
+lt_${my_prefix}_LTX_preloaded_symbols[];\
+"
+
+ if test -s "$nlist"I; then
+ echo >> "$output_objdir/$my_dlsyms" "\
+static void lt_syminit(void)
+{
+ LT_DLSYM_CONST lt_dlsymlist *symbol = lt_${my_prefix}_LTX_preloaded_symbols;
+ for (; symbol->name; ++symbol)
+ {"
+ $SED 's/.*/ if (STREQ (symbol->name, \"&\")) symbol->address = (void *) \&&;/' < "$nlist"I >> "$output_objdir/$my_dlsyms"
+ echo >> "$output_objdir/$my_dlsyms" "\
+ }
+}"
+ fi
+ echo >> "$output_objdir/$my_dlsyms" "\
LT_DLSYM_CONST lt_dlsymlist
lt_${my_prefix}_LTX_preloaded_symbols[] =
-{\
- { \"$my_originator\", (void *) 0 },"
+{ {\"$my_originator\", (void *) 0},"
+
+ if test -s "$nlist"I; then
+ echo >> "$output_objdir/$my_dlsyms" "\
+ {\"@INIT@\", (void *) &lt_syminit},"
+ fi
case $need_lib_prefix in
no)
@@ -3478,9 +4714,7 @@ static const void *lt_preloaded_setup() {
*-*-hpux*)
pic_flag_for_symtable=" $pic_flag" ;;
*)
- if test "X$my_pic_p" != Xno; then
- pic_flag_for_symtable=" $pic_flag"
- fi
+ $my_pic_p && pic_flag_for_symtable=" $pic_flag"
;;
esac
;;
@@ -3497,10 +4731,10 @@ static const void *lt_preloaded_setup() {
func_show_eval '(cd $output_objdir && $LTCC$symtab_cflags -c$no_builtin_flag$pic_flag_for_symtable "$my_dlsyms")' 'exit $?'
# Clean up the generated files.
- func_show_eval '$RM "$output_objdir/$my_dlsyms" "$nlist" "${nlist}S" "${nlist}T"'
+ func_show_eval '$RM "$output_objdir/$my_dlsyms" "$nlist" "${nlist}S" "${nlist}T" "${nlist}I"'
# Transform the symbol file into the correct name.
- symfileobj="$output_objdir/${my_outputname}S.$objext"
+ symfileobj=$output_objdir/${my_outputname}S.$objext
case $host in
*cygwin* | *mingw* | *cegcc* )
if test -f "$output_objdir/$my_outputname.def"; then
@@ -3518,7 +4752,7 @@ static const void *lt_preloaded_setup() {
esac
;;
*)
- func_fatal_error "unknown suffix for \`$my_dlsyms'"
+ func_fatal_error "unknown suffix for '$my_dlsyms'"
;;
esac
else
@@ -3532,6 +4766,32 @@ static const void *lt_preloaded_setup() {
fi
}
+# func_cygming_gnu_implib_p ARG
+# This predicate returns with zero status (TRUE) if
+# ARG is a GNU/binutils-style import library. Returns
+# with nonzero status (FALSE) otherwise.
+func_cygming_gnu_implib_p ()
+{
+ $debug_cmd
+
+ func_to_tool_file "$1" func_convert_file_msys_to_w32
+ func_cygming_gnu_implib_tmp=`$NM "$func_to_tool_file_result" | eval "$global_symbol_pipe" | $EGREP ' (_head_[A-Za-z0-9_]+_[ad]l*|[A-Za-z0-9_]+_[ad]l*_iname)$'`
+ test -n "$func_cygming_gnu_implib_tmp"
+}
+
+# func_cygming_ms_implib_p ARG
+# This predicate returns with zero status (TRUE) if
+# ARG is an MS-style import library. Returns
+# with nonzero status (FALSE) otherwise.
+func_cygming_ms_implib_p ()
+{
+ $debug_cmd
+
+ func_to_tool_file "$1" func_convert_file_msys_to_w32
+ func_cygming_ms_implib_tmp=`$NM "$func_to_tool_file_result" | eval "$global_symbol_pipe" | $GREP '_NULL_IMPORT_DESCRIPTOR'`
+ test -n "$func_cygming_ms_implib_tmp"
+}
+
# func_win32_libid arg
# return the library type of file 'arg'
#
@@ -3541,8 +4801,9 @@ static const void *lt_preloaded_setup() {
# Despite the name, also deal with 64 bit binaries.
func_win32_libid ()
{
- $opt_debug
- win32_libid_type="unknown"
+ $debug_cmd
+
+ win32_libid_type=unknown
win32_fileres=`file -L $1 2>/dev/null`
case $win32_fileres in
*ar\ archive\ import\ library*) # definitely import
@@ -3552,16 +4813,29 @@ func_win32_libid ()
# Keep the egrep pattern in sync with the one in _LT_CHECK_MAGIC_METHOD.
if eval $OBJDUMP -f $1 | $SED -e '10q' 2>/dev/null |
$EGREP 'file format (pei*-i386(.*architecture: i386)?|pe-arm-wince|pe-x86-64)' >/dev/null; then
- func_to_tool_file "$1" func_convert_file_msys_to_w32
- win32_nmres=`eval $NM -f posix -A \"$func_to_tool_file_result\" |
- $SED -n -e '
+ case $nm_interface in
+ "MS dumpbin")
+ if func_cygming_ms_implib_p "$1" ||
+ func_cygming_gnu_implib_p "$1"
+ then
+ win32_nmres=import
+ else
+ win32_nmres=
+ fi
+ ;;
+ *)
+ func_to_tool_file "$1" func_convert_file_msys_to_w32
+ win32_nmres=`eval $NM -f posix -A \"$func_to_tool_file_result\" |
+ $SED -n -e '
1,100{
/ I /{
- s,.*,import,
+ s|.*|import|
p
q
}
}'`
+ ;;
+ esac
case $win32_nmres in
import*) win32_libid_type="x86 archive import";;
*) win32_libid_type="x86 archive static";;
@@ -3593,7 +4867,8 @@ func_win32_libid ()
# $sharedlib_from_linklib_result
func_cygming_dll_for_implib ()
{
- $opt_debug
+ $debug_cmd
+
sharedlib_from_linklib_result=`$DLLTOOL --identify-strict --identify "$1"`
}
@@ -3610,7 +4885,8 @@ func_cygming_dll_for_implib ()
# specified import library.
func_cygming_dll_for_implib_fallback_core ()
{
- $opt_debug
+ $debug_cmd
+
match_literal=`$ECHO "$1" | $SED "$sed_make_literal_regex"`
$OBJDUMP -s --section "$1" "$2" 2>/dev/null |
$SED '/^Contents of section '"$match_literal"':/{
@@ -3646,8 +4922,8 @@ func_cygming_dll_for_implib_fallback_core ()
/./p' |
# we now have a list, one entry per line, of the stringified
# contents of the appropriate section of all members of the
- # archive which possess that section. Heuristic: eliminate
- # all those which have a first or second character that is
+ # archive that possess that section. Heuristic: eliminate
+ # all those that have a first or second character that is
# a '.' (that is, objdump's representation of an unprintable
# character.) This should work for all archives with less than
# 0x302f exports -- but will fail for DLLs whose name actually
@@ -3658,30 +4934,6 @@ func_cygming_dll_for_implib_fallback_core ()
$SED -e '/^\./d;/^.\./d;q'
}
-# func_cygming_gnu_implib_p ARG
-# This predicate returns with zero status (TRUE) if
-# ARG is a GNU/binutils-style import library. Returns
-# with nonzero status (FALSE) otherwise.
-func_cygming_gnu_implib_p ()
-{
- $opt_debug
- func_to_tool_file "$1" func_convert_file_msys_to_w32
- func_cygming_gnu_implib_tmp=`$NM "$func_to_tool_file_result" | eval "$global_symbol_pipe" | $EGREP ' (_head_[A-Za-z0-9_]+_[ad]l*|[A-Za-z0-9_]+_[ad]l*_iname)$'`
- test -n "$func_cygming_gnu_implib_tmp"
-}
-
-# func_cygming_ms_implib_p ARG
-# This predicate returns with zero status (TRUE) if
-# ARG is an MS-style import library. Returns
-# with nonzero status (FALSE) otherwise.
-func_cygming_ms_implib_p ()
-{
- $opt_debug
- func_to_tool_file "$1" func_convert_file_msys_to_w32
- func_cygming_ms_implib_tmp=`$NM "$func_to_tool_file_result" | eval "$global_symbol_pipe" | $GREP '_NULL_IMPORT_DESCRIPTOR'`
- test -n "$func_cygming_ms_implib_tmp"
-}
-
# func_cygming_dll_for_implib_fallback ARG
# Platform-specific function to extract the
# name of the DLL associated with the specified
@@ -3695,16 +4947,17 @@ func_cygming_ms_implib_p ()
# $sharedlib_from_linklib_result
func_cygming_dll_for_implib_fallback ()
{
- $opt_debug
- if func_cygming_gnu_implib_p "$1" ; then
+ $debug_cmd
+
+ if func_cygming_gnu_implib_p "$1"; then
# binutils import library
sharedlib_from_linklib_result=`func_cygming_dll_for_implib_fallback_core '.idata$7' "$1"`
- elif func_cygming_ms_implib_p "$1" ; then
+ elif func_cygming_ms_implib_p "$1"; then
# ms-generated import library
sharedlib_from_linklib_result=`func_cygming_dll_for_implib_fallback_core '.idata$6' "$1"`
else
# unknown
- sharedlib_from_linklib_result=""
+ sharedlib_from_linklib_result=
fi
}
@@ -3712,10 +4965,11 @@ func_cygming_dll_for_implib_fallback ()
# func_extract_an_archive dir oldlib
func_extract_an_archive ()
{
- $opt_debug
- f_ex_an_ar_dir="$1"; shift
- f_ex_an_ar_oldlib="$1"
- if test "$lock_old_archive_extraction" = yes; then
+ $debug_cmd
+
+ f_ex_an_ar_dir=$1; shift
+ f_ex_an_ar_oldlib=$1
+ if test yes = "$lock_old_archive_extraction"; then
lockfile=$f_ex_an_ar_oldlib.lock
until $opt_dry_run || ln "$progpath" "$lockfile" 2>/dev/null; do
func_echo "Waiting for $lockfile to be removed"
@@ -3724,7 +4978,7 @@ func_extract_an_archive ()
fi
func_show_eval "(cd \$f_ex_an_ar_dir && $AR x \"\$f_ex_an_ar_oldlib\")" \
'stat=$?; rm -f "$lockfile"; exit $stat'
- if test "$lock_old_archive_extraction" = yes; then
+ if test yes = "$lock_old_archive_extraction"; then
$opt_dry_run || rm -f "$lockfile"
fi
if ($AR t "$f_ex_an_ar_oldlib" | sort | sort -uc >/dev/null 2>&1); then
@@ -3738,22 +4992,23 @@ func_extract_an_archive ()
# func_extract_archives gentop oldlib ...
func_extract_archives ()
{
- $opt_debug
- my_gentop="$1"; shift
+ $debug_cmd
+
+ my_gentop=$1; shift
my_oldlibs=${1+"$@"}
- my_oldobjs=""
- my_xlib=""
- my_xabs=""
- my_xdir=""
+ my_oldobjs=
+ my_xlib=
+ my_xabs=
+ my_xdir=
for my_xlib in $my_oldlibs; do
# Extract the objects.
case $my_xlib in
- [\\/]* | [A-Za-z]:[\\/]*) my_xabs="$my_xlib" ;;
+ [\\/]* | [A-Za-z]:[\\/]*) my_xabs=$my_xlib ;;
*) my_xabs=`pwd`"/$my_xlib" ;;
esac
func_basename "$my_xlib"
- my_xlib="$func_basename_result"
+ my_xlib=$func_basename_result
my_xlib_u=$my_xlib
while :; do
case " $extracted_archives " in
@@ -3765,7 +5020,7 @@ func_extract_archives ()
esac
done
extracted_archives="$extracted_archives $my_xlib_u"
- my_xdir="$my_gentop/$my_xlib_u"
+ my_xdir=$my_gentop/$my_xlib_u
func_mkdir_p "$my_xdir"
@@ -3778,19 +5033,20 @@ func_extract_archives ()
cd $my_xdir || exit $?
darwin_archive=$my_xabs
darwin_curdir=`pwd`
- darwin_base_archive=`basename "$darwin_archive"`
+ func_basename "$darwin_archive"
+ darwin_base_archive=$func_basename_result
darwin_arches=`$LIPO -info "$darwin_archive" 2>/dev/null | $GREP Architectures 2>/dev/null || true`
if test -n "$darwin_arches"; then
darwin_arches=`$ECHO "$darwin_arches" | $SED -e 's/.*are://'`
darwin_arch=
func_verbose "$darwin_base_archive has multiple architectures $darwin_arches"
- for darwin_arch in $darwin_arches ; do
- func_mkdir_p "unfat-$$/${darwin_base_archive}-${darwin_arch}"
- $LIPO -thin $darwin_arch -output "unfat-$$/${darwin_base_archive}-${darwin_arch}/${darwin_base_archive}" "${darwin_archive}"
- cd "unfat-$$/${darwin_base_archive}-${darwin_arch}"
- func_extract_an_archive "`pwd`" "${darwin_base_archive}"
+ for darwin_arch in $darwin_arches; do
+ func_mkdir_p "unfat-$$/$darwin_base_archive-$darwin_arch"
+ $LIPO -thin $darwin_arch -output "unfat-$$/$darwin_base_archive-$darwin_arch/$darwin_base_archive" "$darwin_archive"
+ cd "unfat-$$/$darwin_base_archive-$darwin_arch"
+ func_extract_an_archive "`pwd`" "$darwin_base_archive"
cd "$darwin_curdir"
- $RM "unfat-$$/${darwin_base_archive}-${darwin_arch}/${darwin_base_archive}"
+ $RM "unfat-$$/$darwin_base_archive-$darwin_arch/$darwin_base_archive"
done # $darwin_arches
## Okay now we've a bunch of thin objects, gotta fatten them up :)
darwin_filelist=`find unfat-$$ -type f -name \*.o -print -o -name \*.lo -print | $SED -e "$basename" | sort -u`
@@ -3815,7 +5071,7 @@ func_extract_archives ()
my_oldobjs="$my_oldobjs "`find $my_xdir -name \*.$objext -print -o -name \*.lo -print | sort | $NL2SP`
done
- func_extract_archives_result="$my_oldobjs"
+ func_extract_archives_result=$my_oldobjs
}
@@ -3830,7 +5086,7 @@ func_extract_archives ()
#
# ARG is the value that the WRAPPER_SCRIPT_BELONGS_IN_OBJDIR
# variable will take. If 'yes', then the emitted script
-# will assume that the directory in which it is stored is
+# will assume that the directory where it is stored is
# the $objdir directory. This is a cygwin/mingw-specific
# behavior.
func_emit_wrapper ()
@@ -3841,7 +5097,7 @@ func_emit_wrapper ()
#! $SHELL
# $output - temporary wrapper script for $objdir/$outputname
-# Generated by $PROGRAM (GNU $PACKAGE$TIMESTAMP) $VERSION
+# Generated by $PROGRAM (GNU $PACKAGE) $VERSION
#
# The $output program cannot be directly executed until all the libtool
# libraries that it depends on are installed.
@@ -3898,9 +5154,9 @@ _LTECHO_EOF'
# Very basic option parsing. These options are (a) specific to
# the libtool wrapper, (b) are identical between the wrapper
-# /script/ and the wrapper /executable/ which is used only on
+# /script/ and the wrapper /executable/ that is used only on
# windows platforms, and (c) all begin with the string "--lt-"
-# (application programs are unlikely to have options which match
+# (application programs are unlikely to have options that match
# this pattern).
#
# There are only two supported options: --lt-debug and
@@ -3933,7 +5189,7 @@ func_parse_lt_options ()
# Print the debug banner immediately:
if test -n \"\$lt_option_debug\"; then
- echo \"${outputname}:${output}:\${LINENO}: libtool wrapper (GNU $PACKAGE$TIMESTAMP) $VERSION\" 1>&2
+ echo \"$outputname:$output:\$LINENO: libtool wrapper (GNU $PACKAGE) $VERSION\" 1>&2
fi
}
@@ -3944,7 +5200,7 @@ func_lt_dump_args ()
lt_dump_args_N=1;
for lt_arg
do
- \$ECHO \"${outputname}:${output}:\${LINENO}: newargv[\$lt_dump_args_N]: \$lt_arg\"
+ \$ECHO \"$outputname:$output:\$LINENO: newargv[\$lt_dump_args_N]: \$lt_arg\"
lt_dump_args_N=\`expr \$lt_dump_args_N + 1\`
done
}
@@ -3958,7 +5214,7 @@ func_exec_program_core ()
*-*-mingw | *-*-os2* | *-cegcc*)
$ECHO "\
if test -n \"\$lt_option_debug\"; then
- \$ECHO \"${outputname}:${output}:\${LINENO}: newargv[0]: \$progdir\\\\\$program\" 1>&2
+ \$ECHO \"$outputname:$output:\$LINENO: newargv[0]: \$progdir\\\\\$program\" 1>&2
func_lt_dump_args \${1+\"\$@\"} 1>&2
fi
exec \"\$progdir\\\\\$program\" \${1+\"\$@\"}
@@ -3968,7 +5224,7 @@ func_exec_program_core ()
*)
$ECHO "\
if test -n \"\$lt_option_debug\"; then
- \$ECHO \"${outputname}:${output}:\${LINENO}: newargv[0]: \$progdir/\$program\" 1>&2
+ \$ECHO \"$outputname:$output:\$LINENO: newargv[0]: \$progdir/\$program\" 1>&2
func_lt_dump_args \${1+\"\$@\"} 1>&2
fi
exec \"\$progdir/\$program\" \${1+\"\$@\"}
@@ -4043,13 +5299,13 @@ func_exec_program ()
test -n \"\$absdir\" && thisdir=\"\$absdir\"
"
- if test "$fast_install" = yes; then
+ if test yes = "$fast_install"; then
$ECHO "\
program=lt-'$outputname'$exeext
progdir=\"\$thisdir/$objdir\"
if test ! -f \"\$progdir/\$program\" ||
- { file=\`ls -1dt \"\$progdir/\$program\" \"\$progdir/../\$program\" 2>/dev/null | ${SED} 1q\`; \\
+ { file=\`ls -1dt \"\$progdir/\$program\" \"\$progdir/../\$program\" 2>/dev/null | $SED 1q\`; \\
test \"X\$file\" != \"X\$progdir/\$program\"; }; then
file=\"\$\$-\$program\"
@@ -4101,7 +5357,7 @@ func_exec_program ()
fi
# Export our shlibpath_var if we have one.
- if test "$shlibpath_overrides_runpath" = yes && test -n "$shlibpath_var" && test -n "$temp_rpath"; then
+ if test yes = "$shlibpath_overrides_runpath" && test -n "$shlibpath_var" && test -n "$temp_rpath"; then
$ECHO "\
# Add our own library path to $shlibpath_var
$shlibpath_var=\"$temp_rpath\$$shlibpath_var\"
@@ -4121,7 +5377,7 @@ func_exec_program ()
fi
else
# The program doesn't exist.
- \$ECHO \"\$0: error: \\\`\$progdir/\$program' does not exist\" 1>&2
+ \$ECHO \"\$0: error: '\$progdir/\$program' does not exist\" 1>&2
\$ECHO \"This script is just a wrapper for \$program.\" 1>&2
\$ECHO \"See the $PACKAGE documentation for more information.\" 1>&2
exit 1
@@ -4140,7 +5396,7 @@ func_emit_cwrapperexe_src ()
cat <<EOF
/* $cwrappersource - temporary wrapper executable for $objdir/$outputname
- Generated by $PROGRAM (GNU $PACKAGE$TIMESTAMP) $VERSION
+ Generated by $PROGRAM (GNU $PACKAGE) $VERSION
The $output program cannot be directly executed until all the libtool
libraries that it depends on are installed.
@@ -4175,47 +5431,45 @@ EOF
#include <fcntl.h>
#include <sys/stat.h>
+#define STREQ(s1, s2) (strcmp ((s1), (s2)) == 0)
+
/* declarations of non-ANSI functions */
-#if defined(__MINGW32__)
+#if defined __MINGW32__
# ifdef __STRICT_ANSI__
int _putenv (const char *);
# endif
-#elif defined(__CYGWIN__)
+#elif defined __CYGWIN__
# ifdef __STRICT_ANSI__
char *realpath (const char *, char *);
int putenv (char *);
int setenv (const char *, const char *, int);
# endif
-/* #elif defined (other platforms) ... */
+/* #elif defined other_platform || defined ... */
#endif
/* portability defines, excluding path handling macros */
-#if defined(_MSC_VER)
+#if defined _MSC_VER
# define setmode _setmode
# define stat _stat
# define chmod _chmod
# define getcwd _getcwd
# define putenv _putenv
# define S_IXUSR _S_IEXEC
-# ifndef _INTPTR_T_DEFINED
-# define _INTPTR_T_DEFINED
-# define intptr_t int
-# endif
-#elif defined(__MINGW32__)
+#elif defined __MINGW32__
# define setmode _setmode
# define stat _stat
# define chmod _chmod
# define getcwd _getcwd
# define putenv _putenv
-#elif defined(__CYGWIN__)
+#elif defined __CYGWIN__
# define HAVE_SETENV
# define FOPEN_WB "wb"
-/* #elif defined (other platforms) ... */
+/* #elif defined other platforms ... */
#endif
-#if defined(PATH_MAX)
+#if defined PATH_MAX
# define LT_PATHMAX PATH_MAX
-#elif defined(MAXPATHLEN)
+#elif defined MAXPATHLEN
# define LT_PATHMAX MAXPATHLEN
#else
# define LT_PATHMAX 1024
@@ -4234,8 +5488,8 @@ int setenv (const char *, const char *, int);
# define PATH_SEPARATOR ':'
#endif
-#if defined (_WIN32) || defined (__MSDOS__) || defined (__DJGPP__) || \
- defined (__OS2__)
+#if defined _WIN32 || defined __MSDOS__ || defined __DJGPP__ || \
+ defined __OS2__
# define HAVE_DOS_BASED_FILE_SYSTEM
# define FOPEN_WB "wb"
# ifndef DIR_SEPARATOR_2
@@ -4268,10 +5522,10 @@ int setenv (const char *, const char *, int);
#define XMALLOC(type, num) ((type *) xmalloc ((num) * sizeof(type)))
#define XFREE(stale) do { \
- if (stale) { free ((void *) stale); stale = 0; } \
+ if (stale) { free (stale); stale = 0; } \
} while (0)
-#if defined(LT_DEBUGWRAPPER)
+#if defined LT_DEBUGWRAPPER
static int lt_debug = 1;
#else
static int lt_debug = 0;
@@ -4304,7 +5558,7 @@ volatile const char * MAGIC_EXE = "$magic_exe";
const char * LIB_PATH_VARNAME = "$shlibpath_var";
EOF
- if test "$shlibpath_overrides_runpath" = yes && test -n "$shlibpath_var" && test -n "$temp_rpath"; then
+ if test yes = "$shlibpath_overrides_runpath" && test -n "$shlibpath_var" && test -n "$temp_rpath"; then
func_to_host_path "$temp_rpath"
cat <<EOF
const char * LIB_PATH_VALUE = "$func_to_host_path_result";
@@ -4328,7 +5582,7 @@ const char * EXE_PATH_VALUE = "";
EOF
fi
- if test "$fast_install" = yes; then
+ if test yes = "$fast_install"; then
cat <<EOF
const char * TARGET_PROGRAM_NAME = "lt-$outputname"; /* hopefully, no .exe */
EOF
@@ -4357,12 +5611,12 @@ main (int argc, char *argv[])
char *actual_cwrapper_name;
char *target_name;
char *lt_argv_zero;
- intptr_t rval = 127;
+ int rval = 127;
int i;
program_name = (char *) xstrdup (base_name (argv[0]));
- newargz = XMALLOC (char *, argc + 1);
+ newargz = XMALLOC (char *, (size_t) argc + 1);
/* very simple arg parsing; don't want to rely on getopt
* also, copy all non cwrapper options to newargz, except
@@ -4371,10 +5625,10 @@ main (int argc, char *argv[])
newargc=0;
for (i = 1; i < argc; i++)
{
- if (strcmp (argv[i], dumpscript_opt) == 0)
+ if (STREQ (argv[i], dumpscript_opt))
{
EOF
- case "$host" in
+ case $host in
*mingw* | *cygwin* )
# make stdout use "unix" line endings
echo " setmode(1,_O_BINARY);"
@@ -4385,12 +5639,12 @@ EOF
lt_dump_script (stdout);
return 0;
}
- if (strcmp (argv[i], debug_opt) == 0)
+ if (STREQ (argv[i], debug_opt))
{
lt_debug = 1;
continue;
}
- if (strcmp (argv[i], ltwrapper_option_prefix) == 0)
+ if (STREQ (argv[i], ltwrapper_option_prefix))
{
/* however, if there is an option in the LTWRAPPER_OPTION_PREFIX
namespace, but it is not one of the ones we know about and
@@ -4413,7 +5667,7 @@ EOF
EOF
cat <<EOF
/* The GNU banner must be the first non-error debug message */
- lt_debugprintf (__FILE__, __LINE__, "libtool wrapper (GNU $PACKAGE$TIMESTAMP) $VERSION\n");
+ lt_debugprintf (__FILE__, __LINE__, "libtool wrapper (GNU $PACKAGE) $VERSION\n");
EOF
cat <<"EOF"
lt_debugprintf (__FILE__, __LINE__, "(main) argv[0]: %s\n", argv[0]);
@@ -4524,7 +5778,7 @@ EOF
cat <<"EOF"
/* execv doesn't actually work on mingw as expected on unix */
newargz = prepare_spawn (newargz);
- rval = _spawnv (_P_WAIT, lt_argv_zero, (const char * const *) newargz);
+ rval = (int) _spawnv (_P_WAIT, lt_argv_zero, (const char * const *) newargz);
if (rval == -1)
{
/* failed to start process */
@@ -4569,7 +5823,7 @@ base_name (const char *name)
{
const char *base;
-#if defined (HAVE_DOS_BASED_FILE_SYSTEM)
+#if defined HAVE_DOS_BASED_FILE_SYSTEM
/* Skip over the disk name in MSDOS pathnames. */
if (isalpha ((unsigned char) name[0]) && name[1] == ':')
name += 2;
@@ -4628,7 +5882,7 @@ find_executable (const char *wrapper)
const char *p_next;
/* static buffer for getcwd */
char tmp[LT_PATHMAX + 1];
- int tmp_len;
+ size_t tmp_len;
char *concat_name;
lt_debugprintf (__FILE__, __LINE__, "(find_executable): %s\n",
@@ -4638,7 +5892,7 @@ find_executable (const char *wrapper)
return NULL;
/* Absolute path? */
-#if defined (HAVE_DOS_BASED_FILE_SYSTEM)
+#if defined HAVE_DOS_BASED_FILE_SYSTEM
if (isalpha ((unsigned char) wrapper[0]) && wrapper[1] == ':')
{
concat_name = xstrdup (wrapper);
@@ -4656,7 +5910,7 @@ find_executable (const char *wrapper)
return concat_name;
XFREE (concat_name);
}
-#if defined (HAVE_DOS_BASED_FILE_SYSTEM)
+#if defined HAVE_DOS_BASED_FILE_SYSTEM
}
#endif
@@ -4679,7 +5933,7 @@ find_executable (const char *wrapper)
for (q = p; *q; q++)
if (IS_PATH_SEPARATOR (*q))
break;
- p_len = q - p;
+ p_len = (size_t) (q - p);
p_next = (*q == '\0' ? q : q + 1);
if (p_len == 0)
{
@@ -4798,7 +6052,7 @@ strendzap (char *str, const char *pat)
if (patlen <= len)
{
str += len - patlen;
- if (strcmp (str, pat) == 0)
+ if (STREQ (str, pat))
*str = '\0';
}
return str;
@@ -4863,7 +6117,7 @@ lt_setenv (const char *name, const char *value)
char *str = xstrdup (value);
setenv (name, str, 1);
#else
- int len = strlen (name) + 1 + strlen (value) + 1;
+ size_t len = strlen (name) + 1 + strlen (value) + 1;
char *str = XMALLOC (char, len);
sprintf (str, "%s=%s", name, value);
if (putenv (str) != EXIT_SUCCESS)
@@ -4880,8 +6134,8 @@ lt_extend_str (const char *orig_value, const char *add, int to_end)
char *new_value;
if (orig_value && *orig_value)
{
- int orig_value_len = strlen (orig_value);
- int add_len = strlen (add);
+ size_t orig_value_len = strlen (orig_value);
+ size_t add_len = strlen (add);
new_value = XMALLOC (char, add_len + orig_value_len + 1);
if (to_end)
{
@@ -4912,10 +6166,10 @@ lt_update_exe_path (const char *name, const char *value)
{
char *new_value = lt_extend_str (getenv (name), value, 0);
/* some systems can't cope with a ':'-terminated path #' */
- int len = strlen (new_value);
- while (((len = strlen (new_value)) > 0) && IS_PATH_SEPARATOR (new_value[len-1]))
+ size_t len = strlen (new_value);
+ while ((len > 0) && IS_PATH_SEPARATOR (new_value[len-1]))
{
- new_value[len-1] = '\0';
+ new_value[--len] = '\0';
}
lt_setenv (name, new_value);
XFREE (new_value);
@@ -5082,7 +6336,8 @@ EOF
# True if ARG is an import lib, as indicated by $file_magic_cmd
func_win32_import_lib_p ()
{
- $opt_debug
+ $debug_cmd
+
case `eval $file_magic_cmd \"\$1\" 2>/dev/null | $SED -e 10q` in
*import*) : ;;
*) false ;;
@@ -5092,17 +6347,18 @@ func_win32_import_lib_p ()
# func_mode_link arg...
func_mode_link ()
{
- $opt_debug
+ $debug_cmd
+
case $host in
*-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-cegcc*)
# It is impossible to link a dll without this setting, and
# we shouldn't force the makefile maintainer to figure out
- # which system we are compiling for in order to pass an extra
+ # what system we are compiling for in order to pass an extra
# flag for every libtool invocation.
# allow_undefined=no
# FIXME: Unfortunately, there are problems with the above when trying
- # to make a dll which has undefined symbols, in which case not
+ # to make a dll that has undefined symbols, in which case not
# even a static library is built. For now, we need to specify
# -no-undefined on the libtool link line when we can be certain
# that all symbols are satisfied, otherwise we get a static library.
@@ -5149,7 +6405,7 @@ func_mode_link ()
non_pic_objects=
precious_files_regex=
prefer_static_libs=no
- preload=no
+ preload=false
prev=
prevarg=
release=
@@ -5161,7 +6417,7 @@ func_mode_link ()
vinfo=
vinfo_number=no
weak_libs=
- single_module="${wl}-single_module"
+ single_module=$wl-single_module
func_infer_tag $base_compile
# We need to know -static, to get the right output filenames.
@@ -5169,15 +6425,15 @@ func_mode_link ()
do
case $arg in
-shared)
- test "$build_libtool_libs" != yes && \
- func_fatal_configuration "can not build a shared library"
+ test yes != "$build_libtool_libs" \
+ && func_fatal_configuration "cannot build a shared library"
build_old_libs=no
break
;;
-all-static | -static | -static-libtool-libs)
case $arg in
-all-static)
- if test "$build_libtool_libs" = yes && test -z "$link_static_flag"; then
+ if test yes = "$build_libtool_libs" && test -z "$link_static_flag"; then
func_warning "complete static linking is impossible in this configuration"
fi
if test -n "$link_static_flag"; then
@@ -5210,7 +6466,7 @@ func_mode_link ()
# Go through the arguments, transforming them on the way.
while test "$#" -gt 0; do
- arg="$1"
+ arg=$1
shift
func_quote_for_eval "$arg"
qarg=$func_quote_for_eval_unquoted_result
@@ -5227,21 +6483,21 @@ func_mode_link ()
case $prev in
bindir)
- bindir="$arg"
+ bindir=$arg
prev=
continue
;;
dlfiles|dlprefiles)
- if test "$preload" = no; then
+ $preload || {
# Add the symbol object into the linking commands.
func_append compile_command " @SYMFILE@"
func_append finalize_command " @SYMFILE@"
- preload=yes
- fi
+ preload=:
+ }
case $arg in
*.la | *.lo) ;; # We handle these cases below.
force)
- if test "$dlself" = no; then
+ if test no = "$dlself"; then
dlself=needless
export_dynamic=yes
fi
@@ -5249,9 +6505,9 @@ func_mode_link ()
continue
;;
self)
- if test "$prev" = dlprefiles; then
+ if test dlprefiles = "$prev"; then
dlself=yes
- elif test "$prev" = dlfiles && test "$dlopen_self" != yes; then
+ elif test dlfiles = "$prev" && test yes != "$dlopen_self"; then
dlself=yes
else
dlself=needless
@@ -5261,7 +6517,7 @@ func_mode_link ()
continue
;;
*)
- if test "$prev" = dlfiles; then
+ if test dlfiles = "$prev"; then
func_append dlfiles " $arg"
else
func_append dlprefiles " $arg"
@@ -5272,14 +6528,14 @@ func_mode_link ()
esac
;;
expsyms)
- export_symbols="$arg"
+ export_symbols=$arg
test -f "$arg" \
- || func_fatal_error "symbol file \`$arg' does not exist"
+ || func_fatal_error "symbol file '$arg' does not exist"
prev=
continue
;;
expsyms_regex)
- export_symbols_regex="$arg"
+ export_symbols_regex=$arg
prev=
continue
;;
@@ -5297,7 +6553,13 @@ func_mode_link ()
continue
;;
inst_prefix)
- inst_prefix_dir="$arg"
+ inst_prefix_dir=$arg
+ prev=
+ continue
+ ;;
+ mllvm)
+ # Clang does not use LLVM to link, so we can simply discard any
+ # '-mllvm $arg' options when doing the link step.
prev=
continue
;;
@@ -5321,21 +6583,21 @@ func_mode_link ()
if test -z "$pic_object" ||
test -z "$non_pic_object" ||
- test "$pic_object" = none &&
- test "$non_pic_object" = none; then
- func_fatal_error "cannot find name of object for \`$arg'"
+ test none = "$pic_object" &&
+ test none = "$non_pic_object"; then
+ func_fatal_error "cannot find name of object for '$arg'"
fi
# Extract subdirectory from the argument.
func_dirname "$arg" "/" ""
- xdir="$func_dirname_result"
+ xdir=$func_dirname_result
- if test "$pic_object" != none; then
+ if test none != "$pic_object"; then
# Prepend the subdirectory the object is found in.
- pic_object="$xdir$pic_object"
+ pic_object=$xdir$pic_object
- if test "$prev" = dlfiles; then
- if test "$build_libtool_libs" = yes && test "$dlopen_support" = yes; then
+ if test dlfiles = "$prev"; then
+ if test yes = "$build_libtool_libs" && test yes = "$dlopen_support"; then
func_append dlfiles " $pic_object"
prev=
continue
@@ -5346,7 +6608,7 @@ func_mode_link ()
fi
# CHECK ME: I think I busted this. -Ossama
- if test "$prev" = dlprefiles; then
+ if test dlprefiles = "$prev"; then
# Preload the old-style object.
func_append dlprefiles " $pic_object"
prev=
@@ -5354,23 +6616,23 @@ func_mode_link ()
# A PIC object.
func_append libobjs " $pic_object"
- arg="$pic_object"
+ arg=$pic_object
fi
# Non-PIC object.
- if test "$non_pic_object" != none; then
+ if test none != "$non_pic_object"; then
# Prepend the subdirectory the object is found in.
- non_pic_object="$xdir$non_pic_object"
+ non_pic_object=$xdir$non_pic_object
# A standard non-PIC object
func_append non_pic_objects " $non_pic_object"
- if test -z "$pic_object" || test "$pic_object" = none ; then
- arg="$non_pic_object"
+ if test -z "$pic_object" || test none = "$pic_object"; then
+ arg=$non_pic_object
fi
else
# If the PIC object exists, use it instead.
# $xdir was prepended to $pic_object above.
- non_pic_object="$pic_object"
+ non_pic_object=$pic_object
func_append non_pic_objects " $non_pic_object"
fi
else
@@ -5378,7 +6640,7 @@ func_mode_link ()
if $opt_dry_run; then
# Extract subdirectory from the argument.
func_dirname "$arg" "/" ""
- xdir="$func_dirname_result"
+ xdir=$func_dirname_result
func_lo2o "$arg"
pic_object=$xdir$objdir/$func_lo2o_result
@@ -5386,24 +6648,24 @@ func_mode_link ()
func_append libobjs " $pic_object"
func_append non_pic_objects " $non_pic_object"
else
- func_fatal_error "\`$arg' is not a valid libtool object"
+ func_fatal_error "'$arg' is not a valid libtool object"
fi
fi
done
else
- func_fatal_error "link input file \`$arg' does not exist"
+ func_fatal_error "link input file '$arg' does not exist"
fi
arg=$save_arg
prev=
continue
;;
precious_regex)
- precious_files_regex="$arg"
+ precious_files_regex=$arg
prev=
continue
;;
release)
- release="-$arg"
+ release=-$arg
prev=
continue
;;
@@ -5415,7 +6677,7 @@ func_mode_link ()
func_fatal_error "only absolute run-paths are allowed"
;;
esac
- if test "$prev" = rpath; then
+ if test rpath = "$prev"; then
case "$rpath " in
*" $arg "*) ;;
*) func_append rpath " $arg" ;;
@@ -5430,7 +6692,7 @@ func_mode_link ()
continue
;;
shrext)
- shrext_cmds="$arg"
+ shrext_cmds=$arg
prev=
continue
;;
@@ -5470,7 +6732,7 @@ func_mode_link ()
esac
fi # test -n "$prev"
- prevarg="$arg"
+ prevarg=$arg
case $arg in
-all-static)
@@ -5484,7 +6746,7 @@ func_mode_link ()
-allow-undefined)
# FIXME: remove this flag sometime in the future.
- func_fatal_error "\`-allow-undefined' must not be used because it is the default"
+ func_fatal_error "'-allow-undefined' must not be used because it is the default"
;;
-avoid-version)
@@ -5516,7 +6778,7 @@ func_mode_link ()
if test -n "$export_symbols" || test -n "$export_symbols_regex"; then
func_fatal_error "more than one -exported-symbols argument is not allowed"
fi
- if test "X$arg" = "X-export-symbols"; then
+ if test X-export-symbols = "X$arg"; then
prev=expsyms
else
prev=expsyms_regex
@@ -5550,9 +6812,9 @@ func_mode_link ()
func_stripname "-L" '' "$arg"
if test -z "$func_stripname_result"; then
if test "$#" -gt 0; then
- func_fatal_error "require no space between \`-L' and \`$1'"
+ func_fatal_error "require no space between '-L' and '$1'"
else
- func_fatal_error "need path for \`-L' option"
+ func_fatal_error "need path for '-L' option"
fi
fi
func_resolve_sysroot "$func_stripname_result"
@@ -5563,8 +6825,8 @@ func_mode_link ()
*)
absdir=`cd "$dir" && pwd`
test -z "$absdir" && \
- func_fatal_error "cannot determine absolute directory name of \`$dir'"
- dir="$absdir"
+ func_fatal_error "cannot determine absolute directory name of '$dir'"
+ dir=$absdir
;;
esac
case "$deplibs " in
@@ -5599,7 +6861,7 @@ func_mode_link ()
;;
-l*)
- if test "X$arg" = "X-lc" || test "X$arg" = "X-lm"; then
+ if test X-lc = "X$arg" || test X-lm = "X$arg"; then
case $host in
*-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-beos* | *-cegcc* | *-*-haiku*)
# These systems don't actually have a C or math library (as such)
@@ -5607,11 +6869,11 @@ func_mode_link ()
;;
*-*-os2*)
# These systems don't actually have a C library (as such)
- test "X$arg" = "X-lc" && continue
+ test X-lc = "X$arg" && continue
;;
- *-*-openbsd* | *-*-freebsd* | *-*-dragonfly*)
+ *-*-openbsd* | *-*-freebsd* | *-*-dragonfly* | *-*-bitrig*)
# Do not include libc due to us having libc/libc_r.
- test "X$arg" = "X-lc" && continue
+ test X-lc = "X$arg" && continue
;;
*-*-rhapsody* | *-*-darwin1.[012])
# Rhapsody C and math libraries are in the System framework
@@ -5620,16 +6882,16 @@ func_mode_link ()
;;
*-*-sco3.2v5* | *-*-sco5v6*)
# Causes problems with __ctype
- test "X$arg" = "X-lc" && continue
+ test X-lc = "X$arg" && continue
;;
*-*-sysv4.2uw2* | *-*-sysv5* | *-*-unixware* | *-*-OpenUNIX*)
# Compiler inserts libc in the correct place for threads to work
- test "X$arg" = "X-lc" && continue
+ test X-lc = "X$arg" && continue
;;
esac
- elif test "X$arg" = "X-lc_r"; then
+ elif test X-lc_r = "X$arg"; then
case $host in
- *-*-openbsd* | *-*-freebsd* | *-*-dragonfly*)
+ *-*-openbsd* | *-*-freebsd* | *-*-dragonfly* | *-*-bitrig*)
# Do not include libc_r directly, use -pthread flag.
continue
;;
@@ -5639,6 +6901,11 @@ func_mode_link ()
continue
;;
+ -mllvm)
+ prev=mllvm
+ continue
+ ;;
+
-module)
module=yes
continue
@@ -5668,7 +6935,7 @@ func_mode_link ()
;;
-multi_module)
- single_module="${wl}-multi_module"
+ single_module=$wl-multi_module
continue
;;
@@ -5682,8 +6949,8 @@ func_mode_link ()
*-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-*-darwin* | *-cegcc*)
# The PATH hackery in wrapper scripts is required on Windows
# and Darwin in order for the loader to find any dlls it needs.
- func_warning "\`-no-install' is ignored for $host"
- func_warning "assuming \`-no-fast-install' instead"
+ func_warning "'-no-install' is ignored for $host"
+ func_warning "assuming '-no-fast-install' instead"
fast_install=no
;;
*) no_install=yes ;;
@@ -5788,14 +7055,14 @@ func_mode_link ()
func_stripname '-Wc,' '' "$arg"
args=$func_stripname_result
arg=
- save_ifs="$IFS"; IFS=','
+ save_ifs=$IFS; IFS=,
for flag in $args; do
- IFS="$save_ifs"
+ IFS=$save_ifs
func_quote_for_eval "$flag"
func_append arg " $func_quote_for_eval_result"
func_append compiler_flags " $func_quote_for_eval_result"
done
- IFS="$save_ifs"
+ IFS=$save_ifs
func_stripname ' ' '' "$arg"
arg=$func_stripname_result
;;
@@ -5804,15 +7071,15 @@ func_mode_link ()
func_stripname '-Wl,' '' "$arg"
args=$func_stripname_result
arg=
- save_ifs="$IFS"; IFS=','
+ save_ifs=$IFS; IFS=,
for flag in $args; do
- IFS="$save_ifs"
+ IFS=$save_ifs
func_quote_for_eval "$flag"
func_append arg " $wl$func_quote_for_eval_result"
func_append compiler_flags " $wl$func_quote_for_eval_result"
func_append linker_flags " $func_quote_for_eval_result"
done
- IFS="$save_ifs"
+ IFS=$save_ifs
func_stripname ' ' '' "$arg"
arg=$func_stripname_result
;;
@@ -5835,7 +7102,7 @@ func_mode_link ()
# -msg_* for osf cc
-msg_*)
func_quote_for_eval "$arg"
- arg="$func_quote_for_eval_result"
+ arg=$func_quote_for_eval_result
;;
# Flags to be passed through unchanged, with rationale:
@@ -5850,12 +7117,13 @@ func_mode_link ()
# @file GCC response files
# -tp=* Portland pgcc target processor selection
# --sysroot=* for sysroot support
- # -O*, -flto*, -fwhopr*, -fuse-linker-plugin GCC link-time optimization
+ # -O*, -g*, -flto*, -fwhopr*, -fuse-linker-plugin GCC link-time optimization
+ # -stdlib=* select c++ std lib with clang
-64|-mips[0-9]|-r[0-9][0-9]*|-xarch=*|-xtarget=*|+DA*|+DD*|-q*|-m*| \
-t[45]*|-txscale*|-p|-pg|--coverage|-fprofile-*|-F*|@*|-tp=*|--sysroot=*| \
- -O*|-flto*|-fwhopr*|-fuse-linker-plugin)
+ -O*|-g*|-flto*|-fwhopr*|-fuse-linker-plugin|-stdlib=*)
func_quote_for_eval "$arg"
- arg="$func_quote_for_eval_result"
+ arg=$func_quote_for_eval_result
func_append compile_command " $arg"
func_append finalize_command " $arg"
func_append compiler_flags " $arg"
@@ -5865,7 +7133,7 @@ func_mode_link ()
# Some other compiler flag.
-* | +*)
func_quote_for_eval "$arg"
- arg="$func_quote_for_eval_result"
+ arg=$func_quote_for_eval_result
;;
*.$objext)
@@ -5886,21 +7154,21 @@ func_mode_link ()
if test -z "$pic_object" ||
test -z "$non_pic_object" ||
- test "$pic_object" = none &&
- test "$non_pic_object" = none; then
- func_fatal_error "cannot find name of object for \`$arg'"
+ test none = "$pic_object" &&
+ test none = "$non_pic_object"; then
+ func_fatal_error "cannot find name of object for '$arg'"
fi
# Extract subdirectory from the argument.
func_dirname "$arg" "/" ""
- xdir="$func_dirname_result"
+ xdir=$func_dirname_result
- if test "$pic_object" != none; then
+ test none = "$pic_object" || {
# Prepend the subdirectory the object is found in.
- pic_object="$xdir$pic_object"
+ pic_object=$xdir$pic_object
- if test "$prev" = dlfiles; then
- if test "$build_libtool_libs" = yes && test "$dlopen_support" = yes; then
+ if test dlfiles = "$prev"; then
+ if test yes = "$build_libtool_libs" && test yes = "$dlopen_support"; then
func_append dlfiles " $pic_object"
prev=
continue
@@ -5911,7 +7179,7 @@ func_mode_link ()
fi
# CHECK ME: I think I busted this. -Ossama
- if test "$prev" = dlprefiles; then
+ if test dlprefiles = "$prev"; then
# Preload the old-style object.
func_append dlprefiles " $pic_object"
prev=
@@ -5919,23 +7187,23 @@ func_mode_link ()
# A PIC object.
func_append libobjs " $pic_object"
- arg="$pic_object"
- fi
+ arg=$pic_object
+ }
# Non-PIC object.
- if test "$non_pic_object" != none; then
+ if test none != "$non_pic_object"; then
# Prepend the subdirectory the object is found in.
- non_pic_object="$xdir$non_pic_object"
+ non_pic_object=$xdir$non_pic_object
# A standard non-PIC object
func_append non_pic_objects " $non_pic_object"
- if test -z "$pic_object" || test "$pic_object" = none ; then
- arg="$non_pic_object"
+ if test -z "$pic_object" || test none = "$pic_object"; then
+ arg=$non_pic_object
fi
else
# If the PIC object exists, use it instead.
# $xdir was prepended to $pic_object above.
- non_pic_object="$pic_object"
+ non_pic_object=$pic_object
func_append non_pic_objects " $non_pic_object"
fi
else
@@ -5943,7 +7211,7 @@ func_mode_link ()
if $opt_dry_run; then
# Extract subdirectory from the argument.
func_dirname "$arg" "/" ""
- xdir="$func_dirname_result"
+ xdir=$func_dirname_result
func_lo2o "$arg"
pic_object=$xdir$objdir/$func_lo2o_result
@@ -5951,7 +7219,7 @@ func_mode_link ()
func_append libobjs " $pic_object"
func_append non_pic_objects " $non_pic_object"
else
- func_fatal_error "\`$arg' is not a valid libtool object"
+ func_fatal_error "'$arg' is not a valid libtool object"
fi
fi
;;
@@ -5967,11 +7235,11 @@ func_mode_link ()
# A libtool-controlled library.
func_resolve_sysroot "$arg"
- if test "$prev" = dlfiles; then
+ if test dlfiles = "$prev"; then
# This library was specified with -dlopen.
func_append dlfiles " $func_resolve_sysroot_result"
prev=
- elif test "$prev" = dlprefiles; then
+ elif test dlprefiles = "$prev"; then
# The library was specified with -dlpreopen.
func_append dlprefiles " $func_resolve_sysroot_result"
prev=
@@ -5986,7 +7254,7 @@ func_mode_link ()
# Unknown arguments in both finalize_command and compile_command need
# to be aesthetically quoted because they are evaled later.
func_quote_for_eval "$arg"
- arg="$func_quote_for_eval_result"
+ arg=$func_quote_for_eval_result
;;
esac # arg
@@ -5998,9 +7266,9 @@ func_mode_link ()
done # argument parsing loop
test -n "$prev" && \
- func_fatal_help "the \`$prevarg' option requires an argument"
+ func_fatal_help "the '$prevarg' option requires an argument"
- if test "$export_dynamic" = yes && test -n "$export_dynamic_flag_spec"; then
+ if test yes = "$export_dynamic" && test -n "$export_dynamic_flag_spec"; then
eval arg=\"$export_dynamic_flag_spec\"
func_append compile_command " $arg"
func_append finalize_command " $arg"
@@ -6009,12 +7277,12 @@ func_mode_link ()
oldlibs=
# calculate the name of the file, without its directory
func_basename "$output"
- outputname="$func_basename_result"
- libobjs_save="$libobjs"
+ outputname=$func_basename_result
+ libobjs_save=$libobjs
if test -n "$shlibpath_var"; then
# get the directories listed in $shlibpath_var
- eval shlib_search_path=\`\$ECHO \"\${$shlibpath_var}\" \| \$SED \'s/:/ /g\'\`
+ eval shlib_search_path=\`\$ECHO \"\$$shlibpath_var\" \| \$SED \'s/:/ /g\'\`
else
shlib_search_path=
fi
@@ -6022,7 +7290,7 @@ func_mode_link ()
eval sys_lib_dlsearch_path=\"$sys_lib_dlsearch_path_spec\"
func_dirname "$output" "/" ""
- output_objdir="$func_dirname_result$objdir"
+ output_objdir=$func_dirname_result$objdir
func_to_tool_file "$output_objdir/"
tool_output_objdir=$func_to_tool_file_result
# Create the object directory.
@@ -6045,7 +7313,7 @@ func_mode_link ()
# Find all interdependent deplibs by searching for libraries
# that are linked more than once (e.g. -la -lb -la)
for deplib in $deplibs; do
- if $opt_preserve_dup_deps ; then
+ if $opt_preserve_dup_deps; then
case "$libs " in
*" $deplib "*) func_append specialdeplibs " $deplib" ;;
esac
@@ -6053,7 +7321,7 @@ func_mode_link ()
func_append libs " $deplib"
done
- if test "$linkmode" = lib; then
+ if test lib = "$linkmode"; then
libs="$predeps $libs $compiler_lib_search_path $postdeps"
# Compute libraries that are listed more than once in $predeps
@@ -6085,7 +7353,7 @@ func_mode_link ()
case $file in
*.la) ;;
*)
- func_fatal_help "libraries can \`-dlopen' only libtool libraries: $file"
+ func_fatal_help "libraries can '-dlopen' only libtool libraries: $file"
;;
esac
done
@@ -6093,7 +7361,7 @@ func_mode_link ()
prog)
compile_deplibs=
finalize_deplibs=
- alldeplibs=no
+ alldeplibs=false
newdlfiles=
newdlprefiles=
passes="conv scan dlopen dlpreopen link"
@@ -6105,29 +7373,29 @@ func_mode_link ()
for pass in $passes; do
# The preopen pass in lib mode reverses $deplibs; put it back here
# so that -L comes before libs that need it for instance...
- if test "$linkmode,$pass" = "lib,link"; then
+ if test lib,link = "$linkmode,$pass"; then
## FIXME: Find the place where the list is rebuilt in the wrong
## order, and fix it there properly
tmp_deplibs=
for deplib in $deplibs; do
tmp_deplibs="$deplib $tmp_deplibs"
done
- deplibs="$tmp_deplibs"
+ deplibs=$tmp_deplibs
fi
- if test "$linkmode,$pass" = "lib,link" ||
- test "$linkmode,$pass" = "prog,scan"; then
- libs="$deplibs"
+ if test lib,link = "$linkmode,$pass" ||
+ test prog,scan = "$linkmode,$pass"; then
+ libs=$deplibs
deplibs=
fi
- if test "$linkmode" = prog; then
+ if test prog = "$linkmode"; then
case $pass in
- dlopen) libs="$dlfiles" ;;
- dlpreopen) libs="$dlprefiles" ;;
+ dlopen) libs=$dlfiles ;;
+ dlpreopen) libs=$dlprefiles ;;
link) libs="$deplibs %DEPLIBS% $dependency_libs" ;;
esac
fi
- if test "$linkmode,$pass" = "lib,dlpreopen"; then
+ if test lib,dlpreopen = "$linkmode,$pass"; then
# Collect and forward deplibs of preopened libtool libs
for lib in $dlprefiles; do
# Ignore non-libtool-libs
@@ -6148,26 +7416,26 @@ func_mode_link ()
esac
done
done
- libs="$dlprefiles"
+ libs=$dlprefiles
fi
- if test "$pass" = dlopen; then
+ if test dlopen = "$pass"; then
# Collect dlpreopened libraries
- save_deplibs="$deplibs"
+ save_deplibs=$deplibs
deplibs=
fi
for deplib in $libs; do
lib=
- found=no
+ found=false
case $deplib in
-mt|-mthreads|-kthread|-Kthread|-pthread|-pthreads|--thread-safe \
|-threads|-fopenmp|-openmp|-mp|-xopenmp|-omp|-qsmp=*)
- if test "$linkmode,$pass" = "prog,link"; then
+ if test prog,link = "$linkmode,$pass"; then
compile_deplibs="$deplib $compile_deplibs"
finalize_deplibs="$deplib $finalize_deplibs"
else
func_append compiler_flags " $deplib"
- if test "$linkmode" = lib ; then
+ if test lib = "$linkmode"; then
case "$new_inherited_linker_flags " in
*" $deplib "*) ;;
* ) func_append new_inherited_linker_flags " $deplib" ;;
@@ -6177,13 +7445,13 @@ func_mode_link ()
continue
;;
-l*)
- if test "$linkmode" != lib && test "$linkmode" != prog; then
- func_warning "\`-l' is ignored for archives/objects"
+ if test lib != "$linkmode" && test prog != "$linkmode"; then
+ func_warning "'-l' is ignored for archives/objects"
continue
fi
func_stripname '-l' '' "$deplib"
name=$func_stripname_result
- if test "$linkmode" = lib; then
+ if test lib = "$linkmode"; then
searchdirs="$newlib_search_path $lib_search_path $compiler_lib_search_dirs $sys_lib_search_path $shlib_search_path"
else
searchdirs="$newlib_search_path $lib_search_path $sys_lib_search_path $shlib_search_path"
@@ -6191,31 +7459,22 @@ func_mode_link ()
for searchdir in $searchdirs; do
for search_ext in .la $std_shrext .so .a; do
# Search the libtool library
- lib="$searchdir/lib${name}${search_ext}"
+ lib=$searchdir/lib$name$search_ext
if test -f "$lib"; then
- if test "$search_ext" = ".la"; then
- found=yes
+ if test .la = "$search_ext"; then
+ found=:
else
- found=no
+ found=false
fi
break 2
fi
done
done
- if test "$found" != yes; then
- # deplib doesn't seem to be a libtool library
- if test "$linkmode,$pass" = "prog,link"; then
- compile_deplibs="$deplib $compile_deplibs"
- finalize_deplibs="$deplib $finalize_deplibs"
- else
- deplibs="$deplib $deplibs"
- test "$linkmode" = lib && newdependency_libs="$deplib $newdependency_libs"
- fi
- continue
- else # deplib is a libtool library
+ if $found; then
+ # deplib is a libtool library
# If $allow_libtool_libs_with_static_runtimes && $deplib is a stdlib,
# We need to do some special things here, and not later.
- if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then
+ if test yes = "$allow_libtool_libs_with_static_runtimes"; then
case " $predeps $postdeps " in
*" $deplib "*)
if func_lalib_p "$lib"; then
@@ -6223,19 +7482,19 @@ func_mode_link ()
old_library=
func_source "$lib"
for l in $old_library $library_names; do
- ll="$l"
+ ll=$l
done
- if test "X$ll" = "X$old_library" ; then # only static version available
- found=no
+ if test "X$ll" = "X$old_library"; then # only static version available
+ found=false
func_dirname "$lib" "" "."
- ladir="$func_dirname_result"
+ ladir=$func_dirname_result
lib=$ladir/$old_library
- if test "$linkmode,$pass" = "prog,link"; then
+ if test prog,link = "$linkmode,$pass"; then
compile_deplibs="$deplib $compile_deplibs"
finalize_deplibs="$deplib $finalize_deplibs"
else
deplibs="$deplib $deplibs"
- test "$linkmode" = lib && newdependency_libs="$deplib $newdependency_libs"
+ test lib = "$linkmode" && newdependency_libs="$deplib $newdependency_libs"
fi
continue
fi
@@ -6244,15 +7503,25 @@ func_mode_link ()
*) ;;
esac
fi
+ else
+ # deplib doesn't seem to be a libtool library
+ if test prog,link = "$linkmode,$pass"; then
+ compile_deplibs="$deplib $compile_deplibs"
+ finalize_deplibs="$deplib $finalize_deplibs"
+ else
+ deplibs="$deplib $deplibs"
+ test lib = "$linkmode" && newdependency_libs="$deplib $newdependency_libs"
+ fi
+ continue
fi
;; # -l
*.ltframework)
- if test "$linkmode,$pass" = "prog,link"; then
+ if test prog,link = "$linkmode,$pass"; then
compile_deplibs="$deplib $compile_deplibs"
finalize_deplibs="$deplib $finalize_deplibs"
else
deplibs="$deplib $deplibs"
- if test "$linkmode" = lib ; then
+ if test lib = "$linkmode"; then
case "$new_inherited_linker_flags " in
*" $deplib "*) ;;
* ) func_append new_inherited_linker_flags " $deplib" ;;
@@ -6265,18 +7534,18 @@ func_mode_link ()
case $linkmode in
lib)
deplibs="$deplib $deplibs"
- test "$pass" = conv && continue
+ test conv = "$pass" && continue
newdependency_libs="$deplib $newdependency_libs"
func_stripname '-L' '' "$deplib"
func_resolve_sysroot "$func_stripname_result"
func_append newlib_search_path " $func_resolve_sysroot_result"
;;
prog)
- if test "$pass" = conv; then
+ if test conv = "$pass"; then
deplibs="$deplib $deplibs"
continue
fi
- if test "$pass" = scan; then
+ if test scan = "$pass"; then
deplibs="$deplib $deplibs"
else
compile_deplibs="$deplib $compile_deplibs"
@@ -6287,13 +7556,13 @@ func_mode_link ()
func_append newlib_search_path " $func_resolve_sysroot_result"
;;
*)
- func_warning "\`-L' is ignored for archives/objects"
+ func_warning "'-L' is ignored for archives/objects"
;;
esac # linkmode
continue
;; # -L
-R*)
- if test "$pass" = link; then
+ if test link = "$pass"; then
func_stripname '-R' '' "$deplib"
func_resolve_sysroot "$func_stripname_result"
dir=$func_resolve_sysroot_result
@@ -6311,7 +7580,7 @@ func_mode_link ()
lib=$func_resolve_sysroot_result
;;
*.$libext)
- if test "$pass" = conv; then
+ if test conv = "$pass"; then
deplibs="$deplib $deplibs"
continue
fi
@@ -6322,21 +7591,26 @@ func_mode_link ()
case " $dlpreconveniencelibs " in
*" $deplib "*) ;;
*)
- valid_a_lib=no
+ valid_a_lib=false
case $deplibs_check_method in
match_pattern*)
set dummy $deplibs_check_method; shift
match_pattern_regex=`expr "$deplibs_check_method" : "$1 \(.*\)"`
if eval "\$ECHO \"$deplib\"" 2>/dev/null | $SED 10q \
| $EGREP "$match_pattern_regex" > /dev/null; then
- valid_a_lib=yes
+ valid_a_lib=:
fi
;;
pass_all)
- valid_a_lib=yes
+ valid_a_lib=:
;;
esac
- if test "$valid_a_lib" != yes; then
+ if $valid_a_lib; then
+ echo
+ $ECHO "*** Warning: Linking the shared library $output against the"
+ $ECHO "*** static library $deplib is not portable!"
+ deplibs="$deplib $deplibs"
+ else
echo
$ECHO "*** Warning: Trying to link with static lib archive $deplib."
echo "*** I have the capability to make that library automatically link in when"
@@ -6344,18 +7618,13 @@ func_mode_link ()
echo "*** shared version of the library, which you do not appear to have"
echo "*** because the file extensions .$libext of this argument makes me believe"
echo "*** that it is just a static archive that I should not use here."
- else
- echo
- $ECHO "*** Warning: Linking the shared library $output against the"
- $ECHO "*** static library $deplib is not portable!"
- deplibs="$deplib $deplibs"
fi
;;
esac
continue
;;
prog)
- if test "$pass" != link; then
+ if test link != "$pass"; then
deplibs="$deplib $deplibs"
else
compile_deplibs="$deplib $compile_deplibs"
@@ -6366,10 +7635,10 @@ func_mode_link ()
esac # linkmode
;; # *.$libext
*.lo | *.$objext)
- if test "$pass" = conv; then
+ if test conv = "$pass"; then
deplibs="$deplib $deplibs"
- elif test "$linkmode" = prog; then
- if test "$pass" = dlpreopen || test "$dlopen_support" != yes || test "$build_libtool_libs" = no; then
+ elif test prog = "$linkmode"; then
+ if test dlpreopen = "$pass" || test yes != "$dlopen_support" || test no = "$build_libtool_libs"; then
# If there is no dlopen support or we're linking statically,
# we need to preload.
func_append newdlprefiles " $deplib"
@@ -6382,22 +7651,20 @@ func_mode_link ()
continue
;;
%DEPLIBS%)
- alldeplibs=yes
+ alldeplibs=:
continue
;;
esac # case $deplib
- if test "$found" = yes || test -f "$lib"; then :
- else
- func_fatal_error "cannot find the library \`$lib' or unhandled argument \`$deplib'"
- fi
+ $found || test -f "$lib" \
+ || func_fatal_error "cannot find the library '$lib' or unhandled argument '$deplib'"
# Check to see that this really is a libtool archive.
func_lalib_unsafe_p "$lib" \
- || func_fatal_error "\`$lib' is not a valid libtool archive"
+ || func_fatal_error "'$lib' is not a valid libtool archive"
func_dirname "$lib" "" "."
- ladir="$func_dirname_result"
+ ladir=$func_dirname_result
dlname=
dlopen=
@@ -6427,30 +7694,30 @@ func_mode_link ()
done
fi
dependency_libs=`$ECHO " $dependency_libs" | $SED 's% \([^ $]*\).ltframework% -framework \1%g'`
- if test "$linkmode,$pass" = "lib,link" ||
- test "$linkmode,$pass" = "prog,scan" ||
- { test "$linkmode" != prog && test "$linkmode" != lib; }; then
+ if test lib,link = "$linkmode,$pass" ||
+ test prog,scan = "$linkmode,$pass" ||
+ { test prog != "$linkmode" && test lib != "$linkmode"; }; then
test -n "$dlopen" && func_append dlfiles " $dlopen"
test -n "$dlpreopen" && func_append dlprefiles " $dlpreopen"
fi
- if test "$pass" = conv; then
+ if test conv = "$pass"; then
# Only check for convenience libraries
deplibs="$lib $deplibs"
if test -z "$libdir"; then
if test -z "$old_library"; then
- func_fatal_error "cannot find name of link library for \`$lib'"
+ func_fatal_error "cannot find name of link library for '$lib'"
fi
# It is a libtool convenience library, so add in its objects.
func_append convenience " $ladir/$objdir/$old_library"
func_append old_convenience " $ladir/$objdir/$old_library"
- elif test "$linkmode" != prog && test "$linkmode" != lib; then
- func_fatal_error "\`$lib' is not a convenience library"
+ elif test prog != "$linkmode" && test lib != "$linkmode"; then
+ func_fatal_error "'$lib' is not a convenience library"
fi
tmp_libs=
for deplib in $dependency_libs; do
deplibs="$deplib $deplibs"
- if $opt_preserve_dup_deps ; then
+ if $opt_preserve_dup_deps; then
case "$tmp_libs " in
*" $deplib "*) func_append specialdeplibs " $deplib" ;;
esac
@@ -6464,26 +7731,26 @@ func_mode_link ()
# Get the name of the library we link against.
linklib=
if test -n "$old_library" &&
- { test "$prefer_static_libs" = yes ||
- test "$prefer_static_libs,$installed" = "built,no"; }; then
+ { test yes = "$prefer_static_libs" ||
+ test built,no = "$prefer_static_libs,$installed"; }; then
linklib=$old_library
else
for l in $old_library $library_names; do
- linklib="$l"
+ linklib=$l
done
fi
if test -z "$linklib"; then
- func_fatal_error "cannot find name of link library for \`$lib'"
+ func_fatal_error "cannot find name of link library for '$lib'"
fi
# This library was specified with -dlopen.
- if test "$pass" = dlopen; then
- if test -z "$libdir"; then
- func_fatal_error "cannot -dlopen a convenience library: \`$lib'"
- fi
+ if test dlopen = "$pass"; then
+ test -z "$libdir" \
+ && func_fatal_error "cannot -dlopen a convenience library: '$lib'"
if test -z "$dlname" ||
- test "$dlopen_support" != yes ||
- test "$build_libtool_libs" = no; then
+ test yes != "$dlopen_support" ||
+ test no = "$build_libtool_libs"
+ then
# If there is no dlname, no dlopen support or we're linking
# statically, we need to preload. We also need to preload any
# dependent libraries so libltdl's deplib preloader doesn't
@@ -6497,40 +7764,40 @@ func_mode_link ()
# We need an absolute path.
case $ladir in
- [\\/]* | [A-Za-z]:[\\/]*) abs_ladir="$ladir" ;;
+ [\\/]* | [A-Za-z]:[\\/]*) abs_ladir=$ladir ;;
*)
abs_ladir=`cd "$ladir" && pwd`
if test -z "$abs_ladir"; then
- func_warning "cannot determine absolute directory name of \`$ladir'"
+ func_warning "cannot determine absolute directory name of '$ladir'"
func_warning "passing it literally to the linker, although it might fail"
- abs_ladir="$ladir"
+ abs_ladir=$ladir
fi
;;
esac
func_basename "$lib"
- laname="$func_basename_result"
+ laname=$func_basename_result
# Find the relevant object directory and library name.
- if test "X$installed" = Xyes; then
+ if test yes = "$installed"; then
if test ! -f "$lt_sysroot$libdir/$linklib" && test -f "$abs_ladir/$linklib"; then
- func_warning "library \`$lib' was moved."
- dir="$ladir"
- absdir="$abs_ladir"
- libdir="$abs_ladir"
+ func_warning "library '$lib' was moved."
+ dir=$ladir
+ absdir=$abs_ladir
+ libdir=$abs_ladir
else
- dir="$lt_sysroot$libdir"
- absdir="$lt_sysroot$libdir"
+ dir=$lt_sysroot$libdir
+ absdir=$lt_sysroot$libdir
fi
- test "X$hardcode_automatic" = Xyes && avoidtemprpath=yes
+ test yes = "$hardcode_automatic" && avoidtemprpath=yes
else
if test ! -f "$ladir/$objdir/$linklib" && test -f "$abs_ladir/$linklib"; then
- dir="$ladir"
- absdir="$abs_ladir"
+ dir=$ladir
+ absdir=$abs_ladir
# Remove this search path later
func_append notinst_path " $abs_ladir"
else
- dir="$ladir/$objdir"
- absdir="$abs_ladir/$objdir"
+ dir=$ladir/$objdir
+ absdir=$abs_ladir/$objdir
# Remove this search path later
func_append notinst_path " $abs_ladir"
fi
@@ -6539,11 +7806,11 @@ func_mode_link ()
name=$func_stripname_result
# This library was specified with -dlpreopen.
- if test "$pass" = dlpreopen; then
- if test -z "$libdir" && test "$linkmode" = prog; then
- func_fatal_error "only libraries may -dlpreopen a convenience library: \`$lib'"
+ if test dlpreopen = "$pass"; then
+ if test -z "$libdir" && test prog = "$linkmode"; then
+ func_fatal_error "only libraries may -dlpreopen a convenience library: '$lib'"
fi
- case "$host" in
+ case $host in
# special handling for platforms with PE-DLLs.
*cygwin* | *mingw* | *cegcc* )
# Linker will automatically link against shared library if both
@@ -6587,9 +7854,9 @@ func_mode_link ()
if test -z "$libdir"; then
# Link the convenience library
- if test "$linkmode" = lib; then
+ if test lib = "$linkmode"; then
deplibs="$dir/$old_library $deplibs"
- elif test "$linkmode,$pass" = "prog,link"; then
+ elif test prog,link = "$linkmode,$pass"; then
compile_deplibs="$dir/$old_library $compile_deplibs"
finalize_deplibs="$dir/$old_library $finalize_deplibs"
else
@@ -6599,14 +7866,14 @@ func_mode_link ()
fi
- if test "$linkmode" = prog && test "$pass" != link; then
+ if test prog = "$linkmode" && test link != "$pass"; then
func_append newlib_search_path " $ladir"
deplibs="$lib $deplibs"
- linkalldeplibs=no
- if test "$link_all_deplibs" != no || test -z "$library_names" ||
- test "$build_libtool_libs" = no; then
- linkalldeplibs=yes
+ linkalldeplibs=false
+ if test no != "$link_all_deplibs" || test -z "$library_names" ||
+ test no = "$build_libtool_libs"; then
+ linkalldeplibs=:
fi
tmp_libs=
@@ -6618,14 +7885,14 @@ func_mode_link ()
;;
esac
# Need to link against all dependency_libs?
- if test "$linkalldeplibs" = yes; then
+ if $linkalldeplibs; then
deplibs="$deplib $deplibs"
else
# Need to hardcode shared library paths
# or/and link against static libraries
newdependency_libs="$deplib $newdependency_libs"
fi
- if $opt_preserve_dup_deps ; then
+ if $opt_preserve_dup_deps; then
case "$tmp_libs " in
*" $deplib "*) func_append specialdeplibs " $deplib" ;;
esac
@@ -6635,15 +7902,15 @@ func_mode_link ()
continue
fi # $linkmode = prog...
- if test "$linkmode,$pass" = "prog,link"; then
+ if test prog,link = "$linkmode,$pass"; then
if test -n "$library_names" &&
- { { test "$prefer_static_libs" = no ||
- test "$prefer_static_libs,$installed" = "built,yes"; } ||
+ { { test no = "$prefer_static_libs" ||
+ test built,yes = "$prefer_static_libs,$installed"; } ||
test -z "$old_library"; }; then
# We need to hardcode the library path
- if test -n "$shlibpath_var" && test -z "$avoidtemprpath" ; then
+ if test -n "$shlibpath_var" && test -z "$avoidtemprpath"; then
# Make sure the rpath contains only unique directories.
- case "$temp_rpath:" in
+ case $temp_rpath: in
*"$absdir:"*) ;;
*) func_append temp_rpath "$absdir:" ;;
esac
@@ -6672,9 +7939,9 @@ func_mode_link ()
esac
fi # $linkmode,$pass = prog,link...
- if test "$alldeplibs" = yes &&
- { test "$deplibs_check_method" = pass_all ||
- { test "$build_libtool_libs" = yes &&
+ if $alldeplibs &&
+ { test pass_all = "$deplibs_check_method" ||
+ { test yes = "$build_libtool_libs" &&
test -n "$library_names"; }; }; then
# We only need to search for static libraries
continue
@@ -6683,11 +7950,11 @@ func_mode_link ()
link_static=no # Whether the deplib will be linked statically
use_static_libs=$prefer_static_libs
- if test "$use_static_libs" = built && test "$installed" = yes; then
+ if test built = "$use_static_libs" && test yes = "$installed"; then
use_static_libs=no
fi
if test -n "$library_names" &&
- { test "$use_static_libs" = no || test -z "$old_library"; }; then
+ { test no = "$use_static_libs" || test -z "$old_library"; }; then
case $host in
*cygwin* | *mingw* | *cegcc*)
# No point in relinking DLLs because paths are not encoded
@@ -6695,7 +7962,7 @@ func_mode_link ()
need_relink=no
;;
*)
- if test "$installed" = no; then
+ if test no = "$installed"; then
func_append notinst_deplibs " $lib"
need_relink=yes
fi
@@ -6705,24 +7972,24 @@ func_mode_link ()
# Warn about portability, can't link against -module's on some
# systems (darwin). Don't bleat about dlopened modules though!
- dlopenmodule=""
+ dlopenmodule=
for dlpremoduletest in $dlprefiles; do
if test "X$dlpremoduletest" = "X$lib"; then
- dlopenmodule="$dlpremoduletest"
+ dlopenmodule=$dlpremoduletest
break
fi
done
- if test -z "$dlopenmodule" && test "$shouldnotlink" = yes && test "$pass" = link; then
+ if test -z "$dlopenmodule" && test yes = "$shouldnotlink" && test link = "$pass"; then
echo
- if test "$linkmode" = prog; then
+ if test prog = "$linkmode"; then
$ECHO "*** Warning: Linking the executable $output against the loadable module"
else
$ECHO "*** Warning: Linking the shared library $output against the loadable module"
fi
$ECHO "*** $linklib is not portable!"
fi
- if test "$linkmode" = lib &&
- test "$hardcode_into_libs" = yes; then
+ if test lib = "$linkmode" &&
+ test yes = "$hardcode_into_libs"; then
# Hardcode the library path.
# Skip directories that are in the system default run-time
# search path.
@@ -6750,43 +8017,43 @@ func_mode_link ()
# figure out the soname
set dummy $library_names
shift
- realname="$1"
+ realname=$1
shift
libname=`eval "\\$ECHO \"$libname_spec\""`
# use dlname if we got it. it's perfectly good, no?
if test -n "$dlname"; then
- soname="$dlname"
+ soname=$dlname
elif test -n "$soname_spec"; then
# bleh windows
case $host in
*cygwin* | mingw* | *cegcc*)
func_arith $current - $age
major=$func_arith_result
- versuffix="-$major"
+ versuffix=-$major
;;
esac
eval soname=\"$soname_spec\"
else
- soname="$realname"
+ soname=$realname
fi
# Make a new name for the extract_expsyms_cmds to use
- soroot="$soname"
+ soroot=$soname
func_basename "$soroot"
- soname="$func_basename_result"
+ soname=$func_basename_result
func_stripname 'lib' '.dll' "$soname"
newlib=libimp-$func_stripname_result.a
# If the library has no export list, then create one now
if test -f "$output_objdir/$soname-def"; then :
else
- func_verbose "extracting exported symbol list from \`$soname'"
+ func_verbose "extracting exported symbol list from '$soname'"
func_execute_cmds "$extract_expsyms_cmds" 'exit $?'
fi
# Create $newlib
if test -f "$output_objdir/$newlib"; then :; else
- func_verbose "generating import library for \`$soname'"
+ func_verbose "generating import library for '$soname'"
func_execute_cmds "$old_archive_from_expsyms_cmds" 'exit $?'
fi
# make sure the library variables are pointing to the new library
@@ -6794,58 +8061,58 @@ func_mode_link ()
linklib=$newlib
fi # test -n "$old_archive_from_expsyms_cmds"
- if test "$linkmode" = prog || test "$opt_mode" != relink; then
+ if test prog = "$linkmode" || test relink != "$opt_mode"; then
add_shlibpath=
add_dir=
add=
lib_linked=yes
case $hardcode_action in
immediate | unsupported)
- if test "$hardcode_direct" = no; then
- add="$dir/$linklib"
+ if test no = "$hardcode_direct"; then
+ add=$dir/$linklib
case $host in
- *-*-sco3.2v5.0.[024]*) add_dir="-L$dir" ;;
- *-*-sysv4*uw2*) add_dir="-L$dir" ;;
+ *-*-sco3.2v5.0.[024]*) add_dir=-L$dir ;;
+ *-*-sysv4*uw2*) add_dir=-L$dir ;;
*-*-sysv5OpenUNIX* | *-*-sysv5UnixWare7.[01].[10]* | \
- *-*-unixware7*) add_dir="-L$dir" ;;
+ *-*-unixware7*) add_dir=-L$dir ;;
*-*-darwin* )
- # if the lib is a (non-dlopened) module then we can not
+ # if the lib is a (non-dlopened) module then we cannot
# link against it, someone is ignoring the earlier warnings
if /usr/bin/file -L $add 2> /dev/null |
- $GREP ": [^:]* bundle" >/dev/null ; then
+ $GREP ": [^:]* bundle" >/dev/null; then
if test "X$dlopenmodule" != "X$lib"; then
$ECHO "*** Warning: lib $linklib is a module, not a shared library"
- if test -z "$old_library" ; then
+ if test -z "$old_library"; then
echo
echo "*** And there doesn't seem to be a static archive available"
echo "*** The link will probably fail, sorry"
else
- add="$dir/$old_library"
+ add=$dir/$old_library
fi
elif test -n "$old_library"; then
- add="$dir/$old_library"
+ add=$dir/$old_library
fi
fi
esac
- elif test "$hardcode_minus_L" = no; then
+ elif test no = "$hardcode_minus_L"; then
case $host in
- *-*-sunos*) add_shlibpath="$dir" ;;
+ *-*-sunos*) add_shlibpath=$dir ;;
esac
- add_dir="-L$dir"
- add="-l$name"
- elif test "$hardcode_shlibpath_var" = no; then
- add_shlibpath="$dir"
- add="-l$name"
+ add_dir=-L$dir
+ add=-l$name
+ elif test no = "$hardcode_shlibpath_var"; then
+ add_shlibpath=$dir
+ add=-l$name
else
lib_linked=no
fi
;;
relink)
- if test "$hardcode_direct" = yes &&
- test "$hardcode_direct_absolute" = no; then
- add="$dir/$linklib"
- elif test "$hardcode_minus_L" = yes; then
- add_dir="-L$absdir"
+ if test yes = "$hardcode_direct" &&
+ test no = "$hardcode_direct_absolute"; then
+ add=$dir/$linklib
+ elif test yes = "$hardcode_minus_L"; then
+ add_dir=-L$absdir
# Try looking first in the location we're being installed to.
if test -n "$inst_prefix_dir"; then
case $libdir in
@@ -6854,10 +8121,10 @@ func_mode_link ()
;;
esac
fi
- add="-l$name"
- elif test "$hardcode_shlibpath_var" = yes; then
- add_shlibpath="$dir"
- add="-l$name"
+ add=-l$name
+ elif test yes = "$hardcode_shlibpath_var"; then
+ add_shlibpath=$dir
+ add=-l$name
else
lib_linked=no
fi
@@ -6865,7 +8132,7 @@ func_mode_link ()
*) lib_linked=no ;;
esac
- if test "$lib_linked" != yes; then
+ if test yes != "$lib_linked"; then
func_fatal_configuration "unsupported hardcode properties"
fi
@@ -6875,15 +8142,15 @@ func_mode_link ()
*) func_append compile_shlibpath "$add_shlibpath:" ;;
esac
fi
- if test "$linkmode" = prog; then
+ if test prog = "$linkmode"; then
test -n "$add_dir" && compile_deplibs="$add_dir $compile_deplibs"
test -n "$add" && compile_deplibs="$add $compile_deplibs"
else
test -n "$add_dir" && deplibs="$add_dir $deplibs"
test -n "$add" && deplibs="$add $deplibs"
- if test "$hardcode_direct" != yes &&
- test "$hardcode_minus_L" != yes &&
- test "$hardcode_shlibpath_var" = yes; then
+ if test yes != "$hardcode_direct" &&
+ test yes != "$hardcode_minus_L" &&
+ test yes = "$hardcode_shlibpath_var"; then
case :$finalize_shlibpath: in
*":$libdir:"*) ;;
*) func_append finalize_shlibpath "$libdir:" ;;
@@ -6892,33 +8159,33 @@ func_mode_link ()
fi
fi
- if test "$linkmode" = prog || test "$opt_mode" = relink; then
+ if test prog = "$linkmode" || test relink = "$opt_mode"; then
add_shlibpath=
add_dir=
add=
# Finalize command for both is simple: just hardcode it.
- if test "$hardcode_direct" = yes &&
- test "$hardcode_direct_absolute" = no; then
- add="$libdir/$linklib"
- elif test "$hardcode_minus_L" = yes; then
- add_dir="-L$libdir"
- add="-l$name"
- elif test "$hardcode_shlibpath_var" = yes; then
+ if test yes = "$hardcode_direct" &&
+ test no = "$hardcode_direct_absolute"; then
+ add=$libdir/$linklib
+ elif test yes = "$hardcode_minus_L"; then
+ add_dir=-L$libdir
+ add=-l$name
+ elif test yes = "$hardcode_shlibpath_var"; then
case :$finalize_shlibpath: in
*":$libdir:"*) ;;
*) func_append finalize_shlibpath "$libdir:" ;;
esac
- add="-l$name"
- elif test "$hardcode_automatic" = yes; then
+ add=-l$name
+ elif test yes = "$hardcode_automatic"; then
if test -n "$inst_prefix_dir" &&
- test -f "$inst_prefix_dir$libdir/$linklib" ; then
- add="$inst_prefix_dir$libdir/$linklib"
+ test -f "$inst_prefix_dir$libdir/$linklib"; then
+ add=$inst_prefix_dir$libdir/$linklib
else
- add="$libdir/$linklib"
+ add=$libdir/$linklib
fi
else
# We cannot seem to hardcode it, guess we'll fake it.
- add_dir="-L$libdir"
+ add_dir=-L$libdir
# Try looking first in the location we're being installed to.
if test -n "$inst_prefix_dir"; then
case $libdir in
@@ -6927,10 +8194,10 @@ func_mode_link ()
;;
esac
fi
- add="-l$name"
+ add=-l$name
fi
- if test "$linkmode" = prog; then
+ if test prog = "$linkmode"; then
test -n "$add_dir" && finalize_deplibs="$add_dir $finalize_deplibs"
test -n "$add" && finalize_deplibs="$add $finalize_deplibs"
else
@@ -6938,43 +8205,43 @@ func_mode_link ()
test -n "$add" && deplibs="$add $deplibs"
fi
fi
- elif test "$linkmode" = prog; then
+ elif test prog = "$linkmode"; then
# Here we assume that one of hardcode_direct or hardcode_minus_L
# is not unsupported. This is valid on all known static and
# shared platforms.
- if test "$hardcode_direct" != unsupported; then
- test -n "$old_library" && linklib="$old_library"
+ if test unsupported != "$hardcode_direct"; then
+ test -n "$old_library" && linklib=$old_library
compile_deplibs="$dir/$linklib $compile_deplibs"
finalize_deplibs="$dir/$linklib $finalize_deplibs"
else
compile_deplibs="-l$name -L$dir $compile_deplibs"
finalize_deplibs="-l$name -L$dir $finalize_deplibs"
fi
- elif test "$build_libtool_libs" = yes; then
+ elif test yes = "$build_libtool_libs"; then
# Not a shared library
- if test "$deplibs_check_method" != pass_all; then
+ if test pass_all != "$deplibs_check_method"; then
# We're trying link a shared library against a static one
# but the system doesn't support it.
# Just print a warning and add the library to dependency_libs so
# that the program can be linked against the static library.
echo
- $ECHO "*** Warning: This system can not link to static lib archive $lib."
+ $ECHO "*** Warning: This system cannot link to static lib archive $lib."
echo "*** I have the capability to make that library automatically link in when"
echo "*** you link to this library. But I can only do this if you have a"
echo "*** shared version of the library, which you do not appear to have."
- if test "$module" = yes; then
+ if test yes = "$module"; then
echo "*** But as you try to build a module library, libtool will still create "
echo "*** a static module, that should work as long as the dlopening application"
echo "*** is linked with the -dlopen flag to resolve symbols at runtime."
if test -z "$global_symbol_pipe"; then
echo
echo "*** However, this would only work if libtool was able to extract symbol"
- echo "*** lists from a program, using \`nm' or equivalent, but libtool could"
+ echo "*** lists from a program, using 'nm' or equivalent, but libtool could"
echo "*** not find such a program. So, this module is probably useless."
- echo "*** \`nm' from GNU binutils and a full rebuild may help."
+ echo "*** 'nm' from GNU binutils and a full rebuild may help."
fi
- if test "$build_old_libs" = no; then
+ if test no = "$build_old_libs"; then
build_libtool_libs=module
build_old_libs=yes
else
@@ -6987,11 +8254,11 @@ func_mode_link ()
fi
fi # link shared/static library?
- if test "$linkmode" = lib; then
+ if test lib = "$linkmode"; then
if test -n "$dependency_libs" &&
- { test "$hardcode_into_libs" != yes ||
- test "$build_old_libs" = yes ||
- test "$link_static" = yes; }; then
+ { test yes != "$hardcode_into_libs" ||
+ test yes = "$build_old_libs" ||
+ test yes = "$link_static"; }; then
# Extract -R from dependency_libs
temp_deplibs=
for libdir in $dependency_libs; do
@@ -7005,12 +8272,12 @@ func_mode_link ()
*) func_append temp_deplibs " $libdir";;
esac
done
- dependency_libs="$temp_deplibs"
+ dependency_libs=$temp_deplibs
fi
func_append newlib_search_path " $absdir"
# Link against this library
- test "$link_static" = no && newdependency_libs="$abs_ladir/$laname $newdependency_libs"
+ test no = "$link_static" && newdependency_libs="$abs_ladir/$laname $newdependency_libs"
# ... and its dependency_libs
tmp_libs=
for deplib in $dependency_libs; do
@@ -7020,7 +8287,7 @@ func_mode_link ()
func_resolve_sysroot "$func_stripname_result";;
*) func_resolve_sysroot "$deplib" ;;
esac
- if $opt_preserve_dup_deps ; then
+ if $opt_preserve_dup_deps; then
case "$tmp_libs " in
*" $func_resolve_sysroot_result "*)
func_append specialdeplibs " $func_resolve_sysroot_result" ;;
@@ -7029,12 +8296,12 @@ func_mode_link ()
func_append tmp_libs " $func_resolve_sysroot_result"
done
- if test "$link_all_deplibs" != no; then
+ if test no != "$link_all_deplibs"; then
# Add the search paths of all dependency libraries
for deplib in $dependency_libs; do
path=
case $deplib in
- -L*) path="$deplib" ;;
+ -L*) path=$deplib ;;
*.la)
func_resolve_sysroot "$deplib"
deplib=$func_resolve_sysroot_result
@@ -7042,12 +8309,12 @@ func_mode_link ()
dir=$func_dirname_result
# We need an absolute path.
case $dir in
- [\\/]* | [A-Za-z]:[\\/]*) absdir="$dir" ;;
+ [\\/]* | [A-Za-z]:[\\/]*) absdir=$dir ;;
*)
absdir=`cd "$dir" && pwd`
if test -z "$absdir"; then
- func_warning "cannot determine absolute directory name of \`$dir'"
- absdir="$dir"
+ func_warning "cannot determine absolute directory name of '$dir'"
+ absdir=$dir
fi
;;
esac
@@ -7055,35 +8322,35 @@ func_mode_link ()
case $host in
*-*-darwin*)
depdepl=
- eval deplibrary_names=`${SED} -n -e 's/^library_names=\(.*\)$/\1/p' $deplib`
- if test -n "$deplibrary_names" ; then
- for tmp in $deplibrary_names ; do
+ eval deplibrary_names=`$SED -n -e 's/^library_names=\(.*\)$/\1/p' $deplib`
+ if test -n "$deplibrary_names"; then
+ for tmp in $deplibrary_names; do
depdepl=$tmp
done
- if test -f "$absdir/$objdir/$depdepl" ; then
- depdepl="$absdir/$objdir/$depdepl"
- darwin_install_name=`${OTOOL} -L $depdepl | awk '{if (NR == 2) {print $1;exit}}'`
+ if test -f "$absdir/$objdir/$depdepl"; then
+ depdepl=$absdir/$objdir/$depdepl
+ darwin_install_name=`$OTOOL -L $depdepl | awk '{if (NR == 2) {print $1;exit}}'`
if test -z "$darwin_install_name"; then
- darwin_install_name=`${OTOOL64} -L $depdepl | awk '{if (NR == 2) {print $1;exit}}'`
+ darwin_install_name=`$OTOOL64 -L $depdepl | awk '{if (NR == 2) {print $1;exit}}'`
fi
- func_append compiler_flags " ${wl}-dylib_file ${wl}${darwin_install_name}:${depdepl}"
- func_append linker_flags " -dylib_file ${darwin_install_name}:${depdepl}"
+ func_append compiler_flags " $wl-dylib_file $wl$darwin_install_name:$depdepl"
+ func_append linker_flags " -dylib_file $darwin_install_name:$depdepl"
path=
fi
fi
;;
*)
- path="-L$absdir/$objdir"
+ path=-L$absdir/$objdir
;;
esac
else
- eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $deplib`
+ eval libdir=`$SED -n -e 's/^libdir=\(.*\)$/\1/p' $deplib`
test -z "$libdir" && \
- func_fatal_error "\`$deplib' is not a valid libtool archive"
+ func_fatal_error "'$deplib' is not a valid libtool archive"
test "$absdir" != "$libdir" && \
- func_warning "\`$deplib' seems to be moved"
+ func_warning "'$deplib' seems to be moved"
- path="-L$absdir"
+ path=-L$absdir
fi
;;
esac
@@ -7095,23 +8362,23 @@ func_mode_link ()
fi # link_all_deplibs != no
fi # linkmode = lib
done # for deplib in $libs
- if test "$pass" = link; then
- if test "$linkmode" = "prog"; then
+ if test link = "$pass"; then
+ if test prog = "$linkmode"; then
compile_deplibs="$new_inherited_linker_flags $compile_deplibs"
finalize_deplibs="$new_inherited_linker_flags $finalize_deplibs"
else
compiler_flags="$compiler_flags "`$ECHO " $new_inherited_linker_flags" | $SED 's% \([^ $]*\).ltframework% -framework \1%g'`
fi
fi
- dependency_libs="$newdependency_libs"
- if test "$pass" = dlpreopen; then
+ dependency_libs=$newdependency_libs
+ if test dlpreopen = "$pass"; then
# Link the dlpreopened libraries before other libraries
for deplib in $save_deplibs; do
deplibs="$deplib $deplibs"
done
fi
- if test "$pass" != dlopen; then
- if test "$pass" != conv; then
+ if test dlopen != "$pass"; then
+ test conv = "$pass" || {
# Make sure lib_search_path contains only unique directories.
lib_search_path=
for dir in $newlib_search_path; do
@@ -7121,12 +8388,12 @@ func_mode_link ()
esac
done
newlib_search_path=
- fi
+ }
- if test "$linkmode,$pass" != "prog,link"; then
- vars="deplibs"
- else
+ if test prog,link = "$linkmode,$pass"; then
vars="compile_deplibs finalize_deplibs"
+ else
+ vars=deplibs
fi
for var in $vars dependency_libs; do
# Add libraries to $var in reverse order
@@ -7187,59 +8454,59 @@ func_mode_link ()
# Last step: remove runtime libs from dependency_libs
# (they stay in deplibs)
tmp_libs=
- for i in $dependency_libs ; do
+ for i in $dependency_libs; do
case " $predeps $postdeps $compiler_lib_search_path " in
*" $i "*)
- i=""
+ i=
;;
esac
- if test -n "$i" ; then
+ if test -n "$i"; then
func_append tmp_libs " $i"
fi
done
dependency_libs=$tmp_libs
done # for pass
- if test "$linkmode" = prog; then
- dlfiles="$newdlfiles"
+ if test prog = "$linkmode"; then
+ dlfiles=$newdlfiles
fi
- if test "$linkmode" = prog || test "$linkmode" = lib; then
- dlprefiles="$newdlprefiles"
+ if test prog = "$linkmode" || test lib = "$linkmode"; then
+ dlprefiles=$newdlprefiles
fi
case $linkmode in
oldlib)
- if test -n "$dlfiles$dlprefiles" || test "$dlself" != no; then
- func_warning "\`-dlopen' is ignored for archives"
+ if test -n "$dlfiles$dlprefiles" || test no != "$dlself"; then
+ func_warning "'-dlopen' is ignored for archives"
fi
case " $deplibs" in
*\ -l* | *\ -L*)
- func_warning "\`-l' and \`-L' are ignored for archives" ;;
+ func_warning "'-l' and '-L' are ignored for archives" ;;
esac
test -n "$rpath" && \
- func_warning "\`-rpath' is ignored for archives"
+ func_warning "'-rpath' is ignored for archives"
test -n "$xrpath" && \
- func_warning "\`-R' is ignored for archives"
+ func_warning "'-R' is ignored for archives"
test -n "$vinfo" && \
- func_warning "\`-version-info/-version-number' is ignored for archives"
+ func_warning "'-version-info/-version-number' is ignored for archives"
test -n "$release" && \
- func_warning "\`-release' is ignored for archives"
+ func_warning "'-release' is ignored for archives"
test -n "$export_symbols$export_symbols_regex" && \
- func_warning "\`-export-symbols' is ignored for archives"
+ func_warning "'-export-symbols' is ignored for archives"
# Now set the variables for building old libraries.
build_libtool_libs=no
- oldlibs="$output"
+ oldlibs=$output
func_append objs "$old_deplibs"
;;
lib)
- # Make sure we only generate libraries of the form `libNAME.la'.
+ # Make sure we only generate libraries of the form 'libNAME.la'.
case $outputname in
lib*)
func_stripname 'lib' '.la' "$outputname"
@@ -7248,10 +8515,10 @@ func_mode_link ()
eval libname=\"$libname_spec\"
;;
*)
- test "$module" = no && \
- func_fatal_help "libtool library \`$output' must begin with \`lib'"
+ test no = "$module" \
+ && func_fatal_help "libtool library '$output' must begin with 'lib'"
- if test "$need_lib_prefix" != no; then
+ if test no != "$need_lib_prefix"; then
# Add the "lib" prefix for modules if required
func_stripname '' '.la' "$outputname"
name=$func_stripname_result
@@ -7265,8 +8532,8 @@ func_mode_link ()
esac
if test -n "$objs"; then
- if test "$deplibs_check_method" != pass_all; then
- func_fatal_error "cannot build libtool library \`$output' from non-libtool objects on this host:$objs"
+ if test pass_all != "$deplibs_check_method"; then
+ func_fatal_error "cannot build libtool library '$output' from non-libtool objects on this host:$objs"
else
echo
$ECHO "*** Warning: Linking the shared library $output against the non-libtool"
@@ -7275,21 +8542,21 @@ func_mode_link ()
fi
fi
- test "$dlself" != no && \
- func_warning "\`-dlopen self' is ignored for libtool libraries"
+ test no = "$dlself" \
+ || func_warning "'-dlopen self' is ignored for libtool libraries"
set dummy $rpath
shift
- test "$#" -gt 1 && \
- func_warning "ignoring multiple \`-rpath's for a libtool library"
+ test 1 -lt "$#" \
+ && func_warning "ignoring multiple '-rpath's for a libtool library"
- install_libdir="$1"
+ install_libdir=$1
oldlibs=
if test -z "$rpath"; then
- if test "$build_libtool_libs" = yes; then
+ if test yes = "$build_libtool_libs"; then
# Building a libtool convenience library.
- # Some compilers have problems with a `.al' extension so
+ # Some compilers have problems with a '.al' extension so
# convenience libraries should have the same extension an
# archive normally would.
oldlibs="$output_objdir/$libname.$libext $oldlibs"
@@ -7298,20 +8565,20 @@ func_mode_link ()
fi
test -n "$vinfo" && \
- func_warning "\`-version-info/-version-number' is ignored for convenience libraries"
+ func_warning "'-version-info/-version-number' is ignored for convenience libraries"
test -n "$release" && \
- func_warning "\`-release' is ignored for convenience libraries"
+ func_warning "'-release' is ignored for convenience libraries"
else
# Parse the version information argument.
- save_ifs="$IFS"; IFS=':'
+ save_ifs=$IFS; IFS=:
set dummy $vinfo 0 0 0
shift
- IFS="$save_ifs"
+ IFS=$save_ifs
test -n "$7" && \
- func_fatal_help "too many parameters to \`-version-info'"
+ func_fatal_help "too many parameters to '-version-info'"
# convert absolute version numbers to libtool ages
# this retains compatibility with .la files and attempts
@@ -7319,42 +8586,42 @@ func_mode_link ()
case $vinfo_number in
yes)
- number_major="$1"
- number_minor="$2"
- number_revision="$3"
+ number_major=$1
+ number_minor=$2
+ number_revision=$3
#
# There are really only two kinds -- those that
# use the current revision as the major version
# and those that subtract age and use age as
# a minor version. But, then there is irix
- # which has an extra 1 added just for fun
+ # that has an extra 1 added just for fun
#
case $version_type in
# correct linux to gnu/linux during the next big refactor
darwin|linux|osf|windows|none)
func_arith $number_major + $number_minor
current=$func_arith_result
- age="$number_minor"
- revision="$number_revision"
+ age=$number_minor
+ revision=$number_revision
;;
freebsd-aout|freebsd-elf|qnx|sunos)
- current="$number_major"
- revision="$number_minor"
- age="0"
+ current=$number_major
+ revision=$number_minor
+ age=0
;;
irix|nonstopux)
func_arith $number_major + $number_minor
current=$func_arith_result
- age="$number_minor"
- revision="$number_minor"
+ age=$number_minor
+ revision=$number_minor
lt_irix_increment=no
;;
esac
;;
no)
- current="$1"
- revision="$2"
- age="$3"
+ current=$1
+ revision=$2
+ age=$3
;;
esac
@@ -7362,30 +8629,30 @@ func_mode_link ()
case $current in
0|[1-9]|[1-9][0-9]|[1-9][0-9][0-9]|[1-9][0-9][0-9][0-9]|[1-9][0-9][0-9][0-9][0-9]) ;;
*)
- func_error "CURRENT \`$current' must be a nonnegative integer"
- func_fatal_error "\`$vinfo' is not valid version information"
+ func_error "CURRENT '$current' must be a nonnegative integer"
+ func_fatal_error "'$vinfo' is not valid version information"
;;
esac
case $revision in
0|[1-9]|[1-9][0-9]|[1-9][0-9][0-9]|[1-9][0-9][0-9][0-9]|[1-9][0-9][0-9][0-9][0-9]) ;;
*)
- func_error "REVISION \`$revision' must be a nonnegative integer"
- func_fatal_error "\`$vinfo' is not valid version information"
+ func_error "REVISION '$revision' must be a nonnegative integer"
+ func_fatal_error "'$vinfo' is not valid version information"
;;
esac
case $age in
0|[1-9]|[1-9][0-9]|[1-9][0-9][0-9]|[1-9][0-9][0-9][0-9]|[1-9][0-9][0-9][0-9][0-9]) ;;
*)
- func_error "AGE \`$age' must be a nonnegative integer"
- func_fatal_error "\`$vinfo' is not valid version information"
+ func_error "AGE '$age' must be a nonnegative integer"
+ func_fatal_error "'$vinfo' is not valid version information"
;;
esac
if test "$age" -gt "$current"; then
- func_error "AGE \`$age' is greater than the current interface number \`$current'"
- func_fatal_error "\`$vinfo' is not valid version information"
+ func_error "AGE '$age' is greater than the current interface number '$current'"
+ func_fatal_error "'$vinfo' is not valid version information"
fi
# Calculate the version variables.
@@ -7400,26 +8667,35 @@ func_mode_link ()
# verstring for coding it into the library header
func_arith $current - $age
major=.$func_arith_result
- versuffix="$major.$age.$revision"
+ versuffix=$major.$age.$revision
# Darwin ld doesn't like 0 for these options...
func_arith $current + 1
minor_current=$func_arith_result
- xlcverstring="${wl}-compatibility_version ${wl}$minor_current ${wl}-current_version ${wl}$minor_current.$revision"
+ xlcverstring="$wl-compatibility_version $wl$minor_current $wl-current_version $wl$minor_current.$revision"
verstring="-compatibility_version $minor_current -current_version $minor_current.$revision"
+ # On Darwin other compilers
+ case $CC in
+ nagfor*)
+ verstring="$wl-compatibility_version $wl$minor_current $wl-current_version $wl$minor_current.$revision"
+ ;;
+ *)
+ verstring="-compatibility_version $minor_current -current_version $minor_current.$revision"
+ ;;
+ esac
;;
freebsd-aout)
- major=".$current"
- versuffix=".$current.$revision";
+ major=.$current
+ versuffix=.$current.$revision
;;
freebsd-elf)
- major=".$current"
- versuffix=".$current"
+ major=.$current
+ versuffix=.$current
;;
irix | nonstopux)
- if test "X$lt_irix_increment" = "Xno"; then
+ if test no = "$lt_irix_increment"; then
func_arith $current - $age
else
func_arith $current - $age + 1
@@ -7430,69 +8706,69 @@ func_mode_link ()
nonstopux) verstring_prefix=nonstopux ;;
*) verstring_prefix=sgi ;;
esac
- verstring="$verstring_prefix$major.$revision"
+ verstring=$verstring_prefix$major.$revision
# Add in all the interfaces that we are compatible with.
loop=$revision
- while test "$loop" -ne 0; do
+ while test 0 -ne "$loop"; do
func_arith $revision - $loop
iface=$func_arith_result
func_arith $loop - 1
loop=$func_arith_result
- verstring="$verstring_prefix$major.$iface:$verstring"
+ verstring=$verstring_prefix$major.$iface:$verstring
done
- # Before this point, $major must not contain `.'.
+ # Before this point, $major must not contain '.'.
major=.$major
- versuffix="$major.$revision"
+ versuffix=$major.$revision
;;
linux) # correct to gnu/linux during the next big refactor
func_arith $current - $age
major=.$func_arith_result
- versuffix="$major.$age.$revision"
+ versuffix=$major.$age.$revision
;;
osf)
func_arith $current - $age
major=.$func_arith_result
- versuffix=".$current.$age.$revision"
- verstring="$current.$age.$revision"
+ versuffix=.$current.$age.$revision
+ verstring=$current.$age.$revision
# Add in all the interfaces that we are compatible with.
loop=$age
- while test "$loop" -ne 0; do
+ while test 0 -ne "$loop"; do
func_arith $current - $loop
iface=$func_arith_result
func_arith $loop - 1
loop=$func_arith_result
- verstring="$verstring:${iface}.0"
+ verstring=$verstring:$iface.0
done
# Make executables depend on our current version.
- func_append verstring ":${current}.0"
+ func_append verstring ":$current.0"
;;
qnx)
- major=".$current"
- versuffix=".$current"
+ major=.$current
+ versuffix=.$current
;;
sunos)
- major=".$current"
- versuffix=".$current.$revision"
+ major=.$current
+ versuffix=.$current.$revision
;;
windows)
# Use '-' rather than '.', since we only want one
- # extension on DOS 8.3 filesystems.
+ # extension on DOS 8.3 file systems.
func_arith $current - $age
major=$func_arith_result
- versuffix="-$major"
+ versuffix=-$major
;;
*)
- func_fatal_configuration "unknown library version type \`$version_type'"
+ func_fatal_configuration "unknown library version type '$version_type'"
;;
esac
@@ -7506,42 +8782,45 @@ func_mode_link ()
verstring=
;;
*)
- verstring="0.0"
+ verstring=0.0
;;
esac
- if test "$need_version" = no; then
+ if test no = "$need_version"; then
versuffix=
else
- versuffix=".0.0"
+ versuffix=.0.0
fi
fi
# Remove version info from name if versioning should be avoided
- if test "$avoid_version" = yes && test "$need_version" = no; then
+ if test yes,no = "$avoid_version,$need_version"; then
major=
versuffix=
- verstring=""
+ verstring=
fi
# Check to see if the archive will have undefined symbols.
- if test "$allow_undefined" = yes; then
- if test "$allow_undefined_flag" = unsupported; then
- func_warning "undefined symbols not allowed in $host shared libraries"
- build_libtool_libs=no
- build_old_libs=yes
+ if test yes = "$allow_undefined"; then
+ if test unsupported = "$allow_undefined_flag"; then
+ if test yes = "$build_old_libs"; then
+ func_warning "undefined symbols not allowed in $host shared libraries; building static only"
+ build_libtool_libs=no
+ else
+ func_fatal_error "can't build $host shared library unless -no-undefined is specified"
+ fi
fi
else
# Don't allow undefined symbols.
- allow_undefined_flag="$no_undefined_flag"
+ allow_undefined_flag=$no_undefined_flag
fi
fi
- func_generate_dlsyms "$libname" "$libname" "yes"
+ func_generate_dlsyms "$libname" "$libname" :
func_append libobjs " $symfileobj"
- test "X$libobjs" = "X " && libobjs=
+ test " " = "$libobjs" && libobjs=
- if test "$opt_mode" != relink; then
+ if test relink != "$opt_mode"; then
# Remove our outputs, but don't remove object files since they
# may have been created when compiling PIC objects.
removelist=
@@ -7550,8 +8829,8 @@ func_mode_link ()
case $p in
*.$objext | *.gcno)
;;
- $output_objdir/$outputname | $output_objdir/$libname.* | $output_objdir/${libname}${release}.*)
- if test "X$precious_files_regex" != "X"; then
+ $output_objdir/$outputname | $output_objdir/$libname.* | $output_objdir/$libname$release.*)
+ if test -n "$precious_files_regex"; then
if $ECHO "$p" | $EGREP -e "$precious_files_regex" >/dev/null 2>&1
then
continue
@@ -7567,11 +8846,11 @@ func_mode_link ()
fi
# Now set the variables for building old libraries.
- if test "$build_old_libs" = yes && test "$build_libtool_libs" != convenience ; then
+ if test yes = "$build_old_libs" && test convenience != "$build_libtool_libs"; then
func_append oldlibs " $output_objdir/$libname.$libext"
# Transform .lo files to .o files.
- oldobjs="$objs "`$ECHO "$libobjs" | $SP2NL | $SED "/\.${libext}$/d; $lo2o" | $NL2SP`
+ oldobjs="$objs "`$ECHO "$libobjs" | $SP2NL | $SED "/\.$libext$/d; $lo2o" | $NL2SP`
fi
# Eliminate all temporary directories.
@@ -7592,13 +8871,13 @@ func_mode_link ()
*) func_append finalize_rpath " $libdir" ;;
esac
done
- if test "$hardcode_into_libs" != yes || test "$build_old_libs" = yes; then
+ if test yes != "$hardcode_into_libs" || test yes = "$build_old_libs"; then
dependency_libs="$temp_xrpath $dependency_libs"
fi
fi
# Make sure dlfiles contains only unique files that won't be dlpreopened
- old_dlfiles="$dlfiles"
+ old_dlfiles=$dlfiles
dlfiles=
for lib in $old_dlfiles; do
case " $dlprefiles $dlfiles " in
@@ -7608,7 +8887,7 @@ func_mode_link ()
done
# Make sure dlprefiles contains only unique files
- old_dlprefiles="$dlprefiles"
+ old_dlprefiles=$dlprefiles
dlprefiles=
for lib in $old_dlprefiles; do
case "$dlprefiles " in
@@ -7617,7 +8896,7 @@ func_mode_link ()
esac
done
- if test "$build_libtool_libs" = yes; then
+ if test yes = "$build_libtool_libs"; then
if test -n "$rpath"; then
case $host in
*-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-*-beos* | *-cegcc* | *-*-haiku*)
@@ -7641,7 +8920,7 @@ func_mode_link ()
;;
*)
# Add libc to deplibs on all other systems if necessary.
- if test "$build_libtool_need_lc" = "yes"; then
+ if test yes = "$build_libtool_need_lc"; then
func_append deplibs " -lc"
fi
;;
@@ -7657,9 +8936,9 @@ func_mode_link ()
# I'm not sure if I'm treating the release correctly. I think
# release should show up in the -l (ie -lgmp5) so we don't want to
# add it in twice. Is that correct?
- release=""
- versuffix=""
- major=""
+ release=
+ versuffix=
+ major=
newdeplibs=
droppeddeps=no
case $deplibs_check_method in
@@ -7688,20 +8967,20 @@ EOF
-l*)
func_stripname -l '' "$i"
name=$func_stripname_result
- if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then
+ if test yes = "$allow_libtool_libs_with_static_runtimes"; then
case " $predeps $postdeps " in
*" $i "*)
func_append newdeplibs " $i"
- i=""
+ i=
;;
esac
fi
- if test -n "$i" ; then
+ if test -n "$i"; then
libname=`eval "\\$ECHO \"$libname_spec\""`
deplib_matches=`eval "\\$ECHO \"$library_names_spec\""`
set dummy $deplib_matches; shift
deplib_match=$1
- if test `expr "$ldd_output" : ".*$deplib_match"` -ne 0 ; then
+ if test `expr "$ldd_output" : ".*$deplib_match"` -ne 0; then
func_append newdeplibs " $i"
else
droppeddeps=yes
@@ -7731,20 +9010,20 @@ EOF
$opt_dry_run || $RM conftest
if $LTCC $LTCFLAGS -o conftest conftest.c $i; then
ldd_output=`ldd conftest`
- if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then
+ if test yes = "$allow_libtool_libs_with_static_runtimes"; then
case " $predeps $postdeps " in
*" $i "*)
func_append newdeplibs " $i"
- i=""
+ i=
;;
esac
fi
- if test -n "$i" ; then
+ if test -n "$i"; then
libname=`eval "\\$ECHO \"$libname_spec\""`
deplib_matches=`eval "\\$ECHO \"$library_names_spec\""`
set dummy $deplib_matches; shift
deplib_match=$1
- if test `expr "$ldd_output" : ".*$deplib_match"` -ne 0 ; then
+ if test `expr "$ldd_output" : ".*$deplib_match"` -ne 0; then
func_append newdeplibs " $i"
else
droppeddeps=yes
@@ -7781,24 +9060,24 @@ EOF
-l*)
func_stripname -l '' "$a_deplib"
name=$func_stripname_result
- if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then
+ if test yes = "$allow_libtool_libs_with_static_runtimes"; then
case " $predeps $postdeps " in
*" $a_deplib "*)
func_append newdeplibs " $a_deplib"
- a_deplib=""
+ a_deplib=
;;
esac
fi
- if test -n "$a_deplib" ; then
+ if test -n "$a_deplib"; then
libname=`eval "\\$ECHO \"$libname_spec\""`
if test -n "$file_magic_glob"; then
libnameglob=`func_echo_all "$libname" | $SED -e $file_magic_glob`
else
libnameglob=$libname
fi
- test "$want_nocaseglob" = yes && nocaseglob=`shopt -p nocaseglob`
+ test yes = "$want_nocaseglob" && nocaseglob=`shopt -p nocaseglob`
for i in $lib_search_path $sys_lib_search_path $shlib_search_path; do
- if test "$want_nocaseglob" = yes; then
+ if test yes = "$want_nocaseglob"; then
shopt -s nocaseglob
potential_libs=`ls $i/$libnameglob[.-]* 2>/dev/null`
$nocaseglob
@@ -7816,25 +9095,25 @@ EOF
# We might still enter an endless loop, since a link
# loop can be closed while we follow links,
# but so what?
- potlib="$potent_lib"
+ potlib=$potent_lib
while test -h "$potlib" 2>/dev/null; do
- potliblink=`ls -ld $potlib | ${SED} 's/.* -> //'`
+ potliblink=`ls -ld $potlib | $SED 's/.* -> //'`
case $potliblink in
- [\\/]* | [A-Za-z]:[\\/]*) potlib="$potliblink";;
- *) potlib=`$ECHO "$potlib" | $SED 's,[^/]*$,,'`"$potliblink";;
+ [\\/]* | [A-Za-z]:[\\/]*) potlib=$potliblink;;
+ *) potlib=`$ECHO "$potlib" | $SED 's|[^/]*$||'`"$potliblink";;
esac
done
if eval $file_magic_cmd \"\$potlib\" 2>/dev/null |
$SED -e 10q |
$EGREP "$file_magic_regex" > /dev/null; then
func_append newdeplibs " $a_deplib"
- a_deplib=""
+ a_deplib=
break 2
fi
done
done
fi
- if test -n "$a_deplib" ; then
+ if test -n "$a_deplib"; then
droppeddeps=yes
echo
$ECHO "*** Warning: linker path does not have real file for library $a_deplib."
@@ -7842,7 +9121,7 @@ EOF
echo "*** you link to this library. But I can only do this if you have a"
echo "*** shared version of the library, which you do not appear to have"
echo "*** because I did check the linker path looking for a file starting"
- if test -z "$potlib" ; then
+ if test -z "$potlib"; then
$ECHO "*** with $libname but no candidates were found. (...for file magic test)"
else
$ECHO "*** with $libname and none of the candidates passed a file format test"
@@ -7865,30 +9144,30 @@ EOF
-l*)
func_stripname -l '' "$a_deplib"
name=$func_stripname_result
- if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then
+ if test yes = "$allow_libtool_libs_with_static_runtimes"; then
case " $predeps $postdeps " in
*" $a_deplib "*)
func_append newdeplibs " $a_deplib"
- a_deplib=""
+ a_deplib=
;;
esac
fi
- if test -n "$a_deplib" ; then
+ if test -n "$a_deplib"; then
libname=`eval "\\$ECHO \"$libname_spec\""`
for i in $lib_search_path $sys_lib_search_path $shlib_search_path; do
potential_libs=`ls $i/$libname[.-]* 2>/dev/null`
for potent_lib in $potential_libs; do
- potlib="$potent_lib" # see symlink-check above in file_magic test
+ potlib=$potent_lib # see symlink-check above in file_magic test
if eval "\$ECHO \"$potent_lib\"" 2>/dev/null | $SED 10q | \
$EGREP "$match_pattern_regex" > /dev/null; then
func_append newdeplibs " $a_deplib"
- a_deplib=""
+ a_deplib=
break 2
fi
done
done
fi
- if test -n "$a_deplib" ; then
+ if test -n "$a_deplib"; then
droppeddeps=yes
echo
$ECHO "*** Warning: linker path does not have real file for library $a_deplib."
@@ -7896,7 +9175,7 @@ EOF
echo "*** you link to this library. But I can only do this if you have a"
echo "*** shared version of the library, which you do not appear to have"
echo "*** because I did check the linker path looking for a file starting"
- if test -z "$potlib" ; then
+ if test -z "$potlib"; then
$ECHO "*** with $libname but no candidates were found. (...for regex pattern test)"
else
$ECHO "*** with $libname and none of the candidates passed a file format test"
@@ -7912,18 +9191,18 @@ EOF
done # Gone through all deplibs.
;;
none | unknown | *)
- newdeplibs=""
+ newdeplibs=
tmp_deplibs=`$ECHO " $deplibs" | $SED 's/ -lc$//; s/ -[LR][^ ]*//g'`
- if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then
- for i in $predeps $postdeps ; do
+ if test yes = "$allow_libtool_libs_with_static_runtimes"; then
+ for i in $predeps $postdeps; do
# can't use Xsed below, because $i might contain '/'
- tmp_deplibs=`$ECHO " $tmp_deplibs" | $SED "s,$i,,"`
+ tmp_deplibs=`$ECHO " $tmp_deplibs" | $SED "s|$i||"`
done
fi
case $tmp_deplibs in
*[!\ \ ]*)
echo
- if test "X$deplibs_check_method" = "Xnone"; then
+ if test none = "$deplibs_check_method"; then
echo "*** Warning: inter-library dependencies are not supported in this platform."
else
echo "*** Warning: inter-library dependencies are not known to be supported."
@@ -7947,8 +9226,8 @@ EOF
;;
esac
- if test "$droppeddeps" = yes; then
- if test "$module" = yes; then
+ if test yes = "$droppeddeps"; then
+ if test yes = "$module"; then
echo
echo "*** Warning: libtool could not satisfy all declared inter-library"
$ECHO "*** dependencies of module $libname. Therefore, libtool will create"
@@ -7957,12 +9236,12 @@ EOF
if test -z "$global_symbol_pipe"; then
echo
echo "*** However, this would only work if libtool was able to extract symbol"
- echo "*** lists from a program, using \`nm' or equivalent, but libtool could"
+ echo "*** lists from a program, using 'nm' or equivalent, but libtool could"
echo "*** not find such a program. So, this module is probably useless."
- echo "*** \`nm' from GNU binutils and a full rebuild may help."
+ echo "*** 'nm' from GNU binutils and a full rebuild may help."
fi
- if test "$build_old_libs" = no; then
- oldlibs="$output_objdir/$libname.$libext"
+ if test no = "$build_old_libs"; then
+ oldlibs=$output_objdir/$libname.$libext
build_libtool_libs=module
build_old_libs=yes
else
@@ -7973,14 +9252,14 @@ EOF
echo "*** automatically added whenever a program is linked with this library"
echo "*** or is declared to -dlopen it."
- if test "$allow_undefined" = no; then
+ if test no = "$allow_undefined"; then
echo
echo "*** Since this library must not contain undefined symbols,"
echo "*** because either the platform does not support them or"
echo "*** it was explicitly requested with -no-undefined,"
echo "*** libtool will only create a static version of it."
- if test "$build_old_libs" = no; then
- oldlibs="$output_objdir/$libname.$libext"
+ if test no = "$build_old_libs"; then
+ oldlibs=$output_objdir/$libname.$libext
build_libtool_libs=module
build_old_libs=yes
else
@@ -8026,7 +9305,7 @@ EOF
*) func_append new_libs " $deplib" ;;
esac
done
- deplibs="$new_libs"
+ deplibs=$new_libs
# All the library-specific variables (install_libdir is set above).
library_names=
@@ -8034,25 +9313,25 @@ EOF
dlname=
# Test again, we may have decided not to build it any more
- if test "$build_libtool_libs" = yes; then
- # Remove ${wl} instances when linking with ld.
+ if test yes = "$build_libtool_libs"; then
+ # Remove $wl instances when linking with ld.
# FIXME: should test the right _cmds variable.
case $archive_cmds in
*\$LD\ *) wl= ;;
esac
- if test "$hardcode_into_libs" = yes; then
+ if test yes = "$hardcode_into_libs"; then
# Hardcode the library paths
hardcode_libdirs=
dep_rpath=
- rpath="$finalize_rpath"
- test "$opt_mode" != relink && rpath="$compile_rpath$rpath"
+ rpath=$finalize_rpath
+ test relink = "$opt_mode" || rpath=$compile_rpath$rpath
for libdir in $rpath; do
if test -n "$hardcode_libdir_flag_spec"; then
if test -n "$hardcode_libdir_separator"; then
func_replace_sysroot "$libdir"
libdir=$func_replace_sysroot_result
if test -z "$hardcode_libdirs"; then
- hardcode_libdirs="$libdir"
+ hardcode_libdirs=$libdir
else
# Just accumulate the unique libdirs.
case $hardcode_libdir_separator$hardcode_libdirs$hardcode_libdir_separator in
@@ -8077,7 +9356,7 @@ EOF
# Substitute the hardcoded libdirs into the rpath.
if test -n "$hardcode_libdir_separator" &&
test -n "$hardcode_libdirs"; then
- libdir="$hardcode_libdirs"
+ libdir=$hardcode_libdirs
eval "dep_rpath=\"$hardcode_libdir_flag_spec\""
fi
if test -n "$runpath_var" && test -n "$perm_rpath"; then
@@ -8091,8 +9370,8 @@ EOF
test -n "$dep_rpath" && deplibs="$dep_rpath $deplibs"
fi
- shlibpath="$finalize_shlibpath"
- test "$opt_mode" != relink && shlibpath="$compile_shlibpath$shlibpath"
+ shlibpath=$finalize_shlibpath
+ test relink = "$opt_mode" || shlibpath=$compile_shlibpath$shlibpath
if test -n "$shlibpath"; then
eval "$shlibpath_var='$shlibpath\$$shlibpath_var'; export $shlibpath_var"
fi
@@ -8102,19 +9381,19 @@ EOF
eval library_names=\"$library_names_spec\"
set dummy $library_names
shift
- realname="$1"
+ realname=$1
shift
if test -n "$soname_spec"; then
eval soname=\"$soname_spec\"
else
- soname="$realname"
+ soname=$realname
fi
if test -z "$dlname"; then
dlname=$soname
fi
- lib="$output_objdir/$realname"
+ lib=$output_objdir/$realname
linknames=
for link
do
@@ -8128,7 +9407,7 @@ EOF
delfiles=
if test -n "$export_symbols" && test -n "$include_expsyms"; then
$opt_dry_run || cp "$export_symbols" "$output_objdir/$libname.uexp"
- export_symbols="$output_objdir/$libname.uexp"
+ export_symbols=$output_objdir/$libname.uexp
func_append delfiles " $export_symbols"
fi
@@ -8137,31 +9416,31 @@ EOF
cygwin* | mingw* | cegcc*)
if test -n "$export_symbols" && test -z "$export_symbols_regex"; then
# exporting using user supplied symfile
- if test "x`$SED 1q $export_symbols`" != xEXPORTS; then
+ func_dll_def_p "$export_symbols" || {
# and it's NOT already a .def file. Must figure out
# which of the given symbols are data symbols and tag
# them as such. So, trigger use of export_symbols_cmds.
# export_symbols gets reassigned inside the "prepare
# the list of exported symbols" if statement, so the
# include_expsyms logic still works.
- orig_export_symbols="$export_symbols"
+ orig_export_symbols=$export_symbols
export_symbols=
always_export_symbols=yes
- fi
+ }
fi
;;
esac
# Prepare the list of exported symbols
if test -z "$export_symbols"; then
- if test "$always_export_symbols" = yes || test -n "$export_symbols_regex"; then
- func_verbose "generating symbol list for \`$libname.la'"
- export_symbols="$output_objdir/$libname.exp"
+ if test yes = "$always_export_symbols" || test -n "$export_symbols_regex"; then
+ func_verbose "generating symbol list for '$libname.la'"
+ export_symbols=$output_objdir/$libname.exp
$opt_dry_run || $RM $export_symbols
cmds=$export_symbols_cmds
- save_ifs="$IFS"; IFS='~'
+ save_ifs=$IFS; IFS='~'
for cmd1 in $cmds; do
- IFS="$save_ifs"
+ IFS=$save_ifs
# Take the normal branch if the nm_file_list_spec branch
# doesn't work or if tool conversion is not needed.
case $nm_file_list_spec~$to_tool_file_cmd in
@@ -8175,7 +9454,7 @@ EOF
try_normal_branch=no
;;
esac
- if test "$try_normal_branch" = yes \
+ if test yes = "$try_normal_branch" \
&& { test "$len" -lt "$max_cmd_len" \
|| test "$max_cmd_len" -le -1; }
then
@@ -8186,7 +9465,7 @@ EOF
output_la=$func_basename_result
save_libobjs=$libobjs
save_output=$output
- output=${output_objdir}/${output_la}.nm
+ output=$output_objdir/$output_la.nm
func_to_tool_file "$output"
libobjs=$nm_file_list_spec$func_to_tool_file_result
func_append delfiles " $output"
@@ -8209,8 +9488,8 @@ EOF
break
fi
done
- IFS="$save_ifs"
- if test -n "$export_symbols_regex" && test "X$skipped_export" != "X:"; then
+ IFS=$save_ifs
+ if test -n "$export_symbols_regex" && test : != "$skipped_export"; then
func_show_eval '$EGREP -e "$export_symbols_regex" "$export_symbols" > "${export_symbols}T"'
func_show_eval '$MV "${export_symbols}T" "$export_symbols"'
fi
@@ -8218,16 +9497,16 @@ EOF
fi
if test -n "$export_symbols" && test -n "$include_expsyms"; then
- tmp_export_symbols="$export_symbols"
- test -n "$orig_export_symbols" && tmp_export_symbols="$orig_export_symbols"
+ tmp_export_symbols=$export_symbols
+ test -n "$orig_export_symbols" && tmp_export_symbols=$orig_export_symbols
$opt_dry_run || eval '$ECHO "$include_expsyms" | $SP2NL >> "$tmp_export_symbols"'
fi
- if test "X$skipped_export" != "X:" && test -n "$orig_export_symbols"; then
+ if test : != "$skipped_export" && test -n "$orig_export_symbols"; then
# The given exports_symbols file has to be filtered, so filter it.
- func_verbose "filter symbol list for \`$libname.la' to tag DATA exports"
+ func_verbose "filter symbol list for '$libname.la' to tag DATA exports"
# FIXME: $output_objdir/$libname.filter potentially contains lots of
- # 's' commands which not all seds can handle. GNU sed should be fine
+ # 's' commands, which not all seds can handle. GNU sed should be fine
# though. Also, the filter scales superlinearly with the number of
# global variables. join(1) would be nice here, but unfortunately
# isn't a blessed tool.
@@ -8246,11 +9525,11 @@ EOF
;;
esac
done
- deplibs="$tmp_deplibs"
+ deplibs=$tmp_deplibs
if test -n "$convenience"; then
if test -n "$whole_archive_flag_spec" &&
- test "$compiler_needs_object" = yes &&
+ test yes = "$compiler_needs_object" &&
test -z "$libobjs"; then
# extract the archives, so we have objects to list.
# TODO: could optimize this to just extract one archive.
@@ -8261,7 +9540,7 @@ EOF
eval libobjs=\"\$libobjs $whole_archive_flag_spec\"
test "X$libobjs" = "X " && libobjs=
else
- gentop="$output_objdir/${outputname}x"
+ gentop=$output_objdir/${outputname}x
func_append generated " $gentop"
func_extract_archives $gentop $convenience
@@ -8270,18 +9549,18 @@ EOF
fi
fi
- if test "$thread_safe" = yes && test -n "$thread_safe_flag_spec"; then
+ if test yes = "$thread_safe" && test -n "$thread_safe_flag_spec"; then
eval flag=\"$thread_safe_flag_spec\"
func_append linker_flags " $flag"
fi
# Make a backup of the uninstalled library when relinking
- if test "$opt_mode" = relink; then
+ if test relink = "$opt_mode"; then
$opt_dry_run || eval '(cd $output_objdir && $RM ${realname}U && $MV $realname ${realname}U)' || exit $?
fi
# Do each of the archive commands.
- if test "$module" = yes && test -n "$module_cmds" ; then
+ if test yes = "$module" && test -n "$module_cmds"; then
if test -n "$export_symbols" && test -n "$module_expsym_cmds"; then
eval test_cmds=\"$module_expsym_cmds\"
cmds=$module_expsym_cmds
@@ -8299,7 +9578,7 @@ EOF
fi
fi
- if test "X$skipped_export" != "X:" &&
+ if test : != "$skipped_export" &&
func_len " $test_cmds" &&
len=$func_len_result &&
test "$len" -lt "$max_cmd_len" || test "$max_cmd_len" -le -1; then
@@ -8332,8 +9611,8 @@ EOF
last_robj=
k=1
- if test -n "$save_libobjs" && test "X$skipped_export" != "X:" && test "$with_gnu_ld" = yes; then
- output=${output_objdir}/${output_la}.lnkscript
+ if test -n "$save_libobjs" && test : != "$skipped_export" && test yes = "$with_gnu_ld"; then
+ output=$output_objdir/$output_la.lnkscript
func_verbose "creating GNU ld script: $output"
echo 'INPUT (' > $output
for obj in $save_libobjs
@@ -8345,14 +9624,14 @@ EOF
func_append delfiles " $output"
func_to_tool_file "$output"
output=$func_to_tool_file_result
- elif test -n "$save_libobjs" && test "X$skipped_export" != "X:" && test "X$file_list_spec" != X; then
- output=${output_objdir}/${output_la}.lnk
+ elif test -n "$save_libobjs" && test : != "$skipped_export" && test -n "$file_list_spec"; then
+ output=$output_objdir/$output_la.lnk
func_verbose "creating linker input file list: $output"
: > $output
set x $save_libobjs
shift
firstobj=
- if test "$compiler_needs_object" = yes; then
+ if test yes = "$compiler_needs_object"; then
firstobj="$1 "
shift
fi
@@ -8367,7 +9646,7 @@ EOF
else
if test -n "$save_libobjs"; then
func_verbose "creating reloadable object files..."
- output=$output_objdir/$output_la-${k}.$objext
+ output=$output_objdir/$output_la-$k.$objext
eval test_cmds=\"$reload_cmds\"
func_len " $test_cmds"
len0=$func_len_result
@@ -8379,13 +9658,13 @@ EOF
func_len " $obj"
func_arith $len + $func_len_result
len=$func_arith_result
- if test "X$objlist" = X ||
+ if test -z "$objlist" ||
test "$len" -lt "$max_cmd_len"; then
func_append objlist " $obj"
else
# The command $test_cmds is almost too long, add a
# command to the queue.
- if test "$k" -eq 1 ; then
+ if test 1 -eq "$k"; then
# The first file doesn't have a previous command to add.
reload_objs=$objlist
eval concat_cmds=\"$reload_cmds\"
@@ -8395,10 +9674,10 @@ EOF
reload_objs="$objlist $last_robj"
eval concat_cmds=\"\$concat_cmds~$reload_cmds~\$RM $last_robj\"
fi
- last_robj=$output_objdir/$output_la-${k}.$objext
+ last_robj=$output_objdir/$output_la-$k.$objext
func_arith $k + 1
k=$func_arith_result
- output=$output_objdir/$output_la-${k}.$objext
+ output=$output_objdir/$output_la-$k.$objext
objlist=" $obj"
func_len " $last_robj"
func_arith $len0 + $func_len_result
@@ -8410,9 +9689,9 @@ EOF
# files will link in the last one created.
test -z "$concat_cmds" || concat_cmds=$concat_cmds~
reload_objs="$objlist $last_robj"
- eval concat_cmds=\"\${concat_cmds}$reload_cmds\"
+ eval concat_cmds=\"\$concat_cmds$reload_cmds\"
if test -n "$last_robj"; then
- eval concat_cmds=\"\${concat_cmds}~\$RM $last_robj\"
+ eval concat_cmds=\"\$concat_cmds~\$RM $last_robj\"
fi
func_append delfiles " $output"
@@ -8420,9 +9699,9 @@ EOF
output=
fi
- if ${skipped_export-false}; then
- func_verbose "generating symbol list for \`$libname.la'"
- export_symbols="$output_objdir/$libname.exp"
+ ${skipped_export-false} && {
+ func_verbose "generating symbol list for '$libname.la'"
+ export_symbols=$output_objdir/$libname.exp
$opt_dry_run || $RM $export_symbols
libobjs=$output
# Append the command to create the export file.
@@ -8431,16 +9710,16 @@ EOF
if test -n "$last_robj"; then
eval concat_cmds=\"\$concat_cmds~\$RM $last_robj\"
fi
- fi
+ }
test -n "$save_libobjs" &&
func_verbose "creating a temporary reloadable object file: $output"
# Loop through the commands generated above and execute them.
- save_ifs="$IFS"; IFS='~'
+ save_ifs=$IFS; IFS='~'
for cmd in $concat_cmds; do
- IFS="$save_ifs"
- $opt_silent || {
+ IFS=$save_ifs
+ $opt_quiet || {
func_quote_for_expand "$cmd"
eval "func_echo $func_quote_for_expand_result"
}
@@ -8448,7 +9727,7 @@ EOF
lt_exit=$?
# Restore the uninstalled library and exit
- if test "$opt_mode" = relink; then
+ if test relink = "$opt_mode"; then
( cd "$output_objdir" && \
$RM "${realname}T" && \
$MV "${realname}U" "$realname" )
@@ -8457,7 +9736,7 @@ EOF
exit $lt_exit
}
done
- IFS="$save_ifs"
+ IFS=$save_ifs
if test -n "$export_symbols_regex" && ${skipped_export-false}; then
func_show_eval '$EGREP -e "$export_symbols_regex" "$export_symbols" > "${export_symbols}T"'
@@ -8465,18 +9744,18 @@ EOF
fi
fi
- if ${skipped_export-false}; then
+ ${skipped_export-false} && {
if test -n "$export_symbols" && test -n "$include_expsyms"; then
- tmp_export_symbols="$export_symbols"
- test -n "$orig_export_symbols" && tmp_export_symbols="$orig_export_symbols"
+ tmp_export_symbols=$export_symbols
+ test -n "$orig_export_symbols" && tmp_export_symbols=$orig_export_symbols
$opt_dry_run || eval '$ECHO "$include_expsyms" | $SP2NL >> "$tmp_export_symbols"'
fi
if test -n "$orig_export_symbols"; then
# The given exports_symbols file has to be filtered, so filter it.
- func_verbose "filter symbol list for \`$libname.la' to tag DATA exports"
+ func_verbose "filter symbol list for '$libname.la' to tag DATA exports"
# FIXME: $output_objdir/$libname.filter potentially contains lots of
- # 's' commands which not all seds can handle. GNU sed should be fine
+ # 's' commands, which not all seds can handle. GNU sed should be fine
# though. Also, the filter scales superlinearly with the number of
# global variables. join(1) would be nice here, but unfortunately
# isn't a blessed tool.
@@ -8485,7 +9764,7 @@ EOF
export_symbols=$output_objdir/$libname.def
$opt_dry_run || $SED -f $output_objdir/$libname.filter < $orig_export_symbols > $export_symbols
fi
- fi
+ }
libobjs=$output
# Restore the value of output.
@@ -8499,7 +9778,7 @@ EOF
# value of $libobjs for piecewise linking.
# Do each of the archive commands.
- if test "$module" = yes && test -n "$module_cmds" ; then
+ if test yes = "$module" && test -n "$module_cmds"; then
if test -n "$export_symbols" && test -n "$module_expsym_cmds"; then
cmds=$module_expsym_cmds
else
@@ -8521,7 +9800,7 @@ EOF
# Add any objects from preloaded convenience libraries
if test -n "$dlprefiles"; then
- gentop="$output_objdir/${outputname}x"
+ gentop=$output_objdir/${outputname}x
func_append generated " $gentop"
func_extract_archives $gentop $dlprefiles
@@ -8529,11 +9808,12 @@ EOF
test "X$libobjs" = "X " && libobjs=
fi
- save_ifs="$IFS"; IFS='~'
+ save_ifs=$IFS; IFS='~'
for cmd in $cmds; do
- IFS="$save_ifs"
+ IFS=$sp$nl
eval cmd=\"$cmd\"
- $opt_silent || {
+ IFS=$save_ifs
+ $opt_quiet || {
func_quote_for_expand "$cmd"
eval "func_echo $func_quote_for_expand_result"
}
@@ -8541,7 +9821,7 @@ EOF
lt_exit=$?
# Restore the uninstalled library and exit
- if test "$opt_mode" = relink; then
+ if test relink = "$opt_mode"; then
( cd "$output_objdir" && \
$RM "${realname}T" && \
$MV "${realname}U" "$realname" )
@@ -8550,10 +9830,10 @@ EOF
exit $lt_exit
}
done
- IFS="$save_ifs"
+ IFS=$save_ifs
# Restore the uninstalled library and exit
- if test "$opt_mode" = relink; then
+ if test relink = "$opt_mode"; then
$opt_dry_run || eval '(cd $output_objdir && $RM ${realname}T && $MV $realname ${realname}T && $MV ${realname}U $realname)' || exit $?
if test -n "$convenience"; then
@@ -8573,39 +9853,39 @@ EOF
done
# If -module or -export-dynamic was specified, set the dlname.
- if test "$module" = yes || test "$export_dynamic" = yes; then
+ if test yes = "$module" || test yes = "$export_dynamic"; then
# On all known operating systems, these are identical.
- dlname="$soname"
+ dlname=$soname
fi
fi
;;
obj)
- if test -n "$dlfiles$dlprefiles" || test "$dlself" != no; then
- func_warning "\`-dlopen' is ignored for objects"
+ if test -n "$dlfiles$dlprefiles" || test no != "$dlself"; then
+ func_warning "'-dlopen' is ignored for objects"
fi
case " $deplibs" in
*\ -l* | *\ -L*)
- func_warning "\`-l' and \`-L' are ignored for objects" ;;
+ func_warning "'-l' and '-L' are ignored for objects" ;;
esac
test -n "$rpath" && \
- func_warning "\`-rpath' is ignored for objects"
+ func_warning "'-rpath' is ignored for objects"
test -n "$xrpath" && \
- func_warning "\`-R' is ignored for objects"
+ func_warning "'-R' is ignored for objects"
test -n "$vinfo" && \
- func_warning "\`-version-info' is ignored for objects"
+ func_warning "'-version-info' is ignored for objects"
test -n "$release" && \
- func_warning "\`-release' is ignored for objects"
+ func_warning "'-release' is ignored for objects"
case $output in
*.lo)
test -n "$objs$old_deplibs" && \
- func_fatal_error "cannot build library object \`$output' from non-libtool objects"
+ func_fatal_error "cannot build library object '$output' from non-libtool objects"
libobj=$output
func_lo2o "$libobj"
@@ -8613,7 +9893,7 @@ EOF
;;
*)
libobj=
- obj="$output"
+ obj=$output
;;
esac
@@ -8636,7 +9916,7 @@ EOF
eval tmp_whole_archive_flags=\"$whole_archive_flag_spec\"
reload_conv_objs=$reload_objs\ `$ECHO "$tmp_whole_archive_flags" | $SED 's|,| |g'`
else
- gentop="$output_objdir/${obj}x"
+ gentop=$output_objdir/${obj}x
func_append generated " $gentop"
func_extract_archives $gentop $convenience
@@ -8645,12 +9925,12 @@ EOF
fi
# If we're not building shared, we need to use non_pic_objs
- test "$build_libtool_libs" != yes && libobjs="$non_pic_objects"
+ test yes = "$build_libtool_libs" || libobjs=$non_pic_objects
# Create the old-style object.
- reload_objs="$objs$old_deplibs "`$ECHO "$libobjs" | $SP2NL | $SED "/\.${libext}$/d; /\.lib$/d; $lo2o" | $NL2SP`" $reload_conv_objs" ### testsuite: skip nested quoting test
+ reload_objs=$objs$old_deplibs' '`$ECHO "$libobjs" | $SP2NL | $SED "/\.$libext$/d; /\.lib$/d; $lo2o" | $NL2SP`' '$reload_conv_objs
- output="$obj"
+ output=$obj
func_execute_cmds "$reload_cmds" 'exit $?'
# Exit if we aren't doing a library object file.
@@ -8662,7 +9942,7 @@ EOF
exit $EXIT_SUCCESS
fi
- if test "$build_libtool_libs" != yes; then
+ test yes = "$build_libtool_libs" || {
if test -n "$gentop"; then
func_show_eval '${RM}r "$gentop"'
fi
@@ -8672,12 +9952,12 @@ EOF
# $show "echo timestamp > $libobj"
# $opt_dry_run || eval "echo timestamp > $libobj" || exit $?
exit $EXIT_SUCCESS
- fi
+ }
- if test -n "$pic_flag" || test "$pic_mode" != default; then
+ if test -n "$pic_flag" || test default != "$pic_mode"; then
# Only do commands if we really have different PIC objects.
reload_objs="$libobjs $reload_conv_objs"
- output="$libobj"
+ output=$libobj
func_execute_cmds "$reload_cmds" 'exit $?'
fi
@@ -8694,16 +9974,14 @@ EOF
output=$func_stripname_result.exe;;
esac
test -n "$vinfo" && \
- func_warning "\`-version-info' is ignored for programs"
+ func_warning "'-version-info' is ignored for programs"
test -n "$release" && \
- func_warning "\`-release' is ignored for programs"
+ func_warning "'-release' is ignored for programs"
- test "$preload" = yes \
- && test "$dlopen_support" = unknown \
- && test "$dlopen_self" = unknown \
- && test "$dlopen_self_static" = unknown && \
- func_warning "\`LT_INIT([dlopen])' not used. Assuming no dlopen support."
+ $preload \
+ && test unknown,unknown,unknown = "$dlopen_support,$dlopen_self,$dlopen_self_static" \
+ && func_warning "'LT_INIT([dlopen])' not used. Assuming no dlopen support."
case $host in
*-*-rhapsody* | *-*-darwin1.[012])
@@ -8717,11 +9995,11 @@ EOF
*-*-darwin*)
# Don't allow lazy linking, it breaks C++ global constructors
# But is supposedly fixed on 10.4 or later (yay!).
- if test "$tagname" = CXX ; then
+ if test CXX = "$tagname"; then
case ${MACOSX_DEPLOYMENT_TARGET-10.0} in
10.[0123])
- func_append compile_command " ${wl}-bind_at_load"
- func_append finalize_command " ${wl}-bind_at_load"
+ func_append compile_command " $wl-bind_at_load"
+ func_append finalize_command " $wl-bind_at_load"
;;
esac
fi
@@ -8757,7 +10035,7 @@ EOF
*) func_append new_libs " $deplib" ;;
esac
done
- compile_deplibs="$new_libs"
+ compile_deplibs=$new_libs
func_append compile_command " $compile_deplibs"
@@ -8781,7 +10059,7 @@ EOF
if test -n "$hardcode_libdir_flag_spec"; then
if test -n "$hardcode_libdir_separator"; then
if test -z "$hardcode_libdirs"; then
- hardcode_libdirs="$libdir"
+ hardcode_libdirs=$libdir
else
# Just accumulate the unique libdirs.
case $hardcode_libdir_separator$hardcode_libdirs$hardcode_libdir_separator in
@@ -8804,7 +10082,7 @@ EOF
fi
case $host in
*-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-cegcc*)
- testbindir=`${ECHO} "$libdir" | ${SED} -e 's*/lib$*/bin*'`
+ testbindir=`$ECHO "$libdir" | $SED -e 's*/lib$*/bin*'`
case :$dllsearchpath: in
*":$libdir:"*) ;;
::) dllsearchpath=$libdir;;
@@ -8821,10 +10099,10 @@ EOF
# Substitute the hardcoded libdirs into the rpath.
if test -n "$hardcode_libdir_separator" &&
test -n "$hardcode_libdirs"; then
- libdir="$hardcode_libdirs"
+ libdir=$hardcode_libdirs
eval rpath=\" $hardcode_libdir_flag_spec\"
fi
- compile_rpath="$rpath"
+ compile_rpath=$rpath
rpath=
hardcode_libdirs=
@@ -8832,7 +10110,7 @@ EOF
if test -n "$hardcode_libdir_flag_spec"; then
if test -n "$hardcode_libdir_separator"; then
if test -z "$hardcode_libdirs"; then
- hardcode_libdirs="$libdir"
+ hardcode_libdirs=$libdir
else
# Just accumulate the unique libdirs.
case $hardcode_libdir_separator$hardcode_libdirs$hardcode_libdir_separator in
@@ -8857,45 +10135,43 @@ EOF
# Substitute the hardcoded libdirs into the rpath.
if test -n "$hardcode_libdir_separator" &&
test -n "$hardcode_libdirs"; then
- libdir="$hardcode_libdirs"
+ libdir=$hardcode_libdirs
eval rpath=\" $hardcode_libdir_flag_spec\"
fi
- finalize_rpath="$rpath"
+ finalize_rpath=$rpath
- if test -n "$libobjs" && test "$build_old_libs" = yes; then
+ if test -n "$libobjs" && test yes = "$build_old_libs"; then
# Transform all the library objects into standard objects.
compile_command=`$ECHO "$compile_command" | $SP2NL | $SED "$lo2o" | $NL2SP`
finalize_command=`$ECHO "$finalize_command" | $SP2NL | $SED "$lo2o" | $NL2SP`
fi
- func_generate_dlsyms "$outputname" "@PROGRAM@" "no"
+ func_generate_dlsyms "$outputname" "@PROGRAM@" false
# template prelinking step
if test -n "$prelink_cmds"; then
func_execute_cmds "$prelink_cmds" 'exit $?'
fi
- wrappers_required=yes
+ wrappers_required=:
case $host in
*cegcc* | *mingw32ce*)
# Disable wrappers for cegcc and mingw32ce hosts, we are cross compiling anyway.
- wrappers_required=no
+ wrappers_required=false
;;
*cygwin* | *mingw* )
- if test "$build_libtool_libs" != yes; then
- wrappers_required=no
- fi
+ test yes = "$build_libtool_libs" || wrappers_required=false
;;
*)
- if test "$need_relink" = no || test "$build_libtool_libs" != yes; then
- wrappers_required=no
+ if test no = "$need_relink" || test yes != "$build_libtool_libs"; then
+ wrappers_required=false
fi
;;
esac
- if test "$wrappers_required" = no; then
+ $wrappers_required || {
# Replace the output file specification.
compile_command=`$ECHO "$compile_command" | $SED 's%@OUTPUT@%'"$output"'%g'`
- link_command="$compile_command$compile_rpath"
+ link_command=$compile_command$compile_rpath
# We have no uninstalled library dependencies, so finalize right now.
exit_status=0
@@ -8908,12 +10184,12 @@ EOF
fi
# Delete the generated files.
- if test -f "$output_objdir/${outputname}S.${objext}"; then
- func_show_eval '$RM "$output_objdir/${outputname}S.${objext}"'
+ if test -f "$output_objdir/${outputname}S.$objext"; then
+ func_show_eval '$RM "$output_objdir/${outputname}S.$objext"'
fi
exit $exit_status
- fi
+ }
if test -n "$compile_shlibpath$finalize_shlibpath"; then
compile_command="$shlibpath_var=\"$compile_shlibpath$finalize_shlibpath\$$shlibpath_var\" $compile_command"
@@ -8943,9 +10219,9 @@ EOF
fi
fi
- if test "$no_install" = yes; then
+ if test yes = "$no_install"; then
# We don't need to create a wrapper script.
- link_command="$compile_var$compile_command$compile_rpath"
+ link_command=$compile_var$compile_command$compile_rpath
# Replace the output file specification.
link_command=`$ECHO "$link_command" | $SED 's%@OUTPUT@%'"$output"'%g'`
# Delete the old output file.
@@ -8962,27 +10238,28 @@ EOF
exit $EXIT_SUCCESS
fi
- if test "$hardcode_action" = relink; then
- # Fast installation is not supported
- link_command="$compile_var$compile_command$compile_rpath"
- relink_command="$finalize_var$finalize_command$finalize_rpath"
+ case $hardcode_action,$fast_install in
+ relink,*)
+ # Fast installation is not supported
+ link_command=$compile_var$compile_command$compile_rpath
+ relink_command=$finalize_var$finalize_command$finalize_rpath
- func_warning "this platform does not like uninstalled shared libraries"
- func_warning "\`$output' will be relinked during installation"
- else
- if test "$fast_install" != no; then
- link_command="$finalize_var$compile_command$finalize_rpath"
- if test "$fast_install" = yes; then
- relink_command=`$ECHO "$compile_var$compile_command$compile_rpath" | $SED 's%@OUTPUT@%\$progdir/\$file%g'`
- else
- # fast_install is set to needless
- relink_command=
- fi
- else
- link_command="$compile_var$compile_command$compile_rpath"
- relink_command="$finalize_var$finalize_command$finalize_rpath"
- fi
- fi
+ func_warning "this platform does not like uninstalled shared libraries"
+ func_warning "'$output' will be relinked during installation"
+ ;;
+ *,yes)
+ link_command=$finalize_var$compile_command$finalize_rpath
+ relink_command=`$ECHO "$compile_var$compile_command$compile_rpath" | $SED 's%@OUTPUT@%\$progdir/\$file%g'`
+ ;;
+ *,no)
+ link_command=$compile_var$compile_command$compile_rpath
+ relink_command=$finalize_var$finalize_command$finalize_rpath
+ ;;
+ *,needless)
+ link_command=$finalize_var$compile_command$finalize_rpath
+ relink_command=
+ ;;
+ esac
# Replace the output file specification.
link_command=`$ECHO "$link_command" | $SED 's%@OUTPUT@%'"$output_objdir/$outputname"'%g'`
@@ -9039,8 +10316,8 @@ EOF
func_dirname_and_basename "$output" "" "."
output_name=$func_basename_result
output_path=$func_dirname_result
- cwrappersource="$output_path/$objdir/lt-$output_name.c"
- cwrapper="$output_path/$output_name.exe"
+ cwrappersource=$output_path/$objdir/lt-$output_name.c
+ cwrapper=$output_path/$output_name.exe
$RM $cwrappersource $cwrapper
trap "$RM $cwrappersource $cwrapper; exit $EXIT_FAILURE" 1 2 15
@@ -9061,7 +10338,7 @@ EOF
trap "$RM $func_ltwrapper_scriptname_result; exit $EXIT_FAILURE" 1 2 15
$opt_dry_run || {
# note: this script will not be executed, so do not chmod.
- if test "x$build" = "x$host" ; then
+ if test "x$build" = "x$host"; then
$cwrapper --lt-dump-script > $func_ltwrapper_scriptname_result
else
func_emit_wrapper no > $func_ltwrapper_scriptname_result
@@ -9084,25 +10361,27 @@ EOF
# See if we need to build an old-fashioned archive.
for oldlib in $oldlibs; do
- if test "$build_libtool_libs" = convenience; then
- oldobjs="$libobjs_save $symfileobj"
- addlibs="$convenience"
- build_libtool_libs=no
- else
- if test "$build_libtool_libs" = module; then
- oldobjs="$libobjs_save"
+ case $build_libtool_libs in
+ convenience)
+ oldobjs="$libobjs_save $symfileobj"
+ addlibs=$convenience
build_libtool_libs=no
- else
+ ;;
+ module)
+ oldobjs=$libobjs_save
+ addlibs=$old_convenience
+ build_libtool_libs=no
+ ;;
+ *)
oldobjs="$old_deplibs $non_pic_objects"
- if test "$preload" = yes && test -f "$symfileobj"; then
- func_append oldobjs " $symfileobj"
- fi
- fi
- addlibs="$old_convenience"
- fi
+ $preload && test -f "$symfileobj" \
+ && func_append oldobjs " $symfileobj"
+ addlibs=$old_convenience
+ ;;
+ esac
if test -n "$addlibs"; then
- gentop="$output_objdir/${outputname}x"
+ gentop=$output_objdir/${outputname}x
func_append generated " $gentop"
func_extract_archives $gentop $addlibs
@@ -9110,13 +10389,13 @@ EOF
fi
# Do each command in the archive commands.
- if test -n "$old_archive_from_new_cmds" && test "$build_libtool_libs" = yes; then
+ if test -n "$old_archive_from_new_cmds" && test yes = "$build_libtool_libs"; then
cmds=$old_archive_from_new_cmds
else
# Add any objects from preloaded convenience libraries
if test -n "$dlprefiles"; then
- gentop="$output_objdir/${outputname}x"
+ gentop=$output_objdir/${outputname}x
func_append generated " $gentop"
func_extract_archives $gentop $dlprefiles
@@ -9137,7 +10416,7 @@ EOF
:
else
echo "copying selected object files to avoid basename conflicts..."
- gentop="$output_objdir/${outputname}x"
+ gentop=$output_objdir/${outputname}x
func_append generated " $gentop"
func_mkdir_p "$gentop"
save_oldobjs=$oldobjs
@@ -9146,7 +10425,7 @@ EOF
for obj in $save_oldobjs
do
func_basename "$obj"
- objbase="$func_basename_result"
+ objbase=$func_basename_result
case " $oldobjs " in
" ") oldobjs=$obj ;;
*[\ /]"$objbase "*)
@@ -9215,18 +10494,18 @@ EOF
else
# the above command should be used before it gets too long
oldobjs=$objlist
- if test "$obj" = "$last_oldobj" ; then
+ if test "$obj" = "$last_oldobj"; then
RANLIB=$save_RANLIB
fi
test -z "$concat_cmds" || concat_cmds=$concat_cmds~
- eval concat_cmds=\"\${concat_cmds}$old_archive_cmds\"
+ eval concat_cmds=\"\$concat_cmds$old_archive_cmds\"
objlist=
len=$len0
fi
done
RANLIB=$save_RANLIB
oldobjs=$objlist
- if test "X$oldobjs" = "X" ; then
+ if test -z "$oldobjs"; then
eval cmds=\"\$concat_cmds\"
else
eval cmds=\"\$concat_cmds~\$old_archive_cmds\"
@@ -9243,7 +10522,7 @@ EOF
case $output in
*.la)
old_library=
- test "$build_old_libs" = yes && old_library="$libname.$libext"
+ test yes = "$build_old_libs" && old_library=$libname.$libext
func_verbose "creating $output"
# Preserve any variables that may affect compiler behavior
@@ -9258,31 +10537,31 @@ EOF
fi
done
# Quote the link command for shipping.
- relink_command="(cd `pwd`; $SHELL $progpath $preserve_args --mode=relink $libtool_args @inst_prefix_dir@)"
+ relink_command="(cd `pwd`; $SHELL \"$progpath\" $preserve_args --mode=relink $libtool_args @inst_prefix_dir@)"
relink_command=`$ECHO "$relink_command" | $SED "$sed_quote_subst"`
- if test "$hardcode_automatic" = yes ; then
+ if test yes = "$hardcode_automatic"; then
relink_command=
fi
# Only create the output if not a dry run.
$opt_dry_run || {
for installed in no yes; do
- if test "$installed" = yes; then
+ if test yes = "$installed"; then
if test -z "$install_libdir"; then
break
fi
- output="$output_objdir/$outputname"i
+ output=$output_objdir/${outputname}i
# Replace all uninstalled libtool libraries with the installed ones
newdependency_libs=
for deplib in $dependency_libs; do
case $deplib in
*.la)
func_basename "$deplib"
- name="$func_basename_result"
+ name=$func_basename_result
func_resolve_sysroot "$deplib"
- eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $func_resolve_sysroot_result`
+ eval libdir=`$SED -n -e 's/^libdir=\(.*\)$/\1/p' $func_resolve_sysroot_result`
test -z "$libdir" && \
- func_fatal_error "\`$deplib' is not a valid libtool archive"
+ func_fatal_error "'$deplib' is not a valid libtool archive"
func_append newdependency_libs " ${lt_sysroot:+=}$libdir/$name"
;;
-L*)
@@ -9298,23 +10577,23 @@ EOF
*) func_append newdependency_libs " $deplib" ;;
esac
done
- dependency_libs="$newdependency_libs"
+ dependency_libs=$newdependency_libs
newdlfiles=
for lib in $dlfiles; do
case $lib in
*.la)
func_basename "$lib"
- name="$func_basename_result"
- eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $lib`
+ name=$func_basename_result
+ eval libdir=`$SED -n -e 's/^libdir=\(.*\)$/\1/p' $lib`
test -z "$libdir" && \
- func_fatal_error "\`$lib' is not a valid libtool archive"
+ func_fatal_error "'$lib' is not a valid libtool archive"
func_append newdlfiles " ${lt_sysroot:+=}$libdir/$name"
;;
*) func_append newdlfiles " $lib" ;;
esac
done
- dlfiles="$newdlfiles"
+ dlfiles=$newdlfiles
newdlprefiles=
for lib in $dlprefiles; do
case $lib in
@@ -9324,34 +10603,34 @@ EOF
# didn't already link the preopened objects directly into
# the library:
func_basename "$lib"
- name="$func_basename_result"
- eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $lib`
+ name=$func_basename_result
+ eval libdir=`$SED -n -e 's/^libdir=\(.*\)$/\1/p' $lib`
test -z "$libdir" && \
- func_fatal_error "\`$lib' is not a valid libtool archive"
+ func_fatal_error "'$lib' is not a valid libtool archive"
func_append newdlprefiles " ${lt_sysroot:+=}$libdir/$name"
;;
esac
done
- dlprefiles="$newdlprefiles"
+ dlprefiles=$newdlprefiles
else
newdlfiles=
for lib in $dlfiles; do
case $lib in
- [\\/]* | [A-Za-z]:[\\/]*) abs="$lib" ;;
+ [\\/]* | [A-Za-z]:[\\/]*) abs=$lib ;;
*) abs=`pwd`"/$lib" ;;
esac
func_append newdlfiles " $abs"
done
- dlfiles="$newdlfiles"
+ dlfiles=$newdlfiles
newdlprefiles=
for lib in $dlprefiles; do
case $lib in
- [\\/]* | [A-Za-z]:[\\/]*) abs="$lib" ;;
+ [\\/]* | [A-Za-z]:[\\/]*) abs=$lib ;;
*) abs=`pwd`"/$lib" ;;
esac
func_append newdlprefiles " $abs"
done
- dlprefiles="$newdlprefiles"
+ dlprefiles=$newdlprefiles
fi
$RM $output
# place dlname in correct position for cygwin
@@ -9367,10 +10646,9 @@ EOF
case $host,$output,$installed,$module,$dlname in
*cygwin*,*lai,yes,no,*.dll | *mingw*,*lai,yes,no,*.dll | *cegcc*,*lai,yes,no,*.dll)
# If a -bindir argument was supplied, place the dll there.
- if test "x$bindir" != x ;
- then
+ if test -n "$bindir"; then
func_relative_path "$install_libdir" "$bindir"
- tdlname=$func_relative_path_result$dlname
+ tdlname=$func_relative_path_result/$dlname
else
# Otherwise fall back on heuristic.
tdlname=../bin/$dlname
@@ -9379,7 +10657,7 @@ EOF
esac
$ECHO > $output "\
# $outputname - a libtool library file
-# Generated by $PROGRAM (GNU $PACKAGE$TIMESTAMP) $VERSION
+# Generated by $PROGRAM (GNU $PACKAGE) $VERSION
#
# Please DO NOT delete this file!
# It is necessary for linking the library.
@@ -9393,7 +10671,7 @@ library_names='$library_names'
# The name of the static archive.
old_library='$old_library'
-# Linker flags that can not go in dependency_libs.
+# Linker flags that cannot go in dependency_libs.
inherited_linker_flags='$new_inherited_linker_flags'
# Libraries that this one depends upon.
@@ -9419,7 +10697,7 @@ dlpreopen='$dlprefiles'
# Directory that this library needs to be installed in:
libdir='$install_libdir'"
- if test "$installed" = no && test "$need_relink" = yes; then
+ if test no,yes = "$installed,$need_relink"; then
$ECHO >> $output "\
relink_command=\"$relink_command\""
fi
@@ -9434,27 +10712,29 @@ relink_command=\"$relink_command\""
exit $EXIT_SUCCESS
}
-{ test "$opt_mode" = link || test "$opt_mode" = relink; } &&
- func_mode_link ${1+"$@"}
+if test link = "$opt_mode" || test relink = "$opt_mode"; then
+ func_mode_link ${1+"$@"}
+fi
# func_mode_uninstall arg...
func_mode_uninstall ()
{
- $opt_debug
- RM="$nonopt"
+ $debug_cmd
+
+ RM=$nonopt
files=
- rmforce=
+ rmforce=false
exit_status=0
# This variable tells wrapper scripts just to set variables rather
# than running their programs.
- libtool_install_magic="$magic"
+ libtool_install_magic=$magic
for arg
do
case $arg in
- -f) func_append RM " $arg"; rmforce=yes ;;
+ -f) func_append RM " $arg"; rmforce=: ;;
-*) func_append RM " $arg" ;;
*) func_append files " $arg" ;;
esac
@@ -9467,18 +10747,18 @@ func_mode_uninstall ()
for file in $files; do
func_dirname "$file" "" "."
- dir="$func_dirname_result"
- if test "X$dir" = X.; then
- odir="$objdir"
+ dir=$func_dirname_result
+ if test . = "$dir"; then
+ odir=$objdir
else
- odir="$dir/$objdir"
+ odir=$dir/$objdir
fi
func_basename "$file"
- name="$func_basename_result"
- test "$opt_mode" = uninstall && odir="$dir"
+ name=$func_basename_result
+ test uninstall = "$opt_mode" && odir=$dir
# Remember odir for removal later, being careful to avoid duplicates
- if test "$opt_mode" = clean; then
+ if test clean = "$opt_mode"; then
case " $rmdirs " in
*" $odir "*) ;;
*) func_append rmdirs " $odir" ;;
@@ -9493,11 +10773,11 @@ func_mode_uninstall ()
elif test -d "$file"; then
exit_status=1
continue
- elif test "$rmforce" = yes; then
+ elif $rmforce; then
continue
fi
- rmfiles="$file"
+ rmfiles=$file
case $name in
*.la)
@@ -9511,7 +10791,7 @@ func_mode_uninstall ()
done
test -n "$old_library" && func_append rmfiles " $odir/$old_library"
- case "$opt_mode" in
+ case $opt_mode in
clean)
case " $library_names " in
*" $dlname "*) ;;
@@ -9522,12 +10802,12 @@ func_mode_uninstall ()
uninstall)
if test -n "$library_names"; then
# Do each command in the postuninstall commands.
- func_execute_cmds "$postuninstall_cmds" 'test "$rmforce" = yes || exit_status=1'
+ func_execute_cmds "$postuninstall_cmds" '$rmforce || exit_status=1'
fi
if test -n "$old_library"; then
# Do each command in the old_postuninstall commands.
- func_execute_cmds "$old_postuninstall_cmds" 'test "$rmforce" = yes || exit_status=1'
+ func_execute_cmds "$old_postuninstall_cmds" '$rmforce || exit_status=1'
fi
# FIXME: should reinstall the best remaining shared library.
;;
@@ -9543,21 +10823,19 @@ func_mode_uninstall ()
func_source $dir/$name
# Add PIC object to the list of files to remove.
- if test -n "$pic_object" &&
- test "$pic_object" != none; then
+ if test -n "$pic_object" && test none != "$pic_object"; then
func_append rmfiles " $dir/$pic_object"
fi
# Add non-PIC object to the list of files to remove.
- if test -n "$non_pic_object" &&
- test "$non_pic_object" != none; then
+ if test -n "$non_pic_object" && test none != "$non_pic_object"; then
func_append rmfiles " $dir/$non_pic_object"
fi
fi
;;
*)
- if test "$opt_mode" = clean ; then
+ if test clean = "$opt_mode"; then
noexename=$name
case $file in
*.exe)
@@ -9584,12 +10862,12 @@ func_mode_uninstall ()
# note $name still contains .exe if it was in $file originally
# as does the version of $file that was added into $rmfiles
- func_append rmfiles " $odir/$name $odir/${name}S.${objext}"
- if test "$fast_install" = yes && test -n "$relink_command"; then
+ func_append rmfiles " $odir/$name $odir/${name}S.$objext"
+ if test yes = "$fast_install" && test -n "$relink_command"; then
func_append rmfiles " $odir/lt-$name"
fi
- if test "X$noexename" != "X$name" ; then
- func_append rmfiles " $odir/lt-${noexename}.c"
+ if test "X$noexename" != "X$name"; then
+ func_append rmfiles " $odir/lt-$noexename.c"
fi
fi
fi
@@ -9598,7 +10876,7 @@ func_mode_uninstall ()
func_show_eval "$RM $rmfiles" 'exit_status=1'
done
- # Try to remove the ${objdir}s in the directories where we deleted files
+ # Try to remove the $objdir's in the directories where we deleted files
for dir in $rmdirs; do
if test -d "$dir"; then
func_show_eval "rmdir $dir >/dev/null 2>&1"
@@ -9608,16 +10886,17 @@ func_mode_uninstall ()
exit $exit_status
}
-{ test "$opt_mode" = uninstall || test "$opt_mode" = clean; } &&
- func_mode_uninstall ${1+"$@"}
+if test uninstall = "$opt_mode" || test clean = "$opt_mode"; then
+ func_mode_uninstall ${1+"$@"}
+fi
test -z "$opt_mode" && {
- help="$generic_help"
+ help=$generic_help
func_fatal_help "you must specify a MODE"
}
test -z "$exec_cmd" && \
- func_fatal_help "invalid operation mode \`$opt_mode'"
+ func_fatal_help "invalid operation mode '$opt_mode'"
if test -n "$exec_cmd"; then
eval exec "$exec_cmd"
@@ -9628,7 +10907,7 @@ exit $exit_status
# The TAGs below are defined such that we never get into a situation
-# in which we disable both kinds of libraries. Given conflicting
+# where we disable both kinds of libraries. Given conflicting
# choices, we go for a static library, that is the most portable,
# since we can't tell whether shared libraries were disabled because
# the user asked for that or because the platform doesn't support
@@ -9651,5 +10930,3 @@ build_old_libs=`case $build_libtool_libs in yes) echo no;; *) echo yes;; esac`
# mode:shell-script
# sh-indentation:2
# End:
-# vi:sw=2
-
diff --git a/extension/configh.in b/extension/configh.in
index 847a5193..57c9ec3e 100644
--- a/extension/configh.in
+++ b/extension/configh.in
@@ -30,7 +30,8 @@
*/
#undef HAVE_DECL_DIRFD
-/* Define to 1 if you have the <dirent.h> header file. */
+/* Define to 1 if you have the <dirent.h> header file, and it defines `DIR'.
+ */
#undef HAVE_DIRENT_H
/* Define to 1 if you have the `dirfd' function. */
@@ -81,6 +82,9 @@
/* Define to 1 if you have the `nanosleep' function. */
#undef HAVE_NANOSLEEP
+/* Define to 1 if you have the <ndir.h> header file, and it defines `DIR'. */
+#undef HAVE_NDIR_H
+
/* Define to 1 if you have the `select' function. */
#undef HAVE_SELECT
@@ -108,6 +112,14 @@
/* Define to 1 if `st_blksize' is a member of `struct stat'. */
#undef HAVE_STRUCT_STAT_ST_BLKSIZE
+/* Define to 1 if you have the <sys/dir.h> header file, and it defines `DIR'.
+ */
+#undef HAVE_SYS_DIR_H
+
+/* Define to 1 if you have the <sys/ndir.h> header file, and it defines `DIR'.
+ */
+#undef HAVE_SYS_NDIR_H
+
/* Define to 1 if you have the <sys/param.h> header file. */
#undef HAVE_SYS_PARAM_H
@@ -123,14 +135,10 @@
/* Define to 1 if you have the <sys/types.h> header file. */
#undef HAVE_SYS_TYPES_H
-/* Define to 1 if you have the <time.h> header file. */
-#undef HAVE_TIME_H
-
/* Define to 1 if you have the <unistd.h> header file. */
#undef HAVE_UNISTD_H
-/* Define to the sub-directory in which libtool stores uninstalled libraries.
- */
+/* Define to the sub-directory where libtool stores uninstalled libraries. */
#undef LT_OBJDIR
/* Define to 1 if `major', `minor', and `makedev' are declared in <mkdev.h>.
@@ -165,6 +173,9 @@
/* Define to 1 if you have the ANSI C header files. */
#undef STDC_HEADERS
+/* Define to 1 if you can safely include both <sys/time.h> and <time.h>. */
+#undef TIME_WITH_SYS_TIME
+
/* Enable extensions on AIX 3, Interix. */
#ifndef _ALL_SOURCE
# undef _ALL_SOURCE
diff --git a/extension/configure b/extension/configure
index efae5568..006c9d79 100755
--- a/extension/configure
+++ b/extension/configure
@@ -1,6 +1,6 @@
#! /bin/sh
# Guess values for system-dependent variables and create Makefiles.
-# Generated by GNU Autoconf 2.69 for GNU Awk Bundled Extensions 4.1.0.
+# Generated by GNU Autoconf 2.69 for GNU Awk Bundled Extensions 4.1.1.
#
# Report bugs to <bug-gawk@gnu.org>.
#
@@ -590,8 +590,8 @@ MAKEFLAGS=
# Identity of this package.
PACKAGE_NAME='GNU Awk Bundled Extensions'
PACKAGE_TARNAME='gawk-extensions'
-PACKAGE_VERSION='4.1.0'
-PACKAGE_STRING='GNU Awk Bundled Extensions 4.1.0'
+PACKAGE_VERSION='4.1.1'
+PACKAGE_STRING='GNU Awk Bundled Extensions 4.1.1'
PACKAGE_BUGREPORT='bug-gawk@gnu.org'
PACKAGE_URL='http://www.gnu.org/software/gawk-extensions/'
@@ -1333,7 +1333,7 @@ if test "$ac_init_help" = "long"; then
# Omit some internal or obsolete options to make the list less imposing.
# This message is too long to be a string in the A/UX 3.1 sh.
cat <<_ACEOF
-\`configure' configures GNU Awk Bundled Extensions 4.1.0 to adapt to many kinds of systems.
+\`configure' configures GNU Awk Bundled Extensions 4.1.1 to adapt to many kinds of systems.
Usage: $0 [OPTION]... [VAR=VALUE]...
@@ -1403,7 +1403,7 @@ fi
if test -n "$ac_init_help"; then
case $ac_init_help in
- short | recursive ) echo "Configuration of GNU Awk Bundled Extensions 4.1.0:";;
+ short | recursive ) echo "Configuration of GNU Awk Bundled Extensions 4.1.1:";;
esac
cat <<\_ACEOF
@@ -1437,8 +1437,8 @@ Optional Packages:
--with-pic[=PKGS] try to use only PIC/non-PIC objects [default=use
both]
--with-gnu-ld assume the C compiler uses GNU ld [default=no]
- --with-sysroot=DIR Search for dependent libraries within DIR
- (or the compiler's sysroot if not specified).
+ --with-sysroot[=DIR] Search for dependent libraries within DIR (or the
+ compiler's sysroot if not specified).
Some influential environment variables:
CC C compiler command
@@ -1518,7 +1518,7 @@ fi
test -n "$ac_init_help" && exit $ac_status
if $ac_init_version; then
cat <<\_ACEOF
-GNU Awk Bundled Extensions configure 4.1.0
+GNU Awk Bundled Extensions configure 4.1.1
generated by GNU Autoconf 2.69
Copyright (C) 2012 Free Software Foundation, Inc.
@@ -1990,7 +1990,7 @@ cat >config.log <<_ACEOF
This file contains any messages produced by compilers while
running configure, to aid debugging if configure makes a mistake.
-It was created by GNU Awk Bundled Extensions $as_me 4.1.0, which was
+It was created by GNU Awk Bundled Extensions $as_me 4.1.1, which was
generated by GNU Autoconf 2.69. Invocation command line was
$ $0 $@
@@ -4172,7 +4172,7 @@ fi
# Define the identity of the package.
PACKAGE='gawk-extensions'
- VERSION='4.1.0'
+ VERSION='4.1.1'
cat >>confdefs.h <<_ACEOF
@@ -4212,11 +4212,16 @@ mkdir_p='$(MKDIR_P)'
# in the wild :-( We should find a proper way to deprecate it ...
AMTAR='$${TAR-tar}'
+
+# We'll loop over all known methods to create a tar archive until one works.
+_am_tools='gnutar pax cpio none'
+
am__tar='$${TAR-tar} chof - "$$tardir"' am__untar='$${TAR-tar} xf -'
+
depcc="$CC" am_compiler_list=
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking dependency style of $depcc" >&5
@@ -6819,14 +6824,14 @@ if test "${enable_static+set}" = set; then :
*)
enable_static=no
# Look at the argument we got. We use all the common list separators.
- lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR,"
+ lt_save_ifs=$IFS; IFS=$IFS$PATH_SEPARATOR,
for pkg in $enableval; do
- IFS="$lt_save_ifs"
+ IFS=$lt_save_ifs
if test "X$pkg" = "X$p"; then
enable_static=yes
fi
done
- IFS="$lt_save_ifs"
+ IFS=$lt_save_ifs
;;
esac
else
@@ -6849,8 +6854,8 @@ esac
-macro_version='2.4.2'
-macro_revision='1.3337'
+macro_version='2.4.2.418'
+macro_revision='2.4.2.418'
@@ -6864,7 +6869,7 @@ macro_revision='1.3337'
-ltmain="$ac_aux_dir/ltmain.sh"
+ltmain=$ac_aux_dir/ltmain.sh
# Backslashify metacharacters that are still active within
# double-quoted strings.
@@ -6913,7 +6918,7 @@ func_echo_all ()
$ECHO ""
}
-case "$ECHO" in
+case $ECHO in
printf*) { $as_echo "$as_me:${as_lineno-$LINENO}: result: printf" >&5
$as_echo "printf" >&6; } ;;
print*) { $as_echo "$as_me:${as_lineno-$LINENO}: result: print -r" >&5
@@ -7106,19 +7111,19 @@ test -z "$GREP" && GREP=grep
# Check whether --with-gnu-ld was given.
if test "${with_gnu_ld+set}" = set; then :
- withval=$with_gnu_ld; test "$withval" = no || with_gnu_ld=yes
+ withval=$with_gnu_ld; test no = "$withval" || with_gnu_ld=yes
else
with_gnu_ld=no
fi
ac_prog=ld
-if test "$GCC" = yes; then
+if test yes = "$GCC"; then
# Check if gcc -print-prog-name=ld gives a path.
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for ld used by $CC" >&5
$as_echo_n "checking for ld used by $CC... " >&6; }
case $host in
*-*-mingw*)
- # gcc leaves a trailing carriage return which upsets mingw
+ # gcc leaves a trailing carriage return, which upsets mingw
ac_prog=`($CC -print-prog-name=ld) 2>&5 | tr -d '\015'` ;;
*)
ac_prog=`($CC -print-prog-name=ld) 2>&5` ;;
@@ -7132,7 +7137,7 @@ $as_echo_n "checking for ld used by $CC... " >&6; }
while $ECHO "$ac_prog" | $GREP "$re_direlt" > /dev/null 2>&1; do
ac_prog=`$ECHO $ac_prog| $SED "s%$re_direlt%/%"`
done
- test -z "$LD" && LD="$ac_prog"
+ test -z "$LD" && LD=$ac_prog
;;
"")
# If it fails, then pretend we aren't using GCC.
@@ -7143,7 +7148,7 @@ $as_echo_n "checking for ld used by $CC... " >&6; }
with_gnu_ld=unknown
;;
esac
-elif test "$with_gnu_ld" = yes; then
+elif test yes = "$with_gnu_ld"; then
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for GNU ld" >&5
$as_echo_n "checking for GNU ld... " >&6; }
else
@@ -7154,32 +7159,32 @@ if ${lt_cv_path_LD+:} false; then :
$as_echo_n "(cached) " >&6
else
if test -z "$LD"; then
- lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR
+ lt_save_ifs=$IFS; IFS=$PATH_SEPARATOR
for ac_dir in $PATH; do
- IFS="$lt_save_ifs"
+ IFS=$lt_save_ifs
test -z "$ac_dir" && ac_dir=.
if test -f "$ac_dir/$ac_prog" || test -f "$ac_dir/$ac_prog$ac_exeext"; then
- lt_cv_path_LD="$ac_dir/$ac_prog"
+ lt_cv_path_LD=$ac_dir/$ac_prog
# Check to see if the program is GNU ld. I'd rather use --version,
# but apparently some variants of GNU ld only accept -v.
# Break only if it was the GNU/non-GNU ld that we prefer.
case `"$lt_cv_path_LD" -v 2>&1 </dev/null` in
*GNU* | *'with BFD'*)
- test "$with_gnu_ld" != no && break
+ test no != "$with_gnu_ld" && break
;;
*)
- test "$with_gnu_ld" != yes && break
+ test yes != "$with_gnu_ld" && break
;;
esac
fi
done
- IFS="$lt_save_ifs"
+ IFS=$lt_save_ifs
else
- lt_cv_path_LD="$LD" # Let the user override the test with a path.
+ lt_cv_path_LD=$LD # Let the user override the test with a path.
fi
fi
-LD="$lt_cv_path_LD"
+LD=$lt_cv_path_LD
if test -n "$LD"; then
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $LD" >&5
$as_echo "$LD" >&6; }
@@ -7222,33 +7227,33 @@ if ${lt_cv_path_NM+:} false; then :
else
if test -n "$NM"; then
# Let the user override the test.
- lt_cv_path_NM="$NM"
+ lt_cv_path_NM=$NM
else
- lt_nm_to_check="${ac_tool_prefix}nm"
+ lt_nm_to_check=${ac_tool_prefix}nm
if test -n "$ac_tool_prefix" && test "$build" = "$host"; then
lt_nm_to_check="$lt_nm_to_check nm"
fi
for lt_tmp_nm in $lt_nm_to_check; do
- lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR
+ lt_save_ifs=$IFS; IFS=$PATH_SEPARATOR
for ac_dir in $PATH /usr/ccs/bin/elf /usr/ccs/bin /usr/ucb /bin; do
- IFS="$lt_save_ifs"
+ IFS=$lt_save_ifs
test -z "$ac_dir" && ac_dir=.
- tmp_nm="$ac_dir/$lt_tmp_nm"
- if test -f "$tmp_nm" || test -f "$tmp_nm$ac_exeext" ; then
+ tmp_nm=$ac_dir/$lt_tmp_nm
+ if test -f "$tmp_nm" || test -f "$tmp_nm$ac_exeext"; then
# Check to see if the nm accepts a BSD-compat flag.
- # Adding the `sed 1q' prevents false positives on HP-UX, which says:
+ # Adding the 'sed 1q' prevents false positives on HP-UX, which says:
# nm: unknown option "B" ignored
# Tru64's nm complains that /dev/null is an invalid object file
case `"$tmp_nm" -B /dev/null 2>&1 | sed '1q'` in
*/dev/null* | *'Invalid file or object type'*)
lt_cv_path_NM="$tmp_nm -B"
- break
+ break 2
;;
*)
case `"$tmp_nm" -p /dev/null 2>&1 | sed '1q'` in
*/dev/null*)
lt_cv_path_NM="$tmp_nm -p"
- break
+ break 2
;;
*)
lt_cv_path_NM=${lt_cv_path_NM="$tmp_nm"} # keep the first match, but
@@ -7259,15 +7264,15 @@ else
esac
fi
done
- IFS="$lt_save_ifs"
+ IFS=$lt_save_ifs
done
: ${lt_cv_path_NM=no}
fi
fi
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_path_NM" >&5
$as_echo "$lt_cv_path_NM" >&6; }
-if test "$lt_cv_path_NM" != "no"; then
- NM="$lt_cv_path_NM"
+if test no != "$lt_cv_path_NM"; then
+ NM=$lt_cv_path_NM
else
# Didn't find any BSD compatible name lister, look for dumpbin.
if test -n "$DUMPBIN"; then :
@@ -7373,9 +7378,9 @@ esac
fi
fi
- case `$DUMPBIN -symbols /dev/null 2>&1 | sed '1q'` in
+ case `$DUMPBIN -symbols -headers /dev/null 2>&1 | sed '1q'` in
*COFF*)
- DUMPBIN="$DUMPBIN -symbols"
+ DUMPBIN="$DUMPBIN -symbols -headers"
;;
*)
DUMPBIN=:
@@ -7383,8 +7388,8 @@ fi
esac
fi
- if test "$DUMPBIN" != ":"; then
- NM="$DUMPBIN"
+ if test : != "$DUMPBIN"; then
+ NM=$DUMPBIN
fi
fi
test -z "$NM" && NM=nm
@@ -7435,7 +7440,7 @@ if ${lt_cv_sys_max_cmd_len+:} false; then :
$as_echo_n "(cached) " >&6
else
i=0
- teststring="ABCD"
+ teststring=ABCD
case $build_os in
msdosdjgpp*)
@@ -7475,7 +7480,7 @@ else
lt_cv_sys_max_cmd_len=8192;
;;
- netbsd* | freebsd* | openbsd* | darwin* | dragonfly*)
+ bitrig* | darwin* | dragonfly* | freebsd* | netbsd* | openbsd*)
# This has been around since 386BSD, at least. Likely further.
if test -x /sbin/sysctl; then
lt_cv_sys_max_cmd_len=`/sbin/sysctl -n kern.argmax`
@@ -7525,22 +7530,23 @@ else
;;
*)
lt_cv_sys_max_cmd_len=`(getconf ARG_MAX) 2> /dev/null`
- if test -n "$lt_cv_sys_max_cmd_len"; then
+ if test -n "$lt_cv_sys_max_cmd_len" && \
+ test undefined != "$lt_cv_sys_max_cmd_len"; then
lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 4`
lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \* 3`
else
# Make teststring a little bigger before we do anything with it.
# a 1K string should be a reasonable start.
- for i in 1 2 3 4 5 6 7 8 ; do
+ for i in 1 2 3 4 5 6 7 8; do
teststring=$teststring$teststring
done
SHELL=${SHELL-${CONFIG_SHELL-/bin/sh}}
# If test is not a shell built-in, we'll probably end up computing a
# maximum length that is only half of the actual maximum length, but
# we can't tell.
- while { test "X"`env echo "$teststring$teststring" 2>/dev/null` \
+ while { test X`env echo "$teststring$teststring" 2>/dev/null` \
= "X$teststring$teststring"; } >/dev/null 2>&1 &&
- test $i != 17 # 1/2 MB should be enough
+ test 17 != "$i" # 1/2 MB should be enough
do
i=`expr $i + 1`
teststring=$teststring$teststring
@@ -7558,7 +7564,7 @@ else
fi
-if test -n $lt_cv_sys_max_cmd_len ; then
+if test -n "$lt_cv_sys_max_cmd_len"; then
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_sys_max_cmd_len" >&5
$as_echo "$lt_cv_sys_max_cmd_len" >&6; }
else
@@ -7576,30 +7582,6 @@ max_cmd_len=$lt_cv_sys_max_cmd_len
: ${MV="mv -f"}
: ${RM="rm -f"}
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the shell understands some XSI constructs" >&5
-$as_echo_n "checking whether the shell understands some XSI constructs... " >&6; }
-# Try some XSI features
-xsi_shell=no
-( _lt_dummy="a/b/c"
- test "${_lt_dummy##*/},${_lt_dummy%/*},${_lt_dummy#??}"${_lt_dummy%"$_lt_dummy"}, \
- = c,a/b,b/c, \
- && eval 'test $(( 1 + 1 )) -eq 2 \
- && test "${#_lt_dummy}" -eq 5' ) >/dev/null 2>&1 \
- && xsi_shell=yes
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $xsi_shell" >&5
-$as_echo "$xsi_shell" >&6; }
-
-
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the shell understands \"+=\"" >&5
-$as_echo_n "checking whether the shell understands \"+=\"... " >&6; }
-lt_shell_append=no
-( foo=bar; set foo baz; eval "$1+=\$2" && test "$foo" = barbaz ) \
- >/dev/null 2>&1 \
- && lt_shell_append=yes
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_shell_append" >&5
-$as_echo "$lt_shell_append" >&6; }
-
-
if ( (MAIL=60; unset MAIL) || exit) >/dev/null 2>&1; then
lt_unset=unset
else
@@ -7722,13 +7704,13 @@ esac
reload_cmds='$LD$reload_flag -o $output$reload_objs'
case $host_os in
cygwin* | mingw* | pw32* | cegcc*)
- if test "$GCC" != yes; then
+ if test yes != "$GCC"; then
reload_cmds=false
fi
;;
darwin*)
- if test "$GCC" = yes; then
- reload_cmds='$LTCC $LTCFLAGS -nostdlib ${wl}-r -o $output$reload_objs'
+ if test yes = "$GCC"; then
+ reload_cmds='$LTCC $LTCFLAGS -nostdlib $wl-r -o $output$reload_objs'
else
reload_cmds='$LD$reload_flag -o $output$reload_objs'
fi
@@ -7856,13 +7838,13 @@ lt_cv_deplibs_check_method='unknown'
# Need to set the preceding variable on all platforms that support
# interlibrary dependencies.
# 'none' -- dependencies not supported.
-# `unknown' -- same as none, but documents that we really don't know.
+# 'unknown' -- same as none, but documents that we really don't know.
# 'pass_all' -- all dependencies passed with no checks.
# 'test_compile' -- check by making test program.
# 'file_magic [[regex]]' -- check by looking for files in library path
-# which responds to the $file_magic_cmd with a given extended regex.
-# If you have `file' or equivalent on your system and you're not sure
-# whether `pass_all' will *always* work, you probably want this one.
+# that responds to the $file_magic_cmd with a given extended regex.
+# If you have 'file' or equivalent on your system and you're not sure
+# whether 'pass_all' will *always* work, you probably want this one.
case $host_os in
aix[4-9]*)
@@ -7889,8 +7871,7 @@ mingw* | pw32*)
# Base MSYS/MinGW do not provide the 'file' command needed by
# func_win32_libid shell function, so use a weaker test based on 'objdump',
# unless we find 'file', for example because we are cross-compiling.
- # func_win32_libid assumes BSD nm, so disallow it if using MS dumpbin.
- if ( test "$lt_cv_nm_interface" = "BSD nm" && file / ) >/dev/null 2>&1; then
+ if ( file / ) >/dev/null 2>&1; then
lt_cv_deplibs_check_method='file_magic ^x86 archive import|^x86 DLL'
lt_cv_file_magic_cmd='func_win32_libid'
else
@@ -7926,10 +7907,6 @@ freebsd* | dragonfly*)
fi
;;
-gnu*)
- lt_cv_deplibs_check_method=pass_all
- ;;
-
haiku*)
lt_cv_deplibs_check_method=pass_all
;;
@@ -7968,7 +7945,7 @@ irix5* | irix6* | nonstopux*)
;;
# This must be glibc/ELF.
-linux* | k*bsd*-gnu | kopensolaris*-gnu)
+linux* | k*bsd*-gnu | kopensolaris*-gnu | gnu*)
lt_cv_deplibs_check_method=pass_all
;;
@@ -7990,8 +7967,8 @@ newos6*)
lt_cv_deplibs_check_method=pass_all
;;
-openbsd*)
- if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then
+openbsd* | bitrig*)
+ if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`"; then
lt_cv_deplibs_check_method='match_pattern /lib[^/]+(\.so\.[0-9]+\.[0-9]+|\.so|_pic\.a)$'
else
lt_cv_deplibs_check_method='match_pattern /lib[^/]+(\.so\.[0-9]+\.[0-9]+|_pic\.a)$'
@@ -8201,8 +8178,8 @@ else
case $host_os in
cygwin* | mingw* | pw32* | cegcc*)
- # two different shell functions defined in ltmain.sh
- # decide which to use based on capabilities of $DLLTOOL
+ # two different shell functions defined in ltmain.sh;
+ # decide which one to use based on capabilities of $DLLTOOL
case `$DLLTOOL --help 2>&1` in
*--identify-strict*)
lt_cv_sharedlib_from_linklib_cmd=func_cygming_dll_for_implib
@@ -8214,7 +8191,7 @@ cygwin* | mingw* | pw32* | cegcc*)
;;
*)
# fallback: assume linklib IS sharedlib
- lt_cv_sharedlib_from_linklib_cmd="$ECHO"
+ lt_cv_sharedlib_from_linklib_cmd=$ECHO
;;
esac
@@ -8368,7 +8345,7 @@ if ac_fn_c_try_compile "$LINENO"; then :
ac_status=$?
$as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
test $ac_status = 0; }
- if test "$ac_status" -eq 0; then
+ if test 0 -eq "$ac_status"; then
# Ensure the archiver fails upon bogus file names.
rm -f conftest.$ac_objext libconftest.a
{ { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$lt_ar_try\""; } >&5
@@ -8376,7 +8353,7 @@ if ac_fn_c_try_compile "$LINENO"; then :
ac_status=$?
$as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
test $ac_status = 0; }
- if test "$ac_status" -ne 0; then
+ if test 0 -ne "$ac_status"; then
lt_cv_ar_at_file=@
fi
fi
@@ -8389,7 +8366,7 @@ fi
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_ar_at_file" >&5
$as_echo "$lt_cv_ar_at_file" >&6; }
-if test "x$lt_cv_ar_at_file" = xno; then
+if test no = "$lt_cv_ar_at_file"; then
archiver_list_spec=
else
archiver_list_spec=$lt_cv_ar_at_file
@@ -8606,7 +8583,7 @@ old_postuninstall_cmds=
if test -n "$RANLIB"; then
case $host_os in
- openbsd*)
+ bitrig* | openbsd*)
old_postinstall_cmds="$old_postinstall_cmds~\$RANLIB -t \$tool_oldlib"
;;
*)
@@ -8696,7 +8673,7 @@ cygwin* | mingw* | pw32* | cegcc*)
symcode='[ABCDGISTW]'
;;
hpux*)
- if test "$host_cpu" = ia64; then
+ if test ia64 = "$host_cpu"; then
symcode='[ABCDEGRST]'
fi
;;
@@ -8729,14 +8706,44 @@ case `$NM -V 2>&1` in
symcode='[ABCDGIRSTW]' ;;
esac
+if test "$lt_cv_nm_interface" = "MS dumpbin"; then
+ # Gets list of data symbols to import.
+ lt_cv_sys_global_symbol_to_import="sed -n -e 's/^I .* \(.*\)$/\1/p'"
+ # Adjust the below global symbol transforms to fixup imported variables.
+ lt_cdecl_hook=" -e 's/^I .* \(.*\)$/extern __declspec(dllimport) char \1;/p'"
+ lt_c_name_hook=" -e 's/^I .* \(.*\)$/ {\"\1\", (void *) 0},/p'"
+ lt_c_name_lib_hook="\
+ -e 's/^I .* \(lib.*\)$/ {\"\1\", (void *) 0},/p'\
+ -e 's/^I .* \(.*\)$/ {\"lib\1\", (void *) 0},/p'"
+else
+ # Disable hooks by default.
+ lt_cv_sys_global_symbol_to_import=
+ lt_cdecl_hook=
+ lt_c_name_hook=
+ lt_c_name_lib_hook=
+fi
+
# Transform an extracted symbol line into a proper C declaration.
# Some systems (esp. on ia64) link data and code symbols differently,
# so use this general approach.
-lt_cv_sys_global_symbol_to_cdecl="sed -n -e 's/^T .* \(.*\)$/extern int \1();/p' -e 's/^$symcode* .* \(.*\)$/extern char \1;/p'"
+lt_cv_sys_global_symbol_to_cdecl="sed -n"\
+$lt_cdecl_hook\
+" -e 's/^T .* \(.*\)$/extern int \1();/p'"\
+" -e 's/^$symcode$symcode* .* \(.*\)$/extern char \1;/p'"
# Transform an extracted symbol line into symbol name and symbol address
-lt_cv_sys_global_symbol_to_c_name_address="sed -n -e 's/^: \([^ ]*\)[ ]*$/ {\\\"\1\\\", (void *) 0},/p' -e 's/^$symcode* \([^ ]*\) \([^ ]*\)$/ {\"\2\", (void *) \&\2},/p'"
-lt_cv_sys_global_symbol_to_c_name_address_lib_prefix="sed -n -e 's/^: \([^ ]*\)[ ]*$/ {\\\"\1\\\", (void *) 0},/p' -e 's/^$symcode* \([^ ]*\) \(lib[^ ]*\)$/ {\"\2\", (void *) \&\2},/p' -e 's/^$symcode* \([^ ]*\) \([^ ]*\)$/ {\"lib\2\", (void *) \&\2},/p'"
+lt_cv_sys_global_symbol_to_c_name_address="sed -n"\
+$lt_c_name_hook\
+" -e 's/^: \(.*\) .*$/ {\"\1\", (void *) 0},/p'"\
+" -e 's/^$symcode$symcode* .* \(.*\)$/ {\"\1\", (void *) \&\1},/p'"
+
+# Transform an extracted symbol line into symbol name with lib prefix and
+# symbol address.
+lt_cv_sys_global_symbol_to_c_name_address_lib_prefix="sed -n"\
+$lt_c_name_lib_hook\
+" -e 's/^: \(.*\) .*$/ {\"\1\", (void *) 0},/p'"\
+" -e 's/^$symcode$symcode* .* \(lib.*\)$/ {\"\1\", (void *) \&\1},/p'"\
+" -e 's/^$symcode$symcode* .* \(.*\)$/ {\"lib\1\", (void *) \&\1},/p'"
# Handle CRLF in mingw tool chain
opt_cr=
@@ -8754,21 +8761,24 @@ for ac_symprfx in "" "_"; do
# Write the raw and C identifiers.
if test "$lt_cv_nm_interface" = "MS dumpbin"; then
- # Fake it for dumpbin and say T for any non-static function
- # and D for any global variable.
+ # Fake it for dumpbin and say T for any non-static function,
+ # D for any global variable and I for any imported variable.
# Also find C++ and __fastcall symbols from MSVC++,
# which start with @ or ?.
lt_cv_sys_global_symbol_pipe="$AWK '"\
" {last_section=section; section=\$ 3};"\
" /^COFF SYMBOL TABLE/{for(i in hide) delete hide[i]};"\
" /Section length .*#relocs.*(pick any)/{hide[last_section]=1};"\
+" /^ *Symbol name *: /{split(\$ 0,sn,\":\"); si=substr(sn[2],2)};"\
+" /^ *Type *: code/{print \"T\",si,substr(si,length(prfx))};"\
+" /^ *Type *: data/{print \"I\",si,substr(si,length(prfx))};"\
" \$ 0!~/External *\|/{next};"\
" / 0+ UNDEF /{next}; / UNDEF \([^|]\)*()/{next};"\
" {if(hide[section]) next};"\
-" {f=0}; \$ 0~/\(\).*\|/{f=1}; {printf f ? \"T \" : \"D \"};"\
-" {split(\$ 0, a, /\||\r/); split(a[2], s)};"\
-" s[1]~/^[@?]/{print s[1], s[1]; next};"\
-" s[1]~prfx {split(s[1],t,\"@\"); print t[1], substr(t[1],length(prfx))}"\
+" {f=\"D\"}; \$ 0~/\(\).*\|/{f=\"T\"};"\
+" {split(\$ 0,a,/\||\r/); split(a[2],s)};"\
+" s[1]~/^[@?]/{print f,s[1],s[1]; next};"\
+" s[1]~prfx {split(s[1],t,\"@\"); print f,t[1],substr(t[1],length(prfx))}"\
" ' prfx=^$ac_symprfx"
else
lt_cv_sys_global_symbol_pipe="sed -n -e 's/^.*[ ]\($symcode$symcode*\)[ ][ ]*$ac_symprfx$sympat$opt_cr$/$symxfrm/p'"
@@ -8816,11 +8826,11 @@ _LT_EOF
if $GREP ' nm_test_func$' "$nlist" >/dev/null; then
cat <<_LT_EOF > conftest.$ac_ext
/* Keep this code in sync between libtool.m4, ltmain, lt_system.h, and tests. */
-#if defined(_WIN32) || defined(__CYGWIN__) || defined(_WIN32_WCE)
-/* DATA imports from DLLs on WIN32 con't be const, because runtime
+#if defined _WIN32 || defined __CYGWIN__ || defined _WIN32_WCE
+/* DATA imports from DLLs on WIN32 can't be const, because runtime
relocations are performed -- see ld's documentation on pseudo-relocs. */
# define LT_DLSYM_CONST
-#elif defined(__osf__)
+#elif defined __osf__
/* This system does not cope well with relocations in const data. */
# define LT_DLSYM_CONST
#else
@@ -8846,7 +8856,7 @@ lt__PROGRAM__LTX_preloaded_symbols[] =
{
{ "@PROGRAM@", (void *) 0 },
_LT_EOF
- $SED "s/^$symcode$symcode* \(.*\) \(.*\)$/ {\"\2\", (void *) \&\2},/" < "$nlist" | $GREP -v main >> conftest.$ac_ext
+ $SED "s/^$symcode$symcode* .* \(.*\)$/ {\"\1\", (void *) \&\1},/" < "$nlist" | $GREP -v main >> conftest.$ac_ext
cat <<\_LT_EOF >> conftest.$ac_ext
{0, (void *) 0}
};
@@ -8866,13 +8876,13 @@ _LT_EOF
mv conftest.$ac_objext conftstm.$ac_objext
lt_globsym_save_LIBS=$LIBS
lt_globsym_save_CFLAGS=$CFLAGS
- LIBS="conftstm.$ac_objext"
+ LIBS=conftstm.$ac_objext
CFLAGS="$CFLAGS$lt_prog_compiler_no_builtin_flag"
if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_link\""; } >&5
(eval $ac_link) 2>&5
ac_status=$?
$as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
- test $ac_status = 0; } && test -s conftest${ac_exeext}; then
+ test $ac_status = 0; } && test -s conftest$ac_exeext; then
pipe_works=yes
fi
LIBS=$lt_globsym_save_LIBS
@@ -8893,7 +8903,7 @@ _LT_EOF
rm -rf conftest* conftst*
# Do not use the global_symbol_pipe unless it works.
- if test "$pipe_works" = yes; then
+ if test yes = "$pipe_works"; then
break
else
lt_cv_sys_global_symbol_pipe=
@@ -8946,6 +8956,16 @@ fi
+
+
+
+
+
+
+
+
+
+
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for sysroot" >&5
$as_echo_n "checking for sysroot... " >&6; }
@@ -8958,9 +8978,9 @@ fi
lt_sysroot=
-case ${with_sysroot} in #(
+case $with_sysroot in #(
yes)
- if test "$GCC" = yes; then
+ if test yes = "$GCC"; then
lt_sysroot=`$CC --print-sysroot 2>/dev/null`
fi
;; #(
@@ -8970,8 +8990,8 @@ case ${with_sysroot} in #(
no|'')
;; #(
*)
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: ${with_sysroot}" >&5
-$as_echo "${with_sysroot}" >&6; }
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $with_sysroot" >&5
+$as_echo "$with_sysroot" >&6; }
as_fn_error $? "The sysroot must be an absolute path." "$LINENO" 5
;;
esac
@@ -8988,13 +9008,14 @@ if test "${enable_libtool_lock+set}" = set; then :
enableval=$enable_libtool_lock;
fi
-test "x$enable_libtool_lock" != xno && enable_libtool_lock=yes
+test no = "$enable_libtool_lock" || enable_libtool_lock=yes
# Some flags need to be propagated to the compiler or linker for good
# libtool support.
case $host in
ia64-*-hpux*)
- # Find out which ABI we are using.
+ # Find out what ABI is being produced by ac_compile, and set mode
+ # options accordingly.
echo 'int i;' > conftest.$ac_ext
if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5
(eval $ac_compile) 2>&5
@@ -9003,24 +9024,25 @@ ia64-*-hpux*)
test $ac_status = 0; }; then
case `/usr/bin/file conftest.$ac_objext` in
*ELF-32*)
- HPUX_IA64_MODE="32"
+ HPUX_IA64_MODE=32
;;
*ELF-64*)
- HPUX_IA64_MODE="64"
+ HPUX_IA64_MODE=64
;;
esac
fi
rm -rf conftest*
;;
*-*-irix6*)
- # Find out which ABI we are using.
+ # Find out what ABI is being produced by ac_compile, and set linker
+ # options accordingly.
echo '#line '$LINENO' "configure"' > conftest.$ac_ext
if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5
(eval $ac_compile) 2>&5
ac_status=$?
$as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
test $ac_status = 0; }; then
- if test "$lt_cv_prog_gnu_ld" = yes; then
+ if test yes = "$lt_cv_prog_gnu_ld"; then
case `/usr/bin/file conftest.$ac_objext` in
*32-bit*)
LD="${LD-ld} -melf32bsmip"
@@ -9049,9 +9071,50 @@ ia64-*-hpux*)
rm -rf conftest*
;;
-x86_64-*kfreebsd*-gnu|x86_64-*linux*|ppc*-*linux*|powerpc*-*linux*| \
+mips64*-*linux*)
+ # Find out what ABI is being produced by ac_compile, and set linker
+ # options accordingly.
+ echo '#line '$LINENO' "configure"' > conftest.$ac_ext
+ if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5
+ (eval $ac_compile) 2>&5
+ ac_status=$?
+ $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+ test $ac_status = 0; }; then
+ emul=elf
+ case `/usr/bin/file conftest.$ac_objext` in
+ *32-bit*)
+ emul="${emul}32"
+ ;;
+ *64-bit*)
+ emul="${emul}64"
+ ;;
+ esac
+ case `/usr/bin/file conftest.$ac_objext` in
+ *MSB*)
+ emul="${emul}btsmip"
+ ;;
+ *LSB*)
+ emul="${emul}ltsmip"
+ ;;
+ esac
+ case `/usr/bin/file conftest.$ac_objext` in
+ *N32*)
+ emul="${emul}n32"
+ ;;
+ esac
+ LD="${LD-ld} -m $emul"
+ fi
+ rm -rf conftest*
+ ;;
+
+x86_64-*kfreebsd*-gnu|x86_64-*linux*|powerpc*-*linux*| \
s390*-*linux*|s390*-*tpf*|sparc*-*linux*)
- # Find out which ABI we are using.
+ # Find out what ABI is being produced by ac_compile, and set linker
+ # options accordingly. Note that the listed cases only cover the
+ # situations where additional linker options are needed (such as when
+ # doing 32-bit compilation for a host where ld defaults to 64-bit, or
+ # vice versa); the common cases where no linker options are needed do
+ # not appear in the list.
echo 'int i;' > conftest.$ac_ext
if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5
(eval $ac_compile) 2>&5
@@ -9065,9 +9128,19 @@ s390*-*linux*|s390*-*tpf*|sparc*-*linux*)
LD="${LD-ld} -m elf_i386_fbsd"
;;
x86_64-*linux*)
- LD="${LD-ld} -m elf_i386"
+ case `/usr/bin/file conftest.o` in
+ *x86-64*)
+ LD="${LD-ld} -m elf32_x86_64"
+ ;;
+ *)
+ LD="${LD-ld} -m elf_i386"
+ ;;
+ esac
;;
- ppc64-*linux*|powerpc64-*linux*)
+ powerpc64le-*linux*)
+ LD="${LD-ld} -m elf32lppclinux"
+ ;;
+ powerpc64-*linux*)
LD="${LD-ld} -m elf32ppclinux"
;;
s390x-*linux*)
@@ -9086,7 +9159,10 @@ s390*-*linux*|s390*-*tpf*|sparc*-*linux*)
x86_64-*linux*)
LD="${LD-ld} -m elf_x86_64"
;;
- ppc*-*linux*|powerpc*-*linux*)
+ powerpcle-*linux*)
+ LD="${LD-ld} -m elf64lppc"
+ ;;
+ powerpc-*linux*)
LD="${LD-ld} -m elf64ppc"
;;
s390*-*linux*|s390*-*tpf*)
@@ -9104,7 +9180,7 @@ s390*-*linux*|s390*-*tpf*|sparc*-*linux*)
*-*-sco3.2v5*)
# On SCO OpenServer 5, we need -belf to get full-featured binaries.
- SAVE_CFLAGS="$CFLAGS"
+ SAVE_CFLAGS=$CFLAGS
CFLAGS="$CFLAGS -belf"
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the C compiler needs -belf" >&5
$as_echo_n "checking whether the C compiler needs -belf... " >&6; }
@@ -9144,13 +9220,14 @@ ac_compiler_gnu=$ac_cv_c_compiler_gnu
fi
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_cc_needs_belf" >&5
$as_echo "$lt_cv_cc_needs_belf" >&6; }
- if test x"$lt_cv_cc_needs_belf" != x"yes"; then
+ if test yes != "$lt_cv_cc_needs_belf"; then
# this is probably gcc 2.8.0, egcs 1.0 or newer; no need for -belf
- CFLAGS="$SAVE_CFLAGS"
+ CFLAGS=$SAVE_CFLAGS
fi
;;
*-*solaris*)
- # Find out which ABI we are using.
+ # Find out what ABI is being produced by ac_compile, and set linker
+ # options accordingly.
echo 'int i;' > conftest.$ac_ext
if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5
(eval $ac_compile) 2>&5
@@ -9162,7 +9239,7 @@ $as_echo "$lt_cv_cc_needs_belf" >&6; }
case $lt_cv_prog_gnu_ld in
yes*)
case $host in
- i?86-*-solaris*)
+ i?86-*-solaris*|x86_64-*-solaris*)
LD="${LD-ld} -m elf_x86_64"
;;
sparc*-*-solaris*)
@@ -9171,7 +9248,7 @@ $as_echo "$lt_cv_cc_needs_belf" >&6; }
esac
# GNU ld 2.21 introduced _sol2 emulations. Use them if available.
if ${LD-ld} -V | grep _sol2 >/dev/null 2>&1; then
- LD="${LD-ld}_sol2"
+ LD=${LD-ld}_sol2
fi
;;
*)
@@ -9187,7 +9264,7 @@ $as_echo "$lt_cv_cc_needs_belf" >&6; }
;;
esac
-need_locks="$enable_libtool_lock"
+need_locks=$enable_libtool_lock
if test -n "$ac_tool_prefix"; then
# Extract the first word of "${ac_tool_prefix}mt", so it can be a program name with args.
@@ -9298,7 +9375,7 @@ else
fi
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_path_mainfest_tool" >&5
$as_echo "$lt_cv_path_mainfest_tool" >&6; }
-if test "x$lt_cv_path_mainfest_tool" != xyes; then
+if test yes != "$lt_cv_path_mainfest_tool"; then
MANIFEST_TOOL=:
fi
@@ -9801,7 +9878,7 @@ if ${lt_cv_apple_cc_single_mod+:} false; then :
$as_echo_n "(cached) " >&6
else
lt_cv_apple_cc_single_mod=no
- if test -z "${LT_MULTI_MODULE}"; then
+ if test -z "$LT_MULTI_MODULE"; then
# By default we will add the -single_module flag. You can override
# by either setting the environment variable LT_MULTI_MODULE
# non-empty at configure time, or by adding -multi_module to the
@@ -9819,7 +9896,7 @@ else
cat conftest.err >&5
# Otherwise, if the output was created with a 0 exit code from
# the compiler, it worked.
- elif test -f libconftest.dylib && test $_lt_result -eq 0; then
+ elif test -f libconftest.dylib && test 0 = "$_lt_result"; then
lt_cv_apple_cc_single_mod=yes
else
cat conftest.err >&5
@@ -9858,7 +9935,7 @@ else
fi
rm -f core conftest.err conftest.$ac_objext \
conftest$ac_exeext conftest.$ac_ext
- LDFLAGS="$save_LDFLAGS"
+ LDFLAGS=$save_LDFLAGS
fi
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_ld_exported_symbols_list" >&5
@@ -9887,7 +9964,7 @@ _LT_EOF
_lt_result=$?
if test -s conftest.err && $GREP force_load conftest.err; then
cat conftest.err >&5
- elif test -f conftest && test $_lt_result -eq 0 && $GREP forced_load conftest >/dev/null 2>&1 ; then
+ elif test -f conftest && test 0 = "$_lt_result" && $GREP forced_load conftest >/dev/null 2>&1; then
lt_cv_ld_force_load=yes
else
cat conftest.err >&5
@@ -9900,32 +9977,32 @@ fi
$as_echo "$lt_cv_ld_force_load" >&6; }
case $host_os in
rhapsody* | darwin1.[012])
- _lt_dar_allow_undefined='${wl}-undefined ${wl}suppress' ;;
+ _lt_dar_allow_undefined='$wl-undefined ${wl}suppress' ;;
darwin1.*)
- _lt_dar_allow_undefined='${wl}-flat_namespace ${wl}-undefined ${wl}suppress' ;;
+ _lt_dar_allow_undefined='$wl-flat_namespace $wl-undefined ${wl}suppress' ;;
darwin*) # darwin 5.x on
# if running on 10.5 or later, the deployment target defaults
# to the OS version, if on x86, and 10.4, the deployment
# target defaults to 10.4. Don't you love it?
case ${MACOSX_DEPLOYMENT_TARGET-10.0},$host in
10.0,*86*-darwin8*|10.0,*-darwin[91]*)
- _lt_dar_allow_undefined='${wl}-undefined ${wl}dynamic_lookup' ;;
+ _lt_dar_allow_undefined='$wl-undefined ${wl}dynamic_lookup' ;;
10.[012]*)
- _lt_dar_allow_undefined='${wl}-flat_namespace ${wl}-undefined ${wl}suppress' ;;
+ _lt_dar_allow_undefined='$wl-flat_namespace $wl-undefined ${wl}suppress' ;;
10.*)
- _lt_dar_allow_undefined='${wl}-undefined ${wl}dynamic_lookup' ;;
+ _lt_dar_allow_undefined='$wl-undefined ${wl}dynamic_lookup' ;;
esac
;;
esac
- if test "$lt_cv_apple_cc_single_mod" = "yes"; then
+ if test yes = "$lt_cv_apple_cc_single_mod"; then
_lt_dar_single_mod='$single_module'
fi
- if test "$lt_cv_ld_exported_symbols_list" = "yes"; then
- _lt_dar_export_syms=' ${wl}-exported_symbols_list,$output_objdir/${libname}-symbols.expsym'
+ if test yes = "$lt_cv_ld_exported_symbols_list"; then
+ _lt_dar_export_syms=' $wl-exported_symbols_list,$output_objdir/$libname-symbols.expsym'
else
- _lt_dar_export_syms='~$NMEDIT -s $output_objdir/${libname}-symbols.expsym ${lib}'
+ _lt_dar_export_syms='~$NMEDIT -s $output_objdir/$libname-symbols.expsym $lib'
fi
- if test "$DSYMUTIL" != ":" && test "$lt_cv_ld_force_load" = "no"; then
+ if test : != "$DSYMUTIL" && test no = "$lt_cv_ld_force_load"; then
_lt_dsymutil='~$DSYMUTIL $lib || :'
else
_lt_dsymutil=
@@ -9969,14 +10046,14 @@ if test "${enable_shared+set}" = set; then :
*)
enable_shared=no
# Look at the argument we got. We use all the common list separators.
- lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR,"
+ lt_save_ifs=$IFS; IFS=$IFS$PATH_SEPARATOR,
for pkg in $enableval; do
- IFS="$lt_save_ifs"
+ IFS=$lt_save_ifs
if test "X$pkg" = "X$p"; then
enable_shared=yes
fi
done
- IFS="$lt_save_ifs"
+ IFS=$lt_save_ifs
;;
esac
else
@@ -10001,14 +10078,14 @@ if test "${with_pic+set}" = set; then :
*)
pic_mode=default
# Look at the argument we got. We use all the common list separators.
- lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR,"
+ lt_save_ifs=$IFS; IFS=$IFS$PATH_SEPARATOR,
for lt_pkg in $withval; do
- IFS="$lt_save_ifs"
+ IFS=$lt_save_ifs
if test "X$lt_pkg" = "X$lt_p"; then
pic_mode=yes
fi
done
- IFS="$lt_save_ifs"
+ IFS=$lt_save_ifs
;;
esac
else
@@ -10016,8 +10093,6 @@ else
fi
-test -z "$pic_mode" && pic_mode=default
-
@@ -10033,14 +10108,14 @@ if test "${enable_fast_install+set}" = set; then :
*)
enable_fast_install=no
# Look at the argument we got. We use all the common list separators.
- lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR,"
+ lt_save_ifs=$IFS; IFS=$IFS$PATH_SEPARATOR,
for pkg in $enableval; do
- IFS="$lt_save_ifs"
+ IFS=$lt_save_ifs
if test "X$pkg" = "X$p"; then
enable_fast_install=yes
fi
done
- IFS="$lt_save_ifs"
+ IFS=$lt_save_ifs
;;
esac
else
@@ -10058,7 +10133,7 @@ fi
# This can be used to rebuild libtool when needed
-LIBTOOL_DEPS="$ltmain"
+LIBTOOL_DEPS=$ltmain
# Always use our own libtool.
LIBTOOL='$(SHELL) $(top_builddir)/libtool'
@@ -10107,7 +10182,7 @@ test -z "$LN_S" && LN_S="ln -s"
-if test -n "${ZSH_VERSION+set}" ; then
+if test -n "${ZSH_VERSION+set}"; then
setopt NO_GLOB_SUBST
fi
@@ -10146,7 +10221,7 @@ aix3*)
# AIX sometimes has problems with the GCC collect2 program. For some
# reason, if we set the COLLECT_NAMES environment variable, the problems
# vanish in a puff of smoke.
- if test "X${COLLECT_NAMES+set}" != Xset; then
+ if test set != "${COLLECT_NAMES+set}"; then
COLLECT_NAMES=
export COLLECT_NAMES
fi
@@ -10157,14 +10232,14 @@ esac
ofile=libtool
can_build_shared=yes
-# All known linkers require a `.a' archive for static linking (except MSVC,
+# All known linkers require a '.a' archive for static linking (except MSVC,
# which needs '.lib').
libext=a
-with_gnu_ld="$lt_cv_prog_gnu_ld"
+with_gnu_ld=$lt_cv_prog_gnu_ld
-old_CC="$CC"
-old_CFLAGS="$CFLAGS"
+old_CC=$CC
+old_CFLAGS=$CFLAGS
# Set sane defaults for various variables
test -z "$CC" && CC=cc
@@ -10196,22 +10271,22 @@ if ${lt_cv_path_MAGIC_CMD+:} false; then :
else
case $MAGIC_CMD in
[\\/*] | ?:[\\/]*)
- lt_cv_path_MAGIC_CMD="$MAGIC_CMD" # Let the user override the test with a path.
+ lt_cv_path_MAGIC_CMD=$MAGIC_CMD # Let the user override the test with a path.
;;
*)
- lt_save_MAGIC_CMD="$MAGIC_CMD"
- lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR
+ lt_save_MAGIC_CMD=$MAGIC_CMD
+ lt_save_ifs=$IFS; IFS=$PATH_SEPARATOR
ac_dummy="/usr/bin$PATH_SEPARATOR$PATH"
for ac_dir in $ac_dummy; do
- IFS="$lt_save_ifs"
+ IFS=$lt_save_ifs
test -z "$ac_dir" && ac_dir=.
- if test -f $ac_dir/${ac_tool_prefix}file; then
- lt_cv_path_MAGIC_CMD="$ac_dir/${ac_tool_prefix}file"
+ if test -f "$ac_dir/${ac_tool_prefix}file"; then
+ lt_cv_path_MAGIC_CMD=$ac_dir/"${ac_tool_prefix}file"
if test -n "$file_magic_test_file"; then
case $deplibs_check_method in
"file_magic "*)
file_magic_regex=`expr "$deplibs_check_method" : "file_magic \(.*\)"`
- MAGIC_CMD="$lt_cv_path_MAGIC_CMD"
+ MAGIC_CMD=$lt_cv_path_MAGIC_CMD
if eval $file_magic_cmd \$file_magic_test_file 2> /dev/null |
$EGREP "$file_magic_regex" > /dev/null; then
:
@@ -10234,13 +10309,13 @@ _LT_EOF
break
fi
done
- IFS="$lt_save_ifs"
- MAGIC_CMD="$lt_save_MAGIC_CMD"
+ IFS=$lt_save_ifs
+ MAGIC_CMD=$lt_save_MAGIC_CMD
;;
esac
fi
-MAGIC_CMD="$lt_cv_path_MAGIC_CMD"
+MAGIC_CMD=$lt_cv_path_MAGIC_CMD
if test -n "$MAGIC_CMD"; then
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $MAGIC_CMD" >&5
$as_echo "$MAGIC_CMD" >&6; }
@@ -10262,22 +10337,22 @@ if ${lt_cv_path_MAGIC_CMD+:} false; then :
else
case $MAGIC_CMD in
[\\/*] | ?:[\\/]*)
- lt_cv_path_MAGIC_CMD="$MAGIC_CMD" # Let the user override the test with a path.
+ lt_cv_path_MAGIC_CMD=$MAGIC_CMD # Let the user override the test with a path.
;;
*)
- lt_save_MAGIC_CMD="$MAGIC_CMD"
- lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR
+ lt_save_MAGIC_CMD=$MAGIC_CMD
+ lt_save_ifs=$IFS; IFS=$PATH_SEPARATOR
ac_dummy="/usr/bin$PATH_SEPARATOR$PATH"
for ac_dir in $ac_dummy; do
- IFS="$lt_save_ifs"
+ IFS=$lt_save_ifs
test -z "$ac_dir" && ac_dir=.
- if test -f $ac_dir/file; then
- lt_cv_path_MAGIC_CMD="$ac_dir/file"
+ if test -f "$ac_dir/file"; then
+ lt_cv_path_MAGIC_CMD=$ac_dir/"file"
if test -n "$file_magic_test_file"; then
case $deplibs_check_method in
"file_magic "*)
file_magic_regex=`expr "$deplibs_check_method" : "file_magic \(.*\)"`
- MAGIC_CMD="$lt_cv_path_MAGIC_CMD"
+ MAGIC_CMD=$lt_cv_path_MAGIC_CMD
if eval $file_magic_cmd \$file_magic_test_file 2> /dev/null |
$EGREP "$file_magic_regex" > /dev/null; then
:
@@ -10300,13 +10375,13 @@ _LT_EOF
break
fi
done
- IFS="$lt_save_ifs"
- MAGIC_CMD="$lt_save_MAGIC_CMD"
+ IFS=$lt_save_ifs
+ MAGIC_CMD=$lt_save_MAGIC_CMD
;;
esac
fi
-MAGIC_CMD="$lt_cv_path_MAGIC_CMD"
+MAGIC_CMD=$lt_cv_path_MAGIC_CMD
if test -n "$MAGIC_CMD"; then
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $MAGIC_CMD" >&5
$as_echo "$MAGIC_CMD" >&6; }
@@ -10327,7 +10402,7 @@ esac
# Use C for the default configuration in the libtool script
-lt_save_CC="$CC"
+lt_save_CC=$CC
ac_ext=c
ac_cpp='$CPP $CPPFLAGS'
ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
@@ -10389,7 +10464,7 @@ if test -n "$compiler"; then
lt_prog_compiler_no_builtin_flag=
-if test "$GCC" = yes; then
+if test yes = "$GCC"; then
case $cc_basename in
nvcc*)
lt_prog_compiler_no_builtin_flag=' -Xcompiler -fno-builtin' ;;
@@ -10405,7 +10480,7 @@ else
lt_cv_prog_compiler_rtti_exceptions=no
ac_outfile=conftest.$ac_objext
echo "$lt_simple_compile_test_code" > conftest.$ac_ext
- lt_compiler_flag="-fno-rtti -fno-exceptions"
+ lt_compiler_flag="-fno-rtti -fno-exceptions" ## exclude from sc_useless_quotes_in_assignment
# Insert the option either (1) after the last *FLAGS variable, or
# (2) before a word containing "conftest.", or (3) at the end.
# Note that $ac_compile itself does not contain backslashes and begins
@@ -10435,7 +10510,7 @@ fi
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_rtti_exceptions" >&5
$as_echo "$lt_cv_prog_compiler_rtti_exceptions" >&6; }
-if test x"$lt_cv_prog_compiler_rtti_exceptions" = xyes; then
+if test yes = "$lt_cv_prog_compiler_rtti_exceptions"; then
lt_prog_compiler_no_builtin_flag="$lt_prog_compiler_no_builtin_flag -fno-rtti -fno-exceptions"
else
:
@@ -10453,17 +10528,18 @@ lt_prog_compiler_pic=
lt_prog_compiler_static=
- if test "$GCC" = yes; then
+ if test yes = "$GCC"; then
lt_prog_compiler_wl='-Wl,'
lt_prog_compiler_static='-static'
case $host_os in
aix*)
# All AIX code is PIC.
- if test "$host_cpu" = ia64; then
+ if test ia64 = "$host_cpu"; then
# AIX 5 now supports IA64 processor
lt_prog_compiler_static='-Bstatic'
fi
+ lt_prog_compiler_pic='-fPIC'
;;
amigaos*)
@@ -10474,8 +10550,8 @@ lt_prog_compiler_static=
;;
m68k)
# FIXME: we need at least 68020 code to build shared libraries, but
- # adding the `-m68020' flag to GCC prevents building anything better,
- # like `-m68040'.
+ # adding the '-m68020' flag to GCC prevents building anything better,
+ # like '-m68040'.
lt_prog_compiler_pic='-m68020 -resident32 -malways-restore-a4'
;;
esac
@@ -10561,7 +10637,7 @@ lt_prog_compiler_static=
case $host_os in
aix*)
lt_prog_compiler_wl='-Wl,'
- if test "$host_cpu" = ia64; then
+ if test ia64 = "$host_cpu"; then
# AIX 5 now supports IA64 processor
lt_prog_compiler_static='-Bstatic'
else
@@ -10569,6 +10645,20 @@ lt_prog_compiler_static=
fi
;;
+ darwin* | rhapsody*)
+ # PIC is the default on this platform
+ # Common symbols not allowed in MH_DYLIB files
+ lt_prog_compiler_pic='-fno-common'
+ case $cc_basename in
+ nagfor*)
+ # NAG Fortran compiler
+ lt_prog_compiler_wl='-Wl,-Wl,,'
+ lt_prog_compiler_pic='-PIC'
+ lt_prog_compiler_static='-Bstatic'
+ ;;
+ esac
+ ;;
+
mingw* | cygwin* | pw32* | os2* | cegcc*)
# This hack is so that the source file can tell whether it is being
# built for inclusion in a dll (and should export symbols for example).
@@ -10588,7 +10678,7 @@ lt_prog_compiler_static=
;;
esac
# Is there a better lt_prog_compiler_static that works with the bundled CC?
- lt_prog_compiler_static='${wl}-a ${wl}archive'
+ lt_prog_compiler_static='$wl-a ${wl}archive'
;;
irix5* | irix6* | nonstopux*)
@@ -10597,9 +10687,9 @@ lt_prog_compiler_static=
lt_prog_compiler_static='-non_shared'
;;
- linux* | k*bsd*-gnu | kopensolaris*-gnu)
+ linux* | k*bsd*-gnu | kopensolaris*-gnu | gnu*)
case $cc_basename in
- # old Intel for x86_64 which still supported -KPIC.
+ # old Intel for x86_64, which still supported -KPIC.
ecc*)
lt_prog_compiler_wl='-Wl,'
lt_prog_compiler_pic='-KPIC'
@@ -10624,6 +10714,12 @@ lt_prog_compiler_static=
lt_prog_compiler_pic='-PIC'
lt_prog_compiler_static='-Bstatic'
;;
+ tcc*)
+ # Fabrice Bellard et al's Tiny C Compiler
+ lt_prog_compiler_wl='-Wl,'
+ lt_prog_compiler_pic='-fPIC'
+ lt_prog_compiler_static='-static'
+ ;;
pgcc* | pgf77* | pgf90* | pgf95* | pgfortran*)
# Portland Group compilers (*not* the Pentium gcc compiler,
# which looks to be a dead project)
@@ -10721,7 +10817,7 @@ lt_prog_compiler_static=
;;
sysv4*MP*)
- if test -d /usr/nec ;then
+ if test -d /usr/nec; then
lt_prog_compiler_pic='-Kconform_pic'
lt_prog_compiler_static='-Bstatic'
fi
@@ -10750,7 +10846,7 @@ lt_prog_compiler_static=
fi
case $host_os in
- # For platforms which do not support PIC, -DPIC is meaningless:
+ # For platforms that do not support PIC, -DPIC is meaningless:
*djgpp*)
lt_prog_compiler_pic=
;;
@@ -10782,7 +10878,7 @@ else
lt_cv_prog_compiler_pic_works=no
ac_outfile=conftest.$ac_objext
echo "$lt_simple_compile_test_code" > conftest.$ac_ext
- lt_compiler_flag="$lt_prog_compiler_pic -DPIC"
+ lt_compiler_flag="$lt_prog_compiler_pic -DPIC" ## exclude from sc_useless_quotes_in_assignment
# Insert the option either (1) after the last *FLAGS variable, or
# (2) before a word containing "conftest.", or (3) at the end.
# Note that $ac_compile itself does not contain backslashes and begins
@@ -10812,7 +10908,7 @@ fi
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_pic_works" >&5
$as_echo "$lt_cv_prog_compiler_pic_works" >&6; }
-if test x"$lt_cv_prog_compiler_pic_works" = xyes; then
+if test yes = "$lt_cv_prog_compiler_pic_works"; then
case $lt_prog_compiler_pic in
"" | " "*) ;;
*) lt_prog_compiler_pic=" $lt_prog_compiler_pic" ;;
@@ -10844,7 +10940,7 @@ if ${lt_cv_prog_compiler_static_works+:} false; then :
$as_echo_n "(cached) " >&6
else
lt_cv_prog_compiler_static_works=no
- save_LDFLAGS="$LDFLAGS"
+ save_LDFLAGS=$LDFLAGS
LDFLAGS="$LDFLAGS $lt_tmp_static_flag"
echo "$lt_simple_link_test_code" > conftest.$ac_ext
if (eval $ac_link 2>conftest.err) && test -s conftest$ac_exeext; then
@@ -10863,13 +10959,13 @@ else
fi
fi
$RM -r conftest*
- LDFLAGS="$save_LDFLAGS"
+ LDFLAGS=$save_LDFLAGS
fi
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_static_works" >&5
$as_echo "$lt_cv_prog_compiler_static_works" >&6; }
-if test x"$lt_cv_prog_compiler_static_works" = xyes; then
+if test yes = "$lt_cv_prog_compiler_static_works"; then
:
else
lt_prog_compiler_static=
@@ -10989,8 +11085,8 @@ $as_echo "$lt_cv_prog_compiler_c_o" >&6; }
-hard_links="nottested"
-if test "$lt_cv_prog_compiler_c_o" = no && test "$need_locks" != no; then
+hard_links=nottested
+if test no = "$lt_cv_prog_compiler_c_o" && test no != "$need_locks"; then
# do not overwrite the value of need_locks provided by the user
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking if we can lock with hard links" >&5
$as_echo_n "checking if we can lock with hard links... " >&6; }
@@ -11002,9 +11098,9 @@ $as_echo_n "checking if we can lock with hard links... " >&6; }
ln conftest.a conftest.b 2>/dev/null && hard_links=no
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $hard_links" >&5
$as_echo "$hard_links" >&6; }
- if test "$hard_links" = no; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: \`$CC' does not support \`-c -o', so \`make -j' may be unsafe" >&5
-$as_echo "$as_me: WARNING: \`$CC' does not support \`-c -o', so \`make -j' may be unsafe" >&2;}
+ if test no = "$hard_links"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: '$CC' does not support '-c -o', so 'make -j' may be unsafe" >&5
+$as_echo "$as_me: WARNING: '$CC' does not support '-c -o', so 'make -j' may be unsafe" >&2;}
need_locks=warn
fi
else
@@ -11047,9 +11143,9 @@ $as_echo_n "checking whether the $compiler linker ($LD) supports shared librarie
# included in the symbol list
include_expsyms=
# exclude_expsyms can be an extended regexp of symbols to exclude
- # it will be wrapped by ` (' and `)$', so one must not match beginning or
- # end of line. Example: `a|bc|.*d.*' will exclude the symbols `a' and `bc',
- # as well as any symbol that contains `d'.
+ # it will be wrapped by ' (' and ')$', so one must not match beginning or
+ # end of line. Example: 'a|bc|.*d.*' will exclude the symbols 'a' and 'bc',
+ # as well as any symbol that contains 'd'.
exclude_expsyms='_GLOBAL_OFFSET_TABLE_|_GLOBAL__F[ID]_.*'
# Although _GLOBAL_OFFSET_TABLE_ is a valid symbol C name, most a.out
# platforms (ab)use it in PIC code, but their linkers get confused if
@@ -11064,7 +11160,7 @@ $as_echo_n "checking whether the $compiler linker ($LD) supports shared librarie
# FIXME: the MSVC++ port hasn't been tested in a loooong time
# When not using gcc, we currently assume that we are using
# Microsoft Visual C++.
- if test "$GCC" != yes; then
+ if test yes != "$GCC"; then
with_gnu_ld=no
fi
;;
@@ -11072,7 +11168,7 @@ $as_echo_n "checking whether the $compiler linker ($LD) supports shared librarie
# we just hope/assume this is gcc and not c89 (= MSVC++)
with_gnu_ld=yes
;;
- openbsd*)
+ openbsd* | bitrig*)
with_gnu_ld=no
;;
esac
@@ -11082,7 +11178,7 @@ $as_echo_n "checking whether the $compiler linker ($LD) supports shared librarie
# On some targets, GNU ld is compatible enough with the native linker
# that we're better off using the native interface for both.
lt_use_gnu_ld_interface=no
- if test "$with_gnu_ld" = yes; then
+ if test yes = "$with_gnu_ld"; then
case $host_os in
aix*)
# The AIX port of GNU ld has always aspired to compatibility
@@ -11104,24 +11200,24 @@ $as_echo_n "checking whether the $compiler linker ($LD) supports shared librarie
esac
fi
- if test "$lt_use_gnu_ld_interface" = yes; then
+ if test yes = "$lt_use_gnu_ld_interface"; then
# If archive_cmds runs LD, not CC, wlarc should be empty
- wlarc='${wl}'
+ wlarc='$wl'
# Set some defaults for GNU ld with shared library support. These
# are reset later if shared libraries are not supported. Putting them
# here allows them to be overridden if necessary.
runpath_var=LD_RUN_PATH
- hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir'
- export_dynamic_flag_spec='${wl}--export-dynamic'
+ hardcode_libdir_flag_spec='$wl-rpath $wl$libdir'
+ export_dynamic_flag_spec='$wl--export-dynamic'
# ancient GNU ld didn't support --whole-archive et. al.
if $LD --help 2>&1 | $GREP 'no-whole-archive' > /dev/null; then
- whole_archive_flag_spec="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive'
+ whole_archive_flag_spec=$wlarc'--whole-archive$convenience '$wlarc'--no-whole-archive'
else
whole_archive_flag_spec=
fi
supports_anon_versioning=no
- case `$LD -v 2>&1` in
+ case `$LD -v | $SED -e 's/(^)\+)\s\+//' 2>&1` in
*GNU\ gold*) supports_anon_versioning=yes ;;
*\ [01].* | *\ 2.[0-9].* | *\ 2.10.*) ;; # catch versions < 2.11
*\ 2.11.93.0.2\ *) supports_anon_versioning=yes ;; # RH7.3 ...
@@ -11134,7 +11230,7 @@ $as_echo_n "checking whether the $compiler linker ($LD) supports shared librarie
case $host_os in
aix[3-9]*)
# On AIX/PPC, the GNU linker is very broken
- if test "$host_cpu" != ia64; then
+ if test ia64 != "$host_cpu"; then
ld_shlibs=no
cat <<_LT_EOF 1>&2
@@ -11153,7 +11249,7 @@ _LT_EOF
case $host_cpu in
powerpc)
# see comment about AmigaOS4 .so support
- archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
+ archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib'
archive_expsym_cmds=''
;;
m68k)
@@ -11169,7 +11265,7 @@ _LT_EOF
allow_undefined_flag=unsupported
# Joseph Beckenbach <jrb3@best.com> says some releases of gcc
# support --undefined. This deserves some investigation. FIXME
- archive_cmds='$CC -nostart $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
+ archive_cmds='$CC -nostart $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib'
else
ld_shlibs=no
fi
@@ -11179,7 +11275,7 @@ _LT_EOF
# _LT_TAGVAR(hardcode_libdir_flag_spec, ) is actually meaningless,
# as there is no search path for DLLs.
hardcode_libdir_flag_spec='-L$libdir'
- export_dynamic_flag_spec='${wl}--export-all-symbols'
+ export_dynamic_flag_spec='$wl--export-all-symbols'
allow_undefined_flag=unsupported
always_export_symbols=no
enable_shared_with_static_runtimes=yes
@@ -11187,61 +11283,61 @@ _LT_EOF
exclude_expsyms='[_]+GLOBAL_OFFSET_TABLE_|[_]+GLOBAL__[FID]_.*|[_]+head_[A-Za-z0-9_]+_dll|[A-Za-z0-9_]+_dll_iname'
if $LD --help 2>&1 | $GREP 'auto-import' > /dev/null; then
- archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib'
- # If the export-symbols file already is a .def file (1st line
- # is EXPORTS), use it as is; otherwise, prepend...
- archive_expsym_cmds='if test "x`$SED 1q $export_symbols`" = xEXPORTS; then
- cp $export_symbols $output_objdir/$soname.def;
- else
- echo EXPORTS > $output_objdir/$soname.def;
- cat $export_symbols >> $output_objdir/$soname.def;
- fi~
- $CC -shared $output_objdir/$soname.def $libobjs $deplibs $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib'
+ archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags -o $output_objdir/$soname $wl--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib'
+ # If the export-symbols file already is a .def file, use it as
+ # is; otherwise, prepend EXPORTS...
+ archive_expsym_cmds='if test DEF = "`$SED -n -e '\''s/^[ ]*//'\'' -e '\''/^\(;.*\)*$/d'\'' -e '\''s/^\(EXPORTS\|LIBRARY\)\([ ].*\)*$/DEF/p'\'' -e q $export_symbols`" ; then
+ cp $export_symbols $output_objdir/$soname.def;
+ else
+ echo EXPORTS > $output_objdir/$soname.def;
+ cat $export_symbols >> $output_objdir/$soname.def;
+ fi~
+ $CC -shared $output_objdir/$soname.def $libobjs $deplibs $compiler_flags -o $output_objdir/$soname $wl--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib'
else
ld_shlibs=no
fi
;;
haiku*)
- archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
+ archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib'
link_all_deplibs=yes
;;
interix[3-9]*)
hardcode_direct=no
hardcode_shlibpath_var=no
- hardcode_libdir_flag_spec='${wl}-rpath,$libdir'
- export_dynamic_flag_spec='${wl}-E'
+ hardcode_libdir_flag_spec='$wl-rpath,$libdir'
+ export_dynamic_flag_spec='$wl-E'
# Hack: On Interix 3.x, we cannot compile PIC because of a broken gcc.
# Instead, shared libraries are loaded at an image base (0x10000000 by
# default) and relocated if they conflict, which is a slow very memory
# consuming and fragmenting process. To avoid this, we pick a random,
# 256 KiB-aligned image base between 0x50000000 and 0x6FFC0000 at link
# time. Moving up from 0x10000000 also allows more sbrk(2) space.
- archive_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib'
- archive_expsym_cmds='sed "s,^,_," $export_symbols >$output_objdir/$soname.expsym~$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--retain-symbols-file,$output_objdir/$soname.expsym ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib'
+ archive_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-h,$soname $wl--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib'
+ archive_expsym_cmds='sed "s|^|_|" $export_symbols >$output_objdir/$soname.expsym~$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-h,$soname $wl--retain-symbols-file,$output_objdir/$soname.expsym $wl--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib'
;;
gnu* | linux* | tpf* | k*bsd*-gnu | kopensolaris*-gnu)
tmp_diet=no
- if test "$host_os" = linux-dietlibc; then
+ if test linux-dietlibc = "$host_os"; then
case $cc_basename in
diet\ *) tmp_diet=yes;; # linux-dietlibc with static linking (!diet-dyn)
esac
fi
if $LD --help 2>&1 | $EGREP ': supported targets:.* elf' > /dev/null \
- && test "$tmp_diet" = no
+ && test no = "$tmp_diet"
then
tmp_addflag=' $pic_flag'
tmp_sharedflag='-shared'
case $cc_basename,$host_cpu in
pgcc*) # Portland Group C compiler
- whole_archive_flag_spec='${wl}--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` ${wl}--no-whole-archive'
+ whole_archive_flag_spec='$wl--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` $wl--no-whole-archive'
tmp_addflag=' $pic_flag'
;;
pgf77* | pgf90* | pgf95* | pgfortran*)
# Portland Group f77 and f90 compilers
- whole_archive_flag_spec='${wl}--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` ${wl}--no-whole-archive'
+ whole_archive_flag_spec='$wl--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` $wl--no-whole-archive'
tmp_addflag=' $pic_flag -Mnomain' ;;
ecc*,ia64* | icc*,ia64*) # Intel C compiler on ia64
tmp_addflag=' -i_dynamic' ;;
@@ -11252,42 +11348,44 @@ _LT_EOF
lf95*) # Lahey Fortran 8.1
whole_archive_flag_spec=
tmp_sharedflag='--shared' ;;
+ nagfor*) # NAGFOR 5.3
+ tmp_sharedflag='-Wl,-shared' ;;
xl[cC]* | bgxl[cC]* | mpixl[cC]*) # IBM XL C 8.0 on PPC (deal with xlf below)
tmp_sharedflag='-qmkshrobj'
tmp_addflag= ;;
nvcc*) # Cuda Compiler Driver 2.2
- whole_archive_flag_spec='${wl}--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` ${wl}--no-whole-archive'
+ whole_archive_flag_spec='$wl--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` $wl--no-whole-archive'
compiler_needs_object=yes
;;
esac
case `$CC -V 2>&1 | sed 5q` in
*Sun\ C*) # Sun C 5.9
- whole_archive_flag_spec='${wl}--whole-archive`new_convenience=; for conv in $convenience\"\"; do test -z \"$conv\" || new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` ${wl}--no-whole-archive'
+ whole_archive_flag_spec='$wl--whole-archive`new_convenience=; for conv in $convenience\"\"; do test -z \"$conv\" || new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` $wl--no-whole-archive'
compiler_needs_object=yes
tmp_sharedflag='-G' ;;
*Sun\ F*) # Sun Fortran 8.3
tmp_sharedflag='-G' ;;
esac
- archive_cmds='$CC '"$tmp_sharedflag""$tmp_addflag"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
+ archive_cmds='$CC '"$tmp_sharedflag""$tmp_addflag"' $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib'
- if test "x$supports_anon_versioning" = xyes; then
+ if test yes = "$supports_anon_versioning"; then
archive_expsym_cmds='echo "{ global:" > $output_objdir/$libname.ver~
- cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~
- echo "local: *; };" >> $output_objdir/$libname.ver~
- $CC '"$tmp_sharedflag""$tmp_addflag"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-version-script ${wl}$output_objdir/$libname.ver -o $lib'
+ cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~
+ echo "local: *; };" >> $output_objdir/$libname.ver~
+ $CC '"$tmp_sharedflag""$tmp_addflag"' $libobjs $deplibs $compiler_flags $wl-soname $wl$soname $wl-version-script $wl$output_objdir/$libname.ver -o $lib'
fi
case $cc_basename in
xlf* | bgf* | bgxlf* | mpixlf*)
# IBM XL Fortran 10.1 on PPC cannot create shared libs itself
whole_archive_flag_spec='--whole-archive$convenience --no-whole-archive'
- hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir'
+ hardcode_libdir_flag_spec='$wl-rpath $wl$libdir'
archive_cmds='$LD -shared $libobjs $deplibs $linker_flags -soname $soname -o $lib'
- if test "x$supports_anon_versioning" = xyes; then
+ if test yes = "$supports_anon_versioning"; then
archive_expsym_cmds='echo "{ global:" > $output_objdir/$libname.ver~
- cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~
- echo "local: *; };" >> $output_objdir/$libname.ver~
- $LD -shared $libobjs $deplibs $linker_flags -soname $soname -version-script $output_objdir/$libname.ver -o $lib'
+ cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~
+ echo "local: *; };" >> $output_objdir/$libname.ver~
+ $LD -shared $libobjs $deplibs $linker_flags -soname $soname -version-script $output_objdir/$libname.ver -o $lib'
fi
;;
esac
@@ -11301,8 +11399,8 @@ _LT_EOF
archive_cmds='$LD -Bshareable $libobjs $deplibs $linker_flags -o $lib'
wlarc=
else
- archive_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
- archive_expsym_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
+ archive_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib'
+ archive_expsym_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname $wl-retain-symbols-file $wl$export_symbols -o $lib'
fi
;;
@@ -11320,8 +11418,8 @@ _LT_EOF
_LT_EOF
elif $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then
- archive_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
- archive_expsym_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
+ archive_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib'
+ archive_expsym_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname $wl-retain-symbols-file $wl$export_symbols -o $lib'
else
ld_shlibs=no
fi
@@ -11333,7 +11431,7 @@ _LT_EOF
ld_shlibs=no
cat <<_LT_EOF 1>&2
-*** Warning: Releases of the GNU linker prior to 2.16.91.0.3 can not
+*** Warning: Releases of the GNU linker prior to 2.16.91.0.3 cannot
*** reliably create shared libraries on SCO systems. Therefore, libtool
*** is disabling shared libraries support. We urge you to upgrade GNU
*** binutils to release 2.16.91.0.3 or newer. Another option is to modify
@@ -11348,9 +11446,9 @@ _LT_EOF
# DT_RUNPATH tag from executables and libraries. But doing so
# requires that you compile everything twice, which is a pain.
if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then
- hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir'
- archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
- archive_expsym_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
+ hardcode_libdir_flag_spec='$wl-rpath $wl$libdir'
+ archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib'
+ archive_expsym_cmds='$CC -shared $libobjs $deplibs $compiler_flags $wl-soname $wl$soname $wl-retain-symbols-file $wl$export_symbols -o $lib'
else
ld_shlibs=no
fi
@@ -11367,15 +11465,15 @@ _LT_EOF
*)
if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then
- archive_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
- archive_expsym_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
+ archive_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib'
+ archive_expsym_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname $wl-retain-symbols-file $wl$export_symbols -o $lib'
else
ld_shlibs=no
fi
;;
esac
- if test "$ld_shlibs" = no; then
+ if test no = "$ld_shlibs"; then
runpath_var=
hardcode_libdir_flag_spec=
export_dynamic_flag_spec=
@@ -11391,7 +11489,7 @@ _LT_EOF
# Note: this linker hardcodes the directories in LIBPATH if there
# are no directories specified by -L.
hardcode_minus_L=yes
- if test "$GCC" = yes && test -z "$lt_prog_compiler_static"; then
+ if test yes = "$GCC" && test -z "$lt_prog_compiler_static"; then
# Neither direct hardcoding nor static linking is supported with a
# broken collect2.
hardcode_direct=unsupported
@@ -11399,12 +11497,12 @@ _LT_EOF
;;
aix[4-9]*)
- if test "$host_cpu" = ia64; then
+ if test ia64 = "$host_cpu"; then
# On IA64, the linker does run time linking by default, so we don't
# have to do anything special.
aix_use_runtimelinking=no
exp_sym_flag='-Bexport'
- no_entry_flag=""
+ no_entry_flag=
else
# If we're using GNU nm, then we don't want the "-C" option.
# -C means demangle to AIX nm, but means don't demangle with GNU nm
@@ -11422,7 +11520,7 @@ _LT_EOF
# need to do runtime linking.
case $host_os in aix4.[23]|aix4.[23].*|aix[5-9]*)
for ld_flag in $LDFLAGS; do
- if (test $ld_flag = "-brtl" || test $ld_flag = "-Wl,-brtl"); then
+ if (test x-brtl = "x$ld_flag" || test x-Wl,-brtl = "x$ld_flag"); then
aix_use_runtimelinking=yes
break
fi
@@ -11445,13 +11543,13 @@ _LT_EOF
hardcode_direct_absolute=yes
hardcode_libdir_separator=':'
link_all_deplibs=yes
- file_list_spec='${wl}-f,'
+ file_list_spec='$wl-f,'
- if test "$GCC" = yes; then
+ if test yes = "$GCC"; then
case $host_os in aix4.[012]|aix4.[012].*)
# We only want to do this on AIX 4.2 and lower, the check
# below for broken collect2 doesn't work under 4.3+
- collect2name=`${CC} -print-prog-name=collect2`
+ collect2name=`$CC -print-prog-name=collect2`
if test -f "$collect2name" &&
strings "$collect2name" | $GREP resolve_lib_name >/dev/null
then
@@ -11470,35 +11568,35 @@ _LT_EOF
;;
esac
shared_flag='-shared'
- if test "$aix_use_runtimelinking" = yes; then
- shared_flag="$shared_flag "'${wl}-G'
+ if test yes = "$aix_use_runtimelinking"; then
+ shared_flag="$shared_flag "'$wl-G'
fi
else
# not using gcc
- if test "$host_cpu" = ia64; then
+ if test ia64 = "$host_cpu"; then
# VisualAge C++, Version 5.5 for AIX 5L for IA-64, Beta 3 Release
# chokes on -Wl,-G. The following line is correct:
shared_flag='-G'
else
- if test "$aix_use_runtimelinking" = yes; then
- shared_flag='${wl}-G'
+ if test yes = "$aix_use_runtimelinking"; then
+ shared_flag='$wl-G'
else
- shared_flag='${wl}-bM:SRE'
+ shared_flag='$wl-bM:SRE'
fi
fi
fi
- export_dynamic_flag_spec='${wl}-bexpall'
+ export_dynamic_flag_spec='$wl-bexpall'
# It seems that -bexpall does not export symbols beginning with
# underscore (_), so it is better to generate a list of symbols to export.
always_export_symbols=yes
- if test "$aix_use_runtimelinking" = yes; then
+ if test yes = "$aix_use_runtimelinking"; then
# Warning - without using the other runtime loading flags (-brtl),
# -berok will link without error, but may produce a broken library.
allow_undefined_flag='-berok'
# Determine the default libpath from the value encoded in an
# empty executable.
- if test "${lt_cv_aix_libpath+set}" = set; then
+ if test set = "${lt_cv_aix_libpath+set}"; then
aix_libpath=$lt_cv_aix_libpath
else
if ${lt_cv_aix_libpath_+:} false; then :
@@ -11533,7 +11631,7 @@ fi
rm -f core conftest.err conftest.$ac_objext \
conftest$ac_exeext conftest.$ac_ext
if test -z "$lt_cv_aix_libpath_"; then
- lt_cv_aix_libpath_="/usr/lib:/lib"
+ lt_cv_aix_libpath_=/usr/lib:/lib
fi
fi
@@ -11541,17 +11639,17 @@ fi
aix_libpath=$lt_cv_aix_libpath_
fi
- hardcode_libdir_flag_spec='${wl}-blibpath:$libdir:'"$aix_libpath"
- archive_expsym_cmds='$CC -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags `if test "x${allow_undefined_flag}" != "x"; then func_echo_all "${wl}${allow_undefined_flag}"; else :; fi` '"\${wl}$exp_sym_flag:\$export_symbols $shared_flag"
+ hardcode_libdir_flag_spec='$wl-blibpath:$libdir:'"$aix_libpath"
+ archive_expsym_cmds='$CC -o $output_objdir/$soname $libobjs $deplibs $wl'$no_entry_flag' $compiler_flags `if test -n "$allow_undefined_flag"; then func_echo_all "$wl$allow_undefined_flag"; else :; fi` $wl'$exp_sym_flag:\$export_symbols' '$shared_flag
else
- if test "$host_cpu" = ia64; then
- hardcode_libdir_flag_spec='${wl}-R $libdir:/usr/lib:/lib'
+ if test ia64 = "$host_cpu"; then
+ hardcode_libdir_flag_spec='$wl-R $libdir:/usr/lib:/lib'
allow_undefined_flag="-z nodefs"
- archive_expsym_cmds="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags ${wl}${allow_undefined_flag} '"\${wl}$exp_sym_flag:\$export_symbols"
+ archive_expsym_cmds="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs '"\$wl$no_entry_flag"' $compiler_flags $wl$allow_undefined_flag '"\$wl$exp_sym_flag:\$export_symbols"
else
# Determine the default libpath from the value encoded in an
# empty executable.
- if test "${lt_cv_aix_libpath+set}" = set; then
+ if test set = "${lt_cv_aix_libpath+set}"; then
aix_libpath=$lt_cv_aix_libpath
else
if ${lt_cv_aix_libpath_+:} false; then :
@@ -11586,7 +11684,7 @@ fi
rm -f core conftest.err conftest.$ac_objext \
conftest$ac_exeext conftest.$ac_ext
if test -z "$lt_cv_aix_libpath_"; then
- lt_cv_aix_libpath_="/usr/lib:/lib"
+ lt_cv_aix_libpath_=/usr/lib:/lib
fi
fi
@@ -11594,21 +11692,21 @@ fi
aix_libpath=$lt_cv_aix_libpath_
fi
- hardcode_libdir_flag_spec='${wl}-blibpath:$libdir:'"$aix_libpath"
+ hardcode_libdir_flag_spec='$wl-blibpath:$libdir:'"$aix_libpath"
# Warning - without using the other run time loading flags,
# -berok will link without error, but may produce a broken library.
- no_undefined_flag=' ${wl}-bernotok'
- allow_undefined_flag=' ${wl}-berok'
- if test "$with_gnu_ld" = yes; then
+ no_undefined_flag=' $wl-bernotok'
+ allow_undefined_flag=' $wl-berok'
+ if test yes = "$with_gnu_ld"; then
# We only use this code for GNU lds that support --whole-archive.
- whole_archive_flag_spec='${wl}--whole-archive$convenience ${wl}--no-whole-archive'
+ whole_archive_flag_spec='$wl--whole-archive$convenience $wl--no-whole-archive'
else
# Exported symbols can be pulled into shared objects from archives
whole_archive_flag_spec='$convenience'
fi
archive_cmds_need_lc=yes
# This is similar to how AIX traditionally builds its shared libraries.
- archive_expsym_cmds="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs ${wl}-bnoentry $compiler_flags ${wl}-bE:$export_symbols${allow_undefined_flag}~$AR $AR_FLAGS $output_objdir/$libname$release.a $output_objdir/$soname'
+ archive_expsym_cmds="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs $wl-bnoentry $compiler_flags $wl-bE:$export_symbols$allow_undefined_flag~$AR $AR_FLAGS $output_objdir/$libname$release.a $output_objdir/$soname'
fi
fi
;;
@@ -11617,7 +11715,7 @@ fi
case $host_cpu in
powerpc)
# see comment about AmigaOS4 .so support
- archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
+ archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib'
archive_expsym_cmds=''
;;
m68k)
@@ -11647,16 +11745,17 @@ fi
# Tell ltmain to make .lib files, not .a files.
libext=lib
# Tell ltmain to make .dll files, not .so files.
- shrext_cmds=".dll"
+ shrext_cmds=.dll
# FIXME: Setting linknames here is a bad hack.
- archive_cmds='$CC -o $output_objdir/$soname $libobjs $compiler_flags $deplibs -Wl,-dll~linknames='
- archive_expsym_cmds='if test "x`$SED 1q $export_symbols`" = xEXPORTS; then
- sed -n -e 's/\\\\\\\(.*\\\\\\\)/-link\\\ -EXPORT:\\\\\\\1/' -e '1\\\!p' < $export_symbols > $output_objdir/$soname.exp;
- else
- sed -e 's/\\\\\\\(.*\\\\\\\)/-link\\\ -EXPORT:\\\\\\\1/' < $export_symbols > $output_objdir/$soname.exp;
- fi~
- $CC -o $tool_output_objdir$soname $libobjs $compiler_flags $deplibs "@$tool_output_objdir$soname.exp" -Wl,-DLL,-IMPLIB:"$tool_output_objdir$libname.dll.lib"~
- linknames='
+ archive_cmds='$CC -o $output_objdir/$soname $libobjs $compiler_flags $deplibs -Wl,-DLL,-IMPLIB:"$tool_output_objdir$libname.dll.lib"~linknames='
+ archive_expsym_cmds='if test DEF = "`$SED -n -e '\''s/^[ ]*//'\'' -e '\''/^\(;.*\)*$/d'\'' -e '\''s/^\(EXPORTS\|LIBRARY\)\([ ].*\)*$/DEF/p'\'' -e q $export_symbols`" ; then
+ cp "$export_symbols" "$output_objdir/$soname.def";
+ echo "$tool_output_objdir$soname.def" > "$output_objdir/$soname.exp";
+ else
+ $SED -e '\''s/^/-link -EXPORT:/'\'' < $export_symbols > $output_objdir/$soname.exp;
+ fi~
+ $CC -o $tool_output_objdir$soname $libobjs $compiler_flags $deplibs "@$tool_output_objdir$soname.exp" -Wl,-DLL,-IMPLIB:"$tool_output_objdir$libname.dll.lib"~
+ linknames='
# The linker will not automatically build a static lib if we build a DLL.
# _LT_TAGVAR(old_archive_from_new_cmds, )='true'
enable_shared_with_static_runtimes=yes
@@ -11665,18 +11764,18 @@ fi
# Don't use ranlib
old_postinstall_cmds='chmod 644 $oldlib'
postlink_cmds='lt_outputfile="@OUTPUT@"~
- lt_tool_outputfile="@TOOL_OUTPUT@"~
- case $lt_outputfile in
- *.exe|*.EXE) ;;
- *)
- lt_outputfile="$lt_outputfile.exe"
- lt_tool_outputfile="$lt_tool_outputfile.exe"
- ;;
- esac~
- if test "$MANIFEST_TOOL" != ":" && test -f "$lt_outputfile.manifest"; then
- $MANIFEST_TOOL -manifest "$lt_tool_outputfile.manifest" -outputresource:"$lt_tool_outputfile" || exit 1;
- $RM "$lt_outputfile.manifest";
- fi'
+ lt_tool_outputfile="@TOOL_OUTPUT@"~
+ case $lt_outputfile in
+ *.exe|*.EXE) ;;
+ *)
+ lt_outputfile=$lt_outputfile.exe
+ lt_tool_outputfile=$lt_tool_outputfile.exe
+ ;;
+ esac~
+ if test : != "$MANIFEST_TOOL" && test -f "$lt_outputfile.manifest"; then
+ $MANIFEST_TOOL -manifest "$lt_tool_outputfile.manifest" -outputresource:"$lt_tool_outputfile" || exit 1;
+ $RM "$lt_outputfile.manifest";
+ fi'
;;
*)
# Assume MSVC wrapper
@@ -11685,7 +11784,7 @@ fi
# Tell ltmain to make .lib files, not .a files.
libext=lib
# Tell ltmain to make .dll files, not .so files.
- shrext_cmds=".dll"
+ shrext_cmds=.dll
# FIXME: Setting linknames here is a bad hack.
archive_cmds='$CC -o $lib $libobjs $compiler_flags `func_echo_all "$deplibs" | $SED '\''s/ -lc$//'\''` -link -dll~linknames='
# The linker will automatically build a .lib file if we build a DLL.
@@ -11704,24 +11803,24 @@ fi
hardcode_direct=no
hardcode_automatic=yes
hardcode_shlibpath_var=unsupported
- if test "$lt_cv_ld_force_load" = "yes"; then
- whole_archive_flag_spec='`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience ${wl}-force_load,$conv\"; done; func_echo_all \"$new_convenience\"`'
+ if test yes = "$lt_cv_ld_force_load"; then
+ whole_archive_flag_spec='`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience $wl-force_load,$conv\"; done; func_echo_all \"$new_convenience\"`'
else
whole_archive_flag_spec=''
fi
link_all_deplibs=yes
- allow_undefined_flag="$_lt_dar_allow_undefined"
+ allow_undefined_flag=$_lt_dar_allow_undefined
case $cc_basename in
- ifort*) _lt_dar_can_shared=yes ;;
+ ifort*|nagfor*) _lt_dar_can_shared=yes ;;
*) _lt_dar_can_shared=$GCC ;;
esac
- if test "$_lt_dar_can_shared" = "yes"; then
+ if test yes = "$_lt_dar_can_shared"; then
output_verbose_link_cmd=func_echo_all
- archive_cmds="\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring $_lt_dar_single_mod${_lt_dsymutil}"
- module_cmds="\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags${_lt_dsymutil}"
- archive_expsym_cmds="sed 's,^,_,' < \$export_symbols > \$output_objdir/\${libname}-symbols.expsym~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring ${_lt_dar_single_mod}${_lt_dar_export_syms}${_lt_dsymutil}"
- module_expsym_cmds="sed -e 's,^,_,' < \$export_symbols > \$output_objdir/\${libname}-symbols.expsym~\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags${_lt_dar_export_syms}${_lt_dsymutil}"
+ archive_cmds="\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring $_lt_dar_single_mod$_lt_dsymutil"
+ module_cmds="\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags$_lt_dsymutil"
+ archive_expsym_cmds="sed 's|^|_|' < \$export_symbols > \$output_objdir/\$libname-symbols.expsym~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring $_lt_dar_single_mod$_lt_dar_export_syms$_lt_dsymutil"
+ module_expsym_cmds="sed -e 's|^|_|' < \$export_symbols > \$output_objdir/\$libname-symbols.expsym~\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags$_lt_dar_export_syms$_lt_dsymutil"
else
ld_shlibs=no
@@ -11763,33 +11862,33 @@ fi
;;
hpux9*)
- if test "$GCC" = yes; then
- archive_cmds='$RM $output_objdir/$soname~$CC -shared $pic_flag ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $libobjs $deplibs $compiler_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib'
+ if test yes = "$GCC"; then
+ archive_cmds='$RM $output_objdir/$soname~$CC -shared $pic_flag $wl+b $wl$install_libdir -o $output_objdir/$soname $libobjs $deplibs $compiler_flags~test "x$output_objdir/$soname" = "x$lib" || mv $output_objdir/$soname $lib'
else
- archive_cmds='$RM $output_objdir/$soname~$LD -b +b $install_libdir -o $output_objdir/$soname $libobjs $deplibs $linker_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib'
+ archive_cmds='$RM $output_objdir/$soname~$LD -b +b $install_libdir -o $output_objdir/$soname $libobjs $deplibs $linker_flags~test "x$output_objdir/$soname" = "x$lib" || mv $output_objdir/$soname $lib'
fi
- hardcode_libdir_flag_spec='${wl}+b ${wl}$libdir'
+ hardcode_libdir_flag_spec='$wl+b $wl$libdir'
hardcode_libdir_separator=:
hardcode_direct=yes
# hardcode_minus_L: Not really in the search PATH,
# but as the default location of the library.
hardcode_minus_L=yes
- export_dynamic_flag_spec='${wl}-E'
+ export_dynamic_flag_spec='$wl-E'
;;
hpux10*)
- if test "$GCC" = yes && test "$with_gnu_ld" = no; then
- archive_cmds='$CC -shared $pic_flag ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags'
+ if test yes,no = "$GCC,$with_gnu_ld"; then
+ archive_cmds='$CC -shared $pic_flag $wl+h $wl$soname $wl+b $wl$install_libdir -o $lib $libobjs $deplibs $compiler_flags'
else
archive_cmds='$LD -b +h $soname +b $install_libdir -o $lib $libobjs $deplibs $linker_flags'
fi
- if test "$with_gnu_ld" = no; then
- hardcode_libdir_flag_spec='${wl}+b ${wl}$libdir'
+ if test no = "$with_gnu_ld"; then
+ hardcode_libdir_flag_spec='$wl+b $wl$libdir'
hardcode_libdir_separator=:
hardcode_direct=yes
hardcode_direct_absolute=yes
- export_dynamic_flag_spec='${wl}-E'
+ export_dynamic_flag_spec='$wl-E'
# hardcode_minus_L: Not really in the search PATH,
# but as the default location of the library.
hardcode_minus_L=yes
@@ -11797,25 +11896,25 @@ fi
;;
hpux11*)
- if test "$GCC" = yes && test "$with_gnu_ld" = no; then
+ if test yes,no = "$GCC,$with_gnu_ld"; then
case $host_cpu in
hppa*64*)
- archive_cmds='$CC -shared ${wl}+h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags'
+ archive_cmds='$CC -shared $wl+h $wl$soname -o $lib $libobjs $deplibs $compiler_flags'
;;
ia64*)
- archive_cmds='$CC -shared $pic_flag ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags'
+ archive_cmds='$CC -shared $pic_flag $wl+h $wl$soname $wl+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags'
;;
*)
- archive_cmds='$CC -shared $pic_flag ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags'
+ archive_cmds='$CC -shared $pic_flag $wl+h $wl$soname $wl+b $wl$install_libdir -o $lib $libobjs $deplibs $compiler_flags'
;;
esac
else
case $host_cpu in
hppa*64*)
- archive_cmds='$CC -b ${wl}+h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags'
+ archive_cmds='$CC -b $wl+h $wl$soname -o $lib $libobjs $deplibs $compiler_flags'
;;
ia64*)
- archive_cmds='$CC -b ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags'
+ archive_cmds='$CC -b $wl+h $wl$soname $wl+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags'
;;
*)
@@ -11827,7 +11926,7 @@ if ${lt_cv_prog_compiler__b+:} false; then :
$as_echo_n "(cached) " >&6
else
lt_cv_prog_compiler__b=no
- save_LDFLAGS="$LDFLAGS"
+ save_LDFLAGS=$LDFLAGS
LDFLAGS="$LDFLAGS -b"
echo "$lt_simple_link_test_code" > conftest.$ac_ext
if (eval $ac_link 2>conftest.err) && test -s conftest$ac_exeext; then
@@ -11846,14 +11945,14 @@ else
fi
fi
$RM -r conftest*
- LDFLAGS="$save_LDFLAGS"
+ LDFLAGS=$save_LDFLAGS
fi
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler__b" >&5
$as_echo "$lt_cv_prog_compiler__b" >&6; }
-if test x"$lt_cv_prog_compiler__b" = xyes; then
- archive_cmds='$CC -b ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags'
+if test yes = "$lt_cv_prog_compiler__b"; then
+ archive_cmds='$CC -b $wl+h $wl$soname $wl+b $wl$install_libdir -o $lib $libobjs $deplibs $compiler_flags'
else
archive_cmds='$LD -b +h $soname +b $install_libdir -o $lib $libobjs $deplibs $linker_flags'
fi
@@ -11861,8 +11960,8 @@ fi
;;
esac
fi
- if test "$with_gnu_ld" = no; then
- hardcode_libdir_flag_spec='${wl}+b ${wl}$libdir'
+ if test no = "$with_gnu_ld"; then
+ hardcode_libdir_flag_spec='$wl+b $wl$libdir'
hardcode_libdir_separator=:
case $host_cpu in
@@ -11873,7 +11972,7 @@ fi
*)
hardcode_direct=yes
hardcode_direct_absolute=yes
- export_dynamic_flag_spec='${wl}-E'
+ export_dynamic_flag_spec='$wl-E'
# hardcode_minus_L: Not really in the search PATH,
# but as the default location of the library.
@@ -11884,8 +11983,8 @@ fi
;;
irix5* | irix6* | nonstopux*)
- if test "$GCC" = yes; then
- archive_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib'
+ if test yes = "$GCC"; then
+ archive_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname `test -n "$verstring" && func_echo_all "$wl-set_version $wl$verstring"` $wl-update_registry $wl$output_objdir/so_locations -o $lib'
# Try to use the -exported_symbol ld option, if it does not
# work, assume that -exports_file does not work either and
# implicitly export all symbols.
@@ -11895,8 +11994,8 @@ $as_echo_n "checking whether the $host_os linker accepts -exported_symbol... " >
if ${lt_cv_irix_exported_symbol+:} false; then :
$as_echo_n "(cached) " >&6
else
- save_LDFLAGS="$LDFLAGS"
- LDFLAGS="$LDFLAGS -shared ${wl}-exported_symbol ${wl}foo ${wl}-update_registry ${wl}/dev/null"
+ save_LDFLAGS=$LDFLAGS
+ LDFLAGS="$LDFLAGS -shared $wl-exported_symbol ${wl}foo $wl-update_registry $wl/dev/null"
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
int foo (void) { return 0; }
@@ -11908,19 +12007,19 @@ else
fi
rm -f core conftest.err conftest.$ac_objext \
conftest$ac_exeext conftest.$ac_ext
- LDFLAGS="$save_LDFLAGS"
+ LDFLAGS=$save_LDFLAGS
fi
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_irix_exported_symbol" >&5
$as_echo "$lt_cv_irix_exported_symbol" >&6; }
- if test "$lt_cv_irix_exported_symbol" = yes; then
- archive_expsym_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations ${wl}-exports_file ${wl}$export_symbols -o $lib'
+ if test yes = "$lt_cv_irix_exported_symbol"; then
+ archive_expsym_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname `test -n "$verstring" && func_echo_all "$wl-set_version $wl$verstring"` $wl-update_registry $wl$output_objdir/so_locations $wl-exports_file $wl$export_symbols -o $lib'
fi
else
- archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib'
- archive_expsym_cmds='$CC -shared $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -exports_file $export_symbols -o $lib'
+ archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry $output_objdir/so_locations -o $lib'
+ archive_expsym_cmds='$CC -shared $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry $output_objdir/so_locations -exports_file $export_symbols -o $lib'
fi
archive_cmds_need_lc='no'
- hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir'
+ hardcode_libdir_flag_spec='$wl-rpath $wl$libdir'
hardcode_libdir_separator=:
inherit_rpath=yes
link_all_deplibs=yes
@@ -11940,7 +12039,7 @@ $as_echo "$lt_cv_irix_exported_symbol" >&6; }
newsos6)
archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
hardcode_direct=yes
- hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir'
+ hardcode_libdir_flag_spec='$wl-rpath $wl$libdir'
hardcode_libdir_separator=:
hardcode_shlibpath_var=no
;;
@@ -11948,27 +12047,19 @@ $as_echo "$lt_cv_irix_exported_symbol" >&6; }
*nto* | *qnx*)
;;
- openbsd*)
+ openbsd* | bitrig*)
if test -f /usr/libexec/ld.so; then
hardcode_direct=yes
hardcode_shlibpath_var=no
hardcode_direct_absolute=yes
- if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then
+ if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`"; then
archive_cmds='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags'
- archive_expsym_cmds='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-retain-symbols-file,$export_symbols'
- hardcode_libdir_flag_spec='${wl}-rpath,$libdir'
- export_dynamic_flag_spec='${wl}-E'
+ archive_expsym_cmds='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags $wl-retain-symbols-file,$export_symbols'
+ hardcode_libdir_flag_spec='$wl-rpath,$libdir'
+ export_dynamic_flag_spec='$wl-E'
else
- case $host_os in
- openbsd[01].* | openbsd2.[0-7] | openbsd2.[0-7].*)
- archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags'
- hardcode_libdir_flag_spec='-R$libdir'
- ;;
- *)
- archive_cmds='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags'
- hardcode_libdir_flag_spec='${wl}-rpath,$libdir'
- ;;
- esac
+ archive_cmds='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags'
+ hardcode_libdir_flag_spec='$wl-rpath,$libdir'
fi
else
ld_shlibs=no
@@ -11984,28 +12075,28 @@ $as_echo "$lt_cv_irix_exported_symbol" >&6; }
;;
osf3*)
- if test "$GCC" = yes; then
- allow_undefined_flag=' ${wl}-expect_unresolved ${wl}\*'
- archive_cmds='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib'
+ if test yes = "$GCC"; then
+ allow_undefined_flag=' $wl-expect_unresolved $wl\*'
+ archive_cmds='$CC -shared$allow_undefined_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname `test -n "$verstring" && func_echo_all "$wl-set_version $wl$verstring"` $wl-update_registry $wl$output_objdir/so_locations -o $lib'
else
allow_undefined_flag=' -expect_unresolved \*'
- archive_cmds='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib'
+ archive_cmds='$CC -shared$allow_undefined_flag $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry $output_objdir/so_locations -o $lib'
fi
archive_cmds_need_lc='no'
- hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir'
+ hardcode_libdir_flag_spec='$wl-rpath $wl$libdir'
hardcode_libdir_separator=:
;;
osf4* | osf5*) # as osf3* with the addition of -msym flag
- if test "$GCC" = yes; then
- allow_undefined_flag=' ${wl}-expect_unresolved ${wl}\*'
- archive_cmds='$CC -shared${allow_undefined_flag} $pic_flag $libobjs $deplibs $compiler_flags ${wl}-msym ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib'
- hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir'
+ if test yes = "$GCC"; then
+ allow_undefined_flag=' $wl-expect_unresolved $wl\*'
+ archive_cmds='$CC -shared$allow_undefined_flag $pic_flag $libobjs $deplibs $compiler_flags $wl-msym $wl-soname $wl$soname `test -n "$verstring" && func_echo_all "$wl-set_version $wl$verstring"` $wl-update_registry $wl$output_objdir/so_locations -o $lib'
+ hardcode_libdir_flag_spec='$wl-rpath $wl$libdir'
else
allow_undefined_flag=' -expect_unresolved \*'
- archive_cmds='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags -msym -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib'
+ archive_cmds='$CC -shared$allow_undefined_flag $libobjs $deplibs $compiler_flags -msym -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry $output_objdir/so_locations -o $lib'
archive_expsym_cmds='for i in `cat $export_symbols`; do printf "%s %s\\n" -exported_symbol "\$i" >> $lib.exp; done; printf "%s\\n" "-hidden">> $lib.exp~
- $CC -shared${allow_undefined_flag} ${wl}-input ${wl}$lib.exp $compiler_flags $libobjs $deplibs -soname $soname `test -n "$verstring" && $ECHO "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib~$RM $lib.exp'
+ $CC -shared$allow_undefined_flag $wl-input $wl$lib.exp $compiler_flags $libobjs $deplibs -soname $soname `test -n "$verstring" && $ECHO "-set_version $verstring"` -update_registry $output_objdir/so_locations -o $lib~$RM $lib.exp'
# Both c and cxx compiler support -rpath directly
hardcode_libdir_flag_spec='-rpath $libdir'
@@ -12016,24 +12107,24 @@ $as_echo "$lt_cv_irix_exported_symbol" >&6; }
solaris*)
no_undefined_flag=' -z defs'
- if test "$GCC" = yes; then
- wlarc='${wl}'
- archive_cmds='$CC -shared $pic_flag ${wl}-z ${wl}text ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags'
+ if test yes = "$GCC"; then
+ wlarc='$wl'
+ archive_cmds='$CC -shared $pic_flag $wl-z ${wl}text $wl-h $wl$soname -o $lib $libobjs $deplibs $compiler_flags'
archive_expsym_cmds='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~
- $CC -shared $pic_flag ${wl}-z ${wl}text ${wl}-M ${wl}$lib.exp ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags~$RM $lib.exp'
+ $CC -shared $pic_flag $wl-z ${wl}text $wl-M $wl$lib.exp $wl-h $wl$soname -o $lib $libobjs $deplibs $compiler_flags~$RM $lib.exp'
else
case `$CC -V 2>&1` in
*"Compilers 5.0"*)
wlarc=''
- archive_cmds='$LD -G${allow_undefined_flag} -h $soname -o $lib $libobjs $deplibs $linker_flags'
+ archive_cmds='$LD -G$allow_undefined_flag -h $soname -o $lib $libobjs $deplibs $linker_flags'
archive_expsym_cmds='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~
- $LD -G${allow_undefined_flag} -M $lib.exp -h $soname -o $lib $libobjs $deplibs $linker_flags~$RM $lib.exp'
+ $LD -G$allow_undefined_flag -M $lib.exp -h $soname -o $lib $libobjs $deplibs $linker_flags~$RM $lib.exp'
;;
*)
- wlarc='${wl}'
- archive_cmds='$CC -G${allow_undefined_flag} -h $soname -o $lib $libobjs $deplibs $compiler_flags'
+ wlarc='$wl'
+ archive_cmds='$CC -G$allow_undefined_flag -h $soname -o $lib $libobjs $deplibs $compiler_flags'
archive_expsym_cmds='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~
- $CC -G${allow_undefined_flag} -M $lib.exp -h $soname -o $lib $libobjs $deplibs $compiler_flags~$RM $lib.exp'
+ $CC -G$allow_undefined_flag -M $lib.exp -h $soname -o $lib $libobjs $deplibs $compiler_flags~$RM $lib.exp'
;;
esac
fi
@@ -12043,11 +12134,11 @@ $as_echo "$lt_cv_irix_exported_symbol" >&6; }
solaris2.[0-5] | solaris2.[0-5].*) ;;
*)
# The compiler driver will combine and reorder linker options,
- # but understands `-z linker_flag'. GCC discards it without `$wl',
+ # but understands '-z linker_flag'. GCC discards it without '$wl',
# but is careful enough not to reorder.
# Supported since Solaris 2.6 (maybe 2.5.1?)
- if test "$GCC" = yes; then
- whole_archive_flag_spec='${wl}-z ${wl}allextract$convenience ${wl}-z ${wl}defaultextract'
+ if test yes = "$GCC"; then
+ whole_archive_flag_spec='$wl-z ${wl}allextract$convenience $wl-z ${wl}defaultextract'
else
whole_archive_flag_spec='-z allextract$convenience -z defaultextract'
fi
@@ -12057,10 +12148,10 @@ $as_echo "$lt_cv_irix_exported_symbol" >&6; }
;;
sunos4*)
- if test "x$host_vendor" = xsequent; then
+ if test sequent = "$host_vendor"; then
# Use $CC to link under sequent, because it throws in some extra .o
# files that make .init and .fini sections work.
- archive_cmds='$CC -G ${wl}-h $soname -o $lib $libobjs $deplibs $compiler_flags'
+ archive_cmds='$CC -G $wl-h $soname -o $lib $libobjs $deplibs $compiler_flags'
else
archive_cmds='$LD -assert pure-text -Bstatic -o $lib $libobjs $deplibs $linker_flags'
fi
@@ -12109,43 +12200,43 @@ $as_echo "$lt_cv_irix_exported_symbol" >&6; }
;;
sysv4*uw2* | sysv5OpenUNIX* | sysv5UnixWare7.[01].[10]* | unixware7* | sco3.2v5.0.[024]*)
- no_undefined_flag='${wl}-z,text'
+ no_undefined_flag='$wl-z,text'
archive_cmds_need_lc=no
hardcode_shlibpath_var=no
runpath_var='LD_RUN_PATH'
- if test "$GCC" = yes; then
- archive_cmds='$CC -shared ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
- archive_expsym_cmds='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
+ if test yes = "$GCC"; then
+ archive_cmds='$CC -shared $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
+ archive_expsym_cmds='$CC -shared $wl-Bexport:$export_symbols $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
else
- archive_cmds='$CC -G ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
- archive_expsym_cmds='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
+ archive_cmds='$CC -G $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
+ archive_expsym_cmds='$CC -G $wl-Bexport:$export_symbols $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
fi
;;
sysv5* | sco3.2v5* | sco5v6*)
- # Note: We can NOT use -z defs as we might desire, because we do not
+ # Note: We CANNOT use -z defs as we might desire, because we do not
# link with -lc, and that would cause any symbols used from libc to
# always be unresolved, which means just about no library would
# ever link correctly. If we're not using GNU ld we use -z text
# though, which does catch some bad symbols but isn't as heavy-handed
# as -z defs.
- no_undefined_flag='${wl}-z,text'
- allow_undefined_flag='${wl}-z,nodefs'
+ no_undefined_flag='$wl-z,text'
+ allow_undefined_flag='$wl-z,nodefs'
archive_cmds_need_lc=no
hardcode_shlibpath_var=no
- hardcode_libdir_flag_spec='${wl}-R,$libdir'
+ hardcode_libdir_flag_spec='$wl-R,$libdir'
hardcode_libdir_separator=':'
link_all_deplibs=yes
- export_dynamic_flag_spec='${wl}-Bexport'
+ export_dynamic_flag_spec='$wl-Bexport'
runpath_var='LD_RUN_PATH'
- if test "$GCC" = yes; then
- archive_cmds='$CC -shared ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
- archive_expsym_cmds='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
+ if test yes = "$GCC"; then
+ archive_cmds='$CC -shared $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
+ archive_expsym_cmds='$CC -shared $wl-Bexport:$export_symbols $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
else
- archive_cmds='$CC -G ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
- archive_expsym_cmds='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
+ archive_cmds='$CC -G $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
+ archive_expsym_cmds='$CC -G $wl-Bexport:$export_symbols $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
fi
;;
@@ -12160,10 +12251,10 @@ $as_echo "$lt_cv_irix_exported_symbol" >&6; }
;;
esac
- if test x$host_vendor = xsni; then
+ if test sni = "$host_vendor"; then
case $host in
sysv4 | sysv4.2uw2* | sysv4.3* | sysv5*)
- export_dynamic_flag_spec='${wl}-Blargedynsym'
+ export_dynamic_flag_spec='$wl-Blargedynsym'
;;
esac
fi
@@ -12171,7 +12262,7 @@ $as_echo "$lt_cv_irix_exported_symbol" >&6; }
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ld_shlibs" >&5
$as_echo "$ld_shlibs" >&6; }
-test "$ld_shlibs" = no && can_build_shared=no
+test no = "$ld_shlibs" && can_build_shared=no
with_gnu_ld=$with_gnu_ld
@@ -12197,7 +12288,7 @@ x|xyes)
# Assume -lc should be added
archive_cmds_need_lc=yes
- if test "$enable_shared" = yes && test "$GCC" = yes; then
+ if test yes,yes = "$GCC,$enable_shared"; then
case $archive_cmds in
*'~'*)
# FIXME: we may have to deal with multi-command sequences.
@@ -12412,14 +12503,14 @@ esac
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking dynamic linker characteristics" >&5
$as_echo_n "checking dynamic linker characteristics... " >&6; }
-if test "$GCC" = yes; then
+if test yes = "$GCC"; then
case $host_os in
- darwin*) lt_awk_arg="/^libraries:/,/LR/" ;;
- *) lt_awk_arg="/^libraries:/" ;;
+ darwin*) lt_awk_arg='/^libraries:/,/LR/' ;;
+ *) lt_awk_arg='/^libraries:/' ;;
esac
case $host_os in
- mingw* | cegcc*) lt_sed_strip_eq="s,=\([A-Za-z]:\),\1,g" ;;
- *) lt_sed_strip_eq="s,=/,/,g" ;;
+ mingw* | cegcc*) lt_sed_strip_eq='s|=\([A-Za-z]:\)|\1|g' ;;
+ *) lt_sed_strip_eq='s|=/|/|g' ;;
esac
lt_search_path_spec=`$CC -print-search-dirs | awk $lt_awk_arg | $SED -e "s/^libraries://" -e $lt_sed_strip_eq`
case $lt_search_path_spec in
@@ -12435,28 +12526,35 @@ if test "$GCC" = yes; then
;;
esac
# Ok, now we have the path, separated by spaces, we can step through it
- # and add multilib dir if necessary.
+ # and add multilib dir if necessary...
lt_tmp_lt_search_path_spec=
- lt_multi_os_dir=`$CC $CPPFLAGS $CFLAGS $LDFLAGS -print-multi-os-directory 2>/dev/null`
+ lt_multi_os_dir=/`$CC $CPPFLAGS $CFLAGS $LDFLAGS -print-multi-os-directory 2>/dev/null`
+ # ...but if some path component already ends with the multilib dir we assume
+ # that all is fine and trust -print-search-dirs as is (GCC 4.2? or newer).
+ case "$lt_multi_os_dir; $lt_search_path_spec " in
+ "/; "* | "/.; "* | "/./; "* | *"$lt_multi_os_dir "* | *"$lt_multi_os_dir/ "*)
+ lt_multi_os_dir=
+ ;;
+ esac
for lt_sys_path in $lt_search_path_spec; do
- if test -d "$lt_sys_path/$lt_multi_os_dir"; then
- lt_tmp_lt_search_path_spec="$lt_tmp_lt_search_path_spec $lt_sys_path/$lt_multi_os_dir"
- else
+ if test -d "$lt_sys_path$lt_multi_os_dir"; then
+ lt_tmp_lt_search_path_spec="$lt_tmp_lt_search_path_spec $lt_sys_path$lt_multi_os_dir"
+ elif test -n "$lt_multi_os_dir"; then
test -d "$lt_sys_path" && \
lt_tmp_lt_search_path_spec="$lt_tmp_lt_search_path_spec $lt_sys_path"
fi
done
lt_search_path_spec=`$ECHO "$lt_tmp_lt_search_path_spec" | awk '
-BEGIN {RS=" "; FS="/|\n";} {
- lt_foo="";
- lt_count=0;
+BEGIN {RS = " "; FS = "/|\n";} {
+ lt_foo = "";
+ lt_count = 0;
for (lt_i = NF; lt_i > 0; lt_i--) {
if ($lt_i != "" && $lt_i != ".") {
if ($lt_i == "..") {
lt_count++;
} else {
if (lt_count == 0) {
- lt_foo="/" $lt_i lt_foo;
+ lt_foo = "/" $lt_i lt_foo;
} else {
lt_count--;
}
@@ -12470,7 +12568,7 @@ BEGIN {RS=" "; FS="/|\n";} {
# for these hosts.
case $host_os in
mingw* | cegcc*) lt_search_path_spec=`$ECHO "$lt_search_path_spec" |\
- $SED 's,/\([A-Za-z]:\),\1,g'` ;;
+ $SED 's|/\([A-Za-z]:\)|\1|g'` ;;
esac
sys_lib_search_path_spec=`$ECHO "$lt_search_path_spec" | $lt_NL2SP`
else
@@ -12479,7 +12577,7 @@ fi
library_names_spec=
libname_spec='lib$name'
soname_spec=
-shrext_cmds=".so"
+shrext_cmds=.so
postinstall_cmds=
postuninstall_cmds=
finish_cmds=
@@ -12499,11 +12597,11 @@ need_version=unknown
case $host_os in
aix3*)
version_type=linux # correct to gnu/linux during the next big refactor
- library_names_spec='${libname}${release}${shared_ext}$versuffix $libname.a'
+ library_names_spec='$libname$release$shared_ext$versuffix $libname.a'
shlibpath_var=LIBPATH
# AIX 3 has no versioning support, so we append a major version to the name.
- soname_spec='${libname}${release}${shared_ext}$major'
+ soname_spec='$libname$release$shared_ext$major'
;;
aix[4-9]*)
@@ -12511,40 +12609,40 @@ aix[4-9]*)
need_lib_prefix=no
need_version=no
hardcode_into_libs=yes
- if test "$host_cpu" = ia64; then
+ if test ia64 = "$host_cpu"; then
# AIX 5 supports IA64
- library_names_spec='${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext}$versuffix $libname${shared_ext}'
+ library_names_spec='$libname$release$shared_ext$major $libname$release$shared_ext$versuffix $libname$shared_ext'
shlibpath_var=LD_LIBRARY_PATH
else
# With GCC up to 2.95.x, collect2 would create an import file
# for dependence libraries. The import file would start with
- # the line `#! .'. This would cause the generated library to
- # depend on `.', always an invalid library. This was fixed in
+ # the line '#! .'. This would cause the generated library to
+ # depend on '.', always an invalid library. This was fixed in
# development snapshots of GCC prior to 3.0.
case $host_os in
aix4 | aix4.[01] | aix4.[01].*)
if { echo '#if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 97)'
echo ' yes '
- echo '#endif'; } | ${CC} -E - | $GREP yes > /dev/null; then
+ echo '#endif'; } | $CC -E - | $GREP yes > /dev/null; then
:
else
can_build_shared=no
fi
;;
esac
- # AIX (on Power*) has no versioning support, so currently we can not hardcode correct
+ # AIX (on Power*) has no versioning support, so currently we cannot hardcode correct
# soname into executable. Probably we can add versioning support to
# collect2, so additional links can be useful in future.
- if test "$aix_use_runtimelinking" = yes; then
+ if test yes = "$aix_use_runtimelinking"; then
# If using run time linking (on AIX 4.2 or later) use lib<name>.so
# instead of lib<name>.a to let people know that these are not
# typical AIX shared libraries.
- library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+ library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext'
else
# We preserve .a as extension for shared libraries through AIX4.2
# and later when we are not doing run time linking.
- library_names_spec='${libname}${release}.a $libname.a'
- soname_spec='${libname}${release}${shared_ext}$major'
+ library_names_spec='$libname$release.a $libname.a'
+ soname_spec='$libname$release$shared_ext$major'
fi
shlibpath_var=LIBPATH
fi
@@ -12555,18 +12653,18 @@ amigaos*)
powerpc)
# Since July 2007 AmigaOS4 officially supports .so libraries.
# When compiling the executable, add -use-dynld -Lsobjs: to the compileline.
- library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+ library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext'
;;
m68k)
library_names_spec='$libname.ixlibrary $libname.a'
# Create ${libname}_ixlibrary.a entries in /sys/libs.
- finish_eval='for lib in `ls $libdir/*.ixlibrary 2>/dev/null`; do libname=`func_echo_all "$lib" | $SED '\''s%^.*/\([^/]*\)\.ixlibrary$%\1%'\''`; test $RM /sys/libs/${libname}_ixlibrary.a; $show "cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a"; cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a || exit 1; done'
+ finish_eval='for lib in `ls $libdir/*.ixlibrary 2>/dev/null`; do libname=`func_echo_all "$lib" | $SED '\''s%^.*/\([^/]*\)\.ixlibrary$%\1%'\''`; $RM /sys/libs/${libname}_ixlibrary.a; $show "cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a"; cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a || exit 1; done'
;;
esac
;;
beos*)
- library_names_spec='${libname}${shared_ext}'
+ library_names_spec='$libname$shared_ext'
dynamic_linker="$host_os ld.so"
shlibpath_var=LIBRARY_PATH
;;
@@ -12574,8 +12672,8 @@ beos*)
bsdi[45]*)
version_type=linux # correct to gnu/linux during the next big refactor
need_version=no
- library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
- soname_spec='${libname}${release}${shared_ext}$major'
+ library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext'
+ soname_spec='$libname$release$shared_ext$major'
finish_cmds='PATH="\$PATH:/sbin" ldconfig $libdir'
shlibpath_var=LD_LIBRARY_PATH
sys_lib_search_path_spec="/shlib /usr/lib /usr/X11/lib /usr/contrib/lib /lib /usr/local/lib"
@@ -12587,7 +12685,7 @@ bsdi[45]*)
cygwin* | mingw* | pw32* | cegcc*)
version_type=windows
- shrext_cmds=".dll"
+ shrext_cmds=.dll
need_version=no
need_lib_prefix=no
@@ -12596,8 +12694,8 @@ cygwin* | mingw* | pw32* | cegcc*)
# gcc
library_names_spec='$libname.dll.a'
# DLL is installed to $(libdir)/../bin by postinstall_cmds
- postinstall_cmds='base_file=`basename \${file}`~
- dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\${base_file}'\''i; echo \$dlname'\''`~
+ postinstall_cmds='base_file=`basename \$file`~
+ dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\$base_file'\''i; echo \$dlname'\''`~
dldir=$destdir/`dirname \$dlpath`~
test -d \$dldir || mkdir -p \$dldir~
$install_prog $dir/$dlname \$dldir/$dlname~
@@ -12613,17 +12711,17 @@ cygwin* | mingw* | pw32* | cegcc*)
case $host_os in
cygwin*)
# Cygwin DLLs use 'cyg' prefix rather than 'lib'
- soname_spec='`echo ${libname} | sed -e 's/^lib/cyg/'``echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}'
+ soname_spec='`echo $libname | sed -e 's/^lib/cyg/'``echo $release | $SED -e 's/[.]/-/g'`$versuffix$shared_ext'
sys_lib_search_path_spec="$sys_lib_search_path_spec /usr/lib/w32api"
;;
mingw* | cegcc*)
# MinGW DLLs use traditional 'lib' prefix
- soname_spec='${libname}`echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}'
+ soname_spec='$libname`echo $release | $SED -e 's/[.]/-/g'`$versuffix$shared_ext'
;;
pw32*)
# pw32 DLLs use 'pw' prefix rather than 'lib'
- library_names_spec='`echo ${libname} | sed -e 's/^lib/pw/'``echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}'
+ library_names_spec='`echo $libname | sed -e 's/^lib/pw/'``echo $release | $SED -e 's/[.]/-/g'`$versuffix$shared_ext'
;;
esac
dynamic_linker='Win32 ld.exe'
@@ -12632,8 +12730,8 @@ cygwin* | mingw* | pw32* | cegcc*)
*,cl*)
# Native MSVC
libname_spec='$name'
- soname_spec='${libname}`echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}'
- library_names_spec='${libname}.dll.lib'
+ soname_spec='$libname`echo $release | $SED -e 's/[.]/-/g'`$versuffix$shared_ext'
+ library_names_spec='$libname.dll.lib'
case $build_os in
mingw*)
@@ -12660,7 +12758,7 @@ cygwin* | mingw* | pw32* | cegcc*)
sys_lib_search_path_spec=`cygpath --path --unix "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"`
;;
*)
- sys_lib_search_path_spec="$LIB"
+ sys_lib_search_path_spec=$LIB
if $ECHO "$sys_lib_search_path_spec" | $GREP ';[c-zC-Z]:/' >/dev/null; then
# It is most probably a Windows format PATH.
sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | $SED -e 's/;/ /g'`
@@ -12673,8 +12771,8 @@ cygwin* | mingw* | pw32* | cegcc*)
esac
# DLL is installed to $(libdir)/../bin by postinstall_cmds
- postinstall_cmds='base_file=`basename \${file}`~
- dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\${base_file}'\''i; echo \$dlname'\''`~
+ postinstall_cmds='base_file=`basename \$file`~
+ dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\$base_file'\''i; echo \$dlname'\''`~
dldir=$destdir/`dirname \$dlpath`~
test -d \$dldir || mkdir -p \$dldir~
$install_prog $dir/$dlname \$dldir/$dlname'
@@ -12687,7 +12785,7 @@ cygwin* | mingw* | pw32* | cegcc*)
*)
# Assume MSVC wrapper
- library_names_spec='${libname}`echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext} $libname.lib'
+ library_names_spec='$libname`echo $release | $SED -e 's/[.]/-/g'`$versuffix$shared_ext $libname.lib'
dynamic_linker='Win32 ld.exe'
;;
esac
@@ -12700,8 +12798,8 @@ darwin* | rhapsody*)
version_type=darwin
need_lib_prefix=no
need_version=no
- library_names_spec='${libname}${release}${major}$shared_ext ${libname}$shared_ext'
- soname_spec='${libname}${release}${major}$shared_ext'
+ library_names_spec='$libname$release$major$shared_ext $libname$shared_ext'
+ soname_spec='$libname$release$major$shared_ext'
shlibpath_overrides_runpath=yes
shlibpath_var=DYLD_LIBRARY_PATH
shrext_cmds='`test .$module = .yes && echo .so || echo .dylib`'
@@ -12714,8 +12812,8 @@ dgux*)
version_type=linux # correct to gnu/linux during the next big refactor
need_lib_prefix=no
need_version=no
- library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname$shared_ext'
- soname_spec='${libname}${release}${shared_ext}$major'
+ library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext'
+ soname_spec='$libname$release$shared_ext$major'
shlibpath_var=LD_LIBRARY_PATH
;;
@@ -12733,12 +12831,12 @@ freebsd* | dragonfly*)
version_type=freebsd-$objformat
case $version_type in
freebsd-elf*)
- library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext} $libname${shared_ext}'
+ library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext $libname$shared_ext'
need_version=no
need_lib_prefix=no
;;
freebsd-*)
- library_names_spec='${libname}${release}${shared_ext}$versuffix $libname${shared_ext}$versuffix'
+ library_names_spec='$libname$release$shared_ext$versuffix $libname$shared_ext$versuffix'
need_version=yes
;;
esac
@@ -12763,26 +12861,15 @@ freebsd* | dragonfly*)
esac
;;
-gnu*)
- version_type=linux # correct to gnu/linux during the next big refactor
- need_lib_prefix=no
- need_version=no
- library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}${major} ${libname}${shared_ext}'
- soname_spec='${libname}${release}${shared_ext}$major'
- shlibpath_var=LD_LIBRARY_PATH
- shlibpath_overrides_runpath=no
- hardcode_into_libs=yes
- ;;
-
haiku*)
version_type=linux # correct to gnu/linux during the next big refactor
need_lib_prefix=no
need_version=no
dynamic_linker="$host_os runtime_loader"
- library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}${major} ${libname}${shared_ext}'
- soname_spec='${libname}${release}${shared_ext}$major'
+ library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext'
+ soname_spec='$libname$release$shared_ext$major'
shlibpath_var=LIBRARY_PATH
- shlibpath_overrides_runpath=yes
+ shlibpath_overrides_runpath=no
sys_lib_dlsearch_path_spec='/boot/home/config/lib /boot/common/lib /boot/system/lib'
hardcode_into_libs=yes
;;
@@ -12800,9 +12887,9 @@ hpux9* | hpux10* | hpux11*)
dynamic_linker="$host_os dld.so"
shlibpath_var=LD_LIBRARY_PATH
shlibpath_overrides_runpath=yes # Unless +noenvvar is specified.
- library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
- soname_spec='${libname}${release}${shared_ext}$major'
- if test "X$HPUX_IA64_MODE" = X32; then
+ library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext'
+ soname_spec='$libname$release$shared_ext$major'
+ if test 32 = "$HPUX_IA64_MODE"; then
sys_lib_search_path_spec="/usr/lib/hpux32 /usr/local/lib/hpux32 /usr/local/lib"
else
sys_lib_search_path_spec="/usr/lib/hpux64 /usr/local/lib/hpux64"
@@ -12815,8 +12902,8 @@ hpux9* | hpux10* | hpux11*)
dynamic_linker="$host_os dld.sl"
shlibpath_var=LD_LIBRARY_PATH # How should we handle SHLIB_PATH
shlibpath_overrides_runpath=yes # Unless +noenvvar is specified.
- library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
- soname_spec='${libname}${release}${shared_ext}$major'
+ library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext'
+ soname_spec='$libname$release$shared_ext$major'
sys_lib_search_path_spec="/usr/lib/pa20_64 /usr/ccs/lib/pa20_64"
sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec
;;
@@ -12825,8 +12912,8 @@ hpux9* | hpux10* | hpux11*)
dynamic_linker="$host_os dld.sl"
shlibpath_var=SHLIB_PATH
shlibpath_overrides_runpath=no # +s is required to enable SHLIB_PATH
- library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
- soname_spec='${libname}${release}${shared_ext}$major'
+ library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext'
+ soname_spec='$libname$release$shared_ext$major'
;;
esac
# HP-UX runs *really* slowly unless shared libraries are mode 555, ...
@@ -12839,8 +12926,8 @@ interix[3-9]*)
version_type=linux # correct to gnu/linux during the next big refactor
need_lib_prefix=no
need_version=no
- library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}'
- soname_spec='${libname}${release}${shared_ext}$major'
+ library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext'
+ soname_spec='$libname$release$shared_ext$major'
dynamic_linker='Interix 3.x ld.so.1 (PE, like ELF)'
shlibpath_var=LD_LIBRARY_PATH
shlibpath_overrides_runpath=no
@@ -12851,7 +12938,7 @@ irix5* | irix6* | nonstopux*)
case $host_os in
nonstopux*) version_type=nonstopux ;;
*)
- if test "$lt_cv_prog_gnu_ld" = yes; then
+ if test yes = "$lt_cv_prog_gnu_ld"; then
version_type=linux # correct to gnu/linux during the next big refactor
else
version_type=irix
@@ -12859,8 +12946,8 @@ irix5* | irix6* | nonstopux*)
esac
need_lib_prefix=no
need_version=no
- soname_spec='${libname}${release}${shared_ext}$major'
- library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext} $libname${shared_ext}'
+ soname_spec='$libname$release$shared_ext$major'
+ library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$release$shared_ext $libname$shared_ext'
case $host_os in
irix5* | nonstopux*)
libsuff= shlibsuff=
@@ -12879,8 +12966,8 @@ irix5* | irix6* | nonstopux*)
esac
shlibpath_var=LD_LIBRARY${shlibsuff}_PATH
shlibpath_overrides_runpath=no
- sys_lib_search_path_spec="/usr/lib${libsuff} /lib${libsuff} /usr/local/lib${libsuff}"
- sys_lib_dlsearch_path_spec="/usr/lib${libsuff} /lib${libsuff}"
+ sys_lib_search_path_spec="/usr/lib$libsuff /lib$libsuff /usr/local/lib$libsuff"
+ sys_lib_dlsearch_path_spec="/usr/lib$libsuff /lib$libsuff"
hardcode_into_libs=yes
;;
@@ -12889,13 +12976,33 @@ linux*oldld* | linux*aout* | linux*coff*)
dynamic_linker=no
;;
+linux*android*)
+ version_type=none # Android doesn't support versioned libraries.
+ need_lib_prefix=no
+ need_version=no
+ library_names_spec='$libname$release$shared_ext'
+ soname_spec='$libname$release$shared_ext'
+ finish_cmds=
+ shlibpath_var=LD_LIBRARY_PATH
+ shlibpath_overrides_runpath=yes
+
+ # This implies no fast_install, which is unacceptable.
+ # Some rework will be needed to allow for fast_install
+ # before this can be enabled.
+ hardcode_into_libs=yes
+
+ dynamic_linker='Android linker'
+ # Don't embed -rpath directories since the linker doesn't support them.
+ hardcode_libdir_flag_spec='-L$libdir'
+ ;;
+
# This must be glibc/ELF.
-linux* | k*bsd*-gnu | kopensolaris*-gnu)
+linux* | k*bsd*-gnu | kopensolaris*-gnu | gnu*)
version_type=linux # correct to gnu/linux during the next big refactor
need_lib_prefix=no
need_version=no
- library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
- soname_spec='${libname}${release}${shared_ext}$major'
+ library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext'
+ soname_spec='$libname$release$shared_ext$major'
finish_cmds='PATH="\$PATH:/sbin" ldconfig -n $libdir'
shlibpath_var=LD_LIBRARY_PATH
shlibpath_overrides_runpath=no
@@ -12939,14 +13046,10 @@ fi
# before this can be enabled.
hardcode_into_libs=yes
- # Add ABI-specific directories to the system library path.
- sys_lib_dlsearch_path_spec="/lib64 /usr/lib64 /lib /usr/lib"
-
# Append ld.so.conf contents to the search path
if test -f /etc/ld.so.conf; then
lt_ld_extra=`awk '/^include / { system(sprintf("cd /etc; cat %s 2>/dev/null", \$2)); skip = 1; } { if (!skip) print \$0; skip = 0; }' < /etc/ld.so.conf | $SED -e 's/#.*//;/^[ ]*hwcap[ ]/d;s/[:, ]/ /g;s/=[^=]*$//;s/=[^= ]* / /g;s/"//g;/^$/d' | tr '\n' ' '`
- sys_lib_dlsearch_path_spec="$sys_lib_dlsearch_path_spec $lt_ld_extra"
-
+ sys_lib_dlsearch_path_spec="/lib /usr/lib $lt_ld_extra"
fi
# We used to test for /lib/ld.so.1 and disable shared libraries on
@@ -12963,12 +13066,12 @@ netbsd*)
need_lib_prefix=no
need_version=no
if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then
- library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix'
+ library_names_spec='$libname$release$shared_ext$versuffix $libname$shared_ext$versuffix'
finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir'
dynamic_linker='NetBSD (a.out) ld.so'
else
- library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}'
- soname_spec='${libname}${release}${shared_ext}$major'
+ library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext'
+ soname_spec='$libname$release$shared_ext$major'
dynamic_linker='NetBSD ld.elf_so'
fi
shlibpath_var=LD_LIBRARY_PATH
@@ -12978,7 +13081,7 @@ netbsd*)
newsos6)
version_type=linux # correct to gnu/linux during the next big refactor
- library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+ library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext'
shlibpath_var=LD_LIBRARY_PATH
shlibpath_overrides_runpath=yes
;;
@@ -12987,45 +13090,34 @@ newsos6)
version_type=qnx
need_lib_prefix=no
need_version=no
- library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
- soname_spec='${libname}${release}${shared_ext}$major'
+ library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext'
+ soname_spec='$libname$release$shared_ext$major'
shlibpath_var=LD_LIBRARY_PATH
shlibpath_overrides_runpath=no
hardcode_into_libs=yes
dynamic_linker='ldqnx.so'
;;
-openbsd*)
+openbsd* | bitrig*)
version_type=sunos
- sys_lib_dlsearch_path_spec="/usr/lib"
+ sys_lib_dlsearch_path_spec=/usr/lib
need_lib_prefix=no
- # Some older versions of OpenBSD (3.3 at least) *do* need versioned libs.
- case $host_os in
- openbsd3.3 | openbsd3.3.*) need_version=yes ;;
- *) need_version=no ;;
- esac
- library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix'
- finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir'
- shlibpath_var=LD_LIBRARY_PATH
- if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then
- case $host_os in
- openbsd2.[89] | openbsd2.[89].*)
- shlibpath_overrides_runpath=no
- ;;
- *)
- shlibpath_overrides_runpath=yes
- ;;
- esac
+ if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`"; then
+ need_version=no
else
- shlibpath_overrides_runpath=yes
+ need_version=yes
fi
+ library_names_spec='$libname$release$shared_ext$versuffix $libname$shared_ext$versuffix'
+ finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir'
+ shlibpath_var=LD_LIBRARY_PATH
+ shlibpath_overrides_runpath=yes
;;
os2*)
libname_spec='$name'
- shrext_cmds=".dll"
+ shrext_cmds=.dll
need_lib_prefix=no
- library_names_spec='$libname${shared_ext} $libname.a'
+ library_names_spec='$libname$shared_ext $libname.a'
dynamic_linker='OS/2 ld.exe'
shlibpath_var=LIBPATH
;;
@@ -13034,11 +13126,11 @@ osf3* | osf4* | osf5*)
version_type=osf
need_lib_prefix=no
need_version=no
- soname_spec='${libname}${release}${shared_ext}$major'
- library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+ soname_spec='$libname$release$shared_ext$major'
+ library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext'
shlibpath_var=LD_LIBRARY_PATH
sys_lib_search_path_spec="/usr/shlib /usr/ccs/lib /usr/lib/cmplrs/cc /usr/lib /usr/local/lib /var/shlib"
- sys_lib_dlsearch_path_spec="$sys_lib_search_path_spec"
+ sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec
;;
rdos*)
@@ -13049,8 +13141,8 @@ solaris*)
version_type=linux # correct to gnu/linux during the next big refactor
need_lib_prefix=no
need_version=no
- library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
- soname_spec='${libname}${release}${shared_ext}$major'
+ library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext'
+ soname_spec='$libname$release$shared_ext$major'
shlibpath_var=LD_LIBRARY_PATH
shlibpath_overrides_runpath=yes
hardcode_into_libs=yes
@@ -13060,11 +13152,11 @@ solaris*)
sunos4*)
version_type=sunos
- library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix'
+ library_names_spec='$libname$release$shared_ext$versuffix $libname$shared_ext$versuffix'
finish_cmds='PATH="\$PATH:/usr/etc" ldconfig $libdir'
shlibpath_var=LD_LIBRARY_PATH
shlibpath_overrides_runpath=yes
- if test "$with_gnu_ld" = yes; then
+ if test yes = "$with_gnu_ld"; then
need_lib_prefix=no
fi
need_version=yes
@@ -13072,8 +13164,8 @@ sunos4*)
sysv4 | sysv4.3*)
version_type=linux # correct to gnu/linux during the next big refactor
- library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
- soname_spec='${libname}${release}${shared_ext}$major'
+ library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext'
+ soname_spec='$libname$release$shared_ext$major'
shlibpath_var=LD_LIBRARY_PATH
case $host_vendor in
sni)
@@ -13094,10 +13186,10 @@ sysv4 | sysv4.3*)
;;
sysv4*MP*)
- if test -d /usr/nec ;then
+ if test -d /usr/nec; then
version_type=linux # correct to gnu/linux during the next big refactor
- library_names_spec='$libname${shared_ext}.$versuffix $libname${shared_ext}.$major $libname${shared_ext}'
- soname_spec='$libname${shared_ext}.$major'
+ library_names_spec='$libname$shared_ext.$versuffix $libname$shared_ext.$major $libname$shared_ext'
+ soname_spec='$libname$shared_ext.$major'
shlibpath_var=LD_LIBRARY_PATH
fi
;;
@@ -13106,12 +13198,12 @@ sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX* | sysv4*uw2*)
version_type=freebsd-elf
need_lib_prefix=no
need_version=no
- library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext} $libname${shared_ext}'
- soname_spec='${libname}${release}${shared_ext}$major'
+ library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext $libname$shared_ext'
+ soname_spec='$libname$release$shared_ext$major'
shlibpath_var=LD_LIBRARY_PATH
shlibpath_overrides_runpath=yes
hardcode_into_libs=yes
- if test "$with_gnu_ld" = yes; then
+ if test yes = "$with_gnu_ld"; then
sys_lib_search_path_spec='/usr/local/lib /usr/gnu/lib /usr/ccs/lib /usr/lib /lib'
else
sys_lib_search_path_spec='/usr/ccs/lib /usr/lib'
@@ -13129,7 +13221,7 @@ tpf*)
version_type=linux # correct to gnu/linux during the next big refactor
need_lib_prefix=no
need_version=no
- library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+ library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext'
shlibpath_var=LD_LIBRARY_PATH
shlibpath_overrides_runpath=no
hardcode_into_libs=yes
@@ -13137,8 +13229,8 @@ tpf*)
uts4*)
version_type=linux # correct to gnu/linux during the next big refactor
- library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
- soname_spec='${libname}${release}${shared_ext}$major'
+ library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext'
+ soname_spec='$libname$release$shared_ext$major'
shlibpath_var=LD_LIBRARY_PATH
;;
@@ -13148,18 +13240,18 @@ uts4*)
esac
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $dynamic_linker" >&5
$as_echo "$dynamic_linker" >&6; }
-test "$dynamic_linker" = no && can_build_shared=no
+test no = "$dynamic_linker" && can_build_shared=no
variables_saved_for_relink="PATH $shlibpath_var $runpath_var"
-if test "$GCC" = yes; then
+if test yes = "$GCC"; then
variables_saved_for_relink="$variables_saved_for_relink GCC_EXEC_PREFIX COMPILER_PATH LIBRARY_PATH"
fi
-if test "${lt_cv_sys_lib_search_path_spec+set}" = set; then
- sys_lib_search_path_spec="$lt_cv_sys_lib_search_path_spec"
+if test set = "${lt_cv_sys_lib_search_path_spec+set}"; then
+ sys_lib_search_path_spec=$lt_cv_sys_lib_search_path_spec
fi
-if test "${lt_cv_sys_lib_dlsearch_path_spec+set}" = set; then
- sys_lib_dlsearch_path_spec="$lt_cv_sys_lib_dlsearch_path_spec"
+if test set = "${lt_cv_sys_lib_dlsearch_path_spec+set}"; then
+ sys_lib_dlsearch_path_spec=$lt_cv_sys_lib_dlsearch_path_spec
fi
@@ -13258,15 +13350,15 @@ $as_echo_n "checking how to hardcode library paths into programs... " >&6; }
hardcode_action=
if test -n "$hardcode_libdir_flag_spec" ||
test -n "$runpath_var" ||
- test "X$hardcode_automatic" = "Xyes" ; then
+ test yes = "$hardcode_automatic"; then
# We can hardcode non-existent directories.
- if test "$hardcode_direct" != no &&
+ if test no != "$hardcode_direct" &&
# If the only mechanism to avoid hardcoding is shlibpath_var, we
# have to relink, otherwise we might link with an installed library
# when we should be linking with a yet-to-be-installed one
- ## test "$_LT_TAGVAR(hardcode_shlibpath_var, )" != no &&
- test "$hardcode_minus_L" != no; then
+ ## test no != "$_LT_TAGVAR(hardcode_shlibpath_var, )" &&
+ test no != "$hardcode_minus_L"; then
# Linking always hardcodes the temporary library directory.
hardcode_action=relink
else
@@ -13281,12 +13373,12 @@ fi
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $hardcode_action" >&5
$as_echo "$hardcode_action" >&6; }
-if test "$hardcode_action" = relink ||
- test "$inherit_rpath" = yes; then
+if test relink = "$hardcode_action" ||
+ test yes = "$inherit_rpath"; then
# Fast installation is not supported
enable_fast_install=no
-elif test "$shlibpath_overrides_runpath" = yes ||
- test "$enable_shared" = no; then
+elif test yes = "$shlibpath_overrides_runpath" ||
+ test no = "$enable_shared"; then
# Fast installation is not necessary
enable_fast_install=needless
fi
@@ -13296,7 +13388,7 @@ fi
- if test "x$enable_dlopen" != xyes; then
+ if test yes != "$enable_dlopen"; then
enable_dlopen=unknown
enable_dlopen_self=unknown
enable_dlopen_self_static=unknown
@@ -13306,23 +13398,23 @@ else
case $host_os in
beos*)
- lt_cv_dlopen="load_add_on"
+ lt_cv_dlopen=load_add_on
lt_cv_dlopen_libs=
lt_cv_dlopen_self=yes
;;
mingw* | pw32* | cegcc*)
- lt_cv_dlopen="LoadLibrary"
+ lt_cv_dlopen=LoadLibrary
lt_cv_dlopen_libs=
;;
cygwin*)
- lt_cv_dlopen="dlopen"
+ lt_cv_dlopen=dlopen
lt_cv_dlopen_libs=
;;
darwin*)
- # if libdl is installed we need to link against it
+ # if libdl is installed we need to link against it
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for dlopen in -ldl" >&5
$as_echo_n "checking for dlopen in -ldl... " >&6; }
if ${ac_cv_lib_dl_dlopen+:} false; then :
@@ -13360,10 +13452,10 @@ fi
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_dl_dlopen" >&5
$as_echo "$ac_cv_lib_dl_dlopen" >&6; }
if test "x$ac_cv_lib_dl_dlopen" = xyes; then :
- lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-ldl"
+ lt_cv_dlopen=dlopen lt_cv_dlopen_libs=-ldl
else
- lt_cv_dlopen="dyld"
+ lt_cv_dlopen=dyld
lt_cv_dlopen_libs=
lt_cv_dlopen_self=yes
@@ -13371,10 +13463,18 @@ fi
;;
+ tpf*)
+ # Don't try to run any link tests for TPF. We know it's impossible
+ # because TPF is a cross-compiler, and we know how we open DSOs.
+ lt_cv_dlopen=dlopen
+ lt_cv_dlopen_libs=
+ lt_cv_dlopen_self=no
+ ;;
+
*)
ac_fn_c_check_func "$LINENO" "shl_load" "ac_cv_func_shl_load"
if test "x$ac_cv_func_shl_load" = xyes; then :
- lt_cv_dlopen="shl_load"
+ lt_cv_dlopen=shl_load
else
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for shl_load in -ldld" >&5
$as_echo_n "checking for shl_load in -ldld... " >&6; }
@@ -13413,11 +13513,11 @@ fi
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_dld_shl_load" >&5
$as_echo "$ac_cv_lib_dld_shl_load" >&6; }
if test "x$ac_cv_lib_dld_shl_load" = xyes; then :
- lt_cv_dlopen="shl_load" lt_cv_dlopen_libs="-ldld"
+ lt_cv_dlopen=shl_load lt_cv_dlopen_libs=-ldld
else
ac_fn_c_check_func "$LINENO" "dlopen" "ac_cv_func_dlopen"
if test "x$ac_cv_func_dlopen" = xyes; then :
- lt_cv_dlopen="dlopen"
+ lt_cv_dlopen=dlopen
else
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for dlopen in -ldl" >&5
$as_echo_n "checking for dlopen in -ldl... " >&6; }
@@ -13456,7 +13556,7 @@ fi
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_dl_dlopen" >&5
$as_echo "$ac_cv_lib_dl_dlopen" >&6; }
if test "x$ac_cv_lib_dl_dlopen" = xyes; then :
- lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-ldl"
+ lt_cv_dlopen=dlopen lt_cv_dlopen_libs=-ldl
else
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for dlopen in -lsvld" >&5
$as_echo_n "checking for dlopen in -lsvld... " >&6; }
@@ -13495,7 +13595,7 @@ fi
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_svld_dlopen" >&5
$as_echo "$ac_cv_lib_svld_dlopen" >&6; }
if test "x$ac_cv_lib_svld_dlopen" = xyes; then :
- lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-lsvld"
+ lt_cv_dlopen=dlopen lt_cv_dlopen_libs=-lsvld
else
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for dld_link in -ldld" >&5
$as_echo_n "checking for dld_link in -ldld... " >&6; }
@@ -13534,7 +13634,7 @@ fi
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_dld_dld_link" >&5
$as_echo "$ac_cv_lib_dld_dld_link" >&6; }
if test "x$ac_cv_lib_dld_dld_link" = xyes; then :
- lt_cv_dlopen="dld_link" lt_cv_dlopen_libs="-ldld"
+ lt_cv_dlopen=dld_link lt_cv_dlopen_libs=-ldld
fi
@@ -13555,21 +13655,21 @@ fi
;;
esac
- if test "x$lt_cv_dlopen" != xno; then
- enable_dlopen=yes
- else
+ if test no = "$lt_cv_dlopen"; then
enable_dlopen=no
+ else
+ enable_dlopen=yes
fi
case $lt_cv_dlopen in
dlopen)
- save_CPPFLAGS="$CPPFLAGS"
- test "x$ac_cv_header_dlfcn_h" = xyes && CPPFLAGS="$CPPFLAGS -DHAVE_DLFCN_H"
+ save_CPPFLAGS=$CPPFLAGS
+ test yes = "$ac_cv_header_dlfcn_h" && CPPFLAGS="$CPPFLAGS -DHAVE_DLFCN_H"
- save_LDFLAGS="$LDFLAGS"
+ save_LDFLAGS=$LDFLAGS
wl=$lt_prog_compiler_wl eval LDFLAGS=\"\$LDFLAGS $export_dynamic_flag_spec\"
- save_LIBS="$LIBS"
+ save_LIBS=$LIBS
LIBS="$lt_cv_dlopen_libs $LIBS"
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether a program can dlopen itself" >&5
@@ -13577,7 +13677,7 @@ $as_echo_n "checking whether a program can dlopen itself... " >&6; }
if ${lt_cv_dlopen_self+:} false; then :
$as_echo_n "(cached) " >&6
else
- if test "$cross_compiling" = yes; then :
+ if test yes = "$cross_compiling"; then :
lt_cv_dlopen_self=cross
else
lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2
@@ -13626,7 +13726,7 @@ else
/* When -fvisbility=hidden is used, assume the code has been annotated
correspondingly for the symbols needed. */
-#if defined(__GNUC__) && (((__GNUC__ == 3) && (__GNUC_MINOR__ >= 3)) || (__GNUC__ > 3))
+#if defined __GNUC__ && (((__GNUC__ == 3) && (__GNUC_MINOR__ >= 3)) || (__GNUC__ > 3))
int fnord () __attribute__((visibility("default")));
#endif
@@ -13656,7 +13756,7 @@ _LT_EOF
(eval $ac_link) 2>&5
ac_status=$?
$as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
- test $ac_status = 0; } && test -s conftest${ac_exeext} 2>/dev/null; then
+ test $ac_status = 0; } && test -s "conftest$ac_exeext" 2>/dev/null; then
(./conftest; exit; ) >&5 2>/dev/null
lt_status=$?
case x$lt_status in
@@ -13676,14 +13776,14 @@ fi
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_dlopen_self" >&5
$as_echo "$lt_cv_dlopen_self" >&6; }
- if test "x$lt_cv_dlopen_self" = xyes; then
+ if test yes = "$lt_cv_dlopen_self"; then
wl=$lt_prog_compiler_wl eval LDFLAGS=\"\$LDFLAGS $lt_prog_compiler_static\"
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether a statically linked program can dlopen itself" >&5
$as_echo_n "checking whether a statically linked program can dlopen itself... " >&6; }
if ${lt_cv_dlopen_self_static+:} false; then :
$as_echo_n "(cached) " >&6
else
- if test "$cross_compiling" = yes; then :
+ if test yes = "$cross_compiling"; then :
lt_cv_dlopen_self_static=cross
else
lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2
@@ -13732,7 +13832,7 @@ else
/* When -fvisbility=hidden is used, assume the code has been annotated
correspondingly for the symbols needed. */
-#if defined(__GNUC__) && (((__GNUC__ == 3) && (__GNUC_MINOR__ >= 3)) || (__GNUC__ > 3))
+#if defined __GNUC__ && (((__GNUC__ == 3) && (__GNUC_MINOR__ >= 3)) || (__GNUC__ > 3))
int fnord () __attribute__((visibility("default")));
#endif
@@ -13762,7 +13862,7 @@ _LT_EOF
(eval $ac_link) 2>&5
ac_status=$?
$as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
- test $ac_status = 0; } && test -s conftest${ac_exeext} 2>/dev/null; then
+ test $ac_status = 0; } && test -s "conftest$ac_exeext" 2>/dev/null; then
(./conftest; exit; ) >&5 2>/dev/null
lt_status=$?
case x$lt_status in
@@ -13783,9 +13883,9 @@ fi
$as_echo "$lt_cv_dlopen_self_static" >&6; }
fi
- CPPFLAGS="$save_CPPFLAGS"
- LDFLAGS="$save_LDFLAGS"
- LIBS="$save_LIBS"
+ CPPFLAGS=$save_CPPFLAGS
+ LDFLAGS=$save_LDFLAGS
+ LIBS=$save_LIBS
;;
esac
@@ -13829,7 +13929,7 @@ else
# FIXME - insert some real tests, host_os isn't really good enough
case $host_os in
darwin*)
- if test -n "$STRIP" ; then
+ if test -n "$STRIP"; then
striplib="$STRIP -x"
old_striplib="$STRIP -S"
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
@@ -13857,7 +13957,7 @@ fi
- # Report which library types will actually be built
+ # Report what library types will actually be built
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking if libtool supports shared libraries" >&5
$as_echo_n "checking if libtool supports shared libraries... " >&6; }
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $can_build_shared" >&5
@@ -13865,13 +13965,13 @@ $as_echo "$can_build_shared" >&6; }
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether to build shared libraries" >&5
$as_echo_n "checking whether to build shared libraries... " >&6; }
- test "$can_build_shared" = "no" && enable_shared=no
+ test no = "$can_build_shared" && enable_shared=no
# On AIX, shared libraries and static libraries use the same namespace, and
# are all built from PIC.
case $host_os in
aix3*)
- test "$enable_shared" = yes && enable_static=no
+ test yes = "$enable_shared" && enable_static=no
if test -n "$RANLIB"; then
archive_cmds="$archive_cmds~\$RANLIB \$lib"
postinstall_cmds='$RANLIB $lib'
@@ -13879,8 +13979,8 @@ $as_echo_n "checking whether to build shared libraries... " >&6; }
;;
aix[4-9]*)
- if test "$host_cpu" != ia64 && test "$aix_use_runtimelinking" = no ; then
- test "$enable_shared" = yes && enable_static=no
+ if test ia64 != "$host_cpu" && test no = "$aix_use_runtimelinking"; then
+ test yes = "$enable_shared" && enable_static=no
fi
;;
esac
@@ -13890,7 +13990,7 @@ $as_echo "$enable_shared" >&6; }
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether to build static libraries" >&5
$as_echo_n "checking whether to build static libraries... " >&6; }
# Make sure either enable_shared or enable_static is yes.
- test "$enable_shared" = yes || enable_static=yes
+ test yes = "$enable_shared" || enable_static=yes
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $enable_static" >&5
$as_echo "$enable_static" >&6; }
@@ -13904,7 +14004,7 @@ ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
ac_compiler_gnu=$ac_cv_c_compiler_gnu
-CC="$lt_save_CC"
+CC=$lt_save_CC
@@ -13934,7 +14034,7 @@ pkgextensiondir='${libdir}/gawk'
if test "$GCC" = yes
then
- CFLAGS="$CFLAGS -Wall -Wextra"
+ CFLAGS="$CFLAGS -Wall" # Don't add -Wextra, hurts older gcc
fi
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for special development options" >&5
@@ -13952,6 +14052,177 @@ else
$as_echo "no" >&6; }
fi
+for ac_header in fnmatch.h limits.h sys/time.h sys/select.h sys/param.h signal.h
+do :
+ as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh`
+ac_fn_c_check_header_mongrel "$LINENO" "$ac_header" "$as_ac_Header" "$ac_includes_default"
+if eval test \"x\$"$as_ac_Header"\" = x"yes"; then :
+ cat >>confdefs.h <<_ACEOF
+#define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1
+_ACEOF
+
+fi
+
+done
+
+ac_header_dirent=no
+for ac_hdr in dirent.h sys/ndir.h sys/dir.h ndir.h; do
+ as_ac_Header=`$as_echo "ac_cv_header_dirent_$ac_hdr" | $as_tr_sh`
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_hdr that defines DIR" >&5
+$as_echo_n "checking for $ac_hdr that defines DIR... " >&6; }
+if eval \${$as_ac_Header+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+#include <sys/types.h>
+#include <$ac_hdr>
+
+int
+main ()
+{
+if ((DIR *) 0)
+return 0;
+ ;
+ return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+ eval "$as_ac_Header=yes"
+else
+ eval "$as_ac_Header=no"
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+eval ac_res=\$$as_ac_Header
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5
+$as_echo "$ac_res" >&6; }
+if eval test \"x\$"$as_ac_Header"\" = x"yes"; then :
+ cat >>confdefs.h <<_ACEOF
+#define `$as_echo "HAVE_$ac_hdr" | $as_tr_cpp` 1
+_ACEOF
+
+ac_header_dirent=$ac_hdr; break
+fi
+
+done
+# Two versions of opendir et al. are in -ldir and -lx on SCO Xenix.
+if test $ac_header_dirent = dirent.h; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for library containing opendir" >&5
+$as_echo_n "checking for library containing opendir... " >&6; }
+if ${ac_cv_search_opendir+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ ac_func_search_save_LIBS=$LIBS
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+
+/* Override any GCC internal prototype to avoid an error.
+ Use char because int might match the return type of a GCC
+ builtin and then its argument prototype would still apply. */
+#ifdef __cplusplus
+extern "C"
+#endif
+char opendir ();
+int
+main ()
+{
+return opendir ();
+ ;
+ return 0;
+}
+_ACEOF
+for ac_lib in '' dir; do
+ if test -z "$ac_lib"; then
+ ac_res="none required"
+ else
+ ac_res=-l$ac_lib
+ LIBS="-l$ac_lib $ac_func_search_save_LIBS"
+ fi
+ if ac_fn_c_try_link "$LINENO"; then :
+ ac_cv_search_opendir=$ac_res
+fi
+rm -f core conftest.err conftest.$ac_objext \
+ conftest$ac_exeext
+ if ${ac_cv_search_opendir+:} false; then :
+ break
+fi
+done
+if ${ac_cv_search_opendir+:} false; then :
+
+else
+ ac_cv_search_opendir=no
+fi
+rm conftest.$ac_ext
+LIBS=$ac_func_search_save_LIBS
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_search_opendir" >&5
+$as_echo "$ac_cv_search_opendir" >&6; }
+ac_res=$ac_cv_search_opendir
+if test "$ac_res" != no; then :
+ test "$ac_res" = "none required" || LIBS="$ac_res $LIBS"
+
+fi
+
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for library containing opendir" >&5
+$as_echo_n "checking for library containing opendir... " >&6; }
+if ${ac_cv_search_opendir+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ ac_func_search_save_LIBS=$LIBS
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+
+/* Override any GCC internal prototype to avoid an error.
+ Use char because int might match the return type of a GCC
+ builtin and then its argument prototype would still apply. */
+#ifdef __cplusplus
+extern "C"
+#endif
+char opendir ();
+int
+main ()
+{
+return opendir ();
+ ;
+ return 0;
+}
+_ACEOF
+for ac_lib in '' x; do
+ if test -z "$ac_lib"; then
+ ac_res="none required"
+ else
+ ac_res=-l$ac_lib
+ LIBS="-l$ac_lib $ac_func_search_save_LIBS"
+ fi
+ if ac_fn_c_try_link "$LINENO"; then :
+ ac_cv_search_opendir=$ac_res
+fi
+rm -f core conftest.err conftest.$ac_objext \
+ conftest$ac_exeext
+ if ${ac_cv_search_opendir+:} false; then :
+ break
+fi
+done
+if ${ac_cv_search_opendir+:} false; then :
+
+else
+ ac_cv_search_opendir=no
+fi
+rm conftest.$ac_ext
+LIBS=$ac_func_search_save_LIBS
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_search_opendir" >&5
+$as_echo "$ac_cv_search_opendir" >&6; }
+ac_res=$ac_cv_search_opendir
+if test "$ac_res" != no; then :
+ test "$ac_res" = "none required" || LIBS="$ac_res $LIBS"
+
+fi
+
+fi
+
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether sys/types.h defines makedev" >&5
$as_echo_n "checking whether sys/types.h defines makedev... " >&6; }
if ${ac_cv_header_sys_types_h_makedev+:} false; then :
@@ -14002,19 +14273,40 @@ fi
fi
fi
-for ac_header in dirent.h fnmatch.h limits.h time.h sys/time.h sys/select.h \
- sys/param.h signal.h
-do :
- as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh`
-ac_fn_c_check_header_mongrel "$LINENO" "$ac_header" "$as_ac_Header" "$ac_includes_default"
-if eval test \"x\$"$as_ac_Header"\" = x"yes"; then :
- cat >>confdefs.h <<_ACEOF
-#define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1
-_ACEOF
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether time.h and sys/time.h may both be included" >&5
+$as_echo_n "checking whether time.h and sys/time.h may both be included... " >&6; }
+if ${ac_cv_header_time+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+#include <sys/types.h>
+#include <sys/time.h>
+#include <time.h>
+int
+main ()
+{
+if ((struct tm *) 0)
+return 0;
+ ;
+ return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+ ac_cv_header_time=yes
+else
+ ac_cv_header_time=no
fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_header_time" >&5
+$as_echo "$ac_cv_header_time" >&6; }
+if test $ac_cv_header_time = yes; then
-done
+$as_echo "#define TIME_WITH_SYS_TIME 1" >>confdefs.h
+
+fi
for ac_func in fcntl fdopendir fnmatch gettimeofday \
@@ -14196,7 +14488,6 @@ ac_config_headers="$ac_config_headers config.h:configh.in"
ac_config_files="$ac_config_files Makefile"
-ac_config_commands="$ac_config_commands default-1"
cat >confcache <<\_ACEOF
# This file is a shell script that caches the results of configure
# tests run on this system so they can be shared between configure
@@ -14727,7 +15018,7 @@ cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
# report actual input values of CONFIG_FILES etc. instead of their
# values after options handling.
ac_log="
-This file was extended by GNU Awk Bundled Extensions $as_me 4.1.0, which was
+This file was extended by GNU Awk Bundled Extensions $as_me 4.1.1, which was
generated by GNU Autoconf 2.69. Invocation command line was
CONFIG_FILES = $CONFIG_FILES
@@ -14795,7 +15086,7 @@ _ACEOF
cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
ac_cs_config="`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`"
ac_cs_version="\\
-GNU Awk Bundled Extensions config.status 4.1.0
+GNU Awk Bundled Extensions config.status 4.1.1
configured by $0, generated by GNU Autoconf 2.69,
with options \\"\$ac_cs_config\\"
@@ -14986,8 +15277,10 @@ compiler='`$ECHO "$compiler" | $SED "$delay_single_quote_subst"`'
GCC='`$ECHO "$GCC" | $SED "$delay_single_quote_subst"`'
lt_cv_sys_global_symbol_pipe='`$ECHO "$lt_cv_sys_global_symbol_pipe" | $SED "$delay_single_quote_subst"`'
lt_cv_sys_global_symbol_to_cdecl='`$ECHO "$lt_cv_sys_global_symbol_to_cdecl" | $SED "$delay_single_quote_subst"`'
+lt_cv_sys_global_symbol_to_import='`$ECHO "$lt_cv_sys_global_symbol_to_import" | $SED "$delay_single_quote_subst"`'
lt_cv_sys_global_symbol_to_c_name_address='`$ECHO "$lt_cv_sys_global_symbol_to_c_name_address" | $SED "$delay_single_quote_subst"`'
lt_cv_sys_global_symbol_to_c_name_address_lib_prefix='`$ECHO "$lt_cv_sys_global_symbol_to_c_name_address_lib_prefix" | $SED "$delay_single_quote_subst"`'
+lt_cv_nm_interface='`$ECHO "$lt_cv_nm_interface" | $SED "$delay_single_quote_subst"`'
nm_file_list_spec='`$ECHO "$nm_file_list_spec" | $SED "$delay_single_quote_subst"`'
lt_sysroot='`$ECHO "$lt_sysroot" | $SED "$delay_single_quote_subst"`'
objdir='`$ECHO "$objdir" | $SED "$delay_single_quote_subst"`'
@@ -15105,8 +15398,10 @@ CFLAGS \
compiler \
lt_cv_sys_global_symbol_pipe \
lt_cv_sys_global_symbol_to_cdecl \
+lt_cv_sys_global_symbol_to_import \
lt_cv_sys_global_symbol_to_c_name_address \
lt_cv_sys_global_symbol_to_c_name_address_lib_prefix \
+lt_cv_nm_interface \
nm_file_list_spec \
lt_prog_compiler_no_builtin_flag \
lt_prog_compiler_pic \
@@ -15142,7 +15437,7 @@ old_striplib \
striplib; do
case \`eval \\\\\$ECHO \\\\""\\\\\$\$var"\\\\"\` in
*[\\\\\\\`\\"\\\$]*)
- eval "lt_\$var=\\\\\\"\\\`\\\$ECHO \\"\\\$\$var\\" | \\\$SED \\"\\\$sed_quote_subst\\"\\\`\\\\\\""
+ eval "lt_\$var=\\\\\\"\\\`\\\$ECHO \\"\\\$\$var\\" | \\\$SED \\"\\\$sed_quote_subst\\"\\\`\\\\\\"" ## exclude from sc_prohibit_nested_quotes
;;
*)
eval "lt_\$var=\\\\\\"\\\$\$var\\\\\\""
@@ -15172,7 +15467,7 @@ sys_lib_search_path_spec \
sys_lib_dlsearch_path_spec; do
case \`eval \\\\\$ECHO \\\\""\\\\\$\$var"\\\\"\` in
*[\\\\\\\`\\"\\\$]*)
- eval "lt_\$var=\\\\\\"\\\`\\\$ECHO \\"\\\$\$var\\" | \\\$SED -e \\"\\\$double_quote_subst\\" -e \\"\\\$sed_quote_subst\\" -e \\"\\\$delay_variable_subst\\"\\\`\\\\\\""
+ eval "lt_\$var=\\\\\\"\\\`\\\$ECHO \\"\\\$\$var\\" | \\\$SED -e \\"\\\$double_quote_subst\\" -e \\"\\\$sed_quote_subst\\" -e \\"\\\$delay_variable_subst\\"\\\`\\\\\\"" ## exclude from sc_prohibit_nested_quotes
;;
*)
eval "lt_\$var=\\\\\\"\\\$\$var\\\\\\""
@@ -15181,26 +15476,22 @@ sys_lib_dlsearch_path_spec; do
done
ac_aux_dir='$ac_aux_dir'
-xsi_shell='$xsi_shell'
-lt_shell_append='$lt_shell_append'
-# See if we are running on zsh, and set the options which allow our
+# See if we are running on zsh, and set the options that allow our
# commands through without removal of \ escapes INIT.
-if test -n "\${ZSH_VERSION+set}" ; then
+if test -n "\${ZSH_VERSION+set}"; then
setopt NO_GLOB_SUBST
fi
PACKAGE='$PACKAGE'
VERSION='$VERSION'
- TIMESTAMP='$TIMESTAMP'
RM='$RM'
ofile='$ofile'
-
_ACEOF
cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
@@ -15214,7 +15505,6 @@ do
"libtool") CONFIG_COMMANDS="$CONFIG_COMMANDS libtool" ;;
"config.h") CONFIG_HEADERS="$CONFIG_HEADERS config.h:configh.in" ;;
"Makefile") CONFIG_FILES="$CONFIG_FILES Makefile" ;;
- "default-1") CONFIG_COMMANDS="$CONFIG_COMMANDS default-1" ;;
*) as_fn_error $? "invalid argument: \`$ac_config_target'" "$LINENO" 5;;
esac
@@ -15862,7 +16152,7 @@ $as_echo X"$mf" |
DEPDIR=`sed -n 's/^DEPDIR = //p' < "$mf"`
test -z "$DEPDIR" && continue
am__include=`sed -n 's/^am__include = //p' < "$mf"`
- test -z "am__include" && continue
+ test -z "$am__include" && continue
am__quote=`sed -n 's/^am__quote = //p' < "$mf"`
# Find all dependency output files, they are included files with
# $(DEPDIR) in their names. We invoke sed twice because it is the
@@ -16018,13 +16308,13 @@ $as_echo X"$file" |
done ;;
"libtool":C)
- # See if we are running on zsh, and set the options which allow our
+ # See if we are running on zsh, and set the options that allow our
# commands through without removal of \ escapes.
- if test -n "${ZSH_VERSION+set}" ; then
+ if test -n "${ZSH_VERSION+set}"; then
setopt NO_GLOB_SUBST
fi
- cfgfile="${ofile}T"
+ cfgfile=${ofile}T
trap "$RM \"$cfgfile\"; exit 1" 1 2 15
$RM "$cfgfile"
@@ -16032,7 +16322,7 @@ $as_echo X"$file" |
#! $SHELL
# `$ECHO "$ofile" | sed 's%^.*/%%'` - Provide generalized library-building support services.
-# Generated automatically by $as_me ($PACKAGE$TIMESTAMP) $VERSION
+# Generated automatically by $as_me ($PACKAGE) $VERSION
# Libtool was configured on host `(hostname || uname -n) 2>/dev/null | sed 1q`:
# NOTE: Changes made to this file will be lost: look at ltmain.sh.
#
@@ -16066,7 +16356,7 @@ $as_echo X"$file" |
# The names of the tagged configurations supported by this script.
-available_tags=""
+available_tags=''
# ### BEGIN LIBTOOL CONFIG
@@ -16203,16 +16493,22 @@ global_symbol_pipe=$lt_lt_cv_sys_global_symbol_pipe
# Transform the output of nm in a proper C declaration.
global_symbol_to_cdecl=$lt_lt_cv_sys_global_symbol_to_cdecl
+# Transform the output of nm into a list of symbols to manually relocate.
+global_symbol_to_import=$lt_lt_cv_sys_global_symbol_to_import
+
# Transform the output of nm in a C name address pair.
global_symbol_to_c_name_address=$lt_lt_cv_sys_global_symbol_to_c_name_address
# Transform the output of nm in a C name address pair when lib prefix is needed.
global_symbol_to_c_name_address_lib_prefix=$lt_lt_cv_sys_global_symbol_to_c_name_address_lib_prefix
+# The name lister interface.
+nm_interface=$lt_lt_cv_nm_interface
+
# Specify filename containing input files for \$NM.
nm_file_list_spec=$lt_nm_file_list_spec
-# The root where to search for dependent libraries,and in which our libraries should be installed.
+# The root where to search for dependent libraries,and where our libraries should be installed.
lt_sysroot=$lt_sysroot
# The name of the directory that contains temporary libtool files.
@@ -16399,13 +16695,13 @@ hardcode_libdir_flag_spec=$lt_hardcode_libdir_flag_spec
# Whether we need a single "-rpath" flag with a separated argument.
hardcode_libdir_separator=$lt_hardcode_libdir_separator
-# Set to "yes" if using DIR/libNAME\${shared_ext} during linking hardcodes
+# Set to "yes" if using DIR/libNAME\$shared_ext during linking hardcodes
# DIR into the resulting binary.
hardcode_direct=$hardcode_direct
-# Set to "yes" if using DIR/libNAME\${shared_ext} during linking hardcodes
+# Set to "yes" if using DIR/libNAME\$shared_ext during linking hardcodes
# DIR into the resulting binary and the resulting library dependency is
-# "absolute",i.e impossible to change by setting \${shlibpath_var} if the
+# "absolute",i.e impossible to change by setting \$shlibpath_var if the
# library is relocated.
hardcode_direct_absolute=$hardcode_direct_absolute
@@ -16463,7 +16759,7 @@ _LT_EOF
# AIX sometimes has problems with the GCC collect2 program. For some
# reason, if we set the COLLECT_NAMES environment variable, the problems
# vanish in a puff of smoke.
-if test "X${COLLECT_NAMES+set}" != Xset; then
+if test set != "${COLLECT_NAMES+set}"; then
COLLECT_NAMES=
export COLLECT_NAMES
fi
@@ -16472,7 +16768,7 @@ _LT_EOF
esac
-ltmain="$ac_aux_dir/ltmain.sh"
+ltmain=$ac_aux_dir/ltmain.sh
# We use sed instead of cat because bash on DJGPP gets confused if
@@ -16482,181 +16778,11 @@ ltmain="$ac_aux_dir/ltmain.sh"
sed '$q' "$ltmain" >> "$cfgfile" \
|| (rm -f "$cfgfile"; exit 1)
- if test x"$xsi_shell" = xyes; then
- sed -e '/^func_dirname ()$/,/^} # func_dirname /c\
-func_dirname ()\
-{\
-\ case ${1} in\
-\ */*) func_dirname_result="${1%/*}${2}" ;;\
-\ * ) func_dirname_result="${3}" ;;\
-\ esac\
-} # Extended-shell func_dirname implementation' "$cfgfile" > $cfgfile.tmp \
- && mv -f "$cfgfile.tmp" "$cfgfile" \
- || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp")
-test 0 -eq $? || _lt_function_replace_fail=:
-
-
- sed -e '/^func_basename ()$/,/^} # func_basename /c\
-func_basename ()\
-{\
-\ func_basename_result="${1##*/}"\
-} # Extended-shell func_basename implementation' "$cfgfile" > $cfgfile.tmp \
- && mv -f "$cfgfile.tmp" "$cfgfile" \
- || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp")
-test 0 -eq $? || _lt_function_replace_fail=:
-
-
- sed -e '/^func_dirname_and_basename ()$/,/^} # func_dirname_and_basename /c\
-func_dirname_and_basename ()\
-{\
-\ case ${1} in\
-\ */*) func_dirname_result="${1%/*}${2}" ;;\
-\ * ) func_dirname_result="${3}" ;;\
-\ esac\
-\ func_basename_result="${1##*/}"\
-} # Extended-shell func_dirname_and_basename implementation' "$cfgfile" > $cfgfile.tmp \
- && mv -f "$cfgfile.tmp" "$cfgfile" \
- || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp")
-test 0 -eq $? || _lt_function_replace_fail=:
-
-
- sed -e '/^func_stripname ()$/,/^} # func_stripname /c\
-func_stripname ()\
-{\
-\ # pdksh 5.2.14 does not do ${X%$Y} correctly if both X and Y are\
-\ # positional parameters, so assign one to ordinary parameter first.\
-\ func_stripname_result=${3}\
-\ func_stripname_result=${func_stripname_result#"${1}"}\
-\ func_stripname_result=${func_stripname_result%"${2}"}\
-} # Extended-shell func_stripname implementation' "$cfgfile" > $cfgfile.tmp \
- && mv -f "$cfgfile.tmp" "$cfgfile" \
- || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp")
-test 0 -eq $? || _lt_function_replace_fail=:
-
-
- sed -e '/^func_split_long_opt ()$/,/^} # func_split_long_opt /c\
-func_split_long_opt ()\
-{\
-\ func_split_long_opt_name=${1%%=*}\
-\ func_split_long_opt_arg=${1#*=}\
-} # Extended-shell func_split_long_opt implementation' "$cfgfile" > $cfgfile.tmp \
- && mv -f "$cfgfile.tmp" "$cfgfile" \
- || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp")
-test 0 -eq $? || _lt_function_replace_fail=:
-
-
- sed -e '/^func_split_short_opt ()$/,/^} # func_split_short_opt /c\
-func_split_short_opt ()\
-{\
-\ func_split_short_opt_arg=${1#??}\
-\ func_split_short_opt_name=${1%"$func_split_short_opt_arg"}\
-} # Extended-shell func_split_short_opt implementation' "$cfgfile" > $cfgfile.tmp \
- && mv -f "$cfgfile.tmp" "$cfgfile" \
- || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp")
-test 0 -eq $? || _lt_function_replace_fail=:
-
-
- sed -e '/^func_lo2o ()$/,/^} # func_lo2o /c\
-func_lo2o ()\
-{\
-\ case ${1} in\
-\ *.lo) func_lo2o_result=${1%.lo}.${objext} ;;\
-\ *) func_lo2o_result=${1} ;;\
-\ esac\
-} # Extended-shell func_lo2o implementation' "$cfgfile" > $cfgfile.tmp \
- && mv -f "$cfgfile.tmp" "$cfgfile" \
- || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp")
-test 0 -eq $? || _lt_function_replace_fail=:
-
-
- sed -e '/^func_xform ()$/,/^} # func_xform /c\
-func_xform ()\
-{\
- func_xform_result=${1%.*}.lo\
-} # Extended-shell func_xform implementation' "$cfgfile" > $cfgfile.tmp \
- && mv -f "$cfgfile.tmp" "$cfgfile" \
- || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp")
-test 0 -eq $? || _lt_function_replace_fail=:
-
-
- sed -e '/^func_arith ()$/,/^} # func_arith /c\
-func_arith ()\
-{\
- func_arith_result=$(( $* ))\
-} # Extended-shell func_arith implementation' "$cfgfile" > $cfgfile.tmp \
- && mv -f "$cfgfile.tmp" "$cfgfile" \
- || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp")
-test 0 -eq $? || _lt_function_replace_fail=:
-
-
- sed -e '/^func_len ()$/,/^} # func_len /c\
-func_len ()\
-{\
- func_len_result=${#1}\
-} # Extended-shell func_len implementation' "$cfgfile" > $cfgfile.tmp \
- && mv -f "$cfgfile.tmp" "$cfgfile" \
- || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp")
-test 0 -eq $? || _lt_function_replace_fail=:
-
-fi
-
-if test x"$lt_shell_append" = xyes; then
- sed -e '/^func_append ()$/,/^} # func_append /c\
-func_append ()\
-{\
- eval "${1}+=\\${2}"\
-} # Extended-shell func_append implementation' "$cfgfile" > $cfgfile.tmp \
- && mv -f "$cfgfile.tmp" "$cfgfile" \
- || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp")
-test 0 -eq $? || _lt_function_replace_fail=:
-
-
- sed -e '/^func_append_quoted ()$/,/^} # func_append_quoted /c\
-func_append_quoted ()\
-{\
-\ func_quote_for_eval "${2}"\
-\ eval "${1}+=\\\\ \\$func_quote_for_eval_result"\
-} # Extended-shell func_append_quoted implementation' "$cfgfile" > $cfgfile.tmp \
- && mv -f "$cfgfile.tmp" "$cfgfile" \
- || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp")
-test 0 -eq $? || _lt_function_replace_fail=:
-
-
- # Save a `func_append' function call where possible by direct use of '+='
- sed -e 's%func_append \([a-zA-Z_]\{1,\}\) "%\1+="%g' $cfgfile > $cfgfile.tmp \
- && mv -f "$cfgfile.tmp" "$cfgfile" \
- || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp")
- test 0 -eq $? || _lt_function_replace_fail=:
-else
- # Save a `func_append' function call even when '+=' is not available
- sed -e 's%func_append \([a-zA-Z_]\{1,\}\) "%\1="$\1%g' $cfgfile > $cfgfile.tmp \
- && mv -f "$cfgfile.tmp" "$cfgfile" \
- || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp")
- test 0 -eq $? || _lt_function_replace_fail=:
-fi
-
-if test x"$_lt_function_replace_fail" = x":"; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: Unable to substitute extended shell functions in $ofile" >&5
-$as_echo "$as_me: WARNING: Unable to substitute extended shell functions in $ofile" >&2;}
-fi
-
-
mv -f "$cfgfile" "$ofile" ||
(rm -f "$ofile" && cp "$cfgfile" "$ofile" && rm -f "$cfgfile")
chmod +x "$ofile"
;;
- "default-1":C)
-case `uname` in
-MirBSD | MirOS | "OS/390")
- cat << \EOF > Makefile
-all dist check clean distclean install uninstall distcheck:
- @exit 0
-EOF
- ;;
-*)
-esac
- ;;
esac
done # for ac_tag
diff --git a/extension/configure.ac b/extension/configure.ac
index 9571f8db..37e306f3 100644
--- a/extension/configure.ac
+++ b/extension/configure.ac
@@ -1,7 +1,7 @@
dnl
dnl configure.ac --- autoconf input file for gawk
dnl
-dnl Copyright (C) 2012, 2013 the Free Software Foundation, Inc.
+dnl Copyright (C) 2012-2014 the Free Software Foundation, Inc.
dnl
dnl This file is part of GAWK, the GNU implementation of the
dnl AWK Programming Language.
@@ -23,7 +23,7 @@ dnl
dnl Process this file with autoconf to produce a configure script.
-AC_INIT([GNU Awk Bundled Extensions], 4.1.0, bug-gawk@gnu.org, gawk-extensions)
+AC_INIT([GNU Awk Bundled Extensions], 4.1.1, bug-gawk@gnu.org, gawk-extensions)
AC_CONFIG_MACRO_DIR([m4])
AC_CONFIG_AUX_DIR([build-aux])
@@ -51,7 +51,7 @@ AC_SUBST([pkgextensiondir], ['${libdir}/gawk'])
if test "$GCC" = yes
then
- CFLAGS="$CFLAGS -Wall -Wextra"
+ CFLAGS="$CFLAGS -Wall" # Don't add -Wextra, hurts older gcc
fi
AC_MSG_CHECKING([for special development options])
@@ -66,9 +66,10 @@ else
AC_MSG_RESULT([no])
fi
+AC_CHECK_HEADERS(fnmatch.h limits.h sys/time.h sys/select.h sys/param.h signal.h)
+AC_HEADER_DIRENT
AC_HEADER_MAJOR
-AC_CHECK_HEADERS(dirent.h fnmatch.h limits.h time.h sys/time.h sys/select.h \
- sys/param.h signal.h)
+AC_HEADER_TIME
AC_CHECK_FUNCS(fcntl fdopendir fnmatch gettimeofday \
getdtablesize kill nanosleep select sigaction sigprocmask \
@@ -83,15 +84,4 @@ AC_C_INLINE
AC_CONFIG_HEADERS([config.h:configh.in])
AC_CONFIG_FILES(Makefile)
-AC_OUTPUT_COMMANDS([
-case `uname` in
-MirBSD | MirOS | "OS/390")
- cat << \EOF > Makefile
-all dist check clean distclean install uninstall distcheck:
- @exit 0
-EOF
- ;;
-*)
-esac
-])dnl
AC_OUTPUT
diff --git a/extension/filefuncs.c b/extension/filefuncs.c
index 61cadfec..d5249a4e 100644
--- a/extension/filefuncs.c
+++ b/extension/filefuncs.c
@@ -9,7 +9,7 @@
*/
/*
- * Copyright (C) 2001, 2004, 2005, 2010, 2011, 2012, 2013
+ * Copyright (C) 2001, 2004, 2005, 2010, 2011, 2012, 2013, 2014
* the Free Software Foundation, Inc.
*
* This file is part of GAWK, the GNU implementation of the
@@ -36,6 +36,34 @@
#define _BSD_SOURCE
+#ifdef __VMS
+#if (__CRTL_VER >= 70200000) && !defined (__VAX)
+#define _LARGEFILE 1
+#endif
+
+#ifndef __VAX
+#ifdef __CRTL_VER
+#if __CRTL_VER >= 80200000
+#define _USE_STD_STAT 1
+#endif
+#endif
+#endif
+#define _POSIX_C_SOURCE 1
+#define _XOPEN_SOURCE 1
+#include <stat.h>
+#ifndef S_ISVTX
+#define S_ISVTX (0)
+#endif
+#ifndef major
+#define major(s) (s)
+#endif
+#ifndef minor
+#define minor(s) (0)
+#endif
+#include <unixlib.h>
+#endif
+
+
#include <stdio.h>
#include <assert.h>
#include <errno.h>
@@ -256,7 +284,7 @@ read_symlink(const char *fname, size_t bufsize, ssize_t *linksize)
returns -1 with errno == ERANGE if the buffer is
too small. */
if (errno != ERANGE) {
- free(buf);
+ gawk_free(buf);
return NULL;
}
}
@@ -265,7 +293,7 @@ read_symlink(const char *fname, size_t bufsize, ssize_t *linksize)
buf[*linksize] = '\0';
return buf;
}
- free(buf);
+ gawk_free(buf);
if (bufsize <= MAXSIZE/2)
bufsize *= 2;
else if (bufsize < MAXSIZE)
@@ -826,7 +854,7 @@ do_fts(int nargs, awk_value_t *result)
out:
if (pathvector != NULL)
- free(pathvector);
+ gawk_free(pathvector);
if (path_array != NULL)
(void) release_flattened_array(pathlist.array_cookie, path_array);
diff --git a/extension/fnmatch.c b/extension/fnmatch.c
index a67bc25f..a85bcc78 100644
--- a/extension/fnmatch.c
+++ b/extension/fnmatch.c
@@ -45,15 +45,29 @@
#define _(msgid) gettext(msgid)
#define N_(msgid) msgid
+#ifdef __VMS
+#define __iswctype iswctype
+#define __btowc btowc
+#endif
+
#define _GNU_SOURCE 1 /* use GNU extensions if they're there */
#ifdef HAVE_FNMATCH_H
#include <fnmatch.h>
#else
+#ifdef __VMS
+#include "fnmatch.h" /* version that comes with gawk */
+#else
#include "../missing_d/fnmatch.h" /* version that comes with gawk */
#endif
+#define HAVE_FNMATCH_H
+#endif
#ifndef HAVE_FNMATCH
+#ifdef __VMS
+#include "fnmatch.c" /* ditto */
+#else
#include "../missing_d/fnmatch.c" /* ditto */
+#endif
#define HAVE_FNMATCH
#endif
diff --git a/extension/gawkdirfd.h b/extension/gawkdirfd.h
index 4710dab4..d1edf65f 100644
--- a/extension/gawkdirfd.h
+++ b/extension/gawkdirfd.h
@@ -29,11 +29,17 @@
* This is for fake directory file descriptors on systems that don't
* allow to open() a directory.
*
- * It would be nice if this could be shared with the definition in awk.h
- * in the main code base, but there's not a very clean way to do that,
- * at least that I can see.
+ * Including a header from the main gawk source to share the definition
+ * of FAKE_FD_VALUE is the least of all evils that I can see.
+ *
+ * Unlike the main gawk code base, this include is NOT dependant
+ * upon MinGW or EMX.
*/
-#define FAKE_FD_VALUE 42
+#ifndef __VMS
+#include "../nonposix.h"
+#else
+#include "nonposix.h"
+#endif
#ifndef DIR_TO_FD
# define DIR_TO_FD(d) (FAKE_FD_VALUE)
diff --git a/extension/gawkfts.c b/extension/gawkfts.c
index 734dd7f7..4a712153 100644
--- a/extension/gawkfts.c
+++ b/extension/gawkfts.c
@@ -43,11 +43,11 @@ static char sccsid[] = "@(#)fts.c 8.6 (Berkeley) 8/14/94";
#include <limits.h>
/* #include "namespace.h" */
-#ifndef ZOS_USS
+#ifdef HAVE_SYS_PARAM_H
#include <sys/param.h>
#else
#include <stdio.h>
-#endif /* ZOS_USS */
+#endif
#include <sys/stat.h>
#include <assert.h>
@@ -139,6 +139,10 @@ static int fts_safe_changedir(const FTS *, const FTSENT *, int,
#define _DIAGASSERT(expression)
+#ifndef MAXPATHLEN
+#define MAXPATHLEN 1024 /* a guess */
+#endif
+
FTS *
fts_open(char * const *argv, int options,
int (*compar)(const FTSENT **, const FTSENT **))
@@ -554,7 +558,7 @@ name: t = sp->fts_path + NAPPEND(p->fts_parent);
int
fts_set(FTS *sp, FTSENT *p, int instr)
{
-
+ (void) sp; /* silence warnings */
_DIAGASSERT(sp != NULL);
_DIAGASSERT(p != NULL);
diff --git a/extension/inplace.c b/extension/inplace.c
index ad6f0e23..e2f8b73f 100644
--- a/extension/inplace.c
+++ b/extension/inplace.c
@@ -3,7 +3,7 @@
*/
/*
- * Copyright (C) 2013 the Free Software Foundation, Inc.
+ * Copyright (C) 2013, 2014 the Free Software Foundation, Inc.
*
* This file is part of GAWK, the GNU implementation of the
* AWK Programming Language.
@@ -27,8 +27,12 @@
#include <config.h>
#endif
-#define _XOPEN_SOURCE
-#define _XOPEN_SOURCE_EXTENDED
+#ifndef _XOPEN_SOURCE
+# define _XOPEN_SOURCE
+#endif
+#ifndef _XOPEN_SOURCE_EXTENDED
+# define _XOPEN_SOURCE_EXTENDED 1
+#endif
#include <stdio.h>
#include <assert.h>
@@ -88,9 +92,11 @@ static struct {
static void
at_exit(void *data, int exit_status)
{
+ (void) data; /* silence warnings */
+ (void) exit_status; /* silence warnings */
if (state.tname) {
unlink(state.tname);
- free(state.tname);
+ gawk_free(state.tname);
state.tname = NULL;
}
}
@@ -236,7 +242,7 @@ do_inplace_end(int nargs, awk_value_t *result)
if (link(filename.str_value.str, bakname) < 0)
fatal(ext_id, _("inplace_end: link(`%s', `%s') failed (%s)"),
filename.str_value.str, bakname, strerror(errno));
- free(bakname);
+ gawk_free(bakname);
}
#ifdef __MINGW32__
@@ -246,7 +252,7 @@ do_inplace_end(int nargs, awk_value_t *result)
if (rename(state.tname, filename.str_value.str) < 0)
fatal(ext_id, _("inplace_end: rename(`%s', `%s') failed (%s)"),
state.tname, filename.str_value.str, strerror(errno));
- free(state.tname);
+ gawk_free(state.tname);
state.tname = NULL;
return make_number(0, result);
}
diff --git a/extension/m4/ChangeLog b/extension/m4/ChangeLog
index 449003bc..349bbcc8 100644
--- a/extension/m4/ChangeLog
+++ b/extension/m4/ChangeLog
@@ -1,3 +1,12 @@
+2014-04-08 Arnold D. Robbins <arnold@skeeve.com>
+
+ * 4.1.1: Release tar ball made.
+
+2013-12-21 Arnold D. Robbins <arnold@skeeve.com>
+
+ * libtool.m4, ltoptions.m4, ltversion.m4: Update to
+ libtool 2.4.2.418.
+
2013-05-09 Arnold D. Robbins <arnold@skeeve.com>
* 4.1.0: Release tar ball made.
diff --git a/extension/m4/libtool.m4 b/extension/m4/libtool.m4
index 56666f0e..4bc6b22c 100644
--- a/extension/m4/libtool.m4
+++ b/extension/m4/libtool.m4
@@ -1,8 +1,6 @@
# libtool.m4 - Configure libtool for the host system. -*-Autoconf-*-
#
-# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2003, 2004, 2005,
-# 2006, 2007, 2008, 2009, 2010, 2011 Free Software
-# Foundation, Inc.
+# Copyright (C) 1996-2001, 2003-2013 Free Software Foundation, Inc.
# Written by Gordon Matzigkeit, 1996
#
# This file is free software; the Free Software Foundation gives
@@ -39,7 +37,7 @@ m4_define([_LT_COPYING], [dnl
# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
])
-# serial 57 LT_INIT
+# serial 58 LT_INIT
# LT_PREREQ(VERSION)
@@ -91,7 +89,7 @@ dnl Parse OPTIONS
_LT_SET_OPTIONS([$0], [$1])
# This can be used to rebuild libtool when needed
-LIBTOOL_DEPS="$ltmain"
+LIBTOOL_DEPS=$ltmain
# Always use our own libtool.
LIBTOOL='$(SHELL) $(top_builddir)/libtool'
@@ -130,7 +128,7 @@ cc_basename=`$ECHO "$cc_temp" | $SED "s%.*/%%; s%^$host_alias-%%"`
# _LT_FILEUTILS_DEFAULTS
# ----------------------
# It is okay to use these file commands and assume they have been set
-# sensibly after `m4_require([_LT_FILEUTILS_DEFAULTS])'.
+# sensibly after 'm4_require([_LT_FILEUTILS_DEFAULTS])'.
m4_defun([_LT_FILEUTILS_DEFAULTS],
[: ${CP="cp -f"}
: ${MV="mv -f"}
@@ -179,13 +177,13 @@ m4_require([_LT_CMD_GLOBAL_SYMBOLS])dnl
m4_require([_LT_WITH_SYSROOT])dnl
_LT_CONFIG_LIBTOOL_INIT([
-# See if we are running on zsh, and set the options which allow our
+# See if we are running on zsh, and set the options that allow our
# commands through without removal of \ escapes INIT.
-if test -n "\${ZSH_VERSION+set}" ; then
+if test -n "\${ZSH_VERSION+set}"; then
setopt NO_GLOB_SUBST
fi
])
-if test -n "${ZSH_VERSION+set}" ; then
+if test -n "${ZSH_VERSION+set}"; then
setopt NO_GLOB_SUBST
fi
@@ -198,7 +196,7 @@ aix3*)
# AIX sometimes has problems with the GCC collect2 program. For some
# reason, if we set the COLLECT_NAMES environment variable, the problems
# vanish in a puff of smoke.
- if test "X${COLLECT_NAMES+set}" != Xset; then
+ if test set != "${COLLECT_NAMES+set}"; then
COLLECT_NAMES=
export COLLECT_NAMES
fi
@@ -209,14 +207,14 @@ esac
ofile=libtool
can_build_shared=yes
-# All known linkers require a `.a' archive for static linking (except MSVC,
+# All known linkers require a '.a' archive for static linking (except MSVC,
# which needs '.lib').
libext=a
-with_gnu_ld="$lt_cv_prog_gnu_ld"
+with_gnu_ld=$lt_cv_prog_gnu_ld
-old_CC="$CC"
-old_CFLAGS="$CFLAGS"
+old_CC=$CC
+old_CFLAGS=$CFLAGS
# Set sane defaults for various variables
test -z "$CC" && CC=cc
@@ -269,14 +267,14 @@ no_glob_subst='s/\*/\\\*/g'
# _LT_PROG_LTMAIN
# ---------------
-# Note that this code is called both from `configure', and `config.status'
+# Note that this code is called both from 'configure', and 'config.status'
# now that we use AC_CONFIG_COMMANDS to generate libtool. Notably,
-# `config.status' has no value for ac_aux_dir unless we are using Automake,
+# 'config.status' has no value for ac_aux_dir unless we are using Automake,
# so we pass a copy along to make sure it has a sensible value anyway.
m4_defun([_LT_PROG_LTMAIN],
[m4_ifdef([AC_REQUIRE_AUX_FILE], [AC_REQUIRE_AUX_FILE([ltmain.sh])])dnl
_LT_CONFIG_LIBTOOL_INIT([ac_aux_dir='$ac_aux_dir'])
-ltmain="$ac_aux_dir/ltmain.sh"
+ltmain=$ac_aux_dir/ltmain.sh
])# _LT_PROG_LTMAIN
@@ -286,7 +284,7 @@ ltmain="$ac_aux_dir/ltmain.sh"
# So that we can recreate a full libtool script including additional
# tags, we accumulate the chunks of code to send to AC_CONFIG_COMMANDS
-# in macros and then make a single call at the end using the `libtool'
+# in macros and then make a single call at the end using the 'libtool'
# label.
@@ -421,8 +419,8 @@ m4_define([_lt_decl_all_varnames],
# _LT_CONFIG_STATUS_DECLARE([VARNAME])
# ------------------------------------
-# Quote a variable value, and forward it to `config.status' so that its
-# declaration there will have the same value as in `configure'. VARNAME
+# Quote a variable value, and forward it to 'config.status' so that its
+# declaration there will have the same value as in 'configure'. VARNAME
# must have a single quote delimited value for this to work.
m4_define([_LT_CONFIG_STATUS_DECLARE],
[$1='`$ECHO "$][$1" | $SED "$delay_single_quote_subst"`'])
@@ -446,7 +444,7 @@ m4_defun([_LT_CONFIG_STATUS_DECLARATIONS],
# Output comment and list of tags supported by the script
m4_defun([_LT_LIBTOOL_TAGS],
[_LT_FORMAT_COMMENT([The names of the tagged configurations supported by this script])dnl
-available_tags="_LT_TAGS"dnl
+available_tags='_LT_TAGS'dnl
])
@@ -474,7 +472,7 @@ m4_ifval([$2], [_$2])[]m4_popdef([_libtool_name])[]dnl
# _LT_LIBTOOL_CONFIG_VARS
# -----------------------
# Produce commented declarations of non-tagged libtool config variables
-# suitable for insertion in the LIBTOOL CONFIG section of the `libtool'
+# suitable for insertion in the LIBTOOL CONFIG section of the 'libtool'
# script. Tagged libtool config variables (even for the LIBTOOL CONFIG
# section) are produced by _LT_LIBTOOL_TAG_VARS.
m4_defun([_LT_LIBTOOL_CONFIG_VARS],
@@ -500,8 +498,8 @@ m4_define([_LT_TAGVAR], [m4_ifval([$2], [$1_$2], [$1])])
# Send accumulated output to $CONFIG_STATUS. Thanks to the lists of
# variables for single and double quote escaping we saved from calls
# to _LT_DECL, we can put quote escaped variables declarations
-# into `config.status', and then the shell code to quote escape them in
-# for loops in `config.status'. Finally, any additional code accumulated
+# into 'config.status', and then the shell code to quote escape them in
+# for loops in 'config.status'. Finally, any additional code accumulated
# from calls to _LT_CONFIG_LIBTOOL_INIT is expanded.
m4_defun([_LT_CONFIG_COMMANDS],
[AC_PROVIDE_IFELSE([LT_OUTPUT],
@@ -547,7 +545,7 @@ for var in lt_decl_all_varnames([[ \
]], lt_decl_quote_varnames); do
case \`eval \\\\\$ECHO \\\\""\\\\\$\$var"\\\\"\` in
*[[\\\\\\\`\\"\\\$]]*)
- eval "lt_\$var=\\\\\\"\\\`\\\$ECHO \\"\\\$\$var\\" | \\\$SED \\"\\\$sed_quote_subst\\"\\\`\\\\\\""
+ eval "lt_\$var=\\\\\\"\\\`\\\$ECHO \\"\\\$\$var\\" | \\\$SED \\"\\\$sed_quote_subst\\"\\\`\\\\\\"" ## exclude from sc_prohibit_nested_quotes
;;
*)
eval "lt_\$var=\\\\\\"\\\$\$var\\\\\\""
@@ -560,7 +558,7 @@ for var in lt_decl_all_varnames([[ \
]], lt_decl_dquote_varnames); do
case \`eval \\\\\$ECHO \\\\""\\\\\$\$var"\\\\"\` in
*[[\\\\\\\`\\"\\\$]]*)
- eval "lt_\$var=\\\\\\"\\\`\\\$ECHO \\"\\\$\$var\\" | \\\$SED -e \\"\\\$double_quote_subst\\" -e \\"\\\$sed_quote_subst\\" -e \\"\\\$delay_variable_subst\\"\\\`\\\\\\""
+ eval "lt_\$var=\\\\\\"\\\`\\\$ECHO \\"\\\$\$var\\" | \\\$SED -e \\"\\\$double_quote_subst\\" -e \\"\\\$sed_quote_subst\\" -e \\"\\\$delay_variable_subst\\"\\\`\\\\\\"" ## exclude from sc_prohibit_nested_quotes
;;
*)
eval "lt_\$var=\\\\\\"\\\$\$var\\\\\\""
@@ -576,7 +574,7 @@ _LT_OUTPUT_LIBTOOL_INIT
# Generate a child script FILE with all initialization necessary to
# reuse the environment learned by the parent script, and make the
# file executable. If COMMENT is supplied, it is inserted after the
-# `#!' sequence but before initialization text begins. After this
+# '#!' sequence but before initialization text begins. After this
# macro, additional text can be appended to FILE to form the body of
# the child script. The macro ends with non-zero status if the
# file could not be fully written (such as if the disk is full).
@@ -598,7 +596,7 @@ AS_SHELL_SANITIZE
_AS_PREPARE
exec AS_MESSAGE_FD>&1
_ASEOF
-test $lt_write_fail = 0 && chmod +x $1[]dnl
+test 0 = "$lt_write_fail" && chmod +x $1[]dnl
m4_popdef([AS_MESSAGE_LOG_FD])])])# _LT_GENERATED_FILE_INIT
# LT_OUTPUT
@@ -621,7 +619,7 @@ exec AS_MESSAGE_LOG_FD>>config.log
} >&AS_MESSAGE_LOG_FD
lt_cl_help="\
-\`$as_me' creates a local libtool stub from the current configuration,
+'$as_me' creates a local libtool stub from the current configuration,
for use in further configure time tests before the real libtool is
generated.
@@ -643,7 +641,7 @@ Copyright (C) 2011 Free Software Foundation, Inc.
This config.lt script is free software; the Free Software Foundation
gives unlimited permision to copy, distribute and modify it."
-while test $[#] != 0
+while test 0 != $[#]
do
case $[1] in
--version | --v* | -V )
@@ -656,10 +654,10 @@ do
lt_cl_silent=: ;;
-*) AC_MSG_ERROR([unrecognized option: $[1]
-Try \`$[0] --help' for more information.]) ;;
+Try '$[0] --help' for more information.]) ;;
*) AC_MSG_ERROR([unrecognized argument: $[1]
-Try \`$[0] --help' for more information.]) ;;
+Try '$[0] --help' for more information.]) ;;
esac
shift
done
@@ -685,7 +683,7 @@ chmod +x "$CONFIG_LT"
# open by configure. Here we exec the FD to /dev/null, effectively closing
# config.log, so it can be properly (re)opened and appended to by config.lt.
lt_cl_success=:
-test "$silent" = yes &&
+test yes = "$silent" &&
lt_config_lt_args="$lt_config_lt_args --quiet"
exec AS_MESSAGE_LOG_FD>/dev/null
$SHELL "$CONFIG_LT" $lt_config_lt_args || lt_cl_success=false
@@ -705,13 +703,13 @@ m4_defun([_LT_CONFIG],
_LT_CONFIG_SAVE_COMMANDS([
m4_define([_LT_TAG], m4_if([$1], [], [C], [$1]))dnl
m4_if(_LT_TAG, [C], [
- # See if we are running on zsh, and set the options which allow our
+ # See if we are running on zsh, and set the options that allow our
# commands through without removal of \ escapes.
- if test -n "${ZSH_VERSION+set}" ; then
+ if test -n "${ZSH_VERSION+set}"; then
setopt NO_GLOB_SUBST
fi
- cfgfile="${ofile}T"
+ cfgfile=${ofile}T
trap "$RM \"$cfgfile\"; exit 1" 1 2 15
$RM "$cfgfile"
@@ -719,7 +717,7 @@ _LT_CONFIG_SAVE_COMMANDS([
#! $SHELL
# `$ECHO "$ofile" | sed 's%^.*/%%'` - Provide generalized library-building support services.
-# Generated automatically by $as_me ($PACKAGE$TIMESTAMP) $VERSION
+# Generated automatically by $as_me ($PACKAGE) $VERSION
# Libtool was configured on host `(hostname || uname -n) 2>/dev/null | sed 1q`:
# NOTE: Changes made to this file will be lost: look at ltmain.sh.
#
@@ -739,7 +737,7 @@ _LT_EOF
# AIX sometimes has problems with the GCC collect2 program. For some
# reason, if we set the COLLECT_NAMES environment variable, the problems
# vanish in a puff of smoke.
-if test "X${COLLECT_NAMES+set}" != Xset; then
+if test set != "${COLLECT_NAMES+set}"; then
COLLECT_NAMES=
export COLLECT_NAMES
fi
@@ -756,8 +754,6 @@ _LT_EOF
sed '$q' "$ltmain" >> "$cfgfile" \
|| (rm -f "$cfgfile"; exit 1)
- _LT_PROG_REPLACE_SHELLFNS
-
mv -f "$cfgfile" "$ofile" ||
(rm -f "$ofile" && cp "$cfgfile" "$ofile" && rm -f "$cfgfile")
chmod +x "$ofile"
@@ -775,7 +771,6 @@ _LT_EOF
[m4_if([$1], [], [
PACKAGE='$PACKAGE'
VERSION='$VERSION'
- TIMESTAMP='$TIMESTAMP'
RM='$RM'
ofile='$ofile'], [])
])dnl /_LT_CONFIG_SAVE_COMMANDS
@@ -974,7 +969,7 @@ m4_defun_once([_LT_REQUIRED_DARWIN_CHECKS],[
AC_CACHE_CHECK([for -single_module linker flag],[lt_cv_apple_cc_single_mod],
[lt_cv_apple_cc_single_mod=no
- if test -z "${LT_MULTI_MODULE}"; then
+ if test -z "$LT_MULTI_MODULE"; then
# By default we will add the -single_module flag. You can override
# by either setting the environment variable LT_MULTI_MODULE
# non-empty at configure time, or by adding -multi_module to the
@@ -992,7 +987,7 @@ m4_defun_once([_LT_REQUIRED_DARWIN_CHECKS],[
cat conftest.err >&AS_MESSAGE_LOG_FD
# Otherwise, if the output was created with a 0 exit code from
# the compiler, it worked.
- elif test -f libconftest.dylib && test $_lt_result -eq 0; then
+ elif test -f libconftest.dylib && test 0 = "$_lt_result"; then
lt_cv_apple_cc_single_mod=yes
else
cat conftest.err >&AS_MESSAGE_LOG_FD
@@ -1010,7 +1005,7 @@ m4_defun_once([_LT_REQUIRED_DARWIN_CHECKS],[
AC_LINK_IFELSE([AC_LANG_PROGRAM([],[])],
[lt_cv_ld_exported_symbols_list=yes],
[lt_cv_ld_exported_symbols_list=no])
- LDFLAGS="$save_LDFLAGS"
+ LDFLAGS=$save_LDFLAGS
])
AC_CACHE_CHECK([for -force_load linker flag],[lt_cv_ld_force_load],
@@ -1032,7 +1027,7 @@ _LT_EOF
_lt_result=$?
if test -s conftest.err && $GREP force_load conftest.err; then
cat conftest.err >&AS_MESSAGE_LOG_FD
- elif test -f conftest && test $_lt_result -eq 0 && $GREP forced_load conftest >/dev/null 2>&1 ; then
+ elif test -f conftest && test 0 = "$_lt_result" && $GREP forced_load conftest >/dev/null 2>&1; then
lt_cv_ld_force_load=yes
else
cat conftest.err >&AS_MESSAGE_LOG_FD
@@ -1042,32 +1037,32 @@ _LT_EOF
])
case $host_os in
rhapsody* | darwin1.[[012]])
- _lt_dar_allow_undefined='${wl}-undefined ${wl}suppress' ;;
+ _lt_dar_allow_undefined='$wl-undefined ${wl}suppress' ;;
darwin1.*)
- _lt_dar_allow_undefined='${wl}-flat_namespace ${wl}-undefined ${wl}suppress' ;;
+ _lt_dar_allow_undefined='$wl-flat_namespace $wl-undefined ${wl}suppress' ;;
darwin*) # darwin 5.x on
# if running on 10.5 or later, the deployment target defaults
# to the OS version, if on x86, and 10.4, the deployment
# target defaults to 10.4. Don't you love it?
case ${MACOSX_DEPLOYMENT_TARGET-10.0},$host in
10.0,*86*-darwin8*|10.0,*-darwin[[91]]*)
- _lt_dar_allow_undefined='${wl}-undefined ${wl}dynamic_lookup' ;;
+ _lt_dar_allow_undefined='$wl-undefined ${wl}dynamic_lookup' ;;
10.[[012]]*)
- _lt_dar_allow_undefined='${wl}-flat_namespace ${wl}-undefined ${wl}suppress' ;;
+ _lt_dar_allow_undefined='$wl-flat_namespace $wl-undefined ${wl}suppress' ;;
10.*)
- _lt_dar_allow_undefined='${wl}-undefined ${wl}dynamic_lookup' ;;
+ _lt_dar_allow_undefined='$wl-undefined ${wl}dynamic_lookup' ;;
esac
;;
esac
- if test "$lt_cv_apple_cc_single_mod" = "yes"; then
+ if test yes = "$lt_cv_apple_cc_single_mod"; then
_lt_dar_single_mod='$single_module'
fi
- if test "$lt_cv_ld_exported_symbols_list" = "yes"; then
- _lt_dar_export_syms=' ${wl}-exported_symbols_list,$output_objdir/${libname}-symbols.expsym'
+ if test yes = "$lt_cv_ld_exported_symbols_list"; then
+ _lt_dar_export_syms=' $wl-exported_symbols_list,$output_objdir/$libname-symbols.expsym'
else
- _lt_dar_export_syms='~$NMEDIT -s $output_objdir/${libname}-symbols.expsym ${lib}'
+ _lt_dar_export_syms='~$NMEDIT -s $output_objdir/$libname-symbols.expsym $lib'
fi
- if test "$DSYMUTIL" != ":" && test "$lt_cv_ld_force_load" = "no"; then
+ if test : != "$DSYMUTIL" && test no = "$lt_cv_ld_force_load"; then
_lt_dsymutil='~$DSYMUTIL $lib || :'
else
_lt_dsymutil=
@@ -1087,29 +1082,29 @@ m4_defun([_LT_DARWIN_LINKER_FEATURES],
_LT_TAGVAR(hardcode_direct, $1)=no
_LT_TAGVAR(hardcode_automatic, $1)=yes
_LT_TAGVAR(hardcode_shlibpath_var, $1)=unsupported
- if test "$lt_cv_ld_force_load" = "yes"; then
- _LT_TAGVAR(whole_archive_flag_spec, $1)='`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience ${wl}-force_load,$conv\"; done; func_echo_all \"$new_convenience\"`'
+ if test yes = "$lt_cv_ld_force_load"; then
+ _LT_TAGVAR(whole_archive_flag_spec, $1)='`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience $wl-force_load,$conv\"; done; func_echo_all \"$new_convenience\"`'
m4_case([$1], [F77], [_LT_TAGVAR(compiler_needs_object, $1)=yes],
[FC], [_LT_TAGVAR(compiler_needs_object, $1)=yes])
else
_LT_TAGVAR(whole_archive_flag_spec, $1)=''
fi
_LT_TAGVAR(link_all_deplibs, $1)=yes
- _LT_TAGVAR(allow_undefined_flag, $1)="$_lt_dar_allow_undefined"
+ _LT_TAGVAR(allow_undefined_flag, $1)=$_lt_dar_allow_undefined
case $cc_basename in
- ifort*) _lt_dar_can_shared=yes ;;
+ ifort*|nagfor*) _lt_dar_can_shared=yes ;;
*) _lt_dar_can_shared=$GCC ;;
esac
- if test "$_lt_dar_can_shared" = "yes"; then
+ if test yes = "$_lt_dar_can_shared"; then
output_verbose_link_cmd=func_echo_all
- _LT_TAGVAR(archive_cmds, $1)="\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring $_lt_dar_single_mod${_lt_dsymutil}"
- _LT_TAGVAR(module_cmds, $1)="\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags${_lt_dsymutil}"
- _LT_TAGVAR(archive_expsym_cmds, $1)="sed 's,^,_,' < \$export_symbols > \$output_objdir/\${libname}-symbols.expsym~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring ${_lt_dar_single_mod}${_lt_dar_export_syms}${_lt_dsymutil}"
- _LT_TAGVAR(module_expsym_cmds, $1)="sed -e 's,^,_,' < \$export_symbols > \$output_objdir/\${libname}-symbols.expsym~\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags${_lt_dar_export_syms}${_lt_dsymutil}"
+ _LT_TAGVAR(archive_cmds, $1)="\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring $_lt_dar_single_mod$_lt_dsymutil"
+ _LT_TAGVAR(module_cmds, $1)="\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags$_lt_dsymutil"
+ _LT_TAGVAR(archive_expsym_cmds, $1)="sed 's|^|_|' < \$export_symbols > \$output_objdir/\$libname-symbols.expsym~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring $_lt_dar_single_mod$_lt_dar_export_syms$_lt_dsymutil"
+ _LT_TAGVAR(module_expsym_cmds, $1)="sed -e 's|^|_|' < \$export_symbols > \$output_objdir/\$libname-symbols.expsym~\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags$_lt_dar_export_syms$_lt_dsymutil"
m4_if([$1], [CXX],
-[ if test "$lt_cv_apple_cc_single_mod" != "yes"; then
- _LT_TAGVAR(archive_cmds, $1)="\$CC -r -keep_private_externs -nostdlib -o \${lib}-master.o \$libobjs~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \${lib}-master.o \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring${_lt_dsymutil}"
- _LT_TAGVAR(archive_expsym_cmds, $1)="sed 's,^,_,' < \$export_symbols > \$output_objdir/\${libname}-symbols.expsym~\$CC -r -keep_private_externs -nostdlib -o \${lib}-master.o \$libobjs~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \${lib}-master.o \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring${_lt_dar_export_syms}${_lt_dsymutil}"
+[ if test yes != "$lt_cv_apple_cc_single_mod"; then
+ _LT_TAGVAR(archive_cmds, $1)="\$CC -r -keep_private_externs -nostdlib -o \$lib-master.o \$libobjs~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$lib-master.o \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring$_lt_dsymutil"
+ _LT_TAGVAR(archive_expsym_cmds, $1)="sed 's|^|_|' < \$export_symbols > \$output_objdir/\$libname-symbols.expsym~\$CC -r -keep_private_externs -nostdlib -o \$lib-master.o \$libobjs~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$lib-master.o \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring$_lt_dar_export_syms$_lt_dsymutil"
fi
],[])
else
@@ -1129,7 +1124,7 @@ m4_defun([_LT_DARWIN_LINKER_FEATURES],
# Allow to override them for all tags through lt_cv_aix_libpath.
m4_defun([_LT_SYS_MODULE_PATH_AIX],
[m4_require([_LT_DECL_SED])dnl
-if test "${lt_cv_aix_libpath+set}" = set; then
+if test set = "${lt_cv_aix_libpath+set}"; then
aix_libpath=$lt_cv_aix_libpath
else
AC_CACHE_VAL([_LT_TAGVAR([lt_cv_aix_libpath_], [$1])],
@@ -1147,7 +1142,7 @@ else
_LT_TAGVAR([lt_cv_aix_libpath_], [$1])=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"`
fi],[])
if test -z "$_LT_TAGVAR([lt_cv_aix_libpath_], [$1])"; then
- _LT_TAGVAR([lt_cv_aix_libpath_], [$1])="/usr/lib:/lib"
+ _LT_TAGVAR([lt_cv_aix_libpath_], [$1])=/usr/lib:/lib
fi
])
aix_libpath=$_LT_TAGVAR([lt_cv_aix_libpath_], [$1])
@@ -1167,8 +1162,8 @@ m4_define([_LT_SHELL_INIT],
# -----------------------
# Find how we can fake an echo command that does not interpret backslash.
# In particular, with Autoconf 2.60 or later we add some code to the start
-# of the generated configure script which will find a shell with a builtin
-# printf (which we can use as an echo command).
+# of the generated configure script that will find a shell with a builtin
+# printf (that we can use as an echo command).
m4_defun([_LT_PROG_ECHO_BACKSLASH],
[ECHO='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\'
ECHO=$ECHO$ECHO$ECHO$ECHO$ECHO
@@ -1196,10 +1191,10 @@ fi
# Invoke $ECHO with all args, space-separated.
func_echo_all ()
{
- $ECHO "$*"
+ $ECHO "$*"
}
-case "$ECHO" in
+case $ECHO in
printf*) AC_MSG_RESULT([printf]) ;;
print*) AC_MSG_RESULT([print -r]) ;;
*) AC_MSG_RESULT([cat]) ;;
@@ -1225,16 +1220,17 @@ _LT_DECL([], [ECHO], [1], [An echo program that protects backslashes])
AC_DEFUN([_LT_WITH_SYSROOT],
[AC_MSG_CHECKING([for sysroot])
AC_ARG_WITH([sysroot],
-[ --with-sysroot[=DIR] Search for dependent libraries within DIR
- (or the compiler's sysroot if not specified).],
+[AS_HELP_STRING([--with-sysroot@<:@=DIR@:>@],
+ [Search for dependent libraries within DIR (or the compiler's sysroot
+ if not specified).])],
[], [with_sysroot=no])
dnl lt_sysroot will always be passed unquoted. We quote it here
dnl in case the user passed a directory name.
lt_sysroot=
-case ${with_sysroot} in #(
+case $with_sysroot in #(
yes)
- if test "$GCC" = yes; then
+ if test yes = "$GCC"; then
lt_sysroot=`$CC --print-sysroot 2>/dev/null`
fi
;; #(
@@ -1244,14 +1240,14 @@ case ${with_sysroot} in #(
no|'')
;; #(
*)
- AC_MSG_RESULT([${with_sysroot}])
+ AC_MSG_RESULT([$with_sysroot])
AC_MSG_ERROR([The sysroot must be an absolute path.])
;;
esac
AC_MSG_RESULT([${lt_sysroot:-no}])
_LT_DECL([], [lt_sysroot], [0], [The root where to search for ]dnl
-[dependent libraries, and in which our libraries should be installed.])])
+[dependent libraries, and where our libraries should be installed.])])
# _LT_ENABLE_LOCK
# ---------------
@@ -1259,31 +1255,33 @@ m4_defun([_LT_ENABLE_LOCK],
[AC_ARG_ENABLE([libtool-lock],
[AS_HELP_STRING([--disable-libtool-lock],
[avoid locking (might break parallel builds)])])
-test "x$enable_libtool_lock" != xno && enable_libtool_lock=yes
+test no = "$enable_libtool_lock" || enable_libtool_lock=yes
# Some flags need to be propagated to the compiler or linker for good
# libtool support.
case $host in
ia64-*-hpux*)
- # Find out which ABI we are using.
+ # Find out what ABI is being produced by ac_compile, and set mode
+ # options accordingly.
echo 'int i;' > conftest.$ac_ext
if AC_TRY_EVAL(ac_compile); then
case `/usr/bin/file conftest.$ac_objext` in
*ELF-32*)
- HPUX_IA64_MODE="32"
+ HPUX_IA64_MODE=32
;;
*ELF-64*)
- HPUX_IA64_MODE="64"
+ HPUX_IA64_MODE=64
;;
esac
fi
rm -rf conftest*
;;
*-*-irix6*)
- # Find out which ABI we are using.
+ # Find out what ABI is being produced by ac_compile, and set linker
+ # options accordingly.
echo '[#]line '$LINENO' "configure"' > conftest.$ac_ext
if AC_TRY_EVAL(ac_compile); then
- if test "$lt_cv_prog_gnu_ld" = yes; then
+ if test yes = "$lt_cv_prog_gnu_ld"; then
case `/usr/bin/file conftest.$ac_objext` in
*32-bit*)
LD="${LD-ld} -melf32bsmip"
@@ -1312,9 +1310,46 @@ ia64-*-hpux*)
rm -rf conftest*
;;
-x86_64-*kfreebsd*-gnu|x86_64-*linux*|ppc*-*linux*|powerpc*-*linux*| \
+mips64*-*linux*)
+ # Find out what ABI is being produced by ac_compile, and set linker
+ # options accordingly.
+ echo '[#]line '$LINENO' "configure"' > conftest.$ac_ext
+ if AC_TRY_EVAL(ac_compile); then
+ emul=elf
+ case `/usr/bin/file conftest.$ac_objext` in
+ *32-bit*)
+ emul="${emul}32"
+ ;;
+ *64-bit*)
+ emul="${emul}64"
+ ;;
+ esac
+ case `/usr/bin/file conftest.$ac_objext` in
+ *MSB*)
+ emul="${emul}btsmip"
+ ;;
+ *LSB*)
+ emul="${emul}ltsmip"
+ ;;
+ esac
+ case `/usr/bin/file conftest.$ac_objext` in
+ *N32*)
+ emul="${emul}n32"
+ ;;
+ esac
+ LD="${LD-ld} -m $emul"
+ fi
+ rm -rf conftest*
+ ;;
+
+x86_64-*kfreebsd*-gnu|x86_64-*linux*|powerpc*-*linux*| \
s390*-*linux*|s390*-*tpf*|sparc*-*linux*)
- # Find out which ABI we are using.
+ # Find out what ABI is being produced by ac_compile, and set linker
+ # options accordingly. Note that the listed cases only cover the
+ # situations where additional linker options are needed (such as when
+ # doing 32-bit compilation for a host where ld defaults to 64-bit, or
+ # vice versa); the common cases where no linker options are needed do
+ # not appear in the list.
echo 'int i;' > conftest.$ac_ext
if AC_TRY_EVAL(ac_compile); then
case `/usr/bin/file conftest.o` in
@@ -1324,9 +1359,19 @@ s390*-*linux*|s390*-*tpf*|sparc*-*linux*)
LD="${LD-ld} -m elf_i386_fbsd"
;;
x86_64-*linux*)
- LD="${LD-ld} -m elf_i386"
+ case `/usr/bin/file conftest.o` in
+ *x86-64*)
+ LD="${LD-ld} -m elf32_x86_64"
+ ;;
+ *)
+ LD="${LD-ld} -m elf_i386"
+ ;;
+ esac
;;
- ppc64-*linux*|powerpc64-*linux*)
+ powerpc64le-*linux*)
+ LD="${LD-ld} -m elf32lppclinux"
+ ;;
+ powerpc64-*linux*)
LD="${LD-ld} -m elf32ppclinux"
;;
s390x-*linux*)
@@ -1345,7 +1390,10 @@ s390*-*linux*|s390*-*tpf*|sparc*-*linux*)
x86_64-*linux*)
LD="${LD-ld} -m elf_x86_64"
;;
- ppc*-*linux*|powerpc*-*linux*)
+ powerpcle-*linux*)
+ LD="${LD-ld} -m elf64lppc"
+ ;;
+ powerpc-*linux*)
LD="${LD-ld} -m elf64ppc"
;;
s390*-*linux*|s390*-*tpf*)
@@ -1363,19 +1411,20 @@ s390*-*linux*|s390*-*tpf*|sparc*-*linux*)
*-*-sco3.2v5*)
# On SCO OpenServer 5, we need -belf to get full-featured binaries.
- SAVE_CFLAGS="$CFLAGS"
+ SAVE_CFLAGS=$CFLAGS
CFLAGS="$CFLAGS -belf"
AC_CACHE_CHECK([whether the C compiler needs -belf], lt_cv_cc_needs_belf,
[AC_LANG_PUSH(C)
AC_LINK_IFELSE([AC_LANG_PROGRAM([[]],[[]])],[lt_cv_cc_needs_belf=yes],[lt_cv_cc_needs_belf=no])
AC_LANG_POP])
- if test x"$lt_cv_cc_needs_belf" != x"yes"; then
+ if test yes != "$lt_cv_cc_needs_belf"; then
# this is probably gcc 2.8.0, egcs 1.0 or newer; no need for -belf
- CFLAGS="$SAVE_CFLAGS"
+ CFLAGS=$SAVE_CFLAGS
fi
;;
*-*solaris*)
- # Find out which ABI we are using.
+ # Find out what ABI is being produced by ac_compile, and set linker
+ # options accordingly.
echo 'int i;' > conftest.$ac_ext
if AC_TRY_EVAL(ac_compile); then
case `/usr/bin/file conftest.o` in
@@ -1383,7 +1432,7 @@ s390*-*linux*|s390*-*tpf*|sparc*-*linux*)
case $lt_cv_prog_gnu_ld in
yes*)
case $host in
- i?86-*-solaris*)
+ i?86-*-solaris*|x86_64-*-solaris*)
LD="${LD-ld} -m elf_x86_64"
;;
sparc*-*-solaris*)
@@ -1392,7 +1441,7 @@ s390*-*linux*|s390*-*tpf*|sparc*-*linux*)
esac
# GNU ld 2.21 introduced _sol2 emulations. Use them if available.
if ${LD-ld} -V | grep _sol2 >/dev/null 2>&1; then
- LD="${LD-ld}_sol2"
+ LD=${LD-ld}_sol2
fi
;;
*)
@@ -1408,7 +1457,7 @@ s390*-*linux*|s390*-*tpf*|sparc*-*linux*)
;;
esac
-need_locks="$enable_libtool_lock"
+need_locks=$enable_libtool_lock
])# _LT_ENABLE_LOCK
@@ -1427,11 +1476,11 @@ AC_CACHE_CHECK([for archiver @FILE support], [lt_cv_ar_at_file],
[echo conftest.$ac_objext > conftest.lst
lt_ar_try='$AR $AR_FLAGS libconftest.a @conftest.lst >&AS_MESSAGE_LOG_FD'
AC_TRY_EVAL([lt_ar_try])
- if test "$ac_status" -eq 0; then
+ if test 0 -eq "$ac_status"; then
# Ensure the archiver fails upon bogus file names.
rm -f conftest.$ac_objext libconftest.a
AC_TRY_EVAL([lt_ar_try])
- if test "$ac_status" -ne 0; then
+ if test 0 -ne "$ac_status"; then
lt_cv_ar_at_file=@
fi
fi
@@ -1439,7 +1488,7 @@ AC_CACHE_CHECK([for archiver @FILE support], [lt_cv_ar_at_file],
])
])
-if test "x$lt_cv_ar_at_file" = xno; then
+if test no = "$lt_cv_ar_at_file"; then
archiver_list_spec=
else
archiver_list_spec=$lt_cv_ar_at_file
@@ -1470,7 +1519,7 @@ old_postuninstall_cmds=
if test -n "$RANLIB"; then
case $host_os in
- openbsd*)
+ bitrig* | openbsd*)
old_postinstall_cmds="$old_postinstall_cmds~\$RANLIB -t \$tool_oldlib"
;;
*)
@@ -1506,7 +1555,7 @@ AC_CACHE_CHECK([$1], [$2],
[$2=no
m4_if([$4], , [ac_outfile=conftest.$ac_objext], [ac_outfile=$4])
echo "$lt_simple_compile_test_code" > conftest.$ac_ext
- lt_compiler_flag="$3"
+ lt_compiler_flag="$3" ## exclude from sc_useless_quotes_in_assignment
# Insert the option either (1) after the last *FLAGS variable, or
# (2) before a word containing "conftest.", or (3) at the end.
# Note that $ac_compile itself does not contain backslashes and begins
@@ -1533,7 +1582,7 @@ AC_CACHE_CHECK([$1], [$2],
$RM conftest*
])
-if test x"[$]$2" = xyes; then
+if test yes = "[$]$2"; then
m4_if([$5], , :, [$5])
else
m4_if([$6], , :, [$6])
@@ -1555,7 +1604,7 @@ AC_DEFUN([_LT_LINKER_OPTION],
m4_require([_LT_DECL_SED])dnl
AC_CACHE_CHECK([$1], [$2],
[$2=no
- save_LDFLAGS="$LDFLAGS"
+ save_LDFLAGS=$LDFLAGS
LDFLAGS="$LDFLAGS $3"
echo "$lt_simple_link_test_code" > conftest.$ac_ext
if (eval $ac_link 2>conftest.err) && test -s conftest$ac_exeext; then
@@ -1574,10 +1623,10 @@ AC_CACHE_CHECK([$1], [$2],
fi
fi
$RM -r conftest*
- LDFLAGS="$save_LDFLAGS"
+ LDFLAGS=$save_LDFLAGS
])
-if test x"[$]$2" = xyes; then
+if test yes = "[$]$2"; then
m4_if([$4], , :, [$4])
else
m4_if([$5], , :, [$5])
@@ -1598,7 +1647,7 @@ AC_DEFUN([LT_CMD_MAX_LEN],
AC_MSG_CHECKING([the maximum length of command line arguments])
AC_CACHE_VAL([lt_cv_sys_max_cmd_len], [dnl
i=0
- teststring="ABCD"
+ teststring=ABCD
case $build_os in
msdosdjgpp*)
@@ -1638,7 +1687,7 @@ AC_CACHE_VAL([lt_cv_sys_max_cmd_len], [dnl
lt_cv_sys_max_cmd_len=8192;
;;
- netbsd* | freebsd* | openbsd* | darwin* | dragonfly*)
+ bitrig* | darwin* | dragonfly* | freebsd* | netbsd* | openbsd*)
# This has been around since 386BSD, at least. Likely further.
if test -x /sbin/sysctl; then
lt_cv_sys_max_cmd_len=`/sbin/sysctl -n kern.argmax`
@@ -1688,22 +1737,23 @@ AC_CACHE_VAL([lt_cv_sys_max_cmd_len], [dnl
;;
*)
lt_cv_sys_max_cmd_len=`(getconf ARG_MAX) 2> /dev/null`
- if test -n "$lt_cv_sys_max_cmd_len"; then
+ if test -n "$lt_cv_sys_max_cmd_len" && \
+ test undefined != "$lt_cv_sys_max_cmd_len"; then
lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 4`
lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \* 3`
else
# Make teststring a little bigger before we do anything with it.
# a 1K string should be a reasonable start.
- for i in 1 2 3 4 5 6 7 8 ; do
+ for i in 1 2 3 4 5 6 7 8; do
teststring=$teststring$teststring
done
SHELL=${SHELL-${CONFIG_SHELL-/bin/sh}}
# If test is not a shell built-in, we'll probably end up computing a
# maximum length that is only half of the actual maximum length, but
# we can't tell.
- while { test "X"`env echo "$teststring$teststring" 2>/dev/null` \
+ while { test X`env echo "$teststring$teststring" 2>/dev/null` \
= "X$teststring$teststring"; } >/dev/null 2>&1 &&
- test $i != 17 # 1/2 MB should be enough
+ test 17 != "$i" # 1/2 MB should be enough
do
i=`expr $i + 1`
teststring=$teststring$teststring
@@ -1719,7 +1769,7 @@ AC_CACHE_VAL([lt_cv_sys_max_cmd_len], [dnl
;;
esac
])
-if test -n $lt_cv_sys_max_cmd_len ; then
+if test -n "$lt_cv_sys_max_cmd_len"; then
AC_MSG_RESULT($lt_cv_sys_max_cmd_len)
else
AC_MSG_RESULT(none)
@@ -1747,7 +1797,7 @@ m4_defun([_LT_HEADER_DLFCN],
# ----------------------------------------------------------------
m4_defun([_LT_TRY_DLOPEN_SELF],
[m4_require([_LT_HEADER_DLFCN])dnl
-if test "$cross_compiling" = yes; then :
+if test yes = "$cross_compiling"; then :
[$4]
else
lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2
@@ -1796,7 +1846,7 @@ else
/* When -fvisbility=hidden is used, assume the code has been annotated
correspondingly for the symbols needed. */
-#if defined(__GNUC__) && (((__GNUC__ == 3) && (__GNUC_MINOR__ >= 3)) || (__GNUC__ > 3))
+#if defined __GNUC__ && (((__GNUC__ == 3) && (__GNUC_MINOR__ >= 3)) || (__GNUC__ > 3))
int fnord () __attribute__((visibility("default")));
#endif
@@ -1822,7 +1872,7 @@ int main ()
return status;
}]
_LT_EOF
- if AC_TRY_EVAL(ac_link) && test -s conftest${ac_exeext} 2>/dev/null; then
+ if AC_TRY_EVAL(ac_link) && test -s "conftest$ac_exeext" 2>/dev/null; then
(./conftest; exit; ) >&AS_MESSAGE_LOG_FD 2>/dev/null
lt_status=$?
case x$lt_status in
@@ -1843,7 +1893,7 @@ rm -fr conftest*
# ------------------
AC_DEFUN([LT_SYS_DLOPEN_SELF],
[m4_require([_LT_HEADER_DLFCN])dnl
-if test "x$enable_dlopen" != xyes; then
+if test yes != "$enable_dlopen"; then
enable_dlopen=unknown
enable_dlopen_self=unknown
enable_dlopen_self_static=unknown
@@ -1853,44 +1903,52 @@ else
case $host_os in
beos*)
- lt_cv_dlopen="load_add_on"
+ lt_cv_dlopen=load_add_on
lt_cv_dlopen_libs=
lt_cv_dlopen_self=yes
;;
mingw* | pw32* | cegcc*)
- lt_cv_dlopen="LoadLibrary"
+ lt_cv_dlopen=LoadLibrary
lt_cv_dlopen_libs=
;;
cygwin*)
- lt_cv_dlopen="dlopen"
+ lt_cv_dlopen=dlopen
lt_cv_dlopen_libs=
;;
darwin*)
- # if libdl is installed we need to link against it
+ # if libdl is installed we need to link against it
AC_CHECK_LIB([dl], [dlopen],
- [lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-ldl"],[
- lt_cv_dlopen="dyld"
+ [lt_cv_dlopen=dlopen lt_cv_dlopen_libs=-ldl],[
+ lt_cv_dlopen=dyld
lt_cv_dlopen_libs=
lt_cv_dlopen_self=yes
])
;;
+ tpf*)
+ # Don't try to run any link tests for TPF. We know it's impossible
+ # because TPF is a cross-compiler, and we know how we open DSOs.
+ lt_cv_dlopen=dlopen
+ lt_cv_dlopen_libs=
+ lt_cv_dlopen_self=no
+ ;;
+
*)
AC_CHECK_FUNC([shl_load],
- [lt_cv_dlopen="shl_load"],
+ [lt_cv_dlopen=shl_load],
[AC_CHECK_LIB([dld], [shl_load],
- [lt_cv_dlopen="shl_load" lt_cv_dlopen_libs="-ldld"],
+ [lt_cv_dlopen=shl_load lt_cv_dlopen_libs=-ldld],
[AC_CHECK_FUNC([dlopen],
- [lt_cv_dlopen="dlopen"],
+ [lt_cv_dlopen=dlopen],
[AC_CHECK_LIB([dl], [dlopen],
- [lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-ldl"],
+ [lt_cv_dlopen=dlopen lt_cv_dlopen_libs=-ldl],
[AC_CHECK_LIB([svld], [dlopen],
- [lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-lsvld"],
+ [lt_cv_dlopen=dlopen lt_cv_dlopen_libs=-lsvld],
[AC_CHECK_LIB([dld], [dld_link],
- [lt_cv_dlopen="dld_link" lt_cv_dlopen_libs="-ldld"])
+ [lt_cv_dlopen=dld_link lt_cv_dlopen_libs=-ldld])
])
])
])
@@ -1899,21 +1957,21 @@ else
;;
esac
- if test "x$lt_cv_dlopen" != xno; then
- enable_dlopen=yes
- else
+ if test no = "$lt_cv_dlopen"; then
enable_dlopen=no
+ else
+ enable_dlopen=yes
fi
case $lt_cv_dlopen in
dlopen)
- save_CPPFLAGS="$CPPFLAGS"
- test "x$ac_cv_header_dlfcn_h" = xyes && CPPFLAGS="$CPPFLAGS -DHAVE_DLFCN_H"
+ save_CPPFLAGS=$CPPFLAGS
+ test yes = "$ac_cv_header_dlfcn_h" && CPPFLAGS="$CPPFLAGS -DHAVE_DLFCN_H"
- save_LDFLAGS="$LDFLAGS"
+ save_LDFLAGS=$LDFLAGS
wl=$lt_prog_compiler_wl eval LDFLAGS=\"\$LDFLAGS $export_dynamic_flag_spec\"
- save_LIBS="$LIBS"
+ save_LIBS=$LIBS
LIBS="$lt_cv_dlopen_libs $LIBS"
AC_CACHE_CHECK([whether a program can dlopen itself],
@@ -1923,7 +1981,7 @@ else
lt_cv_dlopen_self=no, lt_cv_dlopen_self=cross)
])
- if test "x$lt_cv_dlopen_self" = xyes; then
+ if test yes = "$lt_cv_dlopen_self"; then
wl=$lt_prog_compiler_wl eval LDFLAGS=\"\$LDFLAGS $lt_prog_compiler_static\"
AC_CACHE_CHECK([whether a statically linked program can dlopen itself],
lt_cv_dlopen_self_static, [dnl
@@ -1933,9 +1991,9 @@ else
])
fi
- CPPFLAGS="$save_CPPFLAGS"
- LDFLAGS="$save_LDFLAGS"
- LIBS="$save_LIBS"
+ CPPFLAGS=$save_CPPFLAGS
+ LDFLAGS=$save_LDFLAGS
+ LIBS=$save_LIBS
;;
esac
@@ -2027,8 +2085,8 @@ m4_defun([_LT_COMPILER_FILE_LOCKS],
m4_require([_LT_FILEUTILS_DEFAULTS])dnl
_LT_COMPILER_C_O([$1])
-hard_links="nottested"
-if test "$_LT_TAGVAR(lt_cv_prog_compiler_c_o, $1)" = no && test "$need_locks" != no; then
+hard_links=nottested
+if test no = "$_LT_TAGVAR(lt_cv_prog_compiler_c_o, $1)" && test no != "$need_locks"; then
# do not overwrite the value of need_locks provided by the user
AC_MSG_CHECKING([if we can lock with hard links])
hard_links=yes
@@ -2038,8 +2096,8 @@ if test "$_LT_TAGVAR(lt_cv_prog_compiler_c_o, $1)" = no && test "$need_locks" !=
ln conftest.a conftest.b 2>&5 || hard_links=no
ln conftest.a conftest.b 2>/dev/null && hard_links=no
AC_MSG_RESULT([$hard_links])
- if test "$hard_links" = no; then
- AC_MSG_WARN([`$CC' does not support `-c -o', so `make -j' may be unsafe])
+ if test no = "$hard_links"; then
+ AC_MSG_WARN(['$CC' does not support '-c -o', so 'make -j' may be unsafe])
need_locks=warn
fi
else
@@ -2066,8 +2124,8 @@ objdir=$lt_cv_objdir
_LT_DECL([], [objdir], [0],
[The name of the directory that contains temporary libtool files])dnl
m4_pattern_allow([LT_OBJDIR])dnl
-AC_DEFINE_UNQUOTED(LT_OBJDIR, "$lt_cv_objdir/",
- [Define to the sub-directory in which libtool stores uninstalled libraries.])
+AC_DEFINE_UNQUOTED([LT_OBJDIR], "$lt_cv_objdir/",
+ [Define to the sub-directory where libtool stores uninstalled libraries.])
])# _LT_CHECK_OBJDIR
@@ -2079,15 +2137,15 @@ m4_defun([_LT_LINKER_HARDCODE_LIBPATH],
_LT_TAGVAR(hardcode_action, $1)=
if test -n "$_LT_TAGVAR(hardcode_libdir_flag_spec, $1)" ||
test -n "$_LT_TAGVAR(runpath_var, $1)" ||
- test "X$_LT_TAGVAR(hardcode_automatic, $1)" = "Xyes" ; then
+ test yes = "$_LT_TAGVAR(hardcode_automatic, $1)"; then
# We can hardcode non-existent directories.
- if test "$_LT_TAGVAR(hardcode_direct, $1)" != no &&
+ if test no != "$_LT_TAGVAR(hardcode_direct, $1)" &&
# If the only mechanism to avoid hardcoding is shlibpath_var, we
# have to relink, otherwise we might link with an installed library
# when we should be linking with a yet-to-be-installed one
- ## test "$_LT_TAGVAR(hardcode_shlibpath_var, $1)" != no &&
- test "$_LT_TAGVAR(hardcode_minus_L, $1)" != no; then
+ ## test no != "$_LT_TAGVAR(hardcode_shlibpath_var, $1)" &&
+ test no != "$_LT_TAGVAR(hardcode_minus_L, $1)"; then
# Linking always hardcodes the temporary library directory.
_LT_TAGVAR(hardcode_action, $1)=relink
else
@@ -2101,12 +2159,12 @@ else
fi
AC_MSG_RESULT([$_LT_TAGVAR(hardcode_action, $1)])
-if test "$_LT_TAGVAR(hardcode_action, $1)" = relink ||
- test "$_LT_TAGVAR(inherit_rpath, $1)" = yes; then
+if test relink = "$_LT_TAGVAR(hardcode_action, $1)" ||
+ test yes = "$_LT_TAGVAR(inherit_rpath, $1)"; then
# Fast installation is not supported
enable_fast_install=no
-elif test "$shlibpath_overrides_runpath" = yes ||
- test "$enable_shared" = no; then
+elif test yes = "$shlibpath_overrides_runpath" ||
+ test no = "$enable_shared"; then
# Fast installation is not necessary
enable_fast_install=needless
fi
@@ -2130,7 +2188,7 @@ else
# FIXME - insert some real tests, host_os isn't really good enough
case $host_os in
darwin*)
- if test -n "$STRIP" ; then
+ if test -n "$STRIP"; then
striplib="$STRIP -x"
old_striplib="$STRIP -S"
AC_MSG_RESULT([yes])
@@ -2161,14 +2219,14 @@ m4_require([_LT_CHECK_SHELL_FEATURES])dnl
AC_MSG_CHECKING([dynamic linker characteristics])
m4_if([$1],
[], [
-if test "$GCC" = yes; then
+if test yes = "$GCC"; then
case $host_os in
- darwin*) lt_awk_arg="/^libraries:/,/LR/" ;;
- *) lt_awk_arg="/^libraries:/" ;;
+ darwin*) lt_awk_arg='/^libraries:/,/LR/' ;;
+ *) lt_awk_arg='/^libraries:/' ;;
esac
case $host_os in
- mingw* | cegcc*) lt_sed_strip_eq="s,=\([[A-Za-z]]:\),\1,g" ;;
- *) lt_sed_strip_eq="s,=/,/,g" ;;
+ mingw* | cegcc*) lt_sed_strip_eq='s|=\([[A-Za-z]]:\)|\1|g' ;;
+ *) lt_sed_strip_eq='s|=/|/|g' ;;
esac
lt_search_path_spec=`$CC -print-search-dirs | awk $lt_awk_arg | $SED -e "s/^libraries://" -e $lt_sed_strip_eq`
case $lt_search_path_spec in
@@ -2184,28 +2242,35 @@ if test "$GCC" = yes; then
;;
esac
# Ok, now we have the path, separated by spaces, we can step through it
- # and add multilib dir if necessary.
+ # and add multilib dir if necessary...
lt_tmp_lt_search_path_spec=
- lt_multi_os_dir=`$CC $CPPFLAGS $CFLAGS $LDFLAGS -print-multi-os-directory 2>/dev/null`
+ lt_multi_os_dir=/`$CC $CPPFLAGS $CFLAGS $LDFLAGS -print-multi-os-directory 2>/dev/null`
+ # ...but if some path component already ends with the multilib dir we assume
+ # that all is fine and trust -print-search-dirs as is (GCC 4.2? or newer).
+ case "$lt_multi_os_dir; $lt_search_path_spec " in
+ "/; "* | "/.; "* | "/./; "* | *"$lt_multi_os_dir "* | *"$lt_multi_os_dir/ "*)
+ lt_multi_os_dir=
+ ;;
+ esac
for lt_sys_path in $lt_search_path_spec; do
- if test -d "$lt_sys_path/$lt_multi_os_dir"; then
- lt_tmp_lt_search_path_spec="$lt_tmp_lt_search_path_spec $lt_sys_path/$lt_multi_os_dir"
- else
+ if test -d "$lt_sys_path$lt_multi_os_dir"; then
+ lt_tmp_lt_search_path_spec="$lt_tmp_lt_search_path_spec $lt_sys_path$lt_multi_os_dir"
+ elif test -n "$lt_multi_os_dir"; then
test -d "$lt_sys_path" && \
lt_tmp_lt_search_path_spec="$lt_tmp_lt_search_path_spec $lt_sys_path"
fi
done
lt_search_path_spec=`$ECHO "$lt_tmp_lt_search_path_spec" | awk '
-BEGIN {RS=" "; FS="/|\n";} {
- lt_foo="";
- lt_count=0;
+BEGIN {RS = " "; FS = "/|\n";} {
+ lt_foo = "";
+ lt_count = 0;
for (lt_i = NF; lt_i > 0; lt_i--) {
if ($lt_i != "" && $lt_i != ".") {
if ($lt_i == "..") {
lt_count++;
} else {
if (lt_count == 0) {
- lt_foo="/" $lt_i lt_foo;
+ lt_foo = "/" $lt_i lt_foo;
} else {
lt_count--;
}
@@ -2219,7 +2284,7 @@ BEGIN {RS=" "; FS="/|\n";} {
# for these hosts.
case $host_os in
mingw* | cegcc*) lt_search_path_spec=`$ECHO "$lt_search_path_spec" |\
- $SED 's,/\([[A-Za-z]]:\),\1,g'` ;;
+ $SED 's|/\([[A-Za-z]]:\)|\1|g'` ;;
esac
sys_lib_search_path_spec=`$ECHO "$lt_search_path_spec" | $lt_NL2SP`
else
@@ -2228,7 +2293,7 @@ fi])
library_names_spec=
libname_spec='lib$name'
soname_spec=
-shrext_cmds=".so"
+shrext_cmds=.so
postinstall_cmds=
postuninstall_cmds=
finish_cmds=
@@ -2248,11 +2313,11 @@ need_version=unknown
case $host_os in
aix3*)
version_type=linux # correct to gnu/linux during the next big refactor
- library_names_spec='${libname}${release}${shared_ext}$versuffix $libname.a'
+ library_names_spec='$libname$release$shared_ext$versuffix $libname.a'
shlibpath_var=LIBPATH
# AIX 3 has no versioning support, so we append a major version to the name.
- soname_spec='${libname}${release}${shared_ext}$major'
+ soname_spec='$libname$release$shared_ext$major'
;;
aix[[4-9]]*)
@@ -2260,40 +2325,40 @@ aix[[4-9]]*)
need_lib_prefix=no
need_version=no
hardcode_into_libs=yes
- if test "$host_cpu" = ia64; then
+ if test ia64 = "$host_cpu"; then
# AIX 5 supports IA64
- library_names_spec='${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext}$versuffix $libname${shared_ext}'
+ library_names_spec='$libname$release$shared_ext$major $libname$release$shared_ext$versuffix $libname$shared_ext'
shlibpath_var=LD_LIBRARY_PATH
else
# With GCC up to 2.95.x, collect2 would create an import file
# for dependence libraries. The import file would start with
- # the line `#! .'. This would cause the generated library to
- # depend on `.', always an invalid library. This was fixed in
+ # the line '#! .'. This would cause the generated library to
+ # depend on '.', always an invalid library. This was fixed in
# development snapshots of GCC prior to 3.0.
case $host_os in
aix4 | aix4.[[01]] | aix4.[[01]].*)
if { echo '#if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 97)'
echo ' yes '
- echo '#endif'; } | ${CC} -E - | $GREP yes > /dev/null; then
+ echo '#endif'; } | $CC -E - | $GREP yes > /dev/null; then
:
else
can_build_shared=no
fi
;;
esac
- # AIX (on Power*) has no versioning support, so currently we can not hardcode correct
+ # AIX (on Power*) has no versioning support, so currently we cannot hardcode correct
# soname into executable. Probably we can add versioning support to
# collect2, so additional links can be useful in future.
- if test "$aix_use_runtimelinking" = yes; then
+ if test yes = "$aix_use_runtimelinking"; then
# If using run time linking (on AIX 4.2 or later) use lib<name>.so
# instead of lib<name>.a to let people know that these are not
# typical AIX shared libraries.
- library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+ library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext'
else
# We preserve .a as extension for shared libraries through AIX4.2
# and later when we are not doing run time linking.
- library_names_spec='${libname}${release}.a $libname.a'
- soname_spec='${libname}${release}${shared_ext}$major'
+ library_names_spec='$libname$release.a $libname.a'
+ soname_spec='$libname$release$shared_ext$major'
fi
shlibpath_var=LIBPATH
fi
@@ -2304,18 +2369,18 @@ amigaos*)
powerpc)
# Since July 2007 AmigaOS4 officially supports .so libraries.
# When compiling the executable, add -use-dynld -Lsobjs: to the compileline.
- library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+ library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext'
;;
m68k)
library_names_spec='$libname.ixlibrary $libname.a'
# Create ${libname}_ixlibrary.a entries in /sys/libs.
- finish_eval='for lib in `ls $libdir/*.ixlibrary 2>/dev/null`; do libname=`func_echo_all "$lib" | $SED '\''s%^.*/\([[^/]]*\)\.ixlibrary$%\1%'\''`; test $RM /sys/libs/${libname}_ixlibrary.a; $show "cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a"; cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a || exit 1; done'
+ finish_eval='for lib in `ls $libdir/*.ixlibrary 2>/dev/null`; do libname=`func_echo_all "$lib" | $SED '\''s%^.*/\([[^/]]*\)\.ixlibrary$%\1%'\''`; $RM /sys/libs/${libname}_ixlibrary.a; $show "cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a"; cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a || exit 1; done'
;;
esac
;;
beos*)
- library_names_spec='${libname}${shared_ext}'
+ library_names_spec='$libname$shared_ext'
dynamic_linker="$host_os ld.so"
shlibpath_var=LIBRARY_PATH
;;
@@ -2323,8 +2388,8 @@ beos*)
bsdi[[45]]*)
version_type=linux # correct to gnu/linux during the next big refactor
need_version=no
- library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
- soname_spec='${libname}${release}${shared_ext}$major'
+ library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext'
+ soname_spec='$libname$release$shared_ext$major'
finish_cmds='PATH="\$PATH:/sbin" ldconfig $libdir'
shlibpath_var=LD_LIBRARY_PATH
sys_lib_search_path_spec="/shlib /usr/lib /usr/X11/lib /usr/contrib/lib /lib /usr/local/lib"
@@ -2336,7 +2401,7 @@ bsdi[[45]]*)
cygwin* | mingw* | pw32* | cegcc*)
version_type=windows
- shrext_cmds=".dll"
+ shrext_cmds=.dll
need_version=no
need_lib_prefix=no
@@ -2345,8 +2410,8 @@ cygwin* | mingw* | pw32* | cegcc*)
# gcc
library_names_spec='$libname.dll.a'
# DLL is installed to $(libdir)/../bin by postinstall_cmds
- postinstall_cmds='base_file=`basename \${file}`~
- dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\${base_file}'\''i; echo \$dlname'\''`~
+ postinstall_cmds='base_file=`basename \$file`~
+ dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\$base_file'\''i; echo \$dlname'\''`~
dldir=$destdir/`dirname \$dlpath`~
test -d \$dldir || mkdir -p \$dldir~
$install_prog $dir/$dlname \$dldir/$dlname~
@@ -2362,17 +2427,17 @@ cygwin* | mingw* | pw32* | cegcc*)
case $host_os in
cygwin*)
# Cygwin DLLs use 'cyg' prefix rather than 'lib'
- soname_spec='`echo ${libname} | sed -e 's/^lib/cyg/'``echo ${release} | $SED -e 's/[[.]]/-/g'`${versuffix}${shared_ext}'
+ soname_spec='`echo $libname | sed -e 's/^lib/cyg/'``echo $release | $SED -e 's/[[.]]/-/g'`$versuffix$shared_ext'
m4_if([$1], [],[
sys_lib_search_path_spec="$sys_lib_search_path_spec /usr/lib/w32api"])
;;
mingw* | cegcc*)
# MinGW DLLs use traditional 'lib' prefix
- soname_spec='${libname}`echo ${release} | $SED -e 's/[[.]]/-/g'`${versuffix}${shared_ext}'
+ soname_spec='$libname`echo $release | $SED -e 's/[[.]]/-/g'`$versuffix$shared_ext'
;;
pw32*)
# pw32 DLLs use 'pw' prefix rather than 'lib'
- library_names_spec='`echo ${libname} | sed -e 's/^lib/pw/'``echo ${release} | $SED -e 's/[[.]]/-/g'`${versuffix}${shared_ext}'
+ library_names_spec='`echo $libname | sed -e 's/^lib/pw/'``echo $release | $SED -e 's/[[.]]/-/g'`$versuffix$shared_ext'
;;
esac
dynamic_linker='Win32 ld.exe'
@@ -2381,8 +2446,8 @@ m4_if([$1], [],[
*,cl*)
# Native MSVC
libname_spec='$name'
- soname_spec='${libname}`echo ${release} | $SED -e 's/[[.]]/-/g'`${versuffix}${shared_ext}'
- library_names_spec='${libname}.dll.lib'
+ soname_spec='$libname`echo $release | $SED -e 's/[[.]]/-/g'`$versuffix$shared_ext'
+ library_names_spec='$libname.dll.lib'
case $build_os in
mingw*)
@@ -2409,7 +2474,7 @@ m4_if([$1], [],[
sys_lib_search_path_spec=`cygpath --path --unix "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"`
;;
*)
- sys_lib_search_path_spec="$LIB"
+ sys_lib_search_path_spec=$LIB
if $ECHO "$sys_lib_search_path_spec" | [$GREP ';[c-zC-Z]:/' >/dev/null]; then
# It is most probably a Windows format PATH.
sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | $SED -e 's/;/ /g'`
@@ -2422,8 +2487,8 @@ m4_if([$1], [],[
esac
# DLL is installed to $(libdir)/../bin by postinstall_cmds
- postinstall_cmds='base_file=`basename \${file}`~
- dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\${base_file}'\''i; echo \$dlname'\''`~
+ postinstall_cmds='base_file=`basename \$file`~
+ dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\$base_file'\''i; echo \$dlname'\''`~
dldir=$destdir/`dirname \$dlpath`~
test -d \$dldir || mkdir -p \$dldir~
$install_prog $dir/$dlname \$dldir/$dlname'
@@ -2436,7 +2501,7 @@ m4_if([$1], [],[
*)
# Assume MSVC wrapper
- library_names_spec='${libname}`echo ${release} | $SED -e 's/[[.]]/-/g'`${versuffix}${shared_ext} $libname.lib'
+ library_names_spec='$libname`echo $release | $SED -e 's/[[.]]/-/g'`$versuffix$shared_ext $libname.lib'
dynamic_linker='Win32 ld.exe'
;;
esac
@@ -2449,8 +2514,8 @@ darwin* | rhapsody*)
version_type=darwin
need_lib_prefix=no
need_version=no
- library_names_spec='${libname}${release}${major}$shared_ext ${libname}$shared_ext'
- soname_spec='${libname}${release}${major}$shared_ext'
+ library_names_spec='$libname$release$major$shared_ext $libname$shared_ext'
+ soname_spec='$libname$release$major$shared_ext'
shlibpath_overrides_runpath=yes
shlibpath_var=DYLD_LIBRARY_PATH
shrext_cmds='`test .$module = .yes && echo .so || echo .dylib`'
@@ -2463,8 +2528,8 @@ dgux*)
version_type=linux # correct to gnu/linux during the next big refactor
need_lib_prefix=no
need_version=no
- library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname$shared_ext'
- soname_spec='${libname}${release}${shared_ext}$major'
+ library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext'
+ soname_spec='$libname$release$shared_ext$major'
shlibpath_var=LD_LIBRARY_PATH
;;
@@ -2482,12 +2547,12 @@ freebsd* | dragonfly*)
version_type=freebsd-$objformat
case $version_type in
freebsd-elf*)
- library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext} $libname${shared_ext}'
+ library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext $libname$shared_ext'
need_version=no
need_lib_prefix=no
;;
freebsd-*)
- library_names_spec='${libname}${release}${shared_ext}$versuffix $libname${shared_ext}$versuffix'
+ library_names_spec='$libname$release$shared_ext$versuffix $libname$shared_ext$versuffix'
need_version=yes
;;
esac
@@ -2512,26 +2577,15 @@ freebsd* | dragonfly*)
esac
;;
-gnu*)
- version_type=linux # correct to gnu/linux during the next big refactor
- need_lib_prefix=no
- need_version=no
- library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}${major} ${libname}${shared_ext}'
- soname_spec='${libname}${release}${shared_ext}$major'
- shlibpath_var=LD_LIBRARY_PATH
- shlibpath_overrides_runpath=no
- hardcode_into_libs=yes
- ;;
-
haiku*)
version_type=linux # correct to gnu/linux during the next big refactor
need_lib_prefix=no
need_version=no
dynamic_linker="$host_os runtime_loader"
- library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}${major} ${libname}${shared_ext}'
- soname_spec='${libname}${release}${shared_ext}$major'
+ library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext'
+ soname_spec='$libname$release$shared_ext$major'
shlibpath_var=LIBRARY_PATH
- shlibpath_overrides_runpath=yes
+ shlibpath_overrides_runpath=no
sys_lib_dlsearch_path_spec='/boot/home/config/lib /boot/common/lib /boot/system/lib'
hardcode_into_libs=yes
;;
@@ -2549,9 +2603,9 @@ hpux9* | hpux10* | hpux11*)
dynamic_linker="$host_os dld.so"
shlibpath_var=LD_LIBRARY_PATH
shlibpath_overrides_runpath=yes # Unless +noenvvar is specified.
- library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
- soname_spec='${libname}${release}${shared_ext}$major'
- if test "X$HPUX_IA64_MODE" = X32; then
+ library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext'
+ soname_spec='$libname$release$shared_ext$major'
+ if test 32 = "$HPUX_IA64_MODE"; then
sys_lib_search_path_spec="/usr/lib/hpux32 /usr/local/lib/hpux32 /usr/local/lib"
else
sys_lib_search_path_spec="/usr/lib/hpux64 /usr/local/lib/hpux64"
@@ -2564,8 +2618,8 @@ hpux9* | hpux10* | hpux11*)
dynamic_linker="$host_os dld.sl"
shlibpath_var=LD_LIBRARY_PATH # How should we handle SHLIB_PATH
shlibpath_overrides_runpath=yes # Unless +noenvvar is specified.
- library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
- soname_spec='${libname}${release}${shared_ext}$major'
+ library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext'
+ soname_spec='$libname$release$shared_ext$major'
sys_lib_search_path_spec="/usr/lib/pa20_64 /usr/ccs/lib/pa20_64"
sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec
;;
@@ -2574,8 +2628,8 @@ hpux9* | hpux10* | hpux11*)
dynamic_linker="$host_os dld.sl"
shlibpath_var=SHLIB_PATH
shlibpath_overrides_runpath=no # +s is required to enable SHLIB_PATH
- library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
- soname_spec='${libname}${release}${shared_ext}$major'
+ library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext'
+ soname_spec='$libname$release$shared_ext$major'
;;
esac
# HP-UX runs *really* slowly unless shared libraries are mode 555, ...
@@ -2588,8 +2642,8 @@ interix[[3-9]]*)
version_type=linux # correct to gnu/linux during the next big refactor
need_lib_prefix=no
need_version=no
- library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}'
- soname_spec='${libname}${release}${shared_ext}$major'
+ library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext'
+ soname_spec='$libname$release$shared_ext$major'
dynamic_linker='Interix 3.x ld.so.1 (PE, like ELF)'
shlibpath_var=LD_LIBRARY_PATH
shlibpath_overrides_runpath=no
@@ -2600,7 +2654,7 @@ irix5* | irix6* | nonstopux*)
case $host_os in
nonstopux*) version_type=nonstopux ;;
*)
- if test "$lt_cv_prog_gnu_ld" = yes; then
+ if test yes = "$lt_cv_prog_gnu_ld"; then
version_type=linux # correct to gnu/linux during the next big refactor
else
version_type=irix
@@ -2608,8 +2662,8 @@ irix5* | irix6* | nonstopux*)
esac
need_lib_prefix=no
need_version=no
- soname_spec='${libname}${release}${shared_ext}$major'
- library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext} $libname${shared_ext}'
+ soname_spec='$libname$release$shared_ext$major'
+ library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$release$shared_ext $libname$shared_ext'
case $host_os in
irix5* | nonstopux*)
libsuff= shlibsuff=
@@ -2628,8 +2682,8 @@ irix5* | irix6* | nonstopux*)
esac
shlibpath_var=LD_LIBRARY${shlibsuff}_PATH
shlibpath_overrides_runpath=no
- sys_lib_search_path_spec="/usr/lib${libsuff} /lib${libsuff} /usr/local/lib${libsuff}"
- sys_lib_dlsearch_path_spec="/usr/lib${libsuff} /lib${libsuff}"
+ sys_lib_search_path_spec="/usr/lib$libsuff /lib$libsuff /usr/local/lib$libsuff"
+ sys_lib_dlsearch_path_spec="/usr/lib$libsuff /lib$libsuff"
hardcode_into_libs=yes
;;
@@ -2638,13 +2692,33 @@ linux*oldld* | linux*aout* | linux*coff*)
dynamic_linker=no
;;
+linux*android*)
+ version_type=none # Android doesn't support versioned libraries.
+ need_lib_prefix=no
+ need_version=no
+ library_names_spec='$libname$release$shared_ext'
+ soname_spec='$libname$release$shared_ext'
+ finish_cmds=
+ shlibpath_var=LD_LIBRARY_PATH
+ shlibpath_overrides_runpath=yes
+
+ # This implies no fast_install, which is unacceptable.
+ # Some rework will be needed to allow for fast_install
+ # before this can be enabled.
+ hardcode_into_libs=yes
+
+ dynamic_linker='Android linker'
+ # Don't embed -rpath directories since the linker doesn't support them.
+ _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir'
+ ;;
+
# This must be glibc/ELF.
-linux* | k*bsd*-gnu | kopensolaris*-gnu)
+linux* | k*bsd*-gnu | kopensolaris*-gnu | gnu*)
version_type=linux # correct to gnu/linux during the next big refactor
need_lib_prefix=no
need_version=no
- library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
- soname_spec='${libname}${release}${shared_ext}$major'
+ library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext'
+ soname_spec='$libname$release$shared_ext$major'
finish_cmds='PATH="\$PATH:/sbin" ldconfig -n $libdir'
shlibpath_var=LD_LIBRARY_PATH
shlibpath_overrides_runpath=no
@@ -2669,14 +2743,10 @@ linux* | k*bsd*-gnu | kopensolaris*-gnu)
# before this can be enabled.
hardcode_into_libs=yes
- # Add ABI-specific directories to the system library path.
- sys_lib_dlsearch_path_spec="/lib64 /usr/lib64 /lib /usr/lib"
-
# Append ld.so.conf contents to the search path
if test -f /etc/ld.so.conf; then
lt_ld_extra=`awk '/^include / { system(sprintf("cd /etc; cat %s 2>/dev/null", \[$]2)); skip = 1; } { if (!skip) print \[$]0; skip = 0; }' < /etc/ld.so.conf | $SED -e 's/#.*//;/^[ ]*hwcap[ ]/d;s/[:, ]/ /g;s/=[^=]*$//;s/=[^= ]* / /g;s/"//g;/^$/d' | tr '\n' ' '`
- sys_lib_dlsearch_path_spec="$sys_lib_dlsearch_path_spec $lt_ld_extra"
-
+ sys_lib_dlsearch_path_spec="/lib /usr/lib $lt_ld_extra"
fi
# We used to test for /lib/ld.so.1 and disable shared libraries on
@@ -2693,12 +2763,12 @@ netbsd*)
need_lib_prefix=no
need_version=no
if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then
- library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix'
+ library_names_spec='$libname$release$shared_ext$versuffix $libname$shared_ext$versuffix'
finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir'
dynamic_linker='NetBSD (a.out) ld.so'
else
- library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}'
- soname_spec='${libname}${release}${shared_ext}$major'
+ library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext'
+ soname_spec='$libname$release$shared_ext$major'
dynamic_linker='NetBSD ld.elf_so'
fi
shlibpath_var=LD_LIBRARY_PATH
@@ -2708,7 +2778,7 @@ netbsd*)
newsos6)
version_type=linux # correct to gnu/linux during the next big refactor
- library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+ library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext'
shlibpath_var=LD_LIBRARY_PATH
shlibpath_overrides_runpath=yes
;;
@@ -2717,45 +2787,34 @@ newsos6)
version_type=qnx
need_lib_prefix=no
need_version=no
- library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
- soname_spec='${libname}${release}${shared_ext}$major'
+ library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext'
+ soname_spec='$libname$release$shared_ext$major'
shlibpath_var=LD_LIBRARY_PATH
shlibpath_overrides_runpath=no
hardcode_into_libs=yes
dynamic_linker='ldqnx.so'
;;
-openbsd*)
+openbsd* | bitrig*)
version_type=sunos
- sys_lib_dlsearch_path_spec="/usr/lib"
+ sys_lib_dlsearch_path_spec=/usr/lib
need_lib_prefix=no
- # Some older versions of OpenBSD (3.3 at least) *do* need versioned libs.
- case $host_os in
- openbsd3.3 | openbsd3.3.*) need_version=yes ;;
- *) need_version=no ;;
- esac
- library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix'
- finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir'
- shlibpath_var=LD_LIBRARY_PATH
- if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then
- case $host_os in
- openbsd2.[[89]] | openbsd2.[[89]].*)
- shlibpath_overrides_runpath=no
- ;;
- *)
- shlibpath_overrides_runpath=yes
- ;;
- esac
+ if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`"; then
+ need_version=no
else
- shlibpath_overrides_runpath=yes
+ need_version=yes
fi
+ library_names_spec='$libname$release$shared_ext$versuffix $libname$shared_ext$versuffix'
+ finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir'
+ shlibpath_var=LD_LIBRARY_PATH
+ shlibpath_overrides_runpath=yes
;;
os2*)
libname_spec='$name'
- shrext_cmds=".dll"
+ shrext_cmds=.dll
need_lib_prefix=no
- library_names_spec='$libname${shared_ext} $libname.a'
+ library_names_spec='$libname$shared_ext $libname.a'
dynamic_linker='OS/2 ld.exe'
shlibpath_var=LIBPATH
;;
@@ -2764,11 +2823,11 @@ osf3* | osf4* | osf5*)
version_type=osf
need_lib_prefix=no
need_version=no
- soname_spec='${libname}${release}${shared_ext}$major'
- library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+ soname_spec='$libname$release$shared_ext$major'
+ library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext'
shlibpath_var=LD_LIBRARY_PATH
sys_lib_search_path_spec="/usr/shlib /usr/ccs/lib /usr/lib/cmplrs/cc /usr/lib /usr/local/lib /var/shlib"
- sys_lib_dlsearch_path_spec="$sys_lib_search_path_spec"
+ sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec
;;
rdos*)
@@ -2779,8 +2838,8 @@ solaris*)
version_type=linux # correct to gnu/linux during the next big refactor
need_lib_prefix=no
need_version=no
- library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
- soname_spec='${libname}${release}${shared_ext}$major'
+ library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext'
+ soname_spec='$libname$release$shared_ext$major'
shlibpath_var=LD_LIBRARY_PATH
shlibpath_overrides_runpath=yes
hardcode_into_libs=yes
@@ -2790,11 +2849,11 @@ solaris*)
sunos4*)
version_type=sunos
- library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix'
+ library_names_spec='$libname$release$shared_ext$versuffix $libname$shared_ext$versuffix'
finish_cmds='PATH="\$PATH:/usr/etc" ldconfig $libdir'
shlibpath_var=LD_LIBRARY_PATH
shlibpath_overrides_runpath=yes
- if test "$with_gnu_ld" = yes; then
+ if test yes = "$with_gnu_ld"; then
need_lib_prefix=no
fi
need_version=yes
@@ -2802,8 +2861,8 @@ sunos4*)
sysv4 | sysv4.3*)
version_type=linux # correct to gnu/linux during the next big refactor
- library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
- soname_spec='${libname}${release}${shared_ext}$major'
+ library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext'
+ soname_spec='$libname$release$shared_ext$major'
shlibpath_var=LD_LIBRARY_PATH
case $host_vendor in
sni)
@@ -2824,10 +2883,10 @@ sysv4 | sysv4.3*)
;;
sysv4*MP*)
- if test -d /usr/nec ;then
+ if test -d /usr/nec; then
version_type=linux # correct to gnu/linux during the next big refactor
- library_names_spec='$libname${shared_ext}.$versuffix $libname${shared_ext}.$major $libname${shared_ext}'
- soname_spec='$libname${shared_ext}.$major'
+ library_names_spec='$libname$shared_ext.$versuffix $libname$shared_ext.$major $libname$shared_ext'
+ soname_spec='$libname$shared_ext.$major'
shlibpath_var=LD_LIBRARY_PATH
fi
;;
@@ -2836,12 +2895,12 @@ sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX* | sysv4*uw2*)
version_type=freebsd-elf
need_lib_prefix=no
need_version=no
- library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext} $libname${shared_ext}'
- soname_spec='${libname}${release}${shared_ext}$major'
+ library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext $libname$shared_ext'
+ soname_spec='$libname$release$shared_ext$major'
shlibpath_var=LD_LIBRARY_PATH
shlibpath_overrides_runpath=yes
hardcode_into_libs=yes
- if test "$with_gnu_ld" = yes; then
+ if test yes = "$with_gnu_ld"; then
sys_lib_search_path_spec='/usr/local/lib /usr/gnu/lib /usr/ccs/lib /usr/lib /lib'
else
sys_lib_search_path_spec='/usr/ccs/lib /usr/lib'
@@ -2859,7 +2918,7 @@ tpf*)
version_type=linux # correct to gnu/linux during the next big refactor
need_lib_prefix=no
need_version=no
- library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+ library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext'
shlibpath_var=LD_LIBRARY_PATH
shlibpath_overrides_runpath=no
hardcode_into_libs=yes
@@ -2867,8 +2926,8 @@ tpf*)
uts4*)
version_type=linux # correct to gnu/linux during the next big refactor
- library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
- soname_spec='${libname}${release}${shared_ext}$major'
+ library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext'
+ soname_spec='$libname$release$shared_ext$major'
shlibpath_var=LD_LIBRARY_PATH
;;
@@ -2877,18 +2936,18 @@ uts4*)
;;
esac
AC_MSG_RESULT([$dynamic_linker])
-test "$dynamic_linker" = no && can_build_shared=no
+test no = "$dynamic_linker" && can_build_shared=no
variables_saved_for_relink="PATH $shlibpath_var $runpath_var"
-if test "$GCC" = yes; then
+if test yes = "$GCC"; then
variables_saved_for_relink="$variables_saved_for_relink GCC_EXEC_PREFIX COMPILER_PATH LIBRARY_PATH"
fi
-if test "${lt_cv_sys_lib_search_path_spec+set}" = set; then
- sys_lib_search_path_spec="$lt_cv_sys_lib_search_path_spec"
+if test set = "${lt_cv_sys_lib_search_path_spec+set}"; then
+ sys_lib_search_path_spec=$lt_cv_sys_lib_search_path_spec
fi
-if test "${lt_cv_sys_lib_dlsearch_path_spec+set}" = set; then
- sys_lib_dlsearch_path_spec="$lt_cv_sys_lib_dlsearch_path_spec"
+if test set = "${lt_cv_sys_lib_dlsearch_path_spec+set}"; then
+ sys_lib_dlsearch_path_spec=$lt_cv_sys_lib_dlsearch_path_spec
fi
_LT_DECL([], [variables_saved_for_relink], [1],
@@ -2930,32 +2989,32 @@ _LT_DECL([], [sys_lib_dlsearch_path_spec], [2],
# _LT_PATH_TOOL_PREFIX(TOOL)
# --------------------------
-# find a file program which can recognize shared library
+# find a file program that can recognize shared library
AC_DEFUN([_LT_PATH_TOOL_PREFIX],
[m4_require([_LT_DECL_EGREP])dnl
AC_MSG_CHECKING([for $1])
AC_CACHE_VAL(lt_cv_path_MAGIC_CMD,
[case $MAGIC_CMD in
[[\\/*] | ?:[\\/]*])
- lt_cv_path_MAGIC_CMD="$MAGIC_CMD" # Let the user override the test with a path.
+ lt_cv_path_MAGIC_CMD=$MAGIC_CMD # Let the user override the test with a path.
;;
*)
- lt_save_MAGIC_CMD="$MAGIC_CMD"
- lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR
+ lt_save_MAGIC_CMD=$MAGIC_CMD
+ lt_save_ifs=$IFS; IFS=$PATH_SEPARATOR
dnl $ac_dummy forces splitting on constant user-supplied paths.
dnl POSIX.2 word splitting is done only on the output of word expansions,
dnl not every word. This closes a longstanding sh security hole.
ac_dummy="m4_if([$2], , $PATH, [$2])"
for ac_dir in $ac_dummy; do
- IFS="$lt_save_ifs"
+ IFS=$lt_save_ifs
test -z "$ac_dir" && ac_dir=.
- if test -f $ac_dir/$1; then
- lt_cv_path_MAGIC_CMD="$ac_dir/$1"
+ if test -f "$ac_dir/$1"; then
+ lt_cv_path_MAGIC_CMD=$ac_dir/"$1"
if test -n "$file_magic_test_file"; then
case $deplibs_check_method in
"file_magic "*)
file_magic_regex=`expr "$deplibs_check_method" : "file_magic \(.*\)"`
- MAGIC_CMD="$lt_cv_path_MAGIC_CMD"
+ MAGIC_CMD=$lt_cv_path_MAGIC_CMD
if eval $file_magic_cmd \$file_magic_test_file 2> /dev/null |
$EGREP "$file_magic_regex" > /dev/null; then
:
@@ -2978,11 +3037,11 @@ _LT_EOF
break
fi
done
- IFS="$lt_save_ifs"
- MAGIC_CMD="$lt_save_MAGIC_CMD"
+ IFS=$lt_save_ifs
+ MAGIC_CMD=$lt_save_MAGIC_CMD
;;
esac])
-MAGIC_CMD="$lt_cv_path_MAGIC_CMD"
+MAGIC_CMD=$lt_cv_path_MAGIC_CMD
if test -n "$MAGIC_CMD"; then
AC_MSG_RESULT($MAGIC_CMD)
else
@@ -3000,7 +3059,7 @@ dnl AC_DEFUN([AC_PATH_TOOL_PREFIX], [])
# _LT_PATH_MAGIC
# --------------
-# find a file program which can recognize a shared library
+# find a file program that can recognize a shared library
m4_defun([_LT_PATH_MAGIC],
[_LT_PATH_TOOL_PREFIX(${ac_tool_prefix}file, /usr/bin$PATH_SEPARATOR$PATH)
if test -z "$lt_cv_path_MAGIC_CMD"; then
@@ -3027,16 +3086,16 @@ m4_require([_LT_PROG_ECHO_BACKSLASH])dnl
AC_ARG_WITH([gnu-ld],
[AS_HELP_STRING([--with-gnu-ld],
[assume the C compiler uses GNU ld @<:@default=no@:>@])],
- [test "$withval" = no || with_gnu_ld=yes],
+ [test no = "$withval" || with_gnu_ld=yes],
[with_gnu_ld=no])dnl
ac_prog=ld
-if test "$GCC" = yes; then
+if test yes = "$GCC"; then
# Check if gcc -print-prog-name=ld gives a path.
AC_MSG_CHECKING([for ld used by $CC])
case $host in
*-*-mingw*)
- # gcc leaves a trailing carriage return which upsets mingw
+ # gcc leaves a trailing carriage return, which upsets mingw
ac_prog=`($CC -print-prog-name=ld) 2>&5 | tr -d '\015'` ;;
*)
ac_prog=`($CC -print-prog-name=ld) 2>&5` ;;
@@ -3050,7 +3109,7 @@ if test "$GCC" = yes; then
while $ECHO "$ac_prog" | $GREP "$re_direlt" > /dev/null 2>&1; do
ac_prog=`$ECHO $ac_prog| $SED "s%$re_direlt%/%"`
done
- test -z "$LD" && LD="$ac_prog"
+ test -z "$LD" && LD=$ac_prog
;;
"")
# If it fails, then pretend we aren't using GCC.
@@ -3061,37 +3120,37 @@ if test "$GCC" = yes; then
with_gnu_ld=unknown
;;
esac
-elif test "$with_gnu_ld" = yes; then
+elif test yes = "$with_gnu_ld"; then
AC_MSG_CHECKING([for GNU ld])
else
AC_MSG_CHECKING([for non-GNU ld])
fi
AC_CACHE_VAL(lt_cv_path_LD,
[if test -z "$LD"; then
- lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR
+ lt_save_ifs=$IFS; IFS=$PATH_SEPARATOR
for ac_dir in $PATH; do
- IFS="$lt_save_ifs"
+ IFS=$lt_save_ifs
test -z "$ac_dir" && ac_dir=.
if test -f "$ac_dir/$ac_prog" || test -f "$ac_dir/$ac_prog$ac_exeext"; then
- lt_cv_path_LD="$ac_dir/$ac_prog"
+ lt_cv_path_LD=$ac_dir/$ac_prog
# Check to see if the program is GNU ld. I'd rather use --version,
# but apparently some variants of GNU ld only accept -v.
# Break only if it was the GNU/non-GNU ld that we prefer.
case `"$lt_cv_path_LD" -v 2>&1 </dev/null` in
*GNU* | *'with BFD'*)
- test "$with_gnu_ld" != no && break
+ test no != "$with_gnu_ld" && break
;;
*)
- test "$with_gnu_ld" != yes && break
+ test yes != "$with_gnu_ld" && break
;;
esac
fi
done
- IFS="$lt_save_ifs"
+ IFS=$lt_save_ifs
else
- lt_cv_path_LD="$LD" # Let the user override the test with a path.
+ lt_cv_path_LD=$LD # Let the user override the test with a path.
fi])
-LD="$lt_cv_path_LD"
+LD=$lt_cv_path_LD
if test -n "$LD"; then
AC_MSG_RESULT($LD)
else
@@ -3145,13 +3204,13 @@ esac
reload_cmds='$LD$reload_flag -o $output$reload_objs'
case $host_os in
cygwin* | mingw* | pw32* | cegcc*)
- if test "$GCC" != yes; then
+ if test yes != "$GCC"; then
reload_cmds=false
fi
;;
darwin*)
- if test "$GCC" = yes; then
- reload_cmds='$LTCC $LTCFLAGS -nostdlib ${wl}-r -o $output$reload_objs'
+ if test yes = "$GCC"; then
+ reload_cmds='$LTCC $LTCFLAGS -nostdlib $wl-r -o $output$reload_objs'
else
reload_cmds='$LD$reload_flag -o $output$reload_objs'
fi
@@ -3177,13 +3236,13 @@ lt_cv_deplibs_check_method='unknown'
# Need to set the preceding variable on all platforms that support
# interlibrary dependencies.
# 'none' -- dependencies not supported.
-# `unknown' -- same as none, but documents that we really don't know.
+# 'unknown' -- same as none, but documents that we really don't know.
# 'pass_all' -- all dependencies passed with no checks.
# 'test_compile' -- check by making test program.
# 'file_magic [[regex]]' -- check by looking for files in library path
-# which responds to the $file_magic_cmd with a given extended regex.
-# If you have `file' or equivalent on your system and you're not sure
-# whether `pass_all' will *always* work, you probably want this one.
+# that responds to the $file_magic_cmd with a given extended regex.
+# If you have 'file' or equivalent on your system and you're not sure
+# whether 'pass_all' will *always* work, you probably want this one.
case $host_os in
aix[[4-9]]*)
@@ -3210,8 +3269,7 @@ mingw* | pw32*)
# Base MSYS/MinGW do not provide the 'file' command needed by
# func_win32_libid shell function, so use a weaker test based on 'objdump',
# unless we find 'file', for example because we are cross-compiling.
- # func_win32_libid assumes BSD nm, so disallow it if using MS dumpbin.
- if ( test "$lt_cv_nm_interface" = "BSD nm" && file / ) >/dev/null 2>&1; then
+ if ( file / ) >/dev/null 2>&1; then
lt_cv_deplibs_check_method='file_magic ^x86 archive import|^x86 DLL'
lt_cv_file_magic_cmd='func_win32_libid'
else
@@ -3247,10 +3305,6 @@ freebsd* | dragonfly*)
fi
;;
-gnu*)
- lt_cv_deplibs_check_method=pass_all
- ;;
-
haiku*)
lt_cv_deplibs_check_method=pass_all
;;
@@ -3289,7 +3343,7 @@ irix5* | irix6* | nonstopux*)
;;
# This must be glibc/ELF.
-linux* | k*bsd*-gnu | kopensolaris*-gnu)
+linux* | k*bsd*-gnu | kopensolaris*-gnu | gnu*)
lt_cv_deplibs_check_method=pass_all
;;
@@ -3311,8 +3365,8 @@ newos6*)
lt_cv_deplibs_check_method=pass_all
;;
-openbsd*)
- if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then
+openbsd* | bitrig*)
+ if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`"; then
lt_cv_deplibs_check_method='match_pattern /lib[[^/]]+(\.so\.[[0-9]]+\.[[0-9]]+|\.so|_pic\.a)$'
else
lt_cv_deplibs_check_method='match_pattern /lib[[^/]]+(\.so\.[[0-9]]+\.[[0-9]]+|_pic\.a)$'
@@ -3405,33 +3459,33 @@ AC_DEFUN([LT_PATH_NM],
AC_CACHE_CHECK([for BSD- or MS-compatible name lister (nm)], lt_cv_path_NM,
[if test -n "$NM"; then
# Let the user override the test.
- lt_cv_path_NM="$NM"
+ lt_cv_path_NM=$NM
else
- lt_nm_to_check="${ac_tool_prefix}nm"
+ lt_nm_to_check=${ac_tool_prefix}nm
if test -n "$ac_tool_prefix" && test "$build" = "$host"; then
lt_nm_to_check="$lt_nm_to_check nm"
fi
for lt_tmp_nm in $lt_nm_to_check; do
- lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR
+ lt_save_ifs=$IFS; IFS=$PATH_SEPARATOR
for ac_dir in $PATH /usr/ccs/bin/elf /usr/ccs/bin /usr/ucb /bin; do
- IFS="$lt_save_ifs"
+ IFS=$lt_save_ifs
test -z "$ac_dir" && ac_dir=.
- tmp_nm="$ac_dir/$lt_tmp_nm"
- if test -f "$tmp_nm" || test -f "$tmp_nm$ac_exeext" ; then
+ tmp_nm=$ac_dir/$lt_tmp_nm
+ if test -f "$tmp_nm" || test -f "$tmp_nm$ac_exeext"; then
# Check to see if the nm accepts a BSD-compat flag.
- # Adding the `sed 1q' prevents false positives on HP-UX, which says:
+ # Adding the 'sed 1q' prevents false positives on HP-UX, which says:
# nm: unknown option "B" ignored
# Tru64's nm complains that /dev/null is an invalid object file
case `"$tmp_nm" -B /dev/null 2>&1 | sed '1q'` in
*/dev/null* | *'Invalid file or object type'*)
lt_cv_path_NM="$tmp_nm -B"
- break
+ break 2
;;
*)
case `"$tmp_nm" -p /dev/null 2>&1 | sed '1q'` in
*/dev/null*)
lt_cv_path_NM="$tmp_nm -p"
- break
+ break 2
;;
*)
lt_cv_path_NM=${lt_cv_path_NM="$tmp_nm"} # keep the first match, but
@@ -3442,21 +3496,21 @@ else
esac
fi
done
- IFS="$lt_save_ifs"
+ IFS=$lt_save_ifs
done
: ${lt_cv_path_NM=no}
fi])
-if test "$lt_cv_path_NM" != "no"; then
- NM="$lt_cv_path_NM"
+if test no != "$lt_cv_path_NM"; then
+ NM=$lt_cv_path_NM
else
# Didn't find any BSD compatible name lister, look for dumpbin.
if test -n "$DUMPBIN"; then :
# Let the user override the test.
else
AC_CHECK_TOOLS(DUMPBIN, [dumpbin "link -dump"], :)
- case `$DUMPBIN -symbols /dev/null 2>&1 | sed '1q'` in
+ case `$DUMPBIN -symbols -headers /dev/null 2>&1 | sed '1q'` in
*COFF*)
- DUMPBIN="$DUMPBIN -symbols"
+ DUMPBIN="$DUMPBIN -symbols -headers"
;;
*)
DUMPBIN=:
@@ -3464,8 +3518,8 @@ else
esac
fi
AC_SUBST([DUMPBIN])
- if test "$DUMPBIN" != ":"; then
- NM="$DUMPBIN"
+ if test : != "$DUMPBIN"; then
+ NM=$DUMPBIN
fi
fi
test -z "$NM" && NM=nm
@@ -3511,8 +3565,8 @@ lt_cv_sharedlib_from_linklib_cmd,
case $host_os in
cygwin* | mingw* | pw32* | cegcc*)
- # two different shell functions defined in ltmain.sh
- # decide which to use based on capabilities of $DLLTOOL
+ # two different shell functions defined in ltmain.sh;
+ # decide which one to use based on capabilities of $DLLTOOL
case `$DLLTOOL --help 2>&1` in
*--identify-strict*)
lt_cv_sharedlib_from_linklib_cmd=func_cygming_dll_for_implib
@@ -3524,7 +3578,7 @@ cygwin* | mingw* | pw32* | cegcc*)
;;
*)
# fallback: assume linklib IS sharedlib
- lt_cv_sharedlib_from_linklib_cmd="$ECHO"
+ lt_cv_sharedlib_from_linklib_cmd=$ECHO
;;
esac
])
@@ -3551,13 +3605,28 @@ AC_CACHE_CHECK([if $MANIFEST_TOOL is a manifest tool], [lt_cv_path_mainfest_tool
lt_cv_path_mainfest_tool=yes
fi
rm -f conftest*])
-if test "x$lt_cv_path_mainfest_tool" != xyes; then
+if test yes != "$lt_cv_path_mainfest_tool"; then
MANIFEST_TOOL=:
fi
_LT_DECL([], [MANIFEST_TOOL], [1], [Manifest tool])dnl
])# _LT_PATH_MANIFEST_TOOL
+# _LT_DLL_DEF_P([FILE])
+# ---------------------
+# True iff FILE is a Windows DLL '.def' file.
+# Keep in sync with func_dll_def_p in the libtool script
+AC_DEFUN([_LT_DLL_DEF_P],
+[dnl
+ test DEF = "`$SED -n dnl
+ -e '\''s/^[[ ]]*//'\'' dnl Strip leading whitespace
+ -e '\''/^\(;.*\)*$/d'\'' dnl Delete empty lines and comments
+ -e '\''s/^\(EXPORTS\|LIBRARY\)\([[ ]].*\)*$/DEF/p'\'' dnl
+ -e q dnl Only consider the first "real" line
+ $1`" dnl
+])# _LT_DLL_DEF_P
+
+
# LT_LIB_M
# --------
# check for math library
@@ -3569,11 +3638,11 @@ case $host in
# These system don't have libm, or don't need it
;;
*-ncr-sysv4.3*)
- AC_CHECK_LIB(mw, _mwvalidcheckl, LIBM="-lmw")
+ AC_CHECK_LIB(mw, _mwvalidcheckl, LIBM=-lmw)
AC_CHECK_LIB(m, cos, LIBM="$LIBM -lm")
;;
*)
- AC_CHECK_LIB(m, cos, LIBM="-lm")
+ AC_CHECK_LIB(m, cos, LIBM=-lm)
;;
esac
AC_SUBST([LIBM])
@@ -3592,7 +3661,7 @@ m4_defun([_LT_COMPILER_NO_RTTI],
_LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)=
-if test "$GCC" = yes; then
+if test yes = "$GCC"; then
case $cc_basename in
nvcc*)
_LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)=' -Xcompiler -fno-builtin' ;;
@@ -3644,7 +3713,7 @@ cygwin* | mingw* | pw32* | cegcc*)
symcode='[[ABCDGISTW]]'
;;
hpux*)
- if test "$host_cpu" = ia64; then
+ if test ia64 = "$host_cpu"; then
symcode='[[ABCDEGRST]]'
fi
;;
@@ -3677,14 +3746,44 @@ case `$NM -V 2>&1` in
symcode='[[ABCDGIRSTW]]' ;;
esac
+if test "$lt_cv_nm_interface" = "MS dumpbin"; then
+ # Gets list of data symbols to import.
+ lt_cv_sys_global_symbol_to_import="sed -n -e 's/^I .* \(.*\)$/\1/p'"
+ # Adjust the below global symbol transforms to fixup imported variables.
+ lt_cdecl_hook=" -e 's/^I .* \(.*\)$/extern __declspec(dllimport) char \1;/p'"
+ lt_c_name_hook=" -e 's/^I .* \(.*\)$/ {\"\1\", (void *) 0},/p'"
+ lt_c_name_lib_hook="\
+ -e 's/^I .* \(lib.*\)$/ {\"\1\", (void *) 0},/p'\
+ -e 's/^I .* \(.*\)$/ {\"lib\1\", (void *) 0},/p'"
+else
+ # Disable hooks by default.
+ lt_cv_sys_global_symbol_to_import=
+ lt_cdecl_hook=
+ lt_c_name_hook=
+ lt_c_name_lib_hook=
+fi
+
# Transform an extracted symbol line into a proper C declaration.
# Some systems (esp. on ia64) link data and code symbols differently,
# so use this general approach.
-lt_cv_sys_global_symbol_to_cdecl="sed -n -e 's/^T .* \(.*\)$/extern int \1();/p' -e 's/^$symcode* .* \(.*\)$/extern char \1;/p'"
+lt_cv_sys_global_symbol_to_cdecl="sed -n"\
+$lt_cdecl_hook\
+" -e 's/^T .* \(.*\)$/extern int \1();/p'"\
+" -e 's/^$symcode$symcode* .* \(.*\)$/extern char \1;/p'"
# Transform an extracted symbol line into symbol name and symbol address
-lt_cv_sys_global_symbol_to_c_name_address="sed -n -e 's/^: \([[^ ]]*\)[[ ]]*$/ {\\\"\1\\\", (void *) 0},/p' -e 's/^$symcode* \([[^ ]]*\) \([[^ ]]*\)$/ {\"\2\", (void *) \&\2},/p'"
-lt_cv_sys_global_symbol_to_c_name_address_lib_prefix="sed -n -e 's/^: \([[^ ]]*\)[[ ]]*$/ {\\\"\1\\\", (void *) 0},/p' -e 's/^$symcode* \([[^ ]]*\) \(lib[[^ ]]*\)$/ {\"\2\", (void *) \&\2},/p' -e 's/^$symcode* \([[^ ]]*\) \([[^ ]]*\)$/ {\"lib\2\", (void *) \&\2},/p'"
+lt_cv_sys_global_symbol_to_c_name_address="sed -n"\
+$lt_c_name_hook\
+" -e 's/^: \(.*\) .*$/ {\"\1\", (void *) 0},/p'"\
+" -e 's/^$symcode$symcode* .* \(.*\)$/ {\"\1\", (void *) \&\1},/p'"
+
+# Transform an extracted symbol line into symbol name with lib prefix and
+# symbol address.
+lt_cv_sys_global_symbol_to_c_name_address_lib_prefix="sed -n"\
+$lt_c_name_lib_hook\
+" -e 's/^: \(.*\) .*$/ {\"\1\", (void *) 0},/p'"\
+" -e 's/^$symcode$symcode* .* \(lib.*\)$/ {\"\1\", (void *) \&\1},/p'"\
+" -e 's/^$symcode$symcode* .* \(.*\)$/ {\"lib\1\", (void *) \&\1},/p'"
# Handle CRLF in mingw tool chain
opt_cr=
@@ -3702,21 +3801,24 @@ for ac_symprfx in "" "_"; do
# Write the raw and C identifiers.
if test "$lt_cv_nm_interface" = "MS dumpbin"; then
- # Fake it for dumpbin and say T for any non-static function
- # and D for any global variable.
+ # Fake it for dumpbin and say T for any non-static function,
+ # D for any global variable and I for any imported variable.
# Also find C++ and __fastcall symbols from MSVC++,
# which start with @ or ?.
lt_cv_sys_global_symbol_pipe="$AWK ['"\
" {last_section=section; section=\$ 3};"\
" /^COFF SYMBOL TABLE/{for(i in hide) delete hide[i]};"\
" /Section length .*#relocs.*(pick any)/{hide[last_section]=1};"\
+" /^ *Symbol name *: /{split(\$ 0,sn,\":\"); si=substr(sn[2],2)};"\
+" /^ *Type *: code/{print \"T\",si,substr(si,length(prfx))};"\
+" /^ *Type *: data/{print \"I\",si,substr(si,length(prfx))};"\
" \$ 0!~/External *\|/{next};"\
" / 0+ UNDEF /{next}; / UNDEF \([^|]\)*()/{next};"\
" {if(hide[section]) next};"\
-" {f=0}; \$ 0~/\(\).*\|/{f=1}; {printf f ? \"T \" : \"D \"};"\
-" {split(\$ 0, a, /\||\r/); split(a[2], s)};"\
-" s[1]~/^[@?]/{print s[1], s[1]; next};"\
-" s[1]~prfx {split(s[1],t,\"@\"); print t[1], substr(t[1],length(prfx))}"\
+" {f=\"D\"}; \$ 0~/\(\).*\|/{f=\"T\"};"\
+" {split(\$ 0,a,/\||\r/); split(a[2],s)};"\
+" s[1]~/^[@?]/{print f,s[1],s[1]; next};"\
+" s[1]~prfx {split(s[1],t,\"@\"); print f,t[1],substr(t[1],length(prfx))}"\
" ' prfx=^$ac_symprfx]"
else
lt_cv_sys_global_symbol_pipe="sed -n -e 's/^.*[[ ]]\($symcode$symcode*\)[[ ]][[ ]]*$ac_symprfx$sympat$opt_cr$/$symxfrm/p'"
@@ -3756,11 +3858,11 @@ _LT_EOF
if $GREP ' nm_test_func$' "$nlist" >/dev/null; then
cat <<_LT_EOF > conftest.$ac_ext
/* Keep this code in sync between libtool.m4, ltmain, lt_system.h, and tests. */
-#if defined(_WIN32) || defined(__CYGWIN__) || defined(_WIN32_WCE)
-/* DATA imports from DLLs on WIN32 con't be const, because runtime
+#if defined _WIN32 || defined __CYGWIN__ || defined _WIN32_WCE
+/* DATA imports from DLLs on WIN32 can't be const, because runtime
relocations are performed -- see ld's documentation on pseudo-relocs. */
# define LT@&t@_DLSYM_CONST
-#elif defined(__osf__)
+#elif defined __osf__
/* This system does not cope well with relocations in const data. */
# define LT@&t@_DLSYM_CONST
#else
@@ -3786,7 +3888,7 @@ lt__PROGRAM__LTX_preloaded_symbols[[]] =
{
{ "@PROGRAM@", (void *) 0 },
_LT_EOF
- $SED "s/^$symcode$symcode* \(.*\) \(.*\)$/ {\"\2\", (void *) \&\2},/" < "$nlist" | $GREP -v main >> conftest.$ac_ext
+ $SED "s/^$symcode$symcode* .* \(.*\)$/ {\"\1\", (void *) \&\1},/" < "$nlist" | $GREP -v main >> conftest.$ac_ext
cat <<\_LT_EOF >> conftest.$ac_ext
{0, (void *) 0}
};
@@ -3806,9 +3908,9 @@ _LT_EOF
mv conftest.$ac_objext conftstm.$ac_objext
lt_globsym_save_LIBS=$LIBS
lt_globsym_save_CFLAGS=$CFLAGS
- LIBS="conftstm.$ac_objext"
+ LIBS=conftstm.$ac_objext
CFLAGS="$CFLAGS$_LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)"
- if AC_TRY_EVAL(ac_link) && test -s conftest${ac_exeext}; then
+ if AC_TRY_EVAL(ac_link) && test -s conftest$ac_exeext; then
pipe_works=yes
fi
LIBS=$lt_globsym_save_LIBS
@@ -3829,7 +3931,7 @@ _LT_EOF
rm -rf conftest* conftst*
# Do not use the global_symbol_pipe unless it works.
- if test "$pipe_works" = yes; then
+ if test yes = "$pipe_works"; then
break
else
lt_cv_sys_global_symbol_pipe=
@@ -3856,12 +3958,16 @@ _LT_DECL([global_symbol_pipe], [lt_cv_sys_global_symbol_pipe], [1],
[Take the output of nm and produce a listing of raw symbols and C names])
_LT_DECL([global_symbol_to_cdecl], [lt_cv_sys_global_symbol_to_cdecl], [1],
[Transform the output of nm in a proper C declaration])
+_LT_DECL([global_symbol_to_import], [lt_cv_sys_global_symbol_to_import], [1],
+ [Transform the output of nm into a list of symbols to manually relocate])
_LT_DECL([global_symbol_to_c_name_address],
[lt_cv_sys_global_symbol_to_c_name_address], [1],
[Transform the output of nm in a C name address pair])
_LT_DECL([global_symbol_to_c_name_address_lib_prefix],
[lt_cv_sys_global_symbol_to_c_name_address_lib_prefix], [1],
[Transform the output of nm in a C name address pair when lib prefix is needed])
+_LT_DECL([nm_interface], [lt_cv_nm_interface], [1],
+ [The name lister interface])
_LT_DECL([], [nm_file_list_spec], [1],
[Specify filename containing input files for $NM])
]) # _LT_CMD_GLOBAL_SYMBOLS
@@ -3877,17 +3983,18 @@ _LT_TAGVAR(lt_prog_compiler_static, $1)=
m4_if([$1], [CXX], [
# C++ specific cases for pic, static, wl, etc.
- if test "$GXX" = yes; then
+ if test yes = "$GXX"; then
_LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
_LT_TAGVAR(lt_prog_compiler_static, $1)='-static'
case $host_os in
aix*)
# All AIX code is PIC.
- if test "$host_cpu" = ia64; then
+ if test ia64 = "$host_cpu"; then
# AIX 5 now supports IA64 processor
_LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
fi
+ _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC'
;;
amigaos*)
@@ -3898,8 +4005,8 @@ m4_if([$1], [CXX], [
;;
m68k)
# FIXME: we need at least 68020 code to build shared libraries, but
- # adding the `-m68020' flag to GCC prevents building anything better,
- # like `-m68040'.
+ # adding the '-m68020' flag to GCC prevents building anything better,
+ # like '-m68040'.
_LT_TAGVAR(lt_prog_compiler_pic, $1)='-m68020 -resident32 -malways-restore-a4'
;;
esac
@@ -3964,7 +4071,7 @@ m4_if([$1], [CXX], [
case $host_os in
aix[[4-9]]*)
# All AIX code is PIC.
- if test "$host_cpu" = ia64; then
+ if test ia64 = "$host_cpu"; then
# AIX 5 now supports IA64 processor
_LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
else
@@ -4005,14 +4112,14 @@ m4_if([$1], [CXX], [
case $cc_basename in
CC*)
_LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
- _LT_TAGVAR(lt_prog_compiler_static, $1)='${wl}-a ${wl}archive'
- if test "$host_cpu" != ia64; then
+ _LT_TAGVAR(lt_prog_compiler_static, $1)='$wl-a ${wl}archive'
+ if test ia64 != "$host_cpu"; then
_LT_TAGVAR(lt_prog_compiler_pic, $1)='+Z'
fi
;;
aCC*)
_LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
- _LT_TAGVAR(lt_prog_compiler_static, $1)='${wl}-a ${wl}archive'
+ _LT_TAGVAR(lt_prog_compiler_static, $1)='$wl-a ${wl}archive'
case $host_cpu in
hppa*64*|ia64*)
# +Z the default
@@ -4041,7 +4148,7 @@ m4_if([$1], [CXX], [
;;
esac
;;
- linux* | k*bsd*-gnu | kopensolaris*-gnu)
+ linux* | k*bsd*-gnu | kopensolaris*-gnu | gnu*)
case $cc_basename in
KCC*)
# KAI C++ Compiler
@@ -4049,7 +4156,7 @@ m4_if([$1], [CXX], [
_LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC'
;;
ecpc* )
- # old Intel C++ for x86_64 which still supported -KPIC.
+ # old Intel C++ for x86_64, which still supported -KPIC.
_LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
_LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC'
_LT_TAGVAR(lt_prog_compiler_static, $1)='-static'
@@ -4194,17 +4301,18 @@ m4_if([$1], [CXX], [
fi
],
[
- if test "$GCC" = yes; then
+ if test yes = "$GCC"; then
_LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
_LT_TAGVAR(lt_prog_compiler_static, $1)='-static'
case $host_os in
aix*)
# All AIX code is PIC.
- if test "$host_cpu" = ia64; then
+ if test ia64 = "$host_cpu"; then
# AIX 5 now supports IA64 processor
_LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
fi
+ _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC'
;;
amigaos*)
@@ -4215,8 +4323,8 @@ m4_if([$1], [CXX], [
;;
m68k)
# FIXME: we need at least 68020 code to build shared libraries, but
- # adding the `-m68020' flag to GCC prevents building anything better,
- # like `-m68040'.
+ # adding the '-m68020' flag to GCC prevents building anything better,
+ # like '-m68040'.
_LT_TAGVAR(lt_prog_compiler_pic, $1)='-m68020 -resident32 -malways-restore-a4'
;;
esac
@@ -4303,7 +4411,7 @@ m4_if([$1], [CXX], [
case $host_os in
aix*)
_LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
- if test "$host_cpu" = ia64; then
+ if test ia64 = "$host_cpu"; then
# AIX 5 now supports IA64 processor
_LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
else
@@ -4311,6 +4419,20 @@ m4_if([$1], [CXX], [
fi
;;
+ darwin* | rhapsody*)
+ # PIC is the default on this platform
+ # Common symbols not allowed in MH_DYLIB files
+ _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fno-common'
+ case $cc_basename in
+ nagfor*)
+ # NAG Fortran compiler
+ _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,-Wl,,'
+ _LT_TAGVAR(lt_prog_compiler_pic, $1)='-PIC'
+ _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
+ ;;
+ esac
+ ;;
+
mingw* | cygwin* | pw32* | os2* | cegcc*)
# This hack is so that the source file can tell whether it is being
# built for inclusion in a dll (and should export symbols for example).
@@ -4331,7 +4453,7 @@ m4_if([$1], [CXX], [
;;
esac
# Is there a better lt_prog_compiler_static that works with the bundled CC?
- _LT_TAGVAR(lt_prog_compiler_static, $1)='${wl}-a ${wl}archive'
+ _LT_TAGVAR(lt_prog_compiler_static, $1)='$wl-a ${wl}archive'
;;
irix5* | irix6* | nonstopux*)
@@ -4340,9 +4462,9 @@ m4_if([$1], [CXX], [
_LT_TAGVAR(lt_prog_compiler_static, $1)='-non_shared'
;;
- linux* | k*bsd*-gnu | kopensolaris*-gnu)
+ linux* | k*bsd*-gnu | kopensolaris*-gnu | gnu*)
case $cc_basename in
- # old Intel for x86_64 which still supported -KPIC.
+ # old Intel for x86_64, which still supported -KPIC.
ecc*)
_LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
_LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC'
@@ -4367,6 +4489,12 @@ m4_if([$1], [CXX], [
_LT_TAGVAR(lt_prog_compiler_pic, $1)='-PIC'
_LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
;;
+ tcc*)
+ # Fabrice Bellard et al's Tiny C Compiler
+ _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
+ _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC'
+ _LT_TAGVAR(lt_prog_compiler_static, $1)='-static'
+ ;;
pgcc* | pgf77* | pgf90* | pgf95* | pgfortran*)
# Portland Group compilers (*not* the Pentium gcc compiler,
# which looks to be a dead project)
@@ -4464,7 +4592,7 @@ m4_if([$1], [CXX], [
;;
sysv4*MP*)
- if test -d /usr/nec ;then
+ if test -d /usr/nec; then
_LT_TAGVAR(lt_prog_compiler_pic, $1)='-Kconform_pic'
_LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
fi
@@ -4493,7 +4621,7 @@ m4_if([$1], [CXX], [
fi
])
case $host_os in
- # For platforms which do not support PIC, -DPIC is meaningless:
+ # For platforms that do not support PIC, -DPIC is meaningless:
*djgpp*)
_LT_TAGVAR(lt_prog_compiler_pic, $1)=
;;
@@ -4569,7 +4697,7 @@ m4_if([$1], [CXX], [
fi
;;
pw32*)
- _LT_TAGVAR(export_symbols_cmds, $1)="$ltdll_cmds"
+ _LT_TAGVAR(export_symbols_cmds, $1)=$ltdll_cmds
;;
cygwin* | mingw* | cegcc*)
case $cc_basename in
@@ -4615,9 +4743,9 @@ m4_if([$1], [CXX], [
# included in the symbol list
_LT_TAGVAR(include_expsyms, $1)=
# exclude_expsyms can be an extended regexp of symbols to exclude
- # it will be wrapped by ` (' and `)$', so one must not match beginning or
- # end of line. Example: `a|bc|.*d.*' will exclude the symbols `a' and `bc',
- # as well as any symbol that contains `d'.
+ # it will be wrapped by ' (' and ')$', so one must not match beginning or
+ # end of line. Example: 'a|bc|.*d.*' will exclude the symbols 'a' and 'bc',
+ # as well as any symbol that contains 'd'.
_LT_TAGVAR(exclude_expsyms, $1)=['_GLOBAL_OFFSET_TABLE_|_GLOBAL__F[ID]_.*']
# Although _GLOBAL_OFFSET_TABLE_ is a valid symbol C name, most a.out
# platforms (ab)use it in PIC code, but their linkers get confused if
@@ -4633,7 +4761,7 @@ dnl Note also adjust exclude_expsyms for C++ above.
# FIXME: the MSVC++ port hasn't been tested in a loooong time
# When not using gcc, we currently assume that we are using
# Microsoft Visual C++.
- if test "$GCC" != yes; then
+ if test yes != "$GCC"; then
with_gnu_ld=no
fi
;;
@@ -4641,7 +4769,7 @@ dnl Note also adjust exclude_expsyms for C++ above.
# we just hope/assume this is gcc and not c89 (= MSVC++)
with_gnu_ld=yes
;;
- openbsd*)
+ openbsd* | bitrig*)
with_gnu_ld=no
;;
esac
@@ -4651,7 +4779,7 @@ dnl Note also adjust exclude_expsyms for C++ above.
# On some targets, GNU ld is compatible enough with the native linker
# that we're better off using the native interface for both.
lt_use_gnu_ld_interface=no
- if test "$with_gnu_ld" = yes; then
+ if test yes = "$with_gnu_ld"; then
case $host_os in
aix*)
# The AIX port of GNU ld has always aspired to compatibility
@@ -4673,24 +4801,24 @@ dnl Note also adjust exclude_expsyms for C++ above.
esac
fi
- if test "$lt_use_gnu_ld_interface" = yes; then
+ if test yes = "$lt_use_gnu_ld_interface"; then
# If archive_cmds runs LD, not CC, wlarc should be empty
- wlarc='${wl}'
+ wlarc='$wl'
# Set some defaults for GNU ld with shared library support. These
# are reset later if shared libraries are not supported. Putting them
# here allows them to be overridden if necessary.
runpath_var=LD_RUN_PATH
- _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir'
- _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-dynamic'
+ _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-rpath $wl$libdir'
+ _LT_TAGVAR(export_dynamic_flag_spec, $1)='$wl--export-dynamic'
# ancient GNU ld didn't support --whole-archive et. al.
if $LD --help 2>&1 | $GREP 'no-whole-archive' > /dev/null; then
- _LT_TAGVAR(whole_archive_flag_spec, $1)="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive'
+ _LT_TAGVAR(whole_archive_flag_spec, $1)=$wlarc'--whole-archive$convenience '$wlarc'--no-whole-archive'
else
_LT_TAGVAR(whole_archive_flag_spec, $1)=
fi
supports_anon_versioning=no
- case `$LD -v 2>&1` in
+ case `$LD -v | $SED -e 's/([^)]\+)\s\+//' 2>&1` in
*GNU\ gold*) supports_anon_versioning=yes ;;
*\ [[01]].* | *\ 2.[[0-9]].* | *\ 2.10.*) ;; # catch versions < 2.11
*\ 2.11.93.0.2\ *) supports_anon_versioning=yes ;; # RH7.3 ...
@@ -4703,7 +4831,7 @@ dnl Note also adjust exclude_expsyms for C++ above.
case $host_os in
aix[[3-9]]*)
# On AIX/PPC, the GNU linker is very broken
- if test "$host_cpu" != ia64; then
+ if test ia64 != "$host_cpu"; then
_LT_TAGVAR(ld_shlibs, $1)=no
cat <<_LT_EOF 1>&2
@@ -4722,7 +4850,7 @@ _LT_EOF
case $host_cpu in
powerpc)
# see comment about AmigaOS4 .so support
- _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
+ _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib'
_LT_TAGVAR(archive_expsym_cmds, $1)=''
;;
m68k)
@@ -4738,7 +4866,7 @@ _LT_EOF
_LT_TAGVAR(allow_undefined_flag, $1)=unsupported
# Joseph Beckenbach <jrb3@best.com> says some releases of gcc
# support --undefined. This deserves some investigation. FIXME
- _LT_TAGVAR(archive_cmds, $1)='$CC -nostart $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
+ _LT_TAGVAR(archive_cmds, $1)='$CC -nostart $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib'
else
_LT_TAGVAR(ld_shlibs, $1)=no
fi
@@ -4748,7 +4876,7 @@ _LT_EOF
# _LT_TAGVAR(hardcode_libdir_flag_spec, $1) is actually meaningless,
# as there is no search path for DLLs.
_LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir'
- _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-all-symbols'
+ _LT_TAGVAR(export_dynamic_flag_spec, $1)='$wl--export-all-symbols'
_LT_TAGVAR(allow_undefined_flag, $1)=unsupported
_LT_TAGVAR(always_export_symbols, $1)=no
_LT_TAGVAR(enable_shared_with_static_runtimes, $1)=yes
@@ -4756,61 +4884,61 @@ _LT_EOF
_LT_TAGVAR(exclude_expsyms, $1)=['[_]+GLOBAL_OFFSET_TABLE_|[_]+GLOBAL__[FID]_.*|[_]+head_[A-Za-z0-9_]+_dll|[A-Za-z0-9_]+_dll_iname']
if $LD --help 2>&1 | $GREP 'auto-import' > /dev/null; then
- _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib'
- # If the export-symbols file already is a .def file (1st line
- # is EXPORTS), use it as is; otherwise, prepend...
- _LT_TAGVAR(archive_expsym_cmds, $1)='if test "x`$SED 1q $export_symbols`" = xEXPORTS; then
- cp $export_symbols $output_objdir/$soname.def;
- else
- echo EXPORTS > $output_objdir/$soname.def;
- cat $export_symbols >> $output_objdir/$soname.def;
- fi~
- $CC -shared $output_objdir/$soname.def $libobjs $deplibs $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib'
+ _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags -o $output_objdir/$soname $wl--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib'
+ # If the export-symbols file already is a .def file, use it as
+ # is; otherwise, prepend EXPORTS...
+ _LT_TAGVAR(archive_expsym_cmds, $1)='if _LT_DLL_DEF_P([$export_symbols]); then
+ cp $export_symbols $output_objdir/$soname.def;
+ else
+ echo EXPORTS > $output_objdir/$soname.def;
+ cat $export_symbols >> $output_objdir/$soname.def;
+ fi~
+ $CC -shared $output_objdir/$soname.def $libobjs $deplibs $compiler_flags -o $output_objdir/$soname $wl--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib'
else
_LT_TAGVAR(ld_shlibs, $1)=no
fi
;;
haiku*)
- _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
+ _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib'
_LT_TAGVAR(link_all_deplibs, $1)=yes
;;
interix[[3-9]]*)
_LT_TAGVAR(hardcode_direct, $1)=no
_LT_TAGVAR(hardcode_shlibpath_var, $1)=no
- _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir'
- _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E'
+ _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-rpath,$libdir'
+ _LT_TAGVAR(export_dynamic_flag_spec, $1)='$wl-E'
# Hack: On Interix 3.x, we cannot compile PIC because of a broken gcc.
# Instead, shared libraries are loaded at an image base (0x10000000 by
# default) and relocated if they conflict, which is a slow very memory
# consuming and fragmenting process. To avoid this, we pick a random,
# 256 KiB-aligned image base between 0x50000000 and 0x6FFC0000 at link
# time. Moving up from 0x10000000 also allows more sbrk(2) space.
- _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib'
- _LT_TAGVAR(archive_expsym_cmds, $1)='sed "s,^,_," $export_symbols >$output_objdir/$soname.expsym~$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--retain-symbols-file,$output_objdir/$soname.expsym ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib'
+ _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-h,$soname $wl--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib'
+ _LT_TAGVAR(archive_expsym_cmds, $1)='sed "s|^|_|" $export_symbols >$output_objdir/$soname.expsym~$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-h,$soname $wl--retain-symbols-file,$output_objdir/$soname.expsym $wl--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib'
;;
gnu* | linux* | tpf* | k*bsd*-gnu | kopensolaris*-gnu)
tmp_diet=no
- if test "$host_os" = linux-dietlibc; then
+ if test linux-dietlibc = "$host_os"; then
case $cc_basename in
diet\ *) tmp_diet=yes;; # linux-dietlibc with static linking (!diet-dyn)
esac
fi
if $LD --help 2>&1 | $EGREP ': supported targets:.* elf' > /dev/null \
- && test "$tmp_diet" = no
+ && test no = "$tmp_diet"
then
tmp_addflag=' $pic_flag'
tmp_sharedflag='-shared'
case $cc_basename,$host_cpu in
pgcc*) # Portland Group C compiler
- _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` ${wl}--no-whole-archive'
+ _LT_TAGVAR(whole_archive_flag_spec, $1)='$wl--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` $wl--no-whole-archive'
tmp_addflag=' $pic_flag'
;;
pgf77* | pgf90* | pgf95* | pgfortran*)
# Portland Group f77 and f90 compilers
- _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` ${wl}--no-whole-archive'
+ _LT_TAGVAR(whole_archive_flag_spec, $1)='$wl--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` $wl--no-whole-archive'
tmp_addflag=' $pic_flag -Mnomain' ;;
ecc*,ia64* | icc*,ia64*) # Intel C compiler on ia64
tmp_addflag=' -i_dynamic' ;;
@@ -4821,42 +4949,44 @@ _LT_EOF
lf95*) # Lahey Fortran 8.1
_LT_TAGVAR(whole_archive_flag_spec, $1)=
tmp_sharedflag='--shared' ;;
+ nagfor*) # NAGFOR 5.3
+ tmp_sharedflag='-Wl,-shared' ;;
xl[[cC]]* | bgxl[[cC]]* | mpixl[[cC]]*) # IBM XL C 8.0 on PPC (deal with xlf below)
tmp_sharedflag='-qmkshrobj'
tmp_addflag= ;;
nvcc*) # Cuda Compiler Driver 2.2
- _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` ${wl}--no-whole-archive'
+ _LT_TAGVAR(whole_archive_flag_spec, $1)='$wl--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` $wl--no-whole-archive'
_LT_TAGVAR(compiler_needs_object, $1)=yes
;;
esac
case `$CC -V 2>&1 | sed 5q` in
*Sun\ C*) # Sun C 5.9
- _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive`new_convenience=; for conv in $convenience\"\"; do test -z \"$conv\" || new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` ${wl}--no-whole-archive'
+ _LT_TAGVAR(whole_archive_flag_spec, $1)='$wl--whole-archive`new_convenience=; for conv in $convenience\"\"; do test -z \"$conv\" || new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` $wl--no-whole-archive'
_LT_TAGVAR(compiler_needs_object, $1)=yes
tmp_sharedflag='-G' ;;
*Sun\ F*) # Sun Fortran 8.3
tmp_sharedflag='-G' ;;
esac
- _LT_TAGVAR(archive_cmds, $1)='$CC '"$tmp_sharedflag""$tmp_addflag"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
+ _LT_TAGVAR(archive_cmds, $1)='$CC '"$tmp_sharedflag""$tmp_addflag"' $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib'
- if test "x$supports_anon_versioning" = xyes; then
+ if test yes = "$supports_anon_versioning"; then
_LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $output_objdir/$libname.ver~
- cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~
- echo "local: *; };" >> $output_objdir/$libname.ver~
- $CC '"$tmp_sharedflag""$tmp_addflag"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-version-script ${wl}$output_objdir/$libname.ver -o $lib'
+ cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~
+ echo "local: *; };" >> $output_objdir/$libname.ver~
+ $CC '"$tmp_sharedflag""$tmp_addflag"' $libobjs $deplibs $compiler_flags $wl-soname $wl$soname $wl-version-script $wl$output_objdir/$libname.ver -o $lib'
fi
case $cc_basename in
xlf* | bgf* | bgxlf* | mpixlf*)
# IBM XL Fortran 10.1 on PPC cannot create shared libs itself
_LT_TAGVAR(whole_archive_flag_spec, $1)='--whole-archive$convenience --no-whole-archive'
- _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir'
+ _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-rpath $wl$libdir'
_LT_TAGVAR(archive_cmds, $1)='$LD -shared $libobjs $deplibs $linker_flags -soname $soname -o $lib'
- if test "x$supports_anon_versioning" = xyes; then
+ if test yes = "$supports_anon_versioning"; then
_LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $output_objdir/$libname.ver~
- cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~
- echo "local: *; };" >> $output_objdir/$libname.ver~
- $LD -shared $libobjs $deplibs $linker_flags -soname $soname -version-script $output_objdir/$libname.ver -o $lib'
+ cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~
+ echo "local: *; };" >> $output_objdir/$libname.ver~
+ $LD -shared $libobjs $deplibs $linker_flags -soname $soname -version-script $output_objdir/$libname.ver -o $lib'
fi
;;
esac
@@ -4870,8 +5000,8 @@ _LT_EOF
_LT_TAGVAR(archive_cmds, $1)='$LD -Bshareable $libobjs $deplibs $linker_flags -o $lib'
wlarc=
else
- _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
- _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
+ _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib'
+ _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname $wl-retain-symbols-file $wl$export_symbols -o $lib'
fi
;;
@@ -4889,8 +5019,8 @@ _LT_EOF
_LT_EOF
elif $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then
- _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
- _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
+ _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib'
+ _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname $wl-retain-symbols-file $wl$export_symbols -o $lib'
else
_LT_TAGVAR(ld_shlibs, $1)=no
fi
@@ -4902,7 +5032,7 @@ _LT_EOF
_LT_TAGVAR(ld_shlibs, $1)=no
cat <<_LT_EOF 1>&2
-*** Warning: Releases of the GNU linker prior to 2.16.91.0.3 can not
+*** Warning: Releases of the GNU linker prior to 2.16.91.0.3 cannot
*** reliably create shared libraries on SCO systems. Therefore, libtool
*** is disabling shared libraries support. We urge you to upgrade GNU
*** binutils to release 2.16.91.0.3 or newer. Another option is to modify
@@ -4917,9 +5047,9 @@ _LT_EOF
# DT_RUNPATH tag from executables and libraries. But doing so
# requires that you compile everything twice, which is a pain.
if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then
- _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir'
- _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
- _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
+ _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-rpath $wl$libdir'
+ _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib'
+ _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags $wl-soname $wl$soname $wl-retain-symbols-file $wl$export_symbols -o $lib'
else
_LT_TAGVAR(ld_shlibs, $1)=no
fi
@@ -4936,15 +5066,15 @@ _LT_EOF
*)
if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then
- _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
- _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
+ _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib'
+ _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname $wl-retain-symbols-file $wl$export_symbols -o $lib'
else
_LT_TAGVAR(ld_shlibs, $1)=no
fi
;;
esac
- if test "$_LT_TAGVAR(ld_shlibs, $1)" = no; then
+ if test no = "$_LT_TAGVAR(ld_shlibs, $1)"; then
runpath_var=
_LT_TAGVAR(hardcode_libdir_flag_spec, $1)=
_LT_TAGVAR(export_dynamic_flag_spec, $1)=
@@ -4960,7 +5090,7 @@ _LT_EOF
# Note: this linker hardcodes the directories in LIBPATH if there
# are no directories specified by -L.
_LT_TAGVAR(hardcode_minus_L, $1)=yes
- if test "$GCC" = yes && test -z "$lt_prog_compiler_static"; then
+ if test yes = "$GCC" && test -z "$lt_prog_compiler_static"; then
# Neither direct hardcoding nor static linking is supported with a
# broken collect2.
_LT_TAGVAR(hardcode_direct, $1)=unsupported
@@ -4968,12 +5098,12 @@ _LT_EOF
;;
aix[[4-9]]*)
- if test "$host_cpu" = ia64; then
+ if test ia64 = "$host_cpu"; then
# On IA64, the linker does run time linking by default, so we don't
# have to do anything special.
aix_use_runtimelinking=no
exp_sym_flag='-Bexport'
- no_entry_flag=""
+ no_entry_flag=
else
# If we're using GNU nm, then we don't want the "-C" option.
# -C means demangle to AIX nm, but means don't demangle with GNU nm
@@ -4991,7 +5121,7 @@ _LT_EOF
# need to do runtime linking.
case $host_os in aix4.[[23]]|aix4.[[23]].*|aix[[5-9]]*)
for ld_flag in $LDFLAGS; do
- if (test $ld_flag = "-brtl" || test $ld_flag = "-Wl,-brtl"); then
+ if (test x-brtl = "x$ld_flag" || test x-Wl,-brtl = "x$ld_flag"); then
aix_use_runtimelinking=yes
break
fi
@@ -5014,13 +5144,13 @@ _LT_EOF
_LT_TAGVAR(hardcode_direct_absolute, $1)=yes
_LT_TAGVAR(hardcode_libdir_separator, $1)=':'
_LT_TAGVAR(link_all_deplibs, $1)=yes
- _LT_TAGVAR(file_list_spec, $1)='${wl}-f,'
+ _LT_TAGVAR(file_list_spec, $1)='$wl-f,'
- if test "$GCC" = yes; then
+ if test yes = "$GCC"; then
case $host_os in aix4.[[012]]|aix4.[[012]].*)
# We only want to do this on AIX 4.2 and lower, the check
# below for broken collect2 doesn't work under 4.3+
- collect2name=`${CC} -print-prog-name=collect2`
+ collect2name=`$CC -print-prog-name=collect2`
if test -f "$collect2name" &&
strings "$collect2name" | $GREP resolve_lib_name >/dev/null
then
@@ -5039,61 +5169,61 @@ _LT_EOF
;;
esac
shared_flag='-shared'
- if test "$aix_use_runtimelinking" = yes; then
- shared_flag="$shared_flag "'${wl}-G'
+ if test yes = "$aix_use_runtimelinking"; then
+ shared_flag="$shared_flag "'$wl-G'
fi
else
# not using gcc
- if test "$host_cpu" = ia64; then
+ if test ia64 = "$host_cpu"; then
# VisualAge C++, Version 5.5 for AIX 5L for IA-64, Beta 3 Release
# chokes on -Wl,-G. The following line is correct:
shared_flag='-G'
else
- if test "$aix_use_runtimelinking" = yes; then
- shared_flag='${wl}-G'
+ if test yes = "$aix_use_runtimelinking"; then
+ shared_flag='$wl-G'
else
- shared_flag='${wl}-bM:SRE'
+ shared_flag='$wl-bM:SRE'
fi
fi
fi
- _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-bexpall'
+ _LT_TAGVAR(export_dynamic_flag_spec, $1)='$wl-bexpall'
# It seems that -bexpall does not export symbols beginning with
# underscore (_), so it is better to generate a list of symbols to export.
_LT_TAGVAR(always_export_symbols, $1)=yes
- if test "$aix_use_runtimelinking" = yes; then
+ if test yes = "$aix_use_runtimelinking"; then
# Warning - without using the other runtime loading flags (-brtl),
# -berok will link without error, but may produce a broken library.
_LT_TAGVAR(allow_undefined_flag, $1)='-berok'
# Determine the default libpath from the value encoded in an
# empty executable.
_LT_SYS_MODULE_PATH_AIX([$1])
- _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-blibpath:$libdir:'"$aix_libpath"
- _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags `if test "x${allow_undefined_flag}" != "x"; then func_echo_all "${wl}${allow_undefined_flag}"; else :; fi` '"\${wl}$exp_sym_flag:\$export_symbols $shared_flag"
+ _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-blibpath:$libdir:'"$aix_libpath"
+ _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -o $output_objdir/$soname $libobjs $deplibs $wl'$no_entry_flag' $compiler_flags `if test -n "$allow_undefined_flag"; then func_echo_all "$wl$allow_undefined_flag"; else :; fi` $wl'$exp_sym_flag:\$export_symbols' '$shared_flag
else
- if test "$host_cpu" = ia64; then
- _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-R $libdir:/usr/lib:/lib'
+ if test ia64 = "$host_cpu"; then
+ _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-R $libdir:/usr/lib:/lib'
_LT_TAGVAR(allow_undefined_flag, $1)="-z nodefs"
- _LT_TAGVAR(archive_expsym_cmds, $1)="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags ${wl}${allow_undefined_flag} '"\${wl}$exp_sym_flag:\$export_symbols"
+ _LT_TAGVAR(archive_expsym_cmds, $1)="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs '"\$wl$no_entry_flag"' $compiler_flags $wl$allow_undefined_flag '"\$wl$exp_sym_flag:\$export_symbols"
else
# Determine the default libpath from the value encoded in an
# empty executable.
_LT_SYS_MODULE_PATH_AIX([$1])
- _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-blibpath:$libdir:'"$aix_libpath"
+ _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-blibpath:$libdir:'"$aix_libpath"
# Warning - without using the other run time loading flags,
# -berok will link without error, but may produce a broken library.
- _LT_TAGVAR(no_undefined_flag, $1)=' ${wl}-bernotok'
- _LT_TAGVAR(allow_undefined_flag, $1)=' ${wl}-berok'
- if test "$with_gnu_ld" = yes; then
+ _LT_TAGVAR(no_undefined_flag, $1)=' $wl-bernotok'
+ _LT_TAGVAR(allow_undefined_flag, $1)=' $wl-berok'
+ if test yes = "$with_gnu_ld"; then
# We only use this code for GNU lds that support --whole-archive.
- _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive$convenience ${wl}--no-whole-archive'
+ _LT_TAGVAR(whole_archive_flag_spec, $1)='$wl--whole-archive$convenience $wl--no-whole-archive'
else
# Exported symbols can be pulled into shared objects from archives
_LT_TAGVAR(whole_archive_flag_spec, $1)='$convenience'
fi
_LT_TAGVAR(archive_cmds_need_lc, $1)=yes
# This is similar to how AIX traditionally builds its shared libraries.
- _LT_TAGVAR(archive_expsym_cmds, $1)="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs ${wl}-bnoentry $compiler_flags ${wl}-bE:$export_symbols${allow_undefined_flag}~$AR $AR_FLAGS $output_objdir/$libname$release.a $output_objdir/$soname'
+ _LT_TAGVAR(archive_expsym_cmds, $1)="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs $wl-bnoentry $compiler_flags $wl-bE:$export_symbols$allow_undefined_flag~$AR $AR_FLAGS $output_objdir/$libname$release.a $output_objdir/$soname'
fi
fi
;;
@@ -5102,7 +5232,7 @@ _LT_EOF
case $host_cpu in
powerpc)
# see comment about AmigaOS4 .so support
- _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
+ _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib'
_LT_TAGVAR(archive_expsym_cmds, $1)=''
;;
m68k)
@@ -5132,16 +5262,17 @@ _LT_EOF
# Tell ltmain to make .lib files, not .a files.
libext=lib
# Tell ltmain to make .dll files, not .so files.
- shrext_cmds=".dll"
+ shrext_cmds=.dll
# FIXME: Setting linknames here is a bad hack.
- _LT_TAGVAR(archive_cmds, $1)='$CC -o $output_objdir/$soname $libobjs $compiler_flags $deplibs -Wl,-dll~linknames='
- _LT_TAGVAR(archive_expsym_cmds, $1)='if test "x`$SED 1q $export_symbols`" = xEXPORTS; then
- sed -n -e 's/\\\\\\\(.*\\\\\\\)/-link\\\ -EXPORT:\\\\\\\1/' -e '1\\\!p' < $export_symbols > $output_objdir/$soname.exp;
- else
- sed -e 's/\\\\\\\(.*\\\\\\\)/-link\\\ -EXPORT:\\\\\\\1/' < $export_symbols > $output_objdir/$soname.exp;
- fi~
- $CC -o $tool_output_objdir$soname $libobjs $compiler_flags $deplibs "@$tool_output_objdir$soname.exp" -Wl,-DLL,-IMPLIB:"$tool_output_objdir$libname.dll.lib"~
- linknames='
+ _LT_TAGVAR(archive_cmds, $1)='$CC -o $output_objdir/$soname $libobjs $compiler_flags $deplibs -Wl,-DLL,-IMPLIB:"$tool_output_objdir$libname.dll.lib"~linknames='
+ _LT_TAGVAR(archive_expsym_cmds, $1)='if _LT_DLL_DEF_P([$export_symbols]); then
+ cp "$export_symbols" "$output_objdir/$soname.def";
+ echo "$tool_output_objdir$soname.def" > "$output_objdir/$soname.exp";
+ else
+ $SED -e '\''s/^/-link -EXPORT:/'\'' < $export_symbols > $output_objdir/$soname.exp;
+ fi~
+ $CC -o $tool_output_objdir$soname $libobjs $compiler_flags $deplibs "@$tool_output_objdir$soname.exp" -Wl,-DLL,-IMPLIB:"$tool_output_objdir$libname.dll.lib"~
+ linknames='
# The linker will not automatically build a static lib if we build a DLL.
# _LT_TAGVAR(old_archive_from_new_cmds, $1)='true'
_LT_TAGVAR(enable_shared_with_static_runtimes, $1)=yes
@@ -5150,18 +5281,18 @@ _LT_EOF
# Don't use ranlib
_LT_TAGVAR(old_postinstall_cmds, $1)='chmod 644 $oldlib'
_LT_TAGVAR(postlink_cmds, $1)='lt_outputfile="@OUTPUT@"~
- lt_tool_outputfile="@TOOL_OUTPUT@"~
- case $lt_outputfile in
- *.exe|*.EXE) ;;
- *)
- lt_outputfile="$lt_outputfile.exe"
- lt_tool_outputfile="$lt_tool_outputfile.exe"
- ;;
- esac~
- if test "$MANIFEST_TOOL" != ":" && test -f "$lt_outputfile.manifest"; then
- $MANIFEST_TOOL -manifest "$lt_tool_outputfile.manifest" -outputresource:"$lt_tool_outputfile" || exit 1;
- $RM "$lt_outputfile.manifest";
- fi'
+ lt_tool_outputfile="@TOOL_OUTPUT@"~
+ case $lt_outputfile in
+ *.exe|*.EXE) ;;
+ *)
+ lt_outputfile=$lt_outputfile.exe
+ lt_tool_outputfile=$lt_tool_outputfile.exe
+ ;;
+ esac~
+ if test : != "$MANIFEST_TOOL" && test -f "$lt_outputfile.manifest"; then
+ $MANIFEST_TOOL -manifest "$lt_tool_outputfile.manifest" -outputresource:"$lt_tool_outputfile" || exit 1;
+ $RM "$lt_outputfile.manifest";
+ fi'
;;
*)
# Assume MSVC wrapper
@@ -5170,7 +5301,7 @@ _LT_EOF
# Tell ltmain to make .lib files, not .a files.
libext=lib
# Tell ltmain to make .dll files, not .so files.
- shrext_cmds=".dll"
+ shrext_cmds=.dll
# FIXME: Setting linknames here is a bad hack.
_LT_TAGVAR(archive_cmds, $1)='$CC -o $lib $libobjs $compiler_flags `func_echo_all "$deplibs" | $SED '\''s/ -lc$//'\''` -link -dll~linknames='
# The linker will automatically build a .lib file if we build a DLL.
@@ -5220,33 +5351,33 @@ _LT_EOF
;;
hpux9*)
- if test "$GCC" = yes; then
- _LT_TAGVAR(archive_cmds, $1)='$RM $output_objdir/$soname~$CC -shared $pic_flag ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $libobjs $deplibs $compiler_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib'
+ if test yes = "$GCC"; then
+ _LT_TAGVAR(archive_cmds, $1)='$RM $output_objdir/$soname~$CC -shared $pic_flag $wl+b $wl$install_libdir -o $output_objdir/$soname $libobjs $deplibs $compiler_flags~test "x$output_objdir/$soname" = "x$lib" || mv $output_objdir/$soname $lib'
else
- _LT_TAGVAR(archive_cmds, $1)='$RM $output_objdir/$soname~$LD -b +b $install_libdir -o $output_objdir/$soname $libobjs $deplibs $linker_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib'
+ _LT_TAGVAR(archive_cmds, $1)='$RM $output_objdir/$soname~$LD -b +b $install_libdir -o $output_objdir/$soname $libobjs $deplibs $linker_flags~test "x$output_objdir/$soname" = "x$lib" || mv $output_objdir/$soname $lib'
fi
- _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}+b ${wl}$libdir'
+ _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl+b $wl$libdir'
_LT_TAGVAR(hardcode_libdir_separator, $1)=:
_LT_TAGVAR(hardcode_direct, $1)=yes
# hardcode_minus_L: Not really in the search PATH,
# but as the default location of the library.
_LT_TAGVAR(hardcode_minus_L, $1)=yes
- _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E'
+ _LT_TAGVAR(export_dynamic_flag_spec, $1)='$wl-E'
;;
hpux10*)
- if test "$GCC" = yes && test "$with_gnu_ld" = no; then
- _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags'
+ if test yes,no = "$GCC,$with_gnu_ld"; then
+ _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $wl+h $wl$soname $wl+b $wl$install_libdir -o $lib $libobjs $deplibs $compiler_flags'
else
_LT_TAGVAR(archive_cmds, $1)='$LD -b +h $soname +b $install_libdir -o $lib $libobjs $deplibs $linker_flags'
fi
- if test "$with_gnu_ld" = no; then
- _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}+b ${wl}$libdir'
+ if test no = "$with_gnu_ld"; then
+ _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl+b $wl$libdir'
_LT_TAGVAR(hardcode_libdir_separator, $1)=:
_LT_TAGVAR(hardcode_direct, $1)=yes
_LT_TAGVAR(hardcode_direct_absolute, $1)=yes
- _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E'
+ _LT_TAGVAR(export_dynamic_flag_spec, $1)='$wl-E'
# hardcode_minus_L: Not really in the search PATH,
# but as the default location of the library.
_LT_TAGVAR(hardcode_minus_L, $1)=yes
@@ -5254,25 +5385,25 @@ _LT_EOF
;;
hpux11*)
- if test "$GCC" = yes && test "$with_gnu_ld" = no; then
+ if test yes,no = "$GCC,$with_gnu_ld"; then
case $host_cpu in
hppa*64*)
- _LT_TAGVAR(archive_cmds, $1)='$CC -shared ${wl}+h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags'
+ _LT_TAGVAR(archive_cmds, $1)='$CC -shared $wl+h $wl$soname -o $lib $libobjs $deplibs $compiler_flags'
;;
ia64*)
- _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags'
+ _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $wl+h $wl$soname $wl+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags'
;;
*)
- _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags'
+ _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $wl+h $wl$soname $wl+b $wl$install_libdir -o $lib $libobjs $deplibs $compiler_flags'
;;
esac
else
case $host_cpu in
hppa*64*)
- _LT_TAGVAR(archive_cmds, $1)='$CC -b ${wl}+h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags'
+ _LT_TAGVAR(archive_cmds, $1)='$CC -b $wl+h $wl$soname -o $lib $libobjs $deplibs $compiler_flags'
;;
ia64*)
- _LT_TAGVAR(archive_cmds, $1)='$CC -b ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags'
+ _LT_TAGVAR(archive_cmds, $1)='$CC -b $wl+h $wl$soname $wl+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags'
;;
*)
m4_if($1, [], [
@@ -5280,14 +5411,14 @@ _LT_EOF
# (HP92453-01 A.11.01.20 doesn't, HP92453-01 B.11.X.35175-35176.GP does)
_LT_LINKER_OPTION([if $CC understands -b],
_LT_TAGVAR(lt_cv_prog_compiler__b, $1), [-b],
- [_LT_TAGVAR(archive_cmds, $1)='$CC -b ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags'],
+ [_LT_TAGVAR(archive_cmds, $1)='$CC -b $wl+h $wl$soname $wl+b $wl$install_libdir -o $lib $libobjs $deplibs $compiler_flags'],
[_LT_TAGVAR(archive_cmds, $1)='$LD -b +h $soname +b $install_libdir -o $lib $libobjs $deplibs $linker_flags'])],
- [_LT_TAGVAR(archive_cmds, $1)='$CC -b ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags'])
+ [_LT_TAGVAR(archive_cmds, $1)='$CC -b $wl+h $wl$soname $wl+b $wl$install_libdir -o $lib $libobjs $deplibs $compiler_flags'])
;;
esac
fi
- if test "$with_gnu_ld" = no; then
- _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}+b ${wl}$libdir'
+ if test no = "$with_gnu_ld"; then
+ _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl+b $wl$libdir'
_LT_TAGVAR(hardcode_libdir_separator, $1)=:
case $host_cpu in
@@ -5298,7 +5429,7 @@ _LT_EOF
*)
_LT_TAGVAR(hardcode_direct, $1)=yes
_LT_TAGVAR(hardcode_direct_absolute, $1)=yes
- _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E'
+ _LT_TAGVAR(export_dynamic_flag_spec, $1)='$wl-E'
# hardcode_minus_L: Not really in the search PATH,
# but as the default location of the library.
@@ -5309,16 +5440,16 @@ _LT_EOF
;;
irix5* | irix6* | nonstopux*)
- if test "$GCC" = yes; then
- _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib'
+ if test yes = "$GCC"; then
+ _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname `test -n "$verstring" && func_echo_all "$wl-set_version $wl$verstring"` $wl-update_registry $wl$output_objdir/so_locations -o $lib'
# Try to use the -exported_symbol ld option, if it does not
# work, assume that -exports_file does not work either and
# implicitly export all symbols.
# This should be the same for all languages, so no per-tag cache variable.
AC_CACHE_CHECK([whether the $host_os linker accepts -exported_symbol],
[lt_cv_irix_exported_symbol],
- [save_LDFLAGS="$LDFLAGS"
- LDFLAGS="$LDFLAGS -shared ${wl}-exported_symbol ${wl}foo ${wl}-update_registry ${wl}/dev/null"
+ [save_LDFLAGS=$LDFLAGS
+ LDFLAGS="$LDFLAGS -shared $wl-exported_symbol ${wl}foo $wl-update_registry $wl/dev/null"
AC_LINK_IFELSE(
[AC_LANG_SOURCE(
[AC_LANG_CASE([C], [[int foo (void) { return 0; }]],
@@ -5331,16 +5462,16 @@ _LT_EOF
end]])])],
[lt_cv_irix_exported_symbol=yes],
[lt_cv_irix_exported_symbol=no])
- LDFLAGS="$save_LDFLAGS"])
- if test "$lt_cv_irix_exported_symbol" = yes; then
- _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations ${wl}-exports_file ${wl}$export_symbols -o $lib'
+ LDFLAGS=$save_LDFLAGS])
+ if test yes = "$lt_cv_irix_exported_symbol"; then
+ _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname `test -n "$verstring" && func_echo_all "$wl-set_version $wl$verstring"` $wl-update_registry $wl$output_objdir/so_locations $wl-exports_file $wl$export_symbols -o $lib'
fi
else
- _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib'
- _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -exports_file $export_symbols -o $lib'
+ _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry $output_objdir/so_locations -o $lib'
+ _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry $output_objdir/so_locations -exports_file $export_symbols -o $lib'
fi
_LT_TAGVAR(archive_cmds_need_lc, $1)='no'
- _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir'
+ _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-rpath $wl$libdir'
_LT_TAGVAR(hardcode_libdir_separator, $1)=:
_LT_TAGVAR(inherit_rpath, $1)=yes
_LT_TAGVAR(link_all_deplibs, $1)=yes
@@ -5360,7 +5491,7 @@ _LT_EOF
newsos6)
_LT_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
_LT_TAGVAR(hardcode_direct, $1)=yes
- _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir'
+ _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-rpath $wl$libdir'
_LT_TAGVAR(hardcode_libdir_separator, $1)=:
_LT_TAGVAR(hardcode_shlibpath_var, $1)=no
;;
@@ -5368,27 +5499,19 @@ _LT_EOF
*nto* | *qnx*)
;;
- openbsd*)
+ openbsd* | bitrig*)
if test -f /usr/libexec/ld.so; then
_LT_TAGVAR(hardcode_direct, $1)=yes
_LT_TAGVAR(hardcode_shlibpath_var, $1)=no
_LT_TAGVAR(hardcode_direct_absolute, $1)=yes
- if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then
+ if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`"; then
_LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags'
- _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-retain-symbols-file,$export_symbols'
- _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir'
- _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E'
+ _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags $wl-retain-symbols-file,$export_symbols'
+ _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-rpath,$libdir'
+ _LT_TAGVAR(export_dynamic_flag_spec, $1)='$wl-E'
else
- case $host_os in
- openbsd[[01]].* | openbsd2.[[0-7]] | openbsd2.[[0-7]].*)
- _LT_TAGVAR(archive_cmds, $1)='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags'
- _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir'
- ;;
- *)
- _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags'
- _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir'
- ;;
- esac
+ _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags'
+ _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-rpath,$libdir'
fi
else
_LT_TAGVAR(ld_shlibs, $1)=no
@@ -5404,28 +5527,28 @@ _LT_EOF
;;
osf3*)
- if test "$GCC" = yes; then
- _LT_TAGVAR(allow_undefined_flag, $1)=' ${wl}-expect_unresolved ${wl}\*'
- _LT_TAGVAR(archive_cmds, $1)='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib'
+ if test yes = "$GCC"; then
+ _LT_TAGVAR(allow_undefined_flag, $1)=' $wl-expect_unresolved $wl\*'
+ _LT_TAGVAR(archive_cmds, $1)='$CC -shared$allow_undefined_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname `test -n "$verstring" && func_echo_all "$wl-set_version $wl$verstring"` $wl-update_registry $wl$output_objdir/so_locations -o $lib'
else
_LT_TAGVAR(allow_undefined_flag, $1)=' -expect_unresolved \*'
- _LT_TAGVAR(archive_cmds, $1)='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib'
+ _LT_TAGVAR(archive_cmds, $1)='$CC -shared$allow_undefined_flag $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry $output_objdir/so_locations -o $lib'
fi
_LT_TAGVAR(archive_cmds_need_lc, $1)='no'
- _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir'
+ _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-rpath $wl$libdir'
_LT_TAGVAR(hardcode_libdir_separator, $1)=:
;;
osf4* | osf5*) # as osf3* with the addition of -msym flag
- if test "$GCC" = yes; then
- _LT_TAGVAR(allow_undefined_flag, $1)=' ${wl}-expect_unresolved ${wl}\*'
- _LT_TAGVAR(archive_cmds, $1)='$CC -shared${allow_undefined_flag} $pic_flag $libobjs $deplibs $compiler_flags ${wl}-msym ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib'
- _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir'
+ if test yes = "$GCC"; then
+ _LT_TAGVAR(allow_undefined_flag, $1)=' $wl-expect_unresolved $wl\*'
+ _LT_TAGVAR(archive_cmds, $1)='$CC -shared$allow_undefined_flag $pic_flag $libobjs $deplibs $compiler_flags $wl-msym $wl-soname $wl$soname `test -n "$verstring" && func_echo_all "$wl-set_version $wl$verstring"` $wl-update_registry $wl$output_objdir/so_locations -o $lib'
+ _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-rpath $wl$libdir'
else
_LT_TAGVAR(allow_undefined_flag, $1)=' -expect_unresolved \*'
- _LT_TAGVAR(archive_cmds, $1)='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags -msym -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib'
+ _LT_TAGVAR(archive_cmds, $1)='$CC -shared$allow_undefined_flag $libobjs $deplibs $compiler_flags -msym -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry $output_objdir/so_locations -o $lib'
_LT_TAGVAR(archive_expsym_cmds, $1)='for i in `cat $export_symbols`; do printf "%s %s\\n" -exported_symbol "\$i" >> $lib.exp; done; printf "%s\\n" "-hidden">> $lib.exp~
- $CC -shared${allow_undefined_flag} ${wl}-input ${wl}$lib.exp $compiler_flags $libobjs $deplibs -soname $soname `test -n "$verstring" && $ECHO "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib~$RM $lib.exp'
+ $CC -shared$allow_undefined_flag $wl-input $wl$lib.exp $compiler_flags $libobjs $deplibs -soname $soname `test -n "$verstring" && $ECHO "-set_version $verstring"` -update_registry $output_objdir/so_locations -o $lib~$RM $lib.exp'
# Both c and cxx compiler support -rpath directly
_LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-rpath $libdir'
@@ -5436,24 +5559,24 @@ _LT_EOF
solaris*)
_LT_TAGVAR(no_undefined_flag, $1)=' -z defs'
- if test "$GCC" = yes; then
- wlarc='${wl}'
- _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag ${wl}-z ${wl}text ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags'
+ if test yes = "$GCC"; then
+ wlarc='$wl'
+ _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $wl-z ${wl}text $wl-h $wl$soname -o $lib $libobjs $deplibs $compiler_flags'
_LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~
- $CC -shared $pic_flag ${wl}-z ${wl}text ${wl}-M ${wl}$lib.exp ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags~$RM $lib.exp'
+ $CC -shared $pic_flag $wl-z ${wl}text $wl-M $wl$lib.exp $wl-h $wl$soname -o $lib $libobjs $deplibs $compiler_flags~$RM $lib.exp'
else
case `$CC -V 2>&1` in
*"Compilers 5.0"*)
wlarc=''
- _LT_TAGVAR(archive_cmds, $1)='$LD -G${allow_undefined_flag} -h $soname -o $lib $libobjs $deplibs $linker_flags'
+ _LT_TAGVAR(archive_cmds, $1)='$LD -G$allow_undefined_flag -h $soname -o $lib $libobjs $deplibs $linker_flags'
_LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~
- $LD -G${allow_undefined_flag} -M $lib.exp -h $soname -o $lib $libobjs $deplibs $linker_flags~$RM $lib.exp'
+ $LD -G$allow_undefined_flag -M $lib.exp -h $soname -o $lib $libobjs $deplibs $linker_flags~$RM $lib.exp'
;;
*)
- wlarc='${wl}'
- _LT_TAGVAR(archive_cmds, $1)='$CC -G${allow_undefined_flag} -h $soname -o $lib $libobjs $deplibs $compiler_flags'
+ wlarc='$wl'
+ _LT_TAGVAR(archive_cmds, $1)='$CC -G$allow_undefined_flag -h $soname -o $lib $libobjs $deplibs $compiler_flags'
_LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~
- $CC -G${allow_undefined_flag} -M $lib.exp -h $soname -o $lib $libobjs $deplibs $compiler_flags~$RM $lib.exp'
+ $CC -G$allow_undefined_flag -M $lib.exp -h $soname -o $lib $libobjs $deplibs $compiler_flags~$RM $lib.exp'
;;
esac
fi
@@ -5463,11 +5586,11 @@ _LT_EOF
solaris2.[[0-5]] | solaris2.[[0-5]].*) ;;
*)
# The compiler driver will combine and reorder linker options,
- # but understands `-z linker_flag'. GCC discards it without `$wl',
+ # but understands '-z linker_flag'. GCC discards it without '$wl',
# but is careful enough not to reorder.
# Supported since Solaris 2.6 (maybe 2.5.1?)
- if test "$GCC" = yes; then
- _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}-z ${wl}allextract$convenience ${wl}-z ${wl}defaultextract'
+ if test yes = "$GCC"; then
+ _LT_TAGVAR(whole_archive_flag_spec, $1)='$wl-z ${wl}allextract$convenience $wl-z ${wl}defaultextract'
else
_LT_TAGVAR(whole_archive_flag_spec, $1)='-z allextract$convenience -z defaultextract'
fi
@@ -5477,10 +5600,10 @@ _LT_EOF
;;
sunos4*)
- if test "x$host_vendor" = xsequent; then
+ if test sequent = "$host_vendor"; then
# Use $CC to link under sequent, because it throws in some extra .o
# files that make .init and .fini sections work.
- _LT_TAGVAR(archive_cmds, $1)='$CC -G ${wl}-h $soname -o $lib $libobjs $deplibs $compiler_flags'
+ _LT_TAGVAR(archive_cmds, $1)='$CC -G $wl-h $soname -o $lib $libobjs $deplibs $compiler_flags'
else
_LT_TAGVAR(archive_cmds, $1)='$LD -assert pure-text -Bstatic -o $lib $libobjs $deplibs $linker_flags'
fi
@@ -5529,43 +5652,43 @@ _LT_EOF
;;
sysv4*uw2* | sysv5OpenUNIX* | sysv5UnixWare7.[[01]].[[10]]* | unixware7* | sco3.2v5.0.[[024]]*)
- _LT_TAGVAR(no_undefined_flag, $1)='${wl}-z,text'
+ _LT_TAGVAR(no_undefined_flag, $1)='$wl-z,text'
_LT_TAGVAR(archive_cmds_need_lc, $1)=no
_LT_TAGVAR(hardcode_shlibpath_var, $1)=no
runpath_var='LD_RUN_PATH'
- if test "$GCC" = yes; then
- _LT_TAGVAR(archive_cmds, $1)='$CC -shared ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
- _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
+ if test yes = "$GCC"; then
+ _LT_TAGVAR(archive_cmds, $1)='$CC -shared $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
+ _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $wl-Bexport:$export_symbols $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
else
- _LT_TAGVAR(archive_cmds, $1)='$CC -G ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
- _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
+ _LT_TAGVAR(archive_cmds, $1)='$CC -G $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
+ _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -G $wl-Bexport:$export_symbols $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
fi
;;
sysv5* | sco3.2v5* | sco5v6*)
- # Note: We can NOT use -z defs as we might desire, because we do not
+ # Note: We CANNOT use -z defs as we might desire, because we do not
# link with -lc, and that would cause any symbols used from libc to
# always be unresolved, which means just about no library would
# ever link correctly. If we're not using GNU ld we use -z text
# though, which does catch some bad symbols but isn't as heavy-handed
# as -z defs.
- _LT_TAGVAR(no_undefined_flag, $1)='${wl}-z,text'
- _LT_TAGVAR(allow_undefined_flag, $1)='${wl}-z,nodefs'
+ _LT_TAGVAR(no_undefined_flag, $1)='$wl-z,text'
+ _LT_TAGVAR(allow_undefined_flag, $1)='$wl-z,nodefs'
_LT_TAGVAR(archive_cmds_need_lc, $1)=no
_LT_TAGVAR(hardcode_shlibpath_var, $1)=no
- _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-R,$libdir'
+ _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-R,$libdir'
_LT_TAGVAR(hardcode_libdir_separator, $1)=':'
_LT_TAGVAR(link_all_deplibs, $1)=yes
- _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-Bexport'
+ _LT_TAGVAR(export_dynamic_flag_spec, $1)='$wl-Bexport'
runpath_var='LD_RUN_PATH'
- if test "$GCC" = yes; then
- _LT_TAGVAR(archive_cmds, $1)='$CC -shared ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
- _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
+ if test yes = "$GCC"; then
+ _LT_TAGVAR(archive_cmds, $1)='$CC -shared $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
+ _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $wl-Bexport:$export_symbols $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
else
- _LT_TAGVAR(archive_cmds, $1)='$CC -G ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
- _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
+ _LT_TAGVAR(archive_cmds, $1)='$CC -G $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
+ _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -G $wl-Bexport:$export_symbols $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
fi
;;
@@ -5580,17 +5703,17 @@ _LT_EOF
;;
esac
- if test x$host_vendor = xsni; then
+ if test sni = "$host_vendor"; then
case $host in
sysv4 | sysv4.2uw2* | sysv4.3* | sysv5*)
- _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-Blargedynsym'
+ _LT_TAGVAR(export_dynamic_flag_spec, $1)='$wl-Blargedynsym'
;;
esac
fi
fi
])
AC_MSG_RESULT([$_LT_TAGVAR(ld_shlibs, $1)])
-test "$_LT_TAGVAR(ld_shlibs, $1)" = no && can_build_shared=no
+test no = "$_LT_TAGVAR(ld_shlibs, $1)" && can_build_shared=no
_LT_TAGVAR(with_gnu_ld, $1)=$with_gnu_ld
@@ -5607,7 +5730,7 @@ x|xyes)
# Assume -lc should be added
_LT_TAGVAR(archive_cmds_need_lc, $1)=yes
- if test "$enable_shared" = yes && test "$GCC" = yes; then
+ if test yes,yes = "$GCC,$enable_shared"; then
case $_LT_TAGVAR(archive_cmds, $1) in
*'~'*)
# FIXME: we may have to deal with multi-command sequences.
@@ -5687,12 +5810,12 @@ _LT_TAGDECL([], [hardcode_libdir_flag_spec], [1],
_LT_TAGDECL([], [hardcode_libdir_separator], [1],
[Whether we need a single "-rpath" flag with a separated argument])
_LT_TAGDECL([], [hardcode_direct], [0],
- [Set to "yes" if using DIR/libNAME${shared_ext} during linking hardcodes
+ [Set to "yes" if using DIR/libNAME$shared_ext during linking hardcodes
DIR into the resulting binary])
_LT_TAGDECL([], [hardcode_direct_absolute], [0],
- [Set to "yes" if using DIR/libNAME${shared_ext} during linking hardcodes
+ [Set to "yes" if using DIR/libNAME$shared_ext during linking hardcodes
DIR into the resulting binary and the resulting library dependency is
- "absolute", i.e impossible to change by setting ${shlibpath_var} if the
+ "absolute", i.e impossible to change by setting $shlibpath_var if the
library is relocated])
_LT_TAGDECL([], [hardcode_minus_L], [0],
[Set to "yes" if using the -LDIR flag during linking hardcodes DIR
@@ -5733,10 +5856,10 @@ dnl [Compiler flag to generate thread safe objects])
# ------------------------
# Ensure that the configuration variables for a C compiler are suitably
# defined. These variables are subsequently used by _LT_CONFIG to write
-# the compiler configuration to `libtool'.
+# the compiler configuration to 'libtool'.
m4_defun([_LT_LANG_C_CONFIG],
[m4_require([_LT_DECL_EGREP])dnl
-lt_save_CC="$CC"
+lt_save_CC=$CC
AC_LANG_PUSH(C)
# Source file extension for C test sources.
@@ -5776,18 +5899,18 @@ if test -n "$compiler"; then
LT_SYS_DLOPEN_SELF
_LT_CMD_STRIPLIB
- # Report which library types will actually be built
+ # Report what library types will actually be built
AC_MSG_CHECKING([if libtool supports shared libraries])
AC_MSG_RESULT([$can_build_shared])
AC_MSG_CHECKING([whether to build shared libraries])
- test "$can_build_shared" = "no" && enable_shared=no
+ test no = "$can_build_shared" && enable_shared=no
# On AIX, shared libraries and static libraries use the same namespace, and
# are all built from PIC.
case $host_os in
aix3*)
- test "$enable_shared" = yes && enable_static=no
+ test yes = "$enable_shared" && enable_static=no
if test -n "$RANLIB"; then
archive_cmds="$archive_cmds~\$RANLIB \$lib"
postinstall_cmds='$RANLIB $lib'
@@ -5795,8 +5918,8 @@ if test -n "$compiler"; then
;;
aix[[4-9]]*)
- if test "$host_cpu" != ia64 && test "$aix_use_runtimelinking" = no ; then
- test "$enable_shared" = yes && enable_static=no
+ if test ia64 != "$host_cpu" && test no = "$aix_use_runtimelinking"; then
+ test yes = "$enable_shared" && enable_static=no
fi
;;
esac
@@ -5804,13 +5927,13 @@ if test -n "$compiler"; then
AC_MSG_CHECKING([whether to build static libraries])
# Make sure either enable_shared or enable_static is yes.
- test "$enable_shared" = yes || enable_static=yes
+ test yes = "$enable_shared" || enable_static=yes
AC_MSG_RESULT([$enable_static])
_LT_CONFIG($1)
fi
AC_LANG_POP
-CC="$lt_save_CC"
+CC=$lt_save_CC
])# _LT_LANG_C_CONFIG
@@ -5818,14 +5941,14 @@ CC="$lt_save_CC"
# --------------------------
# Ensure that the configuration variables for a C++ compiler are suitably
# defined. These variables are subsequently used by _LT_CONFIG to write
-# the compiler configuration to `libtool'.
+# the compiler configuration to 'libtool'.
m4_defun([_LT_LANG_CXX_CONFIG],
[m4_require([_LT_FILEUTILS_DEFAULTS])dnl
m4_require([_LT_DECL_EGREP])dnl
m4_require([_LT_PATH_MANIFEST_TOOL])dnl
-if test -n "$CXX" && ( test "X$CXX" != "Xno" &&
- ( (test "X$CXX" = "Xg++" && `g++ -v >/dev/null 2>&1` ) ||
- (test "X$CXX" != "Xg++"))) ; then
+if test -n "$CXX" && ( test no != "$CXX" &&
+ ( (test g++ = "$CXX" && `g++ -v >/dev/null 2>&1` ) ||
+ (test g++ != "$CXX"))); then
AC_PROG_CXXCPP
else
_lt_caught_CXX_error=yes
@@ -5867,7 +5990,7 @@ _LT_TAGVAR(objext, $1)=$objext
# the CXX compiler isn't working. Some variables (like enable_shared)
# are currently assumed to apply to all compilers on this platform,
# and will be corrupted by setting them based on a non-working compiler.
-if test "$_lt_caught_CXX_error" != yes; then
+if test yes != "$_lt_caught_CXX_error"; then
# Code to be used in simple compile tests
lt_simple_compile_test_code="int some_variable = 0;"
@@ -5909,35 +6032,35 @@ if test "$_lt_caught_CXX_error" != yes; then
if test -n "$compiler"; then
# We don't want -fno-exception when compiling C++ code, so set the
# no_builtin_flag separately
- if test "$GXX" = yes; then
+ if test yes = "$GXX"; then
_LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)=' -fno-builtin'
else
_LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)=
fi
- if test "$GXX" = yes; then
+ if test yes = "$GXX"; then
# Set up default GNU C++ configuration
LT_PATH_LD
# Check if GNU C++ uses GNU ld as the underlying linker, since the
# archiving commands below assume that GNU ld is being used.
- if test "$with_gnu_ld" = yes; then
- _LT_TAGVAR(archive_cmds, $1)='$CC $pic_flag -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib'
- _LT_TAGVAR(archive_expsym_cmds, $1)='$CC $pic_flag -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
+ if test yes = "$with_gnu_ld"; then
+ _LT_TAGVAR(archive_cmds, $1)='$CC $pic_flag -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-soname $wl$soname -o $lib'
+ _LT_TAGVAR(archive_expsym_cmds, $1)='$CC $pic_flag -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-soname $wl$soname $wl-retain-symbols-file $wl$export_symbols -o $lib'
- _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir'
- _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-dynamic'
+ _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-rpath $wl$libdir'
+ _LT_TAGVAR(export_dynamic_flag_spec, $1)='$wl--export-dynamic'
# If archive_cmds runs LD, not CC, wlarc should be empty
# XXX I think wlarc can be eliminated in ltcf-cxx, but I need to
# investigate it a little bit more. (MM)
- wlarc='${wl}'
+ wlarc='$wl'
# ancient GNU ld didn't support --whole-archive et. al.
if eval "`$CC -print-prog-name=ld` --help 2>&1" |
$GREP 'no-whole-archive' > /dev/null; then
- _LT_TAGVAR(whole_archive_flag_spec, $1)="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive'
+ _LT_TAGVAR(whole_archive_flag_spec, $1)=$wlarc'--whole-archive$convenience '$wlarc'--no-whole-archive'
else
_LT_TAGVAR(whole_archive_flag_spec, $1)=
fi
@@ -5973,12 +6096,12 @@ if test "$_lt_caught_CXX_error" != yes; then
_LT_TAGVAR(ld_shlibs, $1)=no
;;
aix[[4-9]]*)
- if test "$host_cpu" = ia64; then
+ if test ia64 = "$host_cpu"; then
# On IA64, the linker does run time linking by default, so we don't
# have to do anything special.
aix_use_runtimelinking=no
exp_sym_flag='-Bexport'
- no_entry_flag=""
+ no_entry_flag=
else
aix_use_runtimelinking=no
@@ -6012,13 +6135,13 @@ if test "$_lt_caught_CXX_error" != yes; then
_LT_TAGVAR(hardcode_direct_absolute, $1)=yes
_LT_TAGVAR(hardcode_libdir_separator, $1)=':'
_LT_TAGVAR(link_all_deplibs, $1)=yes
- _LT_TAGVAR(file_list_spec, $1)='${wl}-f,'
+ _LT_TAGVAR(file_list_spec, $1)='$wl-f,'
- if test "$GXX" = yes; then
+ if test yes = "$GXX"; then
case $host_os in aix4.[[012]]|aix4.[[012]].*)
# We only want to do this on AIX 4.2 and lower, the check
# below for broken collect2 doesn't work under 4.3+
- collect2name=`${CC} -print-prog-name=collect2`
+ collect2name=`$CC -print-prog-name=collect2`
if test -f "$collect2name" &&
strings "$collect2name" | $GREP resolve_lib_name >/dev/null
then
@@ -6036,56 +6159,56 @@ if test "$_lt_caught_CXX_error" != yes; then
fi
esac
shared_flag='-shared'
- if test "$aix_use_runtimelinking" = yes; then
- shared_flag="$shared_flag "'${wl}-G'
+ if test yes = "$aix_use_runtimelinking"; then
+ shared_flag=$shared_flag' $wl-G'
fi
else
# not using gcc
- if test "$host_cpu" = ia64; then
+ if test ia64 = "$host_cpu"; then
# VisualAge C++, Version 5.5 for AIX 5L for IA-64, Beta 3 Release
# chokes on -Wl,-G. The following line is correct:
shared_flag='-G'
else
- if test "$aix_use_runtimelinking" = yes; then
- shared_flag='${wl}-G'
+ if test yes = "$aix_use_runtimelinking"; then
+ shared_flag='$wl-G'
else
- shared_flag='${wl}-bM:SRE'
+ shared_flag='$wl-bM:SRE'
fi
fi
fi
- _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-bexpall'
+ _LT_TAGVAR(export_dynamic_flag_spec, $1)='$wl-bexpall'
# It seems that -bexpall does not export symbols beginning with
# underscore (_), so it is better to generate a list of symbols to
# export.
_LT_TAGVAR(always_export_symbols, $1)=yes
- if test "$aix_use_runtimelinking" = yes; then
+ if test yes = "$aix_use_runtimelinking"; then
# Warning - without using the other runtime loading flags (-brtl),
# -berok will link without error, but may produce a broken library.
_LT_TAGVAR(allow_undefined_flag, $1)='-berok'
# Determine the default libpath from the value encoded in an empty
# executable.
_LT_SYS_MODULE_PATH_AIX([$1])
- _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-blibpath:$libdir:'"$aix_libpath"
+ _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-blibpath:$libdir:'"$aix_libpath"
- _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags `if test "x${allow_undefined_flag}" != "x"; then func_echo_all "${wl}${allow_undefined_flag}"; else :; fi` '"\${wl}$exp_sym_flag:\$export_symbols $shared_flag"
+ _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -o $output_objdir/$soname $libobjs $deplibs $wl'$no_entry_flag' $compiler_flags `if test -n "$allow_undefined_flag"; then func_echo_all "$wl$allow_undefined_flag"; else :; fi` $wl'$exp_sym_flag:\$export_symbols' '$shared_flag
else
- if test "$host_cpu" = ia64; then
- _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-R $libdir:/usr/lib:/lib'
+ if test ia64 = "$host_cpu"; then
+ _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-R $libdir:/usr/lib:/lib'
_LT_TAGVAR(allow_undefined_flag, $1)="-z nodefs"
- _LT_TAGVAR(archive_expsym_cmds, $1)="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags ${wl}${allow_undefined_flag} '"\${wl}$exp_sym_flag:\$export_symbols"
+ _LT_TAGVAR(archive_expsym_cmds, $1)="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs '"\$wl$no_entry_flag"' $compiler_flags $wl$allow_undefined_flag '"\$wl$exp_sym_flag:\$export_symbols"
else
# Determine the default libpath from the value encoded in an
# empty executable.
_LT_SYS_MODULE_PATH_AIX([$1])
- _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-blibpath:$libdir:'"$aix_libpath"
+ _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-blibpath:$libdir:'"$aix_libpath"
# Warning - without using the other run time loading flags,
# -berok will link without error, but may produce a broken library.
- _LT_TAGVAR(no_undefined_flag, $1)=' ${wl}-bernotok'
- _LT_TAGVAR(allow_undefined_flag, $1)=' ${wl}-berok'
- if test "$with_gnu_ld" = yes; then
+ _LT_TAGVAR(no_undefined_flag, $1)=' $wl-bernotok'
+ _LT_TAGVAR(allow_undefined_flag, $1)=' $wl-berok'
+ if test yes = "$with_gnu_ld"; then
# We only use this code for GNU lds that support --whole-archive.
- _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive$convenience ${wl}--no-whole-archive'
+ _LT_TAGVAR(whole_archive_flag_spec, $1)='$wl--whole-archive$convenience $wl--no-whole-archive'
else
# Exported symbols can be pulled into shared objects from archives
_LT_TAGVAR(whole_archive_flag_spec, $1)='$convenience'
@@ -6093,7 +6216,7 @@ if test "$_lt_caught_CXX_error" != yes; then
_LT_TAGVAR(archive_cmds_need_lc, $1)=yes
# This is similar to how AIX traditionally builds its shared
# libraries.
- _LT_TAGVAR(archive_expsym_cmds, $1)="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs ${wl}-bnoentry $compiler_flags ${wl}-bE:$export_symbols${allow_undefined_flag}~$AR $AR_FLAGS $output_objdir/$libname$release.a $output_objdir/$soname'
+ _LT_TAGVAR(archive_expsym_cmds, $1)="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs $wl-bnoentry $compiler_flags $wl-bE:$export_symbols$allow_undefined_flag~$AR $AR_FLAGS $output_objdir/$libname$release.a $output_objdir/$soname'
fi
fi
;;
@@ -6103,7 +6226,7 @@ if test "$_lt_caught_CXX_error" != yes; then
_LT_TAGVAR(allow_undefined_flag, $1)=unsupported
# Joseph Beckenbach <jrb3@best.com> says some releases of gcc
# support --undefined. This deserves some investigation. FIXME
- _LT_TAGVAR(archive_cmds, $1)='$CC -nostart $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
+ _LT_TAGVAR(archive_cmds, $1)='$CC -nostart $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib'
else
_LT_TAGVAR(ld_shlibs, $1)=no
fi
@@ -6131,57 +6254,58 @@ if test "$_lt_caught_CXX_error" != yes; then
# Tell ltmain to make .lib files, not .a files.
libext=lib
# Tell ltmain to make .dll files, not .so files.
- shrext_cmds=".dll"
+ shrext_cmds=.dll
# FIXME: Setting linknames here is a bad hack.
- _LT_TAGVAR(archive_cmds, $1)='$CC -o $output_objdir/$soname $libobjs $compiler_flags $deplibs -Wl,-dll~linknames='
- _LT_TAGVAR(archive_expsym_cmds, $1)='if test "x`$SED 1q $export_symbols`" = xEXPORTS; then
- $SED -n -e 's/\\\\\\\(.*\\\\\\\)/-link\\\ -EXPORT:\\\\\\\1/' -e '1\\\!p' < $export_symbols > $output_objdir/$soname.exp;
- else
- $SED -e 's/\\\\\\\(.*\\\\\\\)/-link\\\ -EXPORT:\\\\\\\1/' < $export_symbols > $output_objdir/$soname.exp;
- fi~
- $CC -o $tool_output_objdir$soname $libobjs $compiler_flags $deplibs "@$tool_output_objdir$soname.exp" -Wl,-DLL,-IMPLIB:"$tool_output_objdir$libname.dll.lib"~
- linknames='
+ _LT_TAGVAR(archive_cmds, $1)='$CC -o $output_objdir/$soname $libobjs $compiler_flags $deplibs -Wl,-DLL,-IMPLIB:"$tool_output_objdir$libname.dll.lib"~linknames='
+ _LT_TAGVAR(archive_expsym_cmds, $1)='if _LT_DLL_DEF_P([$export_symbols]); then
+ cp "$export_symbols" "$output_objdir/$soname.def";
+ echo "$tool_output_objdir$soname.def" > "$output_objdir/$soname.exp";
+ else
+ $SED -e '\''s/^/-link -EXPORT:/'\'' < $export_symbols > $output_objdir/$soname.exp;
+ fi~
+ $CC -o $tool_output_objdir$soname $libobjs $compiler_flags $deplibs "@$tool_output_objdir$soname.exp" -Wl,-DLL,-IMPLIB:"$tool_output_objdir$libname.dll.lib"~
+ linknames='
# The linker will not automatically build a static lib if we build a DLL.
# _LT_TAGVAR(old_archive_from_new_cmds, $1)='true'
_LT_TAGVAR(enable_shared_with_static_runtimes, $1)=yes
# Don't use ranlib
_LT_TAGVAR(old_postinstall_cmds, $1)='chmod 644 $oldlib'
_LT_TAGVAR(postlink_cmds, $1)='lt_outputfile="@OUTPUT@"~
- lt_tool_outputfile="@TOOL_OUTPUT@"~
- case $lt_outputfile in
- *.exe|*.EXE) ;;
- *)
- lt_outputfile="$lt_outputfile.exe"
- lt_tool_outputfile="$lt_tool_outputfile.exe"
- ;;
- esac~
- func_to_tool_file "$lt_outputfile"~
- if test "$MANIFEST_TOOL" != ":" && test -f "$lt_outputfile.manifest"; then
- $MANIFEST_TOOL -manifest "$lt_tool_outputfile.manifest" -outputresource:"$lt_tool_outputfile" || exit 1;
- $RM "$lt_outputfile.manifest";
- fi'
+ lt_tool_outputfile="@TOOL_OUTPUT@"~
+ case $lt_outputfile in
+ *.exe|*.EXE) ;;
+ *)
+ lt_outputfile=$lt_outputfile.exe
+ lt_tool_outputfile=$lt_tool_outputfile.exe
+ ;;
+ esac~
+ func_to_tool_file "$lt_outputfile"~
+ if test : != "$MANIFEST_TOOL" && test -f "$lt_outputfile.manifest"; then
+ $MANIFEST_TOOL -manifest "$lt_tool_outputfile.manifest" -outputresource:"$lt_tool_outputfile" || exit 1;
+ $RM "$lt_outputfile.manifest";
+ fi'
;;
*)
# g++
# _LT_TAGVAR(hardcode_libdir_flag_spec, $1) is actually meaningless,
# as there is no search path for DLLs.
_LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir'
- _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-all-symbols'
+ _LT_TAGVAR(export_dynamic_flag_spec, $1)='$wl--export-all-symbols'
_LT_TAGVAR(allow_undefined_flag, $1)=unsupported
_LT_TAGVAR(always_export_symbols, $1)=no
_LT_TAGVAR(enable_shared_with_static_runtimes, $1)=yes
if $LD --help 2>&1 | $GREP 'auto-import' > /dev/null; then
- _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib'
- # If the export-symbols file already is a .def file (1st line
- # is EXPORTS), use it as is; otherwise, prepend...
- _LT_TAGVAR(archive_expsym_cmds, $1)='if test "x`$SED 1q $export_symbols`" = xEXPORTS; then
- cp $export_symbols $output_objdir/$soname.def;
- else
- echo EXPORTS > $output_objdir/$soname.def;
- cat $export_symbols >> $output_objdir/$soname.def;
- fi~
- $CC -shared -nostdlib $output_objdir/$soname.def $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib'
+ _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $output_objdir/$soname $wl--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib'
+ # If the export-symbols file already is a .def file, use it as
+ # is; otherwise, prepend EXPORTS...
+ _LT_TAGVAR(archive_expsym_cmds, $1)='if _LT_DLL_DEF_P([$export_symbols]); then
+ cp $export_symbols $output_objdir/$soname.def;
+ else
+ echo EXPORTS > $output_objdir/$soname.def;
+ cat $export_symbols >> $output_objdir/$soname.def;
+ fi~
+ $CC -shared -nostdlib $output_objdir/$soname.def $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $output_objdir/$soname $wl--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib'
else
_LT_TAGVAR(ld_shlibs, $1)=no
fi
@@ -6226,18 +6350,15 @@ if test "$_lt_caught_CXX_error" != yes; then
_LT_TAGVAR(ld_shlibs, $1)=yes
;;
- gnu*)
- ;;
-
haiku*)
- _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
+ _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib'
_LT_TAGVAR(link_all_deplibs, $1)=yes
;;
hpux9*)
- _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}+b ${wl}$libdir'
+ _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl+b $wl$libdir'
_LT_TAGVAR(hardcode_libdir_separator, $1)=:
- _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E'
+ _LT_TAGVAR(export_dynamic_flag_spec, $1)='$wl-E'
_LT_TAGVAR(hardcode_direct, $1)=yes
_LT_TAGVAR(hardcode_minus_L, $1)=yes # Not in the search PATH,
# but as the default
@@ -6249,7 +6370,7 @@ if test "$_lt_caught_CXX_error" != yes; then
_LT_TAGVAR(ld_shlibs, $1)=no
;;
aCC*)
- _LT_TAGVAR(archive_cmds, $1)='$RM $output_objdir/$soname~$CC -b ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib'
+ _LT_TAGVAR(archive_cmds, $1)='$RM $output_objdir/$soname~$CC -b $wl+b $wl$install_libdir -o $output_objdir/$soname $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~test "x$output_objdir/$soname" = "x$lib" || mv $output_objdir/$soname $lib'
# Commands to make compiler produce verbose output that lists
# what "hidden" libraries, object files and flags are used when
# linking a shared library.
@@ -6258,11 +6379,11 @@ if test "$_lt_caught_CXX_error" != yes; then
# explicitly linking system object files so we need to strip them
# from the output so that they don't get included in the library
# dependencies.
- output_verbose_link_cmd='templist=`($CC -b $CFLAGS -v conftest.$objext 2>&1) | $EGREP "\-L"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; func_echo_all "$list"'
+ output_verbose_link_cmd='templist=`($CC -b $CFLAGS -v conftest.$objext 2>&1) | $EGREP "\-L"`; list= ; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; func_echo_all "$list"'
;;
*)
- if test "$GXX" = yes; then
- _LT_TAGVAR(archive_cmds, $1)='$RM $output_objdir/$soname~$CC -shared -nostdlib $pic_flag ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib'
+ if test yes = "$GXX"; then
+ _LT_TAGVAR(archive_cmds, $1)='$RM $output_objdir/$soname~$CC -shared -nostdlib $pic_flag $wl+b $wl$install_libdir -o $output_objdir/$soname $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~test "x$output_objdir/$soname" = "x$lib" || mv $output_objdir/$soname $lib'
else
# FIXME: insert proper C++ library support
_LT_TAGVAR(ld_shlibs, $1)=no
@@ -6272,15 +6393,15 @@ if test "$_lt_caught_CXX_error" != yes; then
;;
hpux10*|hpux11*)
- if test $with_gnu_ld = no; then
- _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}+b ${wl}$libdir'
+ if test no = "$with_gnu_ld"; then
+ _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl+b $wl$libdir'
_LT_TAGVAR(hardcode_libdir_separator, $1)=:
case $host_cpu in
hppa*64*|ia64*)
;;
*)
- _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E'
+ _LT_TAGVAR(export_dynamic_flag_spec, $1)='$wl-E'
;;
esac
fi
@@ -6306,13 +6427,13 @@ if test "$_lt_caught_CXX_error" != yes; then
aCC*)
case $host_cpu in
hppa*64*)
- _LT_TAGVAR(archive_cmds, $1)='$CC -b ${wl}+h ${wl}$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags'
+ _LT_TAGVAR(archive_cmds, $1)='$CC -b $wl+h $wl$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags'
;;
ia64*)
- _LT_TAGVAR(archive_cmds, $1)='$CC -b ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags'
+ _LT_TAGVAR(archive_cmds, $1)='$CC -b $wl+h $wl$soname $wl+nodefaultrpath -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags'
;;
*)
- _LT_TAGVAR(archive_cmds, $1)='$CC -b ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags'
+ _LT_TAGVAR(archive_cmds, $1)='$CC -b $wl+h $wl$soname $wl+b $wl$install_libdir -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags'
;;
esac
# Commands to make compiler produce verbose output that lists
@@ -6323,20 +6444,20 @@ if test "$_lt_caught_CXX_error" != yes; then
# explicitly linking system object files so we need to strip them
# from the output so that they don't get included in the library
# dependencies.
- output_verbose_link_cmd='templist=`($CC -b $CFLAGS -v conftest.$objext 2>&1) | $GREP "\-L"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; func_echo_all "$list"'
+ output_verbose_link_cmd='templist=`($CC -b $CFLAGS -v conftest.$objext 2>&1) | $GREP "\-L"`; list= ; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; func_echo_all "$list"'
;;
*)
- if test "$GXX" = yes; then
- if test $with_gnu_ld = no; then
+ if test yes = "$GXX"; then
+ if test no = "$with_gnu_ld"; then
case $host_cpu in
hppa*64*)
- _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib -fPIC ${wl}+h ${wl}$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags'
+ _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib -fPIC $wl+h $wl$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags'
;;
ia64*)
- _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $pic_flag ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags'
+ _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $pic_flag $wl+h $wl$soname $wl+nodefaultrpath -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags'
;;
*)
- _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $pic_flag ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags'
+ _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $pic_flag $wl+h $wl$soname $wl+b $wl$install_libdir -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags'
;;
esac
fi
@@ -6351,22 +6472,22 @@ if test "$_lt_caught_CXX_error" != yes; then
interix[[3-9]]*)
_LT_TAGVAR(hardcode_direct, $1)=no
_LT_TAGVAR(hardcode_shlibpath_var, $1)=no
- _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir'
- _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E'
+ _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-rpath,$libdir'
+ _LT_TAGVAR(export_dynamic_flag_spec, $1)='$wl-E'
# Hack: On Interix 3.x, we cannot compile PIC because of a broken gcc.
# Instead, shared libraries are loaded at an image base (0x10000000 by
# default) and relocated if they conflict, which is a slow very memory
# consuming and fragmenting process. To avoid this, we pick a random,
# 256 KiB-aligned image base between 0x50000000 and 0x6FFC0000 at link
# time. Moving up from 0x10000000 also allows more sbrk(2) space.
- _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib'
- _LT_TAGVAR(archive_expsym_cmds, $1)='sed "s,^,_," $export_symbols >$output_objdir/$soname.expsym~$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--retain-symbols-file,$output_objdir/$soname.expsym ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib'
+ _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-h,$soname $wl--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib'
+ _LT_TAGVAR(archive_expsym_cmds, $1)='sed "s|^|_|" $export_symbols >$output_objdir/$soname.expsym~$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-h,$soname $wl--retain-symbols-file,$output_objdir/$soname.expsym $wl--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib'
;;
irix5* | irix6*)
case $cc_basename in
CC*)
# SGI C++
- _LT_TAGVAR(archive_cmds, $1)='$CC -shared -all -multigot $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib'
+ _LT_TAGVAR(archive_cmds, $1)='$CC -shared -all -multigot $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry $output_objdir/so_locations -o $lib'
# Archives containing C++ object files must be created using
# "CC -ar", where "CC" is the IRIX C++ compiler. This is
@@ -6375,22 +6496,22 @@ if test "$_lt_caught_CXX_error" != yes; then
_LT_TAGVAR(old_archive_cmds, $1)='$CC -ar -WR,-u -o $oldlib $oldobjs'
;;
*)
- if test "$GXX" = yes; then
- if test "$with_gnu_ld" = no; then
- _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib'
+ if test yes = "$GXX"; then
+ if test no = "$with_gnu_ld"; then
+ _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-soname $wl$soname `test -n "$verstring" && func_echo_all "$wl-set_version $wl$verstring"` $wl-update_registry $wl$output_objdir/so_locations -o $lib'
else
- _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` -o $lib'
+ _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-soname $wl$soname `test -n "$verstring" && func_echo_all "$wl-set_version $wl$verstring"` -o $lib'
fi
fi
_LT_TAGVAR(link_all_deplibs, $1)=yes
;;
esac
- _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir'
+ _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-rpath $wl$libdir'
_LT_TAGVAR(hardcode_libdir_separator, $1)=:
_LT_TAGVAR(inherit_rpath, $1)=yes
;;
- linux* | k*bsd*-gnu | kopensolaris*-gnu)
+ linux* | k*bsd*-gnu | kopensolaris*-gnu | gnu*)
case $cc_basename in
KCC*)
# Kuck and Associates, Inc. (KAI) C++ Compiler
@@ -6398,8 +6519,8 @@ if test "$_lt_caught_CXX_error" != yes; then
# KCC will only create a shared library if the output file
# ends with ".so" (or ".sl" for HP-UX), so rename the library
# to its proper name (with version) after linking.
- _LT_TAGVAR(archive_cmds, $1)='tempext=`echo $shared_ext | $SED -e '\''s/\([[^()0-9A-Za-z{}]]\)/\\\\\1/g'\''`; templib=`echo $lib | $SED -e "s/\${tempext}\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib; mv \$templib $lib'
- _LT_TAGVAR(archive_expsym_cmds, $1)='tempext=`echo $shared_ext | $SED -e '\''s/\([[^()0-9A-Za-z{}]]\)/\\\\\1/g'\''`; templib=`echo $lib | $SED -e "s/\${tempext}\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib ${wl}-retain-symbols-file,$export_symbols; mv \$templib $lib'
+ _LT_TAGVAR(archive_cmds, $1)='tempext=`echo $shared_ext | $SED -e '\''s/\([[^()0-9A-Za-z{}]]\)/\\\\\1/g'\''`; templib=`echo $lib | $SED -e "s/\$tempext\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib; mv \$templib $lib'
+ _LT_TAGVAR(archive_expsym_cmds, $1)='tempext=`echo $shared_ext | $SED -e '\''s/\([[^()0-9A-Za-z{}]]\)/\\\\\1/g'\''`; templib=`echo $lib | $SED -e "s/\$tempext\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib $wl-retain-symbols-file,$export_symbols; mv \$templib $lib'
# Commands to make compiler produce verbose output that lists
# what "hidden" libraries, object files and flags are used when
# linking a shared library.
@@ -6408,10 +6529,10 @@ if test "$_lt_caught_CXX_error" != yes; then
# explicitly linking system object files so we need to strip them
# from the output so that they don't get included in the library
# dependencies.
- output_verbose_link_cmd='templist=`$CC $CFLAGS -v conftest.$objext -o libconftest$shared_ext 2>&1 | $GREP "ld"`; rm -f libconftest$shared_ext; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; func_echo_all "$list"'
+ output_verbose_link_cmd='templist=`$CC $CFLAGS -v conftest.$objext -o libconftest$shared_ext 2>&1 | $GREP "ld"`; rm -f libconftest$shared_ext; list= ; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; func_echo_all "$list"'
- _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir'
- _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-dynamic'
+ _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-rpath,$libdir'
+ _LT_TAGVAR(export_dynamic_flag_spec, $1)='$wl--export-dynamic'
# Archives containing C++ object files must be created using
# "CC -Bstatic", where "CC" is the KAI C++ compiler.
@@ -6425,59 +6546,59 @@ if test "$_lt_caught_CXX_error" != yes; then
# earlier do not add the objects themselves.
case `$CC -V 2>&1` in
*"Version 7."*)
- _LT_TAGVAR(archive_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib'
- _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
+ _LT_TAGVAR(archive_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-soname $wl$soname -o $lib'
+ _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-soname $wl$soname $wl-retain-symbols-file $wl$export_symbols -o $lib'
;;
*) # Version 8.0 or newer
tmp_idyn=
case $host_cpu in
ia64*) tmp_idyn=' -i_dynamic';;
esac
- _LT_TAGVAR(archive_cmds, $1)='$CC -shared'"$tmp_idyn"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
- _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared'"$tmp_idyn"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
+ _LT_TAGVAR(archive_cmds, $1)='$CC -shared'"$tmp_idyn"' $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib'
+ _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared'"$tmp_idyn"' $libobjs $deplibs $compiler_flags $wl-soname $wl$soname $wl-retain-symbols-file $wl$export_symbols -o $lib'
;;
esac
_LT_TAGVAR(archive_cmds_need_lc, $1)=no
- _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir'
- _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-dynamic'
- _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive$convenience ${wl}--no-whole-archive'
+ _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-rpath,$libdir'
+ _LT_TAGVAR(export_dynamic_flag_spec, $1)='$wl--export-dynamic'
+ _LT_TAGVAR(whole_archive_flag_spec, $1)='$wl--whole-archive$convenience $wl--no-whole-archive'
;;
pgCC* | pgcpp*)
# Portland Group C++ compiler
case `$CC -V` in
*pgCC\ [[1-5]].* | *pgcpp\ [[1-5]].*)
_LT_TAGVAR(prelink_cmds, $1)='tpldir=Template.dir~
- rm -rf $tpldir~
- $CC --prelink_objects --instantiation_dir $tpldir $objs $libobjs $compile_deplibs~
- compile_command="$compile_command `find $tpldir -name \*.o | sort | $NL2SP`"'
+ rm -rf $tpldir~
+ $CC --prelink_objects --instantiation_dir $tpldir $objs $libobjs $compile_deplibs~
+ compile_command="$compile_command `find $tpldir -name \*.o | sort | $NL2SP`"'
_LT_TAGVAR(old_archive_cmds, $1)='tpldir=Template.dir~
- rm -rf $tpldir~
- $CC --prelink_objects --instantiation_dir $tpldir $oldobjs$old_deplibs~
- $AR $AR_FLAGS $oldlib$oldobjs$old_deplibs `find $tpldir -name \*.o | sort | $NL2SP`~
- $RANLIB $oldlib'
+ rm -rf $tpldir~
+ $CC --prelink_objects --instantiation_dir $tpldir $oldobjs$old_deplibs~
+ $AR $AR_FLAGS $oldlib$oldobjs$old_deplibs `find $tpldir -name \*.o | sort | $NL2SP`~
+ $RANLIB $oldlib'
_LT_TAGVAR(archive_cmds, $1)='tpldir=Template.dir~
- rm -rf $tpldir~
- $CC --prelink_objects --instantiation_dir $tpldir $predep_objects $libobjs $deplibs $convenience $postdep_objects~
- $CC -shared $pic_flag $predep_objects $libobjs $deplibs `find $tpldir -name \*.o | sort | $NL2SP` $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname -o $lib'
+ rm -rf $tpldir~
+ $CC --prelink_objects --instantiation_dir $tpldir $predep_objects $libobjs $deplibs $convenience $postdep_objects~
+ $CC -shared $pic_flag $predep_objects $libobjs $deplibs `find $tpldir -name \*.o | sort | $NL2SP` $postdep_objects $compiler_flags $wl-soname $wl$soname -o $lib'
_LT_TAGVAR(archive_expsym_cmds, $1)='tpldir=Template.dir~
- rm -rf $tpldir~
- $CC --prelink_objects --instantiation_dir $tpldir $predep_objects $libobjs $deplibs $convenience $postdep_objects~
- $CC -shared $pic_flag $predep_objects $libobjs $deplibs `find $tpldir -name \*.o | sort | $NL2SP` $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname ${wl}-retain-symbols-file ${wl}$export_symbols -o $lib'
+ rm -rf $tpldir~
+ $CC --prelink_objects --instantiation_dir $tpldir $predep_objects $libobjs $deplibs $convenience $postdep_objects~
+ $CC -shared $pic_flag $predep_objects $libobjs $deplibs `find $tpldir -name \*.o | sort | $NL2SP` $postdep_objects $compiler_flags $wl-soname $wl$soname $wl-retain-symbols-file $wl$export_symbols -o $lib'
;;
*) # Version 6 and above use weak symbols
- _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname -o $lib'
- _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname ${wl}-retain-symbols-file ${wl}$export_symbols -o $lib'
+ _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-soname $wl$soname -o $lib'
+ _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-soname $wl$soname $wl-retain-symbols-file $wl$export_symbols -o $lib'
;;
esac
- _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}--rpath ${wl}$libdir'
- _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-dynamic'
- _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` ${wl}--no-whole-archive'
+ _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl--rpath $wl$libdir'
+ _LT_TAGVAR(export_dynamic_flag_spec, $1)='$wl--export-dynamic'
+ _LT_TAGVAR(whole_archive_flag_spec, $1)='$wl--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` $wl--no-whole-archive'
;;
cxx*)
# Compaq C++
- _LT_TAGVAR(archive_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib'
- _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib ${wl}-retain-symbols-file $wl$export_symbols'
+ _LT_TAGVAR(archive_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-soname $wl$soname -o $lib'
+ _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-soname $wl$soname -o $lib $wl-retain-symbols-file $wl$export_symbols'
runpath_var=LD_RUN_PATH
_LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-rpath $libdir'
@@ -6491,18 +6612,18 @@ if test "$_lt_caught_CXX_error" != yes; then
# explicitly linking system object files so we need to strip them
# from the output so that they don't get included in the library
# dependencies.
- output_verbose_link_cmd='templist=`$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP "ld"`; templist=`func_echo_all "$templist" | $SED "s/\(^.*ld.*\)\( .*ld .*$\)/\1/"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; func_echo_all "X$list" | $Xsed'
+ output_verbose_link_cmd='templist=`$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP "ld"`; templist=`func_echo_all "$templist" | $SED "s/\(^.*ld.*\)\( .*ld .*$\)/\1/"`; list= ; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; func_echo_all "X$list" | $Xsed'
;;
xl* | mpixl* | bgxl*)
# IBM XL 8.0 on PPC, with GNU ld
- _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir'
- _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-dynamic'
- _LT_TAGVAR(archive_cmds, $1)='$CC -qmkshrobj $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
- if test "x$supports_anon_versioning" = xyes; then
+ _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-rpath $wl$libdir'
+ _LT_TAGVAR(export_dynamic_flag_spec, $1)='$wl--export-dynamic'
+ _LT_TAGVAR(archive_cmds, $1)='$CC -qmkshrobj $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib'
+ if test yes = "$supports_anon_versioning"; then
_LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $output_objdir/$libname.ver~
- cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~
- echo "local: *; };" >> $output_objdir/$libname.ver~
- $CC -qmkshrobj $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-version-script ${wl}$output_objdir/$libname.ver -o $lib'
+ cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~
+ echo "local: *; };" >> $output_objdir/$libname.ver~
+ $CC -qmkshrobj $libobjs $deplibs $compiler_flags $wl-soname $wl$soname $wl-version-script $wl$output_objdir/$libname.ver -o $lib'
fi
;;
*)
@@ -6510,10 +6631,10 @@ if test "$_lt_caught_CXX_error" != yes; then
*Sun\ C*)
# Sun C++ 5.9
_LT_TAGVAR(no_undefined_flag, $1)=' -zdefs'
- _LT_TAGVAR(archive_cmds, $1)='$CC -G${allow_undefined_flag} -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags'
- _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -G${allow_undefined_flag} -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-retain-symbols-file ${wl}$export_symbols'
+ _LT_TAGVAR(archive_cmds, $1)='$CC -G$allow_undefined_flag -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags'
+ _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -G$allow_undefined_flag -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-retain-symbols-file $wl$export_symbols'
_LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir'
- _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive`new_convenience=; for conv in $convenience\"\"; do test -z \"$conv\" || new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` ${wl}--no-whole-archive'
+ _LT_TAGVAR(whole_archive_flag_spec, $1)='$wl--whole-archive`new_convenience=; for conv in $convenience\"\"; do test -z \"$conv\" || new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` $wl--no-whole-archive'
_LT_TAGVAR(compiler_needs_object, $1)=yes
# Not sure whether something based on
@@ -6571,22 +6692,17 @@ if test "$_lt_caught_CXX_error" != yes; then
_LT_TAGVAR(ld_shlibs, $1)=yes
;;
- openbsd2*)
- # C++ shared libraries are fairly broken
- _LT_TAGVAR(ld_shlibs, $1)=no
- ;;
-
- openbsd*)
+ openbsd* | bitrig*)
if test -f /usr/libexec/ld.so; then
_LT_TAGVAR(hardcode_direct, $1)=yes
_LT_TAGVAR(hardcode_shlibpath_var, $1)=no
_LT_TAGVAR(hardcode_direct_absolute, $1)=yes
_LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $lib'
- _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir'
- if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then
- _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-retain-symbols-file,$export_symbols -o $lib'
- _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E'
- _LT_TAGVAR(whole_archive_flag_spec, $1)="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive'
+ _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-rpath,$libdir'
+ if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`"; then
+ _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-retain-symbols-file,$export_symbols -o $lib'
+ _LT_TAGVAR(export_dynamic_flag_spec, $1)='$wl-E'
+ _LT_TAGVAR(whole_archive_flag_spec, $1)=$wlarc'--whole-archive$convenience '$wlarc'--no-whole-archive'
fi
output_verbose_link_cmd=func_echo_all
else
@@ -6602,9 +6718,9 @@ if test "$_lt_caught_CXX_error" != yes; then
# KCC will only create a shared library if the output file
# ends with ".so" (or ".sl" for HP-UX), so rename the library
# to its proper name (with version) after linking.
- _LT_TAGVAR(archive_cmds, $1)='tempext=`echo $shared_ext | $SED -e '\''s/\([[^()0-9A-Za-z{}]]\)/\\\\\1/g'\''`; templib=`echo "$lib" | $SED -e "s/\${tempext}\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib; mv \$templib $lib'
+ _LT_TAGVAR(archive_cmds, $1)='tempext=`echo $shared_ext | $SED -e '\''s/\([[^()0-9A-Za-z{}]]\)/\\\\\1/g'\''`; templib=`echo "$lib" | $SED -e "s/\$tempext\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib; mv \$templib $lib'
- _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir'
+ _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-rpath,$libdir'
_LT_TAGVAR(hardcode_libdir_separator, $1)=:
# Archives containing C++ object files must be created using
@@ -6622,17 +6738,17 @@ if test "$_lt_caught_CXX_error" != yes; then
cxx*)
case $host in
osf3*)
- _LT_TAGVAR(allow_undefined_flag, $1)=' ${wl}-expect_unresolved ${wl}\*'
- _LT_TAGVAR(archive_cmds, $1)='$CC -shared${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $soname `test -n "$verstring" && func_echo_all "${wl}-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib'
- _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir'
+ _LT_TAGVAR(allow_undefined_flag, $1)=' $wl-expect_unresolved $wl\*'
+ _LT_TAGVAR(archive_cmds, $1)='$CC -shared$allow_undefined_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-soname $soname `test -n "$verstring" && func_echo_all "$wl-set_version $verstring"` -update_registry $output_objdir/so_locations -o $lib'
+ _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-rpath $wl$libdir'
;;
*)
_LT_TAGVAR(allow_undefined_flag, $1)=' -expect_unresolved \*'
- _LT_TAGVAR(archive_cmds, $1)='$CC -shared${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -msym -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib'
+ _LT_TAGVAR(archive_cmds, $1)='$CC -shared$allow_undefined_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -msym -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry $output_objdir/so_locations -o $lib'
_LT_TAGVAR(archive_expsym_cmds, $1)='for i in `cat $export_symbols`; do printf "%s %s\\n" -exported_symbol "\$i" >> $lib.exp; done~
- echo "-hidden">> $lib.exp~
- $CC -shared$allow_undefined_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -msym -soname $soname ${wl}-input ${wl}$lib.exp `test -n "$verstring" && $ECHO "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib~
- $RM $lib.exp'
+ echo "-hidden">> $lib.exp~
+ $CC -shared$allow_undefined_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -msym -soname $soname $wl-input $wl$lib.exp `test -n "$verstring" && $ECHO "-set_version $verstring"` -update_registry $output_objdir/so_locations -o $lib~
+ $RM $lib.exp'
_LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-rpath $libdir'
;;
esac
@@ -6647,21 +6763,21 @@ if test "$_lt_caught_CXX_error" != yes; then
# explicitly linking system object files so we need to strip them
# from the output so that they don't get included in the library
# dependencies.
- output_verbose_link_cmd='templist=`$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP "ld" | $GREP -v "ld:"`; templist=`func_echo_all "$templist" | $SED "s/\(^.*ld.*\)\( .*ld.*$\)/\1/"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; func_echo_all "$list"'
+ output_verbose_link_cmd='templist=`$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP "ld" | $GREP -v "ld:"`; templist=`func_echo_all "$templist" | $SED "s/\(^.*ld.*\)\( .*ld.*$\)/\1/"`; list= ; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; func_echo_all "$list"'
;;
*)
- if test "$GXX" = yes && test "$with_gnu_ld" = no; then
- _LT_TAGVAR(allow_undefined_flag, $1)=' ${wl}-expect_unresolved ${wl}\*'
+ if test yes,no = "$GXX,$with_gnu_ld"; then
+ _LT_TAGVAR(allow_undefined_flag, $1)=' $wl-expect_unresolved $wl\*'
case $host in
osf3*)
- _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib ${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib'
+ _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $allow_undefined_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-soname $wl$soname `test -n "$verstring" && func_echo_all "$wl-set_version $wl$verstring"` $wl-update_registry $wl$output_objdir/so_locations -o $lib'
;;
*)
- _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -nostdlib ${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-msym ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib'
+ _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -nostdlib $allow_undefined_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-msym $wl-soname $wl$soname `test -n "$verstring" && func_echo_all "$wl-set_version $wl$verstring"` $wl-update_registry $wl$output_objdir/so_locations -o $lib'
;;
esac
- _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir'
+ _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-rpath $wl$libdir'
_LT_TAGVAR(hardcode_libdir_separator, $1)=:
# Commands to make compiler produce verbose output that lists
@@ -6707,9 +6823,9 @@ if test "$_lt_caught_CXX_error" != yes; then
# Sun C++ 4.2, 5.x and Centerline C++
_LT_TAGVAR(archive_cmds_need_lc,$1)=yes
_LT_TAGVAR(no_undefined_flag, $1)=' -zdefs'
- _LT_TAGVAR(archive_cmds, $1)='$CC -G${allow_undefined_flag} -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags'
+ _LT_TAGVAR(archive_cmds, $1)='$CC -G$allow_undefined_flag -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags'
_LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~
- $CC -G${allow_undefined_flag} ${wl}-M ${wl}$lib.exp -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$RM $lib.exp'
+ $CC -G$allow_undefined_flag $wl-M $wl$lib.exp -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$RM $lib.exp'
_LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir'
_LT_TAGVAR(hardcode_shlibpath_var, $1)=no
@@ -6717,7 +6833,7 @@ if test "$_lt_caught_CXX_error" != yes; then
solaris2.[[0-5]] | solaris2.[[0-5]].*) ;;
*)
# The compiler driver will combine and reorder linker options,
- # but understands `-z linker_flag'.
+ # but understands '-z linker_flag'.
# Supported since Solaris 2.6 (maybe 2.5.1?)
_LT_TAGVAR(whole_archive_flag_spec, $1)='-z allextract$convenience -z defaultextract'
;;
@@ -6734,30 +6850,30 @@ if test "$_lt_caught_CXX_error" != yes; then
;;
gcx*)
# Green Hills C++ Compiler
- _LT_TAGVAR(archive_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-h $wl$soname -o $lib'
+ _LT_TAGVAR(archive_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-h $wl$soname -o $lib'
# The C++ compiler must be used to create the archive.
_LT_TAGVAR(old_archive_cmds, $1)='$CC $LDFLAGS -archive -o $oldlib $oldobjs'
;;
*)
# GNU C++ compiler with Solaris linker
- if test "$GXX" = yes && test "$with_gnu_ld" = no; then
- _LT_TAGVAR(no_undefined_flag, $1)=' ${wl}-z ${wl}defs'
+ if test yes,no = "$GXX,$with_gnu_ld"; then
+ _LT_TAGVAR(no_undefined_flag, $1)=' $wl-z ${wl}defs'
if $CC --version | $GREP -v '^2\.7' > /dev/null; then
- _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -nostdlib $LDFLAGS $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-h $wl$soname -o $lib'
+ _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-h $wl$soname -o $lib'
_LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~
- $CC -shared $pic_flag -nostdlib ${wl}-M $wl$lib.exp -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$RM $lib.exp'
+ $CC -shared $pic_flag -nostdlib $wl-M $wl$lib.exp $wl-h $wl$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$RM $lib.exp'
# Commands to make compiler produce verbose output that lists
# what "hidden" libraries, object files and flags are used when
# linking a shared library.
output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP -v "^Configured with:" | $GREP "\-L"'
else
- # g++ 2.7 appears to require `-G' NOT `-shared' on this
+ # g++ 2.7 appears to require '-G' NOT '-shared' on this
# platform.
- _LT_TAGVAR(archive_cmds, $1)='$CC -G -nostdlib $LDFLAGS $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-h $wl$soname -o $lib'
+ _LT_TAGVAR(archive_cmds, $1)='$CC -G -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-h $wl$soname -o $lib'
_LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~
- $CC -G -nostdlib ${wl}-M $wl$lib.exp -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$RM $lib.exp'
+ $CC -G -nostdlib $wl-M $wl$lib.exp $wl-h $wl$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$RM $lib.exp'
# Commands to make compiler produce verbose output that lists
# what "hidden" libraries, object files and flags are used when
@@ -6765,11 +6881,11 @@ if test "$_lt_caught_CXX_error" != yes; then
output_verbose_link_cmd='$CC -G $CFLAGS -v conftest.$objext 2>&1 | $GREP -v "^Configured with:" | $GREP "\-L"'
fi
- _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-R $wl$libdir'
+ _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-R $wl$libdir'
case $host_os in
solaris2.[[0-5]] | solaris2.[[0-5]].*) ;;
*)
- _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}-z ${wl}allextract$convenience ${wl}-z ${wl}defaultextract'
+ _LT_TAGVAR(whole_archive_flag_spec, $1)='$wl-z ${wl}allextract$convenience $wl-z ${wl}defaultextract'
;;
esac
fi
@@ -6778,52 +6894,52 @@ if test "$_lt_caught_CXX_error" != yes; then
;;
sysv4*uw2* | sysv5OpenUNIX* | sysv5UnixWare7.[[01]].[[10]]* | unixware7* | sco3.2v5.0.[[024]]*)
- _LT_TAGVAR(no_undefined_flag, $1)='${wl}-z,text'
+ _LT_TAGVAR(no_undefined_flag, $1)='$wl-z,text'
_LT_TAGVAR(archive_cmds_need_lc, $1)=no
_LT_TAGVAR(hardcode_shlibpath_var, $1)=no
runpath_var='LD_RUN_PATH'
case $cc_basename in
CC*)
- _LT_TAGVAR(archive_cmds, $1)='$CC -G ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
- _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
+ _LT_TAGVAR(archive_cmds, $1)='$CC -G $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
+ _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -G $wl-Bexport:$export_symbols $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
;;
*)
- _LT_TAGVAR(archive_cmds, $1)='$CC -shared ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
- _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
+ _LT_TAGVAR(archive_cmds, $1)='$CC -shared $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
+ _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $wl-Bexport:$export_symbols $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
;;
esac
;;
sysv5* | sco3.2v5* | sco5v6*)
- # Note: We can NOT use -z defs as we might desire, because we do not
+ # Note: We CANNOT use -z defs as we might desire, because we do not
# link with -lc, and that would cause any symbols used from libc to
# always be unresolved, which means just about no library would
# ever link correctly. If we're not using GNU ld we use -z text
# though, which does catch some bad symbols but isn't as heavy-handed
# as -z defs.
- _LT_TAGVAR(no_undefined_flag, $1)='${wl}-z,text'
- _LT_TAGVAR(allow_undefined_flag, $1)='${wl}-z,nodefs'
+ _LT_TAGVAR(no_undefined_flag, $1)='$wl-z,text'
+ _LT_TAGVAR(allow_undefined_flag, $1)='$wl-z,nodefs'
_LT_TAGVAR(archive_cmds_need_lc, $1)=no
_LT_TAGVAR(hardcode_shlibpath_var, $1)=no
- _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-R,$libdir'
+ _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-R,$libdir'
_LT_TAGVAR(hardcode_libdir_separator, $1)=':'
_LT_TAGVAR(link_all_deplibs, $1)=yes
- _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-Bexport'
+ _LT_TAGVAR(export_dynamic_flag_spec, $1)='$wl-Bexport'
runpath_var='LD_RUN_PATH'
case $cc_basename in
CC*)
- _LT_TAGVAR(archive_cmds, $1)='$CC -G ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
- _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
+ _LT_TAGVAR(archive_cmds, $1)='$CC -G $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
+ _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -G $wl-Bexport:$export_symbols $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
_LT_TAGVAR(old_archive_cmds, $1)='$CC -Tprelink_objects $oldobjs~
- '"$_LT_TAGVAR(old_archive_cmds, $1)"
+ '"$_LT_TAGVAR(old_archive_cmds, $1)"
_LT_TAGVAR(reload_cmds, $1)='$CC -Tprelink_objects $reload_objs~
- '"$_LT_TAGVAR(reload_cmds, $1)"
+ '"$_LT_TAGVAR(reload_cmds, $1)"
;;
*)
- _LT_TAGVAR(archive_cmds, $1)='$CC -shared ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
- _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
+ _LT_TAGVAR(archive_cmds, $1)='$CC -shared $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
+ _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $wl-Bexport:$export_symbols $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
;;
esac
;;
@@ -6854,10 +6970,10 @@ if test "$_lt_caught_CXX_error" != yes; then
esac
AC_MSG_RESULT([$_LT_TAGVAR(ld_shlibs, $1)])
- test "$_LT_TAGVAR(ld_shlibs, $1)" = no && can_build_shared=no
+ test no = "$_LT_TAGVAR(ld_shlibs, $1)" && can_build_shared=no
- _LT_TAGVAR(GCC, $1)="$GXX"
- _LT_TAGVAR(LD, $1)="$LD"
+ _LT_TAGVAR(GCC, $1)=$GXX
+ _LT_TAGVAR(LD, $1)=$LD
## CAVEAT EMPTOR:
## There is no encapsulation within the following macros, do not change
@@ -6884,7 +7000,7 @@ if test "$_lt_caught_CXX_error" != yes; then
lt_cv_path_LD=$lt_save_path_LD
lt_cv_prog_gnu_ldcxx=$lt_cv_prog_gnu_ld
lt_cv_prog_gnu_ld=$lt_save_with_gnu_ld
-fi # test "$_lt_caught_CXX_error" != yes
+fi # test yes != "$_lt_caught_CXX_error"
AC_LANG_POP
])# _LT_LANG_CXX_CONFIG
@@ -6906,9 +7022,9 @@ AC_REQUIRE([_LT_DECL_SED])
AC_REQUIRE([_LT_PROG_ECHO_BACKSLASH])
func_stripname_cnf ()
{
- case ${2} in
- .*) func_stripname_result=`$ECHO "${3}" | $SED "s%^${1}%%; s%\\\\${2}\$%%"`;;
- *) func_stripname_result=`$ECHO "${3}" | $SED "s%^${1}%%; s%${2}\$%%"`;;
+ case @S|@2 in
+ .*) func_stripname_result=`$ECHO "@S|@3" | $SED "s%^@S|@1%%; s%\\\\@S|@2\$%%"`;;
+ *) func_stripname_result=`$ECHO "@S|@3" | $SED "s%^@S|@1%%; s%@S|@2\$%%"`;;
esac
} # func_stripname_cnf
])# _LT_FUNC_STRIPNAME_CNF
@@ -6996,13 +7112,13 @@ if AC_TRY_EVAL(ac_compile); then
pre_test_object_deps_done=no
for p in `eval "$output_verbose_link_cmd"`; do
- case ${prev}${p} in
+ case $prev$p in
-L* | -R* | -l*)
# Some compilers place space between "-{L,R}" and the path.
# Remove the space.
- if test $p = "-L" ||
- test $p = "-R"; then
+ if test x-L = "$p" ||
+ test x-R = "$p"; then
prev=$p
continue
fi
@@ -7018,16 +7134,16 @@ if AC_TRY_EVAL(ac_compile); then
case $p in
=*) func_stripname_cnf '=' '' "$p"; p=$lt_sysroot$func_stripname_result ;;
esac
- if test "$pre_test_object_deps_done" = no; then
- case ${prev} in
+ if test no = "$pre_test_object_deps_done"; then
+ case $prev in
-L | -R)
# Internal compiler library paths should come after those
# provided the user. The postdeps already come after the
# user supplied libs so there is no need to process them.
if test -z "$_LT_TAGVAR(compiler_lib_search_path, $1)"; then
- _LT_TAGVAR(compiler_lib_search_path, $1)="${prev}${p}"
+ _LT_TAGVAR(compiler_lib_search_path, $1)=$prev$p
else
- _LT_TAGVAR(compiler_lib_search_path, $1)="${_LT_TAGVAR(compiler_lib_search_path, $1)} ${prev}${p}"
+ _LT_TAGVAR(compiler_lib_search_path, $1)="${_LT_TAGVAR(compiler_lib_search_path, $1)} $prev$p"
fi
;;
# The "-l" case would never come before the object being
@@ -7035,9 +7151,9 @@ if AC_TRY_EVAL(ac_compile); then
esac
else
if test -z "$_LT_TAGVAR(postdeps, $1)"; then
- _LT_TAGVAR(postdeps, $1)="${prev}${p}"
+ _LT_TAGVAR(postdeps, $1)=$prev$p
else
- _LT_TAGVAR(postdeps, $1)="${_LT_TAGVAR(postdeps, $1)} ${prev}${p}"
+ _LT_TAGVAR(postdeps, $1)="${_LT_TAGVAR(postdeps, $1)} $prev$p"
fi
fi
prev=
@@ -7052,15 +7168,15 @@ if AC_TRY_EVAL(ac_compile); then
continue
fi
- if test "$pre_test_object_deps_done" = no; then
+ if test no = "$pre_test_object_deps_done"; then
if test -z "$_LT_TAGVAR(predep_objects, $1)"; then
- _LT_TAGVAR(predep_objects, $1)="$p"
+ _LT_TAGVAR(predep_objects, $1)=$p
else
_LT_TAGVAR(predep_objects, $1)="$_LT_TAGVAR(predep_objects, $1) $p"
fi
else
if test -z "$_LT_TAGVAR(postdep_objects, $1)"; then
- _LT_TAGVAR(postdep_objects, $1)="$p"
+ _LT_TAGVAR(postdep_objects, $1)=$p
else
_LT_TAGVAR(postdep_objects, $1)="$_LT_TAGVAR(postdep_objects, $1) $p"
fi
@@ -7107,7 +7223,7 @@ linux*)
;;
esac
- if test "$solaris_use_stlport4" != yes; then
+ if test yes != "$solaris_use_stlport4"; then
_LT_TAGVAR(postdeps,$1)='-library=Cstd -library=Crun'
fi
;;
@@ -7130,7 +7246,7 @@ solaris*)
# Adding this requires a known-good setup of shared libraries for
# Sun compiler versions before 5.6, else PIC objects from an old
# archive will be linked into the output, leading to subtle bugs.
- if test "$solaris_use_stlport4" != yes; then
+ if test yes != "$solaris_use_stlport4"; then
_LT_TAGVAR(postdeps,$1)='-library=Cstd -library=Crun'
fi
;;
@@ -7144,7 +7260,7 @@ case " $_LT_TAGVAR(postdeps, $1) " in
esac
_LT_TAGVAR(compiler_lib_search_dirs, $1)=
if test -n "${_LT_TAGVAR(compiler_lib_search_path, $1)}"; then
- _LT_TAGVAR(compiler_lib_search_dirs, $1)=`echo " ${_LT_TAGVAR(compiler_lib_search_path, $1)}" | ${SED} -e 's! -L! !g' -e 's!^ !!'`
+ _LT_TAGVAR(compiler_lib_search_dirs, $1)=`echo " ${_LT_TAGVAR(compiler_lib_search_path, $1)}" | $SED -e 's! -L! !g' -e 's!^ !!'`
fi
_LT_TAGDECL([], [compiler_lib_search_dirs], [1],
[The directories searched by this compiler when creating a shared library])
@@ -7164,10 +7280,10 @@ _LT_TAGDECL([], [compiler_lib_search_path], [1],
# --------------------------
# Ensure that the configuration variables for a Fortran 77 compiler are
# suitably defined. These variables are subsequently used by _LT_CONFIG
-# to write the compiler configuration to `libtool'.
+# to write the compiler configuration to 'libtool'.
m4_defun([_LT_LANG_F77_CONFIG],
[AC_LANG_PUSH(Fortran 77)
-if test -z "$F77" || test "X$F77" = "Xno"; then
+if test -z "$F77" || test no = "$F77"; then
_lt_disable_F77=yes
fi
@@ -7204,7 +7320,7 @@ _LT_TAGVAR(objext, $1)=$objext
# the F77 compiler isn't working. Some variables (like enable_shared)
# are currently assumed to apply to all compilers on this platform,
# and will be corrupted by setting them based on a non-working compiler.
-if test "$_lt_disable_F77" != yes; then
+if test yes != "$_lt_disable_F77"; then
# Code to be used in simple compile tests
lt_simple_compile_test_code="\
subroutine t
@@ -7226,7 +7342,7 @@ if test "$_lt_disable_F77" != yes; then
_LT_LINKER_BOILERPLATE
# Allow CC to be a program name with arguments.
- lt_save_CC="$CC"
+ lt_save_CC=$CC
lt_save_GCC=$GCC
lt_save_CFLAGS=$CFLAGS
CC=${F77-"f77"}
@@ -7240,21 +7356,21 @@ if test "$_lt_disable_F77" != yes; then
AC_MSG_RESULT([$can_build_shared])
AC_MSG_CHECKING([whether to build shared libraries])
- test "$can_build_shared" = "no" && enable_shared=no
+ test no = "$can_build_shared" && enable_shared=no
# On AIX, shared libraries and static libraries use the same namespace, and
# are all built from PIC.
case $host_os in
aix3*)
- test "$enable_shared" = yes && enable_static=no
+ test yes = "$enable_shared" && enable_static=no
if test -n "$RANLIB"; then
archive_cmds="$archive_cmds~\$RANLIB \$lib"
postinstall_cmds='$RANLIB $lib'
fi
;;
aix[[4-9]]*)
- if test "$host_cpu" != ia64 && test "$aix_use_runtimelinking" = no ; then
- test "$enable_shared" = yes && enable_static=no
+ if test ia64 != "$host_cpu" && test no = "$aix_use_runtimelinking"; then
+ test yes = "$enable_shared" && enable_static=no
fi
;;
esac
@@ -7262,11 +7378,11 @@ if test "$_lt_disable_F77" != yes; then
AC_MSG_CHECKING([whether to build static libraries])
# Make sure either enable_shared or enable_static is yes.
- test "$enable_shared" = yes || enable_static=yes
+ test yes = "$enable_shared" || enable_static=yes
AC_MSG_RESULT([$enable_static])
- _LT_TAGVAR(GCC, $1)="$G77"
- _LT_TAGVAR(LD, $1)="$LD"
+ _LT_TAGVAR(GCC, $1)=$G77
+ _LT_TAGVAR(LD, $1)=$LD
## CAVEAT EMPTOR:
## There is no encapsulation within the following macros, do not change
@@ -7283,9 +7399,9 @@ if test "$_lt_disable_F77" != yes; then
fi # test -n "$compiler"
GCC=$lt_save_GCC
- CC="$lt_save_CC"
- CFLAGS="$lt_save_CFLAGS"
-fi # test "$_lt_disable_F77" != yes
+ CC=$lt_save_CC
+ CFLAGS=$lt_save_CFLAGS
+fi # test yes != "$_lt_disable_F77"
AC_LANG_POP
])# _LT_LANG_F77_CONFIG
@@ -7295,11 +7411,11 @@ AC_LANG_POP
# -------------------------
# Ensure that the configuration variables for a Fortran compiler are
# suitably defined. These variables are subsequently used by _LT_CONFIG
-# to write the compiler configuration to `libtool'.
+# to write the compiler configuration to 'libtool'.
m4_defun([_LT_LANG_FC_CONFIG],
[AC_LANG_PUSH(Fortran)
-if test -z "$FC" || test "X$FC" = "Xno"; then
+if test -z "$FC" || test no = "$FC"; then
_lt_disable_FC=yes
fi
@@ -7336,7 +7452,7 @@ _LT_TAGVAR(objext, $1)=$objext
# the FC compiler isn't working. Some variables (like enable_shared)
# are currently assumed to apply to all compilers on this platform,
# and will be corrupted by setting them based on a non-working compiler.
-if test "$_lt_disable_FC" != yes; then
+if test yes != "$_lt_disable_FC"; then
# Code to be used in simple compile tests
lt_simple_compile_test_code="\
subroutine t
@@ -7358,7 +7474,7 @@ if test "$_lt_disable_FC" != yes; then
_LT_LINKER_BOILERPLATE
# Allow CC to be a program name with arguments.
- lt_save_CC="$CC"
+ lt_save_CC=$CC
lt_save_GCC=$GCC
lt_save_CFLAGS=$CFLAGS
CC=${FC-"f95"}
@@ -7374,21 +7490,21 @@ if test "$_lt_disable_FC" != yes; then
AC_MSG_RESULT([$can_build_shared])
AC_MSG_CHECKING([whether to build shared libraries])
- test "$can_build_shared" = "no" && enable_shared=no
+ test no = "$can_build_shared" && enable_shared=no
# On AIX, shared libraries and static libraries use the same namespace, and
# are all built from PIC.
case $host_os in
aix3*)
- test "$enable_shared" = yes && enable_static=no
+ test yes = "$enable_shared" && enable_static=no
if test -n "$RANLIB"; then
archive_cmds="$archive_cmds~\$RANLIB \$lib"
postinstall_cmds='$RANLIB $lib'
fi
;;
aix[[4-9]]*)
- if test "$host_cpu" != ia64 && test "$aix_use_runtimelinking" = no ; then
- test "$enable_shared" = yes && enable_static=no
+ if test ia64 != "$host_cpu" && test no = "$aix_use_runtimelinking"; then
+ test yes = "$enable_shared" && enable_static=no
fi
;;
esac
@@ -7396,11 +7512,11 @@ if test "$_lt_disable_FC" != yes; then
AC_MSG_CHECKING([whether to build static libraries])
# Make sure either enable_shared or enable_static is yes.
- test "$enable_shared" = yes || enable_static=yes
+ test yes = "$enable_shared" || enable_static=yes
AC_MSG_RESULT([$enable_static])
- _LT_TAGVAR(GCC, $1)="$ac_cv_fc_compiler_gnu"
- _LT_TAGVAR(LD, $1)="$LD"
+ _LT_TAGVAR(GCC, $1)=$ac_cv_fc_compiler_gnu
+ _LT_TAGVAR(LD, $1)=$LD
## CAVEAT EMPTOR:
## There is no encapsulation within the following macros, do not change
@@ -7420,7 +7536,7 @@ if test "$_lt_disable_FC" != yes; then
GCC=$lt_save_GCC
CC=$lt_save_CC
CFLAGS=$lt_save_CFLAGS
-fi # test "$_lt_disable_FC" != yes
+fi # test yes != "$_lt_disable_FC"
AC_LANG_POP
])# _LT_LANG_FC_CONFIG
@@ -7430,7 +7546,7 @@ AC_LANG_POP
# --------------------------
# Ensure that the configuration variables for the GNU Java Compiler compiler
# are suitably defined. These variables are subsequently used by _LT_CONFIG
-# to write the compiler configuration to `libtool'.
+# to write the compiler configuration to 'libtool'.
m4_defun([_LT_LANG_GCJ_CONFIG],
[AC_REQUIRE([LT_PROG_GCJ])dnl
AC_LANG_SAVE
@@ -7464,7 +7580,7 @@ CC=${GCJ-"gcj"}
CFLAGS=$GCJFLAGS
compiler=$CC
_LT_TAGVAR(compiler, $1)=$CC
-_LT_TAGVAR(LD, $1)="$LD"
+_LT_TAGVAR(LD, $1)=$LD
_LT_CC_BASENAME([$compiler])
# GCJ did not exist at the time GCC didn't implicitly link libc in.
@@ -7501,7 +7617,7 @@ CFLAGS=$lt_save_CFLAGS
# --------------------------
# Ensure that the configuration variables for the GNU Go compiler
# are suitably defined. These variables are subsequently used by _LT_CONFIG
-# to write the compiler configuration to `libtool'.
+# to write the compiler configuration to 'libtool'.
m4_defun([_LT_LANG_GO_CONFIG],
[AC_REQUIRE([LT_PROG_GO])dnl
AC_LANG_SAVE
@@ -7535,7 +7651,7 @@ CC=${GOC-"gccgo"}
CFLAGS=$GOFLAGS
compiler=$CC
_LT_TAGVAR(compiler, $1)=$CC
-_LT_TAGVAR(LD, $1)="$LD"
+_LT_TAGVAR(LD, $1)=$LD
_LT_CC_BASENAME([$compiler])
# Go did not exist at the time GCC didn't implicitly link libc in.
@@ -7572,7 +7688,7 @@ CFLAGS=$lt_save_CFLAGS
# -------------------------
# Ensure that the configuration variables for the Windows resource compiler
# are suitably defined. These variables are subsequently used by _LT_CONFIG
-# to write the compiler configuration to `libtool'.
+# to write the compiler configuration to 'libtool'.
m4_defun([_LT_LANG_RC_CONFIG],
[AC_REQUIRE([LT_PROG_RC])dnl
AC_LANG_SAVE
@@ -7588,7 +7704,7 @@ _LT_TAGVAR(objext, $1)=$objext
lt_simple_compile_test_code='sample MENU { MENUITEM "&Soup", 100, CHECKED }'
# Code to be used in simple link tests
-lt_simple_link_test_code="$lt_simple_compile_test_code"
+lt_simple_link_test_code=$lt_simple_compile_test_code
# ltmain only uses $CC for tagged configurations so make sure $CC is set.
_LT_TAG_COMPILER
@@ -7598,7 +7714,7 @@ _LT_COMPILER_BOILERPLATE
_LT_LINKER_BOILERPLATE
# Allow CC to be a program name with arguments.
-lt_save_CC="$CC"
+lt_save_CC=$CC
lt_save_CFLAGS=$CFLAGS
lt_save_GCC=$GCC
GCC=
@@ -7627,7 +7743,7 @@ AC_DEFUN([LT_PROG_GCJ],
[m4_ifdef([AC_PROG_GCJ], [AC_PROG_GCJ],
[m4_ifdef([A][M_PROG_GCJ], [A][M_PROG_GCJ],
[AC_CHECK_TOOL(GCJ, gcj,)
- test "x${GCJFLAGS+set}" = xset || GCJFLAGS="-g -O2"
+ test set = "${GCJFLAGS+set}" || GCJFLAGS="-g -O2"
AC_SUBST(GCJFLAGS)])])[]dnl
])
@@ -7738,7 +7854,7 @@ lt_ac_count=0
# Add /usr/xpg4/bin/sed as it is typically found on Solaris
# along with /bin/sed that truncates output.
for lt_ac_sed in $lt_ac_sed_list /usr/xpg4/bin/sed; do
- test ! -f $lt_ac_sed && continue
+ test ! -f "$lt_ac_sed" && continue
cat /dev/null > conftest.in
lt_ac_count=0
echo $ECHO_N "0123456789$ECHO_C" >conftest.in
@@ -7755,9 +7871,9 @@ for lt_ac_sed in $lt_ac_sed_list /usr/xpg4/bin/sed; do
$lt_ac_sed -e 's/a$//' < conftest.nl >conftest.out || break
cmp -s conftest.out conftest.nl || break
# 10000 chars as input seems more than enough
- test $lt_ac_count -gt 10 && break
+ test 10 -lt "$lt_ac_count" && break
lt_ac_count=`expr $lt_ac_count + 1`
- if test $lt_ac_count -gt $lt_ac_max; then
+ if test "$lt_ac_count" -gt "$lt_ac_max"; then
lt_ac_max=$lt_ac_count
lt_cv_path_SED=$lt_ac_sed
fi
@@ -7781,27 +7897,7 @@ dnl AC_DEFUN([LT_AC_PROG_SED], [])
# Find out whether the shell is Bourne or XSI compatible,
# or has some other useful features.
m4_defun([_LT_CHECK_SHELL_FEATURES],
-[AC_MSG_CHECKING([whether the shell understands some XSI constructs])
-# Try some XSI features
-xsi_shell=no
-( _lt_dummy="a/b/c"
- test "${_lt_dummy##*/},${_lt_dummy%/*},${_lt_dummy#??}"${_lt_dummy%"$_lt_dummy"}, \
- = c,a/b,b/c, \
- && eval 'test $(( 1 + 1 )) -eq 2 \
- && test "${#_lt_dummy}" -eq 5' ) >/dev/null 2>&1 \
- && xsi_shell=yes
-AC_MSG_RESULT([$xsi_shell])
-_LT_CONFIG_LIBTOOL_INIT([xsi_shell='$xsi_shell'])
-
-AC_MSG_CHECKING([whether the shell understands "+="])
-lt_shell_append=no
-( foo=bar; set foo baz; eval "$[1]+=\$[2]" && test "$foo" = barbaz ) \
- >/dev/null 2>&1 \
- && lt_shell_append=yes
-AC_MSG_RESULT([$lt_shell_append])
-_LT_CONFIG_LIBTOOL_INIT([lt_shell_append='$lt_shell_append'])
-
-if ( (MAIL=60; unset MAIL) || exit) >/dev/null 2>&1; then
+[if ( (MAIL=60; unset MAIL) || exit) >/dev/null 2>&1; then
lt_unset=unset
else
lt_unset=false
@@ -7825,102 +7921,9 @@ _LT_DECL([NL2SP], [lt_NL2SP], [1], [turn newlines into spaces])dnl
])# _LT_CHECK_SHELL_FEATURES
-# _LT_PROG_FUNCTION_REPLACE (FUNCNAME, REPLACEMENT-BODY)
-# ------------------------------------------------------
-# In `$cfgfile', look for function FUNCNAME delimited by `^FUNCNAME ()$' and
-# '^} FUNCNAME ', and replace its body with REPLACEMENT-BODY.
-m4_defun([_LT_PROG_FUNCTION_REPLACE],
-[dnl {
-sed -e '/^$1 ()$/,/^} # $1 /c\
-$1 ()\
-{\
-m4_bpatsubsts([$2], [$], [\\], [^\([ ]\)], [\\\1])
-} # Extended-shell $1 implementation' "$cfgfile" > $cfgfile.tmp \
- && mv -f "$cfgfile.tmp" "$cfgfile" \
- || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp")
-test 0 -eq $? || _lt_function_replace_fail=:
-])
-
-
-# _LT_PROG_REPLACE_SHELLFNS
-# -------------------------
-# Replace existing portable implementations of several shell functions with
-# equivalent extended shell implementations where those features are available..
-m4_defun([_LT_PROG_REPLACE_SHELLFNS],
-[if test x"$xsi_shell" = xyes; then
- _LT_PROG_FUNCTION_REPLACE([func_dirname], [dnl
- case ${1} in
- */*) func_dirname_result="${1%/*}${2}" ;;
- * ) func_dirname_result="${3}" ;;
- esac])
-
- _LT_PROG_FUNCTION_REPLACE([func_basename], [dnl
- func_basename_result="${1##*/}"])
-
- _LT_PROG_FUNCTION_REPLACE([func_dirname_and_basename], [dnl
- case ${1} in
- */*) func_dirname_result="${1%/*}${2}" ;;
- * ) func_dirname_result="${3}" ;;
- esac
- func_basename_result="${1##*/}"])
-
- _LT_PROG_FUNCTION_REPLACE([func_stripname], [dnl
- # pdksh 5.2.14 does not do ${X%$Y} correctly if both X and Y are
- # positional parameters, so assign one to ordinary parameter first.
- func_stripname_result=${3}
- func_stripname_result=${func_stripname_result#"${1}"}
- func_stripname_result=${func_stripname_result%"${2}"}])
-
- _LT_PROG_FUNCTION_REPLACE([func_split_long_opt], [dnl
- func_split_long_opt_name=${1%%=*}
- func_split_long_opt_arg=${1#*=}])
-
- _LT_PROG_FUNCTION_REPLACE([func_split_short_opt], [dnl
- func_split_short_opt_arg=${1#??}
- func_split_short_opt_name=${1%"$func_split_short_opt_arg"}])
-
- _LT_PROG_FUNCTION_REPLACE([func_lo2o], [dnl
- case ${1} in
- *.lo) func_lo2o_result=${1%.lo}.${objext} ;;
- *) func_lo2o_result=${1} ;;
- esac])
-
- _LT_PROG_FUNCTION_REPLACE([func_xform], [ func_xform_result=${1%.*}.lo])
-
- _LT_PROG_FUNCTION_REPLACE([func_arith], [ func_arith_result=$(( $[*] ))])
-
- _LT_PROG_FUNCTION_REPLACE([func_len], [ func_len_result=${#1}])
-fi
-
-if test x"$lt_shell_append" = xyes; then
- _LT_PROG_FUNCTION_REPLACE([func_append], [ eval "${1}+=\\${2}"])
-
- _LT_PROG_FUNCTION_REPLACE([func_append_quoted], [dnl
- func_quote_for_eval "${2}"
-dnl m4 expansion turns \\\\ into \\, and then the shell eval turns that into \
- eval "${1}+=\\\\ \\$func_quote_for_eval_result"])
-
- # Save a `func_append' function call where possible by direct use of '+='
- sed -e 's%func_append \([[a-zA-Z_]]\{1,\}\) "%\1+="%g' $cfgfile > $cfgfile.tmp \
- && mv -f "$cfgfile.tmp" "$cfgfile" \
- || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp")
- test 0 -eq $? || _lt_function_replace_fail=:
-else
- # Save a `func_append' function call even when '+=' is not available
- sed -e 's%func_append \([[a-zA-Z_]]\{1,\}\) "%\1="$\1%g' $cfgfile > $cfgfile.tmp \
- && mv -f "$cfgfile.tmp" "$cfgfile" \
- || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp")
- test 0 -eq $? || _lt_function_replace_fail=:
-fi
-
-if test x"$_lt_function_replace_fail" = x":"; then
- AC_MSG_WARN([Unable to substitute extended shell functions in $ofile])
-fi
-])
-
# _LT_PATH_CONVERSION_FUNCTIONS
# -----------------------------
-# Determine which file name conversion functions should be used by
+# Determine what file name conversion functions should be used by
# func_to_host_file (and, implicitly, by func_to_host_path). These are needed
# for certain cross-compile configurations and native mingw.
m4_defun([_LT_PATH_CONVERSION_FUNCTIONS],
diff --git a/extension/m4/ltoptions.m4 b/extension/m4/ltoptions.m4
index 5d9acd8e..50c77236 100644
--- a/extension/m4/ltoptions.m4
+++ b/extension/m4/ltoptions.m4
@@ -1,14 +1,14 @@
# Helper functions for option handling. -*- Autoconf -*-
#
-# Copyright (C) 2004, 2005, 2007, 2008, 2009 Free Software Foundation,
-# Inc.
+# Copyright (C) 2004-2005, 2007-2009, 2011-2013 Free Software
+# Foundation, Inc.
# Written by Gary V. Vaughan, 2004
#
# 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 7 ltoptions.m4
+# serial 8 ltoptions.m4
# This is to help aclocal find these macros, as it can't see m4_define.
AC_DEFUN([LTOPTIONS_VERSION], [m4_if([1])])
@@ -29,7 +29,7 @@ m4_define([_LT_SET_OPTION],
[m4_define(_LT_MANGLE_OPTION([$1], [$2]))dnl
m4_ifdef(_LT_MANGLE_DEFUN([$1], [$2]),
_LT_MANGLE_DEFUN([$1], [$2]),
- [m4_warning([Unknown $1 option `$2'])])[]dnl
+ [m4_warning([Unknown $1 option '$2'])])[]dnl
])
@@ -75,13 +75,13 @@ m4_if([$1],[LT_INIT],[
dnl
dnl If no reference was made to various pairs of opposing options, then
dnl we run the default mode handler for the pair. For example, if neither
- dnl `shared' nor `disable-shared' was passed, we enable building of shared
+ dnl 'shared' nor 'disable-shared' was passed, we enable building of shared
dnl archives by default:
_LT_UNLESS_OPTIONS([LT_INIT], [shared disable-shared], [_LT_ENABLE_SHARED])
_LT_UNLESS_OPTIONS([LT_INIT], [static disable-static], [_LT_ENABLE_STATIC])
_LT_UNLESS_OPTIONS([LT_INIT], [pic-only no-pic], [_LT_WITH_PIC])
_LT_UNLESS_OPTIONS([LT_INIT], [fast-install disable-fast-install],
- [_LT_ENABLE_FAST_INSTALL])
+ [_LT_ENABLE_FAST_INSTALL])
])
])# _LT_SET_OPTIONS
@@ -112,7 +112,7 @@ AU_DEFUN([AC_LIBTOOL_DLOPEN],
[_LT_SET_OPTION([LT_INIT], [dlopen])
AC_DIAGNOSE([obsolete],
[$0: Remove this warning and the call to _LT_SET_OPTION when you
-put the `dlopen' option into LT_INIT's first parameter.])
+put the 'dlopen' option into LT_INIT's first parameter.])
])
dnl aclocal-1.4 backwards compatibility:
@@ -148,7 +148,7 @@ AU_DEFUN([AC_LIBTOOL_WIN32_DLL],
_LT_SET_OPTION([LT_INIT], [win32-dll])
AC_DIAGNOSE([obsolete],
[$0: Remove this warning and the call to _LT_SET_OPTION when you
-put the `win32-dll' option into LT_INIT's first parameter.])
+put the 'win32-dll' option into LT_INIT's first parameter.])
])
dnl aclocal-1.4 backwards compatibility:
@@ -157,9 +157,9 @@ dnl AC_DEFUN([AC_LIBTOOL_WIN32_DLL], [])
# _LT_ENABLE_SHARED([DEFAULT])
# ----------------------------
-# implement the --enable-shared flag, and supports the `shared' and
-# `disable-shared' LT_INIT options.
-# DEFAULT is either `yes' or `no'. If omitted, it defaults to `yes'.
+# implement the --enable-shared flag, and supports the 'shared' and
+# 'disable-shared' LT_INIT options.
+# DEFAULT is either 'yes' or 'no'. If omitted, it defaults to 'yes'.
m4_define([_LT_ENABLE_SHARED],
[m4_define([_LT_ENABLE_SHARED_DEFAULT], [m4_if($1, no, no, yes)])dnl
AC_ARG_ENABLE([shared],
@@ -172,14 +172,14 @@ AC_ARG_ENABLE([shared],
*)
enable_shared=no
# Look at the argument we got. We use all the common list separators.
- lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR,"
+ lt_save_ifs=$IFS; IFS=$IFS$PATH_SEPARATOR,
for pkg in $enableval; do
- IFS="$lt_save_ifs"
+ IFS=$lt_save_ifs
if test "X$pkg" = "X$p"; then
enable_shared=yes
fi
done
- IFS="$lt_save_ifs"
+ IFS=$lt_save_ifs
;;
esac],
[enable_shared=]_LT_ENABLE_SHARED_DEFAULT)
@@ -211,9 +211,9 @@ dnl AC_DEFUN([AM_DISABLE_SHARED], [])
# _LT_ENABLE_STATIC([DEFAULT])
# ----------------------------
-# implement the --enable-static flag, and support the `static' and
-# `disable-static' LT_INIT options.
-# DEFAULT is either `yes' or `no'. If omitted, it defaults to `yes'.
+# implement the --enable-static flag, and support the 'static' and
+# 'disable-static' LT_INIT options.
+# DEFAULT is either 'yes' or 'no'. If omitted, it defaults to 'yes'.
m4_define([_LT_ENABLE_STATIC],
[m4_define([_LT_ENABLE_STATIC_DEFAULT], [m4_if($1, no, no, yes)])dnl
AC_ARG_ENABLE([static],
@@ -226,14 +226,14 @@ AC_ARG_ENABLE([static],
*)
enable_static=no
# Look at the argument we got. We use all the common list separators.
- lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR,"
+ lt_save_ifs=$IFS; IFS=$IFS$PATH_SEPARATOR,
for pkg in $enableval; do
- IFS="$lt_save_ifs"
+ IFS=$lt_save_ifs
if test "X$pkg" = "X$p"; then
enable_static=yes
fi
done
- IFS="$lt_save_ifs"
+ IFS=$lt_save_ifs
;;
esac],
[enable_static=]_LT_ENABLE_STATIC_DEFAULT)
@@ -265,9 +265,9 @@ dnl AC_DEFUN([AM_DISABLE_STATIC], [])
# _LT_ENABLE_FAST_INSTALL([DEFAULT])
# ----------------------------------
-# implement the --enable-fast-install flag, and support the `fast-install'
-# and `disable-fast-install' LT_INIT options.
-# DEFAULT is either `yes' or `no'. If omitted, it defaults to `yes'.
+# implement the --enable-fast-install flag, and support the 'fast-install'
+# and 'disable-fast-install' LT_INIT options.
+# DEFAULT is either 'yes' or 'no'. If omitted, it defaults to 'yes'.
m4_define([_LT_ENABLE_FAST_INSTALL],
[m4_define([_LT_ENABLE_FAST_INSTALL_DEFAULT], [m4_if($1, no, no, yes)])dnl
AC_ARG_ENABLE([fast-install],
@@ -280,14 +280,14 @@ AC_ARG_ENABLE([fast-install],
*)
enable_fast_install=no
# Look at the argument we got. We use all the common list separators.
- lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR,"
+ lt_save_ifs=$IFS; IFS=$IFS$PATH_SEPARATOR,
for pkg in $enableval; do
- IFS="$lt_save_ifs"
+ IFS=$lt_save_ifs
if test "X$pkg" = "X$p"; then
enable_fast_install=yes
fi
done
- IFS="$lt_save_ifs"
+ IFS=$lt_save_ifs
;;
esac],
[enable_fast_install=]_LT_ENABLE_FAST_INSTALL_DEFAULT)
@@ -304,14 +304,14 @@ AU_DEFUN([AC_ENABLE_FAST_INSTALL],
[_LT_SET_OPTION([LT_INIT], m4_if([$1], [no], [disable-])[fast-install])
AC_DIAGNOSE([obsolete],
[$0: Remove this warning and the call to _LT_SET_OPTION when you put
-the `fast-install' option into LT_INIT's first parameter.])
+the 'fast-install' option into LT_INIT's first parameter.])
])
AU_DEFUN([AC_DISABLE_FAST_INSTALL],
[_LT_SET_OPTION([LT_INIT], [disable-fast-install])
AC_DIAGNOSE([obsolete],
[$0: Remove this warning and the call to _LT_SET_OPTION when you put
-the `disable-fast-install' option into LT_INIT's first parameter.])
+the 'disable-fast-install' option into LT_INIT's first parameter.])
])
dnl aclocal-1.4 backwards compatibility:
@@ -321,9 +321,9 @@ dnl AC_DEFUN([AM_DISABLE_FAST_INSTALL], [])
# _LT_WITH_PIC([MODE])
# --------------------
-# implement the --with-pic flag, and support the `pic-only' and `no-pic'
+# implement the --with-pic flag, and support the 'pic-only' and 'no-pic'
# LT_INIT options.
-# MODE is either `yes' or `no'. If omitted, it defaults to `both'.
+# MODE is either 'yes' or 'no'. If omitted, it defaults to 'both'.
m4_define([_LT_WITH_PIC],
[AC_ARG_WITH([pic],
[AS_HELP_STRING([--with-pic@<:@=PKGS@:>@],
@@ -334,19 +334,17 @@ m4_define([_LT_WITH_PIC],
*)
pic_mode=default
# Look at the argument we got. We use all the common list separators.
- lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR,"
+ lt_save_ifs=$IFS; IFS=$IFS$PATH_SEPARATOR,
for lt_pkg in $withval; do
- IFS="$lt_save_ifs"
+ IFS=$lt_save_ifs
if test "X$lt_pkg" = "X$lt_p"; then
pic_mode=yes
fi
done
- IFS="$lt_save_ifs"
+ IFS=$lt_save_ifs
;;
esac],
- [pic_mode=default])
-
-test -z "$pic_mode" && pic_mode=m4_default([$1], [default])
+ [pic_mode=m4_default([$1], [default])])
_LT_DECL([], [pic_mode], [0], [What type of objects to build])dnl
])# _LT_WITH_PIC
@@ -359,7 +357,7 @@ AU_DEFUN([AC_LIBTOOL_PICMODE],
[_LT_SET_OPTION([LT_INIT], [pic-only])
AC_DIAGNOSE([obsolete],
[$0: Remove this warning and the call to _LT_SET_OPTION when you
-put the `pic-only' option into LT_INIT's first parameter.])
+put the 'pic-only' option into LT_INIT's first parameter.])
])
dnl aclocal-1.4 backwards compatibility:
diff --git a/extension/m4/ltversion.m4 b/extension/m4/ltversion.m4
index 07a8602d..daeb0af7 100644
--- a/extension/m4/ltversion.m4
+++ b/extension/m4/ltversion.m4
@@ -1,6 +1,6 @@
# ltversion.m4 -- version numbers -*- Autoconf -*-
#
-# Copyright (C) 2004 Free Software Foundation, Inc.
+# Copyright (C) 2004, 2011-2013 Free Software Foundation, Inc.
# Written by Scott James Remnant, 2004
#
# This file is free software; the Free Software Foundation gives
@@ -9,15 +9,15 @@
# @configure_input@
-# serial 3337 ltversion.m4
+# serial 4038 ltversion.m4
# This file is part of GNU Libtool
-m4_define([LT_PACKAGE_VERSION], [2.4.2])
-m4_define([LT_PACKAGE_REVISION], [1.3337])
+m4_define([LT_PACKAGE_VERSION], [2.4.2.418])
+m4_define([LT_PACKAGE_REVISION], [2.4.2.418])
AC_DEFUN([LTVERSION_VERSION],
-[macro_version='2.4.2'
-macro_revision='1.3337'
+[macro_version='2.4.2.418'
+macro_revision='2.4.2.418'
_LT_DECL(, macro_version, 0, [Which release of libtool.m4 was used?])
_LT_DECL(, macro_revision, 0)
])
diff --git a/extension/readdir.c b/extension/readdir.c
index 061fe27f..7bcabcb0 100644
--- a/extension/readdir.c
+++ b/extension/readdir.c
@@ -10,7 +10,7 @@
*/
/*
- * Copyright (C) 2012, 2013 the Free Software Foundation, Inc.
+ * Copyright (C) 2012-2014 the Free Software Foundation, Inc.
*
* This file is part of GAWK, the GNU implementation of the
* AWK Programming Language.
@@ -67,6 +67,10 @@
#define _(msgid) gettext(msgid)
#define N_(msgid) msgid
+#ifndef PATH_MAX
+#define PATH_MAX 1024 /* a good guess */
+#endif
+
static const gawk_api_t *api; /* for convenience macros to work */
static awk_ext_id_t *ext_id;
static const char *ext_version = "readdir extension: version 1.0";
@@ -89,6 +93,7 @@ static const char *
ftype(struct dirent *entry, const char *dirname)
{
#ifdef DT_BLK
+ (void) dirname; /* silence warnings */
switch (entry->d_type) {
case DT_BLK: return "b";
case DT_CHR: return "c";
@@ -158,6 +163,7 @@ get_inode(struct dirent *entry, const char *dirname)
}
return 0;
#else
+ (void) dirname; /* silence warnings */
return entry->d_ino;
#endif
}
@@ -215,6 +221,7 @@ dir_get_record(char **out, awk_input_buf_t *iobuf, int *errcode,
*out = the_dir->buf;
+ *rt_start = NULL;
*rt_len = 0; /* set RT to "" */
return len;
}
@@ -232,8 +239,8 @@ dir_close(awk_input_buf_t *iobuf)
the_dir = (open_directory_t *) iobuf->opaque;
closedir(the_dir->dp);
- free(the_dir->buf);
- free(the_dir);
+ gawk_free(the_dir->buf);
+ gawk_free(the_dir);
iobuf->fd = -1;
}
diff --git a/extension/readfile.3am b/extension/readfile.3am
index 688d9cd5..0cb2eb5b 100644
--- a/extension/readfile.3am
+++ b/extension/readfile.3am
@@ -1,4 +1,4 @@
-.TH READFILE 3am "Jan 15 2013" "Free Software Foundation" "GNU Awk Extension Modules"
+.TH READFILE 3am "Mar 24 2013" "Free Software Foundation" "GNU Awk Extension Modules"
.SH NAME
readfile \- return the entire contents of a file as a string
.SH SYNOPSIS
@@ -6,6 +6,14 @@ readfile \- return the entire contents of a file as a string
@load "readfile"
.sp
result = readfile("/some/path")
+.sp
+.ft R
+For making whole files be single records:
+.sp
+.ft CW
+@load "readfile"
+.br
+BEGIN { PROCINFO["readfile"] = 1 }
.ft R
.SH DESCRIPTION
The
@@ -18,6 +26,14 @@ the requested file.
.PP
Upon error, the function returns the empty string and sets
.BR ERRNO .
+.PP
+In addition, it adds an input parser that is activated if
+.ft CW
+PROCINFO["readfile"]
+.ft R
+exists.
+When activated, each input file is returned in its entirety as \f(CW$0\fR.
+\f(CWRT\fP is set to the null string.
... .SH NOTES
... .SH BUGS
.SH EXAMPLE
@@ -47,7 +63,7 @@ if (contents == "" && ERRNO != "") {
Arnold Robbins,
.BR arnold@skeeve.com .
.SH COPYING PERMISSIONS
-Copyright \(co 2012, 2013,
+Copyright \(co 2012, 2013, 2014,
Free Software Foundation, Inc.
.PP
Permission is granted to make and distribute verbatim copies of
diff --git a/extension/readfile.c b/extension/readfile.c
index 06889c3d..d4b4aef9 100644
--- a/extension/readfile.c
+++ b/extension/readfile.c
@@ -8,10 +8,11 @@
* Revised for new dynamic function facilities
* Mon Jun 14 14:53:07 IDT 2004
* Revised for formal API May 2012
+ * Added input parser March 2014
*/
/*
- * Copyright (C) 2002, 2003, 2004, 2011, 2012, 2013
+ * Copyright (C) 2002, 2003, 2004, 2011, 2012, 2013, 2014
* the Free Software Foundation, Inc.
*
* This file is part of GAWK, the GNU implementation of the
@@ -61,11 +62,39 @@
static const gawk_api_t *api; /* for convenience macros to work */
static awk_ext_id_t *ext_id;
-static const char *ext_version = "readfile extension: version 1.0";
-static awk_bool_t (*init_func)(void) = NULL;
+static const char *ext_version = "readfile extension: version 2.0";
+static awk_bool_t init_readfile();
+static awk_bool_t (*init_func)(void) = init_readfile;
int plugin_is_GPL_compatible;
+/* read_file_to_buffer --- handle the mechanics of reading the file */
+
+static char *
+read_file_to_buffer(int fd, const struct stat *sbuf)
+{
+ char *text = NULL;
+ int ret;
+
+ if ((sbuf->st_mode & S_IFMT) != S_IFREG) {
+ errno = EINVAL;
+ update_ERRNO_int(errno);
+ goto done;
+ }
+
+ emalloc(text, char *, sbuf->st_size + 2, "do_readfile");
+ memset(text, '\0', sbuf->st_size + 2);
+
+ if ((ret = read(fd, text, sbuf->st_size)) != sbuf->st_size) {
+ update_ERRNO_int(errno);
+ gawk_free(text);
+ text = NULL;
+ /* fall through to return */
+ }
+done:
+ return text;
+}
+
/* do_readfile --- read a file into memory */
static awk_value_t *
@@ -90,10 +119,6 @@ do_readfile(int nargs, awk_value_t *result)
if (ret < 0) {
update_ERRNO_int(errno);
goto done;
- } else if ((sbuf.st_mode & S_IFMT) != S_IFREG) {
- errno = EINVAL;
- update_ERRNO_int(errno);
- goto done;
}
if ((fd = open(filename.str_value.str, O_RDONLY|O_BINARY)) < 0) {
@@ -101,15 +126,9 @@ do_readfile(int nargs, awk_value_t *result)
goto done;
}
- emalloc(text, char *, sbuf.st_size + 2, "do_readfile");
- memset(text, '\0', sbuf.st_size + 2);
-
- if ((ret = read(fd, text, sbuf.st_size)) != sbuf.st_size) {
- (void) close(fd);
- update_ERRNO_int(errno);
- free(text);
- goto done;
- }
+ text = read_file_to_buffer(fd, & sbuf);
+ if (text == NULL)
+ goto done; /* ERRNO already updated */
close(fd);
make_malloced_string(text, sbuf.st_size, result);
@@ -117,12 +136,110 @@ do_readfile(int nargs, awk_value_t *result)
} else if (do_lint)
lintwarn(ext_id, _("readfile: called with no arguments"));
-
done:
/* Set the return value */
return result;
}
+/* readfile_get_record --- read the whole file as one record */
+
+static int
+readfile_get_record(char **out, awk_input_buf_t *iobuf, int *errcode,
+ char **rt_start, size_t *rt_len)
+{
+ char *text;
+
+ /*
+ * The caller sets *errcode to 0, so we should set it only if an
+ * error occurs.
+ */
+
+ if (out == NULL || iobuf == NULL)
+ return EOF;
+
+ if (iobuf->opaque != NULL) {
+ /*
+ * Already read the whole file,
+ * free up stuff and return EOF
+ */
+ gawk_free(iobuf->opaque);
+ iobuf->opaque = NULL;
+ return EOF;
+ }
+
+ /* read file */
+ text = read_file_to_buffer(iobuf->fd, & iobuf->sbuf);
+ if (text == NULL)
+ return EOF;
+
+ /* set up the iobuf for next time */
+ iobuf->opaque = text;
+
+ /* set return values */
+ *rt_start = NULL;
+ *rt_len = 0;
+ *out = text;
+
+ /* return count */
+ return iobuf->sbuf.st_size;
+}
+
+/* readfile_can_take_file --- return true if we want the file */
+
+static awk_bool_t
+readfile_can_take_file(const awk_input_buf_t *iobuf)
+{
+ awk_value_t array, index, value;
+
+ if (iobuf == NULL)
+ return awk_false;
+
+ /*
+ * This could fail if PROCINFO isn't referenced from
+ * the awk program. It's not a "can't happen" error.
+ */
+ if (! sym_lookup("PROCINFO", AWK_ARRAY, & array)) {
+ return awk_false;
+ }
+
+ (void) make_const_string("readfile", 8, & index);
+
+ if (! get_array_element(array.array_cookie, & index, AWK_UNDEFINED, & value)) {
+ return awk_false;
+ }
+
+ return awk_true;
+}
+
+/* readfile_take_control_of --- take over the file */
+
+static awk_bool_t
+readfile_take_control_of(awk_input_buf_t *iobuf)
+{
+ if (iobuf == NULL)
+ return awk_false;
+
+ iobuf->get_record = readfile_get_record;
+ return awk_true;
+}
+
+static awk_input_parser_t readfile_parser = {
+ "readfile",
+ readfile_can_take_file,
+ readfile_take_control_of,
+ NULL
+};
+
+/* init_readfile --- set things up */
+
+static awk_bool_t
+init_readfile()
+{
+ register_input_parser(& readfile_parser);
+
+ return awk_true;
+}
+
static awk_ext_func_t func_table[] = {
{ "readfile", do_readfile, 1 },
};
diff --git a/extension/revtwoway.c b/extension/revtwoway.c
index 6e5bb710..c0d9381a 100644
--- a/extension/revtwoway.c
+++ b/extension/revtwoway.c
@@ -7,7 +7,7 @@
*/
/*
- * Copyright (C) 2012, 2013 the Free Software Foundation, Inc.
+ * Copyright (C) 2012-2014 the Free Software Foundation, Inc.
*
* This file is part of GAWK, the GNU implementation of the
* AWK Programming Language.
@@ -119,8 +119,8 @@ close_two_proc_data(two_way_proc_data_t *proc_data)
return;
}
- free(proc_data->data);
- free(proc_data);
+ gawk_free(proc_data->data);
+ gawk_free(proc_data);
}
/*
@@ -141,6 +141,7 @@ rev2way_get_record(char **out, awk_input_buf_t *iobuf, int *errcode,
* error occurs.
*/
+ (void) errcode; /* silence warnings */
if (out == NULL || iobuf == NULL || iobuf->opaque == NULL)
return EOF;
@@ -195,6 +196,7 @@ rev2way_fwrite(const void *buf, size_t size, size_t count, FILE *fp, void *opaqu
size_t amount, char_count;
char *src, *dest;
+ (void) fp; /* silence warnings */
if (opaque == NULL)
return 0; /* error */
@@ -281,6 +283,7 @@ revtwoway_take_control_of(const char *name, awk_input_buf_t *inbuf, awk_output_b
{
two_way_proc_data_t *proc_data;
+ (void) name; /* silence warnings */
if (inbuf == NULL || outbuf == NULL)
return awk_false;
diff --git a/extension/rwarray.c b/extension/rwarray.c
index 6185000b..aa05a0d5 100644
--- a/extension/rwarray.c
+++ b/extension/rwarray.c
@@ -7,7 +7,7 @@
*/
/*
- * Copyright (C) 2009, 2010, 2011, 2012, 2013 the Free Software Foundation, Inc.
+ * Copyright (C) 2009-2014 the Free Software Foundation, Inc.
*
* This file is part of GAWK, the GNU implementation of the
* AWK Programming Language.
@@ -408,7 +408,7 @@ read_elem(FILE *fp, awk_element_t *element)
buflen = index_len;
} else if (buflen < index_len) {
/* reallocate buffer */
- char *cp = realloc(buffer, index_len);
+ char *cp = gawk_realloc(buffer, index_len);
if (cp == NULL)
return awk_false;
@@ -468,11 +468,11 @@ read_value(FILE *fp, awk_value_t *value)
len = ntohl(len);
value->val_type = AWK_STRING;
value->str_value.len = len;
- value->str_value.str = malloc(len + 2);
+ value->str_value.str = gawk_malloc(len + 2);
memset(value->str_value.str, '\0', len + 2);
if (fread(value->str_value.str, 1, len, fp) != (ssize_t) len) {
- free(value->str_value.str);
+ gawk_free(value->str_value.str);
return awk_false;
}
}
diff --git a/extension/testext.c b/extension/testext.c
index df159575..2dda339f 100644
--- a/extension/testext.c
+++ b/extension/testext.c
@@ -3,7 +3,7 @@
*/
/*
- * Copyright (C) 2012, 2013
+ * Copyright (C) 2012, 2013, 2014
* the Free Software Foundation, Inc.
*
* This file is part of GAWK, the GNU implementation of the
@@ -237,8 +237,8 @@ try_modify_environ(int nargs, awk_value_t *result)
printf("try_modify_environ: set_array_element of ENVIRON passed\n");
} else {
printf("try_modify_environ: set_array_element of ENVIRON failed\n");
- free(index.str_value.str);
- free(value.str_value.str);
+ gawk_free(index.str_value.str);
+ gawk_free(value.str_value.str);
}
if (! flatten_array(environ_array, & flat_array)) {
@@ -537,6 +537,7 @@ test_array_param(int nargs, awk_value_t *result)
awk_value_t new_array;
awk_value_t arg0;
+ (void) nargs; /* silence warnings */
make_number(0.0, result);
if (! get_argument(0, AWK_UNDEFINED, & arg0)) {
@@ -615,6 +616,7 @@ test_scalar(int nargs, awk_value_t *result)
awk_value_t new_value, new_value2;
awk_value_t the_scalar;
+ (void) nargs; /* silence warnings */
make_number(0.0, result);
if (! sym_lookup("the_scalar", AWK_SCALAR, & the_scalar)) {
@@ -661,6 +663,7 @@ test_scalar_reserved(int nargs, awk_value_t *result)
awk_value_t new_value;
awk_value_t the_scalar;
+ (void) nargs; /* silence warnings */
make_number(0.0, result);
/* look up a reserved variable - should pass */
@@ -712,6 +715,7 @@ test_indirect_vars(int nargs, awk_value_t *result)
awk_value_t value;
char *name = "NR";
+ (void) nargs; /* silence warnings */
assert(result != NULL);
make_number(0.0, result);
diff --git a/extension/time.c b/extension/time.c
index 9fadfe54..e6b2b39f 100644
--- a/extension/time.c
+++ b/extension/time.c
@@ -1,25 +1,24 @@
/*
* time.c - Builtin functions that provide time-related functions.
- *
*/
/*
- * Copyright (C) 2012, 2013
+ * Copyright (C) 2012, 2013, 2014
* the Free Software Foundation, Inc.
- *
+ *
* This file is part of GAWK, the GNU implementation of the
* 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
@@ -39,6 +38,40 @@
#include <sys/types.h>
#include <sys/stat.h>
+#ifdef __VMS
+#define HAVE_NANOSLEEP
+#define HAVE_GETTIMEOFDAY
+#ifdef gettimeofday
+#undef gettimeofday
+#endif
+#ifdef __ia64__
+/* nanosleep not working correctly on IA64 */
+static int
+vms_fake_nanosleep(struct timespec *rqdly, struct timespec *rmdly)
+{
+ int result;
+ struct timespec mtime1, mtime2;
+
+ result = nanosleep(rqdly, &mtime1);
+ if (result == 0)
+ return 0;
+
+ /* On IA64 it returns 100 nanoseconds early with an error */
+ if ((mtime1.tv_sec == 0) && (mtime1.tv_nsec <= 100)) {
+ mtime1.tv_nsec += 100;
+ result = nanosleep(&mtime1, &mtime2);
+ if (result == 0)
+ return 0;
+ if ((mtime2.tv_sec == 0) && (mtime2.tv_nsec <= 100)) {
+ return 0;
+ }
+ }
+ return result;
+}
+#define nanosleep(x,y) vms_fake_nanosleep(x, y)
+#endif
+#endif
+
#include "gawkapi.h"
#include "gettext.h"
@@ -52,15 +85,13 @@ static awk_bool_t (*init_func)(void) = NULL;
int plugin_is_GPL_compatible;
+#include <time.h>
#if defined(HAVE_GETTIMEOFDAY) && defined(HAVE_SYS_TIME_H)
#include <sys/time.h>
#endif
#if defined(HAVE_SELECT) && defined(HAVE_SYS_SELECT_H)
#include <sys/select.h>
#endif
-#if defined(HAVE_NANOSLEEP) && defined(HAVE_TIME_H)
-#include <time.h>
-#endif
#if defined(HAVE_GETSYSTEMTIMEASFILETIME)
#define WIN32_LEAN_AND_MEAN
#include <windows.h>
diff --git a/field.c b/field.c
index 3cd66067..64ee1f02 100644
--- a/field.c
+++ b/field.c
@@ -3,7 +3,7 @@
*/
/*
- * Copyright (C) 1986, 1988, 1989, 1991-2013 the Free Software Foundation, Inc.
+ * Copyright (C) 1986, 1988, 1989, 1991-2014 the Free Software Foundation, Inc.
*
* This file is part of GAWK, the GNU implementation of the
* AWK Programming Language.
@@ -85,13 +85,19 @@ void
init_fields()
{
emalloc(fields_arr, NODE **, sizeof(NODE *), "init_fields");
- fields_arr[0] = dupnode(Nnull_string);
+
+ getnode(fields_arr[0]);
+ *fields_arr[0] = *Nnull_string;
+ fields_arr[0]->flags |= NULL_FIELD;
+
parse_extent = fields_arr[0]->stptr;
save_FS = dupnode(FS_node->var_value);
+
getnode(Null_field);
*Null_field = *Nnull_string;
Null_field->valref = 1;
- Null_field->flags = (FIELD|STRCUR|STRING);
+ Null_field->flags = (FIELD|STRCUR|STRING|NULL_FIELD);
+
field0_valid = true;
}
@@ -348,6 +354,7 @@ set_NF()
*n = *Null_field;
fields_arr[i] = n;
}
+ parse_high_water = NF;
} else if (parse_high_water > 0) {
for (i = NF + 1; i >= 0 && i <= parse_high_water; i++) {
unref(fields_arr[i]);
@@ -1006,7 +1013,9 @@ do_split(int nargs)
return make_number((AWKNUM) 0);
}
- if ((sep->re_flags & FS_DFLT) != 0 && current_field_sep() != Using_FIELDWIDTHS && ! RS_is_null) {
+ if ( (sep->re_flags & FS_DFLT) != 0
+ && current_field_sep() == Using_FS
+ && ! RS_is_null) {
parseit = parse_field;
fs = force_string(FS_node->var_value);
rp = FS_regexp;
diff --git a/floatcomp.c b/floatcomp.c
index 9d24a67f..16a6d88e 100644
--- a/floatcomp.c
+++ b/floatcomp.c
@@ -26,6 +26,8 @@
#include "awk.h"
#include <math.h>
+#ifdef HAVE_UINTMAX_T
+
/* Assume IEEE-754 arithmetic on pre-C89 hosts. */
#ifndef FLT_RADIX
#define FLT_RADIX 2
@@ -69,28 +71,6 @@ Please port the following code to your weird host;
#define AWKNUM_FRACTION_BITS (AWKNUM_MANT_DIG * (FLT_RADIX == 2 ? 1 : 4))
#define DBL_FRACTION_BITS (DBL_MANT_DIG * (FLT_RADIX == 2 ? 1 : 4))
-/*
- * Floor and Ceil --- Work around a problem in conversion of
- * doubles to exact integers.
- */
-
-/* Floor --- do floor(), also for Cray */
-
-AWKNUM
-Floor(AWKNUM n)
-{
- return floor(n);
-}
-
-/* Ceil --- do ceil(), also for Cray */
-
-AWKNUM
-Ceil(AWKNUM n)
-{
- return ceil(n);
-}
-
-#ifdef HAVE_UINTMAX_T
/* adjust_uint --- fiddle with values, ask Paul Eggert to explain */
uintmax_t
diff --git a/gawkapi.c b/gawkapi.c
index ac466249..46aef7b6 100644
--- a/gawkapi.c
+++ b/gawkapi.c
@@ -3,7 +3,7 @@
*/
/*
- * Copyright (C) 2012, 2013 the Free Software Foundation, Inc.
+ * Copyright (C) 2012-2014 the Free Software Foundation, Inc.
*
* This file is part of GAWK, the GNU implementation of the
* AWK Programming Language.
@@ -48,7 +48,7 @@ api_get_argument(awk_ext_id_t id, size_t count,
NODE *arg;
if (result == NULL)
- return false;
+ return awk_false;
(void) id;
@@ -64,7 +64,7 @@ api_get_argument(awk_ext_id_t id, size_t count,
*/
arg = get_argument(count);
if (arg == NULL)
- return false;
+ return awk_false;
/* if type is undefined */
if (arg->type == Node_var_new) {
@@ -89,7 +89,7 @@ array:
/* get the array here */
arg = get_array_argument(count, false);
if (arg == NULL)
- return false;
+ return awk_false;
return node_to_awk_value(arg, result, wanted);
@@ -97,11 +97,11 @@ scalar:
/* at this point we have a real type that is not an array */
arg = get_scalar_argument(count, false);
if (arg == NULL)
- return false;
+ return awk_false;
return node_to_awk_value(arg, result, wanted);
#else
- return false;
+ return awk_false;
#endif
}
@@ -119,23 +119,23 @@ api_set_argument(awk_ext_id_t id,
(void) id;
if (array == NULL || array->type != Node_var_array)
- return false;
+ return awk_false;
if ( (arg = get_argument(count)) == NULL
|| arg->type != Node_var_new)
- return false;
+ return awk_false;
arg = get_array_argument(count, false);
if (arg == NULL)
- return false;
+ return awk_false;
array->vname = arg->vname;
*arg = *array;
freenode(array);
- return true;
+ return awk_true;
#else
- return false;
+ return awk_false;
#endif
}
@@ -319,12 +319,12 @@ api_add_ext_func(awk_ext_id_t id,
(void) namespace;
if (func == NULL)
- return false;
+ return awk_false;
#ifdef DYNAMIC
return make_builtin(func);
#else
- return false;
+ return awk_false;
#endif
}
@@ -383,7 +383,7 @@ api_awk_atexit(awk_ext_id_t id,
static awk_bool_t
node_to_awk_value(NODE *node, awk_value_t *val, awk_valtype_t wanted)
{
- awk_bool_t ret = false;
+ awk_bool_t ret = awk_false;
if (node == NULL)
fatal(_("node_to_awk_value: received null node"));
@@ -395,7 +395,7 @@ node_to_awk_value(NODE *node, awk_value_t *val, awk_valtype_t wanted)
case Node_var_new: /* undefined variable */
val->val_type = AWK_UNDEFINED;
if (wanted == AWK_UNDEFINED) {
- ret = true;
+ ret = awk_true;
}
break;
@@ -404,7 +404,7 @@ node_to_awk_value(NODE *node, awk_value_t *val, awk_valtype_t wanted)
if (wanted == AWK_SCALAR) {
val->val_type = AWK_SCALAR;
val->scalar_cookie = (void *) node;
- ret = true;
+ ret = awk_true;
break;
}
@@ -419,7 +419,7 @@ node_to_awk_value(NODE *node, awk_value_t *val, awk_valtype_t wanted)
(void) force_number(node);
if ((node->flags & NUMCUR) != 0) {
val->num_value = get_number_d(node);
- ret = true;
+ ret = awk_true;
}
break;
@@ -430,7 +430,7 @@ node_to_awk_value(NODE *node, awk_value_t *val, awk_valtype_t wanted)
if ((node->flags & STRCUR) != 0) {
val->str_value.str = node->stptr;
val->str_value.len = node->stlen;
- ret = true;
+ ret = awk_true;
}
break;
@@ -441,7 +441,7 @@ node_to_awk_value(NODE *node, awk_value_t *val, awk_valtype_t wanted)
val->val_type = AWK_STRING;
} else
val->val_type = AWK_UNDEFINED;
- ret = false;
+ ret = awk_false;
break;
case AWK_UNDEFINED:
@@ -449,12 +449,12 @@ node_to_awk_value(NODE *node, awk_value_t *val, awk_valtype_t wanted)
if ((node->flags & NUMBER) != 0) {
val->val_type = AWK_NUMBER;
val->num_value = get_number_d(node);
- ret = true;
+ ret = awk_true;
} else if ((node->flags & STRING) != 0) {
val->val_type = AWK_STRING;
val->str_value.str = node->stptr;
val->str_value.len = node->stlen;
- ret = true;
+ ret = awk_true;
} else
val->val_type = AWK_UNDEFINED;
break;
@@ -469,15 +469,14 @@ node_to_awk_value(NODE *node, awk_value_t *val, awk_valtype_t wanted)
val->val_type = AWK_ARRAY;
if (wanted == AWK_ARRAY || wanted == AWK_UNDEFINED) {
val->array_cookie = node;
- ret = true;
- } else {
- ret = false;
- }
+ ret = awk_true;
+ } else
+ ret = awk_false;
break;
default:
val->val_type = AWK_UNDEFINED;
- ret = false;
+ ret = awk_false;
break;
}
@@ -515,7 +514,7 @@ api_sym_lookup(awk_ext_id_t id,
|| *name == '\0'
|| result == NULL
|| (node = lookup(name)) == NULL)
- return false;
+ return awk_false;
if (is_off_limits_var(name)) /* a built-in variable */
node->flags |= NO_EXT_SET;
@@ -536,7 +535,7 @@ api_sym_lookup_scalar(awk_ext_id_t id,
if (node == NULL
|| result == NULL
|| node->type != Node_var)
- return false;
+ return awk_false;
update_global_values(); /* make sure stuff like NF, NR, are up to date */
@@ -556,7 +555,7 @@ api_sym_update(awk_ext_id_t id,
if ( name == NULL
|| *name == '\0'
|| value == NULL)
- return false;
+ return awk_false;
switch (value->val_type) {
case AWK_NUMBER:
@@ -569,7 +568,7 @@ api_sym_update(awk_ext_id_t id,
default:
/* fatal(_("api_sym_update: invalid value for type of new value (%d)"), value->val_type); */
- return false;
+ return awk_false;
}
node = lookup(name);
@@ -591,7 +590,7 @@ api_sym_update(awk_ext_id_t id,
node->var_value = awk_value_to_node(value);
}
- return true;
+ return awk_true;
}
/*
@@ -601,7 +600,7 @@ api_sym_update(awk_ext_id_t id,
if ( (node->flags & NO_EXT_SET) != 0
|| is_off_limits_var(name)) { /* most built-in vars not allowed */
node->flags |= NO_EXT_SET;
- return false;
+ return awk_false;
}
if ( value->val_type != AWK_ARRAY
@@ -611,10 +610,10 @@ api_sym_update(awk_ext_id_t id,
if (node->type == Node_var_new && value->val_type != AWK_UNDEFINED)
node->type = Node_var;
- return true;
+ return awk_true;
}
- return false;
+ return awk_false;
}
/* api_sym_update_scalar --- update a scalar cookie */
@@ -630,7 +629,7 @@ api_sym_update_scalar(awk_ext_id_t id,
|| node == NULL
|| node->type != Node_var
|| (node->flags & NO_EXT_SET) != 0)
- return false;
+ return awk_false;
/*
* Optimization: if valref is 1, and the new value is a string or
@@ -655,7 +654,7 @@ api_sym_update_scalar(awk_ext_id_t id,
r->flags = MALLOC|NUMBER|NUMCUR;
r->stptr = NULL;
r->stlen = 0;
- return true;
+ return awk_true;
}
break;
case AWK_STRING:
@@ -675,7 +674,7 @@ api_sym_update_scalar(awk_ext_id_t id,
r->stfmt = -1;
r->stptr = value->str_value.str;
r->stlen = value->str_value.len;
- return true;
+ return awk_true;
}
break;
case AWK_UNDEFINED:
@@ -684,13 +683,13 @@ api_sym_update_scalar(awk_ext_id_t id,
break;
default: /* AWK_ARRAY or invalid type */
- return false;
+ return awk_false;
}
/* do it the hard (slow) way */
unref(node->var_value);
node->var_value = awk_value_to_node(value);
- return true;
+ return awk_true;
}
/*
@@ -699,7 +698,7 @@ api_sym_update_scalar(awk_ext_id_t id,
* Any scalar value is fine, so only AWK_ARRAY (or an invalid type) is illegal.
*/
-static inline int
+static inline bool
valid_subscript_type(awk_valtype_t valtype)
{
switch (valtype) {
@@ -738,21 +737,21 @@ api_get_array_element(awk_ext_id_t id,
|| result == NULL
|| index == NULL
|| ! valid_subscript_type(index->val_type))
- return false;
+ return awk_false;
subscript = awk_value_to_node(index);
/* if it doesn't exist, return false */
if (in_array(array, subscript) == NULL) {
unref(subscript);
- return false;
+ return awk_false;
}
aptr = assoc_lookup(array, subscript);
if (aptr == NULL) { /* can't happen */
unref(subscript);
- return false;
+ return awk_false;
}
unref(subscript);
@@ -782,7 +781,7 @@ api_set_array_element(awk_ext_id_t id, awk_array_t a_cookie,
|| index == NULL
|| value == NULL
|| ! valid_subscript_type(index->val_type))
- return false;
+ return awk_false;
tmp = awk_value_to_node(index);
aptr = assoc_lookup(array, tmp);
@@ -796,7 +795,7 @@ api_set_array_element(awk_ext_id_t id, awk_array_t a_cookie,
make_aname(elem);
}
- return true;
+ return awk_true;
}
/*
@@ -848,13 +847,13 @@ api_del_array_element(awk_ext_id_t id,
|| (array->flags & NO_EXT_SET) != 0
|| index == NULL
|| ! valid_subscript_type(index->val_type))
- return false;
+ return awk_false;
sub = awk_value_to_node(index);
remove_element(array, sub);
unref(sub);
- return true;
+ return awk_true;
}
/*
@@ -869,10 +868,10 @@ api_get_element_count(awk_ext_id_t id,
NODE *node = (NODE *) a_cookie;
if (count == NULL || node == NULL || node->type != Node_var_array)
- return false;
+ return awk_false;
*count = node->table_size;
- return true;
+ return awk_true;
}
/* api_create_array --- create a new array cookie to which elements may be added */
@@ -899,10 +898,10 @@ api_clear_array(awk_ext_id_t id, awk_array_t a_cookie)
if ( node == NULL
|| node->type != Node_var_array
|| (node->flags & NO_EXT_SET) != 0)
- return false;
+ return awk_false;
assoc_clear(node);
- return true;
+ return awk_true;
}
/* api_flatten_array --- flatten out an array so that it can be looped over easily. */
@@ -921,7 +920,7 @@ api_flatten_array(awk_ext_id_t id,
|| array->type != Node_var_array
|| array->table_size == 0
|| data == NULL)
- return false;
+ return awk_false;
alloc_size = sizeof(awk_flat_array_t) +
(array->table_size - 1) * sizeof(awk_element_t);
@@ -959,7 +958,7 @@ api_flatten_array(awk_ext_id_t id,
(int) i);
}
}
- return true;
+ return awk_true;
}
/*
@@ -983,7 +982,7 @@ api_release_flattened_array(awk_ext_id_t id,
|| array != (NODE *) data->opaque1
|| data->count != array->table_size
|| data->opaque2 == NULL)
- return false;
+ return awk_false;
list = (NODE **) data->opaque2;
@@ -1000,7 +999,7 @@ api_release_flattened_array(awk_ext_id_t id,
efree(list);
efree(data);
- return true;
+ return awk_true;
}
/* api_create_value --- create a cached value */
@@ -1010,7 +1009,7 @@ api_create_value(awk_ext_id_t id, awk_value_t *value,
awk_value_cookie_t *result)
{
if (value == NULL || result == NULL)
- return false;
+ return awk_false;
switch (value->val_type) {
case AWK_NUMBER:
@@ -1018,10 +1017,10 @@ api_create_value(awk_ext_id_t id, awk_value_t *value,
break;
default:
/* reject anything other than a simple scalar */
- return false;
+ return awk_false;
}
- return (*result = awk_value_to_node(value)) != NULL;
+ return (awk_bool_t) ((*result = awk_value_to_node(value)) != NULL);
}
/* api_release_value --- release a cached value */
@@ -1032,10 +1031,10 @@ api_release_value(awk_ext_id_t id, awk_value_cookie_t value)
NODE *val = (NODE *) value;
if (val == NULL)
- return false;
+ return awk_false;
unref(val);
- return true;
+ return awk_true;
}
/* api_get_file --- return a handle to an existing or newly opened file */
@@ -1198,6 +1197,12 @@ gawk_api_t api_impl = {
api_flatten_array,
api_release_flattened_array,
+ /* Memory allocation */
+ malloc,
+ calloc,
+ realloc,
+ free,
+
/* Find/open a file */
api_get_file,
};
diff --git a/gawkapi.h b/gawkapi.h
index 51374d9f..c3322c9a 100644
--- a/gawkapi.h
+++ b/gawkapi.h
@@ -3,7 +3,7 @@
*/
/*
- * Copyright (C) 2012, 2013 the Free Software Foundation, Inc.
+ * Copyright (C) 2012-2014 the Free Software Foundation, Inc.
*
* This file is part of GAWK, the GNU implementation of the
* AWK Programming Language.
@@ -30,7 +30,6 @@
*
* FILE - <stdio.h>
* NULL - <stddef.h>
- * malloc() - <stdlib.h>
* memset(), memcpy() - <string.h>
* size_t - <sys/types.h>
* struct stat - <sys/stat.h>
@@ -62,7 +61,7 @@
*
* Additional important information:
*
- * 1. ALL string values in awk_value_t objects need to come from malloc().
+ * 1. ALL string values in awk_value_t objects need to come from api_malloc().
* Gawk will handle releasing the storage if necessary. This is slightly
* awkward, in that you can't take an awk_value_t that you got from gawk
* and reuse it directly, even for something that is conceptually pass
@@ -667,6 +666,16 @@ typedef struct gawk_api {
awk_flat_array_t *data);
/*
+ * Hooks to provide access to gawk's memory allocation functions.
+ * This ensures that memory passed between gawk and the extension
+ * is allocated and released by the same library.
+ */
+ void *(*api_malloc)(size_t size);
+ void *(*api_calloc)(size_t nmemb, size_t size);
+ void *(*api_realloc)(void *ptr, size_t size);
+ void (*api_free)(void *ptr);
+
+ /*
* Look up a file. If the name is NULL or name_len is 0, it returns
* data for the currently open input file corresponding to FILENAME
* (and it will not access the filetype or typelen arguments, so those
@@ -751,6 +760,11 @@ typedef struct gawk_api {
#define release_flattened_array(array, data) \
(api->api_release_flattened_array(ext_id, array, data))
+#define gawk_malloc(size) (api->api_malloc(size))
+#define gawk_calloc(nmemb, size) (api->api_calloc(nmemb, size))
+#define gawk_realloc(ptr, size) (api->api_realloc(ptr, size))
+#define gawk_free(ptr) (api->api_free(ptr))
+
#define create_value(value, result) \
(api->api_create_value(ext_id, value,result))
@@ -765,13 +779,13 @@ typedef struct gawk_api {
#define emalloc(pointer, type, size, message) \
do { \
- if ((pointer = (type) malloc(size)) == 0) \
+ if ((pointer = (type) gawk_malloc(size)) == 0) \
fatal(ext_id, "%s: malloc of %d bytes failed\n", message, size); \
} while(0)
#define erealloc(pointer, type, size, message) \
do { \
- if ((pointer = (type) realloc(pointer, size)) == 0) \
+ if ((pointer = (type) gawk_realloc(pointer, size)) == 0) \
fatal(ext_id, "%s: realloc of %d bytes failed\n", message, size); \
} while(0)
diff --git a/getopt.c b/getopt.c
index 7679991d..7bd42bb6 100644
--- a/getopt.c
+++ b/getopt.c
@@ -2,7 +2,7 @@
NOTE: getopt is part of the C library, so if you don't know what
"Keep this file name-space clean" means, talk to drepper@gnu.org
before changing it!
- Copyright (C) 1987-2013 Free Software Foundation, Inc.
+ Copyright (C) 1987-2014 Free Software Foundation, Inc.
This file is part of the GNU C Library.
The GNU C Library is free software; you can redistribute it and/or
@@ -57,7 +57,7 @@
/* This needs to come after some library #include
to get __GNU_LIBRARY__ defined. */
-#if defined (__GNU_LIBRARY__) || defined (__CYGWIN__) || defined(__DJGPP__) || defined(__APPLE__) || defined(__MINGW32__)
+#if defined (__GNU_LIBRARY__) || defined (__CYGWIN__) || defined(__DJGPP__) || defined(__APPLE__) || defined(__MINGW32__) || defined(__sun) /* Illumos */
/* Don't include stdlib.h for
* non-GNU C libraries
* non-Cygwin
@@ -236,7 +236,7 @@ exchange (char **argv, struct _getopt_data *d)
{
/* Bottom segment is the short one. */
int len = middle - bottom;
- register int i;
+ int i;
/* Swap it with the top part of the top segment. */
for (i = 0; i < len; i++)
@@ -253,7 +253,7 @@ exchange (char **argv, struct _getopt_data *d)
{
/* Top segment is the short one. */
int len = top - middle;
- register int i;
+ int i;
/* Swap it with the bottom part of the bottom segment. */
for (i = 0; i < len; i++)
@@ -574,7 +574,7 @@ _getopt_internal_r (int argc, char *const *argv, const char *optstring,
|| pfound->flag != p->flag
|| pfound->val != p->val)
{
- /* Second or later nonexact match found. */
+ /* Second or later nonexact match found. */
struct option_list *newp = malloc (sizeof (*newp));
newp->p = p;
newp->needs_free = 1;
diff --git a/getopt.h b/getopt.h
index 5d19cb3d..da1a01ff 100644
--- a/getopt.h
+++ b/getopt.h
@@ -1,5 +1,5 @@
/* Declarations for getopt.
- Copyright (C) 1989-2013 Free Software Foundation, Inc.
+ Copyright (C) 1989-2014 Free Software Foundation, Inc.
This file is part of the GNU C Library.
The GNU C Library is free software; you can redistribute it and/or
diff --git a/getopt1.c b/getopt1.c
index 8be96571..32f2f6a6 100644
--- a/getopt1.c
+++ b/getopt1.c
@@ -1,5 +1,5 @@
/* getopt_long and getopt_long_only entry points for GNU getopt.
- Copyright (C) 1987-2013 Free Software Foundation, Inc.
+ Copyright (C) 1987-2014 Free Software Foundation, Inc.
This file is part of the GNU C Library.
The GNU C Library is free software; you can redistribute it and/or
diff --git a/getopt_int.h b/getopt_int.h
index 92f3871e..d255c8ee 100644
--- a/getopt_int.h
+++ b/getopt_int.h
@@ -1,5 +1,5 @@
/* Internal declarations for getopt.
- Copyright (C) 1989-2013 Free Software Foundation, Inc.
+ Copyright (C) 1989-2014 Free Software Foundation, Inc.
This file is part of the GNU C Library.
The GNU C Library is free software; you can redistribute it and/or
diff --git a/helpers/ChangeLog b/helpers/ChangeLog
index 4b720787..17624c3f 100644
--- a/helpers/ChangeLog
+++ b/helpers/ChangeLog
@@ -1,3 +1,24 @@
+2014-04-08 Arnold D. Robbins <arnold@skeeve.com>
+
+ * 4.1.1: Release tar ball made.
+
+2014-03-10 Arnold D. Robbins <arnold@skeeve.com>
+
+ * quoteconvert2.sh: Use .UTF-8 locales per request from
+ Michal Jaegermann.
+
+2014-03-08 Arnold D. Robbins <arnold@skeeve.com>
+
+ * quoteconvert2.sh, tryfmt.c, scanfmt.c: New files.
+
+2013-12-21 Arnold D. Robbins <arnold@skeeve.com>
+
+ * testdfa.c: Fix some bugs and compiler warnings.
+
+2013-12-12 Arnold D. Robbins <arnold@skeeve.com>
+
+ * do.outline: New file.
+
2013-06-27 Arnold D. Robbins <arnold@skeeve.com>
* ChangeLog: Created.
diff --git a/helpers/do.outline b/helpers/do.outline
new file mode 100755
index 00000000..203d27ad
--- /dev/null
+++ b/helpers/do.outline
@@ -0,0 +1,102 @@
+#! /usr/local/bin2/gawk -f
+
+# do.outline --- produce an outline of a texinfo document
+
+BEGIN {
+ # manifest constants
+ TRUE = 1
+ FALSE = 0
+
+ # Levels at which different nodes can be
+ Level["@top"] = 0
+ Level["@appendix"] = 1
+ Level["@chapter"] = 1
+ Level["@majorheading"] = 1
+ Level["@unnumbered"] = 1
+ Level["@preface"] = 1
+ Level["@appendixsec"] = 2
+ Level["@heading"] = 2
+ Level["@section"] = 2
+ Level["@unnumberedsec"] = 2
+ Level["@unnumberedsubsec"] = 3
+ Level["@appendixsubsec"] = 3
+ Level["@subheading"] = 3
+ Level["@subsection"] = 3
+ Level["@appendixsubsubsec"] = 4
+ Level["@subsubheading"] = 4
+ Level["@subsubsection"] = 4
+ Level["@unnumberedsubsubsec"] = 4
+
+ ah = bh = ch = 0
+
+ appendix = 0
+}
+
+/^@ignore/ && Pass == 1, /^@end[ \t]+ignore/ && Pass == 1 {
+ next
+}
+
+
+$1 in Level {
+ # save type
+ type = $1
+
+ lev = Level[$1]
+
+ if (lev == 1 && tolower($0) !~ /preface|foreword/) {
+ if ($1 == "@appendix") {
+ appendix = next_appendix(appendix)
+ ah = appendix
+ } else
+ ah++
+ bh = ch = dh = 0
+ } else if (lev == 2) {
+ bh++
+ ch = dh = 0
+ } else if (lev == 3) {
+ ch++
+ dh = 0
+ } else if (lev == 4)
+ dh++
+
+ Unnumbered = ($1 ~ /^@unnumbered/)
+
+ $1 = ""
+ $0 = preprocess($0)
+
+ for (i = 1; i < lev; i++)
+ printf "\t"
+
+ if (! Unnumbered) {
+ printf("%s.", ah)
+ if (bh)
+ printf("%d.", bh)
+ if (ch)
+ printf("%d.", ch)
+ if (dh)
+ printf("%d.", dh)
+ }
+
+ printf("%s\n", $0)
+}
+
+function preprocess(record)
+{
+ record = gensub(/@(code|command|samp|env)\{([^\}]+)\}/, "\\2", "g", record)
+ record = gensub(/@dots\{\}/, "...", "g", record)
+
+ return record
+}
+
+function next_appendix(cur, ind, letters)
+{
+ if (cur == 0)
+ return "A" # first time
+
+ letters = "ABCDEFGHIJKLMNOPQRSTUVWXYZ"
+ ind = index(letters, cur)
+ if (ind > 0 && ind <= 26)
+ return substr(letters, ++ind, 1)
+
+ return "Z"
+}
diff --git a/helpers/quoteconvert2.sh b/helpers/quoteconvert2.sh
new file mode 100755
index 00000000..63750a37
--- /dev/null
+++ b/helpers/quoteconvert2.sh
@@ -0,0 +1,49 @@
+#!/bin/sh
+
+# quoteconvert2.sh --- test locale dependent output of numbers
+# Michal Jaegermann, michal@harddata.com, 2014/Mar/1
+
+#AWK="../gawk"
+SCRIPT=`basename $0`
+
+if [ "$AWK" = "" ]
+then
+ echo $0: You must set AWK >&2
+ exit 1
+fi
+
+# The last entry on this list represents "a locale with a typo".
+
+llist="
+C
+en_US
+en_US.UTF-8
+de_DE
+de_DE.UTF-8
+fr_FR
+fr_FR.UTF-8
+pt_PT
+pt_PT.UTF-8
+pt_BR
+pt_BR.UTF-8
+ru_RU
+ru_RU.UTF-8
+pl_PX
+"
+
+error=0
+for lc in $llist ; do
+ wanted=`LC_ALL=$lc locale -c LC_NUMERIC 2>/dev/null | \
+ $AWK 'NR == 2 { decimal_point = $0 }
+ NR == 3 { thousands_sep = $0 }
+ END { printf("123%s456%s789%s15\n",
+ thousands_sep, thousands_sep, decimal_point)}'`
+ got=`LC_ALL=$lc $AWK "BEGIN {printf(\"%'.2f\n\",123456789.15)}"`
+ if [ "$wanted" != "$got" ] ; then
+ echo "$lc - unexpected output $got instead of $wanted"
+ error=1
+ fi
+done
+
+[ "$error" = 0 ] && echo ok || echo bummer
+exit $error
diff --git a/helpers/scanfmt.c b/helpers/scanfmt.c
new file mode 100644
index 00000000..2d7bd73a
--- /dev/null
+++ b/helpers/scanfmt.c
@@ -0,0 +1,22 @@
+/*
+ * Test out ' flag in different locales.
+ * Michal Jaegermann
+ * March, 2014
+ */
+
+#include <stdio.h>
+#include <locale.h>
+#include <stdlib.h>
+int
+main(int argc, char **argv)
+{
+ double t;
+
+ if (argc == 1)
+ return 1;
+
+ setlocale(LC_ALL, getenv("LC_ALL"));
+ sscanf(argv[1], "%lf", &t);
+ printf("%.2f\n", t);
+ return 0;
+}
diff --git a/helpers/testdfa.c b/helpers/testdfa.c
index c644fb04..813acaab 100644
--- a/helpers/testdfa.c
+++ b/helpers/testdfa.c
@@ -76,7 +76,6 @@ int main(int argc, char **argv)
size_t len;
const char *pattern;
const char *rerr;
- int infd;
char *data;
reg_syntax_t dfa_syn;
bool ignorecase = false;
@@ -180,7 +179,7 @@ int main(int argc, char **argv)
/* run the regex matcher */
ret = re_search(& pat, data, len, 0, len, NULL);
- printf("re_search returned %d (%s)\n", ret, (ret != 0) ? "true" : "false");
+ printf("re_search returned position %d (%s)\n", ret, (ret >= 0) ? "true" : "false");
/* run the dfa matcher */
/*
@@ -202,6 +201,8 @@ int main(int argc, char **argv)
free(regs.end);
dfafree(dfareg);
free(dfareg);
+
+ return 0;
}
/* genflags2str --- general routine to convert a flag value to a string */
@@ -366,12 +367,15 @@ setup_pattern(const char *pattern, size_t len)
{
size_t is_multibyte = 0;
int c, c2;
- size_t buflen;
+ size_t buflen = 0;
mbstate_t mbs;
bool has_anchor = false;
- char *buf, *dest;
+ char *buf = NULL;
+ char *dest;
const char *src, *end;
+ memset(& mbs, 0, sizeof(mbs));
+
src = pattern;
end = pattern + len;
diff --git a/helpers/tryfmt.c b/helpers/tryfmt.c
new file mode 100644
index 00000000..8166d3f1
--- /dev/null
+++ b/helpers/tryfmt.c
@@ -0,0 +1,23 @@
+/*
+ * Test out ' flag in different locales.
+ * Michal Jaegermann
+ * March, 2014
+ */
+
+#include <locale.h>
+#include <stdio.h>
+#include <stdlib.h>
+int
+main(int argc, char **argv)
+{
+ const char *fmt;
+ if (argc == 1)
+ fmt = "%'.2f";
+ else
+ fmt = argv[1];
+
+ setlocale(LC_ALL, getenv("LC_ALL"));
+ printf(fmt, 12456789.01);
+ printf("\n");
+ return 0;
+}
diff --git a/install-sh b/install-sh
index 377bb868..04367377 100755
--- a/install-sh
+++ b/install-sh
@@ -1,7 +1,7 @@
#!/bin/sh
# install - install a program, script, or datafile
-scriptversion=2011-11-20.07; # UTC
+scriptversion=2013-10-30.23; # UTC
# This originates from X11R5 (mit/util/scripts/install.sh), which was
# later released in X11R6 (xc/config/util/install.sh) with the
@@ -41,19 +41,15 @@ scriptversion=2011-11-20.07; # UTC
# This script is compatible with the BSD install script, but was written
# from scratch.
+tab=' '
nl='
'
-IFS=" "" $nl"
+IFS=" $tab$nl"
-# set DOITPROG to echo to test this script
+# Set DOITPROG to "echo" to test this script.
-# Don't use :- since 4.3BSD and earlier shells don't like it.
doit=${DOITPROG-}
-if test -z "$doit"; then
- doit_exec=exec
-else
- doit_exec=$doit
-fi
+doit_exec=${doit:-exec}
# Put in absolute file names if you don't have them in your path;
# or use environment vars.
@@ -68,17 +64,6 @@ mvprog=${MVPROG-mv}
rmprog=${RMPROG-rm}
stripprog=${STRIPPROG-strip}
-posix_glob='?'
-initialize_posix_glob='
- test "$posix_glob" != "?" || {
- if (set -f) 2>/dev/null; then
- posix_glob=
- else
- posix_glob=:
- fi
- }
-'
-
posix_mkdir=
# Desired mode of installed file.
@@ -137,40 +122,39 @@ while test $# -ne 0; do
-d) dir_arg=true;;
-g) chgrpcmd="$chgrpprog $2"
- shift;;
+ shift;;
--help) echo "$usage"; exit $?;;
-m) mode=$2
- case $mode in
- *' '* | *' '* | *'
-'* | *'*'* | *'?'* | *'['*)
- echo "$0: invalid mode: $mode" >&2
- exit 1;;
- esac
- shift;;
+ case $mode in
+ *' '* | *"$tab"* | *"$nl"* | *'*'* | *'?'* | *'['*)
+ echo "$0: invalid mode: $mode" >&2
+ exit 1;;
+ esac
+ shift;;
-o) chowncmd="$chownprog $2"
- shift;;
+ shift;;
-s) stripcmd=$stripprog;;
-t) dst_arg=$2
- # Protect names problematic for 'test' and other utilities.
- case $dst_arg in
- -* | [=\(\)!]) dst_arg=./$dst_arg;;
- esac
- shift;;
+ # Protect names problematic for 'test' and other utilities.
+ case $dst_arg in
+ -* | [=\(\)!]) dst_arg=./$dst_arg;;
+ esac
+ shift;;
-T) no_target_directory=true;;
--version) echo "$0 $scriptversion"; exit $?;;
- --) shift
- break;;
+ --) shift
+ break;;
- -*) echo "$0: invalid option: $1" >&2
- exit 1;;
+ -*) echo "$0: invalid option: $1" >&2
+ exit 1;;
*) break;;
esac
@@ -223,16 +207,16 @@ if test -z "$dir_arg"; then
*[0-7])
if test -z "$stripcmd"; then
- u_plus_rw=
+ u_plus_rw=
else
- u_plus_rw='% 200'
+ u_plus_rw='% 200'
fi
cp_umask=`expr '(' 777 - $mode % 1000 ')' $u_plus_rw`;;
*)
if test -z "$stripcmd"; then
- u_plus_rw=
+ u_plus_rw=
else
- u_plus_rw=,u+rw
+ u_plus_rw=,u+rw
fi
cp_umask=$mode$u_plus_rw;;
esac
@@ -270,40 +254,14 @@ do
# if double slashes aren't ignored.
if test -d "$dst"; then
if test -n "$no_target_directory"; then
- echo "$0: $dst_arg: Is a directory" >&2
- exit 1
+ echo "$0: $dst_arg: Is a directory" >&2
+ exit 1
fi
dstdir=$dst
dst=$dstdir/`basename "$src"`
dstdir_status=0
else
- # Prefer dirname, but fall back on a substitute if dirname fails.
- dstdir=`
- (dirname "$dst") 2>/dev/null ||
- expr X"$dst" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
- X"$dst" : 'X\(//\)[^/]' \| \
- X"$dst" : 'X\(//\)$' \| \
- X"$dst" : 'X\(/\)' \| . 2>/dev/null ||
- echo X"$dst" |
- sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{
- s//\1/
- q
- }
- /^X\(\/\/\)[^/].*/{
- s//\1/
- q
- }
- /^X\(\/\/\)$/{
- s//\1/
- q
- }
- /^X\(\/\).*/{
- s//\1/
- q
- }
- s/.*/./; q'
- `
-
+ dstdir=`dirname "$dst"`
test -d "$dstdir"
dstdir_status=$?
fi
@@ -314,74 +272,74 @@ do
if test $dstdir_status != 0; then
case $posix_mkdir in
'')
- # Create intermediate dirs using mode 755 as modified by the umask.
- # This is like FreeBSD 'install' as of 1997-10-28.
- umask=`umask`
- case $stripcmd.$umask in
- # Optimize common cases.
- *[2367][2367]) mkdir_umask=$umask;;
- .*0[02][02] | .[02][02] | .[02]) mkdir_umask=22;;
-
- *[0-7])
- mkdir_umask=`expr $umask + 22 \
- - $umask % 100 % 40 + $umask % 20 \
- - $umask % 10 % 4 + $umask % 2
- `;;
- *) mkdir_umask=$umask,go-w;;
- esac
-
- # With -d, create the new directory with the user-specified mode.
- # Otherwise, rely on $mkdir_umask.
- if test -n "$dir_arg"; then
- mkdir_mode=-m$mode
- else
- mkdir_mode=
- fi
-
- posix_mkdir=false
- case $umask in
- *[123567][0-7][0-7])
- # POSIX mkdir -p sets u+wx bits regardless of umask, which
- # is incompatible with FreeBSD 'install' when (umask & 300) != 0.
- ;;
- *)
- tmpdir=${TMPDIR-/tmp}/ins$RANDOM-$$
- trap 'ret=$?; rmdir "$tmpdir/d" "$tmpdir" 2>/dev/null; exit $ret' 0
-
- if (umask $mkdir_umask &&
- exec $mkdirprog $mkdir_mode -p -- "$tmpdir/d") >/dev/null 2>&1
- then
- if test -z "$dir_arg" || {
- # Check for POSIX incompatibilities with -m.
- # HP-UX 11.23 and IRIX 6.5 mkdir -m -p sets group- or
- # other-writable bit of parent directory when it shouldn't.
- # FreeBSD 6.1 mkdir -m -p sets mode of existing directory.
- ls_ld_tmpdir=`ls -ld "$tmpdir"`
- case $ls_ld_tmpdir in
- d????-?r-*) different_mode=700;;
- d????-?--*) different_mode=755;;
- *) false;;
- esac &&
- $mkdirprog -m$different_mode -p -- "$tmpdir" && {
- ls_ld_tmpdir_1=`ls -ld "$tmpdir"`
- test "$ls_ld_tmpdir" = "$ls_ld_tmpdir_1"
- }
- }
- then posix_mkdir=:
- fi
- rmdir "$tmpdir/d" "$tmpdir"
- else
- # Remove any dirs left behind by ancient mkdir implementations.
- rmdir ./$mkdir_mode ./-p ./-- 2>/dev/null
- fi
- trap '' 0;;
- esac;;
+ # Create intermediate dirs using mode 755 as modified by the umask.
+ # This is like FreeBSD 'install' as of 1997-10-28.
+ umask=`umask`
+ case $stripcmd.$umask in
+ # Optimize common cases.
+ *[2367][2367]) mkdir_umask=$umask;;
+ .*0[02][02] | .[02][02] | .[02]) mkdir_umask=22;;
+
+ *[0-7])
+ mkdir_umask=`expr $umask + 22 \
+ - $umask % 100 % 40 + $umask % 20 \
+ - $umask % 10 % 4 + $umask % 2
+ `;;
+ *) mkdir_umask=$umask,go-w;;
+ esac
+
+ # With -d, create the new directory with the user-specified mode.
+ # Otherwise, rely on $mkdir_umask.
+ if test -n "$dir_arg"; then
+ mkdir_mode=-m$mode
+ else
+ mkdir_mode=
+ fi
+
+ posix_mkdir=false
+ case $umask in
+ *[123567][0-7][0-7])
+ # POSIX mkdir -p sets u+wx bits regardless of umask, which
+ # is incompatible with FreeBSD 'install' when (umask & 300) != 0.
+ ;;
+ *)
+ tmpdir=${TMPDIR-/tmp}/ins$RANDOM-$$
+ trap 'ret=$?; rmdir "$tmpdir/d" "$tmpdir" 2>/dev/null; exit $ret' 0
+
+ if (umask $mkdir_umask &&
+ exec $mkdirprog $mkdir_mode -p -- "$tmpdir/d") >/dev/null 2>&1
+ then
+ if test -z "$dir_arg" || {
+ # Check for POSIX incompatibilities with -m.
+ # HP-UX 11.23 and IRIX 6.5 mkdir -m -p sets group- or
+ # other-writable bit of parent directory when it shouldn't.
+ # FreeBSD 6.1 mkdir -m -p sets mode of existing directory.
+ ls_ld_tmpdir=`ls -ld "$tmpdir"`
+ case $ls_ld_tmpdir in
+ d????-?r-*) different_mode=700;;
+ d????-?--*) different_mode=755;;
+ *) false;;
+ esac &&
+ $mkdirprog -m$different_mode -p -- "$tmpdir" && {
+ ls_ld_tmpdir_1=`ls -ld "$tmpdir"`
+ test "$ls_ld_tmpdir" = "$ls_ld_tmpdir_1"
+ }
+ }
+ then posix_mkdir=:
+ fi
+ rmdir "$tmpdir/d" "$tmpdir"
+ else
+ # Remove any dirs left behind by ancient mkdir implementations.
+ rmdir ./$mkdir_mode ./-p ./-- 2>/dev/null
+ fi
+ trap '' 0;;
+ esac;;
esac
if
$posix_mkdir && (
- umask $mkdir_umask &&
- $doit_exec $mkdirprog $mkdir_mode -p -- "$dstdir"
+ umask $mkdir_umask &&
+ $doit_exec $mkdirprog $mkdir_mode -p -- "$dstdir"
)
then :
else
@@ -391,53 +349,51 @@ do
# directory the slow way, step by step, checking for races as we go.
case $dstdir in
- /*) prefix='/';;
- [-=\(\)!]*) prefix='./';;
- *) prefix='';;
+ /*) prefix='/';;
+ [-=\(\)!]*) prefix='./';;
+ *) prefix='';;
esac
- eval "$initialize_posix_glob"
-
oIFS=$IFS
IFS=/
- $posix_glob set -f
+ set -f
set fnord $dstdir
shift
- $posix_glob set +f
+ set +f
IFS=$oIFS
prefixes=
for d
do
- test X"$d" = X && continue
-
- prefix=$prefix$d
- if test -d "$prefix"; then
- prefixes=
- else
- if $posix_mkdir; then
- (umask=$mkdir_umask &&
- $doit_exec $mkdirprog $mkdir_mode -p -- "$dstdir") && break
- # Don't fail if two instances are running concurrently.
- test -d "$prefix" || exit 1
- else
- case $prefix in
- *\'*) qprefix=`echo "$prefix" | sed "s/'/'\\\\\\\\''/g"`;;
- *) qprefix=$prefix;;
- esac
- prefixes="$prefixes '$qprefix'"
- fi
- fi
- prefix=$prefix/
+ test X"$d" = X && continue
+
+ prefix=$prefix$d
+ if test -d "$prefix"; then
+ prefixes=
+ else
+ if $posix_mkdir; then
+ (umask=$mkdir_umask &&
+ $doit_exec $mkdirprog $mkdir_mode -p -- "$dstdir") && break
+ # Don't fail if two instances are running concurrently.
+ test -d "$prefix" || exit 1
+ else
+ case $prefix in
+ *\'*) qprefix=`echo "$prefix" | sed "s/'/'\\\\\\\\''/g"`;;
+ *) qprefix=$prefix;;
+ esac
+ prefixes="$prefixes '$qprefix'"
+ fi
+ fi
+ prefix=$prefix/
done
if test -n "$prefixes"; then
- # Don't fail if two instances are running concurrently.
- (umask $mkdir_umask &&
- eval "\$doit_exec \$mkdirprog $prefixes") ||
- test -d "$dstdir" || exit 1
- obsolete_mkdir_used=true
+ # Don't fail if two instances are running concurrently.
+ (umask $mkdir_umask &&
+ eval "\$doit_exec \$mkdirprog $prefixes") ||
+ test -d "$dstdir" || exit 1
+ obsolete_mkdir_used=true
fi
fi
fi
@@ -472,15 +428,12 @@ do
# If -C, don't bother to copy if it wouldn't change the file.
if $copy_on_change &&
- old=`LC_ALL=C ls -dlL "$dst" 2>/dev/null` &&
- new=`LC_ALL=C ls -dlL "$dsttmp" 2>/dev/null` &&
-
- eval "$initialize_posix_glob" &&
- $posix_glob set -f &&
+ old=`LC_ALL=C ls -dlL "$dst" 2>/dev/null` &&
+ new=`LC_ALL=C ls -dlL "$dsttmp" 2>/dev/null` &&
+ set -f &&
set X $old && old=:$2:$4:$5:$6 &&
set X $new && new=:$2:$4:$5:$6 &&
- $posix_glob set +f &&
-
+ set +f &&
test "$old" = "$new" &&
$cmpprog "$dst" "$dsttmp" >/dev/null 2>&1
then
@@ -493,24 +446,24 @@ do
# to itself, or perhaps because mv is so ancient that it does not
# support -f.
{
- # Now remove or move aside any old file at destination location.
- # We try this two ways since rm can't unlink itself on some
- # systems and the destination file might be busy for other
- # reasons. In this case, the final cleanup might fail but the new
- # file should still install successfully.
- {
- test ! -f "$dst" ||
- $doit $rmcmd -f "$dst" 2>/dev/null ||
- { $doit $mvcmd -f "$dst" "$rmtmp" 2>/dev/null &&
- { $doit $rmcmd -f "$rmtmp" 2>/dev/null; :; }
- } ||
- { echo "$0: cannot unlink or rename $dst" >&2
- (exit 1); exit 1
- }
- } &&
-
- # Now rename the file to the real destination.
- $doit $mvcmd "$dsttmp" "$dst"
+ # Now remove or move aside any old file at destination location.
+ # We try this two ways since rm can't unlink itself on some
+ # systems and the destination file might be busy for other
+ # reasons. In this case, the final cleanup might fail but the new
+ # file should still install successfully.
+ {
+ test ! -f "$dst" ||
+ $doit $rmcmd -f "$dst" 2>/dev/null ||
+ { $doit $mvcmd -f "$dst" "$rmtmp" 2>/dev/null &&
+ { $doit $rmcmd -f "$rmtmp" 2>/dev/null; :; }
+ } ||
+ { echo "$0: cannot unlink or rename $dst" >&2
+ (exit 1); exit 1
+ }
+ } &&
+
+ # Now rename the file to the real destination.
+ $doit $mvcmd "$dsttmp" "$dst"
}
fi || exit 1
diff --git a/interpret.h b/interpret.h
index ba70cf08..29feb821 100644
--- a/interpret.h
+++ b/interpret.h
@@ -3,7 +3,7 @@
*/
/*
- * Copyright (C) 1986, 1988, 1989, 1991-2013 the Free Software Foundation, Inc.
+ * Copyright (C) 1986, 1988, 1989, 1991-2014 the Free Software Foundation, Inc.
*
* This file is part of GAWK, the GNU implementation of the
* AWK Programming Language.
@@ -1217,7 +1217,7 @@ match_re:
ret = nextfile(& curfile, true); /* skip current file */
if (currule == BEGINFILE) {
- long stack_size;
+ long stack_size = 0;
ni = pop_exec_state(& currule, & source, & stack_size);
diff --git a/io.c b/io.c
index 37ec892c..d52bd9ed 100644
--- a/io.c
+++ b/io.c
@@ -3,7 +3,7 @@
*/
/*
- * Copyright (C) 1986, 1988, 1989, 1991-2013 the Free Software Foundation, Inc.
+ * Copyright (C) 1986, 1988, 1989, 1991-2014 the Free Software Foundation, Inc.
*
* This file is part of GAWK, the GNU implementation of the
* AWK Programming Language.
@@ -116,7 +116,16 @@
#define ENFILE EMFILE
#endif
+#if defined(__DJGPP__)
+#define closemaybesocket(fd) close(fd)
+#endif
+
#if defined(VMS)
+#include <ssdef.h>
+#ifndef SS$_EXBYTLM
+#define SS$_EXBYTLM 0x2a14 /* VMS 8.4 seen */
+#endif
+#include <rmsdef.h>
#define closemaybesocket(fd) close(fd)
#endif
@@ -157,6 +166,12 @@
# define SOCKET int
#endif
+#else /* HAVE_SOCKETS */
+
+#ifndef closemaybesocket
+# define closemaybesocket(fd) close(fd)
+#endif
+
#endif /* HAVE_SOCKETS */
#ifndef HAVE_SETSID
@@ -458,6 +473,11 @@ nextfile(IOBUF **curfile, bool skipping)
/* IOBUF management: */
errno = 0;
fd = devopen(fname, binmode("r"));
+ if (fd == INVALID_HANDLE && errno == EMFILE) {
+ close_one();
+ close_one();
+ fd = devopen(fname, binmode("r"));
+ }
errcode = errno;
if (! do_traditional)
update_ERRNO_int(errno);
@@ -943,10 +963,13 @@ redirect_string(char *str, size_t explen, int not_string, int redirtype, int *er
if (errno == EMFILE || errno == ENFILE)
close_one();
#ifdef VMS
- /* Alpha/VMS V7.1's C RTL is returning this instead
+ /* Alpha/VMS V7.1+ C RTL is returning these instead
of EMFILE (haven't tried other post-V6.2 systems) */
-#define SS$_EXQUOTA 0x001C
- else if (errno == EIO && vaxc$errno == SS$_EXQUOTA)
+ else if ((errno == EIO || errno == EVMSERR) &&
+ (vaxc$errno == SS$_EXQUOTA ||
+ vaxc$errno == SS$_EXBYTLM ||
+ vaxc$errno == RMS$_ACC ||
+ vaxc$errno == RMS$_SYN))
close_one();
#endif
else {
@@ -1269,12 +1292,15 @@ flush_io()
int status = 0;
errno = 0;
+ /* we don't warn about stdout/stderr if EPIPE, but we do error exit */
if (fflush(stdout)) {
- warning(_("error writing standard output (%s)"), strerror(errno));
+ if (errno != EPIPE)
+ warning(_("error writing standard output (%s)"), strerror(errno));
status++;
}
if (fflush(stderr)) {
- warning(_("error writing standard error (%s)"), strerror(errno));
+ if (errno != EPIPE)
+ warning(_("error writing standard error (%s)"), strerror(errno));
status++;
}
for (rp = red_head; rp != NULL; rp = rp->next)
@@ -1324,13 +1350,16 @@ close_io(bool *stdio_problem)
* them, we just flush them, and do that across the board.
*/
*stdio_problem = false;
- if (fflush(stdout)) {
- warning(_("error writing standard output (%s)"), strerror(errno));
+ /* we don't warn about stdout/stderr if EPIPE, but we do error exit */
+ if (fflush(stdout) != 0) {
+ if (errno != EPIPE)
+ warning(_("error writing standard output (%s)"), strerror(errno));
status++;
*stdio_problem = true;
}
- if (fflush(stderr)) {
- warning(_("error writing standard error (%s)"), strerror(errno));
+ if (fflush(stderr) != 0) {
+ if (errno != EPIPE)
+ warning(_("error writing standard error (%s)"), strerror(errno));
status++;
*stdio_problem = true;
}
@@ -1471,7 +1500,7 @@ socketopen(int family, int type, const char *localpname,
#ifdef MSG_PEEK
char buf[10];
struct sockaddr_storage remote_addr;
- socklen_t read_len;
+ socklen_t read_len = 0;
if (recvfrom(socket_fd, buf, 1, MSG_PEEK,
(struct sockaddr *) & remote_addr,
@@ -1923,6 +1952,7 @@ two_way_open(const char *str, struct redirect *rp)
case -1:
save_errno = errno;
close(master);
+ close(slave);
errno = save_errno;
return false;
@@ -2671,7 +2701,10 @@ do_find_source(const char *src, struct stat *stb, int *errcode, path_info *pi)
return NULL;
}
erealloc(path, char *, strlen(path) + strlen(src) + 2, "do_find_source");
-#ifndef VMS
+#ifdef VMS
+ if (strcspn(path,">]:") == strlen(path))
+ strcat(path, "/");
+#else
strcat(path, "/");
#endif
strcat(path, src);
@@ -4017,7 +4050,7 @@ init_output_wrapper(awk_output_buf_t *outbuf)
outbuf->mode = NULL;
outbuf->fp = NULL;
outbuf->opaque = NULL;
- outbuf->redirected = false;
+ outbuf->redirected = awk_false;
outbuf->gawk_fwrite = gawk_fwrite;
outbuf->gawk_fflush = gawk_fflush;
outbuf->gawk_ferror = gawk_ferror;
diff --git a/m4/ChangeLog b/m4/ChangeLog
index 59ddc228..81fdcec0 100644
--- a/m4/ChangeLog
+++ b/m4/ChangeLog
@@ -1,3 +1,27 @@
+2014-04-08 Arnold D. Robbins <arnold@skeeve.com>
+
+ * 4.1.1: Release tar ball made.
+
+2014-03-11 Arnold D. Robbins <arnold@skeeve.com>
+
+ * readline.m4: Add manual check for *bsd* OS and add -ltermcap
+ if so. Hack, slash. Can you say "quick and dirty" boys and girls?
+ I knew you could.
+
+2013-10-16 Arnold D. Robbins <arnold@skeeve.com>
+
+ * readline.m4: Add check for NULL return from readline() in
+ call to printf() for results. Thanks to Dagobert Michelsen
+ <dam@opencsw.org> for the report.
+
+2013-08-29 Arnold D. Robbins <arnold@skeeve.com>
+
+ * readline.m4: Add additional code to check for history_list()
+ function. Patterned after checks in:
+ http://ftp.samba.org/pub/unpacked/samba_3_current/source4/lib/smbreadline/readline.m4
+ Thanks to Larry Baker (larry.baker@stanfordalumni.org) for the
+ pointer.
+
2013-05-09 Arnold D. Robbins <arnold@skeeve.com>
* 4.1.0: Release tar ball made.
diff --git a/m4/readline.m4 b/m4/readline.m4
index 76605af8..77ed8b25 100644
--- a/m4/readline.m4
+++ b/m4/readline.m4
@@ -1,5 +1,5 @@
dnl Check for readline and dependencies
-dnl Copyright (C) 2004, 2005, 2013 Free Software Foundation, Inc.
+dnl Copyright (C) 2004, 2005, 2013, 2014 Free Software Foundation, Inc.
dnl
dnl This file is free software, distributed under the terms of the GNU
dnl General Public License. As a special exception to the GNU General
@@ -53,7 +53,8 @@ int main(int argc, char **argv)
dup(fd);
line = readline("giveittome> ");
- printf("got <%s>\n", line);
+ /* some printfs don't handle NULL for %s */
+ printf("got <%s>\n", line ? line : "(NULL)");
return 0;
}]]),
dnl action if true:
@@ -69,9 +70,19 @@ dnl action if cross compiling:
LIBS=$_readline_save_libs
if test $_found_readline = yes ; then
+ case $host_os in
+ *bsd* ) _combo="$_combo -ltermcap"
+ ;;
+ esac
AC_DEFINE(HAVE_LIBREADLINE,1,
[Define to 1 if you have a fully functional readline library.])
AC_SUBST(LIBREADLINE,$_combo)
+
+ AC_CHECK_LIB(readline, history_list,
+ [AC_DEFINE(HAVE_HISTORY_LIST, 1, [Do we have history_list?])],
+ [],
+ [$_combo])
+
break
fi
done
diff --git a/main.c b/main.c
index 7438ee3a..c6fef2f1 100644
--- a/main.c
+++ b/main.c
@@ -3,7 +3,7 @@
*/
/*
- * Copyright (C) 1986, 1988, 1989, 1991-2013 the Free Software Foundation, Inc.
+ * Copyright (C) 1986, 1988, 1989, 1991-2014 the Free Software Foundation, Inc.
*
* This file is part of GAWK, the GNU implementation of the
* AWK Programming Language.
@@ -24,7 +24,7 @@
*/
/* FIX THIS BEFORE EVERY RELEASE: */
-#define UPDATE_YEAR 2013
+#define UPDATE_YEAR 2014
#include "awk.h"
#include "getopt.h"
@@ -133,7 +133,7 @@ static bool disallow_var_assigns = false; /* true for --exec */
static void add_preassign(enum assign_type type, char *val);
int do_flags = false;
-bool do_optimize = true; /* apply default optimizations */
+bool do_optimize = false; /* apply default optimizations */
static int do_nostalgia = false; /* provide a blast from the past */
static int do_binary = false; /* hands off my data! */
static int do_version = false; /* print version info */
@@ -157,42 +157,43 @@ GETGROUPS_T *groupset; /* current group set */
int ngroups; /* size of said set */
#endif
-void (*lintfunc)(const char *mesg, ...) = warning;
+void (*lintfunc)(const char *mesg, ...) = r_warning;
+/* Sorted by long option name! */
static const struct option optab[] = {
- { "traditional", no_argument, NULL, 'c' },
+ { "assign", required_argument, NULL, 'v' },
+ { "bignum", no_argument, NULL, 'M' },
+ { "characters-as-bytes", no_argument, & do_binary, 'b' },
+ { "copyright", no_argument, NULL, 'C' },
+ { "debug", optional_argument, NULL, 'D' },
+ { "dump-variables", optional_argument, NULL, 'd' },
+ { "exec", required_argument, NULL, 'E' },
+ { "field-separator", required_argument, NULL, 'F' },
+ { "file", required_argument, NULL, 'f' },
+ { "gen-pot", no_argument, NULL, 'g' },
+ { "help", no_argument, NULL, 'h' },
+ { "include", required_argument, NULL, 'i' },
{ "lint", optional_argument, NULL, 'L' },
{ "lint-old", no_argument, NULL, 't' },
+ { "load", required_argument, NULL, 'l' },
+ { "non-decimal-data", no_argument, NULL, 'n' },
+ { "nostalgia", no_argument, & do_nostalgia, 1 },
{ "optimize", no_argument, NULL, 'O' },
+#if defined(YYDEBUG) || defined(GAWKDEBUG)
+ { "parsedebug", no_argument, NULL, 'Y' },
+#endif
{ "posix", no_argument, NULL, 'P' },
- { "nostalgia", no_argument, & do_nostalgia, 1 },
- { "gen-pot", no_argument, NULL, 'g' },
- { "non-decimal-data", no_argument, NULL, 'n' },
{ "pretty-print", optional_argument, NULL, 'o' },
{ "profile", optional_argument, NULL, 'p' },
- { "debug", optional_argument, NULL, 'D' },
- { "copyright", no_argument, NULL, 'C' },
- { "field-separator", required_argument, NULL, 'F' },
- { "file", required_argument, NULL, 'f' },
{ "re-interval", no_argument, NULL, 'r' },
+ { "sandbox", no_argument, NULL, 'S' },
{ "source", required_argument, NULL, 'e' },
- { "load", required_argument, NULL, 'l' },
- { "dump-variables", optional_argument, NULL, 'd' },
- { "assign", required_argument, NULL, 'v' },
- { "version", no_argument, & do_version, 'V' },
- { "help", no_argument, NULL, 'h' },
- { "exec", required_argument, NULL, 'E' },
+ { "traditional", no_argument, NULL, 'c' },
{ "use-lc-numeric", no_argument, & use_lc_numeric, 1 },
- { "characters-as-bytes", no_argument, & do_binary, 'b' },
- { "sandbox", no_argument, NULL, 'S' },
- { "bignum", no_argument, NULL, 'M' },
-#if defined(YYDEBUG) || defined(GAWKDEBUG)
- { "parsedebug", no_argument, NULL, 'Y' },
-#endif
+ { "version", no_argument, & do_version, 'V' },
{ NULL, 0, NULL, '\0' }
};
-
/* main --- process args, parse program, run it, clean up */
int
@@ -284,6 +285,22 @@ main(int argc, char **argv)
#ifdef SIGBUS
(void) signal(SIGBUS, catchsig);
#endif
+#ifdef SIGPIPE
+ /*
+ * Ignore SIGPIPE so that writes to pipes that fail don't
+ * kill the process but instead return -1 and set errno.
+ * That lets us print a fatal message instead of dieing suddenly.
+ *
+ * Note that this requires ignoring EPIPE when writing and
+ * flushing stdout/stderr in other parts of the program. E.g.,
+ *
+ * gawk 'BEGIN { print "hi" }' | exit
+ *
+ * should not give us "broken pipe" messages --- mainly because
+ * it did not do so in the past and people would complain.
+ */
+ signal(SIGPIPE, SIG_IGN);
+#endif
(void) sigsegv_install_handler(catchsegv);
#define STACK_SIZE (16*1024)
@@ -438,7 +455,7 @@ main(int argc, char **argv)
break;
case 'O':
- do_optimize++;
+ do_optimize = true;
break;
case 'p':
@@ -841,8 +858,13 @@ By default it reads standard input and writes standard output.\n\n"), fp);
fflush(fp);
if (ferror(fp)) {
- if (fp == stdout)
- warning(_("error writing standard output (%s)"), strerror(errno));
+ /* don't warn about stdout/stderr if EPIPE, but do error exit */
+ if (errno != EPIPE) {
+ if (fp == stdout)
+ warning(_("error writing standard output (%s)"), strerror(errno));
+ else if (fp == stderr)
+ warning(_("error writing standard error (%s)"), strerror(errno));
+ }
exit(EXIT_FAILURE);
}
@@ -879,7 +901,9 @@ along with this program. If not, see http://www.gnu.org/licenses/.\n");
fflush(stdout);
if (ferror(stdout)) {
- warning(_("error writing standard output (%s)"), strerror(errno));
+ /* don't warn about stdout if EPIPE, but do error exit */
+ if (errno != EPIPE)
+ warning(_("error writing standard output (%s)"), strerror(errno));
exit(EXIT_FAILURE);
}
@@ -1096,6 +1120,10 @@ load_environ()
*/
path_environ("AWKPATH", defpath);
path_environ("AWKLIBPATH", deflibpath);
+
+ /* set up array functions */
+ init_env_array(ENVIRON_node);
+
return ENVIRON_node;
}
diff --git a/missing_d/ChangeLog b/missing_d/ChangeLog
index f94c070d..70fbde64 100644
--- a/missing_d/ChangeLog
+++ b/missing_d/ChangeLog
@@ -1,3 +1,7 @@
+2014-04-08 Arnold D. Robbins <arnold@skeeve.com>
+
+ * 4.1.1: Release tar ball made.
+
2013-05-09 Arnold D. Robbins <arnold@skeeve.com>
* 4.1.0: Release tar ball made.
diff --git a/msg.c b/msg.c
index edacdd1c..16fef73a 100644
--- a/msg.c
+++ b/msg.c
@@ -44,15 +44,22 @@ err(bool isfatal, const char *s, const char *emsg, va_list argp)
char *file;
const char *me;
+ static bool first = true;
+ static bool add_src_info = false;
+
+ if (first) {
+ first = false;
+ add_src_info = (getenv("GAWK_MSG_SRC") != NULL);
+ }
+
(void) fflush(output_fp);
me = myname;
(void) fprintf(stderr, "%s: ", me);
-#ifdef GAWKDEBUG
- if (srcfile != NULL) {
+
+ if (srcfile != NULL && add_src_info) {
fprintf(stderr, "%s:%d:", srcfile, srcline);
srcfile = NULL;
}
-#endif /* GAWKDEBUG */
if (sourceline > 0) {
if (source != NULL)
@@ -109,10 +116,10 @@ msg(const char *mesg, ...)
va_end(args);
}
-/* warning --- print a warning message */
+/* r_warning --- print a warning message */
void
-warning(const char *mesg, ...)
+r_warning(const char *mesg, ...)
{
va_list args;
va_start(args, mesg);
diff --git a/nonposix.h b/nonposix.h
new file mode 100644
index 00000000..88fd9e69
--- /dev/null
+++ b/nonposix.h
@@ -0,0 +1,31 @@
+/*
+ * nonposix.h --- definitions needed on non-POSIX systems.
+ */
+
+/*
+ * Copyright (C) 2012, 2013 the Free Software Foundation, Inc.
+ *
+ * This file is part of GAWK, the GNU implementation of the
+ * AWK Programming Language.
+ *
+ * GAWK is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * GAWK is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA
+ */
+
+/*
+ * This is for fake directory file descriptors on systems that don't
+ * allow to open() a directory.
+ */
+
+#define FAKE_FD_VALUE 42
diff --git a/old-extension/ChangeLog b/old-extension/ChangeLog
index a25295a6..55c8d31d 100644
--- a/old-extension/ChangeLog
+++ b/old-extension/ChangeLog
@@ -1,3 +1,10 @@
+2014-01-07 Arnold D. Robbins <arnold@skeeve.com>
+
+ * dbarray.awk: Use full name for lib to load in extenstion() call.
+ * record.awk: Ditto.
+ * testsparr.awk: Ditto.
+ * spec_array.c [SUPER]: Fix so that it will compile.
+
2013-01-06 Arnold D. Robbins <arnold@skeeve.com>
* bindarr.c, dbarray.awk, fileop.c, record.awk, sparr.c,
diff --git a/old-extension/dbarray.awk b/old-extension/dbarray.awk
index e0a3c093..1e31f58f 100644
--- a/old-extension/dbarray.awk
+++ b/old-extension/dbarray.awk
@@ -3,7 +3,7 @@
# @load "bindarr"
BEGIN {
- extension("bindarr")
+ extension("./bindarr.so")
}
function _db_count(symbol, sq,
diff --git a/old-extension/record.awk b/old-extension/record.awk
index 18a3ce48..ff89110d 100644
--- a/old-extension/record.awk
+++ b/old-extension/record.awk
@@ -30,8 +30,8 @@
#
BEGIN {
- extension("fileop.so")
- extension("bindarr.so")
+ extension("./fileop.so")
+ extension("./bindarr.so")
}
# _record_count --- return the number of records in file
diff --git a/old-extension/spec_array.c b/old-extension/spec_array.c
index 78b24018..34d15fc5 100644
--- a/old-extension/spec_array.c
+++ b/old-extension/spec_array.c
@@ -3,7 +3,7 @@
*/
/*
- * Copyright (C) 2012 the Free Software Foundation, Inc.
+ * Copyright (C) 2012, 2014 the Free Software Foundation, Inc.
*
* This file is part of GAWK, the GNU implementation of the
* AWK Programming Language.
@@ -40,7 +40,7 @@ typedef struct spec_array {
* the base array is str_array.
*/
-#define SUPER(F) (*str_array_func[AFUNC(F)])
+#define SUPER(F) (*str_array_func[F ## _ind])
/*
diff --git a/old-extension/testsparr.awk b/old-extension/testsparr.awk
index 648a21a2..a9e3119d 100644
--- a/old-extension/testsparr.awk
+++ b/old-extension/testsparr.awk
@@ -1,6 +1,6 @@
# ../gawk -lsparr -f testsparr.awk
BEGIN {
- extension("sparr")
+ extension("./sparr.so")
print SYS["time"]
SYS["readline"] = "sparr.c";
printf("File %s has %d lines\n", SYS["readline"], length(READLINE))
diff --git a/pc/ChangeLog b/pc/ChangeLog
index f6661368..d8e60c98 100644
--- a/pc/ChangeLog
+++ b/pc/ChangeLog
@@ -1,3 +1,52 @@
+2014-04-08 Arnold D. Robbins <arnold@skeeve.com>
+
+ * 4.1.1: Release tar ball made.
+
+2014-02-03 Scott Deifik <scottd.mail@sbcglobal.net>
+
+ * Makefile.tst: Include original test/Makefile.in lines as
+ comments.
+
+2014-01-28 Eli Zaretskii <eliz@gnu.org>
+
+ * Makefile.tst (strftime): Pass the value of 'date' command
+ through the DATECMD variable.
+ (readdir): Adapt to changes in test/readdir0.awk.
+
+2014-01-20 Arnold D. Robbins <arnold@skeeve.com>
+
+ * Makefile.tst (mbprintf4, backbigs1, backsmalls1): Add warning
+ that the tests are expected to fail with DJGPP.
+
+2014-01-24 Scott Deifik <scottd.mail@sbcglobal.net>
+
+ * Makefile.tst: Sync with mainline.
+
+2014-01-20 Arnold D. Robbins <arnold@skeeve.com>
+
+ * Makefile.tst (split_after_fpat, mpfrnegzero): Added, to
+ sync with main test Makefile.
+
+2014-01-15 Eli Zaretskii <eliz@gnu.org>
+
+ * Makefile.tst (mbprintf4, profile5, backbigs1, backsmalls1):
+ Announce expected failures.
+ (fts): Fail gracefully, to avoid bailing out of the test suite too
+ early.
+
+ * popen.c (os_system): Use spawnl, and quote the command line, to
+ be consistent with what gawk_popen does.
+ (os_popen) [__MINGW32__]: Don't scriptify the command, to be
+ consistent with gawk_popen.
+ (os_pclose) [__MINGW32__]: Update to match os_open: no need to
+ unlink the script file.
+
+2013-12-10 Scott Deifik <scottd.mail@sbcglobal.net>
+
+ * gawkmisc.c (init_sockets): Move into the right part of the
+ file so that it will be compiled for DJGPP also.
+ * Makefile.tst: Sync with mainline.
+
2013-06-03 Arnold D. Robbins <arnold@skeeve.com>
* gawkmisc.c (init_sockets): Rearrange ifdefs.
diff --git a/pc/Makefile b/pc/Makefile
index 9d98cb1c..d1c08069 100644
--- a/pc/Makefile
+++ b/pc/Makefile
@@ -6,6 +6,17 @@
# Tested with GNU make on Windows, OS/2 and DOS.
+# Copyright (C) 1989-2014 Free Software Foundation, Inc.
+
+# This Makefile is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
+# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
+# PARTICULAR PURPOSE.
+
default:
@echo "Enter $(MAK) target "
@echo " where 'target' is chosen from "
diff --git a/pc/Makefile.tst b/pc/Makefile.tst
index 6e6992c2..866b4692 100644
--- a/pc/Makefile.tst
+++ b/pc/Makefile.tst
@@ -1,6 +1,6 @@
# Makefile for GNU Awk test suite.
#
-# Copyright (C) 1988-2013 the Free Software Foundation, Inc.
+# Copyright (C) 1988-2014 the Free Software Foundation, Inc.
#
# This file is part of GAWK, the GNU implementation of the
# AWK Programming Language.
@@ -105,13 +105,13 @@ CP = cp
#CP = : && command -c copy
#CP = command.com /c copy
-#MV = cmd.exe /c ren
-MV = mv
+MV = cmd.exe /c ren
+#MV = mv
-MKDIR = mkdir
+#MKDIR = mkdir
#MKDIR = gmkdir
#MKDIR = : && command -c mkdir
-#MKDIR = command.com /c mkdir
+MKDIR = command.com /c mkdir
# Set your unix-style date function here
#DATE = date
@@ -130,7 +130,7 @@ export GREP_OPTIONS=
srcdir = .
abs_srcdir = .
abs_builddir = .
-top_srcdir = $(srcdir)/..
+top_srcdir = "$(srcdir)"/..
# Get rid of core files when cleaning and generated .ok file
CLEANFILES = core core.* fmtspcl.ok
@@ -142,10 +142,11 @@ BASIC_TESTS = \
arynocls aryprm1 aryprm2 aryprm3 aryprm4 aryprm5 aryprm6 aryprm7 \
aryprm8 arysubnm asgext awkpath \
back89 backgsub \
+ badassign1 \
childin clobber closebad clsflnam compare compare2 concat1 concat2 \
concat3 concat4 convfmt \
- datanonl defref delargv delarpm2 delarprm delfunc dfastress dynlj \
- eofsplit exitval1 exitval2 \
+ datanonl defref delargv delarpm2 delarprm delfunc dfamb1 dfastress dynlj \
+ eofsplit exit2 exitval1 exitval2 \
fcall_exit fcall_exit2 fldchg fldchgnf fnamedat fnarray fnarray2 \
fnaryscl fnasgnm fnmisc fordel forref forsimp fsbs fsrs fsspcoln \
fstabplus funsemnl funsmnam funstack \
@@ -156,7 +157,7 @@ BASIC_TESTS = \
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 \
+ nasty nasty2 negexp negrange nested nfldstr nfloop nfneg nfset nlfldsep \
nlinstr nlstrina noeffect nofile nofmtch noloop1 noloop2 nonl \
noparms nors nulrsend numindex numsubstr \
octsub ofmt ofmta ofmtbig ofmtfidl ofmts ofs1 onlynl opasnidx opasnslf \
@@ -174,8 +175,8 @@ BASIC_TESTS = \
zero2 zeroe0 zeroflag
UNIX_TESTS = \
- fflush getlnhd localenl pid pipeio1 pipeio2 poundbang rtlen rtlen01 \
- space strftlng
+ fflush getlnhd localenl pid pipeio1 pipeio2 poundbang \
+ rtlen rtlen01 space strftlng
GAWK_EXT_TESTS = \
aadelete1 aadelete2 aarray1 aasort aasorti argtest arraysort \
@@ -191,19 +192,22 @@ GAWK_EXT_TESTS = \
manyfiles match1 match2 match3 mbstr1 \
nastyparm next nondec nondec2 \
patsplit posix printfbad1 printfbad2 printfbad3 procinfs \
- profile1 profile2 profile3 pty1 \
+ profile1 profile2 profile3 profile4 profile5 pty1 \
rebuf regx8bit reginttrad reint reint2 rsstart1 \
- rsstart2 rsstart3 rstest6 shadow sortfor sortu splitarg4 strftime \
+ rsstart2 rsstart3 rstest6 shadow sortfor sortu split_after_fpat \
+ splitarg4 strftime \
strtonum switch2 symtab1 symtab2 symtab3 symtab4 symtab5 symtab6 \
symtab7 symtab8 symtab9
EXTRA_TESTS = inftest regtest
INET_TESTS = inetdayu inetdayt inetechu inetecht
MACHINE_TESTS = double1 double2 fmtspcl intformat
-MPFR_TESTS = mpfrnr mpfrrnd mpfrieee mpfrexprange mpfrsort mpfrbigint
+MPFR_TESTS = mpfrnr mpfrnegzero mpfrrnd mpfrieee mpfrexprange \
+ mpfrsort mpfrbigint
LOCALE_CHARSET_TESTS = \
- asort asorti fmttest fnarydel fnparydl jarebug lc_num1 mbfw1 \
- mbprintf1 mbprintf2 mbprintf3 rebt8b2 rtlenmb sort1 sprintfc
+ asort asorti backbigs1 backsmalls1 backsmalls2 \
+ fmttest fnarydel fnparydl jarebug lc_num1 mbfw1 \
+ mbprintf1 mbprintf2 mbprintf3 mbprintf4 rebt8b2 rtlenmb sort1 sprintfc
SHLIB_TESTS = \
fnmatch filefuncs fork fork2 fts functab4 inplace1 inplace2 inplace3 \
@@ -243,7 +247,7 @@ check: msg \
extend-msg-start gawk-extensions extend-msg-end \
machine-msg-start machine-tests machine-msg-end \
charset-msg-start charset-tests charset-msg-end \
- shlib-msg-start shlib-tests shlib-msg-end \
+ shlib-msg-start shlib-tests shlib-msg-end \
mpfr-msg-start mpfr-tests mpfr-msg-end \
pass-fail
@@ -261,21 +265,17 @@ inet: inetmesg $(INET_TESTS)
machine-tests: $(MACHINE_TESTS)
+# The blank between ' and /MPFR/ is for running tests on Windows under
+# MSYS, which thinks /MPFR is a Unix-style file name and converts it
+# to Windows format, butchering it in the process. Likewise for /API/
+# in the next shlib-tests.
mpfr-tests:
-# @if $(AWK) --version | $(AWK) '/MPFR/ { exit 1 }' ; then \
-# echo MPFR tests not supported on this system ; \
-# else $(MAKE) $(MPFR_TESTS) ; \
-# fi
@if $(AWK) --version | $(AWK) ' /MPFR/ { exit 1 }' ; then \
echo MPFR tests not supported on this system ; \
else $(MAKE) $(MPFR_TESTS) ; \
fi
shlib-tests:
-# @if $(AWK) --version | $(AWK) '/API/ { exit 1 }' ; then \
-# echo shlib tests not supported on this system ; \
-# else $(MAKE) shlib-real-tests ; \
-# fi
@if $(AWK) --version | $(AWK) ' /API/ { exit 1 }' ; then \
echo shlib tests not supported on this system ; \
else $(MAKE) shlib-real-tests ; \
@@ -291,7 +291,7 @@ msg::
@echo "precision may lead to slightly different output in a few cases."
printlang::
- @$(AWK) -f $(srcdir)/printlang.awk
+ @$(AWK) -f "$(srcdir)"/printlang.awk
basic-msg-start:
@echo "======== Starting basic tests ========"
@@ -338,8 +338,8 @@ mpfr-msg-end:
lc_num1:
@echo $@
@[ -z "$$GAWKLOCALE" ] && GAWKLOCALE=en_US.UTF-8; \
- AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+ AWKPATH="$(srcdir)" $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
# This test is a PITA because increasingly, /tmp is getting
# mounted noexec. So, we'll test it locally. Sigh.
@@ -348,197 +348,195 @@ lc_num1:
# so this can still fail
poundbang::
@echo $@
- @sed "s;/tmp/gawk;`pwd`/$(AWKPROG);" < $(srcdir)/poundbang.awk > ./_pbd.awk
+ @sed "s;/tmp/gawk;`pwd`/$(AWKPROG);" < "$(srcdir)"/poundbang.awk > ./_pbd.awk
@chmod +x ./_pbd.awk
- @if ./_pbd.awk $(srcdir)/poundbang.awk > _`basename $@` ; \
+ @if ./_pbd.awk "$(srcdir)"/poundbang.awk > _`basename $@` ; \
then : ; \
else \
- sed "s;/tmp/gawk;../$(AWKPROG);" < $(srcdir)/poundbang.awk > ./_pbd.awk ; \
+ sed "s;/tmp/gawk;../$(AWKPROG);" < "$(srcdir)"/poundbang.awk > ./_pbd.awk ; \
chmod +x ./_pbd.awk ; \
- LC_ALL=$${GAWKLOCALE:-C} LANG=$${GAWKLOCALE:-C} ./_pbd.awk $(srcdir)/poundbang.awk > _`basename $@`; \
+ LC_ALL=$${GAWKLOCALE:-C} LANG=$${GAWKLOCALE:-C} ./_pbd.awk "$(srcdir)"/poundbang.awk > _`basename $@`; \
fi
- @-$(CMP) $(srcdir)/poundbang.awk _`basename $@` && rm -f _`basename $@` _pbd.awk
+ @-$(CMP) "$(srcdir)"/poundbang.awk _`basename $@` && rm -f _`basename $@` _pbd.awk
messages::
@echo $@
- @$(AWK) -f $(srcdir)/messages.awk >_out2 2>_out3
- @-$(CMP) $(srcdir)/out1.ok _out1 && $(CMP) $(srcdir)/out2.ok _out2 && $(CMP) $(srcdir)/out3.ok _out3 && rm -f _out1 _out2 _out3
+ @$(AWK) -f "$(srcdir)"/messages.awk >_out2 2>_out3
+ @-$(CMP) "$(srcdir)"/out1.ok _out1 && $(CMP) "$(srcdir)"/out2.ok _out2 && $(CMP) "$(srcdir)"/out3.ok _out3 && rm -f _out1 _out2 _out3
argarray::
@echo $@
- @case $(srcdir) in \
+ @case "$(srcdir)" in \
.) : ;; \
- *) cp $(srcdir)/argarray.in . ;; \
+ *) cp "$(srcdir)"/argarray.in . ;; \
esac
- @TEST=test echo just a test | $(AWK) -f $(srcdir)/argarray.awk ./argarray.in - >_$@
- @case $(srcdir) in \
+ @TEST=test echo just a test | $(AWK) -f "$(srcdir)"/argarray.awk ./argarray.in - >_$@
+ @case "$(srcdir)" in \
.) : ;; \
*) rm -f ./argarray.in ;; \
esac
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
regtest::
@echo 'Some of the output from regtest is very system specific, do not'
@echo 'be distressed if your output differs from that distributed.'
@echo 'Manual inspection is called for.'
- AWK=$(AWKPROG) $(srcdir)/regtest.sh
+ AWK=$(AWKPROG) "$(srcdir)"/regtest.sh
manyfiles::
@echo manyfiles
@rm -rf junk
@mkdir junk
@$(AWK) 'BEGIN { for (i = 1; i <= 1030; i++) print i, i}' >_$@
- @$(AWK) -f $(srcdir)/manyfiles.awk _$@ _$@
+ @$(AWK) -f "$(srcdir)"/manyfiles.awk _$@ _$@
@wc -l junk/* | $(AWK) '$$1 != 2' | wc -l | sed "s/ *//g" > _$@
@rm -rf junk
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
compare::
@echo $@
- @$(AWK) -f $(srcdir)/compare.awk 0 1 $(srcdir)/compare.in >_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+ @$(AWK) -f "$(srcdir)"/compare.awk 0 1 "$(srcdir)"/compare.in >_$@
+ @-$(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)/$@.ok _$@ && rm -f _$@
+ @$(AWK) -f "$(srcdir)"/inftest.awk | sed "s/inf/Inf/g" >_$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
getline2::
@echo $@
- @$(AWK) -f $(srcdir)/getline2.awk $(srcdir)/getline2.awk $(srcdir)/getline2.awk >_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+ @$(AWK) -f "$(srcdir)"/getline2.awk "$(srcdir)"/getline2.awk "$(srcdir)"/getline2.awk >_$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
awkpath::
@echo $@
@AWKPATH="$(srcdir)$(PATH_SEPARATOR)$(srcdir)/lib" $(AWK) -f awkpath.awk >_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
argtest::
@echo $@
- @$(AWK) -f $(srcdir)/argtest.awk -x -y abc >_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+ @$(AWK) -f "$(srcdir)"/argtest.awk -x -y abc >_$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
badargs::
@echo $@
@-$(AWK) -f 2>&1 | grep -v patchlevel >_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
nonl::
@echo $@
- @-AWKPATH=$(srcdir) $(AWK) --lint -f nonl.awk /dev/null >_$@ 2>&1
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+ @-AWKPATH="$(srcdir)" $(AWK) --lint -f nonl.awk /dev/null >_$@ 2>&1
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
strftime::
- @echo This test could fail on slow machines or on a minute boundary,
- @echo so if it does, double check the actual results:
@echo $@
# @GAWKLOCALE=C; export GAWKLOCALE; \
# TZ=GMT0; export TZ; \
-# (LC_ALL=C date) | $(AWK) -v OUTPUT=_$@ -f $(srcdir)/strftime.awk
+# $(AWK) -v OUTPUT=_$@ -f "$(srcdir)"/strftime.awk
@GAWKLOCALE=C; export GAWKLOCALE; \
TZ=GMT0; export TZ; \
- (LC_ALL=C $(DATE)) | $(AWK) -v OUTPUT=_$@ -f $(srcdir)/strftime.awk
+ $(AWK) -v OUTPUT=_$@ -v DATECMD="$(DATE)" -f "$(srcdir)"/strftime.awk
@-$(CMP) strftime.ok _$@ && rm -f _$@ strftime.ok || exit 0
litoct::
@echo $@
- @echo ab | $(AWK) --traditional -f $(srcdir)/litoct.awk >_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+ @echo ab | $(AWK) --traditional -f "$(srcdir)"/litoct.awk >_$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
devfd::
@echo $@
@echo Expect devfd to fail in MinGW
- @$(AWK) 1 /dev/fd/4 /dev/fd/5 4<$(srcdir)/devfd.in4 5<$(srcdir)/devfd.in5 >_$@ 2>&1 || echo EXIT CODE: $$? >> _$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+ @$(AWK) 1 /dev/fd/4 /dev/fd/5 4<"$(srcdir)"/devfd.in4 5<"$(srcdir)"/devfd.in5 >_$@ 2>&1 || echo EXIT CODE: $$? >> _$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
fflush::
@echo $@
- @$(srcdir)/fflush.sh >_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+ @"$(srcdir)"/fflush.sh >_$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
tweakfld::
@echo $@
- @$(AWK) -f $(srcdir)/tweakfld.awk $(srcdir)/tweakfld.in >_$@
+ @$(AWK) -f "$(srcdir)"/tweakfld.awk "$(srcdir)"/tweakfld.in >_$@
@rm -f errors.cleanup
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
mmap8k::
@echo $@
- @$(AWK) '{ print }' $(srcdir)/mmap8k.in >_$@
- @-$(CMP) $(srcdir)/mmap8k.in _$@ && rm -f _$@ || cp $(srcdir)/$@.in $@.ok
+ @$(AWK) '{ print }' "$(srcdir)"/mmap8k.in >_$@
+ @-$(CMP) "$(srcdir)"/mmap8k.in _$@ && rm -f _$@ || cp "$(srcdir)"/$@.in $@.ok
tradanch::
@echo $@
- @$(AWK) --traditional -f $(srcdir)/tradanch.awk $(srcdir)/tradanch.in >_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+ @$(AWK) --traditional -f "$(srcdir)"/tradanch.awk "$(srcdir)"/tradanch.in >_$@
+ @-$(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.
pid::
@echo pid
@echo Expect pid to fail with DJGPP and MinGW.
- @AWKPATH=$(srcdir) AWK=$(AWKPROG) $(SHELL) $(srcdir)/pid.sh $$$$ > _`basename $@` ; :
- @-$(CMP) $(srcdir)/pid.ok _`basename $@` && rm -f _`basename $@`
+ @AWKPATH="$(srcdir)" AWK=$(AWKPROG) $(SHELL) "$(srcdir)"/pid.sh $$$$ > _`basename $@` ; :
+ @-$(CMP) "$(srcdir)"/pid.ok _`basename $@` && rm -f _`basename $@`
strftlng::
@echo $@
- @TZ=UTC; export TZ; $(AWK) -f $(srcdir)/strftlng.awk >_$@
- @if $(CMP) $(srcdir)/strftlng.ok _$@ >/dev/null 2>&1 ; then : ; else \
- TZ=UTC0; export TZ; $(AWK) -f $(srcdir)/strftlng.awk >_$@ ; \
+ @TZ=UTC; export TZ; $(AWK) -f "$(srcdir)"/strftlng.awk >_$@
+ @if $(CMP) "$(srcdir)"/strftlng.ok _$@ >/dev/null 2>&1 ; then : ; else \
+ TZ=UTC0; export TZ; $(AWK) -f "$(srcdir)"/strftlng.awk >_$@ ; \
fi
- @-$(CMP) $(srcdir)/$@.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)/$@.ok _$@ && rm -f _$@
+ @echo A B C D E | tr -d '\12\15' | $(AWK) '{ print $$NF }' - "$(srcdir)"/nors.in > _$@
+ @-$(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
+ @$(AWK) -v "sd=$(srcdir)" 'BEGIN {pnan = sprintf("%g",sqrt(-1)); nnan = sprintf("%g",-sqrt(-1)); pinf = sprintf("%g",-log(0)); ninf = sprintf("%g",log(0))} {sub(/positive_nan/,pnan); sub(/negative_nan/,nnan); sub(/positive_infinity/,pinf); sub(/negative_infinity/,ninf); sub(/fmtspcl/,(sd"/fmtspcl")); print}' < "$(srcdir)"/fmtspcl.tok > $@ 2>/dev/null
fmtspcl: fmtspcl.ok
@echo $@
@echo Expect $@ to fail on MinGW if not built with MPFR
- @$(AWK) $(AWKFLAGS) -f $(srcdir)/fmtspcl.awk --lint >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @$(AWK) $(AWKFLAGS) -f "$(srcdir)"/fmtspcl.awk --lint >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
@-if test -z "$$AWKFLAGS" ; then $(CMP) $@.ok _$@ && rm -f _$@ ; else \
- $(CMP) $(srcdir)/$@-mpfr.ok _$@ && rm -f _$@ ; \
+ $(CMP) "$(srcdir)"/$@-mpfr.ok _$@ && rm -f _$@ ; \
fi
reint::
@echo $@
- @$(AWK) --re-interval -f $(srcdir)/reint.awk $(srcdir)/reint.in >_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+ @$(AWK) --re-interval -f "$(srcdir)"/reint.awk "$(srcdir)"/reint.in >_$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
pipeio1::
@echo $@
- @$(AWK) -f $(srcdir)/pipeio1.awk >_$@
+ @$(AWK) -f "$(srcdir)"/pipeio1.awk >_$@
@rm -f test1 test2
- @-$(CMP) $(srcdir)/$@.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)/$@.ok _$@ && rm -f _$@
+ @$(AWK) -v SRCDIR="$(srcdir)" -f "$(srcdir)"/pipeio2.awk >_$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
clobber::
@echo $@
- @$(AWK) -f $(srcdir)/clobber.awk >_$@
- @-$(CMP) $(srcdir)/clobber.ok seq && $(CMP) $(srcdir)/clobber.ok _$@ && rm -f _$@
+ @$(AWK) -f "$(srcdir)"/clobber.awk >_$@
+ @-$(CMP) "$(srcdir)"/clobber.ok seq && $(CMP) "$(srcdir)"/clobber.ok _$@ && rm -f _$@
@rm -f seq
arynocls::
@echo $@
- @-AWKPATH=$(srcdir) $(AWK) -v INPUT=$(srcdir)/arynocls.in -f arynocls.awk >_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+ @-AWKPATH="$(srcdir)" $(AWK) -v INPUT="$(srcdir)"/arynocls.in -f arynocls.awk >_$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
getlnbuf::
@echo $@
- @-AWKPATH=$(srcdir) $(AWK) -f getlnbuf.awk $(srcdir)/getlnbuf.in > _$@
- @-AWKPATH=$(srcdir) $(AWK) -f gtlnbufv.awk $(srcdir)/getlnbuf.in > _2$@
- @-$(CMP) $(srcdir)/getlnbuf.ok _$@ && $(CMP) $(srcdir)/getlnbuf.ok _2$@ && rm -f _$@ _2$@
+ @-AWKPATH="$(srcdir)" $(AWK) -f getlnbuf.awk "$(srcdir)"/getlnbuf.in > _$@
+ @-AWKPATH="$(srcdir)" $(AWK) -f gtlnbufv.awk "$(srcdir)"/getlnbuf.in > _2$@
+ @-$(CMP) "$(srcdir)"/getlnbuf.ok _$@ && $(CMP) "$(srcdir)"/getlnbuf.ok _2$@ && rm -f _$@ _2$@
inetmesg::
@echo These tests only work if your system supports the services
@@ -577,29 +575,29 @@ inetdayt::
redfilnm::
@echo $@
- @$(AWK) -f $(srcdir)/redfilnm.awk srcdir=$(srcdir) $(srcdir)/redfilnm.in >_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+ @$(AWK) -f "$(srcdir)"/redfilnm.awk srcdir="$(srcdir)" "$(srcdir)"/redfilnm.in >_$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
leaddig::
@echo $@
- @$(AWK) -v x=2E -f $(srcdir)/leaddig.awk >_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+ @$(AWK) -v x=2E -f "$(srcdir)"/leaddig.awk >_$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
gsubtst3::
@echo $@
- @$(AWK) --re-interval -f $(srcdir)/$@.awk $(srcdir)/$@.in >_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+ @$(AWK) --re-interval -f "$(srcdir)"/$@.awk "$(srcdir)"/$@.in >_$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
space::
@echo $@
- @$(AWK) -f ' ' $(srcdir)/space.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
-# @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
- @-$(TESTOUTCMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+ @$(AWK) -f ' ' "$(srcdir)"/space.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+# @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
+ @-$(TESTOUTCMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
printf0::
@echo $@
- @$(AWK) --posix -f $(srcdir)/$@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+ @$(AWK) --posix -f "$(srcdir)"/$@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
rsnulbig::
@echo $@
@@ -610,7 +608,7 @@ rsnulbig::
@$(AWK) 'BEGIN { for (i = 1; i <= 128*64+1; i++) print "abcdefgh123456\n" }' 2>&1 | \
$(AWK) 'BEGIN { RS = ""; ORS = "\n\n" }; { print }' 2>&1 | \
$(AWK) ' /^[^a]/; END{ print NR }' >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
rsnulbig2::
@echo $@
@@ -622,304 +620,329 @@ rsnulbig2::
for (i = 1; i <= 128; i++) print n; print "abc\n" }' 2>&1 | \
$(AWK) 'BEGIN { RS = ""; ORS = "\n\n" };{ print }' 2>&1 | \
$(AWK) ' /^[^a]/; END { print NR }' >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
wideidx::
@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 _$@
+ AWKPATH="$(srcdir)" $(AWK) -f $@.awk < "$(srcdir)"/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
wideidx2::
@echo $@
@[ -z "$$GAWKLOCALE" ] && GAWKLOCALE=en_US.UTF-8; \
- AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+ AWKPATH="$(srcdir)" $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
widesub::
@echo $@
@[ -z "$$GAWKLOCALE" ] && GAWKLOCALE=en_US.UTF-8; \
- AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+ AWKPATH="$(srcdir)" $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
widesub2::
@echo $@
@[ -z "$$GAWKLOCALE" ] && GAWKLOCALE=en_US.UTF-8; \
- AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+ AWKPATH="$(srcdir)" $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
widesub3::
@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 _$@
+ AWKPATH="$(srcdir)" $(AWK) -f $@.awk < "$(srcdir)"/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
widesub4::
@echo $@
@[ -z "$$GAWKLOCALE" ] && GAWKLOCALE=en_US.UTF-8; \
- AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+ AWKPATH="$(srcdir)" $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
ignrcas2::
@echo $@
- @GAWKLOCALE=en_US ; export GAWKLOCALE ; \
- $(AWK) -f $(srcdir)/$@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >> _$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+ @GAWKLOCALE=en_US.UTF-8 ; export GAWKLOCALE ; \
+ $(AWK) -f "$(srcdir)"/$@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >> _$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
subamp::
@echo $@
@GAWKLOCALE=en_US.UTF-8 ; export GAWKLOCALE ; \
- $(AWK) -f $(srcdir)/$@.awk $(srcdir)/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >> _$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+ $(AWK) -f "$(srcdir)"/$@.awk "$(srcdir)"/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >> _$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
# This test makes sure gawk exits with a zero code.
# Thus, unconditionally generate the exit code.
exitval1::
@echo $@
- @$(AWK) -f $(srcdir)/exitval1.awk >_$@ 2>&1; echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+ @$(AWK) -f "$(srcdir)"/exitval1.awk >_$@ 2>&1; echo EXIT CODE: $$? >>_$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
fsspcoln::
@echo $@
- @$(AWK) -f $(srcdir)/$@.awk 'FS=[ :]+' $(srcdir)/$@.in >_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+ @$(AWK) -f "$(srcdir)"/$@.awk 'FS=[ :]+' "$(srcdir)"/$@.in >_$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
rsstart1::
@echo $@
- @$(AWK) -f $(srcdir)/$@.awk $(srcdir)/rsstart1.in >_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+ @$(AWK) -f "$(srcdir)"/$@.awk "$(srcdir)"/rsstart1.in >_$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
rsstart2::
@echo $@
- @$(AWK) -f $(srcdir)/$@.awk $(srcdir)/rsstart1.in >_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+ @$(AWK) -f "$(srcdir)"/$@.awk "$(srcdir)"/rsstart1.in >_$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
rsstart3::
@echo $@
- @head $(srcdir)/rsstart1.in | $(AWK) -f $(srcdir)/rsstart2.awk >_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+ @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 _$@
+ @"$(srcdir)"/$@.sh >_$@ || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
rtlen01::
@echo $@
- @$(srcdir)/$@.sh >_$@ || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+ @"$(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)/$@.ok _$@ && rm -f _$@
+ "$(srcdir)"/rtlen.sh >_$@ || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
nondec2::
@echo $@
- @$(AWK) --non-decimal-data -v a=0x1 -f $(srcdir)/$@.awk >_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+ @$(AWK) --non-decimal-data -v a=0x1 -f "$(srcdir)"/$@.awk >_$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
nofile::
@echo $@
@$(AWK) '{}' no/such/file >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
@sed "s/ (ENOENT)//" _$@ > _$@.2
@rm -f _$@
-# @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
- @-$(CMP) $(srcdir)/$@.ok _$@.2 && rm -f _$@.2
+# @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@.2 && rm -f _$@.2
binmode1::
@echo $@
@$(AWK) -v BINMODE=3 'BEGIN { print BINMODE }' >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
subi18n::
@echo $@
- @GAWKLOCALE=en_US.UTF-8 ; $(AWK) -f $(srcdir)/$@.awk > _$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+ @GAWKLOCALE=en_US.UTF-8 ; $(AWK) -f "$(srcdir)"/$@.awk > _$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
concat4::
@echo $@
- @GAWKLOCALE=en_US.UTF-8 ; $(AWK) -f $(srcdir)/$@.awk $(srcdir)/$@.in > _$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+ @GAWKLOCALE=en_US.UTF-8 ; $(AWK) -f "$(srcdir)"/$@.awk "$(srcdir)"/$@.in > _$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
devfd1::
@echo $@
@echo Expect devfd1 to fail in MinGW
- @$(AWK) -f $(srcdir)/$@.awk 4< $(srcdir)/devfd.in1 5< $(srcdir)/devfd.in2 >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+ @$(AWK) -f "$(srcdir)"/$@.awk 4< "$(srcdir)"/devfd.in1 5< "$(srcdir)"/devfd.in2 >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
# 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 _$@
+ @$(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 _$@
mixed1::
@echo $@
@$(AWK) -f /dev/null --source 'BEGIN {return junk}' >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
mtchi18n::
@echo $@
@GAWKLOCALE=ru_RU.UTF-8 ; export GAWKLOCALE ; \
- $(AWK) -f $(srcdir)/$@.awk $(srcdir)/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >> _$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+ $(AWK) -f "$(srcdir)"/$@.awk "$(srcdir)"/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >> _$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
reint2::
@echo $@
@[ -z "$$GAWKLOCALE" ] && GAWKLOCALE=en_US.UTF-8; \
- AWKPATH=$(srcdir) $(AWK) --re-interval -f $@.awk $(srcdir)/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+ AWKPATH="$(srcdir)" $(AWK) --re-interval -f $@.awk "$(srcdir)"/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
localenl::
@echo $@
- @$(srcdir)/$@.sh >_$@ 2>/dev/null
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+ @"$(srcdir)"/$@.sh >_$@ 2>/dev/null
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
mbprintf1::
@echo $@
@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 _$@
+ $(AWK) -f "$(srcdir)"/$@.awk "$(srcdir)"/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >> _$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
mbprintf2::
@echo $@
@GAWKLOCALE=ja_JP.UTF-8 ; export GAWKLOCALE ; \
- $(AWK) -f $(srcdir)/$@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >> _$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+ $(AWK) -f "$(srcdir)"/$@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >> _$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
mbprintf3::
@echo $@
@GAWKLOCALE=en_US.UTF-8 ; export GAWKLOCALE ; \
- $(AWK) -f $(srcdir)/$@.awk $(srcdir)/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >> _$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+ $(AWK) -f "$(srcdir)"/$@.awk "$(srcdir)"/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >> _$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
+
+mbprintf4::
+ @echo $@
+ @echo Expect mbprintf4 to fail with MinGW and DJGPP
+ @GAWKLOCALE=en_US.UTF-8 ; export GAWKLOCALE ; \
+ $(AWK) -f "$(srcdir)"/$@.awk "$(srcdir)"/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >> _$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
mbfw1::
@echo $@
@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 _$@
+ $(AWK) -f "$(srcdir)"/$@.awk "$(srcdir)"/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >> _$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
gsubtst6::
@echo $@
- @GAWKLOCALE=C ; $(AWK) -f $(srcdir)/$@.awk > _$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+ @GAWKLOCALE=C ; $(AWK) -f "$(srcdir)"/$@.awk > _$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
mbstr1::
@echo $@
@[ -z "$$GAWKLOCALE" ] && GAWKLOCALE=en_US.UTF-8; \
- AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+ AWKPATH="$(srcdir)" $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
printfbad2: printfbad2.ok
@echo $@
- @$(AWK) --lint -f $(srcdir)/$@.awk $(srcdir)/$@.in 2>&1 | sed 's;\$(srcdir)/;;g' >_$@ || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+ @$(AWK) --lint -f "$(srcdir)"/$@.awk "$(srcdir)"/$@.in 2>&1 | sed 's;$(srcdir)/;;g' >_$@ || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
beginfile1::
@echo $@
@echo Expect beginfile1 to fail with DJGPP
- @AWKPATH=$(srcdir) $(AWK) -f $@.awk $(srcdir)/$@.awk . ./no/such/file Makefile >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+ @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)" $(abs_srcdir)/$@.sh $(abs_srcdir)/$@.in ) > _$@ 2>&1
-# @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
- @-$(TESTOUTCMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+ @-( cd "$(srcdir)" && LC_ALL=C AWK="$(abs_builddir)/$(AWKPROG)" $(abs_srcdir)/$@.sh $(abs_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: $$? >>_$@
+ @AWKPATH="$(srcdir)" $(AWK) --dump-variables 1 < "$(srcdir)"/$@.in >/dev/null 2>&1 || echo EXIT CODE: $$? >>_$@
# @mv awkvars.out _$@
@$(MV) awkvars.out _$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
profile1:
@echo $@
- @$(AWK) --pretty-print=ap-$@.out -f $(srcdir)/xref.awk $(srcdir)/dtdgport.awk > _$@.out1
- @$(AWK) -f ap-$@.out $(srcdir)/dtdgport.awk > _$@.out2 ; rm ap-$@.out
+ @$(AWK) --pretty-print=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: $$? >>_$@ ; \
- cp $(srcdir)/dtdgport.awk > $@.ok ; }
+ cp "$(srcdir)"/dtdgport.awk > $@.ok ; }
profile2:
@echo $@
- @$(AWK) --profile=ap-$@.out -v sortcmd=sort -f $(srcdir)/xref.awk $(srcdir)/dtdgport.awk > /dev/null
+ @$(AWK) --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 _$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
profile3:
@echo $@
- @$(AWK) --profile=ap-$@.out -f $(srcdir)/$@.awk > /dev/null
+ @$(AWK) --profile=ap-$@.out -f "$(srcdir)"/$@.awk > /dev/null
@sed 1,2d < ap-$@.out > _$@; rm ap-$@.out
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
+
+profile4:
+ @echo $@
+ @GAWK_NO_PP_RUN=1 $(AWK) --profile=ap-$@.out -f "$(srcdir)"/$@.awk > /dev/null
+ @sed 1,2d < ap-$@.out > _$@; rm ap-$@.out
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
+
+profile5:
+ @echo $@
+ @echo Expect profile5 to fail with MinGW due to 3 digits in %e output
+ @GAWK_NO_PP_RUN=1 $(AWK) --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 _$@
+ @$(AWK) --posix -f "$(srcdir)"/$@.awk > _$@ 2>&1
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
next:
@echo $@
- @-$(LOCALES) AWK="$(AWKPROG)" $(srcdir)/$@.sh > _$@ 2>&1
- @-LC_ALL=C $(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+ @-$(LOCALES) AWK="$(AWKPROG)" "$(srcdir)"/$@.sh > _$@ 2>&1
+ @-LC_ALL=C $(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
exit:
@echo $@
@echo Expect exit to fail with MinGW due to null vs nul difference
- @-AWK="$(AWKPROG)" $(srcdir)/$@.sh > _$@ 2>&1
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+ @-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 _$@
+ AWKPATH="$(srcdir)" $(AWK) -f $@.awk < "$(srcdir)"/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
mpfrieee:
@echo $@
- @$(AWK) -M -vPREC=double -f $(srcdir)/$@.awk > _$@ 2>&1
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+ @$(AWK) -M -vPREC=double -f "$(srcdir)"/$@.awk > _$@ 2>&1
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
mpfrexprange:
@echo $@
- @$(AWK) -M -vPREC=53 -f $(srcdir)/$@.awk > _$@ 2>&1
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+ @$(AWK) -M -vPREC=53 -f "$(srcdir)"/$@.awk > _$@ 2>&1
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
mpfrrnd:
@echo $@
- @$(AWK) -M -vPREC=53 -f $(srcdir)/$@.awk > _$@ 2>&1
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+ @$(AWK) -M -vPREC=53 -f "$(srcdir)"/$@.awk > _$@ 2>&1
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
+
+mpfrnegzero:
+ @echo $@
+ @$(AWK) -M -f "$(srcdir)"/$@.awk > _$@ 2>&1
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
mpfrnr:
@echo $@
- @$(AWK) -M -vPREC=113 -f $(srcdir)/$@.awk $(srcdir)/$@.in > _$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+ @$(AWK) -M -vPREC=113 -f "$(srcdir)"/$@.awk "$(srcdir)"/$@.in > _$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
mpfrsort:
@echo $@
- @$(AWK) -M -vPREC=53 -f $(srcdir)/$@.awk > _$@ 2>&1
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+ @$(AWK) -M -vPREC=53 -f "$(srcdir)"/$@.awk > _$@ 2>&1
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
mpfrbigint:
@echo $@
- @$(AWK) -M -f $(srcdir)/$@.awk > _$@ 2>&1
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+ @$(AWK) -M -f "$(srcdir)"/$@.awk > _$@ 2>&1
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
jarebug::
@echo $@
@echo Expect jarebug to fail with DJGPP and MinGW.
- @$(srcdir)/$@.sh "$(AWKPROG)" "$(srcdir)/$@.awk" "$(srcdir)/$@.in" "_$@"
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+ @"$(srcdir)"/$@.sh "$(AWKPROG)" "$(srcdir)"/$@.awk "$(srcdir)"/$@.in "_$@"
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
ordchr2::
@echo $@
- @$(AWK) -l ordchr 'BEGIN {print chr(ord("z"))}' >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+ @$(AWK) --load ordchr 'BEGIN {print chr(ord("z"))}' >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
# N.B. If the test fails, create readfile.ok so that "make diffout" will work
readfile::
@@ -929,82 +952,82 @@ readfile::
include2::
@echo $@
- @AWKPATH=$(srcdir) $(AWK) -i inclib 'BEGIN {print sandwich("a", "b", "c")}' >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+ @AWKPATH="$(srcdir)" $(AWK) --include inclib 'BEGIN {print sandwich("a", "b", "c")}' >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
incdupe::
@echo $@
- @AWKPATH=$(srcdir) $(AWK) --lint -i inclib -i inclib.awk 'BEGIN {print sandwich("a", "b", "c")}' >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+ @AWKPATH="$(srcdir)" $(AWK) --lint -i inclib -i inclib.awk 'BEGIN {print sandwich("a", "b", "c")}' >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
incdupe2::
@echo $@
- @AWKPATH=$(srcdir) $(AWK) --lint -f inclib -f inclib.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+ @AWKPATH="$(srcdir)" $(AWK) --lint -f inclib -f inclib.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
incdupe3::
@echo $@
- @AWKPATH=$(srcdir) $(AWK) --lint -f hello -f hello.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+ @AWKPATH="$(srcdir)" $(AWK) --lint -f hello -f hello.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
incdupe4::
@echo $@
- @AWKPATH=$(srcdir) $(AWK) --lint -f hello -i hello.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+ @AWKPATH="$(srcdir)" $(AWK) --lint -f hello -i hello.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
incdupe5::
@echo $@
- @AWKPATH=$(srcdir) $(AWK) --lint -i hello -f hello.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+ @AWKPATH="$(srcdir)" $(AWK) --lint -i hello -f hello.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
incdupe6::
@echo $@
- @AWKPATH=$(srcdir) $(AWK) --lint -i inchello -f hello.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+ @AWKPATH="$(srcdir)" $(AWK) --lint -i inchello -f hello.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
incdupe7::
@echo $@
- @AWKPATH=$(srcdir) $(AWK) --lint -f hello -i inchello >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+ @AWKPATH="$(srcdir)" $(AWK) --lint -f hello -i inchello >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
inplace1::
@echo $@
- @cp $(srcdir)/inplace.1.in _$@.1
- @cp $(srcdir)/inplace.2.in _$@.2
- @AWKPATH=$(srcdir)/../awklib/eg/lib $(AWK) -i inplace 'BEGIN {print "before"} {gsub(/foo/, "bar"); print} END {print "after"}' _$@.1 - _$@.2 < $(srcdir)/inplace.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
- @-$(CMP) $(srcdir)/$@.1.ok _$@.1 && rm -f _$@.1
- @-$(CMP) $(srcdir)/$@.2.ok _$@.2 && rm -f _$@.2
+ @cp "$(srcdir)"/inplace.1.in _$@.1
+ @cp "$(srcdir)"/inplace.2.in _$@.2
+ @AWKPATH="$(srcdir)"/../awklib/eg/lib $(AWK) -i inplace 'BEGIN {print "before"} {gsub(/foo/, "bar"); print} END {print "after"}' _$@.1 - _$@.2 < "$(srcdir)"/inplace.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
+ @-$(CMP) "$(srcdir)"/$@.1.ok _$@.1 && rm -f _$@.1
+ @-$(CMP) "$(srcdir)"/$@.2.ok _$@.2 && rm -f _$@.2
inplace2::
@echo $@
- @cp $(srcdir)/inplace.1.in _$@.1
- @cp $(srcdir)/inplace.2.in _$@.2
- @AWKPATH=$(srcdir)/../awklib/eg/lib $(AWK) -i inplace -v INPLACE_SUFFIX=.bak 'BEGIN {print "before"} {gsub(/foo/, "bar"); print} END {print "after"}' _$@.1 - _$@.2 < $(srcdir)/inplace.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
- @-$(CMP) $(srcdir)/$@.1.ok _$@.1 && rm -f _$@.1
- @-$(CMP) $(srcdir)/$@.1.bak.ok _$@.1.bak && rm -f _$@.1.bak
- @-$(CMP) $(srcdir)/$@.2.ok _$@.2 && rm -f _$@.2
- @-$(CMP) $(srcdir)/$@.2.bak.ok _$@.2.bak && rm -f _$@.2.bak
+ @cp "$(srcdir)"/inplace.1.in _$@.1
+ @cp "$(srcdir)"/inplace.2.in _$@.2
+ @AWKPATH="$(srcdir)"/../awklib/eg/lib $(AWK) -i inplace -v INPLACE_SUFFIX=.bak 'BEGIN {print "before"} {gsub(/foo/, "bar"); print} END {print "after"}' _$@.1 - _$@.2 < "$(srcdir)"/inplace.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
+ @-$(CMP) "$(srcdir)"/$@.1.ok _$@.1 && rm -f _$@.1
+ @-$(CMP) "$(srcdir)"/$@.1.bak.ok _$@.1.bak && rm -f _$@.1.bak
+ @-$(CMP) "$(srcdir)"/$@.2.ok _$@.2 && rm -f _$@.2
+ @-$(CMP) "$(srcdir)"/$@.2.bak.ok _$@.2.bak && rm -f _$@.2.bak
inplace3::
@echo $@
- @cp $(srcdir)/inplace.1.in _$@.1
- @cp $(srcdir)/inplace.2.in _$@.2
- @AWKPATH=$(srcdir)/../awklib/eg/lib $(AWK) -i inplace -v INPLACE_SUFFIX=.bak 'BEGIN {print "before"} {gsub(/foo/, "bar"); print} END {print "after"}' _$@.1 - _$@.2 < $(srcdir)/inplace.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @AWKPATH=$(srcdir)/../awklib/eg/lib $(AWK) -i inplace -v INPLACE_SUFFIX=.bak 'BEGIN {print "Before"} {gsub(/bar/, "foo"); print} END {print "After"}' _$@.1 - _$@.2 < $(srcdir)/inplace.in >>_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
- @-$(CMP) $(srcdir)/$@.1.ok _$@.1 && rm -f _$@.1
- @-$(CMP) $(srcdir)/$@.1.bak.ok _$@.1.bak && rm -f _$@.1.bak
- @-$(CMP) $(srcdir)/$@.2.ok _$@.2 && rm -f _$@.2
- @-$(CMP) $(srcdir)/$@.2.bak.ok _$@.2.bak && rm -f _$@.2.bak
+ @cp "$(srcdir)"/inplace.1.in _$@.1
+ @cp "$(srcdir)"/inplace.2.in _$@.2
+ @AWKPATH="$(srcdir)"/../awklib/eg/lib $(AWK) -i inplace -v INPLACE_SUFFIX=.bak 'BEGIN {print "before"} {gsub(/foo/, "bar"); print} END {print "after"}' _$@.1 - _$@.2 < "$(srcdir)"/inplace.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @AWKPATH="$(srcdir)"/../awklib/eg/lib $(AWK) -i inplace -v INPLACE_SUFFIX=.bak 'BEGIN {print "Before"} {gsub(/bar/, "foo"); print} END {print "After"}' _$@.1 - _$@.2 < "$(srcdir)"/inplace.in >>_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
+ @-$(CMP) "$(srcdir)"/$@.1.ok _$@.1 && rm -f _$@.1
+ @-$(CMP) "$(srcdir)"/$@.1.bak.ok _$@.1.bak && rm -f _$@.1.bak
+ @-$(CMP) "$(srcdir)"/$@.2.ok _$@.2 && rm -f _$@.2
+ @-$(CMP) "$(srcdir)"/$@.2.bak.ok _$@.2.bak && rm -f _$@.2.bak
testext::
@echo $@
-# @$(AWK) '/^(@load|BEGIN)/,/^}/' $(top_srcdir)/extension/testext.c > testext.awk
- @$(AWK) ' /^(@load|BEGIN)/,/^}/' $(top_srcdir)/extension/testext.c > testext.awk
+# @$(AWK) '/^(@load|BEGIN)/,/^}/' "$(top_srcdir)"/extension/testext.c > testext.awk
+ @$(AWK) ' /^(@load|BEGIN)/,/^}/' "$(top_srcdir)"/extension/testext.c > testext.awk
@$(AWK) -f testext.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@ testext.awk
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@ testext.awk
readdir:
@if [ "`uname`" = Linux ] && [ "`stat -f . 2>/dev/null | awk 'NR == 2 { print $$NF }'`" = nfs ]; then \
@@ -1013,1397 +1036,1457 @@ readdir:
fi
@echo $@
@echo This test may fail on MinGW if $(LS) does not report full Windows file index as the inode
- @$(AWK) -f $(srcdir)/readdir.awk $(top_srcdir) > _$@
- @$(LS) -afli $(top_srcdir) | sed 1d | $(AWK) -f $(srcdir)/readdir0.awk -v extout=_$@ > $@.ok
- @-$(CMP) $@.ok _$@ && rm -f $@.ok _$@
+ @$(AWK) -f "$(srcdir)"/readdir.awk "$(top_srcdir)" > _$@
+# @ls -afi "$(top_srcdir)" > _dirlist
+ @$(LS) -afi "$(top_srcdir)" > _dirlist
+# @ls -lna "$(top_srcdir)" | sed 1d > _longlist
+ @$(LS) -lna "$(top_srcdir)" | sed 1d > _longlist
+ @$(AWK) -f "$(srcdir)"/readdir0.awk -v extout=_$@ \
+ -v dirlist=_dirlist -v longlist=_longlist > $@.ok
+ @-$(CMP) $@.ok _$@ && rm -f $@.ok _$@ _dirlist _longlist
fts:
+ @case `uname` in \
+ IRIX) \
+ echo This test may fail on IRIX systems when run on an NFS filesystem.; \
+ echo If it does, try rerunning on an xfs filesystem. ;; \
+ CYGWIN*) \
+ echo This test may fail on CYGWIN systems when run on an NFS filesystem.; \
+ echo If it does, try rerunning on an ntfs filesystem. ;; \
+ esac
@echo $@
@echo Expect $@ to fail with MinGW because function 'fts' is not defined.
- @-$(AWK) -f $(srcdir)/fts.awk
+# @$(AWK) -f "$(srcdir)"/fts.awk
+ @$(AWK) -f "$(srcdir)"/fts.awk || echo EXIT CODE: $$? >>_$@
@-$(CMP) $@.ok _$@ && rm -f $@.ok _$@
charasbytes:
@echo $@
# @[ -z "$$GAWKLOCALE" ] && GAWKLOCALE=en_US.UTF-8; \
-# AWKPATH=$(srcdir) $(AWK) -b -f $@.awk $(srcdir)/$@.in | \
-# od -c -t x1 | sed -e 's/ */ /g' -e 's/ *$$//' >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+# AWKPATH="$(srcdir)" $(AWK) -b -f $@.awk "$(srcdir)"/$@.in | \
+# od -c -t x1 | tr ' ' ' ' | sed -e 's/ */ /g' -e 's/ *$$//' >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
@[ -z "$$GAWKLOCALE" ] && GAWKLOCALE=en_US.UTF-8; \
- AWKPATH=$(srcdir) $(AWK) -b -v BINMODE=2 -f $@.awk $(srcdir)/$@.in | \
- od -c -t x1 | sed -e 's/ */ /g' -e 's/ *$$//' >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+ AWKPATH="$(srcdir)" $(AWK) -b -v BINMODE=2 -f $@.awk "$(srcdir)"/$@.in | \
+ od -c -t x1 | tr ' ' ' ' | sed -e 's/ */ /g' -e 's/ *$$//' >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
symtab6:
@echo $@
- @$(AWK) -d__$@ -f $(srcdir)/$@.awk
+ @$(AWK) -d__$@ -f "$(srcdir)"/$@.awk
@grep -v '^ENVIRON' __$@ | grep -v '^PROCINFO' > _$@ ; rm __$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
symtab8:
@echo $@
- @$(AWK) -d__$@ -f $(srcdir)/$@.awk $(srcdir)/$@.in >_$@
+ @$(AWK) -d__$@ -f "$(srcdir)"/$@.awk "$(srcdir)"/$@.in >_$@
@grep -v '^ENVIRON' __$@ | grep -v '^PROCINFO' | grep -v '^FILENAME' >> _$@ ; rm __$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
symtab9:
@echo $@
- @$(AWK) -f $(srcdir)/$@.awk >_$@
+ @$(AWK) -f "$(srcdir)"/$@.awk >_$@
@rm -f testit.txt
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
reginttrad:
@echo $@
- @$(AWK) --traditional -r -f $(srcdir)/$@.awk > _$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+ @$(AWK) --traditional -r -f "$(srcdir)"/$@.awk > _$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
colonwarn:
@echo $@
@for i in 1 2 3 ; \
- do $(AWK) -f $(srcdir)/$@.awk $$i < $(srcdir)/$@.in ; \
+ do $(AWK) -f "$(srcdir)"/$@.awk $$i < "$(srcdir)"/$@.in ; \
done > _$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
+
+clos1way:
+ @echo $@
+ @echo Expect clos1way to fail with DJGPP.
+ @AWKPATH="$(srcdir)" LC_ALL=C $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
+
+dfamb1:
+ @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 _$@
+
+backbigs1:
+ @echo $@
+ @echo Expect backbigs1 to fail with MinGW and DJGPP
+ @[ -z "$$GAWKLOCALE" ] && GAWKLOCALE=en_US.UTF-8; \
+ AWKPATH="$(srcdir)" $(AWK) -f $@.awk "$(srcdir)"/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
+
+backsmalls1:
+ @echo $@
+ @echo Expect backsmalls1 to fail with MinGW and DJGPP
+ @[ -z "$$GAWKLOCALE" ] && GAWKLOCALE=en_US.UTF-8; \
+ AWKPATH="$(srcdir)" $(AWK) -f $@.awk "$(srcdir)"/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
+
+backsmalls2:
+ @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:
@echo $@
- @AWKPATH=$(srcdir) $(AWK) -f $@.awk < $(srcdir)/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+ @AWKPATH="$(srcdir)" $(AWK) -f $@.awk < "$(srcdir)"/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
anchgsub:
@echo $@
- @AWKPATH=$(srcdir) $(AWK) -f $@.awk < $(srcdir)/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+ @AWKPATH="$(srcdir)" $(AWK) -f $@.awk < "$(srcdir)"/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
arrayparm:
@echo $@
- @AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+ @AWKPATH="$(srcdir)" $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
arrayprm2:
@echo $@
- @AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+ @AWKPATH="$(srcdir)" $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
arrayprm3:
@echo $@
- @AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+ @AWKPATH="$(srcdir)" $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
arrayref:
@echo $@
- @AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+ @AWKPATH="$(srcdir)" $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
arrymem1:
@echo $@
- @AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+ @AWKPATH="$(srcdir)" $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
arryref2:
@echo $@
- @AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+ @AWKPATH="$(srcdir)" $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
arryref3:
@echo $@
- @AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+ @AWKPATH="$(srcdir)" $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
arryref4:
@echo $@
- @AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+ @AWKPATH="$(srcdir)" $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
arryref5:
@echo $@
- @AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+ @AWKPATH="$(srcdir)" $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
arynasty:
@echo $@
- @AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+ @AWKPATH="$(srcdir)" $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
aryprm1:
@echo $@
- @AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+ @AWKPATH="$(srcdir)" $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
aryprm2:
@echo $@
- @AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+ @AWKPATH="$(srcdir)" $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
aryprm3:
@echo $@
- @AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+ @AWKPATH="$(srcdir)" $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
aryprm4:
@echo $@
- @AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+ @AWKPATH="$(srcdir)" $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
aryprm5:
@echo $@
- @AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+ @AWKPATH="$(srcdir)" $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
aryprm6:
@echo $@
- @AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+ @AWKPATH="$(srcdir)" $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
aryprm7:
@echo $@
- @AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+ @AWKPATH="$(srcdir)" $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
aryprm8:
@echo $@
- @AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+ @AWKPATH="$(srcdir)" $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
arysubnm:
@echo $@
- @AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+ @AWKPATH="$(srcdir)" $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
asgext:
@echo $@
- @AWKPATH=$(srcdir) $(AWK) -f $@.awk < $(srcdir)/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+ @AWKPATH="$(srcdir)" $(AWK) -f $@.awk < "$(srcdir)"/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
back89:
@echo $@
- @AWKPATH=$(srcdir) $(AWK) -f $@.awk < $(srcdir)/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+ @AWKPATH="$(srcdir)" $(AWK) -f $@.awk < "$(srcdir)"/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
backgsub:
@echo $@
- @AWKPATH=$(srcdir) $(AWK) -f $@.awk < $(srcdir)/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+ @AWKPATH="$(srcdir)" $(AWK) -f $@.awk < "$(srcdir)"/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
+
+badassign1:
+ @echo $@
+ @AWKPATH="$(srcdir)" $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
childin:
@echo $@
- @AWKPATH=$(srcdir) $(AWK) -f $@.awk < $(srcdir)/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+ @AWKPATH="$(srcdir)" $(AWK) -f $@.awk < "$(srcdir)"/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
closebad:
@echo $@
- @AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+ @AWKPATH="$(srcdir)" $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
clsflnam:
@echo $@
- @AWKPATH=$(srcdir) $(AWK) -f $@.awk < $(srcdir)/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+ @AWKPATH="$(srcdir)" $(AWK) -f $@.awk < "$(srcdir)"/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
compare2:
@echo $@
- @AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+ @AWKPATH="$(srcdir)" $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
concat1:
@echo $@
- @AWKPATH=$(srcdir) $(AWK) -f $@.awk < $(srcdir)/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+ @AWKPATH="$(srcdir)" $(AWK) -f $@.awk < "$(srcdir)"/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
concat2:
@echo $@
- @AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+ @AWKPATH="$(srcdir)" $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
concat3:
@echo $@
- @AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+ @AWKPATH="$(srcdir)" $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
convfmt:
@echo $@
- @AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+ @AWKPATH="$(srcdir)" $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
datanonl:
@echo $@
- @AWKPATH=$(srcdir) $(AWK) -f $@.awk < $(srcdir)/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+ @AWKPATH="$(srcdir)" $(AWK) -f $@.awk < "$(srcdir)"/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
defref:
@echo $@
- @AWKPATH=$(srcdir) $(AWK) -f $@.awk --lint >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+ @AWKPATH="$(srcdir)" $(AWK) -f $@.awk --lint >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
delargv:
@echo $@
- @AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+ @AWKPATH="$(srcdir)" $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
delarpm2:
@echo $@
- @AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+ @AWKPATH="$(srcdir)" $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
delarprm:
@echo $@
- @AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+ @AWKPATH="$(srcdir)" $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
delfunc:
@echo $@
- @AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+ @AWKPATH="$(srcdir)" $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
dfastress:
@echo $@
- @AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+ @AWKPATH="$(srcdir)" $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
dynlj:
@echo $@
- @AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+ @AWKPATH="$(srcdir)" $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
eofsplit:
@echo $@
- @AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+ @AWKPATH="$(srcdir)" $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
+
+exit2:
+ @echo $@
+ @AWKPATH="$(srcdir)" $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
exitval2:
@echo $@
@echo Expect exitval2 to fail with MinGW
- @AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+ @AWKPATH="$(srcdir)" $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
fcall_exit:
@echo $@
- @AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+ @AWKPATH="$(srcdir)" $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
fcall_exit2:
@echo $@
- @AWKPATH=$(srcdir) $(AWK) -f $@.awk < $(srcdir)/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+ @AWKPATH="$(srcdir)" $(AWK) -f $@.awk < "$(srcdir)"/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
fldchg:
@echo $@
- @AWKPATH=$(srcdir) $(AWK) -f $@.awk < $(srcdir)/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+ @AWKPATH="$(srcdir)" $(AWK) -f $@.awk < "$(srcdir)"/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
fldchgnf:
@echo $@
- @AWKPATH=$(srcdir) $(AWK) -f $@.awk < $(srcdir)/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+ @AWKPATH="$(srcdir)" $(AWK) -f $@.awk < "$(srcdir)"/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
fnamedat:
@echo $@
- @AWKPATH=$(srcdir) $(AWK) -f $@.awk < $(srcdir)/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+ @AWKPATH="$(srcdir)" $(AWK) -f $@.awk < "$(srcdir)"/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
fnarray:
@echo $@
- @AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+ @AWKPATH="$(srcdir)" $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
fnarray2:
@echo $@
- @AWKPATH=$(srcdir) $(AWK) -f $@.awk < $(srcdir)/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+ @AWKPATH="$(srcdir)" $(AWK) -f $@.awk < "$(srcdir)"/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
fnaryscl:
@echo $@
- @AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+ @AWKPATH="$(srcdir)" $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
fnasgnm:
@echo $@
- @AWKPATH=$(srcdir) $(AWK) -f $@.awk < $(srcdir)/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+ @AWKPATH="$(srcdir)" $(AWK) -f $@.awk < "$(srcdir)"/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
fnmisc:
@echo $@
- @AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+ @AWKPATH="$(srcdir)" $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
fordel:
@echo $@
- @AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+ @AWKPATH="$(srcdir)" $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
forref:
@echo $@
- @AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+ @AWKPATH="$(srcdir)" $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
forsimp:
@echo $@
- @AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+ @AWKPATH="$(srcdir)" $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
fsbs:
@echo $@
- @AWKPATH=$(srcdir) $(AWK) -f $@.awk < $(srcdir)/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+ @AWKPATH="$(srcdir)" $(AWK) -f $@.awk < "$(srcdir)"/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
fsrs:
@echo $@
- @AWKPATH=$(srcdir) $(AWK) -f $@.awk < $(srcdir)/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+ @AWKPATH="$(srcdir)" $(AWK) -f $@.awk < "$(srcdir)"/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
fstabplus:
@echo $@
- @AWKPATH=$(srcdir) $(AWK) -f $@.awk < $(srcdir)/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+ @AWKPATH="$(srcdir)" $(AWK) -f $@.awk < "$(srcdir)"/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
funsemnl:
@echo $@
- @AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+ @AWKPATH="$(srcdir)" $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
funsmnam:
@echo $@
- @AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+ @AWKPATH="$(srcdir)" $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
funstack:
@echo $@
- @AWKPATH=$(srcdir) $(AWK) -f $@.awk < $(srcdir)/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+ @AWKPATH="$(srcdir)" $(AWK) -f $@.awk < "$(srcdir)"/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
getline:
@echo $@
- @AWKPATH=$(srcdir) $(AWK) -f $@.awk < $(srcdir)/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+ @AWKPATH="$(srcdir)" $(AWK) -f $@.awk < "$(srcdir)"/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
getline3:
@echo $@
- @AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+ @AWKPATH="$(srcdir)" $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
getline4:
@echo $@
- @AWKPATH=$(srcdir) $(AWK) -f $@.awk < $(srcdir)/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+ @AWKPATH="$(srcdir)" $(AWK) -f $@.awk < "$(srcdir)"/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
getline5:
@echo $@
- @AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+ @AWKPATH="$(srcdir)" $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
getnr2tb:
@echo $@
- @AWKPATH=$(srcdir) $(AWK) -f $@.awk < $(srcdir)/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+ @AWKPATH="$(srcdir)" $(AWK) -f $@.awk < "$(srcdir)"/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
getnr2tm:
@echo $@
- @AWKPATH=$(srcdir) $(AWK) -f $@.awk < $(srcdir)/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+ @AWKPATH="$(srcdir)" $(AWK) -f $@.awk < "$(srcdir)"/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
gsubasgn:
@echo $@
- @AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+ @AWKPATH="$(srcdir)" $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
gsubtest:
@echo $@
- @AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+ @AWKPATH="$(srcdir)" $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
gsubtst2:
@echo $@
- @AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+ @AWKPATH="$(srcdir)" $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
gsubtst4:
@echo $@
- @AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+ @AWKPATH="$(srcdir)" $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
gsubtst5:
@echo $@
- @AWKPATH=$(srcdir) $(AWK) -f $@.awk < $(srcdir)/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+ @AWKPATH="$(srcdir)" $(AWK) -f $@.awk < "$(srcdir)"/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
gsubtst7:
@echo $@
- @AWKPATH=$(srcdir) $(AWK) -f $@.awk < $(srcdir)/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+ @AWKPATH="$(srcdir)" $(AWK) -f $@.awk < "$(srcdir)"/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
gsubtst8:
@echo $@
- @AWKPATH=$(srcdir) $(AWK) -f $@.awk < $(srcdir)/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+ @AWKPATH="$(srcdir)" $(AWK) -f $@.awk < "$(srcdir)"/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
hex:
@echo $@
- @AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+ @AWKPATH="$(srcdir)" $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
hsprint:
@echo $@
@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 _$@
+ @AWKPATH="$(srcdir)" $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
inputred:
@echo $@
- @AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+ @AWKPATH="$(srcdir)" $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
intest:
@echo $@
- @AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+ @AWKPATH="$(srcdir)" $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
intprec:
@echo $@
- @AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+ @AWKPATH="$(srcdir)" $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
iobug1:
@echo $@
- @AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+ @AWKPATH="$(srcdir)" $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
leadnl:
@echo $@
- @AWKPATH=$(srcdir) $(AWK) -f $@.awk < $(srcdir)/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+ @AWKPATH="$(srcdir)" $(AWK) -f $@.awk < "$(srcdir)"/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
longsub:
@echo $@
- @AWKPATH=$(srcdir) $(AWK) -f $@.awk < $(srcdir)/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+ @AWKPATH="$(srcdir)" $(AWK) -f $@.awk < "$(srcdir)"/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
longwrds:
@echo $@
- @AWKPATH=$(srcdir) $(AWK) -f $@.awk SORT=sort < $(srcdir)/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
-# @AWKPATH=$(srcdir) $(AWK) -f $@.awk < $(srcdir)/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+ @AWKPATH="$(srcdir)" $(AWK) -f $@.awk SORT=sort < "$(srcdir)"/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+# @AWKPATH="$(srcdir)" $(AWK) -f $@.awk < "$(srcdir)"/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
manglprm:
@echo $@
- @AWKPATH=$(srcdir) $(AWK) -f $@.awk < $(srcdir)/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+ @AWKPATH="$(srcdir)" $(AWK) -f $@.awk < "$(srcdir)"/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
math:
@echo $@
- @AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+ @AWKPATH="$(srcdir)" $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
membug1:
@echo $@
- @AWKPATH=$(srcdir) $(AWK) -f $@.awk < $(srcdir)/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+ @AWKPATH="$(srcdir)" $(AWK) -f $@.awk < "$(srcdir)"/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
minusstr:
@echo $@
- @AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+ @AWKPATH="$(srcdir)" $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
nasty:
@echo $@
- @AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+ @AWKPATH="$(srcdir)" $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
nasty2:
@echo $@
- @AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+ @AWKPATH="$(srcdir)" $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
negexp:
@echo $@
- @AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+ @AWKPATH="$(srcdir)" $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
negrange:
@echo $@
- @AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+ @AWKPATH="$(srcdir)" $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
nested:
@echo $@
- @AWKPATH=$(srcdir) $(AWK) -f $@.awk < $(srcdir)/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+ @AWKPATH="$(srcdir)" $(AWK) -f $@.awk < "$(srcdir)"/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
nfldstr:
@echo $@
- @AWKPATH=$(srcdir) $(AWK) -f $@.awk < $(srcdir)/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+ @AWKPATH="$(srcdir)" $(AWK) -f $@.awk < "$(srcdir)"/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
+
+nfloop:
+ @echo $@
+ @AWKPATH="$(srcdir)" $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
nfneg:
@echo $@
- @AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+ @AWKPATH="$(srcdir)" $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
nfset:
@echo $@
- @AWKPATH=$(srcdir) $(AWK) -f $@.awk < $(srcdir)/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+ @AWKPATH="$(srcdir)" $(AWK) -f $@.awk < "$(srcdir)"/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
nlfldsep:
@echo $@
- @AWKPATH=$(srcdir) $(AWK) -f $@.awk < $(srcdir)/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+ @AWKPATH="$(srcdir)" $(AWK) -f $@.awk < "$(srcdir)"/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
nlinstr:
@echo $@
- @AWKPATH=$(srcdir) $(AWK) -f $@.awk < $(srcdir)/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+ @AWKPATH="$(srcdir)" $(AWK) -f $@.awk < "$(srcdir)"/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
nlstrina:
@echo $@
- @AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+ @AWKPATH="$(srcdir)" $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
noeffect:
@echo $@
- @AWKPATH=$(srcdir) $(AWK) -f $@.awk --lint >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+ @AWKPATH="$(srcdir)" $(AWK) -f $@.awk --lint >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
nofmtch:
@echo $@
- @AWKPATH=$(srcdir) $(AWK) -f $@.awk --lint >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+ @AWKPATH="$(srcdir)" $(AWK) -f $@.awk --lint >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
noloop1:
@echo $@
- @AWKPATH=$(srcdir) $(AWK) -f $@.awk < $(srcdir)/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+ @AWKPATH="$(srcdir)" $(AWK) -f $@.awk < "$(srcdir)"/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
noloop2:
@echo $@
- @AWKPATH=$(srcdir) $(AWK) -f $@.awk < $(srcdir)/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+ @AWKPATH="$(srcdir)" $(AWK) -f $@.awk < "$(srcdir)"/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
noparms:
@echo $@
- @AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+ @AWKPATH="$(srcdir)" $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
nulrsend:
@echo $@
- @AWKPATH=$(srcdir) $(AWK) -f $@.awk < $(srcdir)/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+ @AWKPATH="$(srcdir)" $(AWK) -f $@.awk < "$(srcdir)"/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
numindex:
@echo $@
- @AWKPATH=$(srcdir) $(AWK) -f $@.awk < $(srcdir)/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+ @AWKPATH="$(srcdir)" $(AWK) -f $@.awk < "$(srcdir)"/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
numsubstr:
@echo $@
- @AWKPATH=$(srcdir) $(AWK) -f $@.awk < $(srcdir)/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+ @AWKPATH="$(srcdir)" $(AWK) -f $@.awk < "$(srcdir)"/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
octsub:
@echo $@
- @AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+ @AWKPATH="$(srcdir)" $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
ofmt:
@echo $@
- @AWKPATH=$(srcdir) $(AWK) -f $@.awk < $(srcdir)/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+ @AWKPATH="$(srcdir)" $(AWK) -f $@.awk < "$(srcdir)"/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
ofmta:
@echo $@
- @AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+ @AWKPATH="$(srcdir)" $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
ofmtbig:
@echo $@
- @AWKPATH=$(srcdir) $(AWK) -f $@.awk < $(srcdir)/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+ @AWKPATH="$(srcdir)" $(AWK) -f $@.awk < "$(srcdir)"/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
ofmtfidl:
@echo $@
- @AWKPATH=$(srcdir) $(AWK) -f $@.awk < $(srcdir)/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+ @AWKPATH="$(srcdir)" $(AWK) -f $@.awk < "$(srcdir)"/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
ofmts:
@echo $@
- @AWKPATH=$(srcdir) $(AWK) -f $@.awk < $(srcdir)/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+ @AWKPATH="$(srcdir)" $(AWK) -f $@.awk < "$(srcdir)"/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
ofs1:
@echo $@
- @AWKPATH=$(srcdir) $(AWK) -f $@.awk < $(srcdir)/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+ @AWKPATH="$(srcdir)" $(AWK) -f $@.awk < "$(srcdir)"/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
onlynl:
@echo $@
- @AWKPATH=$(srcdir) $(AWK) -f $@.awk < $(srcdir)/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+ @AWKPATH="$(srcdir)" $(AWK) -f $@.awk < "$(srcdir)"/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
opasnidx:
@echo $@
- @AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+ @AWKPATH="$(srcdir)" $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
opasnslf:
@echo $@
- @AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+ @AWKPATH="$(srcdir)" $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
paramdup:
@echo $@
- @AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+ @AWKPATH="$(srcdir)" $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
paramres:
@echo $@
- @AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+ @AWKPATH="$(srcdir)" $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
paramtyp:
@echo $@
- @AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+ @AWKPATH="$(srcdir)" $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
paramuninitglobal:
@echo $@
- @AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+ @AWKPATH="$(srcdir)" $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
parse1:
@echo $@
- @AWKPATH=$(srcdir) $(AWK) -f $@.awk < $(srcdir)/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+ @AWKPATH="$(srcdir)" $(AWK) -f $@.awk < "$(srcdir)"/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
parsefld:
@echo $@
- @AWKPATH=$(srcdir) $(AWK) -f $@.awk < $(srcdir)/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+ @AWKPATH="$(srcdir)" $(AWK) -f $@.awk < "$(srcdir)"/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
parseme:
@echo $@
- @AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+ @AWKPATH="$(srcdir)" $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
pcntplus:
@echo $@
- @AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+ @AWKPATH="$(srcdir)" $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
prdupval:
@echo $@
- @AWKPATH=$(srcdir) $(AWK) -f $@.awk < $(srcdir)/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+ @AWKPATH="$(srcdir)" $(AWK) -f $@.awk < "$(srcdir)"/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
prec:
@echo $@
- @AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+ @AWKPATH="$(srcdir)" $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
printf1:
@echo $@
- @AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+ @AWKPATH="$(srcdir)" $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
prmarscl:
@echo $@
- @AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+ @AWKPATH="$(srcdir)" $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
prmreuse:
@echo $@
- @AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+ @AWKPATH="$(srcdir)" $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
prt1eval:
@echo $@
- @AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+ @AWKPATH="$(srcdir)" $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
prtoeval:
@echo $@
- @AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+ @AWKPATH="$(srcdir)" $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
rand:
@echo $@
- @AWKPATH=$(srcdir) $(AWK) $(AWKFLAGS) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-if test -z "$$AWKFLAGS" ; then $(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@ ; else \
- $(CMP) $(srcdir)/$@-mpfr.ok _$@ && rm -f _$@ ; \
+ @AWKPATH="$(srcdir)" $(AWK) $(AWKFLAGS) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-if test -z "$$AWKFLAGS" ; then $(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@ ; else \
+ $(CMP) "$(srcdir)"/$@-mpfr.ok _$@ && rm -f _$@ ; \
fi
range1:
@echo $@
- @AWKPATH=$(srcdir) $(AWK) -f $@.awk < $(srcdir)/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+ @AWKPATH="$(srcdir)" $(AWK) -f $@.awk < "$(srcdir)"/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
rebt8b1:
@echo $@
- @AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+ @AWKPATH="$(srcdir)" $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
regeq:
@echo $@
- @AWKPATH=$(srcdir) $(AWK) -f $@.awk < $(srcdir)/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+ @AWKPATH="$(srcdir)" $(AWK) -f $@.awk < "$(srcdir)"/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
regexprange:
@echo $@
- @AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+ @AWKPATH="$(srcdir)" $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
regrange:
@echo $@
- @AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+ @AWKPATH="$(srcdir)" $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
reindops:
@echo $@
- @AWKPATH=$(srcdir) $(AWK) -f $@.awk < $(srcdir)/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+ @AWKPATH="$(srcdir)" $(AWK) -f $@.awk < "$(srcdir)"/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
reparse:
@echo $@
- @AWKPATH=$(srcdir) $(AWK) -f $@.awk < $(srcdir)/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+ @AWKPATH="$(srcdir)" $(AWK) -f $@.awk < "$(srcdir)"/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
resplit:
@echo $@
- @AWKPATH=$(srcdir) $(AWK) -f $@.awk < $(srcdir)/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+ @AWKPATH="$(srcdir)" $(AWK) -f $@.awk < "$(srcdir)"/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
rs:
@echo $@
- @AWKPATH=$(srcdir) $(AWK) -f $@.awk < $(srcdir)/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+ @AWKPATH="$(srcdir)" $(AWK) -f $@.awk < "$(srcdir)"/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
rsnul1nl:
@echo $@
- @AWKPATH=$(srcdir) $(AWK) -f $@.awk < $(srcdir)/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+ @AWKPATH="$(srcdir)" $(AWK) -f $@.awk < "$(srcdir)"/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
rstest1:
@echo $@
- @AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+ @AWKPATH="$(srcdir)" $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
rstest2:
@echo $@
- @AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+ @AWKPATH="$(srcdir)" $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
rstest3:
@echo $@
- @AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+ @AWKPATH="$(srcdir)" $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
rstest4:
@echo $@
@echo Expect rstest4 to fail with MinGW
- @AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+ @AWKPATH="$(srcdir)" $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
rstest5:
@echo $@
@echo Expect rstest5 to fail with MinGW
- @AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+ @AWKPATH="$(srcdir)" $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
rswhite:
@echo $@
- @AWKPATH=$(srcdir) $(AWK) -f $@.awk < $(srcdir)/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+ @AWKPATH="$(srcdir)" $(AWK) -f $@.awk < "$(srcdir)"/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
scalar:
@echo $@
- @AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+ @AWKPATH="$(srcdir)" $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
sclforin:
@echo $@
- @AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+ @AWKPATH="$(srcdir)" $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
sclifin:
@echo $@
- @AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+ @AWKPATH="$(srcdir)" $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
sortempty:
@echo $@
- @AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+ @AWKPATH="$(srcdir)" $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
splitargv:
@echo $@
- @AWKPATH=$(srcdir) $(AWK) -f $@.awk < $(srcdir)/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+ @AWKPATH="$(srcdir)" $(AWK) -f $@.awk < "$(srcdir)"/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
splitarr:
@echo $@
- @AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+ @AWKPATH="$(srcdir)" $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
splitdef:
@echo $@
- @AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+ @AWKPATH="$(srcdir)" $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
splitvar:
@echo $@
- @AWKPATH=$(srcdir) $(AWK) -f $@.awk < $(srcdir)/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+ @AWKPATH="$(srcdir)" $(AWK) -f $@.awk < "$(srcdir)"/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
splitwht:
@echo $@
- @AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+ @AWKPATH="$(srcdir)" $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
strcat1:
@echo $@
- @AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+ @AWKPATH="$(srcdir)" $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
strnum1:
@echo $@
- @AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+ @AWKPATH="$(srcdir)" $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
strtod:
@echo $@
@echo Expect strtod to fail with DJGPP.
- @AWKPATH=$(srcdir) $(AWK) -f $@.awk < $(srcdir)/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+ @AWKPATH="$(srcdir)" $(AWK) -f $@.awk < "$(srcdir)"/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
subsepnm:
@echo $@
- @AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+ @AWKPATH="$(srcdir)" $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
subslash:
@echo $@
- @AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+ @AWKPATH="$(srcdir)" $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
substr:
@echo $@
- @AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+ @AWKPATH="$(srcdir)" $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
swaplns:
@echo $@
- @AWKPATH=$(srcdir) $(AWK) -f $@.awk < $(srcdir)/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+ @AWKPATH="$(srcdir)" $(AWK) -f $@.awk < "$(srcdir)"/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
synerr1:
@echo $@
- @AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+ @AWKPATH="$(srcdir)" $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
synerr2:
@echo $@
- @AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+ @AWKPATH="$(srcdir)" $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
uninit2:
@echo $@
- @AWKPATH=$(srcdir) $(AWK) -f $@.awk --lint >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+ @AWKPATH="$(srcdir)" $(AWK) -f $@.awk --lint >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
uninit3:
@echo $@
- @AWKPATH=$(srcdir) $(AWK) -f $@.awk --lint >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+ @AWKPATH="$(srcdir)" $(AWK) -f $@.awk --lint >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
uninit4:
@echo $@
- @AWKPATH=$(srcdir) $(AWK) -f $@.awk --lint >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+ @AWKPATH="$(srcdir)" $(AWK) -f $@.awk --lint >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
uninit5:
@echo $@
- @AWKPATH=$(srcdir) $(AWK) -f $@.awk --lint >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+ @AWKPATH="$(srcdir)" $(AWK) -f $@.awk --lint >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
uninitialized:
@echo $@
- @AWKPATH=$(srcdir) $(AWK) -f $@.awk --lint >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+ @AWKPATH="$(srcdir)" $(AWK) -f $@.awk --lint >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
unterm:
@echo $@
- @AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+ @AWKPATH="$(srcdir)" $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
uparrfs:
@echo $@
- @AWKPATH=$(srcdir) $(AWK) -f $@.awk < $(srcdir)/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+ @AWKPATH="$(srcdir)" $(AWK) -f $@.awk < "$(srcdir)"/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
wjposer1:
@echo $@
- @AWKPATH=$(srcdir) $(AWK) -f $@.awk < $(srcdir)/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+ @AWKPATH="$(srcdir)" $(AWK) -f $@.awk < "$(srcdir)"/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
zero2:
@echo $@
- @AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+ @AWKPATH="$(srcdir)" $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
zeroe0:
@echo $@
- @AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+ @AWKPATH="$(srcdir)" $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
zeroflag:
@echo $@
- @AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+ @AWKPATH="$(srcdir)" $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
getlnhd:
@echo $@
@echo Expect getlnhd to fail if pipe does not use a Unixy shell
- @AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+ @AWKPATH="$(srcdir)" $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
aadelete1:
@echo $@
- @AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+ @AWKPATH="$(srcdir)" $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
aadelete2:
@echo $@
- @AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+ @AWKPATH="$(srcdir)" $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
aarray1:
@echo $@
- @AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+ @AWKPATH="$(srcdir)" $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
aasort:
@echo $@
- @AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+ @AWKPATH="$(srcdir)" $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
aasorti:
@echo $@
- @AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+ @AWKPATH="$(srcdir)" $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
arraysort:
@echo $@
- @AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+ @AWKPATH="$(srcdir)" $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
backw:
@echo $@
- @AWKPATH=$(srcdir) $(AWK) -f $@.awk < $(srcdir)/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
-
-clos1way:
- @echo $@
- @echo Expect clos1way to fail with DJGPP.
- @AWKPATH=$(srcdir) LC_ALL=C $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+ @AWKPATH="$(srcdir)" $(AWK) -f $@.awk < "$(srcdir)"/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
delsub:
@echo $@
- @AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+ @AWKPATH="$(srcdir)" $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
fieldwdth:
@echo $@
- @AWKPATH=$(srcdir) $(AWK) -f $@.awk < $(srcdir)/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+ @AWKPATH="$(srcdir)" $(AWK) -f $@.awk < "$(srcdir)"/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
fpat1:
@echo $@
- @AWKPATH=$(srcdir) $(AWK) -f $@.awk < $(srcdir)/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+ @AWKPATH="$(srcdir)" $(AWK) -f $@.awk < "$(srcdir)"/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
fpat2:
@echo $@
- @AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+ @AWKPATH="$(srcdir)" $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
fpat3:
@echo $@
- @AWKPATH=$(srcdir) $(AWK) -f $@.awk < $(srcdir)/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+ @AWKPATH="$(srcdir)" $(AWK) -f $@.awk < "$(srcdir)"/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
fpatnull:
@echo $@
- @AWKPATH=$(srcdir) $(AWK) -f $@.awk < $(srcdir)/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+ @AWKPATH="$(srcdir)" $(AWK) -f $@.awk < "$(srcdir)"/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
fsfwfs:
@echo $@
- @AWKPATH=$(srcdir) $(AWK) -f $@.awk < $(srcdir)/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+ @AWKPATH="$(srcdir)" $(AWK) -f $@.awk < "$(srcdir)"/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
funlen:
@echo $@
- @AWKPATH=$(srcdir) $(AWK) -f $@.awk < $(srcdir)/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+ @AWKPATH="$(srcdir)" $(AWK) -f $@.awk < "$(srcdir)"/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
functab1:
@echo $@
- @AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+ @AWKPATH="$(srcdir)" $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
functab2:
@echo $@
- @AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+ @AWKPATH="$(srcdir)" $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
functab3:
@echo $@
- @AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+ @AWKPATH="$(srcdir)" $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
fwtest:
@echo $@
- @AWKPATH=$(srcdir) $(AWK) -f $@.awk < $(srcdir)/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+ @AWKPATH="$(srcdir)" $(AWK) -f $@.awk < "$(srcdir)"/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
fwtest2:
@echo $@
- @AWKPATH=$(srcdir) $(AWK) -f $@.awk < $(srcdir)/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+ @AWKPATH="$(srcdir)" $(AWK) -f $@.awk < "$(srcdir)"/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
fwtest3:
@echo $@
- @AWKPATH=$(srcdir) $(AWK) -f $@.awk < $(srcdir)/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+ @AWKPATH="$(srcdir)" $(AWK) -f $@.awk < "$(srcdir)"/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
gensub:
@echo $@
- @AWKPATH=$(srcdir) $(AWK) -f $@.awk < $(srcdir)/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+ @AWKPATH="$(srcdir)" $(AWK) -f $@.awk < "$(srcdir)"/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
gensub2:
@echo $@
- @AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+ @AWKPATH="$(srcdir)" $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
getlndir:
@echo $@
@echo Expect getlndir to fail with DJGPP.
- @AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+ @AWKPATH="$(srcdir)" $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
gnuops2:
@echo $@
- @AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+ @AWKPATH="$(srcdir)" $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
gnuops3:
@echo $@
- @AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+ @AWKPATH="$(srcdir)" $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
gnureops:
@echo $@
- @AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+ @AWKPATH="$(srcdir)" $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
icasefs:
@echo $@
- @AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+ @AWKPATH="$(srcdir)" $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
icasers:
@echo $@
- @AWKPATH=$(srcdir) $(AWK) -f $@.awk < $(srcdir)/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+ @AWKPATH="$(srcdir)" $(AWK) -f $@.awk < "$(srcdir)"/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
id:
@echo $@
- @AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+ @AWKPATH="$(srcdir)" $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
igncdym:
@echo $@
- @AWKPATH=$(srcdir) $(AWK) -f $@.awk < $(srcdir)/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+ @AWKPATH="$(srcdir)" $(AWK) -f $@.awk < "$(srcdir)"/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
igncfs:
@echo $@
- @AWKPATH=$(srcdir) $(AWK) -f $@.awk < $(srcdir)/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+ @AWKPATH="$(srcdir)" $(AWK) -f $@.awk < "$(srcdir)"/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
ignrcase:
@echo $@
- @AWKPATH=$(srcdir) $(AWK) -f $@.awk < $(srcdir)/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+ @AWKPATH="$(srcdir)" $(AWK) -f $@.awk < "$(srcdir)"/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
include:
@echo $@
- @AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+ @AWKPATH="$(srcdir)" $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
indirectcall:
@echo $@
- @AWKPATH=$(srcdir) $(AWK) -f $@.awk < $(srcdir)/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+ @AWKPATH="$(srcdir)" $(AWK) -f $@.awk < "$(srcdir)"/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
lint:
@echo $@
- @AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+ @AWKPATH="$(srcdir)" $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
lintold:
@echo $@
- @AWKPATH=$(srcdir) $(AWK) -f $@.awk --lint-old < $(srcdir)/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+ @AWKPATH="$(srcdir)" $(AWK) -f $@.awk --lint-old < "$(srcdir)"/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
lintwarn:
@echo $@
- @AWKPATH=$(srcdir) $(AWK) -f $@.awk --lint >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+ @AWKPATH="$(srcdir)" $(AWK) -f $@.awk --lint >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
match1:
@echo $@
- @AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+ @AWKPATH="$(srcdir)" $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
match2:
@echo $@
- @AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+ @AWKPATH="$(srcdir)" $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
match3:
@echo $@
- @AWKPATH=$(srcdir) $(AWK) -f $@.awk < $(srcdir)/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+ @AWKPATH="$(srcdir)" $(AWK) -f $@.awk < "$(srcdir)"/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
nastyparm:
@echo $@
- @AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+ @AWKPATH="$(srcdir)" $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
nondec:
@echo $@
- @AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+ @AWKPATH="$(srcdir)" $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
patsplit:
@echo $@
- @AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+ @AWKPATH="$(srcdir)" $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
posix:
@echo $@
@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 _$@
+ @AWKPATH="$(srcdir)" $(AWK) -f $@.awk < "$(srcdir)"/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
printfbad1:
@echo $@
- @AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+ @AWKPATH="$(srcdir)" $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
printfbad3:
@echo $@
- @AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+ @AWKPATH="$(srcdir)" $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
procinfs:
@echo $@
- @AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+ @AWKPATH="$(srcdir)" $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
pty1:
@echo $@
@echo Expect pty1 to fail with DJGPP and MinGW.
- @AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+ @AWKPATH="$(srcdir)" $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
rebuf:
@echo $@
- @AWKPATH=$(srcdir) $(AWK) -f $@.awk < $(srcdir)/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+ @AWKPATH="$(srcdir)" $(AWK) -f $@.awk < "$(srcdir)"/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
regx8bit:
@echo $@
- @AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+ @AWKPATH="$(srcdir)" $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
rstest6:
@echo $@
- @AWKPATH=$(srcdir) $(AWK) -f $@.awk < $(srcdir)/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+ @AWKPATH="$(srcdir)" $(AWK) -f $@.awk < "$(srcdir)"/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
shadow:
@echo $@
- @AWKPATH=$(srcdir) $(AWK) -f $@.awk --lint >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+ @AWKPATH="$(srcdir)" $(AWK) -f $@.awk --lint >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
sortfor:
@echo $@
- @AWKPATH=$(srcdir) $(AWK) -f $@.awk < $(srcdir)/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+ @AWKPATH="$(srcdir)" $(AWK) -f $@.awk < "$(srcdir)"/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
sortu:
@echo $@
- @AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+ @AWKPATH="$(srcdir)" $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
+
+split_after_fpat:
+ @echo $@
+ @AWKPATH="$(srcdir)" $(AWK) -f $@.awk < "$(srcdir)"/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
splitarg4:
@echo $@
- @AWKPATH=$(srcdir) $(AWK) -f $@.awk < $(srcdir)/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+ @AWKPATH="$(srcdir)" $(AWK) -f $@.awk < "$(srcdir)"/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
strtonum:
@echo $@
- @AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+ @AWKPATH="$(srcdir)" $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
switch2:
@echo $@
- @AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+ @AWKPATH="$(srcdir)" $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
symtab1:
@echo $@
- @AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+ @AWKPATH="$(srcdir)" $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
symtab2:
@echo $@
- @AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+ @AWKPATH="$(srcdir)" $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
symtab3:
@echo $@
- @AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+ @AWKPATH="$(srcdir)" $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
symtab4:
@echo $@
- @AWKPATH=$(srcdir) $(AWK) -f $@.awk < $(srcdir)/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+ @AWKPATH="$(srcdir)" $(AWK) -f $@.awk < "$(srcdir)"/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
symtab5:
@echo $@
- @AWKPATH=$(srcdir) $(AWK) -f $@.awk < $(srcdir)/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+ @AWKPATH="$(srcdir)" $(AWK) -f $@.awk < "$(srcdir)"/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
symtab7:
@echo $@
- @AWKPATH=$(srcdir) $(AWK) -f $@.awk < $(srcdir)/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+ @AWKPATH="$(srcdir)" $(AWK) -f $@.awk < "$(srcdir)"/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
double1:
@echo $@
- @AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+ @AWKPATH="$(srcdir)" $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
double2:
@echo $@
@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 _$@
+ @AWKPATH="$(srcdir)" $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
intformat:
@echo $@
- @AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+ @AWKPATH="$(srcdir)" $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
asort:
@echo $@
- @AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+ @AWKPATH="$(srcdir)" $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
asorti:
@echo $@
- @AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+ @AWKPATH="$(srcdir)" $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
fmttest:
@echo $@
@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 _$@
+ @AWKPATH="$(srcdir)" $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
fnarydel:
@echo $@
- @AWKPATH=$(srcdir) $(AWK) $(AWKFLAGS) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-if test -z "$$AWKFLAGS" ; then $(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@ ; else \
- $(CMP) $(srcdir)/$@-mpfr.ok _$@ && rm -f _$@ ; \
+ @AWKPATH="$(srcdir)" $(AWK) $(AWKFLAGS) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-if test -z "$$AWKFLAGS" ; then $(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@ ; else \
+ $(CMP) "$(srcdir)"/$@-mpfr.ok _$@ && rm -f _$@ ; \
fi
fnparydl:
@echo $@
- @AWKPATH=$(srcdir) $(AWK) $(AWKFLAGS) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-if test -z "$$AWKFLAGS" ; then $(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@ ; else \
- $(CMP) $(srcdir)/$@-mpfr.ok _$@ && rm -f _$@ ; \
+ @AWKPATH="$(srcdir)" $(AWK) $(AWKFLAGS) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-if test -z "$$AWKFLAGS" ; then $(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@ ; else \
+ $(CMP) "$(srcdir)"/$@-mpfr.ok _$@ && rm -f _$@ ; \
fi
rebt8b2:
@echo $@
- @AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+ @AWKPATH="$(srcdir)" $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
sort1:
@echo $@
- @AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+ @AWKPATH="$(srcdir)" $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
sprintfc:
@echo $@
- @AWKPATH=$(srcdir) $(AWK) -f $@.awk < $(srcdir)/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+ @AWKPATH="$(srcdir)" $(AWK) -f $@.awk < "$(srcdir)"/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
fnmatch:
@echo $@
- @AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+ @AWKPATH="$(srcdir)" $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
filefuncs:
@echo $@
- @AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+ @AWKPATH="$(srcdir)" $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
fork:
@echo $@
@echo Expect $@ to fail with MinGW because fork.dll is not available
- @AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+ @AWKPATH="$(srcdir)" $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
fork2:
@echo $@
@echo Expect $@ to fail with MinGW because fork.dll is not available
- @AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+ @AWKPATH="$(srcdir)" $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
functab4:
@echo $@
- @AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+ @AWKPATH="$(srcdir)" $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
ordchr:
@echo $@
- @AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+ @AWKPATH="$(srcdir)" $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
revout:
@echo $@
- @AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+ @AWKPATH="$(srcdir)" $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
revtwoway:
@echo $@
- @AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+ @AWKPATH="$(srcdir)" $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
rwarray:
@echo $@
- @AWKPATH=$(srcdir) $(AWK) -f $@.awk < $(srcdir)/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+ @AWKPATH="$(srcdir)" $(AWK) -f $@.awk < "$(srcdir)"/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
time:
@echo $@
- @AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+ @AWKPATH="$(srcdir)" $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
# end of file Maketests
@@ -2411,7 +2494,7 @@ time:
$(srcdir)/Maketests: $(srcdir)/Makefile.am $(srcdir)/Gentests
files=`cd "$(srcdir)" && echo *.awk *.in`; \
- $(AWK) -f $(srcdir)/Gentests "$(srcdir)/Makefile.am" $$files > $(srcdir)/Maketests
+ $(AWK) -f "$(srcdir)"/Gentests "$(srcdir)"/Makefile.am $$files > "$(srcdir)"/Maketests
clean:
rm -fr _* core core.* fmtspcl.ok junk strftime.ok test1 test2 \
@@ -2423,7 +2506,7 @@ pass-fail:
@COUNT=`ls _* 2>/dev/null | wc -l` ; \
if test $$COUNT = 0 ; \
then echo ALL TESTS PASSED ; \
- else echo $$COUNT TESTS FAILED ; \
+ else echo $$COUNT TESTS FAILED ; exit 1; \
fi
# This target for my convenience to look at all the results
@@ -2432,10 +2515,11 @@ diffout:
do \
if [ "$$i" != "_*" ]; then \
echo ============== $$i ============= ; \
- if [ -r $${i#_}.ok ]; then \
- diff -c $${i#_}.ok $$i ; \
+ base=`echo $$i | sed 's/^_//'` ; \
+ if [ -r $${base}.ok ]; then \
+ diff -c $${base}.ok $$i ; \
else \
- diff -c $(srcdir)/$${i#_}.ok $$i ; \
+ diff -c "$(srcdir)"/$${base}.ok $$i ; \
fi ; \
fi ; \
done | more
diff --git a/pc/config.h b/pc/config.h
index 92e1b4e3..c5d78a96 100644
--- a/pc/config.h
+++ b/pc/config.h
@@ -49,9 +49,6 @@
#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 <fcntl.h> header file. */
#define HAVE_FCNTL_H 1
@@ -75,6 +72,9 @@
/* Define to 1 if you have the `grantpt' function. */
#undef HAVE_GRANTPT
+/* Do we have history_list? */
+#undef HAVE_HISTORY_LIST
+
/* Define if you have the iconv() function and it works. */
#undef HAVE_ICONV
@@ -369,9 +369,6 @@
#define HAVE_USLEEP 1
#endif
-/* Define to 1 if you have the `vprintf' function. */
-#define HAVE_VPRINTF 1
-
/* Define to 1 if you have the <wchar.h> header file. */
#ifdef __MINGW32__
#define HAVE_WCHAR_H 1
@@ -426,7 +423,7 @@
#define PACKAGE_NAME "GNU Awk"
/* Define to the full name and version of this package. */
-#define PACKAGE_STRING "GNU Awk 4.1.0"
+#define PACKAGE_STRING "GNU Awk 4.1.60"
/* Define to the one symbol short name of this package. */
#define PACKAGE_TARNAME "gawk"
@@ -435,7 +432,7 @@
#define PACKAGE_URL "http://www.gnu.org/software/gawk/"
/* Define to the version of this package. */
-#define PACKAGE_VERSION "4.1.0"
+#define PACKAGE_VERSION "4.1.60"
/* Define to 1 if *printf supports %F format */
#undef PRINTF_HAS_F_FORMAT
@@ -497,7 +494,7 @@
/* Version number of package */
-#define VERSION "4.1.0"
+#define VERSION "4.1.60"
/* Enable large inode numbers on Mac OS X 10.5. */
#ifndef _DARWIN_USE_64_BIT_INODE
diff --git a/pc/gawkmisc.pc b/pc/gawkmisc.pc
index c811f647..239f3f8f 100644
--- a/pc/gawkmisc.pc
+++ b/pc/gawkmisc.pc
@@ -715,20 +715,6 @@ dlsym (void *handle, const char *name)
}
#endif /* DYNAMIC */
-
-void
-init_sockets(void)
-{
-#ifdef HAVE_SOCKETS
- WSADATA winsockData;
- int errcode;
-
- if ((errcode = WSAStartup (0x101, &winsockData)) != 0
- || winsockData.wVersion != 0x101)
- fatal(_("cannot start Winsock (%d)"), errcode);
-#endif
-}
-
#ifdef HAVE_SOCKETS
int
socket_to_fd(SOCKET s)
@@ -864,6 +850,23 @@ w32_shutdown (int fd, int how)
#endif /* __MINGW32__ */
+#if defined(__DJGPP__) || defined(__MINGW32__)
+
+void
+init_sockets(void)
+{
+#ifdef HAVE_SOCKETS
+ WSADATA winsockData;
+ int errcode;
+
+ if ((errcode = WSAStartup (0x101, &winsockData)) != 0
+ || winsockData.wVersion != 0x101)
+ fatal(_("cannot start Winsock (%d)"), errcode);
+#endif
+}
+
+#endif /* __DJGPP__ || __MINGW32__ */
+
#ifdef __DJGPP__
int
diff --git a/pc/popen.c b/pc/popen.c
index 399e250a..73770d98 100644
--- a/pc/popen.c
+++ b/pc/popen.c
@@ -13,7 +13,6 @@
#define _NFILE 40
#endif
-static char template[] = "piXXXXXX";
static struct {
char *command;
char *name;
@@ -34,6 +33,7 @@ static struct {
#define WIN32_LEAN_AND_MEAN
#include <windows.h>
+#if 0
static int
unixshell(char *p)
{
@@ -119,20 +119,16 @@ unlink_and_free(char *cmd)
s = cmd;
unlink(s); free(cmd);
}
+#endif
int
os_system(const char *cmd)
{
- char *s;
- int i;
- char *cmd1;
+ char *cmdexe = getenv("ComSpec");
+ char *cmd1 = quote_cmd(cmd);
+ int i = spawnl(P_WAIT, cmdexe, "cmd.exe", "/c", cmd1, NULL);
- if ((cmd1 = scriptify(cmd)) == NULL) return(1);
- if (s = getenv("SHELL"))
- i = spawnlp(P_WAIT, s, s, cmd1 + strlen(s), NULL);
- else
- i = system(cmd1);
- unlink_and_free(cmd1);
+ free(cmd1);
return(i);
}
@@ -209,19 +205,15 @@ os_popen(const char *command, const char *mode )
char *name;
int cur;
char curmode[4];
-#if defined(__MINGW32__)
- char *cmd;
-#endif
if (*mode != 'r' && *mode != 'w')
return NULL;
strncpy(curmode, mode, 3); curmode[3] = '\0';
#if defined(__MINGW32__)
- current = popen(cmd = scriptify(command), mode);
+ current = popen(command, mode);
cur = fileno(current);
strcpy(pipes[cur].pmode, curmode);
- pipes[cur].command = cmd;
return(current);
#endif
@@ -268,7 +260,6 @@ os_pclose( FILE * current)
#if defined(__MINGW32__)
rval = pclose(current);
*pipes[cur].pmode = '\0';
- unlink_and_free(pipes[cur].command);
return rval;
#endif
diff --git a/po/ChangeLog b/po/ChangeLog
index 31d9fa1d..a9cca765 100644
--- a/po/ChangeLog
+++ b/po/ChangeLog
@@ -1,3 +1,7 @@
+2014-04-08 Arnold D. Robbins <arnold@skeeve.com>
+
+ * 4.1.1: Release tar ball made.
+
2013-05-09 Arnold D. Robbins <arnold@skeeve.com>
* 4.1.0: Release tar ball made.
diff --git a/po/LINGUAS b/po/LINGUAS
index 3ec9de9d..d00794ef 100644
--- a/po/LINGUAS
+++ b/po/LINGUAS
@@ -1,3 +1,4 @@
+ca
da
de
es
diff --git a/po/ca.gmo b/po/ca.gmo
new file mode 100644
index 00000000..465f05a5
--- /dev/null
+++ b/po/ca.gmo
Binary files differ
diff --git a/po/ca.po b/po/ca.po
index d7b6e552..444f09c4 100644
--- a/po/ca.po
+++ b/po/ca.po
@@ -1,14 +1,15 @@
# translation of gawk.po to Catalan
# Copyright (C) 2003 Free Software Foundation, Inc.
+# This file is distributed under the same license as the gawk package.
# Antoni Bella Perez <bella5@teleline.es>, 2003.
-#
+# Walter Garcia-Fontes <walter.garcia@upf.edu>, 2014.
msgid ""
msgstr ""
-"Project-Id-Version: gawk 3.1.31\n"
+"Project-Id-Version: gawk 4.1.0b\n"
"Report-Msgid-Bugs-To: arnold@skeeve.com\n"
-"POT-Creation-Date: 2011-03-18 12:00+0200\n"
-"PO-Revision-Date: 2003-05-07 21:13+0100\n"
-"Last-Translator: Antoni Bella Perez <bella5@teleline.es>\n"
+"POT-Creation-Date: 2014-04-08 19:23+0300\n"
+"PO-Revision-Date: 2014-02-26 20:18+0100\n"
+"Last-Translator: Walter Garcia-Fontes <walter.garcia@upf.edu>\n"
"Language-Team: Catalan <ca@dodds.net>\n"
"Language: ca\n"
"MIME-Version: 1.0\n"
@@ -16,880 +17,1897 @@ msgstr ""
"Content-Transfer-Encoding: 8bit\n"
"X-Generator: KBabel 1.0.1\n"
-#: array.c:103
-#, fuzzy, c-format
+#: array.c:256
+#, c-format
msgid "from %s"
-msgstr "%s (de %s)"
+msgstr "de %s"
-#: array.c:267
-#, fuzzy
+#: array.c:357
msgid "attempt to use a scalar value as array"
-msgstr "s'ha intentat usar la dada escalar «%s» com a una matriu"
-
-#: array.c:270
-#, fuzzy, c-format
-msgid "attempt to use function `%s' as an array"
-msgstr "s'ha intentat usar la funció «%s» com a una matriu"
+msgstr "s'ha intentat usar un valor escalar com a una matriu"
-#: array.c:273
+#: array.c:359
#, c-format
msgid "attempt to use scalar parameter `%s' as an array"
-msgstr "s'ha intentat usar un paràmetre escalar «%s» com a una matriu"
+msgstr "s'ha intentat usar un paràmetre escalar `%s' com a una matriu"
-#: array.c:276 eval.c:2013
-#, fuzzy, c-format
+#: array.c:362
+#, c-format
msgid "attempt to use scalar `%s' as an array"
-msgstr "s'ha intentat usar la dada escalar «%s» com a una matriu"
+msgstr "s'ha intentat usar la dada escalar `%s' com a una matriu"
-#: array.c:321 array.c:648 builtin.c:75 builtin.c:555 builtin.c:597
-#: builtin.c:610 builtin.c:1016 builtin.c:1028 eval.c:1381 eval.c:1385
-#: eval.c:1710 eval.c:1958 eval.c:2026 eval.c:2274
+#: array.c:409 array.c:576 builtin.c:85 builtin.c:1615 builtin.c:1661
+#: builtin.c:1674 builtin.c:2102 builtin.c:2116 eval.c:1122 eval.c:1126
+#: eval.c:1531
#, c-format
msgid "attempt to use array `%s' in a scalar context"
-msgstr "s'ha intentat usar la matriu «%s» en un context escalar"
-
-#: array.c:570
-#, fuzzy, c-format
-msgid "reference to uninitialized element `%s[\"%.*s\"]'"
-msgstr "referència a un element sense valor inicial «%s[\"%s\"]»"
+msgstr "s'ha intentat usar la matriu `%s' en un context escalar"
-#: array.c:576
-#, c-format
-msgid "subscript of array `%s' is null string"
-msgstr "el subscript de la matriu «%s» és una cadena nul·la"
-
-#: array.c:684
+#: array.c:583
#, c-format
msgid "delete: index `%s' not in array `%s'"
-msgstr "delete: l'índex «%s» no està en la matriu «%s»"
-
-#: array.c:708
-#, fuzzy, c-format
-msgid "attempt to use scalar `%s[\"%.*s\"]' as an array"
-msgstr "s'ha intentat usar la dada escalar «%s» com a una matriu"
+msgstr "delete: l'índex `%s' no està en la matriu `%s'"
-#: array.c:871
+#: array.c:597
#, c-format
-msgid "%s: empty (null)\n"
-msgstr "%s: buit (nul)\n"
-
-#: array.c:876
-#, c-format
-msgid "%s: empty (zero)\n"
-msgstr "%s: buit (zero)\n"
-
-#: array.c:880
-#, c-format
-msgid "%s: table_size = %d, array_size = %d\n"
-msgstr "%s: mida_taula = %d, mida_matriu = %d\n"
-
-#: array.c:915
-#, fuzzy, c-format
-msgid "%s: is parameter\n"
-msgstr "%s: és un paràmetre\n"
-
-#: array.c:919
-#, c-format
-msgid "%s: array_ref to %s\n"
-msgstr "%s: ref_matriu a %s\n"
-
-#: array.c:924
-#, fuzzy
-msgid "adump: argument not an array"
-msgstr "asort: el primer argument no és una matriu"
+msgid "attempt to use scalar `%s[\"%.*s\"]' as an array"
+msgstr "s'ha intentat usar la dada escalar `%s[\"%.*s\"]' com a una matriu"
-#: array.c:1142
-#, fuzzy
-msgid "attempt to use array in a scalar context"
-msgstr "s'ha intentat usar la matriu «%s» en un context escalar"
+#: array.c:776
+msgid "adump: first argument not an array"
+msgstr "adump: el primer argument no és una matriu"
-#: array.c:1239
-#, fuzzy
+#: array.c:815
msgid "asort: second argument not an array"
msgstr "asort: el segon argument no és una matriu"
-#: array.c:1240
-#, fuzzy
+#: array.c:816
msgid "asorti: second argument not an array"
-msgstr "asort: el segon argument no és una matriu"
+msgstr "asorti: el segon argument no és una matriu"
-#: array.c:1247
-#, fuzzy
+#: array.c:823
msgid "asort: first argument not an array"
msgstr "asort: el primer argument no és una matriu"
-#: array.c:1248
-#, fuzzy
+#: array.c:824
msgid "asorti: first argument not an array"
msgstr "asort: el primer argument no és una matriu"
-#: awkgram.y:249
-#, fuzzy, c-format
+#: array.c:831
+msgid "asort: cannot use a subarray of first arg for second arg"
+msgstr ""
+"asort: no es pot usar una submatriu com a primer argument per al segon "
+"argument"
+
+#: array.c:832
+msgid "asorti: cannot use a subarray of first arg for second arg"
+msgstr ""
+"asorti: no es pot usar una submatriu com a primer argument per al segon "
+"argument"
+
+#: array.c:837
+msgid "asort: cannot use a subarray of second arg for first arg"
+msgstr ""
+"asort: no es pot usar una submatriu com a segon argument per al primer "
+"argument"
+
+#: array.c:838
+msgid "asorti: cannot use a subarray of second arg for first arg"
+msgstr ""
+"asorti: no es pot usar una submatriu com a segon argument per al primer "
+"argument"
+
+#: array.c:1314
+#, c-format
+msgid "`%s' is invalid as a function name"
+msgstr "`%s' no és vàlid com a nom de funció"
+
+#: array.c:1318
+#, c-format
+msgid "sort comparison function `%s' is not defined"
+msgstr "la funció de comparació d'ordenació `%s' no està definida"
+
+#: awkgram.y:233
+#, c-format
msgid "%s blocks must have an action part"
-msgstr "Els blocs FINAL han de tindre una part d'acció"
+msgstr "%s blocs han de tenir una part d'acció"
-#: awkgram.y:252
-#, fuzzy
+#: awkgram.y:236
msgid "each rule must have a pattern or an action part"
-msgstr "Els blocs FINAL han de tindre una part d'acció"
+msgstr "cada regla ha de tenir un patró o una part d'acció"
-#: awkgram.y:323 awkgram.y:334
-#, fuzzy
+#: awkgram.y:325 awkgram.y:336
msgid "old awk does not support multiple `BEGIN' or `END' rules"
-msgstr "l'antic awk no suporta l'operador «**=»"
+msgstr "l'antic awk no suporta múltiples regles `BEGIN' i `END'"
-#: awkgram.y:371
+#: awkgram.y:373
#, c-format
msgid "`%s' is a built-in function, it cannot be redefined"
-msgstr "«%s» és una funció interna, no pot ser redefinida"
+msgstr "`%s' és una funció interna, no pot ser redefinida"
-#: awkgram.y:432
-#, fuzzy
+#: awkgram.y:419
msgid "regexp constant `//' looks like a C++ comment, but is not"
msgstr ""
-"la constant d'expressió regular «/%s/» sembla un comentari en C, perà no ho "
+"la constant d'expressió regular `//' sembla un comentari en C++, però no ho "
"és"
-#: awkgram.y:436
+#: awkgram.y:423
#, c-format
msgid "regexp constant `/%s/' looks like a C comment, but is not"
msgstr ""
-"la constant d'expressió regular «/%s/» sembla un comentari en C, perà no ho "
+"la constant d'expressió regular `/%s/' sembla un comentari en C, però no ho "
"és"
-#: awkgram.y:528
+#: awkgram.y:515
#, c-format
msgid "duplicate case values in switch body: %s"
-msgstr ""
+msgstr "valors duplicats de casos al cos de l'expressió switch: %s"
-#: awkgram.y:549
+#: awkgram.y:536
msgid "duplicate `default' detected in switch body"
msgstr ""
+"s'ha detectat el cas predeterminat `default' duplicat a l'expressió switch "
-#: awkgram.y:811
-#, fuzzy
+#: awkgram.y:796 awkgram.y:3723
msgid "`break' is not allowed outside a loop or switch"
-msgstr "no es permet «break» a fora d'un bucle"
+msgstr "no es permet `break' a fora d'un bucle o bifurcació"
-#: awkgram.y:820
-#, fuzzy
+#: awkgram.y:805 awkgram.y:3715
msgid "`continue' is not allowed outside a loop"
-msgstr "no es permet «continue» a fora d'un bucle"
+msgstr "no es permet `continue' a fora d'un bucle"
-#: awkgram.y:829
-#, fuzzy, c-format
+#: awkgram.y:815
+#, c-format
msgid "`next' used in %s action"
-msgstr "«next» és usat dintre de l'acció BEGIN o END"
-
-#: awkgram.y:837
-msgid "`nextfile' is a gawk extension"
-msgstr "«nextfile» és una extensió de gawk"
+msgstr "`next' usat a l'acció %s"
-#: awkgram.y:840
-#, fuzzy, c-format
+#: awkgram.y:824
+#, c-format
msgid "`nextfile' used in %s action"
-msgstr "«next» és usat dintre de l'acció BEGIN o END"
+msgstr "`nextfile' usat a l'acció %s"
-#: awkgram.y:863
+#: awkgram.y:848
msgid "`return' used outside function context"
-msgstr "«return» és usat fora del context d'una funció"
+msgstr "`return' és usat fora del context d'una funció"
-#: awkgram.y:923
+#: awkgram.y:922
msgid "plain `print' in BEGIN or END rule should probably be `print \"\"'"
msgstr ""
-"el «print» simple en la regla BEGIN o END probablement ha de ser «print \"\"»"
+"el `print'» simple en la regla BEGIN o END probablement ha de ser `print "
+"\"\"'"
+
+#: awkgram.y:988 awkgram.y:1037
+msgid "`delete' is not allowed with SYMTAB"
+msgstr "no es permet `delete' amb SYMTAB"
-#: awkgram.y:993 awkgram.y:997 awkgram.y:1021
-msgid "`delete array' is a gawk extension"
-msgstr "«delete array» és una extensió de gawk"
+#: awkgram.y:990 awkgram.y:1039
+msgid "`delete' is not allowed with FUNCTAB"
+msgstr "no es permet `delete' a FUNCTAB"
-#: awkgram.y:1017
-#, fuzzy
+#: awkgram.y:1024 awkgram.y:1028
msgid "`delete(array)' is a non-portable tawk extension"
-msgstr "«delete array» és una extensió de gawk"
+msgstr "`delete(array)' és una extensió tawk no portable"
-#: awkgram.y:1133
+#: awkgram.y:1149
msgid "multistage two-way pipelines don't work"
msgstr "les canonades bidireccionals multi-etapes no funcionen"
-#: awkgram.y:1236
+#: awkgram.y:1264
msgid "regular expression on right of assignment"
msgstr "expressió regular a la dreta d'una assignació"
-#: awkgram.y:1247
+#: awkgram.y:1275
msgid "regular expression on left of `~' or `!~' operator"
-msgstr "expressió regular a l'esquerra de l'operador «~» o «!~»"
+msgstr "expressió regular a l'esquerra de l'operador `~' o `!~'"
-#: awkgram.y:1263 awkgram.y:1417
-#, fuzzy
+#: awkgram.y:1291 awkgram.y:1442
msgid "old awk does not support the keyword `in' except after `for'"
-msgstr "l'antic awk no suporta l'operador «**=»"
+msgstr ""
+"l'antic awk no dóna suport a la paraula clau `in' excepte després de `for'"
-#: awkgram.y:1273
+#: awkgram.y:1301
msgid "regular expression on right of comparison"
-msgstr "expressió regular a la derta de la comparació"
+msgstr "expressió regular a la dreta de la comparació"
-#: awkgram.y:1392
-#, fuzzy, c-format
+#: awkgram.y:1417
+#, c-format
msgid "`getline var' invalid inside `%s' rule"
-msgstr "port remot no vàlid en «%s»"
+msgstr "`getline var' no és vàlid a dins de la regla `%s'"
-#: awkgram.y:1395 eval.c:2649
-#, fuzzy, c-format
+#: awkgram.y:1420
+#, c-format
msgid "`getline' invalid inside `%s' rule"
-msgstr "port remot no vàlid en «%s»"
+msgstr "`getline' no és vàlid a dins de la regla `%s'"
-#: awkgram.y:1400
+#: awkgram.y:1425
msgid "non-redirected `getline' undefined inside END action"
-msgstr "«getline» no redirigit sense definir dintre de l'acció FINAL"
+msgstr "`getline' no redirigit sense definir dintre de l'acció FINAL"
-#: awkgram.y:1419
-#, fuzzy
+#: awkgram.y:1444
msgid "old awk does not support multidimensional arrays"
-msgstr "l'antic awk no suporta l'operador «**=»"
+msgstr "l'antic awk no suporta matrius multidimensionals"
-#: awkgram.y:1515
+#: awkgram.y:1541
msgid "call of `length' without parentheses is not portable"
-msgstr "la crida de «length» sense parèntesis no és portable"
+msgstr "la crida de `length' sense parèntesis no és portable"
-#: awkgram.y:1578
-#, fuzzy
+#: awkgram.y:1607
msgid "indirect function calls are a gawk extension"
-msgstr "«nextfile» és una extensió de gawk"
+msgstr "les crides a funcions indirectes són una extensió gawk"
-#: awkgram.y:1591
-#, fuzzy, c-format
+#: awkgram.y:1620
+#, c-format
msgid "can not use special variable `%s' for indirect function call"
-msgstr "funció «%s»: no pot usar el nom de la funció com a paràmetre"
+msgstr ""
+"no es pot usar la variable especial `%s' per a una crida indirecta de funció"
-#: awkgram.y:1669
+#: awkgram.y:1698
msgid "invalid subscript expression"
-msgstr "expressió de subscript no vàlida"
+msgstr "expressió de subíndex no vàlida"
-#: awkgram.y:1709
-msgid "use of non-array as array"
-msgstr ""
-
-#: awkgram.y:1973 awkgram.y:1993 msg.c:98
+#: awkgram.y:2048 awkgram.y:2068 gawkapi.c:206 gawkapi.c:224 msg.c:126
msgid "warning: "
-msgstr "ADVERTIMENT: "
+msgstr "advertiment: "
-#: awkgram.y:1991 msg.c:130
+#: awkgram.y:2066 gawkapi.c:192 gawkapi.c:221 msg.c:158
msgid "fatal: "
-msgstr "Fatal: "
+msgstr "fatal: "
-#: awkgram.y:2041
-#, fuzzy
+#: awkgram.y:2116
msgid "unexpected newline or end of string"
-msgstr "nova línia inesperada"
+msgstr "nova línia inesperada o final d'una cadena de caràcters"
-#: awkgram.y:2297 awkgram.y:2355 awkgram.y:2539
+#: awkgram.y:2383 awkgram.y:2459 awkgram.y:2682 debug.c:523 debug.c:539
+#: debug.c:2812 debug.c:5055
#, c-format
msgid "can't open source file `%s' for reading (%s)"
-msgstr "no es pot obrir el fitxer font «%s» per a lectura (%s)"
+msgstr "no es pot obrir el fitxer font `%s' per a lectura (%s)"
+
+#: awkgram.y:2384 awkgram.y:2509
+#, c-format
+msgid "can't open shared library `%s' for reading (%s)"
+msgstr "no es pot obrir la llibreria compartida `%s' per a lectura (%s)"
-#: awkgram.y:2298 awkgram.y:2356 builtin.c:119
+#: awkgram.y:2386 awkgram.y:2460 awkgram.y:2510 builtin.c:135 debug.c:5206
msgid "reason unknown"
msgstr "motiu desconegut"
-#: awkgram.y:2314
-#, fuzzy, c-format
+#: awkgram.y:2395 awkgram.y:2419
+#, c-format
+msgid "can't include `%s' and use it as a program file"
+msgstr "no es pot incloure `%s' i usar-lo com un fitxer de programa"
+
+#: awkgram.y:2408
+#, c-format
msgid "already included source file `%s'"
-msgstr "no es pot llegir el fitxer font «%s» (%s)"
+msgstr "ja s'ha inclòs el fitxer font `%s'"
+
+#: awkgram.y:2409
+#, c-format
+msgid "already loaded shared library `%s'"
+msgstr "ja s'ha carregat la biblioteca compartida `%s'"
-#: awkgram.y:2340
-#, fuzzy
+#: awkgram.y:2444
msgid "@include is a gawk extension"
-msgstr "«nextfile» és una extensió de gawk"
+msgstr "@include és una extensió de gawk"
-#: awkgram.y:2346
+#: awkgram.y:2450
msgid "empty filename after @include"
-msgstr ""
+msgstr "nom de fitxer buit després de @include"
+
+#: awkgram.y:2494
+msgid "@load is a gawk extension"
+msgstr "@load és una extensió de gawk"
+
+#: awkgram.y:2500
+msgid "empty filename after @load"
+msgstr "fitxer buit després de @load"
-#: awkgram.y:2491
+#: awkgram.y:2634
msgid "empty program text on command line"
msgstr "el text del programa en la línia de comandaments està buit"
-#: awkgram.y:2606
+#: awkgram.y:2749
#, c-format
msgid "can't read sourcefile `%s' (%s)"
-msgstr "no es pot llegir el fitxer font «%s» (%s)"
+msgstr "no es pot llegir el fitxer font `%s' (%s)"
-#: awkgram.y:2617
+#: awkgram.y:2760
#, c-format
msgid "source file `%s' is empty"
-msgstr "el fitxer font «%s» està buit"
+msgstr "el fitxer font `%s' està buit"
-#: awkgram.y:2802
+#: awkgram.y:2937
msgid "source file does not end in newline"
msgstr "el fitxer font no finalitza amb un retorn de carro"
-#: awkgram.y:2879
+#: awkgram.y:3042
msgid "unterminated regexp ends with `\\' at end of file"
-msgstr "expressió regular sense finalitzar acaba amb «\\» al final del fitxer"
+msgstr "expressió regular sense finalitzar acaba amb `\\' al final del fitxer"
-#: awkgram.y:2903
+#: awkgram.y:3066
#, c-format
msgid "%s: %d: tawk regex modifier `/.../%c' doesn't work in gawk"
-msgstr ""
+msgstr "%s: %d: el modificador regex tawk `/.../%c' no funciona a gawk"
-#: awkgram.y:2907
+#: awkgram.y:3070
#, c-format
msgid "tawk regex modifier `/.../%c' doesn't work in gawk"
-msgstr ""
+msgstr "el modificador regex tawk `/.../%c' no funciona a gawk"
-#: awkgram.y:2914
+#: awkgram.y:3077
msgid "unterminated regexp"
msgstr "expressió regular sense finalitzar"
-#: awkgram.y:2918
+#: awkgram.y:3081
msgid "unterminated regexp at end of file"
msgstr "expressió regular sense finalitzar al final del fitxer"
-#: awkgram.y:2977
+#: awkgram.y:3140
msgid "use of `\\ #...' line continuation is not portable"
-msgstr "l'ús de «\\ #...» com a continuació de línia no és portable"
+msgstr "l'ús de `\\ #...' com a continuació de línia no és portable"
-#: awkgram.y:2993
+#: awkgram.y:3156
msgid "backslash not last character on line"
msgstr "la barra invertida no és l'últim caràcter en la línia"
-#: awkgram.y:3054
+#: awkgram.y:3217
msgid "POSIX does not allow operator `**='"
-msgstr "POSIX no permet l'operador «**=»"
+msgstr "POSIX no permet l'operador `**='"
-#: awkgram.y:3056
+#: awkgram.y:3219
msgid "old awk does not support operator `**='"
-msgstr "l'antic awk no suporta l'operador «**=»"
+msgstr "l'antic awk no suporta l'operador `**='"
-#: awkgram.y:3065
+#: awkgram.y:3228
msgid "POSIX does not allow operator `**'"
-msgstr "POSIX no permet l'operador «**»"
+msgstr "POSIX no permet l'operador `**'"
-#: awkgram.y:3067
+#: awkgram.y:3230
msgid "old awk does not support operator `**'"
-msgstr "l'antic awk no suporta l'operador «**=»"
+msgstr "l'antic awk no suporta l'operador `**='"
-#: awkgram.y:3102
+#: awkgram.y:3265
msgid "operator `^=' is not supported in old awk"
-msgstr "l'operador «^=» no està suportat en l'antic awk"
+msgstr "l'operador `^=' no està suportat en l'antic awk"
-#: awkgram.y:3110
+#: awkgram.y:3273
msgid "operator `^' is not supported in old awk"
-msgstr "l'operador «^» no està suportat en l'antic awk"
+msgstr "l'operador `^' no està suportat en l'antic awk"
-#: awkgram.y:3203 awkgram.y:3219
+#: awkgram.y:3366 awkgram.y:3382 command.y:1178
msgid "unterminated string"
msgstr "cadena sense finalitzar"
-#: awkgram.y:3415
+#: awkgram.y:3603
#, c-format
msgid "invalid char '%c' in expression"
-msgstr "caràcter «%c» no vàlid en l'expressió"
+msgstr "caràcter `%c' no vàlid en l'expressió"
-#: awkgram.y:3462
+#: awkgram.y:3650
#, c-format
msgid "`%s' is a gawk extension"
-msgstr "«%s» és una extensió de gawk"
-
-#: awkgram.y:3467
-#, c-format
-msgid "`%s' is a Bell Labs extension"
-msgstr "«%s» és una extensió de Bell Labs"
+msgstr "`%s' és una extensió de gawk"
-#: awkgram.y:3472
+#: awkgram.y:3655
#, c-format
msgid "POSIX does not allow `%s'"
msgstr "POSIX no permet «%s»"
-#: awkgram.y:3480
+#: awkgram.y:3663
#, c-format
msgid "`%s' is not supported in old awk"
-msgstr "«%s» no està suportat en l'antic awk"
+msgstr "`%s' no està suportat en l'antic awk"
-#: awkgram.y:3550
+#: awkgram.y:3753
msgid "`goto' considered harmful!\n"
-msgstr "«goto» se considera nefast!\n"
+msgstr "`goto' es considera perjudicial!\n"
-#: awkgram.y:3602
+#: awkgram.y:3787
#, c-format
msgid "%d is invalid as number of arguments for %s"
msgstr "%d no és vàlid com a nombre d'arguments per a %s"
-#: awkgram.y:3637 awkgram.y:3640
-msgid "match: third argument is a gawk extension"
-msgstr "match: el tercer argument és una extensió de gawk"
-
-#: awkgram.y:3668
+#: awkgram.y:3822
#, c-format
msgid "%s: string literal as last arg of substitute has no effect"
msgstr "%s: la cadena literal com a últim argument de substitució no té efecte"
-#: awkgram.y:3673
-#, fuzzy, c-format
+#: awkgram.y:3827
+#, c-format
msgid "%s third parameter is not a changeable object"
-msgstr "sub: el tercer argument no és un objecte intercanviable"
+msgstr "%s el tercer paràmetre no és un objecte intercanviable"
+
+#: awkgram.y:3910 awkgram.y:3913
+msgid "match: third argument is a gawk extension"
+msgstr "match: el tercer argument és una extensió de gawk"
-#: awkgram.y:3759 awkgram.y:3762
+#: awkgram.y:3967 awkgram.y:3970
msgid "close: second argument is a gawk extension"
msgstr "close: el segon argument és una extensió de gawk"
-#: awkgram.y:3774
+#: awkgram.y:3982
msgid "use of dcgettext(_\"...\") is incorrect: remove leading underscore"
msgstr ""
"l'ús de dcgettext(_\"...\") no és correcte: elimineu el guió baix inicial"
-#: awkgram.y:3789
-#, fuzzy
+#: awkgram.y:3997
msgid "use of dcngettext(_\"...\") is incorrect: remove leading underscore"
msgstr ""
"l'ús de dcgettext(_\"...\") no és correcte: elimineu el guió baix inicial"
-#: awkgram.y:3881
-#, c-format
-msgid "function `%s': parameter #%d, `%s', duplicates parameter #%d"
-msgstr "funció «%s»: paràmetre #%d, «%s», duplica al paràmetre #%d"
+#: awkgram.y:4016
+msgid "index: regexp constant as second argument is not allowed"
+msgstr "índex: no es permet una constant regexp com a segon argument"
-#: awkgram.y:3923
+#: awkgram.y:4069
#, c-format
msgid "function `%s': parameter `%s' shadows global variable"
-msgstr "funció «%s»: paràmetre «%s» ofusca la variable global"
+msgstr "funció `%s': paràmetre `%s' ofusca la variable global"
-#: awkgram.y:4081
+#: awkgram.y:4126 debug.c:4041 debug.c:4084 debug.c:5204
#, c-format
msgid "could not open `%s' for writing (%s)"
-msgstr "no es pot obrir «%s» per a escriptura (%s)"
+msgstr "no es pot obrir `%s' per a escriptura (%s)"
-#: awkgram.y:4082 profile.c:85
-msgid "sending profile to standard error"
-msgstr "enviant el perfil a l'eixida d'error estàndard"
+#: awkgram.y:4127
+msgid "sending variable list to standard error"
+msgstr "s'està enviant la llista de variables a l'eixida d'error estàndard"
-#: awkgram.y:4088
+#: awkgram.y:4135
#, c-format
msgid "%s: close failed (%s)"
msgstr "%s: tancament erroni (%s)"
-#: awkgram.y:4140
+#: awkgram.y:4160
msgid "shadow_funcs() called twice!"
-msgstr "shadow_funcs() crida dos vegades!"
+msgstr "shadow_funcs() s'ha cridat dues vegades!"
-#: awkgram.y:4146
+#: awkgram.y:4168
msgid "there were shadowed variables."
-msgstr ""
+msgstr "hi ha hagut variables a l'ombra"
+
+#: awkgram.y:4239
+#, c-format
+msgid "function name `%s' previously defined"
+msgstr "nom de la funció `%s' definida prèviament"
-#: awkgram.y:4176
+#: awkgram.y:4285
#, c-format
msgid "function `%s': can't use function name as parameter name"
-msgstr "funció «%s»: no pot usar el nom de la funció com a paràmetre"
+msgstr "funció `%s»: no pot usar el nom de la funció com a paràmetre"
-#: awkgram.y:4180
-#, fuzzy, c-format
+#: awkgram.y:4288
+#, c-format
msgid "function `%s': can't use special variable `%s' as a function parameter"
-msgstr "funció «%s»: no pot usar el nom de la funció com a paràmetre"
+msgstr ""
+"funció `%s': no es pot usar la variable especial `%s' com a un paràmetre de "
+"funció"
-#: awkgram.y:4196
+#: awkgram.y:4296
#, c-format
-msgid "function name `%s' previously defined"
-msgstr "nom de la funció «%s» definida prèviament"
+msgid "function `%s': parameter #%d, `%s', duplicates parameter #%d"
+msgstr "funció `%s': paràmetre #%d, `%s', duplica al paràmetre #%d"
-#: awkgram.y:4364 awkgram.y:4370
+#: awkgram.y:4383 awkgram.y:4389
#, c-format
msgid "function `%s' called but never defined"
-msgstr "es crida a la funció «%s» però no s'ha definit"
+msgstr "es crida a la funció `%s' però no s'ha definit"
-#: awkgram.y:4373
-#, fuzzy, c-format
+#: awkgram.y:4393
+#, c-format
msgid "function `%s' defined but never called directly"
-msgstr "es defineix la funció «%s» però no s'ha cridat mai"
+msgstr "la funció `%s' està definida però no s'ha cridat mai directament"
-#: awkgram.y:4405
+#: awkgram.y:4425
#, c-format
msgid "regexp constant for parameter #%d yields boolean value"
msgstr ""
"l'expressió regular constant per al paràmetre #%d condueix a un valor booleà"
-#: awkgram.y:4514
-#, fuzzy, c-format
+#: awkgram.y:4484
+#, c-format
msgid ""
"function `%s' called with space between name and `(',\n"
"or used as a variable or an array"
msgstr ""
-"s'ha cridat a la funció «%s» amb espai entre el nom i el «(»,\n"
-"%s"
+"s'ha cridat a la funció `%s' amb espai entre el nom i el '(',\n"
+"o s'ha usat com a variable o matriu"
-#: awkgram.y:4761 eval.c:2206
+#: awkgram.y:4720
msgid "division by zero attempted"
msgstr "s'ha intentat una divisió per zero"
-#: awkgram.y:4770 eval.c:2222
+#: awkgram.y:4729
#, c-format
msgid "division by zero attempted in `%%'"
-msgstr "s'ha intentat una divisió per zero en «%%»"
+msgstr "s'ha intentat una divisió per zero en `%%'"
+
+#: awkgram.y:5049
+msgid ""
+"cannot assign a value to the result of a field post-increment expression"
+msgstr ""
+"no es pot assignar un valor al resultat d'una expressió post-increment de "
+"camp"
+
+#: awkgram.y:5052
+#, c-format
+msgid "invalid target of assignment (opcode %s)"
+msgstr "destí no vàlid d'assignació (opcode %s)"
-#: builtin.c:117
+#: builtin.c:133
#, c-format
msgid "%s to \"%s\" failed (%s)"
msgstr "%s a \"%s\" ha fallat (%s)"
-#: builtin.c:118
+#: builtin.c:134
msgid "standard output"
-msgstr "eixida estàndard"
+msgstr "sortida estàndard"
-#: builtin.c:132
+#: builtin.c:148
msgid "exp: received non-numeric argument"
msgstr "exp: s'ha rebut un argument que no és un número"
-#: builtin.c:138
+#: builtin.c:154
#, c-format
msgid "exp: argument %g is out of range"
msgstr "exp: l'argument %g està fora de rang"
-#: builtin.c:197
+#: builtin.c:229
#, c-format
msgid "fflush: cannot flush: pipe `%s' opened for reading, not writing"
msgstr ""
-"fflush: no es pot netejar: la canonada «%s» s'ha obert per a lectura, no per "
+"fflush: no es pot netejar: la canonada `%s' s'ha obert per a lectura, no per "
"a escriptura"
-#: builtin.c:200
+#: builtin.c:232
#, c-format
msgid "fflush: cannot flush: file `%s' opened for reading, not writing"
msgstr ""
-"fflush: no es pot netejar: el fitxer «%s» s'ha obert per a lectura, no per a "
+"fflush: no es pot netejar: el fitxer `%s' s'ha obert per a lectura, no per a "
"escriptura"
-#: builtin.c:212
+#: builtin.c:244
#, c-format
msgid "fflush: `%s' is not an open file, pipe or co-process"
-msgstr "fflush: «%s» no és un fitxer obert, canonada o co-procés"
+msgstr "fflush: `%s' no és un fitxer obert, canonada o co-procés"
-#: builtin.c:330
+#: builtin.c:362
msgid "index: received non-string first argument"
msgstr "índex: el primer argument rebut no és una cadena"
-#: builtin.c:332
+#: builtin.c:364
msgid "index: received non-string second argument"
msgstr "índex: el segon argument rebut no és una cadena"
-#: builtin.c:454
+#: builtin.c:488 mpfr.c:757
msgid "int: received non-numeric argument"
msgstr "int: s'ha rebut un argument no numèric"
-#: builtin.c:490
-#, fuzzy
+#: builtin.c:525
msgid "length: received array argument"
-msgstr "length: s'ha rebut un argument que no és una cadena"
+msgstr "length: s'ha rebut un argument de matriu"
-#: builtin.c:493
-#, fuzzy
+#: builtin.c:528
msgid "`length(array)' is a gawk extension"
-msgstr "«delete array» és una extensió de gawk"
+msgstr "`length(array)' és una extensió de gawk"
-#: builtin.c:501
+#: builtin.c:544
msgid "length: received non-string argument"
msgstr "length: s'ha rebut un argument que no és una cadena"
-#: builtin.c:532
+#: builtin.c:575
msgid "log: received non-numeric argument"
msgstr "log: s'ha rebut un argument no numèric"
-#: builtin.c:535
+#: builtin.c:578
#, c-format
msgid "log: received negative argument %g"
msgstr "log: s'ha rebut l'argument negatiu %g"
-#: builtin.c:593 builtin.c:604
+#: builtin.c:776 builtin.c:781
+msgid "fatal: must use `count$' on all formats or none"
+msgstr "fatal: s'ha d'usar `count$' a tots els format o a cap"
+
+#: builtin.c:851
+#, c-format
+msgid "field width is ignored for `%%' specifier"
+msgstr "l'amplada de camp s'ignorarà per a l'especificador `%%'"
+
+#: builtin.c:853
+#, c-format
+msgid "precision is ignored for `%%' specifier"
+msgstr "la precisió s'ignorarà per a l'especificador `%%'"
+
+#: builtin.c:855
+#, c-format
+msgid "field width and precision are ignored for `%%' specifier"
+msgstr "l'amplada de camp i la precisió s'ignoraran per a l'especificador `%%'"
+
+#: builtin.c:906
+msgid "fatal: `$' is not permitted in awk formats"
+msgstr "fatal: no es permeten `$' en els formats awk"
+
+#: builtin.c:915
+msgid "fatal: arg count with `$' must be > 0"
+msgstr "fatal: el recompte d'arguments amb `$' ha de ser > 0"
+
+#: builtin.c:919
+#, c-format
+msgid "fatal: arg count %ld greater than total number of supplied arguments"
+msgstr ""
+"fatal: el recompte d'arguments %ld és major que el nombre total d'arguments "
+"proporcionats"
+
+#: builtin.c:923
+msgid "fatal: `$' not permitted after period in format"
+msgstr "fatal: no es permet `$' després d'un punt en el format"
+
+#: builtin.c:939
+msgid "fatal: no `$' supplied for positional field width or precision"
+msgstr ""
+"fatal: no es proporciona `$' per a l'ample o precisió del camp de posició"
+
+#: builtin.c:1009
+msgid "`l' is meaningless in awk formats; ignored"
+msgstr "`l' manca de significat en els formats awk; serà ignorat"
+
+#: builtin.c:1013
+msgid "fatal: `l' is not permitted in POSIX awk formats"
+msgstr "fatal: `l' no està permès en els formats POSIX de awk"
+
+#: builtin.c:1026
+msgid "`L' is meaningless in awk formats; ignored"
+msgstr "`L' manca de significat en els formats awk; serà ignorat"
+
+#: builtin.c:1030
+msgid "fatal: `L' is not permitted in POSIX awk formats"
+msgstr "fatal: `L' no està permès en els formats POSIX de awk"
+
+#: builtin.c:1043
+msgid "`h' is meaningless in awk formats; ignored"
+msgstr "`h' manca de significat en els formats awk; serà ignorat"
+
+#: builtin.c:1047
+msgid "fatal: `h' is not permitted in POSIX awk formats"
+msgstr "fatal: `h' no està permès en els formats POSIX de awk"
+
+#: builtin.c:1463
+#, c-format
+msgid "[s]printf: value %g is out of range for `%%%c' format"
+msgstr "[s]printf: el valor %g està fora de rang per al format `%%%c'"
+
+#: builtin.c:1561
+#, c-format
+msgid "ignoring unknown format specifier character `%c': no argument converted"
+msgstr ""
+"s'ignorarà el caràcter especificador de format `%c': no s'ha convertit cap "
+"argument"
+
+#: builtin.c:1566
+msgid "fatal: not enough arguments to satisfy format string"
+msgstr "fatal: no hi ha prou arguments per a satisfer el format d'una cadena"
+
+#: builtin.c:1568
+msgid "^ ran out for this one"
+msgstr "^ desbordament per a aquest"
+
+#: builtin.c:1575
+msgid "[s]printf: format specifier does not have control letter"
+msgstr "[s]printf: l'especificador de format no conté lletra de control"
+
+#: builtin.c:1578
+msgid "too many arguments supplied for format string"
+msgstr "s'han proporcionat masses arguments per a la cadena de format"
+
+#: builtin.c:1634
+msgid "sprintf: no arguments"
+msgstr "sprintf: sense arguments"
+
+#: builtin.c:1657 builtin.c:1668
msgid "printf: no arguments"
msgstr "printf: sense arguments"
-#: builtin.c:645
+#: builtin.c:1711
msgid "sqrt: received non-numeric argument"
msgstr "sqrt: s'ha rebut un argument no numèric"
-#: builtin.c:649
+#: builtin.c:1715
#, c-format
msgid "sqrt: called with negative argument %g"
msgstr "sqrt: cridat amb l'argument negatiu %g"
-#: builtin.c:673
-#, fuzzy, c-format
+#: builtin.c:1746
+#, c-format
msgid "substr: length %g is not >= 1"
-msgstr "substr: la longitud %g és <= 0"
+msgstr "substr: la longitud %g no és >= 1"
-#: builtin.c:675
-#, fuzzy, c-format
+#: builtin.c:1748
+#, c-format
msgid "substr: length %g is not >= 0"
-msgstr "substr: la longitud %g és <= 0"
+msgstr "substr: la longitud %g no és >= 0"
-#: builtin.c:682
+#: builtin.c:1755
#, c-format
msgid "substr: non-integer length %g will be truncated"
msgstr "substr: la longitud sobre un nombre no enter %g serà truncada"
-#: builtin.c:687
+#: builtin.c:1760
#, c-format
msgid "substr: length %g too big for string indexing, truncating to %g"
msgstr ""
+"substr: la llargada %g és massa gran per a la indexació de cadenes de "
+"caràcters, es truncarà a %g"
-#: builtin.c:699
+#: builtin.c:1772
#, c-format
msgid "substr: start index %g is invalid, using 1"
msgstr "substr: l'índex d'inici %g no és vàlid, usant 1"
-#: builtin.c:704
+#: builtin.c:1777
#, c-format
msgid "substr: non-integer start index %g will be truncated"
msgstr "substr: l'índex d'inici no enter %g serà truncat"
-#: builtin.c:729
+#: builtin.c:1802
msgid "substr: source string is zero length"
msgstr "substr: la cadena font és de longitud zero"
-#: builtin.c:745
-#, fuzzy, c-format
+#: builtin.c:1818
+#, c-format
msgid "substr: start index %g is past end of string"
-msgstr "substr: l'índex d'inici %d sobrepassa l'acabament de la cadena"
+msgstr "substr: l'índex d'inici %g sobrepassa l'acabament de la cadena"
-#: builtin.c:753
-#, fuzzy, c-format
+#: builtin.c:1826
+#, c-format
msgid ""
"substr: length %g at start index %g exceeds length of first argument (%lu)"
msgstr ""
-"substr: la longitud %d a l'índex d'inici %d excedeix la longitud del 1er "
-"argument (%d)"
+"substr: la longitud %g a l'índex d'inici %g excedeix la longitud del primer "
+"argument (%lu)"
-#: builtin.c:826
+#: builtin.c:1900
msgid "strftime: format value in PROCINFO[\"strftime\"] has numeric type"
-msgstr ""
+msgstr "strftime: el valor de format a PROCINFO[\"strftime\"] té tipus numèric"
-#: builtin.c:840
-#, fuzzy
+#: builtin.c:1923
msgid "strftime: received non-numeric second argument"
-msgstr "strftime: el segon argument rebut no és numèric"
+msgstr "strftime: s'ha rebut un segon argument no numèric"
+
+#: builtin.c:1927
+msgid "strftime: second argument less than 0 or too big for time_t"
+msgstr ""
+"strftime: el segon argument és més petit que 0 o massa gran per a time_t"
-#: builtin.c:847
-#, fuzzy
+#: builtin.c:1934
msgid "strftime: received non-string first argument"
msgstr "strftime: el primer argument rebut no és una cadena"
-#: builtin.c:853
+#: builtin.c:1941
msgid "strftime: received empty format string"
msgstr "strftime: s'ha rebut una cadena de format buida"
-#: builtin.c:919
+#: builtin.c:2007
msgid "mktime: received non-string argument"
msgstr "mktime: s'ha rebut un argument que no és una cadena"
-#: builtin.c:936
+#: builtin.c:2024
msgid "mktime: at least one of the values is out of the default range"
-msgstr ""
+msgstr "mktime: almenys un dels valors està forra del rang predeterminat"
-#: builtin.c:971
+#: builtin.c:2059
msgid "'system' function not allowed in sandbox mode"
-msgstr ""
+msgstr "la funció 'system' no es permet fora del mode entorn de proves"
-#: builtin.c:976
-#, fuzzy
+#: builtin.c:2064
msgid "system: received non-string argument"
msgstr "system: s'ha rebut un argument que no és una cadena"
-#: builtin.c:1031 eval.c:1411 eval.c:1936 eval.c:1949
+#: builtin.c:2184
#, c-format
-msgid "reference to uninitialized variable `%s'"
-msgstr "referència a una variable sense inicialitzar «%s»"
-
-#: builtin.c:1098
-#, fuzzy, c-format
msgid "reference to uninitialized field `$%d'"
-msgstr "referència a una variable sense inicialitzar «%s»"
+msgstr "referència a una variable sense inicialitzar `$%d'"
-#: builtin.c:1185
-#, fuzzy
+#: builtin.c:2271
msgid "tolower: received non-string argument"
msgstr "tolower: s'ha rebut un argument que no és una cadena"
-#: builtin.c:1219
-#, fuzzy
+#: builtin.c:2305
msgid "toupper: received non-string argument"
msgstr "toupper: s'ha rebut un argument que no és una cadena"
-#: builtin.c:1255
+#: builtin.c:2341 mpfr.c:672
msgid "atan2: received non-numeric first argument"
msgstr "atan2: el primer argument rebut no és numèric"
-#: builtin.c:1257
+#: builtin.c:2343 mpfr.c:674
msgid "atan2: received non-numeric second argument"
msgstr "atan2: el segon argument rebut no és numèric"
-#: builtin.c:1276
+#: builtin.c:2362
msgid "sin: received non-numeric argument"
msgstr "sin: s'ha rebut un argument que no és numèric"
-#: builtin.c:1292
+#: builtin.c:2378
msgid "cos: received non-numeric argument"
msgstr "cos: s'ha rebut un argument que no és numèric"
-#: builtin.c:1345
+#: builtin.c:2431 mpfr.c:1156
msgid "srand: received non-numeric argument"
msgstr "srand: s'ha rebut un argument que no és numèric"
-#: builtin.c:1376
+#: builtin.c:2462
msgid "match: third argument is not an array"
msgstr "match: el tercer argument no és una matriu"
-#: builtin.c:1883
-#, fuzzy
+#: builtin.c:2734
msgid "gensub: third argument of 0 treated as 1"
msgstr "gensub: el tercer argument de 0 és tractat com a 1"
-#: builtin.c:1923
+#: builtin.c:3030
msgid "lshift: received non-numeric first argument"
msgstr "lshift: el primer argument rebut no és numèric"
-#: builtin.c:1925
-#, fuzzy
+#: builtin.c:3032
msgid "lshift: received non-numeric second argument"
-msgstr "atan2: el segon argument rebut no és numèric"
+msgstr "lshift: el segon argument rebut no és numèric"
-#: builtin.c:1931
+#: builtin.c:3038
#, c-format
-msgid "lshift(%lf, %lf): negative values will give strange results"
-msgstr "lshift(%lf, %lf): els valors negatius donaran resultats estranys"
+msgid "lshift(%f, %f): negative values will give strange results"
+msgstr "lshift(%f, %f): els valors negatius donaran resultats estranys"
-#: builtin.c:1933
+#: builtin.c:3040
#, c-format
-msgid "lshift(%lf, %lf): fractional values will be truncated"
-msgstr "lshift(%lf, %lf): els valors fraccionaris sernn truncats"
+msgid "lshift(%f, %f): fractional values will be truncated"
+msgstr "lshift(%f, %f): els valors fraccionaris sernn truncats"
-#: builtin.c:1935
+#: builtin.c:3042
#, c-format
-msgid "lshift(%lf, %lf): too large shift value will give strange results"
+msgid "lshift(%f, %f): too large shift value will give strange results"
msgstr ""
-"lshift(%lf, %lf): un valor de desplaçament massa gran donarà resultats "
-"estranys"
+"lshift(%f, %f): un valor de desplaçament massa gran donarà resultats estranys"
-#: builtin.c:1960
+#: builtin.c:3067
msgid "rshift: received non-numeric first argument"
msgstr "rshift: el primer argument rebut no és numèric"
-#: builtin.c:1962
-#, fuzzy
+#: builtin.c:3069
msgid "rshift: received non-numeric second argument"
-msgstr "atan2: el segon argument rebut no és numèric"
+msgstr "rshift: el segon argument rebut no és numèric"
-#: builtin.c:1968
+#: builtin.c:3075
#, c-format
-msgid "rshift(%lf, %lf): negative values will give strange results"
-msgstr "rshift(%lf, %lf): els valors negatius donaran resultats estranys"
+msgid "rshift(%f, %f): negative values will give strange results"
+msgstr "rshift(%f, %f): els valors negatius donaran resultats estranys"
-#: builtin.c:1970
+#: builtin.c:3077
#, c-format
-msgid "rshift(%lf, %lf): fractional values will be truncated"
-msgstr "rshift(%lf, %lf): els valors fraccionaris seran truncats"
+msgid "rshift(%f, %f): fractional values will be truncated"
+msgstr "rshift(%f, %f): els valors fraccionaris seran truncats"
-#: builtin.c:1972
+#: builtin.c:3079
#, c-format
-msgid "rshift(%lf, %lf): too large shift value will give strange results"
+msgid "rshift(%f, %f): too large shift value will give strange results"
msgstr ""
-"rshift(%lf, %lf): un valor de desplaçament massa gran donarà resultats "
-"estranys"
+"rshift(%f, %f): un valor de desplaçament massa gran donarà resultats estranys"
-#: builtin.c:1997
-msgid "and: received non-numeric first argument"
-msgstr "and: el primer argument rebut no és numèric"
-
-#: builtin.c:1999
-#, fuzzy
-msgid "and: received non-numeric second argument"
-msgstr "atan2: el segon argument rebut no és numèric"
+#: builtin.c:3104 mpfr.c:968
+msgid "and: called with less than two arguments"
+msgstr "and: cridat amb menys de dos arguments"
-#: builtin.c:2005
+#: builtin.c:3109
#, c-format
-msgid "and(%lf, %lf): negative values will give strange results"
-msgstr "and(%lf, %lf): els valors negatius donaran resultats estranys"
+msgid "and: argument %d is non-numeric"
+msgstr "exp: l'argument %d no és numèric"
-#: builtin.c:2007
+#: builtin.c:3113
#, c-format
-msgid "and(%lf, %lf): fractional values will be truncated"
-msgstr "and(%lf, %lf): els valors fraccionaris seran truncats"
-
-#: builtin.c:2032
-msgid "or: received non-numeric first argument"
-msgstr "or: el primer argument rebut no és numèric"
+msgid "and: argument %d negative value %g will give strange results"
+msgstr "and: l'argument %d amb valor negatiu %g donarà resultats estranys"
-#: builtin.c:2034
-#, fuzzy
-msgid "or: received non-numeric second argument"
-msgstr "atan2: el segon argument rebut no és numèric"
+#: builtin.c:3136 mpfr.c:1000
+msgid "or: called with less than two arguments"
+msgstr "or: cridat amb menys de dos arguments"
-#: builtin.c:2040
+#: builtin.c:3141
#, c-format
-msgid "or(%lf, %lf): negative values will give strange results"
-msgstr "or(%lf, %lf): els valors negatius donaran resultats estranys"
+msgid "or: argument %d is non-numeric"
+msgstr "or: l'argument %d no és numèric"
-#: builtin.c:2042
+#: builtin.c:3145
#, c-format
-msgid "or(%lf, %lf): fractional values will be truncated"
-msgstr "or(%lf, %lf): els valors fraccionaris seran truncats"
-
-#: builtin.c:2070
-msgid "xor: received non-numeric first argument"
-msgstr "xor: el primer argument rebut no és numèric"
+msgid "or: argument %d negative value %g will give strange results"
+msgstr "or: l'argument %d amb valor negatiu %g donarà resultats estranys"
-#: builtin.c:2072
-#, fuzzy
-msgid "xor: received non-numeric second argument"
-msgstr "atan2: el segon argument rebut no és numèric"
+#: builtin.c:3167 mpfr.c:1031
+msgid "xor: called with less than two arguments"
+msgstr "xort: cridat amb menys de dos arguments"
-#: builtin.c:2078
+#: builtin.c:3173
#, c-format
-msgid "xor(%lf, %lf): negative values will give strange results"
-msgstr "xor(%lf, %lf): els valors negatius donaran resultats estranys"
+msgid "xor: argument %d is non-numeric"
+msgstr "xor: l'argument %d no és numèric"
-#: builtin.c:2080
+#: builtin.c:3177
#, c-format
-msgid "xor(%lf, %lf): fractional values will be truncated"
-msgstr "xor(%lf, %lf): els valors fraccionaris seran truncats"
+msgid "xor: argument %d negative value %g will give strange results"
+msgstr "xor: l'argument %d del valor negatiu %g donarà resultats estranys"
-#: builtin.c:2104 builtin.c:2110
+#: builtin.c:3202 mpfr.c:787
msgid "compl: received non-numeric argument"
msgstr "compl: s'ha rebut un argument que no és numèric"
-#: builtin.c:2112
+#: builtin.c:3208
#, c-format
-msgid "compl(%lf): negative value will give strange results"
-msgstr "compl(%lf): el valor negatiu donarà resultats estranys"
+msgid "compl(%f): negative value will give strange results"
+msgstr "compl(%f): el valor negatiu donarà resultats estranys"
-#: builtin.c:2114
+#: builtin.c:3210
#, c-format
-msgid "compl(%lf): fractional value will be truncated"
-msgstr "compl(%lf): el valor fraccionari serà truncat"
+msgid "compl(%f): fractional value will be truncated"
+msgstr "compl(%f): el valor fraccionari serà truncat"
-#: builtin.c:2283
+#: builtin.c:3379
#, c-format
msgid "dcgettext: `%s' is not a valid locale category"
-msgstr "dcgettext: «%s» no és una categoria local vàlida"
+msgstr "dcgettext: `%s' no és una categoria local vàlida"
+
+#: command.y:225
+#, c-format
+msgid "Type (g)awk statement(s). End with the command \"end\"\n"
+msgstr "Escriviu proposició(ns) g(awk). Termineu amb la instrucció \"end\"\n"
+
+#: command.y:289
+#, c-format
+msgid "invalid frame number: %d"
+msgstr "número invàlid de marc: %d"
+
+#: command.y:295
+#, c-format
+msgid "info: invalid option - \"%s\""
+msgstr "info: opció no vàlida - \"%s\""
+
+#: command.y:321
+#, c-format
+msgid "source \"%s\": already sourced."
+msgstr "source \"%s\": ja s'ha utilitzat."
+
+#: command.y:326
+#, c-format
+msgid "save \"%s\": command not permitted."
+msgstr "save \"%s\": ordre no permesa."
+
+#: command.y:339
+msgid "Can't use command `commands' for breakpoint/watchpoint commands"
+msgstr ""
+"No es pot usar l'ordre `commands' per a ordres de punt d'interrupció/"
+"inspecció"
+
+#: command.y:341
+msgid "no breakpoint/watchpoint has been set yet"
+msgstr "no s'ha establert encara cap punt d'interrupció/verificació"
+
+#: command.y:343
+msgid "invalid breakpoint/watchpoint number"
+msgstr "número de punt d'interrupció/inspecció no vàlid"
+
+#: command.y:348
+#, c-format
+msgid "Type commands for when %s %d is hit, one per line.\n"
+msgstr "Escriviu les ordres per a quan s'assoleix %s %d, una per línia.\n"
+
+#: command.y:350
+#, c-format
+msgid "End with the command \"end\"\n"
+msgstr "Termineu amb l'ordre \"end\"\n"
+
+#: command.y:357
+msgid "`end' valid only in command `commands' or `eval'"
+msgstr "`end' és vàlid sols a les ordres `commands' o `eval'"
+
+#: command.y:367
+msgid "`silent' valid only in command `commands'"
+msgstr "`silent' és vàlid sols a l'ordre `commands'"
+
+#: command.y:373
+#, c-format
+msgid "trace: invalid option - \"%s\""
+msgstr "traç: opció no vàlida - \"%s\""
+
+#: command.y:387
+msgid "condition: invalid breakpoint/watchpoint number"
+msgstr "condició: número de punt d'interrupció/inspecció no vàlid"
+
+#: command.y:449
+msgid "argument not a string"
+msgstr "l'argument no és una cadena de caràcters"
+
+#: command.y:459 command.y:464
+#, c-format
+msgid "option: invalid parameter - \"%s\""
+msgstr "opció: paràmetre no vàlid - \"%s\""
+
+#: command.y:474
+#, c-format
+msgid "no such function - \"%s\""
+msgstr "no existeix aquesta funció - \"%s\""
+
+#: command.y:531
+#, c-format
+msgid "enable: invalid option - \"%s\""
+msgstr "enable: opció no vàlida - \"%s\""
+
+#: command.y:597
+#, c-format
+msgid "invalid range specification: %d - %d"
+msgstr "especificació no vàlida de rang: %d - %d"
+
+#: command.y:659
+msgid "non-numeric value for field number"
+msgstr "valor no numèric per al número de camp"
+
+#: command.y:680 command.y:687
+msgid "non-numeric value found, numeric expected"
+msgstr "s'ha trobat un valor no numèric, s'esperava un valor numèric"
+
+#: command.y:712 command.y:718
+msgid "non-zero integer value"
+msgstr "valor enter no zero"
+
+#: command.y:817
+msgid ""
+"backtrace [N] - print trace of all or N innermost (outermost if N < 0) "
+"frames."
+msgstr ""
+"backtrace [N] - imprimeix la traça de tot els N marcs interiors (exteriors "
+"si N < 0)."
+
+#: command.y:819
+msgid ""
+"break [[filename:]N|function] - set breakpoint at the specified location."
+msgstr ""
+"break [[fitxer:]N|funció] - estableix el punt d'interrupció a la ubicació "
+"especificada."
+
+#: command.y:821
+msgid "clear [[filename:]N|function] - delete breakpoints previously set."
+msgstr ""
+"clear [[fitxer:]N|funció] - suprimeix els punts establerts prèviament."
+
+#: command.y:823
+msgid ""
+"commands [num] - starts a list of commands to be executed at a "
+"breakpoint(watchpoint) hit."
+msgstr ""
+"commands [num] - inicia una llista d'ordres a executar quan s'arribi a un "
+"punt d'interrupció/inspecció."
+
+#: command.y:825
+msgid "condition num [expr] - set or clear breakpoint or watchpoint condition."
+msgstr ""
+"condition num [expr] - estableix o neteja una condició de punt d'interrupció "
+"o d'inspecció."
+
+#: command.y:827
+msgid "continue [COUNT] - continue program being debugged."
+msgstr "continue [RECOMPTE] - continua el programa que s'està depurant."
+
+#: command.y:829
+msgid "delete [breakpoints] [range] - delete specified breakpoints."
+msgstr ""
+"delete [punts d'interrupció] [rang] - esborra els punts d'interrupció "
+"especificats."
+
+#: command.y:831
+msgid "disable [breakpoints] [range] - disable specified breakpoints."
+msgstr ""
+"disable [punts d'interrupció] [rang] - deshabilita els punts d'interrupció "
+"especificats."
+
+#: command.y:833
+msgid "display [var] - print value of variable each time the program stops."
+msgstr ""
+"display [var] - imprimeix el valor de la variable cada cop que el programa "
+"s'atura"
+
+#: command.y:835
+msgid "down [N] - move N frames down the stack."
+msgstr "down [N] - mou N marcs cap a baix a la pila."
+
+#: command.y:837
+msgid "dump [filename] - dump instructions to file or stdout."
+msgstr ""
+"dump [filename] - aboca les instruccions a un fitxer o a la sortida "
+"estàndard."
+
+#: command.y:839
+msgid "enable [once|del] [breakpoints] [range] - enable specified breakpoints."
+msgstr ""
+"enable [once|del] [punts d'interrupció] [rang] - habilita els punts "
+"d'interrupció especificats."
+
+#: command.y:841
+msgid "end - end a list of commands or awk statements."
+msgstr "end - finalitza una llista de ordres o declaracions awk."
+
+#: command.y:843
+msgid "eval stmt|[p1, p2, ...] - evaluate awk statement(s)."
+msgstr "eval stmt|[p1, p2, ...] - avalua la(es) declaració(ns) awk."
+
+#: command.y:845
+msgid "finish - execute until selected stack frame returns."
+msgstr ""
+"finish - executa fins que hi hagi un retorn del marc de pila seleccionat."
+
+#: command.y:847
+msgid "frame [N] - select and print stack frame number N."
+msgstr "frame [N] - selecciona i imprimeix el marc de pila amb número N."
+
+#: command.y:849
+msgid "help [command] - print list of commands or explanation of command."
+msgstr "help [ordre] - imprimeix una llista d'ordres o una explica de l'ordre."
+
+#: command.y:851
+msgid "ignore N COUNT - set ignore-count of breakpoint number N to COUNT."
+msgstr ""
+"ignore N RECOMPTE - estableix ignore-count del punt d'interrupció número N "
+"fins RECOMPTE."
+
+#: command.y:853
+msgid ""
+"info topic - source|sources|variables|functions|break|frame|args|locals|"
+"display|watch."
+msgstr ""
+"info topic - source|sources|variables|functions|break|frame|args|locals|"
+"display|watch."
+
+#: command.y:855
+msgid "list [-|+|[filename:]lineno|function|range] - list specified line(s)."
+msgstr ""
+"list [-|+|[fitxer:]número-de-línia|funció|rang] - fes una llista la(es) "
+"línia(es) especificada(es)."
+
+#: command.y:857
+msgid "next [COUNT] - step program, proceeding through subroutine calls."
+msgstr ""
+"next [RECOMPTE] - avança el programa pas per pas, tot procedint a través de "
+"les crides de subrutines."
+
+#: command.y:859
+msgid ""
+"nexti [COUNT] - step one instruction, but proceed through subroutine calls."
+msgstr ""
+"nexti [RECOMPTE] - avança una instrucció, però procedeix a través de crides "
+"de subrutines."
+
+#: command.y:861
+msgid "option [name[=value]] - set or display debugger option(s)."
+msgstr ""
+"option [nom[=valor]] - estableix o mostra la(es) opció(ns) del depurador."
+
+#: command.y:863
+msgid "print var [var] - print value of a variable or array."
+msgstr "print var [var] - imprimeix el valor de la variable o matriu."
+
+#: command.y:865
+msgid "printf format, [arg], ... - formatted output."
+msgstr "printf format, [arg], ... - sortida amb format."
+
+#: command.y:867
+msgid "quit - exit debugger."
+msgstr "quit - surt del depurador."
+
+#: command.y:869
+msgid "return [value] - make selected stack frame return to its caller."
+msgstr ""
+"return [valor] - fes que el marc seleccionat de pila retorni a l'element que "
+"l'ha cridat."
+
+#: command.y:871
+msgid "run - start or restart executing program."
+msgstr "run - inicia o reinicia el programa que s'està executant."
+
+#: command.y:874
+msgid "save filename - save commands from the session to file."
+msgstr "save filename - desa les ordres de la sessió a un fitxer."
+
+#: command.y:877
+msgid "set var = value - assign value to a scalar variable."
+msgstr "set var = valor - assigna un valor a una variable escalar."
+
+#: command.y:879
+msgid ""
+"silent - suspends usual message when stopped at a breakpoint/watchpoint."
+msgstr ""
+"silent - suspèn els missatges habituals quan s'autra a un punt d'interrupció/"
+"inspecció."
+
+#: command.y:881
+msgid "source file - execute commands from file."
+msgstr "source file - executa una ordre des d'un fitxer."
+
+#: command.y:883
+msgid "step [COUNT] - step program until it reaches a different source line."
+msgstr ""
+"step [RECOMPTE] - avança pas per pas pel programa fins que arribi a una "
+"línia diferent de la font."
+
+#: command.y:885
+msgid "stepi [COUNT] - step one instruction exactly."
+msgstr "stepi [RECOMPTE] - avança exactament una instrucció."
+
+#: command.y:887
+msgid "tbreak [[filename:]N|function] - set a temporary breakpoint."
+msgstr ""
+"tbreak [[fitxer:]N|funció] - estableix un punt temporari d'interrupció."
+
+#: command.y:889
+msgid "trace on|off - print instruction before executing."
+msgstr "trace on|off - imprimeix la instrucció abans d'executar-la."
+
+#: command.y:891
+msgid "undisplay [N] - remove variable(s) from automatic display list."
+msgstr ""
+"undisplay [N] - remou la(es) variable(s) de la llista automàtica "
+"visualització."
+
+#: command.y:893
+msgid ""
+"until [[filename:]N|function] - execute until program reaches a different "
+"line or line N within current frame."
+msgstr ""
+"until [[fitxer:]N|funció] - executa fins que el programa arribi a una línia "
+"diferent a la línia N dins del marc actual."
+
+#: command.y:895
+msgid "unwatch [N] - remove variable(s) from watch list."
+msgstr "unwatch [N] - remou la(es) variable(s) de la llista d'inspecció."
+
+#: command.y:897
+msgid "up [N] - move N frames up the stack."
+msgstr "up [N] - mou-te N marcs cap a dalt de la pila."
+
+#: command.y:899
+msgid "watch var - set a watchpoint for a variable."
+msgstr "watch var - estableix un punt d'inspecció per a una variable."
+
+#: command.y:1011 debug.c:401 msg.c:135
+#, c-format
+msgid "error: "
+msgstr "error: "
+
+#: command.y:1051
+#, c-format
+msgid "can't read command (%s)\n"
+msgstr "no es pot llegir l'ordre (%s)\n"
+
+#: command.y:1065
+#, c-format
+msgid "can't read command (%s)"
+msgstr "no es pot llegir l'ordre (%s)"
+
+#: command.y:1116
+msgid "invalid character in command"
+msgstr "caràcter no vàlida en la instucció"
+
+#: command.y:1152
+#, c-format
+msgid "unknown command - \"%.*s\", try help"
+msgstr "ordre desconeguda - \"%.*s\", prova l'ajuda"
+
+#: command.y:1222
+#, c-format
+msgid "%s"
+msgstr "%s"
+
+#: command.y:1284
+msgid "invalid character"
+msgstr "caràcter no vàlid"
+
+#: command.y:1455
+#, c-format
+msgid "undefined command: %s\n"
+msgstr "ordre no definida: %s\n"
+
+#: debug.c:252
+msgid "set or show the number of lines to keep in history file."
+msgstr ""
+"estableix o mostra el número de línies a mantenir al fitxer d'història."
+
+#: debug.c:254
+msgid "set or show the list command window size."
+msgstr "estableix o mostra la mida de la finestra de llista d'ordres."
+
+#: debug.c:256
+msgid "set or show gawk output file."
+msgstr "estableix o mostra el fitxer de sortida gawk."
+
+#: debug.c:258
+msgid "set or show debugger prompt."
+msgstr "estableix o mostra l'indicador del depurador."
+
+#: debug.c:260
+msgid "(un)set or show saving of command history (value=on|off)."
+msgstr ""
+"estableix(anul·la) o mostra el desament de la història d'ordres (valor=on|"
+"off)."
+
+#: debug.c:262
+msgid "(un)set or show saving of options (value=on|off)."
+msgstr "estableix(anul·la) o mostra el desament d'opcions (valor=on|off)."
+
+#: debug.c:264
+msgid "(un)set or show instruction tracing (value=on|off)."
+msgstr ""
+"estableix(anul·la) o mostra el seguiment d'instruccions (valor=on|off)."
+
+#: debug.c:345
+msgid "program not running."
+msgstr "el programa no s'està executant."
+
+#: debug.c:448 debug.c:606
+#, c-format
+msgid "can't read source file `%s' (%s)"
+msgstr "no es pot llegir el fitxer font `%s' (%s)"
+
+#: debug.c:453
+#, c-format
+msgid "source file `%s' is empty.\n"
+msgstr "el fitxer font `%s' està buit\n"
+
+#: debug.c:480
+msgid "no current source file."
+msgstr "no hi ha un fitxer font."
+
+#: debug.c:505
+#, c-format
+msgid "cannot find source file named `%s' (%s)"
+msgstr "no es pot trobar el fitxer font `%s' (%s)"
+
+#: debug.c:529
+#, c-format
+msgid "WARNING: source file `%s' modified since program compilation.\n"
+msgstr ""
+"ADVERTIMENT: el fitxer font `%s' s'ha modificat des de la compilació del "
+"programa.\n"
+
+#: debug.c:551
+#, c-format
+msgid "line number %d out of range; `%s' has %d lines"
+msgstr "línia número %d fora de rang; `%s' té %d línies"
+
+#: debug.c:611
+#, c-format
+msgid "unexpected eof while reading file `%s', line %d"
+msgstr ""
+"final de fitxer no esperat quan s'estava llegint el fitxer `%s', línia %d"
+
+#: debug.c:620
+#, c-format
+msgid "source file `%s' modified since start of program execution"
+msgstr ""
+"el fitxer font `%s' s'ha modificat des de l'inici de l'execució del programa"
+
+#: debug.c:732
+#, c-format
+msgid "Current source file: %s\n"
+msgstr "Fitxer font actual: %s\n"
+
+#: debug.c:733
+#, c-format
+msgid "Number of lines: %d\n"
+msgstr "Nombre de línies: %d\n"
+
+#: debug.c:740
+#, c-format
+msgid "Source file (lines): %s (%d)\n"
+msgstr "Fitxer font (línies): %s (%d)\n"
+
+#: debug.c:754
+msgid ""
+"Number Disp Enabled Location\n"
+"\n"
+msgstr ""
+"Ubicació habilitada per número disp\n"
+"\n"
+
+#: debug.c:765
+#, c-format
+msgid "\tno of hits = %ld\n"
+msgstr "\tnúmero de accessos = %ld\n"
+
+#: debug.c:767
+#, c-format
+msgid "\tignore next %ld hit(s)\n"
+msgstr "\tignora el(s) pròxim(s) %ld accés(sos)\n"
+
+#: debug.c:769 debug.c:909
+#, c-format
+msgid "\tstop condition: %s\n"
+msgstr "\tcondició d'aturada: %s\n"
+
+#: debug.c:771 debug.c:911
+msgid "\tcommands:\n"
+msgstr "\tordres:\n"
+
+#: debug.c:793
+#, c-format
+msgid "Current frame: "
+msgstr "Marc actual: "
+
+#: debug.c:796
+#, c-format
+msgid "Called by frame: "
+msgstr "Cridat per marc: "
+
+#: debug.c:800
+#, c-format
+msgid "Caller of frame: "
+msgstr "Cridador de marc: "
+
+#: debug.c:818
+#, c-format
+msgid "None in main().\n"
+msgstr "Cap a main().\n"
+
+#: debug.c:848
+msgid "No arguments.\n"
+msgstr "Sense arguments.\n"
+
+#: debug.c:849
+msgid "No locals.\n"
+msgstr "No hi ha locals.\n"
+
+#: debug.c:857
+msgid ""
+"All defined variables:\n"
+"\n"
+msgstr ""
+"Totes les variables definides:\n"
+"\n"
+
+#: debug.c:867
+msgid ""
+"All defined functions:\n"
+"\n"
+msgstr ""
+"Totes les funcions definides:\n"
+"\n"
+
+#: debug.c:886
+msgid ""
+"Auto-display variables:\n"
+"\n"
+msgstr ""
+"Mostra automàticament les variables:\n"
+"\n"
+
+#: debug.c:889
+msgid ""
+"Watch variables:\n"
+"\n"
+msgstr ""
+"Inspecciona les variables:\n"
+"\n"
+
+#: debug.c:1029
+#, c-format
+msgid "no symbol `%s' in current context\n"
+msgstr "no hi ha el símbol `%s' al context actual\n"
+
+#: debug.c:1041 debug.c:1427
+#, c-format
+msgid "`%s' is not an array\n"
+msgstr "`%s' no és una matriu\n"
+
+#: debug.c:1055
+#, c-format
+msgid "$%ld = uninitialized field\n"
+msgstr "$%ld = camp sense inicialitzar\n"
+
+#: debug.c:1076
+#, c-format
+msgid "array `%s' is empty\n"
+msgstr "la matriu `%s' està buida\n"
+
+#: debug.c:1119 debug.c:1171
+#, c-format
+msgid "[\"%s\"] not in array `%s'\n"
+msgstr "[\"%s\"] no està a la matriu `%s'\n"
+
+#: debug.c:1175
+#, c-format
+msgid "`%s[\"%s\"]' is not an array\n"
+msgstr "`%s[\"%s\"]' no és una matriu\n"
+
+#: debug.c:1236 debug.c:4964
+#, c-format
+msgid "`%s' is not a scalar variable"
+msgstr "`%s' no és una variable escalar"
+
+#: debug.c:1258 debug.c:4994
+#, c-format
+msgid "attempt to use array `%s[\"%s\"]' in a scalar context"
+msgstr "s'ha intentat usar la matriu `%s[\"%s\"]' en un context escalar"
+
+#: debug.c:1280 debug.c:5005
+#, c-format
+msgid "attempt to use scalar `%s[\"%s\"]' as array"
+msgstr "s'ha intentat usar la dada escalar `%s[\"%s\"]' com a una matriu"
+
+#: debug.c:1423
+#, c-format
+msgid "`%s' is a function"
+msgstr "`%s' és una funció"
+
+#: debug.c:1465
+#, c-format
+msgid "watchpoint %d is unconditional\n"
+msgstr "el punt d'inspecció %d és incondicional\n"
+
+#: debug.c:1499
+#, c-format
+msgid "No display item numbered %ld"
+msgstr "No hi ha un element de visualització numerat %ld"
+
+#: debug.c:1502
+#, c-format
+msgid "No watch item numbered %ld"
+msgstr "No hi ha un element d'inspecció numerat %ld"
+
+#: debug.c:1528
+#, c-format
+msgid "%d: [\"%s\"] not in array `%s'\n"
+msgstr "%d: [\"%s\"] no està a la matriu `%s'\n"
+
+#: debug.c:1767
+msgid "attempt to use scalar value as array"
+msgstr "s'ha intentat usar una dada escalar com a una matriu"
+
+#: debug.c:1856
+#, c-format
+msgid "Watchpoint %d deleted because parameter is out of scope.\n"
+msgstr ""
+"El punt d'inspecció %d s'ha esborrat perquè el paràmetre està fora d'abast.\n"
+
+#: debug.c:1867
+#, c-format
+msgid "Display %d deleted because parameter is out of scope.\n"
+msgstr "La vista %d s'ha suprimit perquè el paràmetre està fora de l'abast.\n"
+
+#: debug.c:1900
+#, c-format
+msgid " in file `%s', line %d\n"
+msgstr "al fitxer `%s', línia %d\n"
+
+#: debug.c:1921
+#, c-format
+msgid " at `%s':%d"
+msgstr " a `%s':%d"
+
+#: debug.c:1937 debug.c:2000
+#, c-format
+msgid "#%ld\tin "
+msgstr "#%ld\ten "
+
+#: debug.c:1974
+#, c-format
+msgid "More stack frames follow ...\n"
+msgstr "Segueixen més marcs de pila ...\n"
+
+#: debug.c:2017
+msgid "invalid frame number"
+msgstr "número no vàlid de rang"
+
+#: debug.c:2200
+#, c-format
+msgid "Note: breakpoint %d (enabled, ignore next %ld hits), also set at %s:%d"
+msgstr ""
+"Nota: el punt d'interrupció %d (habilitat, ignora els %ld accessos "
+"següents), també s'ha establert a %s:%d"
+
+#: debug.c:2207
+#, c-format
+msgid "Note: breakpoint %d (enabled), also set at %s:%d"
+msgstr ""
+"Nota: el punt d'interrupció %d (habilitat), també s'ha establert a %s:%d"
+
+#: debug.c:2214
+#, c-format
+msgid "Note: breakpoint %d (disabled, ignore next %ld hits), also set at %s:%d"
+msgstr ""
+"Nota: el punt d'interrupció %d (deshabilitat, ignora els %ld accessos "
+"següents), també s'ha establert a %s:%d"
+
+#: debug.c:2221
+#, c-format
+msgid "Note: breakpoint %d (disabled), also set at %s:%d"
+msgstr ""
+"Nota: el punt d'interrupció %d (deshabilitat), també s'ha establert a %s:%d"
+
+#: debug.c:2238
+#, c-format
+msgid "Breakpoint %d set at file `%s', line %d\n"
+msgstr "Punt d'interrupció %d establert al fitxer `%s', línia %d\n"
+
+#: debug.c:2340
+#, c-format
+msgid "Can't set breakpoint in file `%s'\n"
+msgstr "No es pot establir el punt d'interrupció al fitxer `%s'\n"
+
+#: debug.c:2369 debug.c:2492 debug.c:3350
+#, c-format
+msgid "line number %d in file `%s' out of range"
+msgstr "el número de línia %d al fitxer `%s' està fora de rang"
+
+#: debug.c:2373
+#, c-format
+msgid "Can't find rule!!!\n"
+msgstr "No es pot trobar la regla!!!\n"
+
+#: debug.c:2375
+#, c-format
+msgid "Can't set breakpoint at `%s':%d\n"
+msgstr "No es pot establir el punt d'interrupció a `%s':%d\n"
+
+#: debug.c:2387
+#, c-format
+msgid "Can't set breakpoint in function `%s'\n"
+msgstr "No est pot establir el punt d'interrupció a la funció `%s'\n"
+
+#: debug.c:2403
+#, c-format
+msgid "breakpoint %d set at file `%s', line %d is unconditional\n"
+msgstr ""
+"el punt d'interrupció %d establert al fitxer `%s', línia %d és "
+"incondicional\n"
+
+#: debug.c:2508 debug.c:2530
+#, c-format
+msgid "Deleted breakpoint %d"
+msgstr "Punt interrupció suprimit %d"
+
+#: debug.c:2514
+#, c-format
+msgid "No breakpoint(s) at entry to function `%s'\n"
+msgstr "No hi ha punt(s) d'interrupció a l'entrada a la funció `%s'\n"
+
+#: debug.c:2541
+#, c-format
+msgid "No breakpoint at file `%s', line #%d\n"
+msgstr "No hi ha un punt d'interrupció al fitxer `%s', línia #%d\n"
+
+#: debug.c:2596 debug.c:2637 debug.c:2657 debug.c:2700
+msgid "invalid breakpoint number"
+msgstr "número no vàlid de punt d'interrupció"
+
+#: debug.c:2612
+msgid "Delete all breakpoints? (y or n) "
+msgstr "Suprimir tots els punts d'interrupció (s o n) "
+
+#: debug.c:2613 debug.c:2923 debug.c:2976
+msgid "y"
+msgstr "s"
+
+#: debug.c:2662
+#, c-format
+msgid "Will ignore next %ld crossing(s) of breakpoint %d.\n"
+msgstr ""
+"S'ignoraran el(s) %ld creuament(s) següent(s) del punt d'interrupció %d.\n"
+
+#: debug.c:2666
+#, c-format
+msgid "Will stop next time breakpoint %d is reached.\n"
+msgstr ""
+"S'aturarà la pròxima vegada que s'assoleixi el punt d'interrupció %d.\n"
+
+#: debug.c:2783
+#, c-format
+msgid "Can only debug programs provided with the `-f' option.\n"
+msgstr "Sols es poden depurar programes que tenen l'opció `-f'.\n"
+
+#: debug.c:2908
+#, c-format
+msgid "Failed to restart debugger"
+msgstr "No s'ha pogut reiniciar el depurador."
+
+#: debug.c:2922
+msgid "Program already running. Restart from beginning (y/n)? "
+msgstr "El programa ja està corrent. S'ha de reiniciar des del principi (s/n)?"
+
+#: debug.c:2926
+#, c-format
+msgid "Program not restarted\n"
+msgstr "No s'ha reiniciat el programa\n"
+
+#: debug.c:2936
+#, c-format
+msgid "error: cannot restart, operation not allowed\n"
+msgstr "error: no es pot reiniciar, l'operació no està permesa\n"
+
+#: debug.c:2942
+#, c-format
+msgid "error (%s): cannot restart, ignoring rest of the commands\n"
+msgstr "error (%s): no es pot reiniciar, s'ignoraran la resta de les ordres\n"
+
+#: debug.c:2950
+#, c-format
+msgid "Starting program: \n"
+msgstr "S'està iniciant el programa: \n"
+
+#: debug.c:2959
+#, c-format
+msgid "Program exited %s with exit value: %d\n"
+msgstr "El programa ha tingut la sortida %s amb el valor de sortida: %d\n"
+
+#: debug.c:2975
+msgid "The program is running. Exit anyway (y/n)? "
+msgstr "El programa s'està executant. Voleu sortir tot i això (s/n)? "
+
+#: debug.c:3010
+#, c-format
+msgid "Not stopped at any breakpoint; argument ignored.\n"
+msgstr "No s'ha detingut a cap punt d'interrupció; s'ignorarà l'argument.\n"
+
+#: debug.c:3015
+#, c-format
+msgid "invalid breakpoint number %d."
+msgstr "número no vàlid de punt d'interrupció %d."
+
+#: debug.c:3020
+#, c-format
+msgid "Will ignore next %ld crossings of breakpoint %d.\n"
+msgstr "S'ignoraran els pròxims %ld creuaments de punt d'interrupció %d.\n"
+
+#: debug.c:3207
+#, c-format
+msgid "'finish' not meaningful in the outermost frame main()\n"
+msgstr "'finish' no té significat al marc més extern main()\n"
+
+#: debug.c:3212
+#, c-format
+msgid "Run till return from "
+msgstr "Executa fins retornar de "
+
+#: debug.c:3255
+#, c-format
+msgid "'return' not meaningful in the outermost frame main()\n"
+msgstr "'return' no té significat al marc més extern main()\n"
+
+#: debug.c:3369
+#, c-format
+msgid "Can't find specified location in function `%s'\n"
+msgstr "No es pot trobar la ubicació especificada a la funció `%s'\n"
+
+#: debug.c:3377
+#, c-format
+msgid "invalid source line %d in file `%s'"
+msgstr "línia %d no vàlida de font al fitxer `%s'"
+
+#: debug.c:3392
+#, c-format
+msgid "Can't find specified location %d in file `%s'\n"
+msgstr "No es pot trobar la ubicació especificada %d al fitxer `%s'\n"
+
+#: debug.c:3424
+#, c-format
+msgid "element not in array\n"
+msgstr "l'element no està a la matriu\n"
+
+#: debug.c:3424
+#, c-format
+msgid "untyped variable\n"
+msgstr "variable sense tipus\n"
+
+#: debug.c:3466
+#, c-format
+msgid "Stopping in %s ...\n"
+msgstr "S'està aturant a %s ...\n"
+
+#: debug.c:3543
+#, c-format
+msgid "'finish' not meaningful with non-local jump '%s'\n"
+msgstr "'finish' no té significat amb salt no local '%s'\n"
+
+#: debug.c:3550
+#, c-format
+msgid "'until' not meaningful with non-local jump '%s'\n"
+msgstr "'until' no té significat amb salt no local '%s'\n"
+
+#: debug.c:4185
+msgid "\t------[Enter] to continue or q [Enter] to quit------"
+msgstr "\t------[Intro] per continuar o q [Intro] per sortir------"
+
+#: debug.c:4186
+msgid "q"
+msgstr "q"
+
+#: debug.c:5001
+#, c-format
+msgid "[\"%s\"] not in array `%s'"
+msgstr "[\"%s\"] no està a la matriu `%s'"
+
+#: debug.c:5207
+#, c-format
+msgid "sending output to stdout\n"
+msgstr "s'està enviant la sortida a la sortida estàndard\n"
+
+#: debug.c:5247
+msgid "invalid number"
+msgstr "número no vàlid"
+
+#: debug.c:5381
+#, c-format
+msgid "`%s' not allowed in current context; statement ignored"
+msgstr "`%s' no està permès al context actual; s'ignorarà la declaració"
+
+#: debug.c:5389
+msgid "`return' not allowed in current context; statement ignored"
+msgstr "`return' no està permès al context actual; s'ignorarà la declaració"
+
+#: debug.c:5590
+#, c-format
+msgid "No symbol `%s' in current context"
+msgstr "No hi ha un símbol `%s' al context actual"
+
+#: dfa.c:1118 dfa.c:1121 dfa.c:1142 dfa.c:1150 dfa.c:1162 dfa.c:1197
+#: dfa.c:1206 dfa.c:1209 dfa.c:1214 dfa.c:1228 dfa.c:1275
+msgid "unbalanced ["
+msgstr "[ sense aparellar"
+
+#: dfa.c:1174
+msgid "invalid character class"
+msgstr "classe no vàlida de caràcters"
+
+#: dfa.c:1316
+msgid "character class syntax is [[:space:]], not [:space:]"
+msgstr "la sintaxi de la classe de caràcters és [[:espai:]], no [:espai:]"
-#: eval.c:410
+#: dfa.c:1366
+msgid "unfinished \\ escape"
+msgstr "seqüència d'escapada \\ sense finalitzar"
+
+#: dfa.c:1513 regcomp.c:161
+msgid "Invalid content of \\{\\}"
+msgstr "Contingut no vàlid de \\{\\}"
+
+#: dfa.c:1516 regcomp.c:176
+msgid "Regular expression too big"
+msgstr "L'expressió regular és massa gran"
+
+#: dfa.c:1936
+msgid "unbalanced ("
+msgstr "( sense aparellar"
+
+#: dfa.c:2062
+msgid "no syntax specified"
+msgstr "no s'ha especificat una sintaxi"
+
+#: dfa.c:2070
+msgid "unbalanced )"
+msgstr ") sense aparellar"
+
+#: eval.c:394
#, c-format
msgid "unknown nodetype %d"
-msgstr "tipo de node %d desconegut"
+msgstr "tipus de node %d desconegut"
-#: eval.c:421 eval.c:435
-#, fuzzy, c-format
+#: eval.c:405 eval.c:419
+#, c-format
msgid "unknown opcode %d"
-msgstr "tipo de node %d desconegut"
+msgstr "opcode %d desconegut"
-#: eval.c:432
+#: eval.c:416
#, c-format
msgid "opcode %s not an operator or keyword"
-msgstr ""
+msgstr "l'opcode %s no és un operador o una paraula clau"
-#: eval.c:485
+#: eval.c:472
msgid "buffer overflow in genflags2str"
msgstr "desbordament del cau temporal en genflags2str"
-#: eval.c:696
+#: eval.c:675
#, c-format
msgid ""
"\n"
@@ -897,870 +1915,1292 @@ msgid ""
"\n"
msgstr ""
"\n"
-"\t# Pila de Crides a les Funcions:\n"
+"\t# Pila de crida a les funcions:\n"
"\n"
-#: eval.c:723
+#: eval.c:704
msgid "`IGNORECASE' is a gawk extension"
-msgstr "«IGNORECASE» és una extensió de gawk"
+msgstr "`IGNORECASE' és una extensió de gawk"
-#: eval.c:752
+#: eval.c:736
msgid "`BINMODE' is a gawk extension"
-msgstr "«BINMODE» és una extensió de gawk"
+msgstr "`BINMODE' és una extensió de gawk"
-#: eval.c:810
+#: eval.c:794
#, c-format
msgid "BINMODE value `%s' is invalid, treated as 3"
-msgstr ""
+msgstr "El valor BINMODE `%s' no és vàlid, es tractarà com 3"
-#: eval.c:900
+#: eval.c:885
#, c-format
msgid "bad `%sFMT' specification `%s'"
-msgstr "«%sFMT» especificació errònia «%s»"
+msgstr "`%sFMT' especificació errònia `%s'"
-#: eval.c:978
+#: eval.c:969
msgid "turning off `--lint' due to assignment to `LINT'"
-msgstr "desactivant «--lint» degut a una assignació a «LINT»"
-
-#: eval.c:1247
-#, fuzzy
-msgid "sorted array traversal is a gawk extension"
-msgstr "«delete array» és una extensió de gawk"
-
-#: eval.c:1291
-msgid "`PROCINFO[\"sorted_in\"]' value is not recognized"
-msgstr ""
+msgstr "desactivant `--lint' degut a una assignació a `LINT'"
-#: eval.c:1373 eval.c:1923
+#: eval.c:1147
#, c-format
-msgid "can't use function name `%s' as variable or array"
-msgstr "no es pot usar el nom de la funció «%s» com a variable o matriu"
-
-#: eval.c:1401
-msgid "assignment is not allowed to result of builtin function"
-msgstr ""
-"no es permet l'assignació per a obtindre un resultat d'una funció interna"
+msgid "reference to uninitialized argument `%s'"
+msgstr "referència a un argument sense inicialitzar `%s'"
-#: eval.c:1410 eval.c:1935 eval.c:1948
+#: eval.c:1148
#, c-format
-msgid "reference to uninitialized argument `%s'"
-msgstr "referència a un argument sense inicialitzar «%s»"
+msgid "reference to uninitialized variable `%s'"
+msgstr "referència a una variable sense inicialitzar `%s'"
-#: eval.c:1429
+#: eval.c:1166
msgid "attempt to field reference from non-numeric value"
msgstr "s'ha intentat una referència de camp a partir d'un valor no numèric"
-#: eval.c:1431
-#, fuzzy
+#: eval.c:1168
msgid "attempt to field reference from null string"
-msgstr "s'ha intentat una referència a partir d'una cadena nul·la"
+msgstr "s'ha intentat entrar una referència a partir d'una cadena nul·la"
-#: eval.c:1437
-#, fuzzy, c-format
+#: eval.c:1176
+#, c-format
msgid "attempt to access field %ld"
-msgstr "s'ha intentat accedir al camp %d"
+msgstr "s'ha intentat accedir al camp %ld"
-#: eval.c:1446
-#, fuzzy, c-format
+#: eval.c:1185
+#, c-format
msgid "reference to uninitialized field `$%ld'"
-msgstr "referència a una variable sense inicialitzar «%s»"
+msgstr "referència a una variable sense inicialitzar `$%ld'"
-#: eval.c:1508
+#: eval.c:1272
#, c-format
msgid "function `%s' called with more arguments than declared"
-msgstr "s'ha cridat a la funció «%s» amb més arguments dels declarats"
+msgstr "s'ha cridat a la funció `%s' amb més arguments dels declarats"
-#: eval.c:1663
+#: eval.c:1473
#, c-format
msgid "unwind_stack: unexpected type `%s'"
-msgstr ""
+msgstr "unwind_stack: tipus no esperat `%s'"
-#: eval.c:1747
+#: eval.c:1569
msgid "division by zero attempted in `/='"
-msgstr "s'ha intentat una divisió per zero en «/=»"
+msgstr "s'ha intentat una divisió per zero en `/='"
-#: eval.c:1754
+#: eval.c:1576
#, c-format
msgid "division by zero attempted in `%%='"
-msgstr "s'ha intentat una divisió per zero en «%%=»"
+msgstr "s'ha intentat una divisió per zero en `%%='"
-#: eval.c:2057
-msgid "assignment used in conditional context"
-msgstr "assignació usada en un context condicional"
+#: ext.c:89 ext.c:171
+msgid "extensions are not allowed in sandbox mode"
+msgstr "les extensions no estan permeses en mode de proves"
-#: eval.c:2061
-msgid "statement has no effect"
-msgstr "la sentència no té efecte"
+#: ext.c:92
+msgid "-l / @load are gawk extensions"
+msgstr "-l / @load són extensions gawk"
-#: eval.c:2473
-#, fuzzy, c-format
-msgid "for loop: array `%s' changed size from %ld to %ld during loop execution"
-msgstr ""
-"bucle for: la matriu «%s» ha canviat de mida de %d a %d durant l'execució "
-"del bucle"
+#: ext.c:95
+msgid "load_ext: received NULL lib_name"
+msgstr "load_ext: s'ha rebut lib_name nul"
+
+#: ext.c:98
+#, c-format
+msgid "load_ext: cannot open library `%s' (%s)\n"
+msgstr "load_ext: no es pot obrir la llibreria `%s' (%s)\n"
-#: eval.c:2583
+#: ext.c:104
#, c-format
-msgid "function called indirectly through `%s' does not exist"
+msgid ""
+"load_ext: library `%s': does not define `plugin_is_GPL_compatible' (%s)\n"
msgstr ""
+"load_ext: biblioteca `%s': no defineix `plugin_is_GPL_compatible' (%s)\n"
-#: eval.c:2595
+#: ext.c:110
#, c-format
-msgid "function `%s' not defined"
-msgstr "la funció «%s» no està definida"
+msgid "load_ext: library `%s': cannot call function `%s' (%s)\n"
+msgstr "load_ext: biblioteca `%s': no es pot cridar a la funció `%s' (%s)\n"
-#: eval.c:2656
-#, fuzzy, c-format
-msgid "non-redirected `getline' invalid inside `%s' rule"
-msgstr "port remot no vàlid en «%s»"
+#: ext.c:114
+#, c-format
+msgid "load_ext: library `%s' initialization routine `%s' failed\n"
+msgstr ""
+"load_ext: la biblioteca `%s' amb rutina d'inicialització `%s' ha fallat\n"
-#: eval.c:2717
-#, fuzzy, c-format
-msgid "`nextfile' cannot be called from a `%s' rule"
-msgstr "«nextfile» no es pot cridar des d'una regla FINAL"
+#: ext.c:174
+msgid "`extension' is a gawk extension"
+msgstr "`extension' és una extensió gawk"
-#: eval.c:2767
-#, fuzzy, c-format
-msgid "`next' cannot be called from a `%s' rule"
-msgstr "«next» no es pot cridar des d'una regla FINAL"
+#: ext.c:177
+msgid "extension: received NULL lib_name"
+msgstr "extension: s'ha rebut lib_name nul"
-#: eval.c:2834
+#: ext.c:180
#, c-format
-msgid "Sorry, don't know how to interpret `%s'"
-msgstr ""
+msgid "extension: cannot open library `%s' (%s)"
+msgstr "extension: no es pot obrir la biblioteca `%s' (%s)"
-#: ext.c:64
-msgid "extensions are not allowed in sandbox mode"
+#: ext.c:186
+#, c-format
+msgid ""
+"extension: library `%s': does not define `plugin_is_GPL_compatible' (%s)"
msgstr ""
+"extension: biblioteca `%s': no defineix `plugin_is_GPL_compatible' (%s)"
-#: ext.c:70 ext.c:75
-msgid "`extension' is a gawk extension"
-msgstr "«extension» és una extensió gawk"
+#: ext.c:190
+#, c-format
+msgid "extension: library `%s': cannot call function `%s' (%s)"
+msgstr "extension: biblioteca `%s': no es pot cridar a la funció `%s' (%s)"
-#: ext.c:85
-#, fuzzy, c-format
-msgid "fatal: extension: cannot open `%s' (%s)\n"
-msgstr "extension: no es pot obrir «%s» (%s)\n"
+#: ext.c:221
+msgid "make_builtin: missing function name"
+msgstr "make_builtin: nom absent de funció"
-#: ext.c:94
-#, fuzzy, c-format
-msgid ""
-"fatal: extension: library `%s': does not define "
-"`plugin_is_GPL_compatible' (%s)\n"
-msgstr "extension: biblioteca «%s»: no es pot cridar a la funció «%s» (%s)\n"
+#: ext.c:236
+#, c-format
+msgid "make_builtin: can't redefine function `%s'"
+msgstr "make_builtin: no es pot redefinir la funció `%s'"
+
+#: ext.c:240
+#, c-format
+msgid "make_builtin: function `%s' already defined"
+msgstr "make_builtin: la funció `%s' ja està definida"
+
+#: ext.c:244
+#, c-format
+msgid "make_builtin: function name `%s' previously defined"
+msgstr "make_builtin: nom de la funció `%s' definida prèviament"
+
+#: ext.c:246
+#, c-format
+msgid "make_builtin: can't use gawk built-in `%s' as function name"
+msgstr "make_builtin: no es pot usar el nom intern `%s' com a nom de funció"
-#: ext.c:103
-#, fuzzy, c-format
-msgid "fatal: extension: library `%s': cannot call function `%s' (%s)\n"
-msgstr "extension: biblioteca «%s»: no es pot cridar a la funció «%s» (%s)\n"
+#: ext.c:249 ext.c:304
+#, c-format
+msgid "make_builtin: negative argument count for function `%s'"
+msgstr "make_builtin: recompte negatiu d'arguments per a la funció `%s'"
-#: ext.c:137
+#: ext.c:276
msgid "extension: missing function name"
-msgstr ""
+msgstr "extension: nom absent de funció"
-#: ext.c:142
-#, fuzzy, c-format
+#: ext.c:279 ext.c:283
+#, c-format
msgid "extension: illegal character `%c' in function name `%s'"
-msgstr "extension: biblioteca «%s»: no es pot cridar a la funció «%s» (%s)\n"
+msgstr "extension: caràcter `%c' il·legal al nom de funció `%s'"
-#: ext.c:151
-#, fuzzy, c-format
+#: ext.c:291
+#, c-format
msgid "extension: can't redefine function `%s'"
-msgstr "extension: no es pot obrir «%s» (%s)\n"
+msgstr "extension: no es pot redefinir la funció `%s'"
-#: ext.c:155
-#, fuzzy, c-format
+#: ext.c:295
+#, c-format
msgid "extension: function `%s' already defined"
-msgstr "la funció «%s» no està definida"
+msgstr "extension: la funció `%s' ja està definida"
-#: ext.c:160
-#, fuzzy, c-format
+#: ext.c:299
+#, c-format
msgid "extension: function name `%s' previously defined"
-msgstr "nom de la funció «%s» definida prèviament"
+msgstr "extension: nom de la funció `%s' definida prèviament"
-#: ext.c:162
-#, fuzzy, c-format
+#: ext.c:301
+#, c-format
msgid "extension: can't use gawk built-in `%s' as function name"
-msgstr "funció «%s»: no pot usar el nom de la funció com a paràmetre"
+msgstr "extension: no es pot usar el nom intern `%s' com a nom de funció"
-#: ext.c:166
+#: ext.c:375
#, c-format
-msgid "make_builtin: negative argument count for function `%s'"
-msgstr ""
-
-#: ext.c:269
-#, fuzzy, c-format
msgid "function `%s' defined to take no more than %d argument(s)"
-msgstr "es defineix la funció «%s» però no s'ha cridat mai"
+msgstr "la funció `%s' està definida per agafar no més de %d argument(s)"
-#: ext.c:272
-#, fuzzy, c-format
+#: ext.c:378
+#, c-format
msgid "function `%s': missing argument #%d"
-msgstr "la funció «%s» no està definida"
+msgstr "funció `%s': falta l'argument #%d"
-#: ext.c:282
-#, fuzzy, c-format
+#: ext.c:395
+#, c-format
msgid "function `%s': argument #%d: attempt to use scalar as an array"
-msgstr "s'ha intentat usar la dada escalar «%s» com a una matriu"
+msgstr ""
+"funció `%s': argument #%d: s'ha intentat usar una dada escalar com a una "
+"matriu"
-#: ext.c:286
+#: ext.c:399
#, c-format
msgid "function `%s': argument #%d: attempt to use array as a scalar"
msgstr ""
+"funció `%s': argument #%d: s'ha intentat usar una matriu com a un escalar"
-#: ext.c:299
-msgid "Operation Not Supported"
-msgstr "Operació No Suportada"
+#: ext.c:413
+msgid "dynamic loading of library not supported"
+msgstr "no està suportada la càrrega dinàmica de la biblioteca"
+
+#: extension/filefuncs.c:159
+msgid "chdir: called with incorrect number of arguments, expecting 1"
+msgstr "chdir: cridat amb un nombre incorrecte d'arguments, s'esperava 1"
+
+#: extension/filefuncs.c:439
+#, c-format
+msgid "stat: unable to read symbolic link `%s'"
+msgstr "stat: no s'ha pogut llegir l'enllaç simbòlic `%s'"
+
+#: extension/filefuncs.c:472
+msgid "stat: called with wrong number of arguments"
+msgstr "stat: cridat amb un nombre incorrecte d'arguments"
+
+#: extension/filefuncs.c:479
+msgid "stat: bad parameters"
+msgstr "stata: arguments dolents"
+
+#: extension/filefuncs.c:533
+#, c-format
+msgid "fts init: could not create variable %s"
+msgstr "fts init: no s'ha pogut crear la variable %s"
+
+#: extension/filefuncs.c:554
+msgid "fts is not supported on this system"
+msgstr "fts no està suportat en aquest sistema"
+
+#: extension/filefuncs.c:573
+msgid "fill_stat_element: could not create array"
+msgstr "fill_stat_element: no s'ha pogut crear la matriu"
+
+#: extension/filefuncs.c:582
+msgid "fill_stat_element: could not set element"
+msgstr "fill_stat_element: no s'ha pogut establir l'element"
+
+#: extension/filefuncs.c:597
+msgid "fill_path_element: could not set element"
+msgstr "fill_path_element: no s'ha pogut establir l'element"
+
+#: extension/filefuncs.c:613
+msgid "fill_error_element: could not set element"
+msgstr "fill_error_element: no s'ha pogut establir l'element"
+
+#: extension/filefuncs.c:660 extension/filefuncs.c:707
+msgid "fts-process: could not create array"
+msgstr "fts-process: no s'ha pogut crear la matriu"
+
+#: extension/filefuncs.c:670 extension/filefuncs.c:717
+#: extension/filefuncs.c:735
+msgid "fts-process: could not set element"
+msgstr "fts-process: no s'ha pogut establir l'element"
+
+#: extension/filefuncs.c:784
+msgid "fts: called with incorrect number of arguments, expecting 3"
+msgstr "fts: cridat amb un nombre incorrecte d'arguments, s'esperaven 3"
+
+#: extension/filefuncs.c:787
+msgid "fts: bad first parameter"
+msgstr "fts: el segon argument és dolent"
+
+#: extension/filefuncs.c:793
+msgid "fts: bad second parameter"
+msgstr "fts: el segon argument és dolent"
+
+#: extension/filefuncs.c:799
+msgid "fts: bad third parameter"
+msgstr "fts: el tercer paràmeter es dolent"
+
+#: extension/filefuncs.c:806
+msgid "fts: could not flatten array\n"
+msgstr "fts: no s'ha pogut aplanar la matriu\n"
+
+#: extension/filefuncs.c:824
+msgid "fts: ignoring sneaky FTS_NOSTAT flag. nyah, nyah, nyah."
+msgstr "fts: s'ignorarà l'indicador FTS_NOSTAT furtiu. T'he enxampat!"
+
+#: extension/filefuncs.c:841
+msgid "fts: clear_array() failed\n"
+msgstr "fts: clear_array() ha fallat\n"
+
+#: extension/fnmatch.c:112
+msgid "fnmatch: called with less than three arguments"
+msgstr "fnmatch: s'ha cridat amb menys de tres arguments"
+
+#: extension/fnmatch.c:115
+msgid "fnmatch: called with more than three arguments"
+msgstr "fnmatch: s'ha cridat amb més de tres arguments"
+
+#: extension/fnmatch.c:118
+msgid "fnmatch: could not get first argument"
+msgstr "fnmatch: no s'ha pogut obtenir el segon argument"
+
+#: extension/fnmatch.c:123
+msgid "fnmatch: could not get second argument"
+msgstr "fnmatch: no s'ha pogut obtenir el segon argument"
+
+#: extension/fnmatch.c:128
+msgid "fnmatch: could not get third argument"
+msgstr "fnmatch: no s'ha pogut obtenir el tercer argument"
+
+#: extension/fnmatch.c:141
+msgid "fnmatch is not implemented on this system\n"
+msgstr "fnmatch no està implementat en aquest sistema\n"
+
+#: extension/fnmatch.c:173
+msgid "fnmatch init: could not add FNM_NOMATCH variable"
+msgstr "fnmatch init: no s'ha pogut afegir la variable FNM_NOMATCH"
+
+#: extension/fnmatch.c:183
+#, c-format
+msgid "fnmatch init: could not set array element %s"
+msgstr "fnmatch init: no s'ha pogut establir l'element de matriu %s"
+
+#: extension/fnmatch.c:193
+msgid "fnmatch init: could not install FNM array"
+msgstr "fnmatch init: no s'ha pogut instal·lar la matriu FNM"
+
+#: extension/fork.c:81
+msgid "fork: called with too many arguments"
+msgstr "fork: s'ha cridat amb massa arguments"
+
+#: extension/fork.c:94
+msgid "fork: PROCINFO is not an array!"
+msgstr "fork: PROCINFO no és una matriu!"
+
+#: extension/fork.c:118
+msgid "waitpid: called with too many arguments"
+msgstr "waitpid: s'ha cridat amb massa arguments"
+
+#: extension/fork.c:126
+msgid "wait: called with no arguments"
+msgstr "wait: s'ha cridat amb cap argument"
+
+#: extension/fork.c:143
+msgid "wait: called with too many arguments"
+msgstr "wait: s'ha cridat amb massa arguments"
+
+#: extension/inplace.c:130
+msgid "inplace_begin: in-place editing already active"
+msgstr "inplace_begin: l'edició in situ ja està activa"
+
+#: extension/inplace.c:133 extension/inplace.c:207
+#, c-format
+msgid "inplace_begin: expects 2 arguments but called with %d"
+msgstr "inplace_begin: s'esperaven 2 arguments però s'ha cridat amb %d"
+
+#: extension/inplace.c:136
+msgid "inplace_begin: cannot retrieve 1st argument as a string filename"
+msgstr ""
+"inplace_begin: no es pot obtenir el primer argument com nom de fitxer cadena "
+"de caràcters"
+
+#: extension/inplace.c:144
+#, c-format
+msgid "inplace_begin: disabling in-place editing for invalid FILENAME `%s'"
+msgstr ""
+"inplace_begin: s'està deshabilitant l'edició in situ per al nom de fitxer no "
+"vàlid `%s'"
+
+#: extension/inplace.c:151
+#, c-format
+msgid "inplace_begin: Cannot stat `%s' (%s)"
+msgstr "implace_begin: No es pot obrir `%s' (%s)"
+
+#: extension/inplace.c:158
+#, c-format
+msgid "inplace_begin: `%s' is not a regular file"
+msgstr "inplace_begin: `%s' no és un fitxer regular"
+
+#: extension/inplace.c:169
+#, c-format
+msgid "inplace_begin: mkstemp(`%s') failed (%s)"
+msgstr "inplace_begin: mkstemp(`%s') ha fallat (%s)"
+
+#: extension/inplace.c:178
+#, c-format
+msgid "inplace_begin: chmod failed (%s)"
+msgstr "inplace_begin: ha fallat chmod (%s)"
+
+#: extension/inplace.c:185
+#, c-format
+msgid "inplace_begin: dup(stdout) failed (%s)"
+msgstr "inplace_begin: dup(stdout) ha fallat(%s)"
+
+#: extension/inplace.c:188
+#, c-format
+msgid "inplace_begin: dup2(%d, stdout) failed (%s)"
+msgstr "inplace_begin: dup2(%d, stdout) ha fallat (%s)"
+
+#: extension/inplace.c:191
+#, c-format
+msgid "inplace_begin: close(%d) failed (%s)"
+msgstr "inplace begin: close(%d) ha fallat (%s)"
+
+#: extension/inplace.c:210
+msgid "inplace_end: cannot retrieve 1st argument as a string filename"
+msgstr ""
+"inplace_end: no es pot obtenir el primer argument com un nom de fitxer "
+"cadena de caràcters"
-#: field.c:328
+#: extension/inplace.c:217
+msgid "inplace_end: in-place editing not active"
+msgstr "inplace_end: no està activa l'edició in situ"
+
+#: extension/inplace.c:223
+#, c-format
+msgid "inplace_end: dup2(%d, stdout) failed (%s)"
+msgstr "inplace_end: dup2(%d, stdout) ha fallat (%s)"
+
+#: extension/inplace.c:226
+#, c-format
+msgid "inplace_end: close(%d) failed (%s)"
+msgstr "inplace_end: close(%d) ha fallat (%s)"
+
+#: extension/inplace.c:230
+#, c-format
+msgid "inplace_end: fsetpos(stdout) failed (%s)"
+msgstr "inplace_end: fsetpos(stdout) ha fallat (%s)"
+
+#: extension/inplace.c:243
+#, c-format
+msgid "inplace_end: link(`%s', `%s') failed (%s)"
+msgstr "inplace_end: link(`%s', `%s') ha fallat (%s)"
+
+#: extension/inplace.c:253
+#, c-format
+msgid "inplace_end: rename(`%s', `%s') failed (%s)"
+msgstr "inplace_end: rename(`%s', `%s') ha fallat (%s)"
+
+#: extension/ordchr.c:69
+msgid "ord: called with too many arguments"
+msgstr "ord: s'ha cridat amb massa arguments"
+
+#: extension/ordchr.c:75
+msgid "ord: called with no arguments"
+msgstr "ord: s'ha cridat amb cap argument"
+
+#: extension/ordchr.c:77
+msgid "ord: called with inappropriate argument(s)"
+msgstr "ord: s'ha cridat amb argument(s) no apropiat(s)"
+
+#: extension/ordchr.c:99
+msgid "chr: called with too many arguments"
+msgstr "chr: s'ha cridat amb massa arguments"
+
+#: extension/ordchr.c:109
+msgid "chr: called with no arguments"
+msgstr "chr: s'ha cridat amb cap argument"
+
+#: extension/ordchr.c:111
+msgid "chr: called with inappropriate argument(s)"
+msgstr "chr: s'ha cridat amb argument(s) no apropiat(s)"
+
+#: extension/readdir.c:281
+#, c-format
+msgid "dir_take_control_of: opendir/fdopendir failed: %s"
+msgstr "dir_take_control_of: opendir/fdopendir ha fallat: %s"
+
+#: extension/readfile.c:113
+msgid "readfile: called with too many arguments"
+msgstr "readfile: s'ha cridat amb massa arguments"
+
+#: extension/readfile.c:137
+msgid "readfile: called with no arguments"
+msgstr "readfile: s'ha cridat amb cap argument"
+
+#: extension/rwarray.c:124
+msgid "writea: called with too many arguments"
+msgstr "writea: s'ha cridat amb massa arguments"
+
+#: extension/rwarray.c:131
+#, c-format
+msgid "do_writea: argument 0 is not a string\n"
+msgstr "do_writea: l'argument 0 no és una cadena de caràcters\n"
+
+#: extension/rwarray.c:137
+#, c-format
+msgid "do_writea: argument 1 is not an array\n"
+msgstr "do_writea: l'argument 1 no és una matriu\n"
+
+#: extension/rwarray.c:184
+#, c-format
+msgid "write_array: could not flatten array\n"
+msgstr "write_array: no s'ha pogut aplanar la matriu\n"
+
+#: extension/rwarray.c:198
+#, c-format
+msgid "write_array: could not release flattened array\n"
+msgstr "write_array: no s'ha pogut alliberar la matriu aplanada\n"
+
+#: extension/rwarray.c:280
+msgid "reada: called with too many arguments"
+msgstr "reada: s'ha cridat amb massa arguments"
+
+#: extension/rwarray.c:287
+#, c-format
+msgid "do_reada: argument 0 is not a string\n"
+msgstr "do_reada: l'argument 0 no és una cadena de caràcters\n"
+
+#: extension/rwarray.c:293
+#, c-format
+msgid "do_reada: argument 1 is not an array\n"
+msgstr "do_reada: l'argument 1 no és una matriu\n"
+
+#: extension/rwarray.c:337
+#, c-format
+msgid "do_reada: clear_array failed\n"
+msgstr "do_reada: clear_array ha fallat\n"
+
+#: extension/rwarray.c:374
+#, c-format
+msgid "read_array: set_array_element failed\n"
+msgstr "read_array: set_array_element ha fallat\n"
+
+#: extension/time.c:113
+msgid "gettimeofday: ignoring arguments"
+msgstr "gettimeofday: s'estan ignorant els arguments"
+
+#: extension/time.c:144
+msgid "gettimeofday: not supported on this platform"
+msgstr "gettimeofday: no està suportat en aquesta plataforma"
+
+#: extension/time.c:165
+msgid "sleep: called with too many arguments"
+msgstr "sleep: s'ha cridat amb massa arguments"
+
+#: extension/time.c:168
+msgid "sleep: missing required numeric argument"
+msgstr "sleep: no hi ha un argument numèric requerit"
+
+#: extension/time.c:174
+msgid "sleep: argument is negative"
+msgstr "sleep: l'argument és negatiu"
+
+#: extension/time.c:208
+msgid "sleep: not supported on this platform"
+msgstr "sleep: no està suportat en aquesta plataforma"
+
+#: field.c:345
msgid "NF set to negative value"
msgstr "NF s'inicialitza sobre un valor negatiu"
-#: field.c:939 field.c:946 field.c:950
-#, fuzzy
+#: field.c:971 field.c:978 field.c:982
msgid "split: fourth argument is a gawk extension"
-msgstr "match: el tercer argument és una extensió de gawk"
+msgstr "split: el quart argument és una extensió gawk"
-#: field.c:943
-#, fuzzy
+#: field.c:975
msgid "split: fourth argument is not an array"
-msgstr "split: el segon argument no és una matriu"
+msgstr "split: el quart argument no és una matriu"
-#: field.c:957
+#: field.c:989
msgid "split: second argument is not an array"
msgstr "split: el segon argument no és una matriu"
-#: field.c:962
-msgid "split: can not use the same array for second and fourth args"
+#: field.c:993
+msgid "split: cannot use the same array for second and fourth args"
+msgstr ""
+"split: no es pot usar una submatriu de segon argument per a quart argument"
+
+#: field.c:998
+msgid "split: cannot use a subarray of second arg for fourth arg"
+msgstr ""
+"split: no es pot usar una submatriu de segon argument per a quart argument"
+
+#: field.c:1001
+msgid "split: cannot use a subarray of fourth arg for second arg"
msgstr ""
+"split: no est pot usar una submatriu de quart argument per a segon argument"
-#: field.c:990
+#: field.c:1032
msgid "split: null string for third arg is a gawk extension"
msgstr "split: la cadena nul·la per al tercer argument és una extensió de gawk"
-#: field.c:1031
-#, fuzzy
+#: field.c:1072
msgid "patsplit: fourth argument is not an array"
-msgstr "split: el segon argument no és una matriu"
+msgstr "patsplit: el quart argument no és una matriu"
-#: field.c:1036
-#, fuzzy
+#: field.c:1077
msgid "patsplit: second argument is not an array"
-msgstr "split: el segon argument no és una matriu"
+msgstr "patsplit: el tercer argument no és una matriu"
-#: field.c:1054
-#, fuzzy
+#: field.c:1083
msgid "patsplit: third argument must be non-null"
-msgstr "match: el tercer argument no és una matriu"
+msgstr "patsplit: el segon argument no és una matriu"
-#: field.c:1059
-msgid "patsplit: can not use the same array for second and fourth args"
+#: field.c:1087
+msgid "patsplit: cannot use the same array for second and fourth args"
msgstr ""
+"patsplit: no es pot usar la mateixa matriu per a segon i quart argument"
-#: field.c:1089
+#: field.c:1092
+msgid "patsplit: cannot use a subarray of second arg for fourth arg"
+msgstr ""
+"patsplit: no es pot usar una submatriu de segon argument per a quart argument"
+
+#: field.c:1095
+msgid "patsplit: cannot use a subarray of fourth arg for second arg"
+msgstr ""
+"patsplit: no es pot usar una submatriu de quart argument per a segon argument"
+
+#: field.c:1133
msgid "`FIELDWIDTHS' is a gawk extension"
-msgstr "«FIELDWIDTHS» és una extensió de gawk"
+msgstr "`FIELDWIDTHS' és una extensió de gawk"
-#: field.c:1152
+#: field.c:1197
#, c-format
msgid "invalid FIELDWIDTHS value, near `%s'"
-msgstr ""
+msgstr "valor FIELDWIDTHS no vàlid, a prop de `%s'"
-#: field.c:1225
+#: field.c:1270
msgid "null string for `FS' is a gawk extension"
-msgstr "la cadena nul·la per a «FS» és una extensió de gawk"
+msgstr "la cadena nul·la per a `FS' és una extensió de gawk"
-#: field.c:1229
-#, fuzzy
+#: field.c:1274
msgid "old awk does not support regexps as value of `FS'"
-msgstr "l'antic awk no suporta l'operador «**=»"
+msgstr "l'antic awk no suporta expressions regulars com a valor de `FS'"
-#: field.c:1348
-#, fuzzy
+#: field.c:1393
msgid "`FPAT' is a gawk extension"
-msgstr "«%s» és una extensió de gawk"
+msgstr "`FPAT' és una extensió gawk"
+
+#: gawkapi.c:146
+msgid "awk_value_to_node: received null retval"
+msgstr "awk_value_to_node: s'ha rebut retval nul"
+
+#: gawkapi.c:384
+msgid "node_to_awk_value: received null node"
+msgstr "node_to_awk_value: s'ha rebut un node nul"
-#: getopt.c:574 getopt.c:590
-#, fuzzy, c-format
-msgid "%s: option '%s' is ambiguous\n"
-msgstr "%s: l'opció «%s» és ambigua\n"
+#: gawkapi.c:387
+msgid "node_to_awk_value: received null val"
+msgstr "node_to_awk_value: s'ha rebut un valor nul"
-#: getopt.c:623 getopt.c:627
-#, fuzzy, c-format
+#: gawkapi.c:807
+msgid "remove_element: received null array"
+msgstr "remove_element: s'ha rebut una matriu nul·la"
+
+#: gawkapi.c:810
+msgid "remove_element: received null subscript"
+msgstr "remove_element: s'ha rebut un subíndex nul"
+
+#: gawkapi.c:947
+#, c-format
+msgid "api_flatten_array: could not convert index %d\n"
+msgstr "api_flatten_array: no s'ha pogut convertir l'índex %d\n"
+
+#: gawkapi.c:952
+#, c-format
+msgid "api_flatten_array: could not convert value %d\n"
+msgstr "api_flatten_array: no s'ha pogut convertir el valor %d\n"
+
+#: getopt.c:604 getopt.c:633
+#, c-format
+msgid "%s: option '%s' is ambiguous; possibilities:"
+msgstr "%s: l'opció `%s' és ambigua<b: possibilitats:"
+
+#: getopt.c:679 getopt.c:683
+#, c-format
msgid "%s: option '--%s' doesn't allow an argument\n"
-msgstr "%s: l'opció «--%s» no admet cap argument\n"
+msgstr "%s: l'opció `--%s' no admet cap argument\n"
-#: getopt.c:636 getopt.c:641
-#, fuzzy, c-format
+#: getopt.c:692 getopt.c:697
+#, c-format
msgid "%s: option '%c%s' doesn't allow an argument\n"
-msgstr "%s: l'opció «%c%s» no admet cap argument\n"
+msgstr "%s: l'opció `%c%s' no admet cap argument\n"
-#: getopt.c:684 getopt.c:703
-#, fuzzy, c-format
+#: getopt.c:740 getopt.c:759
+#, c-format
msgid "%s: option '--%s' requires an argument\n"
-msgstr "%s: l'opció «%s» requereix un argument\n"
+msgstr "%s: l'opció `--%s' requereix un argument\n"
-#: getopt.c:741 getopt.c:744
-#, fuzzy, c-format
+#: getopt.c:797 getopt.c:800
+#, c-format
msgid "%s: unrecognized option '--%s'\n"
-msgstr "%s: no es reconeix l'opció «--%s»\n"
+msgstr "%s: no es reconeix l'opció `--%s'\n"
-#: getopt.c:752 getopt.c:755
-#, fuzzy, c-format
+#: getopt.c:808 getopt.c:811
+#, c-format
msgid "%s: unrecognized option '%c%s'\n"
-msgstr "%s: no es reconeix l'opció «%c%s»\n"
+msgstr "%s: no es reconeix l'opció `%c%s'\n"
-#: getopt.c:804 getopt.c:807
-#, fuzzy, c-format
+#: getopt.c:860 getopt.c:863
+#, c-format
msgid "%s: invalid option -- '%c'\n"
-msgstr "%s: opció no vàlida -- %c\n"
+msgstr "%s: opció no vàlida -- '%c'\n"
-#: getopt.c:857 getopt.c:874 getopt.c:1082 getopt.c:1100
-#, fuzzy, c-format
+#: getopt.c:916 getopt.c:933 getopt.c:1143 getopt.c:1161
+#, c-format
msgid "%s: option requires an argument -- '%c'\n"
-msgstr "%s: l'opció requereix un argument -- %c\n"
+msgstr "%s: l'opció requereix un argument -- '%c'\n"
-#: getopt.c:930 getopt.c:946
-#, fuzzy, c-format
+#: getopt.c:989 getopt.c:1005
+#, c-format
msgid "%s: option '-W %s' is ambiguous\n"
-msgstr "%s: l'opció «-W %s» és ambigua\n"
+msgstr "%s: l'opció `-W %s' és ambigua\n"
-#: getopt.c:970 getopt.c:988
-#, fuzzy, c-format
+#: getopt.c:1029 getopt.c:1047
+#, c-format
msgid "%s: option '-W %s' doesn't allow an argument\n"
-msgstr "%s: l'opció «-W %s» no admet cap argument\n"
+msgstr "%s: l'opció `-W %s' no admet cap argument\n"
-#: getopt.c:1009 getopt.c:1027
-#, fuzzy, c-format
+#: getopt.c:1068 getopt.c:1086
+#, c-format
msgid "%s: option '-W %s' requires an argument\n"
-msgstr "%s: l'opció «%s» requereix un argument\n"
+msgstr "%s: l'opció `-W %s' requereix un argument\n"
-#: io.c:282
+#: io.c:392
#, c-format
msgid "command line argument `%s' is a directory: skipped"
-msgstr ""
+msgstr "l'argument `%s' de línia d'ordres és un directori: s'ignorarà"
-#: io.c:285 io.c:382
+#: io.c:395 io.c:513
#, c-format
msgid "cannot open file `%s' for reading (%s)"
-msgstr "no es pot obrir el fitxer «%s» per a lectura (%s)"
-
-#: io.c:429
-#, c-format
-msgid "error reading input file `%s': %s"
-msgstr "error en llegir el fitxer d'entrada «%s»: %s"
+msgstr "no es pot obrir el fitxer `%s' per a lectura (%s)"
-#: io.c:498
+#: io.c:640
#, c-format
msgid "close of fd %d (`%s') failed (%s)"
-msgstr "la finalització del descriptor fd %d («%s») ha fallat (%s)"
+msgstr "la finalització del descriptor fd %d (`%s') ha fallat (%s)"
-#: io.c:575
+#: io.c:716
msgid "redirection not allowed in sandbox mode"
-msgstr ""
+msgstr "no est permeten redireccions en mode de proves"
-#: io.c:609
+#: io.c:750
#, c-format
msgid "expression in `%s' redirection only has numeric value"
-msgstr "l'expressió en la redirecció «%s» solt té un valor numèric"
+msgstr "l'expressió en la redirecció `%s' solt té un valor numèric"
-#: io.c:615
+#: io.c:756
#, c-format
msgid "expression for `%s' redirection has null string value"
-msgstr "l'expressió per a la redirecció «%s» té un valor de cadena nul·la"
+msgstr "l'expressió per a la redirecció `%s' té un valor de cadena nul·la"
-#: io.c:621
+#: io.c:761
#, c-format
msgid "filename `%s' for `%s' redirection may be result of logical expression"
msgstr ""
-"el fitxer «%s» per a la redirecció «%s» pot ser resultat d'una expressió "
+"el fitxer `%s' per a la redirecció `%s' pot ser resultat d'una expressió "
"lògica"
-#: io.c:664
+#: io.c:809
#, c-format
msgid "unnecessary mixing of `>' and `>>' for file `%.*s'"
-msgstr "mescla innecessària de «>» i «>>» per al fitxer «%.*s»"
+msgstr "mescla innecessària de `>' i `>>' per al fitxer `%.*s'"
-#: io.c:717
+#: io.c:863
#, c-format
msgid "can't open pipe `%s' for output (%s)"
-msgstr "no es pot obrir la canonada «%s» per a l'eixida (%s)"
+msgstr "no es pot obrir la canonada `%s' per a l'eixida (%s)"
-#: io.c:727
+#: io.c:873
#, c-format
msgid "can't open pipe `%s' for input (%s)"
-msgstr "no es pot obrir la canonada «%s» per a l'entrada (%s)"
+msgstr "no es pot obrir la canonada `%s' per a l'entrada (%s)"
-#: io.c:749
+#: io.c:904
#, c-format
msgid "can't open two way pipe `%s' for input/output (%s)"
msgstr ""
-"no es pot obrir una canonada bidireccional «%s» per a les entrades/eixides "
+"no es pot obrir una canonada bidireccional `%s' per a les entrades/eixides "
"(%s)"
-#: io.c:831
+#: io.c:986
#, c-format
msgid "can't redirect from `%s' (%s)"
-msgstr "no es pot redirigir des de «%s» (%s)"
+msgstr "no es pot redirigir des de `%s' (%s)"
-#: io.c:834
+#: io.c:989
#, c-format
msgid "can't redirect to `%s' (%s)"
-msgstr "no es pot redirigir cap a «%s» (%s)"
+msgstr "no es pot redirigir cap a `%s' (%s)"
-#: io.c:883
+#: io.c:1040
msgid ""
"reached system limit for open files: starting to multiplex file descriptors"
msgstr ""
"s'ha arribat al límit del sistema per a fitxers oberts: es començarà a "
"multiplexar els descriptors de fitxer"
-#: io.c:899
+#: io.c:1056
#, c-format
msgid "close of `%s' failed (%s)."
-msgstr "la finalització de «%s» ha fallat (%s)"
+msgstr "la finalització de `%s' ha fallat (%s)"
-#: io.c:907
+#: io.c:1064
msgid "too many pipes or input files open"
msgstr "masses canonades o fitxers d'entrada oberts"
-#: io.c:929
+#: io.c:1086
msgid "close: second argument must be `to' or `from'"
-msgstr "close: el segon argument hauria de ser «to» o «from»"
+msgstr "close: el segon argument hauria de ser `to' o `from'"
-#: io.c:946
+#: io.c:1103
#, c-format
msgid "close: `%.*s' is not an open file, pipe or co-process"
-msgstr "close: «%.*s» no és un fitxer obert, canonada o co-procés"
+msgstr "close: `%.*s' no és un fitxer obert, canonada o co-procés"
-#: io.c:951
+#: io.c:1108
msgid "close of redirection that was never opened"
msgstr "finalització d'una redirecció que no s'ha obert"
-#: io.c:1048
+#: io.c:1205
#, c-format
msgid "close: redirection `%s' not opened with `|&', second argument ignored"
msgstr ""
-"close: la redirecció «%s» no s'obre amb «|&», s'ignora el segon argument"
+"close: la redirecció `%s' no s'obre amb `|&', s'ignora el segon argument"
-#: io.c:1064
+#: io.c:1222
#, c-format
msgid "failure status (%d) on pipe close of `%s' (%s)"
-msgstr "estaus de falla (%d) en la finalització de la canonada «%s» (%s)"
+msgstr "estat de fallada (%d) en la finalització de la canonada `%s' (%s)"
-#: io.c:1067
+#: io.c:1225
#, c-format
msgid "failure status (%d) on file close of `%s' (%s)"
-msgstr "estatus de falla (%d) en la finalització del fitxer «%s» (%s)"
+msgstr "estat de falla (%d) en la finalització del fitxer `%s' (%s)"
-#: io.c:1087
+#: io.c:1245
#, c-format
msgid "no explicit close of socket `%s' provided"
-msgstr "no s'aporta la finalització explícita del socket «%s»"
+msgstr "no s'aporta la finalització explícita del socket `%s'"
-#: io.c:1090
+#: io.c:1248
#, c-format
msgid "no explicit close of co-process `%s' provided"
-msgstr "no s'aporta la finalització explícita del co-procés «%s»"
+msgstr "no s'aporta la finalització explícita del co-procés `%s'"
-#: io.c:1093
+#: io.c:1251
#, c-format
msgid "no explicit close of pipe `%s' provided"
-msgstr "no s'aporta la finalització explícita de la canonada «%s»"
+msgstr "no s'aporta la finalització explícita de la canonada `%s'"
-#: io.c:1096
+#: io.c:1254
#, c-format
msgid "no explicit close of file `%s' provided"
-msgstr "no s'aporta la finalització explícita del fitxer «%s»"
+msgstr "no s'aporta la finalització explícita del fitxer `%s'"
-#: io.c:1124 io.c:1179 main.c:809 main.c:851
+#: io.c:1284 io.c:1342 main.c:864 main.c:906
#, c-format
msgid "error writing standard output (%s)"
-msgstr "error a l'escriure en l'eixida estàndard (%s)"
+msgstr "error en escriure a la sortida estàndard (%s)"
-#: io.c:1128 io.c:1184
+#: io.c:1289 io.c:1348 main.c:866
#, c-format
msgid "error writing standard error (%s)"
-msgstr "error a l'escriure en l'eixida d'error estàndard (%s)"
+msgstr "error en escriure a la sortida d'error estàndard (%s)"
-#: io.c:1136
+#: io.c:1297
#, c-format
msgid "pipe flush of `%s' failed (%s)."
-msgstr "la neteja de la canonada de «%sx» ha fallat (%s)."
+msgstr "la neteja de la canonada de `%sx' ha fallat (%s)."
-#: io.c:1139
+#: io.c:1300
#, c-format
msgid "co-process flush of pipe to `%s' failed (%s)."
-msgstr "la neteja de la canonada per al co-procés de «%sx» ha fallat (%s)."
+msgstr "la neteja de la canonada per al co-procés de `%sx' ha fallat (%s)."
-#: io.c:1142
+#: io.c:1303
#, c-format
msgid "file flush of `%s' failed (%s)."
-msgstr "la neteja del fitxer «%sx» ha fallat (%s)."
+msgstr "la neteja del fitxer `%s' ha fallat (%s)."
-#: io.c:1257
-#, fuzzy, c-format
+#: io.c:1420
+#, c-format
msgid "local port %s invalid in `/inet'"
-msgstr "port local no vàlid en «%s»"
+msgstr "port local %s no vàlid a `/inet'"
-#: io.c:1274
+#: io.c:1438
#, c-format
msgid "remote host and port information (%s, %s) invalid"
-msgstr ""
+msgstr "amfitrió remot i informació de port (%s, %s) no vàlids"
-#: io.c:1426
+#: io.c:1590
#, c-format
msgid "no (known) protocol supplied in special filename `%s'"
-msgstr "no s'aporta cap protocol (conegut) en el nom del fitxer especial «%s»"
+msgstr "no s'aporta cap protocol (conegut) en el nom del fitxer especial `%s'"
-#: io.c:1440
+#: io.c:1604
#, c-format
msgid "special file name `%s' is incomplete"
-msgstr "el nom del fitxer especial «%s» està incomplet"
+msgstr "el nom del fitxer especial `%s' està incomplet"
-#: io.c:1457
+#: io.c:1621
msgid "must supply a remote hostname to `/inet'"
-msgstr "s'ha de subministrar un nom de sistema remot a «/inet»"
+msgstr "s'ha de subministrar un nom de sistema remot a `/inet'"
-#: io.c:1475
+#: io.c:1639
msgid "must supply a remote port to `/inet'"
-msgstr "s'ha de subministrar un port remot a «/inet»"
+msgstr "s'ha de subministrar un port remot a `/inet'"
-#: io.c:1521
+#: io.c:1685
msgid "TCP/IP communications are not supported"
msgstr "les comunicacions TCP/IP no estan suportades"
-#: io.c:1688
+#: io.c:1867
#, c-format
msgid "could not open `%s', mode `%s'"
-msgstr "no es pot obrir «%s», mode «%s»"
+msgstr "no es pot obrir `%s', mode `%s'"
-#: io.c:1739
-#, fuzzy, c-format
+#: io.c:1917
+#, c-format
msgid "close of master pty failed (%s)"
-msgstr "ha fallat la finalització de la canonada (%s)"
+msgstr "ha fallat el tancament del pty mestre (%s)"
-#: io.c:1741 io.c:1909 io.c:2066
+#: io.c:1919 io.c:2105 io.c:2305
#, c-format
msgid "close of stdout in child failed (%s)"
msgstr ""
-"ha fallat la finalització de l'eixida estàndard en els processos fills (%s)"
+"ha fallat la finalització de la sortida estàndard en els processos fills (%s)"
-#: io.c:1744
-#, fuzzy, c-format
+#: io.c:1922
+#, c-format
msgid "moving slave pty to stdout in child failed (dup: %s)"
msgstr ""
-"ha fallat la redirecció cap a l'eixida estàndard dels processos fills (dup: "
-"%s)"
+"ha fallat el trasllat del pty esclau cap a l'eixida estàndard dels processos "
+"fills (dup: %s)"
-#: io.c:1746 io.c:1914
+#: io.c:1924 io.c:2110
#, c-format
msgid "close of stdin in child failed (%s)"
msgstr ""
"ha fallat la finalització de l'entrada estàndard en els processos fills (%s)"
-#: io.c:1749
-#, fuzzy, c-format
+#: io.c:1927
+#, c-format
msgid "moving slave pty to stdin in child failed (dup: %s)"
msgstr ""
-"ha fallat la redirecció cap a l'entrada estàndard dels processos fills (dup: "
-"%s)"
+"ha fallat el trasllat del pty esclau cap a l'entrada estàndard dels "
+"processos fills (dup: %s)"
-#: io.c:1751 io.c:1772
-#, fuzzy, c-format
+#: io.c:1929 io.c:1951
+#, c-format
msgid "close of slave pty failed (%s)"
-msgstr "ha fallat la finalització de la canonada (%s)"
+msgstr "ha fallat el tancament del pty esclau (%s)"
-#: io.c:1850 io.c:1912 io.c:2044 io.c:2069
+#: io.c:2040 io.c:2108 io.c:2276 io.c:2308
#, c-format
msgid "moving pipe to stdout in child failed (dup: %s)"
msgstr ""
"ha fallat la redirecció cap a l'eixida estàndard dels processos fills (dup: "
"%s)"
-#: io.c:1857 io.c:1917
+#: io.c:2047 io.c:2113
#, c-format
msgid "moving pipe to stdin in child failed (dup: %s)"
msgstr ""
"ha fallat la redirecció cap a l'entrada estàndard dels processos fills (dup: "
"%s)"
-#: io.c:1877 io.c:2059
+#: io.c:2073 io.c:2298
msgid "restoring stdout in parent process failed\n"
msgstr "ha fallat la restauració de l'eixida estàndard en el procés pare\n"
-#: io.c:1885
+#: io.c:2081
msgid "restoring stdin in parent process failed\n"
msgstr "ha fallat la restauració de l'entrada estàndard en el procés pare\n"
-#: io.c:1920 io.c:2071 io.c:2085
+#: io.c:2116 io.c:2310 io.c:2324
#, c-format
msgid "close of pipe failed (%s)"
msgstr "ha fallat la finalització de la canonada (%s)"
-#: io.c:1965
+#: io.c:2174
msgid "`|&' not supported"
-msgstr "«|&» no està suportat"
+msgstr "`|&' no està suportat"
-#: io.c:2031
+#: io.c:2261
#, c-format
msgid "cannot open pipe `%s' (%s)"
-msgstr "no es pot obrir la canonada «%s» (%s)"
+msgstr "no es pot obrir la canonada `%s' (%s)"
-#: io.c:2079
+#: io.c:2318
#, c-format
msgid "cannot create child process for `%s' (fork: %s)"
-msgstr "no es pot crear el procés fill per a «%s» (fork: %s)"
+msgstr "no es pot crear el procés fill per a `%s' (fork: %s)"
+
+#: io.c:2790
+msgid "register_input_parser: received NULL pointer"
+msgstr "register_input_parser: s'ha rebut un punter nul"
-#: io.c:2569
+#: io.c:2818
#, c-format
-msgid "data file `%s' is empty"
-msgstr "el fitxer de dades «%s» està buit"
+msgid "input parser `%s' conflicts with previously installed input parser `%s'"
+msgstr ""
+"l'analitzador d'entrades `%s' està en conflicte amb analitzador d'entrades `"
+"%s' instal·lat prèviament"
-#: io.c:2610 io.c:2618
-msgid "could not allocate more input memory"
+#: io.c:2825
+#, c-format
+msgid "input parser `%s' failed to open `%s'"
+msgstr "l'analitzador d'entrada `%s' no ha pogut obrir `%s'"
+
+#: io.c:2845
+msgid "register_output_wrapper: received NULL pointer"
+msgstr "register_output_wrapper: s'ha rebut un punter nul"
+
+#: io.c:2873
+#, c-format
+msgid ""
+"output wrapper `%s' conflicts with previously installed output wrapper `%s'"
msgstr ""
+"l'embolcall de sortida `%s' està en conflicte amb l'embolcall de sortida `"
+"%s' instal·lat prèviament"
-#: io.c:3171
-msgid "multicharacter value of `RS' is a gawk extension"
-msgstr "el valor multicaràcter de «RS» és una extensió de gawk"
+#: io.c:2880
+#, c-format
+msgid "output wrapper `%s' failed to open `%s'"
+msgstr "l'embolcall de sortida `%s' no ha pogut obrir `%s'"
-#: io.c:3276
-#, fuzzy
-msgid "IPv6 communication is not supported"
-msgstr "les comunicacions TCP/IP no estan suportades"
+#: io.c:2901
+msgid "register_output_processor: received NULL pointer"
+msgstr "register_output_processor: s'ha rebut un punter nul"
-#: main.c:307
-msgid "out of memory"
-msgstr "memòria esgotada"
+#: io.c:2930
+#, c-format
+msgid ""
+"two-way processor `%s' conflicts with previously installed two-way processor "
+"`%s'"
+msgstr ""
+"el processsador de dues vies `%s' està en conflicte amb el processador de "
+"dues vies `%s' instal·lat prèviament"
-#: main.c:384
-msgid "`-m[fr]' option irrelevant in gawk"
-msgstr "l'opción «-m[fr]» és irrellevant en gawk"
+#: io.c:2939
+#, c-format
+msgid "two way processor `%s' failed to open `%s'"
+msgstr "el processador de dues vies `%s' no ha pogut obrir `%s'"
+
+#: io.c:3064
+#, c-format
+msgid "data file `%s' is empty"
+msgstr "el fitxer de dades `%s' està buit"
-#: main.c:386
-msgid "-m option usage: `-m[fr] nnn'"
-msgstr "ús de l'opció -m: «-m[fr] nnn»"
+#: io.c:3106 io.c:3114
+msgid "could not allocate more input memory"
+msgstr "no s'ha pogut assignar més memòria d'entrada"
+
+#: io.c:3682
+msgid "multicharacter value of `RS' is a gawk extension"
+msgstr "el valor multicaràcter de `RS' és una extensió de gawk"
-#: main.c:409
-#, fuzzy
+#: io.c:3771
+msgid "IPv6 communication is not supported"
+msgstr "la comunicació IPv6 no està suportada"
+
+#: main.c:405
msgid "empty argument to `-e/--source' ignored"
-msgstr "s'igonarà l'argument buit per a l'opció «--source»"
+msgstr "s'ignonarà l'argument buit de `-e/--source'"
-#: main.c:475
+#: main.c:495
#, c-format
msgid "%s: option `-W %s' unrecognized, ignored\n"
-msgstr "%s: no es reconeix l'opció «-W %s», serà ignorada\n"
+msgstr "%s: no es reconeix l'opció `-W %s', serà ignorada\n"
-#: main.c:528
+#: main.c:541
#, c-format
msgid "%s: option requires an argument -- %c\n"
msgstr "%s: l'opció requereix un argument -- %c\n"
-#: main.c:549
+#: main.c:562
msgid "environment variable `POSIXLY_CORRECT' set: turning on `--posix'"
msgstr ""
-"la variable d'entorn «POSIXLY_CORRECT» està establerta: usant «--posix»"
+"la variable d'entorn `POSIXLY_CORRECT' està establerta: usant `--posix'"
-#: main.c:555
+#: main.c:568
msgid "`--posix' overrides `--traditional'"
-msgstr "«--posix» solapa a «--traditional»"
+msgstr "`--posix' solapa a `--traditional'"
-#: main.c:566
+#: main.c:579
msgid "`--posix'/`--traditional' overrides `--non-decimal-data'"
-msgstr "«--posix» i «--traditional» solapen a «--non-decimal-data»"
+msgstr "`--posix' i `--traditional' solapen a `--non-decimal-data'"
-#: main.c:570
-#, fuzzy, c-format
+#: main.c:583
+#, c-format
msgid "running %s setuid root may be a security problem"
msgstr "executar %s com a setuid root pot ser un problema de seguretat"
-#: main.c:575
-#, fuzzy
-msgid "`--posix' overrides `--binary'"
-msgstr "«--posix» solapa a «--traditional»"
+#: main.c:588
+msgid "`--posix' overrides `--characters-as-bytes'"
+msgstr "`--posix' anul·la a `--characters-as-bytes'"
-#: main.c:626
-#, fuzzy, c-format
+#: main.c:647
+#, c-format
msgid "can't set binary mode on stdin (%s)"
-msgstr "no es pot establir el mode en l'entrada estàndard (%s)"
+msgstr "no es pot establir el mode binari en l'entrada estàndard (%s)"
-#: main.c:629
-#, fuzzy, c-format
+#: main.c:650
+#, c-format
msgid "can't set binary mode on stdout (%s)"
msgstr "no es pot establir el mode en l'eixida estàndard (%s)"
-#: main.c:631
-#, fuzzy, c-format
+#: main.c:652
+#, c-format
msgid "can't set binary mode on stderr (%s)"
msgstr "no es pot establir el mode en l'eixida d'error estàndard (%s)"
-#: main.c:670
+#: main.c:710
msgid "no program text at all!"
msgstr "no hi ha cap text per al programa!"
-#: main.c:749
+#: main.c:799
#, c-format
msgid "Usage: %s [POSIX or GNU style options] -f progfile [--] file ...\n"
msgstr "Ús: %s [opcions d'estil POSIX o GNU] -f fitx_prog [--] fitxer ...\n"
-#: main.c:751
+#: main.c:801
#, c-format
msgid "Usage: %s [POSIX or GNU style options] [--] %cprogram%c file ...\n"
msgstr "Ús: %s [opcions d'estil POSIX o GNU] [--] %cprograma%c fitxer ...\n"
-#: main.c:756
-#, fuzzy
+#: main.c:806
msgid "POSIX options:\t\tGNU long options: (standard)\n"
-msgstr "Opcions POSIX:\t\tOpcions llargues GNU:\n"
+msgstr "Opcions POSIX:\t\tOpcions llargues GNU: (estàndard)\n"
-#: main.c:757
+#: main.c:807
msgid "\t-f progfile\t\t--file=progfile\n"
msgstr "\t-f fitx_prog\t\t--file=fitx_prog\n"
-#: main.c:758
+#: main.c:808
msgid "\t-F fs\t\t\t--field-separator=fs\n"
msgstr "\t-F fs\t\t\t--field-separator=fs (fs=sep_camp)\n"
-#: main.c:759
+#: main.c:809
msgid "\t-v var=val\t\t--assign=var=val\n"
msgstr "\t-v var=valor\t\t--assign=var=valor\n"
-#: main.c:760
-#, fuzzy
+#: main.c:810
msgid "Short options:\t\tGNU long options: (extensions)\n"
-msgstr "Opcions POSIX:\t\tOpcions llargues GNU:\n"
+msgstr "Opcions curtes:\t\tOpcions llargues GNU: (extensions)\n"
-#: main.c:761
+#: main.c:811
msgid "\t-b\t\t\t--characters-as-bytes\n"
-msgstr ""
+msgstr "\t-b\t\t\t--characters-as-bytes\n"
-#: main.c:762
-#, fuzzy
+#: main.c:812
msgid "\t-c\t\t\t--traditional\n"
-msgstr "\t-W traditional\t\t--traditional\n"
+msgstr "\t-c\t\t\t--traditional\n"
-#: main.c:763
-#, fuzzy
+#: main.c:813
msgid "\t-C\t\t\t--copyright\n"
-msgstr "\t-W copyright\t\t--copyright\n"
+msgstr "\t-C\t\t\t--copyright\n"
+
+#: main.c:814
+msgid "\t-d[file]\t\t--dump-variables[=file]\n"
+msgstr "\t-d[file]\t\t--dump-variables[=file]\n"
-#: main.c:764
-#, fuzzy
-msgid "\t-d [file]\t\t--dump-variables[=file]\n"
-msgstr "\t-W dump-variables[=fitxer] --dump-variables[=fitxer]\n"
+#: main.c:815
+msgid "\t-D[file]\t\t--debug[=file]\n"
+msgstr "\t-D[file]\t\t--debug[=file]\n"
-#: main.c:765
-#, fuzzy
+#: main.c:816
msgid "\t-e 'program-text'\t--source='program-text'\n"
-msgstr "\t-W source=text_prog\t--source=text_prog\n"
+msgstr "\t-e 'program-text'\t--source='program-text'\n"
-#: main.c:766
-#, fuzzy
+#: main.c:817
msgid "\t-E file\t\t\t--exec=file\n"
-msgstr "\t-W profile[=fitxer]\t--profile[=fitxer]\n"
+msgstr "\t-E file\t\t\t--exec=file\n"
-#: main.c:767
-#, fuzzy
+#: main.c:818
msgid "\t-g\t\t\t--gen-pot\n"
-msgstr "\t-W gen-po\t\t--gen-po\n"
+msgstr "\t-g\t\t\t--gen-pot\n"
-#: main.c:768
-#, fuzzy
+#: main.c:819
msgid "\t-h\t\t\t--help\n"
-msgstr "\t-W help\t\t\t--help\n"
+msgstr "\t-h\t\t\t--help\n"
-#: main.c:769
-#, fuzzy
+#: main.c:820
+msgid "\t-i includefile\t\t--include=includefile\n"
+msgstr "\t-i includefile\t\t--include=fitxer a incloure\n"
+
+#: main.c:821
+msgid "\t-l library\t\t--load=library\n"
+msgstr "\t-l library\t\t--load=biblioteca\n"
+
+#: main.c:822
msgid "\t-L [fatal]\t\t--lint[=fatal]\n"
-msgstr "\t-W lint[=fatal]\t\t--lint[=fatal]\n"
+msgstr "\t-L [fatal]\t\t--lint[=fatal]\n"
-#: main.c:770
-#, fuzzy
+#: main.c:823
msgid "\t-n\t\t\t--non-decimal-data\n"
-msgstr "\t-W non-decimal-data\t--non-decimal-data\n"
+msgstr "\t-n\t\t\t--non-decimal-data\n"
+
+#: main.c:824
+msgid "\t-M\t\t\t--bignum\n"
+msgstr "\t-M\t\t\t--bignum\n"
-#: main.c:771
+#: main.c:825
msgid "\t-N\t\t\t--use-lc-numeric\n"
-msgstr ""
+msgstr "\t-N\t\t\t--use-lc-numeric\n"
+
+#: main.c:826
+msgid "\t-o[file]\t\t--pretty-print[=file]\n"
+msgstr "\t-o[file]\t\t--pretty-print[=file]\n"
-#: main.c:772
+#: main.c:827
msgid "\t-O\t\t\t--optimize\n"
-msgstr ""
+msgstr "\t-O\t\t\t--optimize\n"
-#: main.c:773
-#, fuzzy
-msgid "\t-p [file]\t\t--profile[=file]\n"
-msgstr "\t-W profile[=fitxer]\t--profile[=fitxer]\n"
+#: main.c:828
+msgid "\t-p[file]\t\t--profile[=file]\n"
+msgstr "\t-p[file]\t\t--profile[=file]\n"
-#: main.c:774
-#, fuzzy
+#: main.c:829
msgid "\t-P\t\t\t--posix\n"
-msgstr "\t-W posix\t\t--posix\n"
+msgstr "\t-P\t\t\t--posix\n"
-#: main.c:775
-#, fuzzy
+#: main.c:830
msgid "\t-r\t\t\t--re-interval\n"
-msgstr "\t-W re-interval\t\t--re-interval\n"
+msgstr "\t-r\t\t\t--re-interval\n"
-#: main.c:777
-#, fuzzy
-msgid "\t-R file\t\t\t--command=file\n"
-msgstr "\t-W profile[=fitxer]\t--profile[=fitxer]\n"
-
-#: main.c:778
+#: main.c:831
msgid "\t-S\t\t\t--sandbox\n"
-msgstr ""
+msgstr "\t-S\t\t\t--sandbox\n"
-#: main.c:779
-#, fuzzy
+#: main.c:832
msgid "\t-t\t\t\t--lint-old\n"
-msgstr "\t-W lint-old\t\t--lint-old\n"
+msgstr "\t-t\t\t\t--lint-old\n"
-#: main.c:780
-#, fuzzy
+#: main.c:833
msgid "\t-V\t\t\t--version\n"
-msgstr "\t-W version\t\t--version\n"
+msgstr "\t-V\t\t\t--version\n"
-#: main.c:782
+#: main.c:835
msgid "\t-W nostalgia\t\t--nostalgia\n"
msgstr "\t-W nostalgia\t\t--nostalgia\n"
-#: main.c:785
-#, fuzzy
+#: main.c:838
msgid "\t-Y\t\t--parsedebug\n"
-msgstr "\t-W parsedebug\t\t--parsedebug\n"
+msgstr "\t-Y\t\t--parsedebug\n"
#. TRANSLATORS: --help output 5 (end)
#. TRANSLATORS: the placeholder indicates the bug-reporting address
#. for this application. Please add _another line_ with the
#. address for translation bugs.
#. no-wrap
-#: main.c:794
-#, fuzzy
+#: main.c:847
msgid ""
"\n"
"To report bugs, see node `Bugs' in `gawk.info', which is\n"
"section `Reporting Problems and Bugs' in the printed version.\n"
"\n"
-msgstr "a la secció «Reporting Problems and Bugs» de la versió impresa.\n"
+msgstr ""
+"\n"
+"Per informar d'errors, vegeu el node `Bugs' a `gawk.info', que\n"
+"és la secció `Informant sobre problemes i errors' a la versió impresa.\n"
+"Informeu dels errors de traducció a <ca@li.org>\n"
-#: main.c:798
+#: main.c:851
msgid ""
"gawk is a pattern scanning and processing language.\n"
"By default it reads standard input and writes standard output.\n"
"\n"
msgstr ""
+"gawk és un llenguatge d'anàlisi i processament de patrons.\n"
+"De forma predeterminada llegeix l'entrada estàndard i escriu a la sortida "
+"estàndar.\n"
-#: main.c:802
+#: main.c:855
msgid ""
"Examples:\n"
"\tgawk '{ sum += $1 }; END { print sum }' file\n"
"\tgawk -F: '{ print $1 }' /etc/passwd\n"
msgstr ""
+"Exemples:\n"
+"\tgawk '{ sum += $1 }; END { print sum }' fitxer\n"
+"\tgawk -F: '{ print $1 }' /etc/passwd\n"
-#: main.c:822
-#, fuzzy, c-format
+#: main.c:880
+#, c-format
msgid ""
"Copyright (C) 1989, 1991-%d Free Software Foundation.\n"
"\n"
@@ -1774,11 +3214,11 @@ msgstr ""
"\n"
"Aquest programa és programari lliure; pot redistribuir-se i/o modificar-se\n"
"sota els termes de la Llicència Pública General de GNU tal i como està\n"
-"publicada per la Free Software Foundation; ja siga en la versió 2 de la\n"
+"publicada per la Free Software Foundation; ja siga en la versió 3 de la\n"
"Llicència, o (a la vostra elecció) qualsevol versió posterior.\n"
"\n"
-#: main.c:830
+#: main.c:888
msgid ""
"This program is distributed in the hope that it will be useful,\n"
"but WITHOUT ANY WARRANTY; without even the implied warranty of\n"
@@ -1792,145 +3232,204 @@ msgstr ""
"Per a més detalls consulteu la Llicència Pública General de GNU.\n"
"\n"
-#: main.c:841
-#, fuzzy
+#: main.c:894
msgid ""
"You should have received a copy of the GNU General Public License\n"
"along with this program. If not, see http://www.gnu.org/licenses/.\n"
msgstr ""
-"Junt amb aquest programa hauríeu d'haber rebut una còpia de la Llicència\n"
-"Pública General de GNU; si no és així, escriviu a la Free Software\n"
-"Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.\n"
+"Junt amb aquest programa hauríeu d'haver rebut una còpia de la Llicència\n"
+"Pública General de GNU; si no és així, vegeu http://www.gnu.org/licenses/.\n"
-#: main.c:876
+#: main.c:931
msgid "-Ft does not set FS to tab in POSIX awk"
msgstr "-Ft no permet inicialitzar FS a un tabulador en la versió POSIX de awk"
-#: main.c:1110
+#: main.c:1208
#, c-format
msgid "unknown value for field spec: %d\n"
-msgstr ""
+msgstr "valor desconegut per a l'especificació de camp: %d\n"
-#: main.c:1170
+#: main.c:1306
#, c-format
msgid ""
"%s: `%s' argument to `-v' not in `var=value' form\n"
"\n"
msgstr ""
+"%s: `%s' l'argument per a `-v' no està en forma `var=valor'\n"
+"\n"
-#: main.c:1190
+#: main.c:1332
#, c-format
msgid "`%s' is not a legal variable name"
-msgstr ""
+msgstr "`%s' no és nom legal de variable"
-#: main.c:1193
+#: main.c:1335
#, c-format
msgid "`%s' is not a variable name, looking for file `%s=%s'"
+msgstr "`%s' no és un valor de variable, s'esperava fitxer `%s=%s'"
+
+#: main.c:1339
+#, c-format
+msgid "cannot use gawk builtin `%s' as variable name"
msgstr ""
+"no es pot usar el nom de la funció integrada `%s' com a nom de variable"
+
+#: main.c:1344
+#, c-format
+msgid "cannot use function `%s' as variable name"
+msgstr "no es pot usar el nom de la funció interna `%s' com nom de variable"
-#: main.c:1246
+#: main.c:1397
msgid "floating point exception"
msgstr "excepció de coma flotant"
-#: main.c:1253
+#: main.c:1404
msgid "fatal error: internal error"
msgstr "error fatal: error intern"
-#: main.c:1268
-#, fuzzy
+#: main.c:1419
msgid "fatal error: internal error: segfault"
-msgstr "error fatal: error intern"
+msgstr "error fatal: error intern: segfault"
-#: main.c:1280
-#, fuzzy
+#: main.c:1431
msgid "fatal error: internal error: stack overflow"
-msgstr "error fatal: error intern"
+msgstr "error fatal: error intern: sobreeiximent de pila"
-#: main.c:1330
+#: main.c:1490
#, c-format
msgid "no pre-opened fd %d"
msgstr "no s'ha pre-obert el descriptor fd per a %d"
-#: main.c:1337
+#: main.c:1497
#, c-format
msgid "could not pre-open /dev/null for fd %d"
msgstr "no es pot pre-obrir /dev/null per al descriptor fd %d"
-#: main.c:1360 main.c:1369
+#: mpfr.c:550
+#, c-format
+msgid "PREC value `%.*s' is invalid"
+msgstr "Valor PREC `%.*s' no és vàlid"
+
+#: mpfr.c:608
+#, c-format
+msgid "RNDMODE value `%.*s' is invalid"
+msgstr "Valor RNDMODE `%.*s' no és vàlid"
+
+#: mpfr.c:698
+#, c-format
+msgid "%s: received non-numeric argument"
+msgstr "%s: s'ha rebut un argument que no és numèric"
+
+#: mpfr.c:800
+msgid "compl(%Rg): negative value will give strange results"
+msgstr "compl(%Rg): el valor negatiu donarà resultats estranys"
+
+#: mpfr.c:804
+msgid "comp(%Rg): fractional value will be truncated"
+msgstr "compl(%Rg): el valor fraccionari serà truncat"
+
+#: mpfr.c:816
+#, c-format
+msgid "cmpl(%Zd): negative values will give strange results"
+msgstr "cmpl(%Zd): els valors negatius donaran resultats estranys"
+
+#: mpfr.c:835
+#, c-format
+msgid "%s: received non-numeric argument #%d"
+msgstr "%s: s'ha rebut un argument no numèric #%d"
+
+#: mpfr.c:845
+msgid "%s: argument #%d has invalid value %Rg, using 0"
+msgstr "%s: l'argument #%d té valor no vàlid %Rg, s'usarà 0"
+
+#: mpfr.c:857
+msgid "%s: argument #%d negative value %Rg will give strange results"
+msgstr "%s: l'argument #%d amb valor negatiu %Rg donarà resultats estranys"
+
+#: mpfr.c:863
+msgid "%s: argument #%d fractional value %Rg will be truncated"
+msgstr "%s: l'argument #%d amb valor fraccional %Rg serà truncat"
+
+#: mpfr.c:878
#, c-format
-msgid "could not find groups: %s"
-msgstr "no es poden trobar els grups: %s"
+msgid "%s: argument #%d negative value %Zd will give strange results"
+msgstr "%s: l'argument #%d amb valor negatiu %Zd donarà resultats estranys"
-#: msg.c:63
+#: msg.c:68
#, c-format
msgid "cmd. line:"
msgstr "línia cmd.:"
-#: msg.c:107
-msgid "error: "
-msgstr "Error: "
-
-#: node.c:401
+#: node.c:421
msgid "backslash at end of string"
msgstr "barra invertida al final de la cadena"
-#: node.c:502
-#, fuzzy, c-format
+#: node.c:500
+#, c-format
msgid "old awk does not support the `\\%c' escape sequence"
-msgstr "l'antic awk no suporta l'operador «**=»"
+msgstr "l'antic awk no dóna suport a la seqüencia d'escapada `\\%c'"
-#: node.c:553
+#: node.c:551
msgid "POSIX does not allow `\\x' escapes"
-msgstr "POSIX no permet seqüències d'escapada «\\x»"
+msgstr "POSIX no permet seqüències d'escapada `\\x'"
-#: node.c:559
+#: node.c:557
msgid "no hex digits in `\\x' escape sequence"
-msgstr "no hi ha dígits hexadecimals en la seqüència d'escapada «\\x»"
+msgstr "no hi ha dígits hexadecimals en la seqüència d'escapada `\\x'"
-#: node.c:581
+#: node.c:579
#, c-format
msgid ""
"hex escape \\x%.*s of %d characters probably not interpreted the way you "
"expect"
msgstr ""
+"probablement no s'han interpretat els caràcters hex escape \\x%.*s of %d de "
+"la manera que esperàveu"
-#: node.c:596
+#: node.c:594
#, c-format
msgid "escape sequence `\\%c' treated as plain `%c'"
-msgstr "la seqüència d'escapada «\\%c» és tractada com a una simple «%c»"
+msgstr "la seqüència d'escapada `\\%c' és tractada com a una simple `%c'"
-#: node.c:735
+#: node.c:739
msgid ""
"Invalid multibyte data detected. There may be a mismatch between your data "
"and your locale."
msgstr ""
+"S'han detectat dades multibyte no vàlides. Pot haver-hi una discordança "
+"entre les vostres dades i la vostra configuració local"
-#: posix/gawkmisc.c:175
-#, fuzzy, c-format
+#: posix/gawkmisc.c:177
+#, c-format
msgid "%s %s `%s': could not get fd flags: (fcntl F_GETFD: %s)"
-msgstr "%s %s «%s»: no es pot inicialitzar close-on-exec: (fcntl: %s)"
+msgstr ""
+"%s %s `%s': no s'han pogut obtenir els indicadors fd: (fcntl F_GETFD: %s)"
-#: posix/gawkmisc.c:187
-#, fuzzy, c-format
+#: posix/gawkmisc.c:189
+#, c-format
msgid "%s %s `%s': could not set close-on-exec: (fcntl F_SETFD: %s)"
-msgstr "%s %s «%s»: no es pot inicialitzar close-on-exec: (fcntl: %s)"
+msgstr "%s %s `%s': no s'ha pogut establir close-on-exec: (fcntl F_SETFD: %s)"
-#: profile.c:83
+#: profile.c:71
#, c-format
msgid "could not open `%s' for writing: %s"
-msgstr "no es pot obrir «%s» per a escriptura: %s"
+msgstr "no es pot obrir `%s' per a escriptura: %s"
-#: profile.c:203
-#, fuzzy, c-format
+#: profile.c:73
+msgid "sending profile to standard error"
+msgstr "enviant el perfil a l'eixida d'error estàndard"
+
+#: profile.c:193
+#, c-format
msgid ""
"\t# %s block(s)\n"
"\n"
msgstr ""
-"\t# Bloc(s) FINAL\n"
+"\t# %s bloc(s)\n"
"\n"
-#: profile.c:208
-#, fuzzy, c-format
+#: profile.c:198
+#, c-format
msgid ""
"\t# Rule(s)\n"
"\n"
@@ -1938,17 +3437,30 @@ msgstr ""
"\t# Regla(es)\n"
"\n"
-#: profile.c:279
-#, fuzzy, c-format
+#: profile.c:272
+#, c-format
msgid "internal error: %s with null vname"
-msgstr "error intern: Node_var amb vname nul"
+msgstr "error intern: %s amb vname nul"
+
+#: profile.c:537
+msgid "internal error: builtin with null fname"
+msgstr "error intern: funció integrada amb fname nul"
-#: profile.c:938
+#: profile.c:949
+#, c-format
+msgid ""
+"\t# Loaded extensions (-l and/or @load)\n"
+"\n"
+msgstr ""
+"\t# Extensions carregades (-l i/o @load)\n"
+"\n"
+
+#: profile.c:972
#, c-format
msgid "\t# gawk profile, created %s\n"
msgstr "\t# perfil gawk, creat %s\n"
-#: profile.c:1317
+#: profile.c:1475
#, c-format
msgid ""
"\n"
@@ -1957,152 +3469,137 @@ msgstr ""
"\n"
"\t# Funcions, llistades alfabèticament\n"
-#: profile.c:1356
+#: profile.c:1513
#, c-format
msgid "redir2str: unknown redirection type %d"
-msgstr ""
+msgstr "redir2str: tipus desconegut de redireccionament %d"
-#: re.c:589
-#, c-format
-msgid "range of the form `[%c-%c]' is locale dependant"
-msgstr ""
-
-#: re.c:611
+#: re.c:607
#, c-format
msgid "regexp component `%.*s' should probably be `[%.*s]'"
-msgstr ""
+msgstr "el component regexp `%.*s' probablement hauria de ser `[%.*s]'"
-#: regcomp.c:132
+#: regcomp.c:131
msgid "Success"
msgstr "Èxit"
-#: regcomp.c:135
+#: regcomp.c:134
msgid "No match"
msgstr "No hi ha concordança"
-#: regcomp.c:138
+#: regcomp.c:137
msgid "Invalid regular expression"
msgstr "Expressió regular no vàlida"
-#: regcomp.c:141
+#: regcomp.c:140
msgid "Invalid collation character"
msgstr "Caràcter de comparació no vàlid"
-#: regcomp.c:144
+#: regcomp.c:143
msgid "Invalid character class name"
msgstr "Nom de classe de caràcters no vàlid"
-#: 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 "Referència cap enradera no vàlida"
+msgstr "Referència cap endarrere no vàlida"
-#: regcomp.c:153
+#: regcomp.c:152
msgid "Unmatched [ or [^"
msgstr "[ o [^ desemparellats"
-#: regcomp.c:156
+#: regcomp.c:155
msgid "Unmatched ( or \\("
msgstr "( o \\( desemparellats"
-#: regcomp.c:159
+#: regcomp.c:158
msgid "Unmatched \\{"
msgstr "\\{ desemparellat"
-#: regcomp.c:162
-msgid "Invalid content of \\{\\}"
-msgstr "Contingut no vàlid de \\{\\}"
-
-#: regcomp.c:165
+#: regcomp.c:164
msgid "Invalid range end"
msgstr "Final de rang no vàlid"
-#: regcomp.c:168
+#: regcomp.c:167
msgid "Memory exhausted"
msgstr "Memòria exhaurida"
-#: regcomp.c:171
+#: regcomp.c:170
msgid "Invalid preceding regular expression"
msgstr "Expressió regular precedent no vàlida"
-#: regcomp.c:174
+#: regcomp.c:173
msgid "Premature end of regular expression"
msgstr "Fí prematura de l'expressió regular"
-#: regcomp.c:177
-msgid "Regular expression too big"
-msgstr "L'expressió regular és massa gran"
-
-#: regcomp.c:180
+#: regcomp.c:179
msgid "Unmatched ) or \\)"
msgstr ") o \\) desemparellats"
-#: regcomp.c:701
+#: regcomp.c:704
msgid "No previous regular expression"
msgstr "No hi ha una expressió regular prèvia"
-#~ msgid "statement may have no effect"
-#~ msgstr "la declaració podria no tindre efecte"
+#: symbol.c:741
+msgid "can not pop main context"
+msgstr "no es pot mostrar el context principal"
-#~ msgid "attempt to use scalar `%s' as array"
-#~ msgstr "s'ha intentat usar la dada escalar «%s» com a una matriu"
+#~ msgid "reference to uninitialized element `%s[\"%s\"]'"
+#~ msgstr "referència a un element sense valor inicial `%s[\"%s\"]'"
-#, fuzzy
-#~ msgid "attempt to use array `%s' in scalar context"
-#~ msgstr "s'ha intentat usar la matriu «%s» en un context escalar"
+#~ msgid "subscript of array `%s' is null string"
+#~ msgstr "el subscript de la matriu `%s' és una cadena nul·la"
-#~ msgid "`continue' outside a loop is not allowed"
-#~ msgstr "no es permet «continue» a fora d'un bucle"
+#~ msgid "delete: illegal use of variable `%s' as array"
+#~ msgstr "delete: ús il·legal de la variable `%s' com a una matriu"
-#, fuzzy
-#~ msgid "`break' outside a loop is not allowed"
-#~ msgstr "no es permet «break» a fora d'un bucle"
+#~ msgid "%s: empty (null)\n"
+#~ msgstr "%s: buit (nul)\n"
-#~ msgid "/inet/raw client not ready yet, sorry"
-#~ msgstr "el client /inet/raw encara no està a punt, ho sento"
+#~ msgid "%s: empty (zero)\n"
+#~ msgstr "%s: buit (zero)\n"
-#~ msgid "only root may use `/inet/raw'."
-#~ msgstr "sols el root pot usar «/inet/raw»."
+#~ msgid "%s: table_size = %d, array_size = %d\n"
+#~ msgstr "%s: mida_taula = %d, mida_matriu = %d\n"
-#~ msgid "/inet/raw server not ready yet, sorry"
-#~ msgstr "el servidor /inet/raw encara no està a punt, ho sento"
+#~ msgid "%s: array_ref to %s\n"
+#~ msgstr "%s: ref_matriu a %s\n"
-#~ msgid "\t-m[fr] val\n"
-#~ msgstr "\t-m[fr] valor\n"
+#~ msgid "and: received non-numeric first argument"
+#~ msgstr "and: el primer argument rebut no és numèric"
-#~ msgid "call of `length' without parentheses is deprecated by POSIX"
-#~ msgstr "la crida de «length» sense parèntesis està desaprovada per POSIX"
+#~ msgid "or: received non-numeric first argument"
+#~ msgstr "or: el primer argument rebut no és numèric"
-#, fuzzy
-#~ msgid "reference to uninitialized field `$%s'"
-#~ msgstr "referència a una variable sense inicialitzar «%s»"
+#~ msgid "or(%lf, %lf): negative values will give strange results"
+#~ msgstr "or(%lf, %lf): els valors negatius donaran resultats estranys"
-#~ msgid "can't convert string to float"
-#~ msgstr "no es pot convertir la cadena a coma flotant"
+#~ msgid "or(%lf, %lf): fractional values will be truncated"
+#~ msgstr "or(%lf, %lf): els valors fraccionaris seran truncats"
-#~ msgid "`continue' outside a loop is not portable"
-#~ msgstr "«continue» fora d'un bucle no és portable"
+#~ msgid "xor: received non-numeric first argument"
+#~ msgstr "xor: el primer argument rebut no és numèric"
-#~ msgid "`break' outside a loop is not portable"
-#~ msgstr "«break» a fora d'un bucle no és portable"
+#~ msgid "xor(%lf, %lf): fractional values will be truncated"
+#~ msgstr "xor(%lf, %lf): els valors fraccionaris seran truncats"
-#~ msgid "`nextfile' cannot be called from a BEGIN rule"
-#~ msgstr "«nextfile» no es pot cridar des d'una regla BEGIN"
+#~ msgid "Operation Not Supported"
+#~ msgstr "Operació No Suportada"
-#~ msgid "`next' cannot be called from a BEGIN rule"
-#~ msgstr "«next» no es pot cridar des d'una regla BEGIN"
+#~ msgid "%s: illegal option -- %c\n"
+#~ msgstr "%s: opció il·legal -- %c\n"
-#~ msgid "file `%s' is a directory"
-#~ msgstr "el fitxer «%s» és un directori"
+#~ msgid "`-m[fr]' option irrelevant in gawk"
+#~ msgstr "l'opción `-m[fr]' és irrellevant en gawk"
-#~ msgid "use `PROCINFO[\"%s\"]' instead of `%s'"
-#~ msgstr "useu «PROCINFO[\"%s\"]» en comptes de «%s»"
+#~ msgid "-m option usage: `-m[fr] nnn'"
+#~ msgstr "ús de l'opció -m: `-m[fr] nnn'"
-#~ msgid "use `PROCINFO[...]' instead of `/dev/user'"
-#~ msgstr "useu «PROCINFO[...]» en comptes de «/dev/user»"
+#~ msgid "\t-m[fr] val\n"
+#~ msgstr "\t-m[fr] valor\n"
#~ msgid "\t-W compat\t\t--compat\n"
#~ msgstr "\t-W compat\t\t--compat\n"
@@ -2114,159 +3611,152 @@ msgstr "No hi ha una expressió regular prèvia"
#~ msgstr "\t-W usage\t\t--usage\n"
#~ msgid ""
-#~ "\t# BEGIN block(s)\n"
#~ "\n"
+#~ "To report bugs, see node `Bugs' in `gawk.info', which is\n"
#~ msgstr ""
-#~ "\t# Bloc(s) INICI\n"
#~ "\n"
+#~ "Per a informar d'errors, consulteu el node «Bugs' en «gawk.info', que "
+#~ "està\n"
-#~ msgid "`$' is not permitted in awk formats"
-#~ msgstr "no es permeten «$» en els formats awk"
-
-#~ msgid "arg count with `$' must be > 0"
-#~ msgstr "el compte d'arguments amb «$» ha de ser > 0"
-
-#, fuzzy
-#~ msgid "arg count %ld greater than total number of supplied arguments"
-#~ msgstr ""
-#~ "el comte d'arguments %d és major que el nombre total d'arguments "
-#~ "proporcionats"
-
-#~ msgid "`$' not permitted after period in format"
-#~ msgstr "no es permet «$» després d'un punt en el format"
-
-#~ msgid "no `$' supplied for positional field width or precision"
-#~ msgstr "no es proporciona «$» per a l'ample o precisió del camp de posició"
-
-#~ msgid "`l' is meaningless in awk formats; ignored"
-#~ msgstr "«l» manca de significat en els formats awk; serà ignorat"
-
-#~ msgid "`l' is not permitted in POSIX awk formats"
-#~ msgstr "«l» no està permés en els formats POSIX de awk"
-
-#~ msgid "`L' is meaningless in awk formats; ignored"
-#~ msgstr "«L» manca de significat en els formats awk; serà ignorat"
-
-#~ msgid "`L' is not permitted in POSIX awk formats"
-#~ msgstr "«L» no està permés en els formats POSIX de awk"
-
-#~ msgid "`h' is meaningless in awk formats; ignored"
-#~ msgstr "«h» manca de significat en els formats awk; serà ignorat"
-
-#~ msgid "`h' is not permitted in POSIX awk formats"
-#~ msgstr "«h» no està permés en els formats POSIX de awk"
-
-#~ msgid "not enough arguments to satisfy format string"
-#~ msgstr "no hi ha prou arguments per a satisfer el format d'una cadena"
-
-#~ msgid "^ ran out for this one"
-#~ msgstr "^ desbordament per a aquest"
-
-#~ msgid "[s]printf: format specifier does not have control letter"
-#~ msgstr "[s]printf: l'especificador de format no conté lletra de control"
-
-#~ msgid "too many arguments supplied for format string"
-#~ msgstr "s'han proporcionat masses arguments per a la cadena de format"
-
-#, fuzzy
-#~ msgid "attempt to use array parameter `%s' in a scalar context"
-#~ msgstr "s'ha intentat usar la matriu «%s» en un context escalar"
+#~ msgid "invalid syntax in name `%s' for variable assignment"
+#~ msgstr "sintaxi no vàlida en el nom «%s' per a l'asignació de la variable"
-#~ msgid "can't open two way socket `%s' for input/output (%s)"
-#~ msgstr ""
-#~ "no es pot obrir un socket bidireccional «%s» per a les entrades/eixides "
-#~ "(%s)"
+#~ msgid "could not find groups: %s"
+#~ msgstr "no es poden trobar els grups: %s"
-#~ msgid "%s: illegal option -- %c\n"
-#~ msgstr "%s: opció il·legal -- %c\n"
+#~ msgid "internal error: Node_var_array with null vname"
+#~ msgstr "error intern: Node_var_array amb vname nul"
-#~ msgid ""
-#~ "concatenation: side effects in one expression have changed the length of "
-#~ "another!"
-#~ msgstr ""
-#~ "concatenació: els efectes colaterals en una expressió han canviat la "
-#~ "longitud d'una altra!"
+#~ msgid "or used in other expression context"
+#~ msgstr "o s'ha emprat en un altre context de l'expressió"
#~ msgid "illegal type (%s) in tree_eval"
#~ msgstr "tipus il·legal (%s) en tree_eval"
-#~ msgid "\t# -- main --\n"
-#~ msgstr "\t# -- principal --\n"
+#~ msgid "attempt to use function `%s' as array"
+#~ msgstr "s'ha intentat usar la funció «%s» com a una matriu"
-#~ msgid "invalid tree type %s in redirect()"
-#~ msgstr "tipus d'arbre %s no vàlid dintre de redirect()"
-
-#~ msgid "unexpected type %s in prec_level"
-#~ msgstr "tipus %s inesperat en prec_level"
-
-#, fuzzy
-#~ msgid "Unknown node type %s in pp_var"
-#~ msgstr "tipo de node %d desconegut"
+#~ msgid "`%s' is a function, assignment is not allowed"
+#~ msgstr "«%s» és una funció, l'assignació no és permesa"
-#~ msgid "delete: illegal use of variable `%s' as array"
-#~ msgstr "delete: ús il·legal de la variable «%s» com a una matriu"
+#~ msgid "assignment is not allowed to result of builtin function"
+#~ msgstr ""
+#~ "no es permet l'assignació per a obtindre un resultat d'una funció interna"
#~ msgid ""
+#~ "\t# BEGIN block(s)\n"
#~ "\n"
-#~ "To report bugs, see node `Bugs' in `gawk.info', which is\n"
#~ msgstr ""
+#~ "\t# Bloc(s) INICI\n"
#~ "\n"
-#~ "Per a informar d'errors, consulteu el node «Bugs» en «gawk.info», que "
-#~ "està\n"
-
-#~ msgid "invalid syntax in name `%s' for variable assignment"
-#~ msgstr "sintaxi no vàlida en el nom «%s» per a l'asignació de la variable"
-
-#~ msgid "internal error: Node_var_array with null vname"
-#~ msgstr "error intern: Node_var_array amb vname nul"
-
-#~ msgid "or used in other expression context"
-#~ msgstr "o s'ha emprat en un altre context de l'expressió"
-#~ msgid "`%s' is a function, assignment is not allowed"
-#~ msgstr "«%s» és una funció, l'assignació no és permesa"
+#~ msgid "unexpected type %s in prec_level"
+#~ msgstr "tipus %s inesperat en prec_level"
#~ msgid "BEGIN blocks must have an action part"
#~ msgstr "Els blocs INICI han de tindre una part d'acció"
-#~ msgid "`nextfile' used in BEGIN or END action"
-#~ msgstr "«nextfile» és usat dintre de l'acció BEGIN o END"
+#~ msgid "statement may have no effect"
+#~ msgstr "la declaració podria no tindre efecte"
#~ msgid "non-redirected `getline' undefined inside BEGIN or END action"
#~ msgstr "«getline» no redirigit sense definir dintre de l'acció BEGIN o END"
+#~ msgid "call of `length' without parentheses is deprecated by POSIX"
+#~ msgstr "la crida de «length» sense parèntesis està desaprovada per POSIX"
+
#~ msgid "fptr %x not in tokentab\n"
#~ msgstr "fptr %x no està en la taula de referència\n"
+#~ msgid "`%s' is a Bell Labs extension"
+#~ msgstr "«%s» és una extensió de Bell Labs"
+
#~ msgid "gsub third parameter is not a changeable object"
#~ msgstr "gsub: el tercer argument no és un objecte intercanviable"
-#~ msgid "Unfinished \\ escape"
-#~ msgstr "seqüència d'escapada \\ sense finalitzar"
-
#~ msgid "unfinished repeat count"
#~ msgstr "repetició del comptador sense finalitzar"
#~ msgid "malformed repeat count"
#~ msgstr "repetició del comptador malformada"
-#~ msgid "Unbalanced ["
-#~ msgstr "[ sense aparellar"
+#~ msgid "out of memory"
+#~ msgstr "memòria esgotada"
-#~ msgid "Unbalanced ("
-#~ msgstr "( sense aparellar"
+#~ msgid "field %d in FIELDWIDTHS, must be > 0"
+#~ msgstr "el camp %d en FIELDWIDTHS, hauria de ser > 0"
-#~ msgid "No regexp syntax bits specified"
-#~ msgstr "No s'especifiquen els bits de sintaxi de l'expressió regular"
+#~ msgid ""
+#~ "for loop: array `%s' changed size from %d to %d during loop execution"
+#~ msgstr ""
+#~ "bucle for: la matriu «%s» ha canviat de mida de %d a %d durant l'execució "
+#~ "del bucle"
-#~ msgid "Unbalanced )"
-#~ msgstr ") sense aparellar"
+#~ msgid "`break' outside a loop is not portable"
+#~ msgstr "«break» a fora d'un bucle no és portable"
-#~ msgid "field %d in FIELDWIDTHS, must be > 0"
-#~ msgstr "el camp %d en FIELDWIDTHS, hauria de ser > 0"
+#~ msgid "`continue' outside a loop is not portable"
+#~ msgstr "«continue» fora d'un bucle no és portable"
+
+#~ msgid "`next' cannot be called from a BEGIN rule"
+#~ msgstr "«next» no es pot cridar des d'una regla BEGIN"
+
+#~ msgid "`next' cannot be called from an END rule"
+#~ msgstr "«next» no es pot cridar des d'una regla FINAL"
+
+#~ msgid "`nextfile' cannot be called from a BEGIN rule"
+#~ msgstr "«nextfile» no es pot cridar des d'una regla BEGIN"
+
+#~ msgid "`nextfile' cannot be called from an END rule"
+#~ msgstr "«nextfile» no es pot cridar des d'una regla FINAL"
+
+#~ msgid "statement has no effect"
+#~ msgstr "la sentència no té efecte"
+
+#~ msgid "assignment used in conditional context"
+#~ msgstr "assignació usada en un context condicional"
+
+#~ msgid ""
+#~ "concatenation: side effects in one expression have changed the length of "
+#~ "another!"
+#~ msgstr ""
+#~ "concatenació: els efectes colaterals en una expressió han canviat la "
+#~ "longitud d'una altra!"
#~ msgid "function %s called\n"
#~ msgstr "s'ha cridat a la funció %s\n"
-#~ msgid "internal error: file `%s', line %d\n"
-#~ msgstr "error intern: fitxer «%s», línia %d\n"
+#~ msgid "\t# -- main --\n"
+#~ msgstr "\t# -- principal --\n"
+
+#~ msgid "invalid tree type %s in redirect()"
+#~ msgstr "tipus d'arbre %s no vàlid dintre de redirect()"
+
+#~ msgid "can't open two way socket `%s' for input/output (%s)"
+#~ msgstr ""
+#~ "no es pot obrir un socket bidireccional «%s» per a les entrades/eixides "
+#~ "(%s)"
+
+#~ msgid "/inet/raw client not ready yet, sorry"
+#~ msgstr "el client /inet/raw encara no està a punt, ho sento"
+
+#~ msgid "only root may use `/inet/raw'."
+#~ msgstr "sols el root pot usar «/inet/raw»."
+
+#~ msgid "/inet/raw server not ready yet, sorry"
+#~ msgstr "el servidor /inet/raw encara no està a punt, ho sento"
+
+#~ msgid "file `%s' is a directory"
+#~ msgstr "el fitxer «%s» és un directori"
+
+#~ msgid "use `PROCINFO[\"%s\"]' instead of `%s'"
+#~ msgstr "useu «PROCINFO[\"%s\"]» en comptes de «%s»"
+
+#~ msgid "use `PROCINFO[...]' instead of `/dev/user'"
+#~ msgstr "useu «PROCINFO[...]» en comptes de «/dev/user»"
+
+#~ msgid "error reading input file `%s': %s"
+#~ msgstr "error en llegir el fitxer d'entrada «%s»: %s"
+
+#~ msgid "can't convert string to float"
+#~ msgstr "no es pot convertir la cadena a coma flotant"
diff --git a/po/da.gmo b/po/da.gmo
index 3655ffb5..0ba7ffc0 100644
--- a/po/da.gmo
+++ b/po/da.gmo
Binary files differ
diff --git a/po/da.po b/po/da.po
index 2ce06bf8..f3840840 100644
--- a/po/da.po
+++ b/po/da.po
@@ -10,7 +10,7 @@ msgid ""
msgstr ""
"Project-Id-Version: gawk 4.0.0h\n"
"Report-Msgid-Bugs-To: arnold@skeeve.com\n"
-"POT-Creation-Date: 2013-05-09 16:05+0300\n"
+"POT-Creation-Date: 2014-04-08 19:23+0300\n"
"PO-Revision-Date: 2012-02-06 10:37+0100\n"
"Last-Translator: Keld Simonsen <keld@keldix.com>\n"
"Language-Team: Danish <dansk@dansk-gruppen.dk>\n"
@@ -21,89 +21,89 @@ msgstr ""
"X-Generator: Lokalize 1.0\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-#: array.c:254
+#: array.c:256
#, c-format
msgid "from %s"
msgstr "fra %s"
-#: array.c:354
+#: array.c:357
msgid "attempt to use a scalar value as array"
msgstr "forsøg på at bruge en skalar som array"
-#: array.c:356
+#: array.c:359
#, c-format
msgid "attempt to use scalar parameter `%s' as an array"
msgstr "forsøg på at bruge skalarparameteren '%s' som et array"
-#: array.c:359
+#: array.c:362
#, c-format
msgid "attempt to use scalar `%s' as an array"
msgstr "forsøg på at bruge skalar '%s' som et array"
-#: array.c:406 array.c:573 builtin.c:85 builtin.c:1591 builtin.c:1637
-#: builtin.c:1650 builtin.c:2078 builtin.c:2092 eval.c:1121 eval.c:1125
-#: eval.c:1524
+#: array.c:409 array.c:576 builtin.c:85 builtin.c:1615 builtin.c:1661
+#: builtin.c:1674 builtin.c:2102 builtin.c:2116 eval.c:1122 eval.c:1126
+#: eval.c:1531
#, c-format
msgid "attempt to use array `%s' in a scalar context"
msgstr "forsøg på at bruge array '%s' i skalarsammenhæng"
-#: array.c:580
+#: array.c:583
#, c-format
msgid "delete: index `%s' not in array `%s'"
msgstr "delete: indeks '%s' findes ikke i array '%s'"
-#: array.c:594
+#: array.c:597
#, c-format
msgid "attempt to use scalar `%s[\"%.*s\"]' as an array"
msgstr "forsøg på at bruge skalaren '%s[\"%.*s\"]' som array"
-#: array.c:773
+#: array.c:776
#, fuzzy
msgid "adump: first argument not an array"
msgstr "adump: argument er ikke et array"
-#: array.c:812
+#: array.c:815
msgid "asort: second argument not an array"
msgstr "asort: andet argument er ikke et array"
-#: array.c:813
+#: array.c:816
msgid "asorti: second argument not an array"
msgstr "asorti: andet argument er ikke et array"
-#: array.c:820
+#: array.c:823
msgid "asort: first argument not an array"
msgstr "asort: første argument er ikke et array"
-#: array.c:821
+#: array.c:824
msgid "asorti: first argument not an array"
msgstr "asorti: første argument er ikke et array"
-#: array.c:828
+#: array.c:831
msgid "asort: cannot use a subarray of first arg for second arg"
msgstr ""
"asort: kan ikke bruge et underarray af første argument for andet argument"
-#: array.c:829
+#: array.c:832
msgid "asorti: cannot use a subarray of first arg for second arg"
msgstr ""
"asorti: kan ikke bruge et underarray af første argument for andet argument"
-#: array.c:834
+#: array.c:837
msgid "asort: cannot use a subarray of second arg for first arg"
msgstr ""
"asort: kan ikke bruge et underarray af andet argument for første argument"
-#: array.c:835
+#: array.c:838
msgid "asorti: cannot use a subarray of second arg for first arg"
msgstr ""
"asorti: kan ikke bruge et underarray af andet argument for første argument"
-#: array.c:1309
+#: array.c:1314
#, c-format
msgid "`%s' is invalid as a function name"
msgstr "'%s' er ugyldigt som funktionsnavn"
-#: array.c:1313
+#: array.c:1318
#, c-format
msgid "sort comparison function `%s' is not defined"
msgstr "funktionen for sorteringssammenligning '%s' er ikke defineret"
@@ -145,11 +145,11 @@ msgstr "dublet case-værdier i switch-krop %s"
msgid "duplicate `default' detected in switch body"
msgstr "dublet 'default' opdaget i switch-krop"
-#: awkgram.y:796 awkgram.y:3699
+#: awkgram.y:796 awkgram.y:3723
msgid "`break' is not allowed outside a loop or switch"
msgstr "'break' uden for en løkke eller switch er ikke tilladt"
-#: awkgram.y:805 awkgram.y:3691
+#: awkgram.y:805 awkgram.y:3715
msgid "`continue' is not allowed outside a loop"
msgstr "'continue' uden for en løkke er ikke tilladt"
@@ -241,272 +241,272 @@ msgstr "kan ikke bruge specialvariabel '%s' til indirekte funktionskald"
msgid "invalid subscript expression"
msgstr "ugyldigt indeksudtryk"
-#: awkgram.y:2024 awkgram.y:2044 gawkapi.c:206 gawkapi.c:224 msg.c:119
+#: awkgram.y:2048 awkgram.y:2068 gawkapi.c:206 gawkapi.c:224 msg.c:126
msgid "warning: "
msgstr "advarsel: "
-#: awkgram.y:2042 gawkapi.c:192 gawkapi.c:221 msg.c:151
+#: awkgram.y:2066 gawkapi.c:192 gawkapi.c:221 msg.c:158
msgid "fatal: "
msgstr "fatal: "
-#: awkgram.y:2092
+#: awkgram.y:2116
msgid "unexpected newline or end of string"
msgstr "uventet nylinjetegn eller strengafslutning"
-#: awkgram.y:2359 awkgram.y:2435 awkgram.y:2658 debug.c:517 debug.c:533
-#: debug.c:2792 debug.c:5040
+#: awkgram.y:2383 awkgram.y:2459 awkgram.y:2682 debug.c:523 debug.c:539
+#: debug.c:2812 debug.c:5055
#, c-format
msgid "can't open source file `%s' for reading (%s)"
msgstr "kan ikke åbne kildefilen '%s' for læsning (%s)"
-#: awkgram.y:2360 awkgram.y:2485
+#: awkgram.y:2384 awkgram.y:2509
#, fuzzy, c-format
msgid "can't open shared library `%s' for reading (%s)"
msgstr "kan ikke åbne kildefilen '%s' for læsning (%s)"
-#: awkgram.y:2362 awkgram.y:2436 awkgram.y:2486 builtin.c:130 debug.c:5191
+#: awkgram.y:2386 awkgram.y:2460 awkgram.y:2510 builtin.c:135 debug.c:5206
msgid "reason unknown"
msgstr "ukendt årsag"
-#: awkgram.y:2371 awkgram.y:2395
+#: awkgram.y:2395 awkgram.y:2419
#, c-format
msgid "can't include `%s' and use it as a program file"
msgstr ""
-#: awkgram.y:2384
+#: awkgram.y:2408
#, c-format
msgid "already included source file `%s'"
msgstr "allerede inkluderet kildefil '%s'"
-#: awkgram.y:2385
+#: awkgram.y:2409
#, fuzzy, c-format
msgid "already loaded shared library `%s'"
msgstr "allerede inkluderet kildefil '%s'"
-#: awkgram.y:2420
+#: awkgram.y:2444
msgid "@include is a gawk extension"
msgstr "@include er en gawk-udvidelse"
-#: awkgram.y:2426
+#: awkgram.y:2450
msgid "empty filename after @include"
msgstr "tomt filnavn efter @include"
-#: awkgram.y:2470
+#: awkgram.y:2494
#, fuzzy
msgid "@load is a gawk extension"
msgstr "@include er en gawk-udvidelse"
-#: awkgram.y:2476
+#: awkgram.y:2500
#, fuzzy
msgid "empty filename after @load"
msgstr "tomt filnavn efter @include"
-#: awkgram.y:2610
+#: awkgram.y:2634
msgid "empty program text on command line"
msgstr "tom programtekst på kommandolinjen"
-#: awkgram.y:2725
+#: awkgram.y:2749
#, c-format
msgid "can't read sourcefile `%s' (%s)"
msgstr "kan ikke læse kildefilen '%s' (%s)"
-#: awkgram.y:2736
+#: awkgram.y:2760
#, c-format
msgid "source file `%s' is empty"
msgstr "kildefilen '%s' er tom"
-#: awkgram.y:2913
+#: awkgram.y:2937
msgid "source file does not end in newline"
msgstr "kildefilen slutter ikke med en ny linje"
-#: awkgram.y:3018
+#: awkgram.y:3042
msgid "unterminated regexp ends with `\\' at end of file"
msgstr "uafsluttet regulært udtryk slutter med '\\' i slutningen af filen"
-#: awkgram.y:3042
+#: awkgram.y:3066
#, c-format
msgid "%s: %d: tawk regex modifier `/.../%c' doesn't work in gawk"
msgstr "%s: %d: regex-ændringstegn '/.../%c' fra tawk virker ikke i gawk"
-#: awkgram.y:3046
+#: awkgram.y:3070
#, c-format
msgid "tawk regex modifier `/.../%c' doesn't work in gawk"
msgstr "regex-ændringstegn '/.../%c' fra tawk virker ikke i gawk"
-#: awkgram.y:3053
+#: awkgram.y:3077
msgid "unterminated regexp"
msgstr "uafsluttet regulært udtryk"
-#: awkgram.y:3057
+#: awkgram.y:3081
msgid "unterminated regexp at end of file"
msgstr "uafsluttet regulært udtryk i slutningen af filen"
-#: awkgram.y:3116
+#: awkgram.y:3140
msgid "use of `\\ #...' line continuation is not portable"
msgstr "brug af '\\ #...' for linjefortsættelse er ikke portabelt"
-#: awkgram.y:3132
+#: awkgram.y:3156
msgid "backslash not last character on line"
msgstr "sidste tegn på linjen er ikke en omvendt skråstreg"
-#: awkgram.y:3193
+#: awkgram.y:3217
msgid "POSIX does not allow operator `**='"
msgstr "POSIX tillader ikke operatoren '**='"
-#: awkgram.y:3195
+#: awkgram.y:3219
msgid "old awk does not support operator `**='"
msgstr "gamle versioner af awk understøtter ikke operatoren '**='"
-#: awkgram.y:3204
+#: awkgram.y:3228
msgid "POSIX does not allow operator `**'"
msgstr "POSIX tillader ikke operatoren '**'"
-#: awkgram.y:3206
+#: awkgram.y:3230
msgid "old awk does not support operator `**'"
msgstr "gamle versioner af awk understøtter ikke operatoren '**'"
-#: awkgram.y:3241
+#: awkgram.y:3265
msgid "operator `^=' is not supported in old awk"
msgstr "operatoren '^=' understøttes ikke i gamle versioner af awk"
-#: awkgram.y:3249
+#: awkgram.y:3273
msgid "operator `^' is not supported in old awk"
msgstr "operatoren '^' understøttes ikke i gamle versioner af awk"
-#: awkgram.y:3342 awkgram.y:3358 command.y:1178
+#: awkgram.y:3366 awkgram.y:3382 command.y:1178
msgid "unterminated string"
msgstr "uafsluttet streng"
-#: awkgram.y:3579
+#: awkgram.y:3603
#, c-format
msgid "invalid char '%c' in expression"
msgstr "ugyldigt tegn '%c' i udtryk"
-#: awkgram.y:3626
+#: awkgram.y:3650
#, c-format
msgid "`%s' is a gawk extension"
msgstr "'%s' er en gawk-udvidelse"
-#: awkgram.y:3631
+#: awkgram.y:3655
#, c-format
msgid "POSIX does not allow `%s'"
msgstr "POSIX tillader ikke '%s'"
-#: awkgram.y:3639
+#: awkgram.y:3663
#, c-format
msgid "`%s' is not supported in old awk"
msgstr "'%s' understøttes ikke i gamle versioner af awk"
-#: awkgram.y:3729
+#: awkgram.y:3753
msgid "`goto' considered harmful!\n"
msgstr "'goto' anses for skadelig!\n"
-#: awkgram.y:3763
+#: awkgram.y:3787
#, c-format
msgid "%d is invalid as number of arguments for %s"
msgstr "%d er et ugyldigt antal argumenter for %s"
-#: awkgram.y:3798
+#: awkgram.y:3822
#, c-format
msgid "%s: string literal as last arg of substitute has no effect"
msgstr ""
"%s: bogstavelig streng som sidste argument til erstatning har ingen effekt"
-#: awkgram.y:3803
+#: awkgram.y:3827
#, c-format
msgid "%s third parameter is not a changeable object"
msgstr "%s: tredje argument er ikke et ændringsbart objekt"
-#: awkgram.y:3886 awkgram.y:3889
+#: awkgram.y:3910 awkgram.y:3913
msgid "match: third argument is a gawk extension"
msgstr "match: tredje argument er en gawk-udvidelse"
-#: awkgram.y:3943 awkgram.y:3946
+#: awkgram.y:3967 awkgram.y:3970
msgid "close: second argument is a gawk extension"
msgstr "close: andet argument er en gawk-udvidelse"
-#: awkgram.y:3958
+#: awkgram.y:3982
msgid "use of dcgettext(_\"...\") is incorrect: remove leading underscore"
msgstr ""
"brug af dcgettext(_\"...\") er forkert: fjern det indledende "
"understregningstegn"
-#: awkgram.y:3973
+#: awkgram.y:3997
msgid "use of dcngettext(_\"...\") is incorrect: remove leading underscore"
msgstr ""
"brug af dcgettext(_\"...\") er forkert: fjern det indledende "
"understregningstegn"
-#: awkgram.y:3992
+#: awkgram.y:4016
#, fuzzy
msgid "index: regexp constant as second argument is not allowed"
msgstr "indeks: andet argument er ikke en streng"
-#: awkgram.y:4045
+#: awkgram.y:4069
#, c-format
msgid "function `%s': parameter `%s' shadows global variable"
msgstr "funktionen '%s': parameteren '%s' overskygger en global variabel"
-#: awkgram.y:4102 debug.c:4021 debug.c:4064 debug.c:5189
+#: awkgram.y:4126 debug.c:4041 debug.c:4084 debug.c:5204
#, c-format
msgid "could not open `%s' for writing (%s)"
msgstr "kunne ikke åbne '%s' for skrivning (%s)"
-#: awkgram.y:4103
+#: awkgram.y:4127
msgid "sending variable list to standard error"
msgstr "sender variabelliste til standard fejl"
-#: awkgram.y:4111
+#: awkgram.y:4135
#, c-format
msgid "%s: close failed (%s)"
msgstr "%s: lukning mislykkedes (%s)"
-#: awkgram.y:4136
+#: awkgram.y:4160
msgid "shadow_funcs() called twice!"
msgstr "shadow_funcs() kaldt to gange!"
-#: awkgram.y:4144
+#: awkgram.y:4168
msgid "there were shadowed variables."
msgstr "der var skyggede variable."
-#: awkgram.y:4215
+#: awkgram.y:4239
#, c-format
msgid "function name `%s' previously defined"
msgstr "funktionsnavnet '%s' er allerede defineret"
-#: awkgram.y:4261
+#: awkgram.y:4285
#, c-format
msgid "function `%s': can't use function name as parameter name"
msgstr "funktionen '%s': kan ikke bruge funktionsnavn som parameternavn"
-#: awkgram.y:4264
+#: awkgram.y:4288
#, c-format
msgid "function `%s': can't use special variable `%s' as a function parameter"
msgstr ""
"funktionen '%s': kan ikke bruge specialvariabel '%s' som en "
"funktionsparameter"
-#: awkgram.y:4272
+#: awkgram.y:4296
#, c-format
msgid "function `%s': parameter #%d, `%s', duplicates parameter #%d"
msgstr "funktionen '%s': parameter %d, '%s', er samme som parameter %d"
-#: awkgram.y:4366 awkgram.y:4372
+#: awkgram.y:4383 awkgram.y:4389
#, c-format
msgid "function `%s' called but never defined"
msgstr "funktionen '%s' kaldt, men aldrig defineret"
-#: awkgram.y:4376
+#: awkgram.y:4393
#, c-format
msgid "function `%s' defined but never called directly"
msgstr "funktionen '%s' defineret, men aldrig kaldt direkte"
-#: awkgram.y:4408
+#: awkgram.y:4425
#, c-format
msgid "regexp constant for parameter #%d yields boolean value"
msgstr "konstant regulært udtryk for parameter %d giver en boolesk værdi"
-#: awkgram.y:4467
+#: awkgram.y:4484
#, c-format
msgid ""
"function `%s' called with space between name and `(',\n"
@@ -515,232 +515,242 @@ msgstr ""
"funktionen '%s' kaldt med blanktegn mellem navnet og '(',\n"
"eller brugt som en variabel eller et array"
-#: awkgram.y:4703
+#: awkgram.y:4720
msgid "division by zero attempted"
msgstr "forsøgte at dividere med nul"
-#: awkgram.y:4712
+#: awkgram.y:4729
#, c-format
msgid "division by zero attempted in `%%'"
msgstr "forsøgte at dividere med nul i '%%'"
-#: builtin.c:128
+#: awkgram.y:5049
+msgid ""
+"cannot assign a value to the result of a field post-increment expression"
+msgstr ""
+
+#: awkgram.y:5052
+#, fuzzy, c-format
+msgid "invalid target of assignment (opcode %s)"
+msgstr "%d er et ugyldigt antal argumenter for %s"
+
+#: builtin.c:133
#, c-format
msgid "%s to \"%s\" failed (%s)"
msgstr "%s til '%s' mislykkedes (%s)"
-#: builtin.c:129
+#: builtin.c:134
msgid "standard output"
msgstr "standard ud"
-#: builtin.c:143
+#: builtin.c:148
msgid "exp: received non-numeric argument"
msgstr "exp: fik et ikke-numerisk argument"
-#: builtin.c:149
+#: builtin.c:154
#, c-format
msgid "exp: argument %g is out of range"
msgstr "exp: argumentet %g er uden for det tilladte område"
-#: builtin.c:224
+#: builtin.c:229
#, c-format
msgid "fflush: cannot flush: pipe `%s' opened for reading, not writing"
msgstr ""
"fflush: kan ikke rense: datakanalen '%s' åbnet for læsning, ikke skrivning"
-#: builtin.c:227
+#: builtin.c:232
#, c-format
msgid "fflush: cannot flush: file `%s' opened for reading, not writing"
msgstr "fflush: kan ikke rense: filen '%s' åbnet for læsning, ikke skrivning"
-#: builtin.c:239
+#: builtin.c:244
#, c-format
msgid "fflush: `%s' is not an open file, pipe or co-process"
msgstr "fflush: '%s' er ikke en åben fil, datakanal eller ko-proces"
-#: builtin.c:357
+#: builtin.c:362
msgid "index: received non-string first argument"
msgstr "indeks: første argument er ikke en streng"
-#: builtin.c:359
+#: builtin.c:364
msgid "index: received non-string second argument"
msgstr "indeks: andet argument er ikke en streng"
-#: builtin.c:483 mpfr.c:757
+#: builtin.c:488 mpfr.c:757
msgid "int: received non-numeric argument"
msgstr "int: fik et ikke-numerisk argument"
-#: builtin.c:520
+#: builtin.c:525
msgid "length: received array argument"
msgstr "length: fik et array-argument"
-#: builtin.c:523
+#: builtin.c:528
msgid "`length(array)' is a gawk extension"
msgstr "'length(array)' er en gawk-udvidelse"
-#: builtin.c:539
+#: builtin.c:544
msgid "length: received non-string argument"
msgstr "length: fik et argument som ikke er en streng"
-#: builtin.c:570
+#: builtin.c:575
msgid "log: received non-numeric argument"
msgstr "log: fik et ikke-numerisk argument"
-#: builtin.c:573
+#: builtin.c:578
#, c-format
msgid "log: received negative argument %g"
msgstr "log: fik et negativt argument %g"
-#: builtin.c:771 builtin.c:776
+#: builtin.c:776 builtin.c:781
msgid "fatal: must use `count$' on all formats or none"
msgstr "fatal: skal bruge 'count$' på alle formater eller ikke nogen"
-#: builtin.c:846
+#: builtin.c:851
#, c-format
msgid "field width is ignored for `%%' specifier"
msgstr "feltbredde ignoreret for '%%'-angivelse"
-#: builtin.c:848
+#: builtin.c:853
#, c-format
msgid "precision is ignored for `%%' specifier"
msgstr "præcision ignoreret for '%%'-angivelse"
-#: builtin.c:850
+#: builtin.c:855
#, c-format
msgid "field width and precision are ignored for `%%' specifier"
msgstr "feltbredde og præcision ignoreret for '%%'-angivelse"
-#: builtin.c:901
+#: builtin.c:906
msgid "fatal: `$' is not permitted in awk formats"
msgstr "fatal: '$' tillades ikke i awk-formater"
-#: builtin.c:910
+#: builtin.c:915
msgid "fatal: arg count with `$' must be > 0"
msgstr "fatal: argumentantallet med '$' skal være > 0"
-#: builtin.c:914
+#: builtin.c:919
#, c-format
msgid "fatal: arg count %ld greater than total number of supplied arguments"
msgstr "fatal: argumentantallet %ld er større end antal givne argumenter"
-#: builtin.c:918
+#: builtin.c:923
msgid "fatal: `$' not permitted after period in format"
msgstr "fatal: '$' tillades ikke efter et punktum i formatet"
-#: builtin.c:934
+#: builtin.c:939
msgid "fatal: no `$' supplied for positional field width or precision"
msgstr ""
"fatal: intet '$' angivet for bredde eller præcision af positionsangivet felt"
-#: builtin.c:1006
+#: builtin.c:1009
msgid "`l' is meaningless in awk formats; ignored"
msgstr "'l' er meningsløst i awk-formater, ignoreret"
-#: builtin.c:1010
+#: builtin.c:1013
msgid "fatal: `l' is not permitted in POSIX awk formats"
msgstr "fatal: 'l' tillades ikke i POSIX awk-formater"
-#: builtin.c:1023
+#: builtin.c:1026
msgid "`L' is meaningless in awk formats; ignored"
msgstr "'L' er meningsløst i awk-formater, ignoreret"
-#: builtin.c:1027
+#: builtin.c:1030
msgid "fatal: `L' is not permitted in POSIX awk formats"
msgstr "fatal: 'L' tillades ikke i POSIX awk-formater"
-#: builtin.c:1040
+#: builtin.c:1043
msgid "`h' is meaningless in awk formats; ignored"
msgstr "'h' er meningsløst i awk-formater, ignoreret"
-#: builtin.c:1044
+#: builtin.c:1047
msgid "fatal: `h' is not permitted in POSIX awk formats"
msgstr "fatal: 'h' tillades ikke i POSIX awk-formater"
-#: builtin.c:1439
+#: builtin.c:1463
#, c-format
msgid "[s]printf: value %g is out of range for `%%%c' format"
msgstr "[s]printf: værdi %g er uden for område for '%%%c'-format"
-#: builtin.c:1537
+#: builtin.c:1561
#, c-format
msgid "ignoring unknown format specifier character `%c': no argument converted"
msgstr ""
"ignorerer ukendt formatspecificeringstegn '%c': intet argument konverteret"
-#: builtin.c:1542
+#: builtin.c:1566
msgid "fatal: not enough arguments to satisfy format string"
msgstr "fatal: for få argumenter til formatstrengen"
-#: builtin.c:1544
+#: builtin.c:1568
msgid "^ ran out for this one"
msgstr "^ sluttede her"
-#: builtin.c:1551
+#: builtin.c:1575
msgid "[s]printf: format specifier does not have control letter"
msgstr "[s]printf: formatspecifikation har intet kommandobogstav"
-#: builtin.c:1554
+#: builtin.c:1578
msgid "too many arguments supplied for format string"
msgstr "for mange argumenter til formatstrengen"
-#: builtin.c:1610
+#: builtin.c:1634
#, fuzzy
msgid "sprintf: no arguments"
msgstr "printf: ingen argumenter"
-#: builtin.c:1633 builtin.c:1644
+#: builtin.c:1657 builtin.c:1668
msgid "printf: no arguments"
msgstr "printf: ingen argumenter"
-#: builtin.c:1687
+#: builtin.c:1711
msgid "sqrt: received non-numeric argument"
msgstr "sqrt: fik ikke-numerisk argument"
-#: builtin.c:1691
+#: builtin.c:1715
#, c-format
msgid "sqrt: called with negative argument %g"
msgstr "sqrt: kaldt med negativt argument %g"
-#: builtin.c:1722
+#: builtin.c:1746
#, c-format
msgid "substr: length %g is not >= 1"
msgstr "substr: længden %g er ikke >= 1"
-#: builtin.c:1724
+#: builtin.c:1748
#, c-format
msgid "substr: length %g is not >= 0"
msgstr "substr: længden %g er ikke >= 0"
-#: builtin.c:1731
+#: builtin.c:1755
#, c-format
msgid "substr: non-integer length %g will be truncated"
msgstr "substr: længden %g som ikke er et heltal vil blive trunkeret"
-#: builtin.c:1736
+#: builtin.c:1760
#, c-format
msgid "substr: length %g too big for string indexing, truncating to %g"
msgstr "substr: længden %g for stor til strengindeksering, trunkerer til %g"
-#: builtin.c:1748
+#: builtin.c:1772
#, c-format
msgid "substr: start index %g is invalid, using 1"
msgstr "substr: startindeks %g er ugyldigt, bruger 1"
-#: builtin.c:1753
+#: builtin.c:1777
#, c-format
msgid "substr: non-integer start index %g will be truncated"
msgstr "substr: startindeks %g som ikke er et heltal vil blive trunkeret"
-#: builtin.c:1778
+#: builtin.c:1802
msgid "substr: source string is zero length"
msgstr "substr: kildestrengen er tom"
-#: builtin.c:1794
+#: builtin.c:1818
#, c-format
msgid "substr: start index %g is past end of string"
msgstr "substr: startindeks %g er forbi slutningen på strengen"
-#: builtin.c:1802
+#: builtin.c:1826
#, c-format
msgid ""
"substr: length %g at start index %g exceeds length of first argument (%lu)"
@@ -748,191 +758,191 @@ msgstr ""
"substr: længden %g ved startindeks %g overskrider længden af første argument "
"(%lu)"
-#: builtin.c:1876
+#: builtin.c:1900
msgid "strftime: format value in PROCINFO[\"strftime\"] has numeric type"
msgstr "strftime: formatværdi i PROCINFO[\"strftime\"] har numerisk type"
-#: builtin.c:1899
+#: builtin.c:1923
msgid "strftime: received non-numeric second argument"
msgstr "strftime: fik et ikke-numerisk andet argument"
-#: builtin.c:1903
+#: builtin.c:1927
msgid "strftime: second argument less than 0 or too big for time_t"
msgstr "strftime: andet argument mindre end 0 eller for stort til time_t"
-#: builtin.c:1910
+#: builtin.c:1934
msgid "strftime: received non-string first argument"
msgstr "strftime: fik et første argument som ikke er en streng"
-#: builtin.c:1917
+#: builtin.c:1941
msgid "strftime: received empty format string"
msgstr "strftime: fik en tom formatstreng"
-#: builtin.c:1983
+#: builtin.c:2007
msgid "mktime: received non-string argument"
msgstr "mktime: fik et argument som ikke er en streng"
-#: builtin.c:2000
+#: builtin.c:2024
msgid "mktime: at least one of the values is out of the default range"
msgstr "mktime: mindst én af værdierne er udenfor standardområdet"
-#: builtin.c:2035
+#: builtin.c:2059
msgid "'system' function not allowed in sandbox mode"
msgstr "'system'-funktion ikke tilladt i sandkasse-tilstand"
-#: builtin.c:2040
+#: builtin.c:2064
msgid "system: received non-string argument"
msgstr "system: fik et argument som ikke er en streng"
-#: builtin.c:2160
+#: builtin.c:2184
#, c-format
msgid "reference to uninitialized field `$%d'"
msgstr "reference til ikke-initieret felt '$%d'"
-#: builtin.c:2247
+#: builtin.c:2271
msgid "tolower: received non-string argument"
msgstr "tolower: fik et argument som ikke er en streng"
-#: builtin.c:2281
+#: builtin.c:2305
msgid "toupper: received non-string argument"
msgstr "toupper: fik et argument som ikke er en streng"
-#: builtin.c:2317 mpfr.c:672
+#: builtin.c:2341 mpfr.c:672
msgid "atan2: received non-numeric first argument"
msgstr "atan2: fik et ikke-numerisk første argument"
-#: builtin.c:2319 mpfr.c:674
+#: builtin.c:2343 mpfr.c:674
msgid "atan2: received non-numeric second argument"
msgstr "atan2: fik et ikke-numerisk andet argument"
-#: builtin.c:2338
+#: builtin.c:2362
msgid "sin: received non-numeric argument"
msgstr "sin: fik et ikke-numerisk argument"
-#: builtin.c:2354
+#: builtin.c:2378
msgid "cos: received non-numeric argument"
msgstr "cos: fik et ikke-numerisk argument"
-#: builtin.c:2407 mpfr.c:1156
+#: builtin.c:2431 mpfr.c:1156
msgid "srand: received non-numeric argument"
msgstr "srand: fik et ikke-numerisk argument"
-#: builtin.c:2438
+#: builtin.c:2462
msgid "match: third argument is not an array"
msgstr "match: tredje argument er ikke et array"
-#: builtin.c:2710
+#: builtin.c:2734
msgid "gensub: third argument of 0 treated as 1"
msgstr "gensub: 0 i tredje argument behandlet som 1"
-#: builtin.c:3003
+#: builtin.c:3030
msgid "lshift: received non-numeric first argument"
msgstr "lshift: fik et ikke-numerisk første argument"
-#: builtin.c:3005
+#: builtin.c:3032
msgid "lshift: received non-numeric second argument"
msgstr "lshift: fik et ikke-numerisk andet argument"
-#: builtin.c:3011
+#: builtin.c:3038
#, fuzzy, c-format
msgid "lshift(%f, %f): negative values will give strange results"
msgstr "lshift(%lf, %lf): negative værdier vil give mærkelige resultater"
-#: builtin.c:3013
+#: builtin.c:3040
#, fuzzy, c-format
msgid "lshift(%f, %f): fractional values will be truncated"
msgstr "lshift(%lf, %lf): kommatalsværdier vil blive trunkeret"
-#: builtin.c:3015
+#: builtin.c:3042
#, fuzzy, c-format
msgid "lshift(%f, %f): too large shift value will give strange results"
msgstr ""
"lshift(%lf, %lf): for store skifteværdier vil give mærkelige resultater"
-#: builtin.c:3040
+#: builtin.c:3067
msgid "rshift: received non-numeric first argument"
msgstr "rshift: fik et ikke-numerisk første argument"
-#: builtin.c:3042
+#: builtin.c:3069
msgid "rshift: received non-numeric second argument"
msgstr "rshift: fik et ikke-numerisk andet argument"
-#: builtin.c:3048
+#: builtin.c:3075
#, fuzzy, c-format
msgid "rshift(%f, %f): negative values will give strange results"
msgstr "rshift(%lf, %lf): negative værdier vil give mærkelige resultater"
-#: builtin.c:3050
+#: builtin.c:3077
#, fuzzy, c-format
msgid "rshift(%f, %f): fractional values will be truncated"
msgstr "rshift(%lf, %lf): kommatalsværdier vil blive trunkeret"
-#: builtin.c:3052
+#: builtin.c:3079
#, fuzzy, c-format
msgid "rshift(%f, %f): too large shift value will give strange results"
msgstr ""
"rshift(%lf, %lf): for store skifteværdier vil give mærkelige resultater"
-#: builtin.c:3077 mpfr.c:968
+#: builtin.c:3104 mpfr.c:968
#, fuzzy
msgid "and: called with less than two arguments"
msgstr "sqrt: kaldt med negativt argument %g"
-#: builtin.c:3082
+#: builtin.c:3109
#, fuzzy, c-format
msgid "and: argument %d is non-numeric"
msgstr "exp: argumentet %g er uden for det tilladte område"
-#: builtin.c:3086
+#: builtin.c:3113
#, fuzzy, c-format
msgid "and: argument %d negative value %g will give strange results"
msgstr "and(%lf, %lf): negative værdier vil give mærkelige resultater"
-#: builtin.c:3109 mpfr.c:1000
+#: builtin.c:3136 mpfr.c:1000
#, fuzzy
msgid "or: called with less than two arguments"
msgstr "sqrt: kaldt med negativt argument %g"
-#: builtin.c:3114
+#: builtin.c:3141
#, fuzzy, c-format
msgid "or: argument %d is non-numeric"
msgstr "exp: argumentet %g er uden for det tilladte område"
-#: builtin.c:3118
+#: builtin.c:3145
#, fuzzy, c-format
msgid "or: argument %d negative value %g will give strange results"
msgstr "compl(%lf): negative værdier vil give mærkelige resultater"
-#: builtin.c:3140 mpfr.c:1031
+#: builtin.c:3167 mpfr.c:1031
#, fuzzy
msgid "xor: called with less than two arguments"
msgstr "sqrt: kaldt med negativt argument %g"
-#: builtin.c:3146
+#: builtin.c:3173
#, fuzzy, c-format
msgid "xor: argument %d is non-numeric"
msgstr "exp: argumentet %g er uden for det tilladte område"
-#: builtin.c:3150
+#: builtin.c:3177
#, fuzzy, c-format
msgid "xor: argument %d negative value %g will give strange results"
msgstr "xor(%lf, %lf): negative værdier vil give mærkelige resultater"
-#: builtin.c:3175 mpfr.c:787
+#: builtin.c:3202 mpfr.c:787
msgid "compl: received non-numeric argument"
msgstr "compl: fik et ikke-numerisk argument"
-#: builtin.c:3181
+#: builtin.c:3208
#, fuzzy, c-format
msgid "compl(%f): negative value will give strange results"
msgstr "compl(%lf): negative værdier vil give mærkelige resultater"
-#: builtin.c:3183
+#: builtin.c:3210
#, fuzzy, c-format
msgid "compl(%f): fractional value will be truncated"
msgstr "compl(%lf): kommatalsværdier vil blive trunkeret"
-#: builtin.c:3352
+#: builtin.c:3379
#, c-format
msgid "dcgettext: `%s' is not a valid locale category"
msgstr "dcgettext: '%s' er ikke en gyldig lokalitetskategori"
@@ -1056,8 +1066,8 @@ msgstr ""
#: command.y:823
msgid ""
-"commands [num] - starts a list of commands to be executed at a breakpoint"
-"(watchpoint) hit."
+"commands [num] - starts a list of commands to be executed at a "
+"breakpoint(watchpoint) hit."
msgstr ""
#: command.y:825
@@ -1214,7 +1224,7 @@ msgstr ""
msgid "watch var - set a watchpoint for a variable."
msgstr ""
-#: command.y:1011 debug.c:395 msg.c:128
+#: command.y:1011 debug.c:401 msg.c:135
#, c-format
msgid "error: "
msgstr "fejl: "
@@ -1254,557 +1264,557 @@ msgstr "Ugyldigt sorteringstegn"
msgid "undefined command: %s\n"
msgstr ""
-#: debug.c:246
+#: debug.c:252
msgid "set or show the number of lines to keep in history file."
msgstr ""
-#: debug.c:248
+#: debug.c:254
msgid "set or show the list command window size."
msgstr ""
-#: debug.c:250
+#: debug.c:256
msgid "set or show gawk output file."
msgstr ""
-#: debug.c:252
+#: debug.c:258
msgid "set or show debugger prompt."
msgstr ""
-#: debug.c:254
+#: debug.c:260
msgid "(un)set or show saving of command history (value=on|off)."
msgstr ""
-#: debug.c:256
+#: debug.c:262
msgid "(un)set or show saving of options (value=on|off)."
msgstr ""
-#: debug.c:258
+#: debug.c:264
msgid "(un)set or show instruction tracing (value=on|off)."
msgstr ""
-#: debug.c:339
+#: debug.c:345
msgid "program not running."
msgstr ""
-#: debug.c:442 debug.c:597
+#: debug.c:448 debug.c:606
#, fuzzy, c-format
msgid "can't read source file `%s' (%s)"
msgstr "kan ikke læse kildefilen '%s' (%s)"
-#: debug.c:447
+#: debug.c:453
#, fuzzy, c-format
msgid "source file `%s' is empty.\n"
msgstr "kildefilen '%s' er tom"
-#: debug.c:474
+#: debug.c:480
msgid "no current source file."
msgstr ""
-#: debug.c:499
+#: debug.c:505
#, fuzzy, c-format
msgid "cannot find source file named `%s' (%s)"
msgstr "kan ikke læse kildefilen '%s' (%s)"
-#: debug.c:523
+#: debug.c:529
#, c-format
msgid "WARNING: source file `%s' modified since program compilation.\n"
msgstr ""
-#: debug.c:542
+#: debug.c:551
#, c-format
msgid "line number %d out of range; `%s' has %d lines"
msgstr ""
-#: debug.c:602
+#: debug.c:611
#, fuzzy, c-format
msgid "unexpected eof while reading file `%s', line %d"
msgstr "uventet nylinjetegn eller strengafslutning"
-#: debug.c:611
+#: debug.c:620
#, c-format
msgid "source file `%s' modified since start of program execution"
msgstr ""
-#: debug.c:723
+#: debug.c:732
#, fuzzy, c-format
msgid "Current source file: %s\n"
msgstr "allerede inkluderet kildefil '%s'"
-#: debug.c:724
+#: debug.c:733
#, c-format
msgid "Number of lines: %d\n"
msgstr ""
-#: debug.c:731
+#: debug.c:740
#, c-format
msgid "Source file (lines): %s (%d)\n"
msgstr ""
-#: debug.c:745
+#: debug.c:754
msgid ""
"Number Disp Enabled Location\n"
"\n"
msgstr ""
-#: debug.c:756
+#: debug.c:765
#, c-format
msgid "\tno of hits = %ld\n"
msgstr ""
-#: debug.c:758
+#: debug.c:767
#, c-format
msgid "\tignore next %ld hit(s)\n"
msgstr ""
-#: debug.c:760 debug.c:900
+#: debug.c:769 debug.c:909
#, c-format
msgid "\tstop condition: %s\n"
msgstr ""
-#: debug.c:762 debug.c:902
+#: debug.c:771 debug.c:911
msgid "\tcommands:\n"
msgstr ""
-#: debug.c:784
+#: debug.c:793
#, c-format
msgid "Current frame: "
msgstr ""
-#: debug.c:787
+#: debug.c:796
#, c-format
msgid "Called by frame: "
msgstr ""
-#: debug.c:791
+#: debug.c:800
#, c-format
msgid "Caller of frame: "
msgstr ""
-#: debug.c:809
+#: debug.c:818
#, c-format
msgid "None in main().\n"
msgstr ""
-#: debug.c:839
+#: debug.c:848
#, fuzzy
msgid "No arguments.\n"
msgstr "printf: ingen argumenter"
-#: debug.c:840
+#: debug.c:849
msgid "No locals.\n"
msgstr ""
-#: debug.c:848
+#: debug.c:857
msgid ""
"All defined variables:\n"
"\n"
msgstr ""
-#: debug.c:858
+#: debug.c:867
msgid ""
"All defined functions:\n"
"\n"
msgstr ""
-#: debug.c:877
+#: debug.c:886
msgid ""
"Auto-display variables:\n"
"\n"
msgstr ""
-#: debug.c:880
+#: debug.c:889
msgid ""
"Watch variables:\n"
"\n"
msgstr ""
-#: debug.c:1020
+#: debug.c:1029
#, fuzzy, c-format
msgid "no symbol `%s' in current context\n"
msgstr "'exit' kan ikke kaldes i den aktuelle kontekst"
-#: debug.c:1032 debug.c:1418
+#: debug.c:1041 debug.c:1427
#, fuzzy, c-format
msgid "`%s' is not an array\n"
msgstr "'%s' er ikke et gyldigt variabelnavn"
-#: debug.c:1046
+#: debug.c:1055
#, fuzzy, c-format
msgid "$%ld = uninitialized field\n"
msgstr "reference til ikke-initieret felt '$%d'"
-#: debug.c:1067
+#: debug.c:1076
#, fuzzy, c-format
msgid "array `%s' is empty\n"
msgstr "datafilen '%s' er tom"
-#: debug.c:1110 debug.c:1162
+#: debug.c:1119 debug.c:1171
#, fuzzy, c-format
msgid "[\"%s\"] not in array `%s'\n"
msgstr "delete: indeks '%s' findes ikke i array '%s'"
-#: debug.c:1166
+#: debug.c:1175
#, c-format
msgid "`%s[\"%s\"]' is not an array\n"
msgstr ""
-#: debug.c:1227 debug.c:4949
+#: debug.c:1236 debug.c:4964
#, fuzzy, c-format
msgid "`%s' is not a scalar variable"
msgstr "'%s' er ikke et gyldigt variabelnavn"
-#: debug.c:1249 debug.c:4979
+#: debug.c:1258 debug.c:4994
#, fuzzy, c-format
msgid "attempt to use array `%s[\"%s\"]' in a scalar context"
msgstr "forsøg på at bruge array '%s[\"%.*s\"]' i skalarsammenhæng"
-#: debug.c:1271 debug.c:4990
+#: debug.c:1280 debug.c:5005
#, fuzzy, c-format
msgid "attempt to use scalar `%s[\"%s\"]' as array"
msgstr "forsøg på at bruge skalaren '%s[\"%.*s\"]' som array"
-#: debug.c:1414
+#: debug.c:1423
#, fuzzy, c-format
msgid "`%s' is a function"
msgstr "'%s' er ugyldigt som funktionsnavn"
-#: debug.c:1456
+#: debug.c:1465
#, c-format
msgid "watchpoint %d is unconditional\n"
msgstr ""
-#: debug.c:1490
+#: debug.c:1499
#, c-format
msgid "No display item numbered %ld"
msgstr ""
-#: debug.c:1493
+#: debug.c:1502
#, c-format
msgid "No watch item numbered %ld"
msgstr ""
-#: debug.c:1519
+#: debug.c:1528
#, fuzzy, c-format
msgid "%d: [\"%s\"] not in array `%s'\n"
msgstr "delete: indeks '%s' findes ikke i array '%s'"
-#: debug.c:1758
+#: debug.c:1767
#, fuzzy
msgid "attempt to use scalar value as array"
msgstr "forsøg på at bruge en skalar som array"
-#: debug.c:1847
+#: debug.c:1856
#, c-format
msgid "Watchpoint %d deleted because parameter is out of scope.\n"
msgstr ""
-#: debug.c:1858
+#: debug.c:1867
#, c-format
msgid "Display %d deleted because parameter is out of scope.\n"
msgstr ""
-#: debug.c:1891
+#: debug.c:1900
#, c-format
msgid " in file `%s', line %d\n"
msgstr ""
-#: debug.c:1912
+#: debug.c:1921
#, c-format
msgid " at `%s':%d"
msgstr ""
-#: debug.c:1928 debug.c:1991
+#: debug.c:1937 debug.c:2000
#, c-format
msgid "#%ld\tin "
msgstr ""
-#: debug.c:1965
+#: debug.c:1974
#, c-format
msgid "More stack frames follow ...\n"
msgstr ""
-#: debug.c:2008
+#: debug.c:2017
#, fuzzy
msgid "invalid frame number"
msgstr "Ugyldig intervalslutning"
-#: debug.c:2180
+#: debug.c:2200
#, c-format
msgid "Note: breakpoint %d (enabled, ignore next %ld hits), also set at %s:%d"
msgstr ""
-#: debug.c:2187
+#: debug.c:2207
#, c-format
msgid "Note: breakpoint %d (enabled), also set at %s:%d"
msgstr ""
-#: debug.c:2194
+#: debug.c:2214
#, c-format
msgid "Note: breakpoint %d (disabled, ignore next %ld hits), also set at %s:%d"
msgstr ""
-#: debug.c:2201
+#: debug.c:2221
#, c-format
msgid "Note: breakpoint %d (disabled), also set at %s:%d"
msgstr ""
-#: debug.c:2218
+#: debug.c:2238
#, c-format
msgid "Breakpoint %d set at file `%s', line %d\n"
msgstr ""
-#: debug.c:2320
+#: debug.c:2340
#, c-format
msgid "Can't set breakpoint in file `%s'\n"
msgstr ""
-#: debug.c:2349 debug.c:2472 debug.c:3330
+#: debug.c:2369 debug.c:2492 debug.c:3350
#, fuzzy, c-format
msgid "line number %d in file `%s' out of range"
msgstr "exp: argumentet %g er uden for det tilladte område"
-#: debug.c:2353
+#: debug.c:2373
#, c-format
msgid "Can't find rule!!!\n"
msgstr ""
-#: debug.c:2355
+#: debug.c:2375
#, c-format
msgid "Can't set breakpoint at `%s':%d\n"
msgstr ""
-#: debug.c:2367
+#: debug.c:2387
#, c-format
msgid "Can't set breakpoint in function `%s'\n"
msgstr ""
-#: debug.c:2383
+#: debug.c:2403
#, c-format
msgid "breakpoint %d set at file `%s', line %d is unconditional\n"
msgstr ""
-#: debug.c:2488 debug.c:2510
+#: debug.c:2508 debug.c:2530
#, c-format
msgid "Deleted breakpoint %d"
msgstr ""
-#: debug.c:2494
+#: debug.c:2514
#, c-format
msgid "No breakpoint(s) at entry to function `%s'\n"
msgstr ""
-#: debug.c:2521
+#: debug.c:2541
#, fuzzy, c-format
msgid "No breakpoint at file `%s', line #%d\n"
msgstr "fejl ved læsning af inddatafilen '%s': %s"
-#: debug.c:2576 debug.c:2617 debug.c:2637 debug.c:2680
+#: debug.c:2596 debug.c:2637 debug.c:2657 debug.c:2700
msgid "invalid breakpoint number"
msgstr ""
-#: debug.c:2592
+#: debug.c:2612
msgid "Delete all breakpoints? (y or n) "
msgstr ""
-#: debug.c:2593 debug.c:2903 debug.c:2956
+#: debug.c:2613 debug.c:2923 debug.c:2976
msgid "y"
msgstr ""
-#: debug.c:2642
+#: debug.c:2662
#, c-format
msgid "Will ignore next %ld crossing(s) of breakpoint %d.\n"
msgstr ""
-#: debug.c:2646
+#: debug.c:2666
#, c-format
msgid "Will stop next time breakpoint %d is reached.\n"
msgstr ""
-#: debug.c:2763
+#: debug.c:2783
#, c-format
msgid "Can only debug programs provided with the `-f' option.\n"
msgstr ""
-#: debug.c:2888
+#: debug.c:2908
#, c-format
msgid "Failed to restart debugger"
msgstr ""
-#: debug.c:2902
+#: debug.c:2922
msgid "Program already running. Restart from beginning (y/n)? "
msgstr ""
-#: debug.c:2906
+#: debug.c:2926
#, c-format
msgid "Program not restarted\n"
msgstr ""
-#: debug.c:2916
+#: debug.c:2936
#, c-format
msgid "error: cannot restart, operation not allowed\n"
msgstr ""
-#: debug.c:2922
+#: debug.c:2942
#, c-format
msgid "error (%s): cannot restart, ignoring rest of the commands\n"
msgstr ""
-#: debug.c:2930
+#: debug.c:2950
#, c-format
msgid "Starting program: \n"
msgstr ""
-#: debug.c:2939
+#: debug.c:2959
#, c-format
msgid "Program exited %s with exit value: %d\n"
msgstr ""
-#: debug.c:2955
+#: debug.c:2975
msgid "The program is running. Exit anyway (y/n)? "
msgstr ""
-#: debug.c:2990
+#: debug.c:3010
#, c-format
msgid "Not stopped at any breakpoint; argument ignored.\n"
msgstr ""
-#: debug.c:2995
+#: debug.c:3015
#, c-format
msgid "invalid breakpoint number %d."
msgstr ""
-#: debug.c:3000
+#: debug.c:3020
#, c-format
msgid "Will ignore next %ld crossings of breakpoint %d.\n"
msgstr ""
-#: debug.c:3187
+#: debug.c:3207
#, c-format
msgid "'finish' not meaningful in the outermost frame main()\n"
msgstr ""
-#: debug.c:3192
+#: debug.c:3212
#, c-format
msgid "Run till return from "
msgstr ""
-#: debug.c:3235
+#: debug.c:3255
#, c-format
msgid "'return' not meaningful in the outermost frame main()\n"
msgstr ""
-#: debug.c:3349
+#: debug.c:3369
#, c-format
msgid "Can't find specified location in function `%s'\n"
msgstr ""
-#: debug.c:3357
+#: debug.c:3377
#, fuzzy, c-format
msgid "invalid source line %d in file `%s'"
msgstr "allerede inkluderet kildefil '%s'"
-#: debug.c:3372
+#: debug.c:3392
#, c-format
msgid "Can't find specified location %d in file `%s'\n"
msgstr ""
-#: debug.c:3404
+#: debug.c:3424
#, fuzzy, c-format
msgid "element not in array\n"
msgstr "delete: indeks '%s' findes ikke i array '%s'"
-#: debug.c:3404
+#: debug.c:3424
#, c-format
msgid "untyped variable\n"
msgstr ""
-#: debug.c:3446
+#: debug.c:3466
#, c-format
msgid "Stopping in %s ...\n"
msgstr ""
-#: debug.c:3523
+#: debug.c:3543
#, c-format
msgid "'finish' not meaningful with non-local jump '%s'\n"
msgstr ""
-#: debug.c:3530
+#: debug.c:3550
#, c-format
msgid "'until' not meaningful with non-local jump '%s'\n"
msgstr ""
-#: debug.c:4165
+#: debug.c:4185
msgid "\t------[Enter] to continue or q [Enter] to quit------"
msgstr ""
-#: debug.c:4166
+#: debug.c:4186
msgid "q"
msgstr ""
-#: debug.c:4986
+#: debug.c:5001
#, fuzzy, c-format
msgid "[\"%s\"] not in array `%s'"
msgstr "delete: indeks '%s' findes ikke i array '%s'"
-#: debug.c:5192
+#: debug.c:5207
#, c-format
msgid "sending output to stdout\n"
msgstr ""
-#: debug.c:5232
+#: debug.c:5247
msgid "invalid number"
msgstr ""
-#: debug.c:5366
+#: debug.c:5381
#, fuzzy, c-format
msgid "`%s' not allowed in current context; statement ignored"
msgstr "'exit' kan ikke kaldes i den aktuelle kontekst"
-#: debug.c:5374
+#: debug.c:5389
#, fuzzy
msgid "`return' not allowed in current context; statement ignored"
msgstr "'exit' kan ikke kaldes i den aktuelle kontekst"
-#: debug.c:5575
+#: debug.c:5590
#, fuzzy, c-format
msgid "No symbol `%s' in current context"
msgstr "forsøg på at bruge array '%s' i skalarsammenhæng"
-#: dfa.c:998 dfa.c:1001 dfa.c:1021 dfa.c:1031 dfa.c:1043 dfa.c:1094 dfa.c:1103
-#: dfa.c:1106 dfa.c:1111 dfa.c:1124 dfa.c:1192
+#: dfa.c:1118 dfa.c:1121 dfa.c:1142 dfa.c:1150 dfa.c:1162 dfa.c:1197
+#: dfa.c:1206 dfa.c:1209 dfa.c:1214 dfa.c:1228 dfa.c:1275
msgid "unbalanced ["
msgstr ""
-#: dfa.c:1052
+#: dfa.c:1174
#, fuzzy
msgid "invalid character class"
msgstr "Ugyldigt tegnklassenavn"
-#: dfa.c:1229
+#: dfa.c:1316
msgid "character class syntax is [[:space:]], not [:space:]"
msgstr ""
-#: dfa.c:1281
+#: dfa.c:1366
msgid "unfinished \\ escape"
msgstr ""
-#: dfa.c:1428 regcomp.c:161
+#: dfa.c:1513 regcomp.c:161
msgid "Invalid content of \\{\\}"
msgstr "Ugyldigt indhold i \\{\\}"
-#: dfa.c:1431 regcomp.c:176
+#: dfa.c:1516 regcomp.c:176
msgid "Regular expression too big"
msgstr "Regulært udtryk for stort"
-#: dfa.c:1816
+#: dfa.c:1936
msgid "unbalanced ("
msgstr ""
-#: dfa.c:1943
+#: dfa.c:2062
msgid "no syntax specified"
msgstr ""
-#: dfa.c:1951
+#: dfa.c:2070
msgid "unbalanced )"
msgstr ""
@@ -1823,11 +1833,11 @@ msgstr "ukendt opkode %d"
msgid "opcode %s not an operator or keyword"
msgstr "opkode %s er ikke en operator eller et nøgleord"
-#: eval.c:471
+#: eval.c:472
msgid "buffer overflow in genflags2str"
msgstr "bufferoverløb i genflags2str"
-#: eval.c:674
+#: eval.c:675
#, c-format
msgid ""
"\n"
@@ -1838,71 +1848,71 @@ msgstr ""
"\t# Funktionskaldsstak:\n"
"\n"
-#: eval.c:703
+#: eval.c:704
msgid "`IGNORECASE' is a gawk extension"
msgstr "'IGNORECASE' er en gawk-udvidelse"
-#: eval.c:735
+#: eval.c:736
msgid "`BINMODE' is a gawk extension"
msgstr "'BINMODE' er en gawk-udvidelse"
-#: eval.c:793
+#: eval.c:794
#, c-format
msgid "BINMODE value `%s' is invalid, treated as 3"
msgstr "BINMODE værdi '%s' er ugyldig, behandles som 3"
-#: eval.c:884
+#: eval.c:885
#, c-format
msgid "bad `%sFMT' specification `%s'"
msgstr "forkert '%sFMT'-specifikation '%s'"
-#: eval.c:968
+#: eval.c:969
msgid "turning off `--lint' due to assignment to `LINT'"
msgstr "deaktiverer '--lint' på grund af en tildeling til 'LINT'"
-#: eval.c:1146
+#: eval.c:1147
#, c-format
msgid "reference to uninitialized argument `%s'"
msgstr "reference til ikke-initieret argument '%s'"
-#: eval.c:1147
+#: eval.c:1148
#, c-format
msgid "reference to uninitialized variable `%s'"
msgstr "reference til ikke-initieret variabel '%s'"
-#: eval.c:1165
+#: eval.c:1166
msgid "attempt to field reference from non-numeric value"
msgstr "forsøg på at referere til et felt fra ikke-numerisk værdi"
-#: eval.c:1167
+#: eval.c:1168
msgid "attempt to field reference from null string"
msgstr "forsøg på at referere til et felt fra tom streng"
-#: eval.c:1175
+#: eval.c:1176
#, c-format
msgid "attempt to access field %ld"
msgstr "forsøg på at få adgang til felt %ld"
-#: eval.c:1184
+#: eval.c:1185
#, c-format
msgid "reference to uninitialized field `$%ld'"
msgstr "reference til ikke-initieret felt '$%ld'"
-#: eval.c:1271
+#: eval.c:1272
#, c-format
msgid "function `%s' called with more arguments than declared"
msgstr "funktionen '%s' kaldt med flere argumenter end deklareret"
-#: eval.c:1466
+#: eval.c:1473
#, c-format
msgid "unwind_stack: unexpected type `%s'"
msgstr "unwind_stack: uventet type `%s'"
-#: eval.c:1562
+#: eval.c:1569
msgid "division by zero attempted in `/='"
msgstr "forsøgte at dividere med nul i '/='"
-#: eval.c:1569
+#: eval.c:1576
#, c-format
msgid "division by zero attempted in `%%='"
msgstr "forsøgte at dividere med nul i '%%='"
@@ -1916,7 +1926,7 @@ msgstr "udvidelser er ikke tilladt i sandkasse-tilstand"
msgid "-l / @load are gawk extensions"
msgstr "@include er en gawk-udvidelse"
-#: ext.c:95 ext.c:177
+#: ext.c:95
msgid "load_ext: received NULL lib_name"
msgstr ""
@@ -1948,6 +1958,10 @@ msgstr ""
msgid "`extension' is a gawk extension"
msgstr "'extension' er en gawk-udvidelse"
+#: ext.c:177
+msgid "extension: received NULL lib_name"
+msgstr ""
+
#: ext.c:180
#, fuzzy, c-format
msgid "extension: cannot open library `%s' (%s)"
@@ -1972,37 +1986,37 @@ msgstr ""
msgid "make_builtin: missing function name"
msgstr "extension: mangler funktionsnavn"
-#: ext.c:238
+#: ext.c:236
#, fuzzy, c-format
msgid "make_builtin: can't redefine function `%s'"
msgstr "extension: kan ikke omdefinere funktion '%s'"
-#: ext.c:242
+#: ext.c:240
#, fuzzy, c-format
msgid "make_builtin: function `%s' already defined"
msgstr "extension: funktionen '%s' er allerede defineret"
-#: ext.c:246
+#: ext.c:244
#, fuzzy, c-format
msgid "make_builtin: function name `%s' previously defined"
msgstr "extension: funktionsnavnet '%s' er defineret tidligere"
-#: ext.c:248
+#: ext.c:246
#, fuzzy, c-format
msgid "make_builtin: can't use gawk built-in `%s' as function name"
msgstr "extension: kan ikke bruge gawk's indbyggede '%s' som funktionsnavn"
-#: ext.c:251 ext.c:304
+#: ext.c:249 ext.c:304
#, c-format
msgid "make_builtin: negative argument count for function `%s'"
msgstr "make_builtin: negativt argumentantal for funktion '%s'"
-#: ext.c:278
+#: ext.c:276
#, fuzzy
msgid "extension: missing function name"
msgstr "extension: mangler funktionsnavn"
-#: ext.c:283
+#: ext.c:279 ext.c:283
#, fuzzy, c-format
msgid "extension: illegal character `%c' in function name `%s'"
msgstr "extension: ugyldigt tegn '%c' i funktionsnavn '%s'"
@@ -2027,155 +2041,160 @@ msgstr "funktionsnavnet '%s' er allerede defineret"
msgid "extension: can't use gawk built-in `%s' as function name"
msgstr "extension: kan ikke bruge gawk's indbyggede '%s' som funktionsnavn"
-#: ext.c:374
+#: ext.c:375
#, c-format
msgid "function `%s' defined to take no more than %d argument(s)"
msgstr "funktionen '%s' defineret til at tage ikke mere end %d argumenter"
-#: ext.c:377
+#: ext.c:378
#, c-format
msgid "function `%s': missing argument #%d"
msgstr "funktion '%s': mangler argument nummer %d"
-#: ext.c:394
+#: ext.c:395
#, c-format
msgid "function `%s': argument #%d: attempt to use scalar as an array"
msgstr ""
"funktion '%s': argument nummer %d: forsøg på at bruge skalar som et array"
-#: ext.c:398
+#: ext.c:399
#, c-format
msgid "function `%s': argument #%d: attempt to use array as a scalar"
msgstr ""
"funktion '%s': argument nummer %d: forsøg på at bruge array som en skalar"
-#: ext.c:412
+#: ext.c:413
msgid "dynamic loading of library not supported"
msgstr ""
-#: extension/filefuncs.c:97
+#: extension/filefuncs.c:159
#, fuzzy
msgid "chdir: called with incorrect number of arguments, expecting 1"
msgstr "sqrt: kaldt med negativt argument %g"
-#: extension/filefuncs.c:343
+#: extension/filefuncs.c:439
#, c-format
msgid "stat: unable to read symbolic link `%s'"
msgstr ""
-#: extension/filefuncs.c:376
+#: extension/filefuncs.c:472
#, fuzzy
msgid "stat: called with wrong number of arguments"
msgstr "sqrt: kaldt med negativt argument %g"
-#: extension/filefuncs.c:383
+#: extension/filefuncs.c:479
#, fuzzy
msgid "stat: bad parameters"
msgstr "%s: er parameter\n"
-#: extension/filefuncs.c:437
+#: extension/filefuncs.c:533
#, fuzzy, c-format
msgid "fts init: could not create variable %s"
msgstr "indeks: andet argument er ikke en streng"
-#: extension/filefuncs.c:460
+#: extension/filefuncs.c:554
+#, fuzzy
+msgid "fts is not supported on this system"
+msgstr "'%s' understøttes ikke i gamle versioner af awk"
+
+#: extension/filefuncs.c:573
msgid "fill_stat_element: could not create array"
msgstr ""
-#: extension/filefuncs.c:469
+#: extension/filefuncs.c:582
msgid "fill_stat_element: could not set element"
msgstr ""
-#: extension/filefuncs.c:484
+#: extension/filefuncs.c:597
#, fuzzy
msgid "fill_path_element: could not set element"
msgstr "indeks: andet argument er ikke en streng"
-#: extension/filefuncs.c:500
+#: extension/filefuncs.c:613
msgid "fill_error_element: could not set element"
msgstr ""
-#: extension/filefuncs.c:547 extension/filefuncs.c:594
+#: extension/filefuncs.c:660 extension/filefuncs.c:707
msgid "fts-process: could not create array"
msgstr ""
-#: extension/filefuncs.c:557 extension/filefuncs.c:604
-#: extension/filefuncs.c:622
+#: extension/filefuncs.c:670 extension/filefuncs.c:717
+#: extension/filefuncs.c:735
#, fuzzy
msgid "fts-process: could not set element"
msgstr "indeks: andet argument er ikke en streng"
-#: extension/filefuncs.c:671
+#: extension/filefuncs.c:784
#, fuzzy
msgid "fts: called with incorrect number of arguments, expecting 3"
msgstr "sqrt: kaldt med negativt argument %g"
-#: extension/filefuncs.c:674
+#: extension/filefuncs.c:787
#, fuzzy
msgid "fts: bad first parameter"
msgstr "%s: er parameter\n"
-#: extension/filefuncs.c:680
+#: extension/filefuncs.c:793
#, fuzzy
msgid "fts: bad second parameter"
msgstr "%s: er parameter\n"
-#: extension/filefuncs.c:686
+#: extension/filefuncs.c:799
#, fuzzy
msgid "fts: bad third parameter"
msgstr "%s: er parameter\n"
-#: extension/filefuncs.c:693
+#: extension/filefuncs.c:806
#, fuzzy
msgid "fts: could not flatten array\n"
msgstr "'%s' er ikke et gyldigt variabelnavn"
-#: extension/filefuncs.c:711
+#: extension/filefuncs.c:824
msgid "fts: ignoring sneaky FTS_NOSTAT flag. nyah, nyah, nyah."
msgstr ""
-#: extension/filefuncs.c:728
+#: extension/filefuncs.c:841
msgid "fts: clear_array() failed\n"
msgstr ""
-#: extension/fnmatch.c:98
+#: extension/fnmatch.c:112
#, fuzzy
msgid "fnmatch: called with less than three arguments"
msgstr "sqrt: kaldt med negativt argument %g"
-#: extension/fnmatch.c:101
+#: extension/fnmatch.c:115
#, fuzzy
msgid "fnmatch: called with more than three arguments"
msgstr "sqrt: kaldt med negativt argument %g"
-#: extension/fnmatch.c:104
+#: extension/fnmatch.c:118
#, fuzzy
msgid "fnmatch: could not get first argument"
msgstr "strftime: fik et første argument som ikke er en streng"
-#: extension/fnmatch.c:109
+#: extension/fnmatch.c:123
#, fuzzy
msgid "fnmatch: could not get second argument"
msgstr "indeks: andet argument er ikke en streng"
-#: extension/fnmatch.c:114
+#: extension/fnmatch.c:128
msgid "fnmatch: could not get third argument"
msgstr ""
-#: extension/fnmatch.c:127
+#: extension/fnmatch.c:141
msgid "fnmatch is not implemented on this system\n"
msgstr ""
-#: extension/fnmatch.c:159
+#: extension/fnmatch.c:173
msgid "fnmatch init: could not add FNM_NOMATCH variable"
msgstr ""
-#: extension/fnmatch.c:169
+#: extension/fnmatch.c:183
#, c-format
msgid "fnmatch init: could not set array element %s"
msgstr ""
-#: extension/fnmatch.c:179
+#: extension/fnmatch.c:193
msgid "fnmatch init: could not install FNM array"
msgstr ""
@@ -2203,88 +2222,88 @@ msgstr "sqrt: kaldt med negativt argument %g"
msgid "wait: called with too many arguments"
msgstr "sqrt: kaldt med negativt argument %g"
-#: extension/inplace.c:110
+#: extension/inplace.c:130
msgid "inplace_begin: in-place editing already active"
msgstr ""
-#: extension/inplace.c:113 extension/inplace.c:187
+#: extension/inplace.c:133 extension/inplace.c:207
#, c-format
msgid "inplace_begin: expects 2 arguments but called with %d"
msgstr ""
-#: extension/inplace.c:116
+#: extension/inplace.c:136
msgid "inplace_begin: cannot retrieve 1st argument as a string filename"
msgstr ""
-#: extension/inplace.c:124
+#: extension/inplace.c:144
#, c-format
msgid "inplace_begin: disabling in-place editing for invalid FILENAME `%s'"
msgstr ""
-#: extension/inplace.c:131
+#: extension/inplace.c:151
#, fuzzy, c-format
msgid "inplace_begin: Cannot stat `%s' (%s)"
msgstr "atalt: extension: kan ikke åbne '%s' (%s)\n"
-#: extension/inplace.c:138
+#: extension/inplace.c:158
#, fuzzy, c-format
msgid "inplace_begin: `%s' is not a regular file"
msgstr "'%s' er ikke et gyldigt variabelnavn"
-#: extension/inplace.c:149
+#: extension/inplace.c:169
#, c-format
msgid "inplace_begin: mkstemp(`%s') failed (%s)"
msgstr ""
-#: extension/inplace.c:158
+#: extension/inplace.c:178
#, fuzzy, c-format
msgid "inplace_begin: chmod failed (%s)"
msgstr "%s: lukning mislykkedes (%s)"
-#: extension/inplace.c:165
+#: extension/inplace.c:185
#, c-format
msgid "inplace_begin: dup(stdout) failed (%s)"
msgstr ""
-#: extension/inplace.c:168
+#: extension/inplace.c:188
#, c-format
msgid "inplace_begin: dup2(%d, stdout) failed (%s)"
msgstr ""
-#: extension/inplace.c:171
+#: extension/inplace.c:191
#, fuzzy, c-format
msgid "inplace_begin: close(%d) failed (%s)"
msgstr "%s: lukning mislykkedes (%s)"
-#: extension/inplace.c:190
+#: extension/inplace.c:210
msgid "inplace_end: cannot retrieve 1st argument as a string filename"
msgstr ""
-#: extension/inplace.c:197
+#: extension/inplace.c:217
msgid "inplace_end: in-place editing not active"
msgstr ""
-#: extension/inplace.c:203
+#: extension/inplace.c:223
#, c-format
msgid "inplace_end: dup2(%d, stdout) failed (%s)"
msgstr ""
-#: extension/inplace.c:206
+#: extension/inplace.c:226
#, fuzzy, c-format
msgid "inplace_end: close(%d) failed (%s)"
msgstr "%s: lukning mislykkedes (%s)"
-#: extension/inplace.c:210
+#: extension/inplace.c:230
#, c-format
msgid "inplace_end: fsetpos(stdout) failed (%s)"
msgstr ""
-#: extension/inplace.c:223
+#: extension/inplace.c:243
#, fuzzy, c-format
msgid "inplace_end: link(`%s', `%s') failed (%s)"
msgstr "datakanalsrensning af '%s' mislykkedes (%s)."
-#: extension/inplace.c:229
+#: extension/inplace.c:253
#, fuzzy, c-format
msgid "inplace_end: rename(`%s', `%s') failed (%s)"
msgstr "lukning af fd %d ('%s') mislykkedes (%s)"
@@ -2319,177 +2338,177 @@ msgstr "sqrt: kaldt med negativt argument %g"
msgid "chr: called with inappropriate argument(s)"
msgstr "sqrt: kaldt med negativt argument %g"
-#: extension/readdir.c:203
+#: extension/readdir.c:281
#, c-format
msgid "dir_take_control_of: opendir/fdopendir failed: %s"
msgstr ""
-#: extension/readfile.c:84
+#: extension/readfile.c:113
#, fuzzy
msgid "readfile: called with too many arguments"
msgstr "sqrt: kaldt med negativt argument %g"
-#: extension/readfile.c:118
+#: extension/readfile.c:137
#, fuzzy
msgid "readfile: called with no arguments"
msgstr "sqrt: kaldt med negativt argument %g"
-#: extension/rwarray.c:120
+#: extension/rwarray.c:124
#, fuzzy
msgid "writea: called with too many arguments"
msgstr "sqrt: kaldt med negativt argument %g"
-#: extension/rwarray.c:127
+#: extension/rwarray.c:131
#, fuzzy, c-format
msgid "do_writea: argument 0 is not a string\n"
msgstr "exp: argumentet %g er uden for det tilladte område\n"
-#: extension/rwarray.c:133
+#: extension/rwarray.c:137
#, fuzzy, c-format
msgid "do_writea: argument 1 is not an array\n"
msgstr "split: fjerde argument er ikke et array\n"
-#: extension/rwarray.c:180
+#: extension/rwarray.c:184
#, c-format
msgid "write_array: could not flatten array\n"
msgstr ""
-#: extension/rwarray.c:194
+#: extension/rwarray.c:198
#, c-format
msgid "write_array: could not release flattened array\n"
msgstr ""
-#: extension/rwarray.c:276
+#: extension/rwarray.c:280
#, fuzzy
msgid "reada: called with too many arguments"
msgstr "sqrt: kaldt med negativt argument %g"
-#: extension/rwarray.c:283
+#: extension/rwarray.c:287
#, fuzzy, c-format
msgid "do_reada: argument 0 is not a string\n"
msgstr "exp: argumentet %g er uden for det tilladte område"
-#: extension/rwarray.c:289
+#: extension/rwarray.c:293
#, fuzzy, c-format
msgid "do_reada: argument 1 is not an array\n"
msgstr "match: tredje argument er ikke et array"
-#: extension/rwarray.c:333
+#: extension/rwarray.c:337
#, c-format
msgid "do_reada: clear_array failed\n"
msgstr ""
-#: extension/rwarray.c:370
+#: extension/rwarray.c:374
#, c-format
msgid "read_array: set_array_element failed\n"
msgstr ""
-#: extension/time.c:81
+#: extension/time.c:113
#, fuzzy
msgid "gettimeofday: ignoring arguments"
msgstr "mktime: fik et argument som ikke er en streng"
-#: extension/time.c:112
+#: extension/time.c:144
msgid "gettimeofday: not supported on this platform"
msgstr ""
-#: extension/time.c:133
+#: extension/time.c:165
#, fuzzy
msgid "sleep: called with too many arguments"
msgstr "sqrt: kaldt med negativt argument %g"
-#: extension/time.c:136
+#: extension/time.c:168
#, fuzzy
msgid "sleep: missing required numeric argument"
msgstr "exp: fik et ikke-numerisk argument"
-#: extension/time.c:142
+#: extension/time.c:174
#, fuzzy
msgid "sleep: argument is negative"
msgstr "exp: argumentet %g er uden for det tilladte område"
-#: extension/time.c:176
+#: extension/time.c:208
msgid "sleep: not supported on this platform"
msgstr ""
-#: field.c:339
+#: field.c:345
msgid "NF set to negative value"
msgstr "NF sat til en negativ værdi"
-#: field.c:964 field.c:971 field.c:975
+#: field.c:971 field.c:978 field.c:982
msgid "split: fourth argument is a gawk extension"
msgstr "split: fjerde argument er en gawk-udvidelse"
-#: field.c:968
+#: field.c:975
msgid "split: fourth argument is not an array"
msgstr "split: fjerde argument er ikke et array"
-#: field.c:982
+#: field.c:989
msgid "split: second argument is not an array"
msgstr "split: andet argument er ikke et array"
-#: field.c:986
+#: field.c:993
msgid "split: cannot use the same array for second and fourth args"
msgstr "split: kan ikke bruge det samme array som andet og fjerde argument"
-#: field.c:991
+#: field.c:998
msgid "split: cannot use a subarray of second arg for fourth arg"
msgstr ""
"split: kan ikke bruge et underarray af andet argument som fjerde argument"
-#: field.c:994
+#: field.c:1001
msgid "split: cannot use a subarray of fourth arg for second arg"
msgstr ""
"split: kan ikke bruge et underarray af fjerde argument som andet argument"
-#: field.c:1023
+#: field.c:1032
msgid "split: null string for third arg is a gawk extension"
msgstr "split: tom streng som tredje argument er en gawk-udvidelse"
-#: field.c:1063
+#: field.c:1072
msgid "patsplit: fourth argument is not an array"
msgstr "patsplit: fjerde argument er ikke et array"
-#: field.c:1068
+#: field.c:1077
msgid "patsplit: second argument is not an array"
msgstr "patsplit: andet argument er ikke et array"
-#: field.c:1074
+#: field.c:1083
msgid "patsplit: third argument must be non-null"
msgstr "patmatch: tredje argument er ikke et array"
-#: field.c:1078
+#: field.c:1087
msgid "patsplit: cannot use the same array for second and fourth args"
msgstr "patsplit: kan ikke bruge det samme array som andet og fjerde argument"
-#: field.c:1083
+#: field.c:1092
msgid "patsplit: cannot use a subarray of second arg for fourth arg"
msgstr ""
"patsplit: kan ikke bruge et underarray af andet argument som fjerde argument"
-#: field.c:1086
+#: field.c:1095
msgid "patsplit: cannot use a subarray of fourth arg for second arg"
msgstr ""
"patsplit: kan ikke bruge et underarray af fjerde argument som andet argument"
-#: field.c:1124
+#: field.c:1133
msgid "`FIELDWIDTHS' is a gawk extension"
msgstr "'FIELDWIDTHS' er en gawk-udvidelse"
-#: field.c:1188
+#: field.c:1197
#, c-format
msgid "invalid FIELDWIDTHS value, near `%s'"
msgstr "ugyldig FIELDWIDTHS værdi, nær '%s"
-#: field.c:1261
+#: field.c:1270
msgid "null string for `FS' is a gawk extension"
msgstr "tom streng som 'FS' er en gawk-udvidelse"
-#: field.c:1265
+#: field.c:1274
msgid "old awk does not support regexps as value of `FS'"
msgstr "gamle versioner af awk understøtter ikke regexp'er som værdi for 'FS'"
-#: field.c:1384
+#: field.c:1393
msgid "`FPAT' is a gawk extension"
msgstr "'FPAT' er en gawk-udvidelse"
@@ -2505,590 +2524,590 @@ msgstr ""
msgid "node_to_awk_value: received null val"
msgstr ""
-#: gawkapi.c:808
+#: gawkapi.c:807
#, fuzzy
msgid "remove_element: received null array"
msgstr "length: fik et array-argument"
-#: gawkapi.c:811
+#: gawkapi.c:810
msgid "remove_element: received null subscript"
msgstr ""
-#: gawkapi.c:943
+#: gawkapi.c:947
#, c-format
msgid "api_flatten_array: could not convert index %d\n"
msgstr ""
-#: gawkapi.c:948
+#: gawkapi.c:952
#, c-format
msgid "api_flatten_array: could not convert value %d\n"
msgstr ""
-#: getopt.c:603 getopt.c:632
+#: getopt.c:604 getopt.c:633
#, fuzzy, c-format
msgid "%s: option '%s' is ambiguous; possibilities:"
msgstr "%s: flaget '%s' er flertydigt\n"
-#: getopt.c:678 getopt.c:682
+#: getopt.c:679 getopt.c:683
#, c-format
msgid "%s: option '--%s' doesn't allow an argument\n"
msgstr "%s: flaget '--%s' tillader ikke noget argument\n"
-#: getopt.c:691 getopt.c:696
+#: getopt.c:692 getopt.c:697
#, c-format
msgid "%s: option '%c%s' doesn't allow an argument\n"
msgstr "%s: flaget '%c%s' tillader ikke noget argument\n"
-#: getopt.c:739 getopt.c:758
+#: getopt.c:740 getopt.c:759
#, c-format
msgid "%s: option '--%s' requires an argument\n"
msgstr "%s: flaget '--%s' kræver et argument\n"
-#: getopt.c:796 getopt.c:799
+#: getopt.c:797 getopt.c:800
#, c-format
msgid "%s: unrecognized option '--%s'\n"
msgstr "%s: ukendt flag '--%s'\n"
-#: getopt.c:807 getopt.c:810
+#: getopt.c:808 getopt.c:811
#, c-format
msgid "%s: unrecognized option '%c%s'\n"
msgstr "%s: ukendt flag '%c%s'\n"
-#: getopt.c:859 getopt.c:862
+#: getopt.c:860 getopt.c:863
#, c-format
msgid "%s: invalid option -- '%c'\n"
msgstr "%s: ugyldigt flag - '%c'\n"
-#: getopt.c:915 getopt.c:932 getopt.c:1142 getopt.c:1160
+#: getopt.c:916 getopt.c:933 getopt.c:1143 getopt.c:1161
#, c-format
msgid "%s: option requires an argument -- '%c'\n"
msgstr "%s: flaget kræver et argument - '%c'\n"
-#: getopt.c:988 getopt.c:1004
+#: getopt.c:989 getopt.c:1005
#, c-format
msgid "%s: option '-W %s' is ambiguous\n"
msgstr "%s: flaget '-W %s' er flertydigt\n"
-#: getopt.c:1028 getopt.c:1046
+#: getopt.c:1029 getopt.c:1047
#, c-format
msgid "%s: option '-W %s' doesn't allow an argument\n"
msgstr "%s: flaget '-W %s' tillader ikke noget argument\n"
-#: getopt.c:1067 getopt.c:1085
+#: getopt.c:1068 getopt.c:1086
#, c-format
msgid "%s: option '-W %s' requires an argument\n"
msgstr "%s: flaget '-W %s' kræver et argument\n"
-#: io.c:347
+#: io.c:392
#, c-format
msgid "command line argument `%s' is a directory: skipped"
msgstr "kommandolinjeargument '%s' er et katalog, oversprunget"
-#: io.c:350 io.c:463
+#: io.c:395 io.c:513
#, c-format
msgid "cannot open file `%s' for reading (%s)"
msgstr "kan ikke åbne filen '%s' for læsning (%s)"
-#: io.c:590
+#: io.c:640
#, c-format
msgid "close of fd %d (`%s') failed (%s)"
msgstr "lukning af fd %d ('%s') mislykkedes (%s)"
-#: io.c:666
+#: io.c:716
msgid "redirection not allowed in sandbox mode"
msgstr "omdirigering ikke tilladt i sandkasse-tilstand"
-#: io.c:700
+#: io.c:750
#, c-format
msgid "expression in `%s' redirection only has numeric value"
msgstr "udtrykket i '%s'-omdirigering har kun numerisk værdi"
-#: io.c:706
+#: io.c:756
#, c-format
msgid "expression for `%s' redirection has null string value"
msgstr "udtrykket for '%s'-omdirigering har en tom streng som værdi"
-#: io.c:711
+#: io.c:761
#, c-format
msgid "filename `%s' for `%s' redirection may be result of logical expression"
msgstr ""
"filnavnet '%s' for '%s'-omdirigering kan være resultatet af et logisk udtryk"
-#: io.c:754
+#: io.c:809
#, c-format
msgid "unnecessary mixing of `>' and `>>' for file `%.*s'"
msgstr "unødig blanding af '>' og '>>' for filen '%.*s'"
-#: io.c:808
+#: io.c:863
#, c-format
msgid "can't open pipe `%s' for output (%s)"
msgstr "kan ikke åbne datakanalen '%s' for udskrivning (%s)"
-#: io.c:818
+#: io.c:873
#, c-format
msgid "can't open pipe `%s' for input (%s)"
msgstr "kan ikke åbne datakanalen '%s' for indtastning (%s)"
-#: io.c:849
+#: io.c:904
#, c-format
msgid "can't open two way pipe `%s' for input/output (%s)"
msgstr "kan ikke åbne tovejsdatakanalen '%s' for ind-/uddata (%s)"
-#: io.c:928
+#: io.c:986
#, c-format
msgid "can't redirect from `%s' (%s)"
msgstr "kan ikke omdirigere fra '%s' (%s)"
-#: io.c:931
+#: io.c:989
#, c-format
msgid "can't redirect to `%s' (%s)"
msgstr "kan ikke omdirigere til '%s' (%s)"
-#: io.c:982
+#: io.c:1040
msgid ""
"reached system limit for open files: starting to multiplex file descriptors"
msgstr ""
"nåede systembegrænsningen for åbne filer: begynder at multiplekse "
"fildeskriptorer"
-#: io.c:998
+#: io.c:1056
#, c-format
msgid "close of `%s' failed (%s)."
msgstr "lukning af '%s' mislykkedes (%s)."
-#: io.c:1006
+#: io.c:1064
msgid "too many pipes or input files open"
msgstr "for mange datakanaler eller inddatafiler åbne"
-#: io.c:1028
+#: io.c:1086
msgid "close: second argument must be `to' or `from'"
msgstr "close: andet argument skal være 'to' eller 'from'"
-#: io.c:1045
+#: io.c:1103
#, c-format
msgid "close: `%.*s' is not an open file, pipe or co-process"
msgstr "close: '%.*s' er ikke en åben fil, datakanal eller ko-proces"
-#: io.c:1050
+#: io.c:1108
msgid "close of redirection that was never opened"
msgstr "lukning af omdirigering som aldrig blev åbnet"
-#: io.c:1147
+#: io.c:1205
#, c-format
msgid "close: redirection `%s' not opened with `|&', second argument ignored"
msgstr ""
"close: omdirigeringen '%s' blev ikke åbnet med '|&', andet argument ignoreret"
-#: io.c:1164
+#: io.c:1222
#, c-format
msgid "failure status (%d) on pipe close of `%s' (%s)"
msgstr "fejlstatus (%d) fra lukning af datakanalen '%s' (%s)"
-#: io.c:1167
+#: io.c:1225
#, c-format
msgid "failure status (%d) on file close of `%s' (%s)"
msgstr "fejlstatus (%d) fra fillukning af '%s' (%s)"
-#: io.c:1187
+#: io.c:1245
#, c-format
msgid "no explicit close of socket `%s' provided"
msgstr "ingen eksplicit lukning af soklen '%s' angivet"
-#: io.c:1190
+#: io.c:1248
#, c-format
msgid "no explicit close of co-process `%s' provided"
msgstr "ingen eksplicit lukning af ko-processen '%s' angivet"
-#: io.c:1193
+#: io.c:1251
#, c-format
msgid "no explicit close of pipe `%s' provided"
msgstr "ingen eksplicit lukning af datakanalen '%s' angivet"
-#: io.c:1196
+#: io.c:1254
#, c-format
msgid "no explicit close of file `%s' provided"
msgstr "ingen eksplicit lukning af filen '%s' angivet"
-#: io.c:1224 io.c:1279 main.c:842 main.c:879
+#: io.c:1284 io.c:1342 main.c:864 main.c:906
#, c-format
msgid "error writing standard output (%s)"
msgstr "fejl ved skrivning til standard ud (%s)"
-#: io.c:1228 io.c:1284
+#: io.c:1289 io.c:1348 main.c:866
#, c-format
msgid "error writing standard error (%s)"
msgstr "fejl ved skrivning til standard fejl (%s)"
-#: io.c:1236
+#: io.c:1297
#, c-format
msgid "pipe flush of `%s' failed (%s)."
msgstr "datakanalsrensning af '%s' mislykkedes (%s)."
-#: io.c:1239
+#: io.c:1300
#, c-format
msgid "co-process flush of pipe to `%s' failed (%s)."
msgstr "ko-procesrensning af datakanalen til '%s' mislykkedes (%s)."
-#: io.c:1242
+#: io.c:1303
#, c-format
msgid "file flush of `%s' failed (%s)."
msgstr "filrensning af '%s' mislykkedes (%s)."
-#: io.c:1356
+#: io.c:1420
#, c-format
msgid "local port %s invalid in `/inet'"
msgstr "lokal port %s ugyldig i '/inet'"
-#: io.c:1374
+#: io.c:1438
#, c-format
msgid "remote host and port information (%s, %s) invalid"
msgstr "fjernvært og portinformation (%s, %s) ugyldige"
-#: io.c:1526
+#: io.c:1590
#, c-format
msgid "no (known) protocol supplied in special filename `%s'"
msgstr "ingen (kendt) protokol opgivet i special-filnavn '%s'"
-#: io.c:1540
+#: io.c:1604
#, c-format
msgid "special file name `%s' is incomplete"
msgstr "special-filnavn '%s' er ufuldstændigt"
-#: io.c:1557
+#: io.c:1621
msgid "must supply a remote hostname to `/inet'"
msgstr "fjernmaskinenavn til '/inet' skal angives"
-#: io.c:1575
+#: io.c:1639
msgid "must supply a remote port to `/inet'"
msgstr "fjernport til '/inet' skal angives"
-#: io.c:1621
+#: io.c:1685
msgid "TCP/IP communications are not supported"
msgstr "TCP/IP-kommunikation understøttes ikke"
-#: io.c:1796
+#: io.c:1867
#, c-format
msgid "could not open `%s', mode `%s'"
msgstr "kunne ikke åbne '%s', tilstand '%s'"
-#: io.c:1846
+#: io.c:1917
#, c-format
msgid "close of master pty failed (%s)"
msgstr "lukning af master-pty mislykkedes (%s)"
-#: io.c:1848 io.c:2024 io.c:2194
+#: io.c:1919 io.c:2105 io.c:2305
#, c-format
msgid "close of stdout in child failed (%s)"
msgstr "lukning af standard ud i underproces mislykkedes (%s)"
-#: io.c:1851
+#: io.c:1922
#, c-format
msgid "moving slave pty to stdout in child failed (dup: %s)"
msgstr ""
"flytning af slave-pty til standard ud i underproces mislykkedes (dup: %s)"
-#: io.c:1853 io.c:2029
+#: io.c:1924 io.c:2110
#, c-format
msgid "close of stdin in child failed (%s)"
msgstr "lukning af standard ind i underproces mislykkedes (%s)"
-#: io.c:1856
+#: io.c:1927
#, c-format
msgid "moving slave pty to stdin in child failed (dup: %s)"
msgstr ""
"flytning af slave-pty til standard ind i underproces mislykkedes (dup: %s)"
-#: io.c:1858 io.c:1879
+#: io.c:1929 io.c:1951
#, c-format
msgid "close of slave pty failed (%s)"
msgstr "lukning af slave-pty mislykkedes (%s)"
-#: io.c:1965 io.c:2027 io.c:2171 io.c:2197
+#: io.c:2040 io.c:2108 io.c:2276 io.c:2308
#, c-format
msgid "moving pipe to stdout in child failed (dup: %s)"
msgstr ""
"flytning af datakanal til standard ud i underproces mislykkedes (dup: %s)"
-#: io.c:1972 io.c:2032
+#: io.c:2047 io.c:2113
#, c-format
msgid "moving pipe to stdin in child failed (dup: %s)"
msgstr ""
"flytning af datakanalen til standard ind i underproces mislykkedes (dup: %s)"
-#: io.c:1992 io.c:2187
+#: io.c:2073 io.c:2298
msgid "restoring stdout in parent process failed\n"
msgstr "genskabelse af standard ud i forælderprocessen mislykkedes\n"
-#: io.c:2000
+#: io.c:2081
msgid "restoring stdin in parent process failed\n"
msgstr "genskabelse af standard ind i forælderprocessen mislykkedes\n"
-#: io.c:2035 io.c:2199 io.c:2213
+#: io.c:2116 io.c:2310 io.c:2324
#, c-format
msgid "close of pipe failed (%s)"
msgstr "lukning af datakanalen mislykkedes (%s)"
-#: io.c:2089
+#: io.c:2174
msgid "`|&' not supported"
msgstr "'|&' understøttes ikke"
-#: io.c:2156
+#: io.c:2261
#, c-format
msgid "cannot open pipe `%s' (%s)"
msgstr "kan ikke åbne datakanalen '%s' (%s)"
-#: io.c:2207
+#: io.c:2318
#, c-format
msgid "cannot create child process for `%s' (fork: %s)"
msgstr "kan ikke oprette barneproces for '%s' (fork: %s)"
-#: io.c:2667
+#: io.c:2790
msgid "register_input_parser: received NULL pointer"
msgstr ""
-#: io.c:2695
+#: io.c:2818
#, c-format
msgid "input parser `%s' conflicts with previously installed input parser `%s'"
msgstr ""
-#: io.c:2702
+#: io.c:2825
#, c-format
msgid "input parser `%s' failed to open `%s'"
msgstr ""
-#: io.c:2722
+#: io.c:2845
msgid "register_output_wrapper: received NULL pointer"
msgstr ""
-#: io.c:2750
+#: io.c:2873
#, c-format
msgid ""
"output wrapper `%s' conflicts with previously installed output wrapper `%s'"
msgstr ""
-#: io.c:2757
+#: io.c:2880
#, c-format
msgid "output wrapper `%s' failed to open `%s'"
msgstr ""
-#: io.c:2778
+#: io.c:2901
msgid "register_output_processor: received NULL pointer"
msgstr ""
-#: io.c:2807
+#: io.c:2930
#, c-format
msgid ""
"two-way processor `%s' conflicts with previously installed two-way processor "
"`%s'"
msgstr ""
-#: io.c:2816
+#: io.c:2939
#, c-format
msgid "two way processor `%s' failed to open `%s'"
msgstr ""
-#: io.c:2923
+#: io.c:3064
#, c-format
msgid "data file `%s' is empty"
msgstr "datafilen '%s' er tom"
-#: io.c:2965 io.c:2973
+#: io.c:3106 io.c:3114
msgid "could not allocate more input memory"
msgstr "kunne ikke allokere mere hukommelse til inddata"
-#: io.c:3539
+#: io.c:3682
msgid "multicharacter value of `RS' is a gawk extension"
msgstr "'RS' som flertegnsværdi er en gawk-udvidelse"
-#: io.c:3628
+#: io.c:3771
msgid "IPv6 communication is not supported"
msgstr "IPv6-kommunikation understøttes ikke"
-#: main.c:388
+#: main.c:405
msgid "empty argument to `-e/--source' ignored"
msgstr "tomt argument til '-e/--source' ignoreret"
-#: main.c:478
+#: main.c:495
#, c-format
msgid "%s: option `-W %s' unrecognized, ignored\n"
msgstr "%s: flaget '-W %s' ukendt, ignoreret\n"
-#: main.c:524
+#: main.c:541
#, c-format
msgid "%s: option requires an argument -- %c\n"
msgstr "%s: flaget kræver et argument -- %c\n"
-#: main.c:545
+#: main.c:562
msgid "environment variable `POSIXLY_CORRECT' set: turning on `--posix'"
msgstr "miljøvariablen 'POSIXLY_CORRECT' sat: aktiverer '--posix'"
-#: main.c:551
+#: main.c:568
msgid "`--posix' overrides `--traditional'"
msgstr "'--posix' tilsidesætter '--traditional'"
-#: main.c:562
+#: main.c:579
msgid "`--posix'/`--traditional' overrides `--non-decimal-data'"
msgstr "'--posix'/'--traditional' tilsidesætter '--non-decimal-data'"
-#: main.c:566
+#: main.c:583
#, c-format
msgid "running %s setuid root may be a security problem"
msgstr "at køre %s setuid root kan være et sikkerhedsproblem"
-#: main.c:571
+#: main.c:588
#, fuzzy
msgid "`--posix' overrides `--characters-as-bytes'"
msgstr "'--posix' tilsidesætter '--binary'"
-#: main.c:630
+#: main.c:647
#, c-format
msgid "can't set binary mode on stdin (%s)"
msgstr "kan ikke sætte binær tilstand på standard ind (%s)"
-#: main.c:633
+#: main.c:650
#, c-format
msgid "can't set binary mode on stdout (%s)"
msgstr "kan ikke sætte binær tilstand på standard ud (%s)"
-#: main.c:635
+#: main.c:652
#, c-format
msgid "can't set binary mode on stderr (%s)"
msgstr "kan ikke sætte binær tilstand på standard fejl (%s)"
-#: main.c:693
+#: main.c:710
msgid "no program text at all!"
msgstr "ingen programtekst overhovedet!"
-#: main.c:779
+#: main.c:799
#, c-format
msgid "Usage: %s [POSIX or GNU style options] -f progfile [--] file ...\n"
msgstr "Brug: %s [flag i POSIX- eller GNU-stil] -f progfil [--] fil ...\n"
-#: main.c:781
+#: main.c:801
#, c-format
msgid "Usage: %s [POSIX or GNU style options] [--] %cprogram%c file ...\n"
msgstr "Brug: %s [flag i POSIX- eller GNU-stil] %cprogram%c fil ...\n"
-#: main.c:786
+#: main.c:806
msgid "POSIX options:\t\tGNU long options: (standard)\n"
msgstr "POSIX-flag:\t\tlange GNU-flag: (standard)\n"
-#: main.c:787
+#: main.c:807
msgid "\t-f progfile\t\t--file=progfile\n"
msgstr "\t-f progfil\t\t--file=progfil\n"
-#: main.c:788
+#: main.c:808
msgid "\t-F fs\t\t\t--field-separator=fs\n"
msgstr "\t-F fs\t\t\t--field-separator=fs\n"
-#: main.c:789
+#: main.c:809
msgid "\t-v var=val\t\t--assign=var=val\n"
msgstr "\t-v var=værdi\t\t--assign=var=værdi\n"
-#: main.c:790
+#: main.c:810
msgid "Short options:\t\tGNU long options: (extensions)\n"
msgstr "POSIX-flag:\t\tlange GNU-flag: (udvidelser)\n"
-#: main.c:791
+#: main.c:811
msgid "\t-b\t\t\t--characters-as-bytes\n"
msgstr "\t-b\t\t\t--characters-as-bytes\n"
-#: main.c:792
+#: main.c:812
msgid "\t-c\t\t\t--traditional\n"
msgstr "\t-c\t\t\t--traditional\n"
-#: main.c:793
+#: main.c:813
msgid "\t-C\t\t\t--copyright\n"
msgstr "\t-C\t\t\t--copyright\n"
-#: main.c:794
+#: main.c:814
msgid "\t-d[file]\t\t--dump-variables[=file]\n"
msgstr "\t-d[fil]\t\t--dump-variables[=fil]\n"
-#: main.c:795
+#: main.c:815
#, fuzzy
msgid "\t-D[file]\t\t--debug[=file]\n"
msgstr "\t-p[fil]\t\t--profile[=fil]\n"
-#: main.c:796
+#: main.c:816
msgid "\t-e 'program-text'\t--source='program-text'\n"
msgstr "\t-e 'programtekst'\t--source='programtekst'\n"
-#: main.c:797
+#: main.c:817
msgid "\t-E file\t\t\t--exec=file\n"
msgstr "\t-E fil\t\t\t--exec=fil\n"
-#: main.c:798
+#: main.c:818
msgid "\t-g\t\t\t--gen-pot\n"
msgstr "\t-g\t\t\t--gen-pot\n"
-#: main.c:799
+#: main.c:819
msgid "\t-h\t\t\t--help\n"
msgstr "\t-h\t\t\t--help\n"
-#: main.c:800
+#: main.c:820
msgid "\t-i includefile\t\t--include=includefile\n"
msgstr ""
-#: main.c:801
+#: main.c:821
msgid "\t-l library\t\t--load=library\n"
msgstr ""
-#: main.c:802
+#: main.c:822
msgid "\t-L [fatal]\t\t--lint[=fatal]\n"
msgstr "\t-L [fatal]\t\t--lint[=fatal]\n"
-#: main.c:803
+#: main.c:823
msgid "\t-n\t\t\t--non-decimal-data\n"
msgstr "\t-n\t\t\t--non-decimal-data\n"
-#: main.c:804
+#: main.c:824
#, fuzzy
msgid "\t-M\t\t\t--bignum\n"
msgstr "\t-g\t\t\t--gen-pot\n"
-#: main.c:805
+#: main.c:825
msgid "\t-N\t\t\t--use-lc-numeric\n"
msgstr "\t-N\t\t\t--use-lc-numeric\n"
-#: main.c:806
+#: main.c:826
#, fuzzy
msgid "\t-o[file]\t\t--pretty-print[=file]\n"
msgstr "\t-p[fil]\t\t--profile[=fil]\n"
-#: main.c:807
+#: main.c:827
msgid "\t-O\t\t\t--optimize\n"
msgstr "\t-O\t\t\t--optimize\n"
-#: main.c:808
+#: main.c:828
msgid "\t-p[file]\t\t--profile[=file]\n"
msgstr "\t-p[fil]\t\t--profile[=fil]\n"
-#: main.c:809
+#: main.c:829
msgid "\t-P\t\t\t--posix\n"
msgstr "\t-P\t\t\t--posix\n"
-#: main.c:810
+#: main.c:830
msgid "\t-r\t\t\t--re-interval\n"
msgstr "\t-r\t\t\t--re-interval\n"
-#: main.c:811
+#: main.c:831
msgid "\t-S\t\t\t--sandbox\n"
msgstr "\t-S\t\t\t--sandbox\n"
-#: main.c:812
+#: main.c:832
msgid "\t-t\t\t\t--lint-old\n"
msgstr "\t-t\t\t\t--lint-old\n"
-#: main.c:813
+#: main.c:833
msgid "\t-V\t\t\t--version\n"
msgstr "\t-V\t\t\t--version\n"
-#: main.c:815
+#: main.c:835
msgid "\t-W nostalgia\t\t--nostalgia\n"
msgstr "\t-W nostalgia\t\t--nostalgia\n"
-#: main.c:818
+#: main.c:838
msgid "\t-Y\t\t--parsedebug\n"
msgstr "\t-Y\t\t--parsedebug\n"
@@ -3097,7 +3116,7 @@ msgstr "\t-Y\t\t--parsedebug\n"
#. for this application. Please add _another line_ with the
#. address for translation bugs.
#. no-wrap
-#: main.c:827
+#: main.c:847
msgid ""
"\n"
"To report bugs, see node `Bugs' in `gawk.info', which is\n"
@@ -3110,7 +3129,7 @@ msgstr ""
"\n"
"Rapportér kommentarer til oversættelsen til <dansk@dansk-gruppen.dk>.\n"
-#: main.c:831
+#: main.c:851
msgid ""
"gawk is a pattern scanning and processing language.\n"
"By default it reads standard input and writes standard output.\n"
@@ -3120,7 +3139,7 @@ msgstr ""
"Almindeligvis læser gawk fra standard ind og skriver til standard ud.\n"
"\n"
-#: main.c:835
+#: main.c:855
msgid ""
"Examples:\n"
"\tgawk '{ sum += $1 }; END { print sum }' file\n"
@@ -3130,7 +3149,7 @@ msgstr ""
"\tgawk '{ sum += $1 }; END { print sum }' fil\n"
"\tgawk -F: '{ print $1 }' /etc/passwd\n"
-#: main.c:855
+#: main.c:880
#, c-format
msgid ""
"Copyright (C) 1989, 1991-%d Free Software Foundation.\n"
@@ -3150,7 +3169,7 @@ msgstr ""
"enhver senere version.\n"
"\n"
-#: main.c:863
+#: main.c:888
msgid ""
"This program is distributed in the hope that it will be useful,\n"
"but WITHOUT ANY WARRANTY; without even the implied warranty of\n"
@@ -3164,7 +3183,7 @@ msgstr ""
"General Public License for yderligere information.\n"
"\n"
-#: main.c:869
+#: main.c:894
msgid ""
"You should have received a copy of the GNU General Public License\n"
"along with this program. If not, see http://www.gnu.org/licenses/.\n"
@@ -3172,16 +3191,16 @@ msgstr ""
"Du 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:904
+#: main.c:931
msgid "-Ft does not set FS to tab in POSIX awk"
msgstr "-Ft sætter ikke FS til tab i POSIX-awk"
-#: main.c:1181
+#: main.c:1208
#, c-format
msgid "unknown value for field spec: %d\n"
msgstr "ukendt værdi for felt-spec: %d\n"
-#: main.c:1279
+#: main.c:1306
#, c-format
msgid ""
"%s: `%s' argument to `-v' not in `var=value' form\n"
@@ -3190,48 +3209,48 @@ msgstr ""
"%s: '%s' argument til '-v' ikke på formen 'var=værdi'\n"
"\n"
-#: main.c:1305
+#: main.c:1332
#, c-format
msgid "`%s' is not a legal variable name"
msgstr "'%s' er ikke et gyldigt variabelnavn"
-#: main.c:1308
+#: main.c:1335
#, c-format
msgid "`%s' is not a variable name, looking for file `%s=%s'"
msgstr "'%s' er ikke et variabelnavn, leder efter fil '%s=%s'"
-#: main.c:1312
+#: main.c:1339
#, c-format
msgid "cannot use gawk builtin `%s' as variable name"
msgstr "kan ikke bruge gawk's indbyggede '%s' som variabelnavn"
-#: main.c:1317
+#: main.c:1344
#, c-format
msgid "cannot use function `%s' as variable name"
msgstr "kan ikke bruge funktion '%s' som variabelnavn"
-#: main.c:1370
+#: main.c:1397
msgid "floating point exception"
msgstr "flydendetalsundtagelse"
-#: main.c:1377
+#: main.c:1404
msgid "fatal error: internal error"
msgstr "fatal fejl: intern fejl"
-#: main.c:1392
+#: main.c:1419
msgid "fatal error: internal error: segfault"
msgstr "fatal fejl: intern fejl: segmentfejl"
-#: main.c:1404
+#: main.c:1431
msgid "fatal error: internal error: stack overflow"
msgstr "fatal fejl: intern fejl: stakoverløb"
-#: main.c:1463
+#: main.c:1490
#, c-format
msgid "no pre-opened fd %d"
msgstr "ingen fd %d åbnet i forvejen"
-#: main.c:1470
+#: main.c:1497
#, c-format
msgid "could not pre-open /dev/null for fd %d"
msgstr "kunne ikke i forvejen åbne /dev/null for fd %d"
@@ -3290,7 +3309,7 @@ msgstr "or(%lf, %lf): kommatalsværdier vil blive trunkeret"
msgid "%s: argument #%d negative value %Zd will give strange results"
msgstr "compl(%lf): negative værdier vil give mærkelige resultater"
-#: msg.c:61
+#: msg.c:68
#, c-format
msgid "cmd. line:"
msgstr "kommandolinje:"
@@ -3344,16 +3363,16 @@ msgstr "%s %s '%s': kunne ikke få fat på fd flag: (fcntl F_GETFD: %s)"
msgid "%s %s `%s': could not set close-on-exec: (fcntl F_SETFD: %s)"
msgstr "%s %s '%s': kunne ikke sætte luk-ved-exec (fcntl F_SETFD: %s)"
-#: profile.c:70
+#: profile.c:71
#, c-format
msgid "could not open `%s' for writing: %s"
msgstr "kunne ikke åbne '%s' for skrivning: %s"
-#: profile.c:72
+#: profile.c:73
msgid "sending profile to standard error"
msgstr "sender profilen til standard fejl"
-#: profile.c:188
+#: profile.c:193
#, c-format
msgid ""
"\t# %s block(s)\n"
@@ -3362,7 +3381,7 @@ msgstr ""
"\t# %s blokke\n"
"\n"
-#: profile.c:193
+#: profile.c:198
#, c-format
msgid ""
"\t# Rule(s)\n"
@@ -3371,29 +3390,29 @@ msgstr ""
"\t# Regler\n"
"\n"
-#: profile.c:267
+#: profile.c:272
#, c-format
msgid "internal error: %s with null vname"
msgstr "intern fejl: %s med null vname"
-#: profile.c:530
+#: profile.c:537
#, fuzzy
msgid "internal error: builtin with null fname"
msgstr "intern fejl: %s med null vname"
-#: profile.c:942
+#: profile.c:949
#, c-format
msgid ""
"\t# Loaded extensions (-l and/or @load)\n"
"\n"
msgstr ""
-#: profile.c:965
+#: profile.c:972
#, c-format
msgid "\t# gawk profile, created %s\n"
msgstr "\t# profil til gawk oprettet %s\n"
-#: profile.c:1351
+#: profile.c:1475
#, c-format
msgid ""
"\n"
@@ -3402,17 +3421,12 @@ msgstr ""
"\n"
"\t# Funktioner, listede alfabetisk\n"
-#: profile.c:1389
+#: profile.c:1513
#, c-format
msgid "redir2str: unknown redirection type %d"
msgstr "redir2str: uykendt omdirigeringstype %d"
-#: re.c:583
-#, c-format
-msgid "range of the form `[%c-%c]' is locale dependent"
-msgstr "område på formen `[%c-%c]' er locale-afhængig"
-
-#: re.c:610
+#: re.c:607
#, c-format
msgid "regexp component `%.*s' should probably be `[%.*s]'"
msgstr "regexp-komponent `%.*s' skulle nok være `[%.*s]'"
@@ -3481,10 +3495,13 @@ msgstr "Ubalanceret ) eller \\)"
msgid "No previous regular expression"
msgstr "Intet foregående regulært udtryk"
-#: symbol.c:740
+#: symbol.c:741
msgid "can not pop main context"
msgstr ""
+#~ msgid "range of the form `[%c-%c]' is locale dependent"
+#~ msgstr "område på formen `[%c-%c]' er locale-afhængig"
+
#, fuzzy
#~ msgid "[s]printf called with no arguments"
#~ msgstr "sqrt: kaldt med negativt argument %g"
diff --git a/po/de.gmo b/po/de.gmo
index f8ae3a41..e46946bb 100644
--- a/po/de.gmo
+++ b/po/de.gmo
Binary files differ
diff --git a/po/de.po b/po/de.po
index e5b8a93d..f92c3bb7 100644
--- a/po/de.po
+++ b/po/de.po
@@ -8,7 +8,7 @@ msgid ""
msgstr ""
"Project-Id-Version: gawk 4.0.0h\n"
"Report-Msgid-Bugs-To: arnold@skeeve.com\n"
-"POT-Creation-Date: 2013-05-09 16:05+0300\n"
+"POT-Creation-Date: 2014-04-08 19:23+0300\n"
"PO-Revision-Date: 2012-01-30 16:21+0100\n"
"Last-Translator: Philipp Thomas <pth@suse.de>\n"
"Language-Team: German <translation-team-de@lists.sourceforge.net>\n"
@@ -17,93 +17,93 @@ msgstr ""
"Content-Type: text/plain; charset=utf-8\n"
"Content-Transfer-Encoding: 8bit\n"
-#: array.c:254
+#: array.c:256
#, c-format
msgid "from %s"
msgstr "von %s"
-#: array.c:354
+#: array.c:357
msgid "attempt to use a scalar value as array"
msgstr "Es wird versucht, einen Skalar als Feld zu verwenden"
-#: array.c:356
+#: array.c:359
#, c-format
msgid "attempt to use scalar parameter `%s' as an array"
msgstr "Es wird versucht, den skalaren Parameter »%s« als Feld zu verwenden"
-#: array.c:359
+#: array.c:362
#, c-format
msgid "attempt to use scalar `%s' as an array"
msgstr "Es wird versucht, den Skalar »%s« als Array zu verwenden"
-#: array.c:406 array.c:573 builtin.c:85 builtin.c:1591 builtin.c:1637
-#: builtin.c:1650 builtin.c:2078 builtin.c:2092 eval.c:1121 eval.c:1125
-#: eval.c:1524
+#: array.c:409 array.c:576 builtin.c:85 builtin.c:1615 builtin.c:1661
+#: builtin.c:1674 builtin.c:2102 builtin.c:2116 eval.c:1122 eval.c:1126
+#: eval.c:1531
#, c-format
msgid "attempt to use array `%s' in a scalar context"
msgstr "Es wird versucht, das Feld »%s« in einem Skalarkontext zu verwenden"
-#: array.c:580
+#: array.c:583
#, c-format
msgid "delete: index `%s' not in array `%s'"
msgstr "delete: Index »%s« ist in Feld »%s« nicht vorhanden"
-#: array.c:594
+#: array.c:597
#, c-format
msgid "attempt to use scalar `%s[\"%.*s\"]' as an array"
msgstr "Es wird versucht, den Skalar »%s[\"%.*s\"]« als Feld zu verwenden"
-#: array.c:773
+#: array.c:776
#, fuzzy
msgid "adump: first argument not an array"
msgstr "adump: Das Argument ist kein Feld"
-#: array.c:812
+#: array.c:815
msgid "asort: second argument not an array"
msgstr "asort: Das zweite Argument ist kein Feld"
-#: array.c:813
+#: array.c:816
msgid "asorti: second argument not an array"
msgstr "asorti: Das zweite Argument ist kein Feld"
-#: array.c:820
+#: array.c:823
msgid "asort: first argument not an array"
msgstr "asort: Das erste Argument ist kein Feld"
-#: array.c:821
+#: array.c:824
msgid "asorti: first argument not an array"
msgstr "asorti: Das erste Argument ist kein Feld"
-#: array.c:828
+#: array.c:831
msgid "asort: cannot use a subarray of first arg for second arg"
msgstr ""
"asort: ein untergeordnetes Feld des ersten Arguments kann nicht als zweites "
"Argument verwendet werden"
-#: array.c:829
+#: array.c:832
msgid "asorti: cannot use a subarray of first arg for second arg"
msgstr ""
"asorti: ein untergeordnetes Feld des ersten Arguments kann nicht als zweites "
"Argument verwendet werden"
-#: array.c:834
+#: array.c:837
msgid "asort: cannot use a subarray of second arg for first arg"
msgstr ""
"asort: ein untergeordnetes Feld des zweiten Arguments kann nicht als erstes "
"Argument verwendet werden"
-#: array.c:835
+#: array.c:838
msgid "asorti: cannot use a subarray of second arg for first arg"
msgstr ""
"asorti: ein untergeordnetes Feld des zweiten Arguments kann nicht als erstes "
"Argument verwendet werden"
-#: array.c:1309
+#: array.c:1314
#, c-format
msgid "`%s' is invalid as a function name"
msgstr "»%s« ist ein unzulässiger Funktionsname"
-#: array.c:1313
+#: array.c:1318
#, c-format
msgid "sort comparison function `%s' is not defined"
msgstr "Die Vergleichsfunktion »%s« für das Sortieren ist nicht definiert"
@@ -148,12 +148,12 @@ msgstr "doppelte Case-Werte im Switch-Block: %s"
msgid "duplicate `default' detected in switch body"
msgstr "doppeltes »default« im Switch-Block gefunden"
-#: awkgram.y:796 awkgram.y:3699
+#: awkgram.y:796 awkgram.y:3723
msgid "`break' is not allowed outside a loop or switch"
msgstr ""
"»break« ist außerhalb einer Schleife oder eines Switch-Blocks nicht zulässig"
-#: awkgram.y:805 awkgram.y:3691
+#: awkgram.y:805 awkgram.y:3715
msgid "`continue' is not allowed outside a loop"
msgstr "»continue« ist außerhalb einer Schleife nicht zulässig"
@@ -246,279 +246,279 @@ msgstr ""
msgid "invalid subscript expression"
msgstr "Ungültiger Index-Ausdruck"
-#: awkgram.y:2024 awkgram.y:2044 gawkapi.c:206 gawkapi.c:224 msg.c:119
+#: awkgram.y:2048 awkgram.y:2068 gawkapi.c:206 gawkapi.c:224 msg.c:126
msgid "warning: "
msgstr "Warnung: "
-#: awkgram.y:2042 gawkapi.c:192 gawkapi.c:221 msg.c:151
+#: awkgram.y:2066 gawkapi.c:192 gawkapi.c:221 msg.c:158
msgid "fatal: "
msgstr "Fatal: "
-#: awkgram.y:2092
+#: awkgram.y:2116
msgid "unexpected newline or end of string"
msgstr "Unerwarteter Zeilenumbruch oder Ende der Zeichenkette"
-#: awkgram.y:2359 awkgram.y:2435 awkgram.y:2658 debug.c:517 debug.c:533
-#: debug.c:2792 debug.c:5040
+#: awkgram.y:2383 awkgram.y:2459 awkgram.y:2682 debug.c:523 debug.c:539
+#: debug.c:2812 debug.c:5055
#, c-format
msgid "can't open source file `%s' for reading (%s)"
msgstr "Quelldatei »%s« kann nicht zum Lesen geöffnet werden (%s)"
-#: awkgram.y:2360 awkgram.y:2485
+#: awkgram.y:2384 awkgram.y:2509
#, fuzzy, c-format
msgid "can't open shared library `%s' for reading (%s)"
msgstr "Quelldatei »%s« kann nicht zum Lesen geöffnet werden (%s)"
-#: awkgram.y:2362 awkgram.y:2436 awkgram.y:2486 builtin.c:130 debug.c:5191
+#: awkgram.y:2386 awkgram.y:2460 awkgram.y:2510 builtin.c:135 debug.c:5206
msgid "reason unknown"
msgstr "Unbekannte Ursache"
-#: awkgram.y:2371 awkgram.y:2395
+#: awkgram.y:2395 awkgram.y:2419
#, c-format
msgid "can't include `%s' and use it as a program file"
msgstr ""
-#: awkgram.y:2384
+#: awkgram.y:2408
#, c-format
msgid "already included source file `%s'"
msgstr "Quelldatei »%s« wurde bereits eingebunden"
-#: awkgram.y:2385
+#: awkgram.y:2409
#, fuzzy, c-format
msgid "already loaded shared library `%s'"
msgstr "Quelldatei »%s« wurde bereits eingebunden"
-#: awkgram.y:2420
+#: awkgram.y:2444
msgid "@include is a gawk extension"
msgstr "»@include« ist eine gawk-Erweiterung"
-#: awkgram.y:2426
+#: awkgram.y:2450
msgid "empty filename after @include"
msgstr "leerer Dateiname nach @include"
-#: awkgram.y:2470
+#: awkgram.y:2494
#, fuzzy
msgid "@load is a gawk extension"
msgstr "»@include« ist eine gawk-Erweiterung"
-#: awkgram.y:2476
+#: awkgram.y:2500
#, fuzzy
msgid "empty filename after @load"
msgstr "leerer Dateiname nach @include"
-#: awkgram.y:2610
+#: awkgram.y:2634
msgid "empty program text on command line"
msgstr "Kein Programmtext auf der Kommandozeile"
-#: awkgram.y:2725
+#: awkgram.y:2749
#, c-format
msgid "can't read sourcefile `%s' (%s)"
msgstr "Die Quelldatei »%s« kann nicht gelesen werden (%s)"
-#: awkgram.y:2736
+#: awkgram.y:2760
#, c-format
msgid "source file `%s' is empty"
msgstr "Die Quelldatei »%s« ist leer"
-#: awkgram.y:2913
+#: awkgram.y:2937
msgid "source file does not end in newline"
msgstr "Die Quelldatei hört nicht mit einem Zeilenende auf"
-#: awkgram.y:3018
+#: awkgram.y:3042
msgid "unterminated regexp ends with `\\' at end of file"
msgstr ""
"Nicht beendeter regulärer Ausdruck (hört mit '\\' auf) am Ende der Datei"
-#: awkgram.y:3042
+#: awkgram.y:3066
#, c-format
msgid "%s: %d: tawk regex modifier `/.../%c' doesn't work in gawk"
msgstr ""
"%s: %d: der tawk-Modifizierer für reguläre Ausdrücke »/.../%c« funktioniert "
"nicht in gawk"
-#: awkgram.y:3046
+#: awkgram.y:3070
#, c-format
msgid "tawk regex modifier `/.../%c' doesn't work in gawk"
msgstr ""
"Der tawk-Modifizierer für reguläre Ausdrücke »/.../%c« funktioniert nicht in "
"gawk"
-#: awkgram.y:3053
+#: awkgram.y:3077
msgid "unterminated regexp"
msgstr "Nicht beendeter regulärer Ausdruck"
-#: awkgram.y:3057
+#: awkgram.y:3081
msgid "unterminated regexp at end of file"
msgstr "Nicht beendeter regulärer Ausdruck am Dateiende"
-#: awkgram.y:3116
+#: awkgram.y:3140
msgid "use of `\\ #...' line continuation is not portable"
msgstr ""
"Die Verwendung von »\\#...« zur Fortsetzung von Zeilen ist nicht portabel"
-#: awkgram.y:3132
+#: awkgram.y:3156
msgid "backslash not last character on line"
msgstr "das letzte Zeichen auf der Zeile ist kein Backslash (»\\«)"
-#: awkgram.y:3193
+#: awkgram.y:3217
msgid "POSIX does not allow operator `**='"
msgstr "POSIX erlaubt den Operator »**=« nicht"
-#: awkgram.y:3195
+#: awkgram.y:3219
msgid "old awk does not support operator `**='"
msgstr "Das alte awk unterstützt den Operator »**=« nicht"
-#: awkgram.y:3204
+#: awkgram.y:3228
msgid "POSIX does not allow operator `**'"
msgstr "POSIX erlaubt den Operator »**« nicht"
-#: awkgram.y:3206
+#: awkgram.y:3230
msgid "old awk does not support operator `**'"
msgstr "Das alte awk unterstützt den Operator »**« nicht"
-#: awkgram.y:3241
+#: awkgram.y:3265
msgid "operator `^=' is not supported in old awk"
msgstr "Das alte awk unterstützt den Operator »^=« nicht"
-#: awkgram.y:3249
+#: awkgram.y:3273
msgid "operator `^' is not supported in old awk"
msgstr "Das alte awk unterstützt den Operator »^« nicht"
-#: awkgram.y:3342 awkgram.y:3358 command.y:1178
+#: awkgram.y:3366 awkgram.y:3382 command.y:1178
msgid "unterminated string"
msgstr "Nicht beendete Zeichenkette"
-#: awkgram.y:3579
+#: awkgram.y:3603
#, c-format
msgid "invalid char '%c' in expression"
msgstr "Ungültiges Zeichen »%c« in einem Ausdruck"
-#: awkgram.y:3626
+#: awkgram.y:3650
#, c-format
msgid "`%s' is a gawk extension"
msgstr "»%s« ist eine gawk-Erweiterung"
-#: awkgram.y:3631
+#: awkgram.y:3655
#, c-format
msgid "POSIX does not allow `%s'"
msgstr "POSIX erlaubt »%s« nicht"
-#: awkgram.y:3639
+#: awkgram.y:3663
#, c-format
msgid "`%s' is not supported in old awk"
msgstr "»%s« wird im alten awk nicht unterstützt"
-#: awkgram.y:3729
+#: awkgram.y:3753
msgid "`goto' considered harmful!\n"
msgstr "»goto« gilt als schlechter Stil!\n"
-#: awkgram.y:3763
+#: awkgram.y:3787
#, c-format
msgid "%d is invalid as number of arguments for %s"
msgstr "Unzulässige Argumentzahl %d für %s"
-#: awkgram.y:3798
+#: awkgram.y:3822
#, c-format
msgid "%s: string literal as last arg of substitute has no effect"
msgstr "%s: Ein String als letztes Argument von substitute hat keinen Effekt"
-#: awkgram.y:3803
+#: awkgram.y:3827
#, c-format
msgid "%s third parameter is not a changeable object"
msgstr "Der dritte Parameter von %s ist ein unveränderliches Objekt"
-#: awkgram.y:3886 awkgram.y:3889
+#: awkgram.y:3910 awkgram.y:3913
msgid "match: third argument is a gawk extension"
msgstr "match: Das dritte Argument ist eine gawk-Erweiterung"
-#: awkgram.y:3943 awkgram.y:3946
+#: awkgram.y:3967 awkgram.y:3970
msgid "close: second argument is a gawk extension"
msgstr "close: Das zweite Argument ist eine gawk-Erweiterung"
-#: awkgram.y:3958
+#: awkgram.y:3982
msgid "use of dcgettext(_\"...\") is incorrect: remove leading underscore"
msgstr ""
"Fehlerhafte Verwendung von dcgettext(_\"...\"): \n"
"Entfernen Sie den führenden Unterstrich"
-#: awkgram.y:3973
+#: awkgram.y:3997
msgid "use of dcngettext(_\"...\") is incorrect: remove leading underscore"
msgstr ""
"Fehlerhafte Verwendung von dcngettext(_\"...\"): \n"
"Entfernen Sie den führenden Unterstrich"
-#: awkgram.y:3992
+#: awkgram.y:4016
#, fuzzy
msgid "index: regexp constant as second argument is not allowed"
msgstr "index: Zweites Argument ist kein string"
-#: awkgram.y:4045
+#: awkgram.y:4069
#, c-format
msgid "function `%s': parameter `%s' shadows global variable"
msgstr "Funktion »%s«: Parameter »%s« verdeckt eine globale Variable"
-#: awkgram.y:4102 debug.c:4021 debug.c:4064 debug.c:5189
+#: awkgram.y:4126 debug.c:4041 debug.c:4084 debug.c:5204
#, c-format
msgid "could not open `%s' for writing (%s)"
msgstr "»%s« kann nicht zum Schreiben geöffne werden(%s)"
-#: awkgram.y:4103
+#: awkgram.y:4127
msgid "sending variable list to standard error"
msgstr "Die Liste der Variablen wird auf der Standardfehlerausgabe ausgegeben"
-#: awkgram.y:4111
+#: awkgram.y:4135
#, c-format
msgid "%s: close failed (%s)"
msgstr "%s: close ist gescheitert (%s)"
-#: awkgram.y:4136
+#: awkgram.y:4160
msgid "shadow_funcs() called twice!"
msgstr "shadow_funcs() zweimal aufgerufen!"
-#: awkgram.y:4144
+#: awkgram.y:4168
msgid "there were shadowed variables."
msgstr "es sind verdeckte Variablen vorhanden"
-#: awkgram.y:4215
+#: awkgram.y:4239
#, c-format
msgid "function name `%s' previously defined"
msgstr "Funktion »%s« wurde bereits definiert"
-#: awkgram.y:4261
+#: awkgram.y:4285
#, c-format
msgid "function `%s': can't use function name as parameter name"
msgstr "Funktion »%s«: Funktionsnamen können nicht als Parameternamen benutzen"
-#: awkgram.y:4264
+#: awkgram.y:4288
#, c-format
msgid "function `%s': can't use special variable `%s' as a function parameter"
msgstr ""
"Funktion »%s«: die spezielle Variable »%s« kann nicht als Parameter "
"verwendet werden"
-#: awkgram.y:4272
+#: awkgram.y:4296
#, c-format
msgid "function `%s': parameter #%d, `%s', duplicates parameter #%d"
msgstr "Funktion »%s«: Parameter #%d, »%s« wiederholt Parameter #%d"
-#: awkgram.y:4366 awkgram.y:4372
+#: awkgram.y:4383 awkgram.y:4389
#, c-format
msgid "function `%s' called but never defined"
msgstr "Aufgerufene Funktion »%s« ist nirgends definiert"
-#: awkgram.y:4376
+#: awkgram.y:4393
#, c-format
msgid "function `%s' defined but never called directly"
msgstr "Funktion »%s« wurde definiert aber nirgends aufgerufen"
-#: awkgram.y:4408
+#: awkgram.y:4425
#, c-format
msgid "regexp constant for parameter #%d yields boolean value"
msgstr ""
"Regulärer-Ausdruck-Konstante für Parameter #%d ergibt einen \n"
"logischen Wert"
-#: awkgram.y:4467
+#: awkgram.y:4484
#, c-format
msgid ""
"function `%s' called with space between name and `(',\n"
@@ -527,238 +527,248 @@ msgstr ""
"Funktion »%s« wird mit Leerzeichen zwischen Name und »(« aufgerufen, \n"
"oder als Variable oder Feld verwendet"
-#: awkgram.y:4703
+#: awkgram.y:4720
msgid "division by zero attempted"
msgstr "Division durch Null wurde versucht"
-#: awkgram.y:4712
+#: awkgram.y:4729
#, c-format
msgid "division by zero attempted in `%%'"
msgstr "Division durch Null versucht in »%%«"
-#: builtin.c:128
+#: awkgram.y:5049
+msgid ""
+"cannot assign a value to the result of a field post-increment expression"
+msgstr ""
+
+#: awkgram.y:5052
+#, fuzzy, c-format
+msgid "invalid target of assignment (opcode %s)"
+msgstr "Unzulässige Argumentzahl %d für %s"
+
+#: builtin.c:133
#, c-format
msgid "%s to \"%s\" failed (%s)"
msgstr "%s to \"%s\" fehlgeschlagen (%s)"
-#: builtin.c:129
+#: builtin.c:134
msgid "standard output"
msgstr "Standardausgabe"
-#: builtin.c:143
+#: builtin.c:148
msgid "exp: received non-numeric argument"
msgstr "exp: das Argument ist keine Zahl"
-#: builtin.c:149
+#: builtin.c:154
#, c-format
msgid "exp: argument %g is out of range"
msgstr "exp: das Argument %g liegt außerhalb des gültigen Bereichs"
-#: builtin.c:224
+#: builtin.c:229
#, c-format
msgid "fflush: cannot flush: pipe `%s' opened for reading, not writing"
msgstr ""
"fflush: Leeren der Puffer nicht möglich, Pipe »%s« ist nur zum Lesen geöffnet"
-#: builtin.c:227
+#: builtin.c:232
#, c-format
msgid "fflush: cannot flush: file `%s' opened for reading, not writing"
msgstr ""
"fflush: Leeren der Puffer nicht möglich, Datei »%s« ist nur zum Lesen "
"geöffnet"
-#: builtin.c:239
+#: builtin.c:244
#, c-format
msgid "fflush: `%s' is not an open file, pipe or co-process"
msgstr "fflush: »%s« ist keine geöffnete Datei, Pipe oder Prozess"
-#: builtin.c:357
+#: builtin.c:362
msgid "index: received non-string first argument"
msgstr "index: Erstes Argument ist kein String"
-#: builtin.c:359
+#: builtin.c:364
msgid "index: received non-string second argument"
msgstr "index: Zweites Argument ist kein string"
-#: builtin.c:483 mpfr.c:757
+#: builtin.c:488 mpfr.c:757
msgid "int: received non-numeric argument"
msgstr "Argument ist keine Zahl"
-#: builtin.c:520
+#: builtin.c:525
msgid "length: received array argument"
msgstr "length: Argument ist ein Feld"
-#: builtin.c:523
+#: builtin.c:528
msgid "`length(array)' is a gawk extension"
msgstr "»length(array)« ist eine gawk-Erweiterung"
-#: builtin.c:539
+#: builtin.c:544
msgid "length: received non-string argument"
msgstr "length: Argument ist kein String"
-#: builtin.c:570
+#: builtin.c:575
msgid "log: received non-numeric argument"
msgstr "log: Argument ist keine Zahl"
-#: builtin.c:573
+#: builtin.c:578
#, c-format
msgid "log: received negative argument %g"
msgstr "log: Negatives Argument %g"
-#: builtin.c:771 builtin.c:776
+#: builtin.c:776 builtin.c:781
msgid "fatal: must use `count$' on all formats or none"
msgstr "Fatal: »count$« muss auf alle Formate angewandt werden oder auf keines"
-#: builtin.c:846
+#: builtin.c:851
#, c-format
msgid "field width is ignored for `%%' specifier"
msgstr "Feldbreite wird für die »%%«-Angabe ignoriert"
-#: builtin.c:848
+#: builtin.c:853
#, c-format
msgid "precision is ignored for `%%' specifier"
msgstr "Genauigkeit wird für die »%%«-Angabe ignoriert"
-#: builtin.c:850
+#: builtin.c:855
#, c-format
msgid "field width and precision are ignored for `%%' specifier"
msgstr "Feldbreite und Genauigkeit werden für die »%%«-Angabe ignoriert"
-#: builtin.c:901
+#: builtin.c:906
msgid "fatal: `$' is not permitted in awk formats"
msgstr "Fatal: »$« ist in awk-Formaten nicht zulässig"
-#: builtin.c:910
+#: builtin.c:915
msgid "fatal: arg count with `$' must be > 0"
msgstr "Fatal: die Anzahl der Argumen bei »$« muss > 0 sein"
-#: builtin.c:914
+#: builtin.c:919
#, c-format
msgid "fatal: arg count %ld greater than total number of supplied arguments"
msgstr ""
"Fatal: Argumentenanzahl %ld ist größer als die Gesamtzahl angegebener "
"Argumente"
-#: builtin.c:918
+#: builtin.c:923
msgid "fatal: `$' not permitted after period in format"
msgstr "Fatal: »$« nach Punkt in Formatangabe nicht zulässig"
-#: builtin.c:934
+#: builtin.c:939
msgid "fatal: no `$' supplied for positional field width or precision"
msgstr "Fatal: »$« fehlt in positionsabhängiger Feldbreite oder Genauigkeit"
#
-#: builtin.c:1006
+#: builtin.c:1009
msgid "`l' is meaningless in awk formats; ignored"
msgstr "»l« ist in awk-Formaten bedeutungslos, ignoriert"
-#: builtin.c:1010
+#: builtin.c:1013
msgid "fatal: `l' is not permitted in POSIX awk formats"
msgstr "Fatal: »l« ist in POSIX-awk-Formaten nicht zulässig"
-#: builtin.c:1023
+#: builtin.c:1026
msgid "`L' is meaningless in awk formats; ignored"
msgstr "»L« ist in awk-Formaten bedeutungslos, ignoriert"
-#: builtin.c:1027
+#: builtin.c:1030
msgid "fatal: `L' is not permitted in POSIX awk formats"
msgstr "Fatal: »L« ist in POSIX-awk-Formaten nicht zulässig"
-#: builtin.c:1040
+#: builtin.c:1043
msgid "`h' is meaningless in awk formats; ignored"
msgstr "»h« ist in awk-Formaten bedeutungslos, ignoriert"
-#: builtin.c:1044
+#: builtin.c:1047
msgid "fatal: `h' is not permitted in POSIX awk formats"
msgstr "Fatal: »h« ist in POSIX-awk-Formaten nicht zulässig"
-#: builtin.c:1439
+#: builtin.c:1463
#, c-format
msgid "[s]printf: value %g is out of range for `%%%c' format"
msgstr "[s]printf: Wert %g ist außerhalb des Bereichs für Format »%%%c«"
-#: builtin.c:1537
+#: builtin.c:1561
#, c-format
msgid "ignoring unknown format specifier character `%c': no argument converted"
msgstr ""
"das unbekannte Zeichen »%c« in der Formatspezifikation wird ignoriert: keine "
"Argumente umgewandelt"
-#: builtin.c:1542
+#: builtin.c:1566
msgid "fatal: not enough arguments to satisfy format string"
msgstr "Fatal: Nicht genügend Argumente für die Formatangabe"
-#: builtin.c:1544
+#: builtin.c:1568
msgid "^ ran out for this one"
msgstr "^ hierfür fehlte es"
-#: builtin.c:1551
+#: builtin.c:1575
msgid "[s]printf: format specifier does not have control letter"
msgstr "[s]printf: Format-Spezifikation hat keinen Controlcode"
-#: builtin.c:1554
+#: builtin.c:1578
msgid "too many arguments supplied for format string"
msgstr "Zu viele Argumente für den Formatstring"
-#: builtin.c:1610
+#: builtin.c:1634
#, fuzzy
msgid "sprintf: no arguments"
msgstr "printf: Keine Argumente"
-#: builtin.c:1633 builtin.c:1644
+#: builtin.c:1657 builtin.c:1668
msgid "printf: no arguments"
msgstr "printf: Keine Argumente"
-#: builtin.c:1687
+#: builtin.c:1711
msgid "sqrt: received non-numeric argument"
msgstr "sqrt: das Argument ist keine Zahl"
-#: builtin.c:1691
+#: builtin.c:1715
#, c-format
msgid "sqrt: called with negative argument %g"
msgstr "sqrt: das Argument %g ist negativ"
-#: builtin.c:1722
+#: builtin.c:1746
#, c-format
msgid "substr: length %g is not >= 1"
msgstr "substr: Länge %g ist nicht >= 1"
-#: builtin.c:1724
+#: builtin.c:1748
#, c-format
msgid "substr: length %g is not >= 0"
msgstr "substr: Länge %g ist nicht >= 0"
-#: builtin.c:1731
+#: builtin.c:1755
#, c-format
msgid "substr: non-integer length %g will be truncated"
msgstr "substr: Nicht ganzzahlige Länge %g wird abgeschnitten"
-#: builtin.c:1736
+#: builtin.c:1760
#, c-format
msgid "substr: length %g too big for string indexing, truncating to %g"
msgstr ""
"substr: Länge %g ist zu groß für Stringindizierung, wird auf %g gekürzt"
-#: builtin.c:1748
+#: builtin.c:1772
#, c-format
msgid "substr: start index %g is invalid, using 1"
msgstr "substr: Start-Index %g ist ungültig, 1 wird verwendet"
-#: builtin.c:1753
+#: builtin.c:1777
#, c-format
msgid "substr: non-integer start index %g will be truncated"
msgstr "substr: Nicht ganzzahliger Start-Wert %g wird abgeschnitten"
-#: builtin.c:1778
+#: builtin.c:1802
msgid "substr: source string is zero length"
msgstr "substr: Quellstring ist leer"
-#: builtin.c:1794
+#: builtin.c:1818
#, c-format
msgid "substr: start index %g is past end of string"
msgstr "substr: Start-Wert %g liegt hinter dem Ende des Strings"
-#: builtin.c:1802
+#: builtin.c:1826
#, c-format
msgid ""
"substr: length %g at start index %g exceeds length of first argument (%lu)"
@@ -766,197 +776,197 @@ msgstr ""
"substr: Länge %g am Start-Wert %g überschreitet die Länge des ersten "
"Arguments (%lu)"
-#: builtin.c:1876
+#: builtin.c:1900
msgid "strftime: format value in PROCINFO[\"strftime\"] has numeric type"
msgstr "strftime: Formatwert in PROCINFO[\"strftime\"] ist numerischen Typs"
-#: builtin.c:1899
+#: builtin.c:1923
msgid "strftime: received non-numeric second argument"
msgstr "strftime: Das zweite Argument ist keine Zahl"
-#: builtin.c:1903
+#: builtin.c:1927
msgid "strftime: second argument less than 0 or too big for time_t"
msgstr ""
"strftime: das zweite Argument ist kleiner als 0 oder zu groß für time_t"
-#: builtin.c:1910
+#: builtin.c:1934
msgid "strftime: received non-string first argument"
msgstr "strftime: Das erste Argument ist kein String"
-#: builtin.c:1917
+#: builtin.c:1941
msgid "strftime: received empty format string"
msgstr "strftime: Der Format-String ist leer"
-#: builtin.c:1983
+#: builtin.c:2007
msgid "mktime: received non-string argument"
msgstr "mktime: Das Argument ist kein String"
-#: builtin.c:2000
+#: builtin.c:2024
msgid "mktime: at least one of the values is out of the default range"
msgstr "mktime: mindestens einer der Werte ist außerhalb des normalen Bereichs"
-#: builtin.c:2035
+#: builtin.c:2059
msgid "'system' function not allowed in sandbox mode"
msgstr "Die Funktion »system« ist im Sandbox-Modus nicht erlaubt"
-#: builtin.c:2040
+#: builtin.c:2064
msgid "system: received non-string argument"
msgstr "system: Das Argument ist kein String"
-#: builtin.c:2160
+#: builtin.c:2184
#, c-format
msgid "reference to uninitialized field `$%d'"
msgstr "Referenz auf das nicht initialisierte Feld »$%d«"
-#: builtin.c:2247
+#: builtin.c:2271
msgid "tolower: received non-string argument"
msgstr "tolower: das Argument ist kein String"
-#: builtin.c:2281
+#: builtin.c:2305
msgid "toupper: received non-string argument"
msgstr "toupper: das Argument ist kein String"
-#: builtin.c:2317 mpfr.c:672
+#: builtin.c:2341 mpfr.c:672
msgid "atan2: received non-numeric first argument"
msgstr "atan2: das erste Argument ist keine Zahl"
-#: builtin.c:2319 mpfr.c:674
+#: builtin.c:2343 mpfr.c:674
msgid "atan2: received non-numeric second argument"
msgstr "atan2: das zweite Argument ist keine Zahl"
-#: builtin.c:2338
+#: builtin.c:2362
msgid "sin: received non-numeric argument"
msgstr "sin: das Argument ist keine Zahl"
-#: builtin.c:2354
+#: builtin.c:2378
msgid "cos: received non-numeric argument"
msgstr "cos: das Argument ist keine Zahl"
-#: builtin.c:2407 mpfr.c:1156
+#: builtin.c:2431 mpfr.c:1156
msgid "srand: received non-numeric argument"
msgstr "srand: das Argument ist keine Zahl"
-#: builtin.c:2438
+#: builtin.c:2462
msgid "match: third argument is not an array"
msgstr "match: das dritte Argument ist kein Array"
-#: builtin.c:2710
+#: builtin.c:2734
msgid "gensub: third argument of 0 treated as 1"
msgstr "gensub: 0 als drittes Argument wird als 1 interpretiert"
-#: builtin.c:3003
+#: builtin.c:3030
msgid "lshift: received non-numeric first argument"
msgstr "lshift: das erste Argument ist keine Zahl"
-#: builtin.c:3005
+#: builtin.c:3032
msgid "lshift: received non-numeric second argument"
msgstr "lshift: das zweite Argument ist keine Zahl"
-#: builtin.c:3011
+#: builtin.c:3038
#, fuzzy, c-format
msgid "lshift(%f, %f): negative values will give strange results"
msgstr ""
"lshift(%lf, %lf): Negative Werte werden zu merkwürdigen Ergebnissen führen"
-#: builtin.c:3013
+#: builtin.c:3040
#, fuzzy, c-format
msgid "lshift(%f, %f): fractional values will be truncated"
msgstr "lshift(%lf, %lf): Dezimalteil wird abgeschnitten"
-#: builtin.c:3015
+#: builtin.c:3042
#, fuzzy, c-format
msgid "lshift(%f, %f): too large shift value will give strange results"
msgstr ""
"lshift(%lf, %lf): Zu große Shift-Werte werden zu merkwürdigen Ergebnissen "
"führen"
-#: builtin.c:3040
+#: builtin.c:3067
msgid "rshift: received non-numeric first argument"
msgstr "rshift: das erste Argument ist keine Zahl"
-#: builtin.c:3042
+#: builtin.c:3069
msgid "rshift: received non-numeric second argument"
msgstr "rshift: das zweite Argument ist keine Zahl"
-#: builtin.c:3048
+#: builtin.c:3075
#, fuzzy, c-format
msgid "rshift(%f, %f): negative values will give strange results"
msgstr ""
"rshift (%lf, %lf): Negative Werte werden zu merkwürdigen Ergebnissen führen"
-#: builtin.c:3050
+#: builtin.c:3077
#, fuzzy, c-format
msgid "rshift(%f, %f): fractional values will be truncated"
msgstr "rshift(%lf, %lf): Dezimalteil wird abgeschnitten"
-#: builtin.c:3052
+#: builtin.c:3079
#, fuzzy, c-format
msgid "rshift(%f, %f): too large shift value will give strange results"
msgstr ""
"rshift(%lf, %lf): Zu große Shift-Werte werden zu merkwürdigen Ergebnissen "
"führen"
-#: builtin.c:3077 mpfr.c:968
+#: builtin.c:3104 mpfr.c:968
#, fuzzy
msgid "and: called with less than two arguments"
msgstr "sqrt: das Argument %g ist negativ"
-#: builtin.c:3082
+#: builtin.c:3109
#, fuzzy, c-format
msgid "and: argument %d is non-numeric"
msgstr "exp: das Argument %g liegt außerhalb des gültigen Bereichs"
-#: builtin.c:3086
+#: builtin.c:3113
#, fuzzy, c-format
msgid "and: argument %d negative value %g will give strange results"
msgstr ""
"and(%lf, %lf): Negative Werte werden zu merkwürdigen Ergebnissen führen"
-#: builtin.c:3109 mpfr.c:1000
+#: builtin.c:3136 mpfr.c:1000
#, fuzzy
msgid "or: called with less than two arguments"
msgstr "sqrt: das Argument %g ist negativ"
-#: builtin.c:3114
+#: builtin.c:3141
#, fuzzy, c-format
msgid "or: argument %d is non-numeric"
msgstr "exp: das Argument %g liegt außerhalb des gültigen Bereichs"
-#: builtin.c:3118
+#: builtin.c:3145
#, fuzzy, c-format
msgid "or: argument %d negative value %g will give strange results"
msgstr "compl(%lf): Negativer Wert wird zu merkwürdigen Ergebnissen führen"
-#: builtin.c:3140 mpfr.c:1031
+#: builtin.c:3167 mpfr.c:1031
#, fuzzy
msgid "xor: called with less than two arguments"
msgstr "sqrt: das Argument %g ist negativ"
-#: builtin.c:3146
+#: builtin.c:3173
#, fuzzy, c-format
msgid "xor: argument %d is non-numeric"
msgstr "exp: das Argument %g liegt außerhalb des gültigen Bereichs"
-#: builtin.c:3150
+#: builtin.c:3177
#, fuzzy, c-format
msgid "xor: argument %d negative value %g will give strange results"
msgstr "xor(%lf, %lf: Negative Werte werden zu merkwürdigen Ergebnissen führen"
-#: builtin.c:3175 mpfr.c:787
+#: builtin.c:3202 mpfr.c:787
msgid "compl: received non-numeric argument"
msgstr "compl: das erste Argument ist keine Zahl"
-#: builtin.c:3181
+#: builtin.c:3208
#, fuzzy, c-format
msgid "compl(%f): negative value will give strange results"
msgstr "compl(%lf): Negativer Wert wird zu merkwürdigen Ergebnissen führen"
-#: builtin.c:3183
+#: builtin.c:3210
#, fuzzy, c-format
msgid "compl(%f): fractional value will be truncated"
msgstr "compl(%lf): Dezimalteil wird abgeschnitten"
-#: builtin.c:3352
+#: builtin.c:3379
#, c-format
msgid "dcgettext: `%s' is not a valid locale category"
msgstr "dcgettext: »%s« ist keine gültige Locale-Kategorie"
@@ -1080,8 +1090,8 @@ msgstr ""
#: command.y:823
msgid ""
-"commands [num] - starts a list of commands to be executed at a breakpoint"
-"(watchpoint) hit."
+"commands [num] - starts a list of commands to be executed at a "
+"breakpoint(watchpoint) hit."
msgstr ""
#: command.y:825
@@ -1238,7 +1248,7 @@ msgstr ""
msgid "watch var - set a watchpoint for a variable."
msgstr ""
-#: command.y:1011 debug.c:395 msg.c:128
+#: command.y:1011 debug.c:401 msg.c:135
#, c-format
msgid "error: "
msgstr "Fehler: "
@@ -1278,558 +1288,558 @@ msgstr "Ungültiges Zeichen"
msgid "undefined command: %s\n"
msgstr ""
-#: debug.c:246
+#: debug.c:252
msgid "set or show the number of lines to keep in history file."
msgstr ""
-#: debug.c:248
+#: debug.c:254
msgid "set or show the list command window size."
msgstr ""
-#: debug.c:250
+#: debug.c:256
msgid "set or show gawk output file."
msgstr ""
-#: debug.c:252
+#: debug.c:258
msgid "set or show debugger prompt."
msgstr ""
-#: debug.c:254
+#: debug.c:260
msgid "(un)set or show saving of command history (value=on|off)."
msgstr ""
-#: debug.c:256
+#: debug.c:262
msgid "(un)set or show saving of options (value=on|off)."
msgstr ""
-#: debug.c:258
+#: debug.c:264
msgid "(un)set or show instruction tracing (value=on|off)."
msgstr ""
-#: debug.c:339
+#: debug.c:345
msgid "program not running."
msgstr ""
-#: debug.c:442 debug.c:597
+#: debug.c:448 debug.c:606
#, fuzzy, c-format
msgid "can't read source file `%s' (%s)"
msgstr "Die Quelldatei »%s« kann nicht gelesen werden (%s)"
-#: debug.c:447
+#: debug.c:453
#, fuzzy, c-format
msgid "source file `%s' is empty.\n"
msgstr "Die Quelldatei »%s« ist leer"
-#: debug.c:474
+#: debug.c:480
msgid "no current source file."
msgstr ""
-#: debug.c:499
+#: debug.c:505
#, fuzzy, c-format
msgid "cannot find source file named `%s' (%s)"
msgstr "Die Quelldatei »%s« kann nicht gelesen werden (%s)"
-#: debug.c:523
+#: debug.c:529
#, c-format
msgid "WARNING: source file `%s' modified since program compilation.\n"
msgstr ""
-#: debug.c:542
+#: debug.c:551
#, c-format
msgid "line number %d out of range; `%s' has %d lines"
msgstr ""
-#: debug.c:602
+#: debug.c:611
#, fuzzy, c-format
msgid "unexpected eof while reading file `%s', line %d"
msgstr "Unerwarteter Zeilenumbruch oder Ende der Zeichenkette"
-#: debug.c:611
+#: debug.c:620
#, c-format
msgid "source file `%s' modified since start of program execution"
msgstr ""
-#: debug.c:723
+#: debug.c:732
#, fuzzy, c-format
msgid "Current source file: %s\n"
msgstr "Quelldatei »%s« wurde bereits eingebunden"
-#: debug.c:724
+#: debug.c:733
#, c-format
msgid "Number of lines: %d\n"
msgstr ""
-#: debug.c:731
+#: debug.c:740
#, c-format
msgid "Source file (lines): %s (%d)\n"
msgstr ""
-#: debug.c:745
+#: debug.c:754
msgid ""
"Number Disp Enabled Location\n"
"\n"
msgstr ""
-#: debug.c:756
+#: debug.c:765
#, c-format
msgid "\tno of hits = %ld\n"
msgstr ""
-#: debug.c:758
+#: debug.c:767
#, c-format
msgid "\tignore next %ld hit(s)\n"
msgstr ""
-#: debug.c:760 debug.c:900
+#: debug.c:769 debug.c:909
#, c-format
msgid "\tstop condition: %s\n"
msgstr ""
-#: debug.c:762 debug.c:902
+#: debug.c:771 debug.c:911
msgid "\tcommands:\n"
msgstr ""
-#: debug.c:784
+#: debug.c:793
#, c-format
msgid "Current frame: "
msgstr ""
-#: debug.c:787
+#: debug.c:796
#, c-format
msgid "Called by frame: "
msgstr ""
-#: debug.c:791
+#: debug.c:800
#, c-format
msgid "Caller of frame: "
msgstr ""
-#: debug.c:809
+#: debug.c:818
#, c-format
msgid "None in main().\n"
msgstr ""
-#: debug.c:839
+#: debug.c:848
#, fuzzy
msgid "No arguments.\n"
msgstr "printf: Keine Argumente"
-#: debug.c:840
+#: debug.c:849
msgid "No locals.\n"
msgstr ""
-#: debug.c:848
+#: debug.c:857
msgid ""
"All defined variables:\n"
"\n"
msgstr ""
-#: debug.c:858
+#: debug.c:867
msgid ""
"All defined functions:\n"
"\n"
msgstr ""
-#: debug.c:877
+#: debug.c:886
msgid ""
"Auto-display variables:\n"
"\n"
msgstr ""
-#: debug.c:880
+#: debug.c:889
msgid ""
"Watch variables:\n"
"\n"
msgstr ""
-#: debug.c:1020
+#: debug.c:1029
#, fuzzy, c-format
msgid "no symbol `%s' in current context\n"
msgstr "»exit« kann im aktuellen Kontext nicht aufgerufen werden"
-#: debug.c:1032 debug.c:1418
+#: debug.c:1041 debug.c:1427
#, fuzzy, c-format
msgid "`%s' is not an array\n"
msgstr "»%s« ist kein gültiger Variablenname"
-#: debug.c:1046
+#: debug.c:1055
#, fuzzy, c-format
msgid "$%ld = uninitialized field\n"
msgstr "Referenz auf das nicht initialisierte Feld »$%d«"
-#: debug.c:1067
+#: debug.c:1076
#, fuzzy, c-format
msgid "array `%s' is empty\n"
msgstr "Die Datei »%s« ist leer"
-#: debug.c:1110 debug.c:1162
+#: debug.c:1119 debug.c:1171
#, fuzzy, c-format
msgid "[\"%s\"] not in array `%s'\n"
msgstr "delete: Index »%s« ist in Feld »%s« nicht vorhanden"
-#: debug.c:1166
+#: debug.c:1175
#, c-format
msgid "`%s[\"%s\"]' is not an array\n"
msgstr ""
-#: debug.c:1227 debug.c:4949
+#: debug.c:1236 debug.c:4964
#, fuzzy, c-format
msgid "`%s' is not a scalar variable"
msgstr "»%s« ist kein gültiger Variablenname"
-#: debug.c:1249 debug.c:4979
+#: debug.c:1258 debug.c:4994
#, fuzzy, c-format
msgid "attempt to use array `%s[\"%s\"]' in a scalar context"
msgstr ""
"Es wird versucht, das Feld »%s[\"%.*s\"]« in einem Skalarkontext zu verwenden"
-#: debug.c:1271 debug.c:4990
+#: debug.c:1280 debug.c:5005
#, fuzzy, c-format
msgid "attempt to use scalar `%s[\"%s\"]' as array"
msgstr "Es wird versucht, den Skalar »%s[\"%.*s\"]« als Feld zu verwenden"
-#: debug.c:1414
+#: debug.c:1423
#, fuzzy, c-format
msgid "`%s' is a function"
msgstr "»%s« ist ein unzulässiger Funktionsname"
-#: debug.c:1456
+#: debug.c:1465
#, c-format
msgid "watchpoint %d is unconditional\n"
msgstr ""
-#: debug.c:1490
+#: debug.c:1499
#, c-format
msgid "No display item numbered %ld"
msgstr ""
-#: debug.c:1493
+#: debug.c:1502
#, c-format
msgid "No watch item numbered %ld"
msgstr ""
-#: debug.c:1519
+#: debug.c:1528
#, fuzzy, c-format
msgid "%d: [\"%s\"] not in array `%s'\n"
msgstr "delete: Index »%s« ist in Feld »%s« nicht vorhanden"
-#: debug.c:1758
+#: debug.c:1767
#, fuzzy
msgid "attempt to use scalar value as array"
msgstr "Es wird versucht, einen Skalar als Feld zu verwenden"
-#: debug.c:1847
+#: debug.c:1856
#, c-format
msgid "Watchpoint %d deleted because parameter is out of scope.\n"
msgstr ""
-#: debug.c:1858
+#: debug.c:1867
#, c-format
msgid "Display %d deleted because parameter is out of scope.\n"
msgstr ""
-#: debug.c:1891
+#: debug.c:1900
#, c-format
msgid " in file `%s', line %d\n"
msgstr ""
-#: debug.c:1912
+#: debug.c:1921
#, c-format
msgid " at `%s':%d"
msgstr ""
-#: debug.c:1928 debug.c:1991
+#: debug.c:1937 debug.c:2000
#, c-format
msgid "#%ld\tin "
msgstr ""
-#: debug.c:1965
+#: debug.c:1974
#, c-format
msgid "More stack frames follow ...\n"
msgstr ""
-#: debug.c:2008
+#: debug.c:2017
#, fuzzy
msgid "invalid frame number"
msgstr "Ungültiges Bereichsende"
-#: debug.c:2180
+#: debug.c:2200
#, c-format
msgid "Note: breakpoint %d (enabled, ignore next %ld hits), also set at %s:%d"
msgstr ""
-#: debug.c:2187
+#: debug.c:2207
#, c-format
msgid "Note: breakpoint %d (enabled), also set at %s:%d"
msgstr ""
-#: debug.c:2194
+#: debug.c:2214
#, c-format
msgid "Note: breakpoint %d (disabled, ignore next %ld hits), also set at %s:%d"
msgstr ""
-#: debug.c:2201
+#: debug.c:2221
#, c-format
msgid "Note: breakpoint %d (disabled), also set at %s:%d"
msgstr ""
-#: debug.c:2218
+#: debug.c:2238
#, c-format
msgid "Breakpoint %d set at file `%s', line %d\n"
msgstr ""
-#: debug.c:2320
+#: debug.c:2340
#, c-format
msgid "Can't set breakpoint in file `%s'\n"
msgstr ""
-#: debug.c:2349 debug.c:2472 debug.c:3330
+#: debug.c:2369 debug.c:2492 debug.c:3350
#, fuzzy, c-format
msgid "line number %d in file `%s' out of range"
msgstr "exp: das Argument %g liegt außerhalb des gültigen Bereichs"
-#: debug.c:2353
+#: debug.c:2373
#, c-format
msgid "Can't find rule!!!\n"
msgstr ""
-#: debug.c:2355
+#: debug.c:2375
#, c-format
msgid "Can't set breakpoint at `%s':%d\n"
msgstr ""
-#: debug.c:2367
+#: debug.c:2387
#, c-format
msgid "Can't set breakpoint in function `%s'\n"
msgstr ""
-#: debug.c:2383
+#: debug.c:2403
#, c-format
msgid "breakpoint %d set at file `%s', line %d is unconditional\n"
msgstr ""
-#: debug.c:2488 debug.c:2510
+#: debug.c:2508 debug.c:2530
#, c-format
msgid "Deleted breakpoint %d"
msgstr ""
-#: debug.c:2494
+#: debug.c:2514
#, c-format
msgid "No breakpoint(s) at entry to function `%s'\n"
msgstr ""
-#: debug.c:2521
+#: debug.c:2541
#, fuzzy, c-format
msgid "No breakpoint at file `%s', line #%d\n"
msgstr "Fehler beim Lesen der Eingabedatei »%s«: %s"
-#: debug.c:2576 debug.c:2617 debug.c:2637 debug.c:2680
+#: debug.c:2596 debug.c:2637 debug.c:2657 debug.c:2700
msgid "invalid breakpoint number"
msgstr ""
-#: debug.c:2592
+#: debug.c:2612
msgid "Delete all breakpoints? (y or n) "
msgstr ""
-#: debug.c:2593 debug.c:2903 debug.c:2956
+#: debug.c:2613 debug.c:2923 debug.c:2976
msgid "y"
msgstr ""
-#: debug.c:2642
+#: debug.c:2662
#, c-format
msgid "Will ignore next %ld crossing(s) of breakpoint %d.\n"
msgstr ""
-#: debug.c:2646
+#: debug.c:2666
#, c-format
msgid "Will stop next time breakpoint %d is reached.\n"
msgstr ""
-#: debug.c:2763
+#: debug.c:2783
#, c-format
msgid "Can only debug programs provided with the `-f' option.\n"
msgstr ""
-#: debug.c:2888
+#: debug.c:2908
#, c-format
msgid "Failed to restart debugger"
msgstr ""
-#: debug.c:2902
+#: debug.c:2922
msgid "Program already running. Restart from beginning (y/n)? "
msgstr ""
-#: debug.c:2906
+#: debug.c:2926
#, c-format
msgid "Program not restarted\n"
msgstr ""
-#: debug.c:2916
+#: debug.c:2936
#, c-format
msgid "error: cannot restart, operation not allowed\n"
msgstr ""
-#: debug.c:2922
+#: debug.c:2942
#, c-format
msgid "error (%s): cannot restart, ignoring rest of the commands\n"
msgstr ""
-#: debug.c:2930
+#: debug.c:2950
#, c-format
msgid "Starting program: \n"
msgstr ""
-#: debug.c:2939
+#: debug.c:2959
#, c-format
msgid "Program exited %s with exit value: %d\n"
msgstr ""
-#: debug.c:2955
+#: debug.c:2975
msgid "The program is running. Exit anyway (y/n)? "
msgstr ""
-#: debug.c:2990
+#: debug.c:3010
#, c-format
msgid "Not stopped at any breakpoint; argument ignored.\n"
msgstr ""
-#: debug.c:2995
+#: debug.c:3015
#, c-format
msgid "invalid breakpoint number %d."
msgstr ""
-#: debug.c:3000
+#: debug.c:3020
#, c-format
msgid "Will ignore next %ld crossings of breakpoint %d.\n"
msgstr ""
-#: debug.c:3187
+#: debug.c:3207
#, c-format
msgid "'finish' not meaningful in the outermost frame main()\n"
msgstr ""
-#: debug.c:3192
+#: debug.c:3212
#, c-format
msgid "Run till return from "
msgstr ""
-#: debug.c:3235
+#: debug.c:3255
#, c-format
msgid "'return' not meaningful in the outermost frame main()\n"
msgstr ""
-#: debug.c:3349
+#: debug.c:3369
#, c-format
msgid "Can't find specified location in function `%s'\n"
msgstr ""
-#: debug.c:3357
+#: debug.c:3377
#, fuzzy, c-format
msgid "invalid source line %d in file `%s'"
msgstr "Quelldatei »%s« wurde bereits eingebunden"
-#: debug.c:3372
+#: debug.c:3392
#, c-format
msgid "Can't find specified location %d in file `%s'\n"
msgstr ""
-#: debug.c:3404
+#: debug.c:3424
#, fuzzy, c-format
msgid "element not in array\n"
msgstr "delete: Index »%s« ist in Feld »%s« nicht vorhanden"
-#: debug.c:3404
+#: debug.c:3424
#, c-format
msgid "untyped variable\n"
msgstr ""
-#: debug.c:3446
+#: debug.c:3466
#, c-format
msgid "Stopping in %s ...\n"
msgstr ""
-#: debug.c:3523
+#: debug.c:3543
#, c-format
msgid "'finish' not meaningful with non-local jump '%s'\n"
msgstr ""
-#: debug.c:3530
+#: debug.c:3550
#, c-format
msgid "'until' not meaningful with non-local jump '%s'\n"
msgstr ""
-#: debug.c:4165
+#: debug.c:4185
msgid "\t------[Enter] to continue or q [Enter] to quit------"
msgstr ""
-#: debug.c:4166
+#: debug.c:4186
msgid "q"
msgstr ""
-#: debug.c:4986
+#: debug.c:5001
#, fuzzy, c-format
msgid "[\"%s\"] not in array `%s'"
msgstr "delete: Index »%s« ist in Feld »%s« nicht vorhanden"
-#: debug.c:5192
+#: debug.c:5207
#, c-format
msgid "sending output to stdout\n"
msgstr ""
-#: debug.c:5232
+#: debug.c:5247
msgid "invalid number"
msgstr ""
-#: debug.c:5366
+#: debug.c:5381
#, fuzzy, c-format
msgid "`%s' not allowed in current context; statement ignored"
msgstr "»exit« kann im aktuellen Kontext nicht aufgerufen werden"
-#: debug.c:5374
+#: debug.c:5389
#, fuzzy
msgid "`return' not allowed in current context; statement ignored"
msgstr "»exit« kann im aktuellen Kontext nicht aufgerufen werden"
-#: debug.c:5575
+#: debug.c:5590
#, c-format
msgid "No symbol `%s' in current context"
msgstr ""
-#: dfa.c:998 dfa.c:1001 dfa.c:1021 dfa.c:1031 dfa.c:1043 dfa.c:1094 dfa.c:1103
-#: dfa.c:1106 dfa.c:1111 dfa.c:1124 dfa.c:1192
+#: dfa.c:1118 dfa.c:1121 dfa.c:1142 dfa.c:1150 dfa.c:1162 dfa.c:1197
+#: dfa.c:1206 dfa.c:1209 dfa.c:1214 dfa.c:1228 dfa.c:1275
msgid "unbalanced ["
msgstr ""
-#: dfa.c:1052
+#: dfa.c:1174
#, fuzzy
msgid "invalid character class"
msgstr "Ungültiger Name für eine Zeichenklasse"
-#: dfa.c:1229
+#: dfa.c:1316
msgid "character class syntax is [[:space:]], not [:space:]"
msgstr ""
-#: dfa.c:1281
+#: dfa.c:1366
msgid "unfinished \\ escape"
msgstr ""
-#: dfa.c:1428 regcomp.c:161
+#: dfa.c:1513 regcomp.c:161
msgid "Invalid content of \\{\\}"
msgstr "Ungültiger Inhalt von \\{\\}"
-#: dfa.c:1431 regcomp.c:176
+#: dfa.c:1516 regcomp.c:176
msgid "Regular expression too big"
msgstr "Regulärer Ausdruck ist zu groß"
-#: dfa.c:1816
+#: dfa.c:1936
msgid "unbalanced ("
msgstr ""
-#: dfa.c:1943
+#: dfa.c:2062
msgid "no syntax specified"
msgstr ""
-#: dfa.c:1951
+#: dfa.c:2070
msgid "unbalanced )"
msgstr ""
@@ -1848,11 +1858,11 @@ msgstr "Unbekannter Opcode %d"
msgid "opcode %s not an operator or keyword"
msgstr "Opcode %s ist weder ein Operator noch ein Schlüsselwort"
-#: eval.c:471
+#: eval.c:472
msgid "buffer overflow in genflags2str"
msgstr "Pufferüberlauf in genflags2str"
-#: eval.c:674
+#: eval.c:675
#, c-format
msgid ""
"\n"
@@ -1863,71 +1873,71 @@ msgstr ""
"\t# Funktions-Aufruf-Stack\n"
"\n"
-#: eval.c:703
+#: eval.c:704
msgid "`IGNORECASE' is a gawk extension"
msgstr "»IGNORECASE« ist eine gawk-Erweiterung"
-#: eval.c:735
+#: eval.c:736
msgid "`BINMODE' is a gawk extension"
msgstr "»BINMODE« ist eine gawk-Erweiterung"
-#: eval.c:793
+#: eval.c:794
#, c-format
msgid "BINMODE value `%s' is invalid, treated as 3"
msgstr "BINMODE Wert »%s« ist ungültig und wird als 3 behandelt"
-#: eval.c:884
+#: eval.c:885
#, c-format
msgid "bad `%sFMT' specification `%s'"
msgstr "Falsche »%sFMT«-Angabe »%s«"
-#: eval.c:968
+#: eval.c:969
msgid "turning off `--lint' due to assignment to `LINT'"
msgstr "»--lint« wird abgeschaltet, da an »LINT« zugewiesen wird"
-#: eval.c:1146
+#: eval.c:1147
#, c-format
msgid "reference to uninitialized argument `%s'"
msgstr "Referenz auf nicht initialisiertes Argument »%s«"
-#: eval.c:1147
+#: eval.c:1148
#, c-format
msgid "reference to uninitialized variable `%s'"
msgstr "Referenz auf die nicht initialisierte Variable »%s«"
-#: eval.c:1165
+#: eval.c:1166
msgid "attempt to field reference from non-numeric value"
msgstr "Nicht numerischer Wert für Feldreferenz verwendet"
-#: eval.c:1167
+#: eval.c:1168
msgid "attempt to field reference from null string"
msgstr "Referenz auf ein Feld von einem Null-String"
-#: eval.c:1175
+#: eval.c:1176
#, c-format
msgid "attempt to access field %ld"
msgstr "Versuch des Zugriffs auf Feld %ld"
-#: eval.c:1184
+#: eval.c:1185
#, c-format
msgid "reference to uninitialized field `$%ld'"
msgstr "Referenz auf das nicht initialisierte Feld »$%ld«"
-#: eval.c:1271
+#: eval.c:1272
#, c-format
msgid "function `%s' called with more arguments than declared"
msgstr "Funktion »%s« mit zu vielen Argumenten aufgerufen"
-#: eval.c:1466
+#: eval.c:1473
#, c-format
msgid "unwind_stack: unexpected type `%s'"
msgstr "unwind_stack: unerwarteter Typ »%s«"
-#: eval.c:1562
+#: eval.c:1569
msgid "division by zero attempted in `/='"
msgstr "Division durch Null versucht in »/=«"
-#: eval.c:1569
+#: eval.c:1576
#, c-format
msgid "division by zero attempted in `%%='"
msgstr "Division durch Null versucht in »%%=«"
@@ -1941,7 +1951,7 @@ msgstr "Erweiterungen sind im Sandbox-Modus nicht erlaubt"
msgid "-l / @load are gawk extensions"
msgstr "»@include« ist eine gawk-Erweiterung"
-#: ext.c:95 ext.c:177
+#: ext.c:95
msgid "load_ext: received NULL lib_name"
msgstr ""
@@ -1974,6 +1984,10 @@ msgstr ""
msgid "`extension' is a gawk extension"
msgstr "»extension« ist eine gawk-Erweiterung"
+#: ext.c:177
+msgid "extension: received NULL lib_name"
+msgstr ""
+
#: ext.c:180
#, fuzzy, c-format
msgid "extension: cannot open library `%s' (%s)"
@@ -1999,39 +2013,39 @@ msgstr ""
msgid "make_builtin: missing function name"
msgstr "Erweiterung: Funktionsname fehlt"
-#: ext.c:238
+#: ext.c:236
#, fuzzy, c-format
msgid "make_builtin: can't redefine function `%s'"
msgstr "Erweiterung: Funktion »%s« kann nicht neu definiert werden"
-#: ext.c:242
+#: ext.c:240
#, fuzzy, c-format
msgid "make_builtin: function `%s' already defined"
msgstr "Erweiterung: Funktion »%s« wurde bereits definiert"
-#: ext.c:246
+#: ext.c:244
#, fuzzy, c-format
msgid "make_builtin: function name `%s' previously defined"
msgstr "Erweiterung: Funktion »%s« wurde bereits vorher definiert"
-#: ext.c:248
+#: ext.c:246
#, fuzzy, c-format
msgid "make_builtin: can't use gawk built-in `%s' as function name"
msgstr ""
"Erweiterung: die eingebaute Funktion »%s« kann nicht als Funktionsname "
"verwendet werden"
-#: ext.c:251 ext.c:304
+#: ext.c:249 ext.c:304
#, c-format
msgid "make_builtin: negative argument count for function `%s'"
msgstr "make_builtin: negative Anzahl von Argumenten für Funktion »%s«"
-#: ext.c:278
+#: ext.c:276
#, fuzzy
msgid "extension: missing function name"
msgstr "Erweiterung: Funktionsname fehlt"
-#: ext.c:283
+#: ext.c:279 ext.c:283
#, fuzzy, c-format
msgid "extension: illegal character `%c' in function name `%s'"
msgstr "Erweiterung: unzulässiges Zeichen »%c« in Funktionsname »%s«"
@@ -2058,159 +2072,164 @@ msgstr ""
"Erweiterung: die eingebaute Funktion »%s« kann nicht als Funktionsname "
"verwendet werden"
-#: ext.c:374
+#: ext.c:375
#, c-format
msgid "function `%s' defined to take no more than %d argument(s)"
msgstr ""
"Funktion »%s« wird als Funktion definiert, die nie mehr als %d Argument(e) "
"akzeptiert"
-#: ext.c:377
+#: ext.c:378
#, c-format
msgid "function `%s': missing argument #%d"
msgstr "Funktion »%s«: fehlendes Argument #%d"
-#: ext.c:394
+#: ext.c:395
#, c-format
msgid "function `%s': argument #%d: attempt to use scalar as an array"
msgstr ""
"Funktion »%s«: Argument #%d: Es wird versucht, einen Skalar als Feld zu "
"verwenden"
-#: ext.c:398
+#: ext.c:399
#, c-format
msgid "function `%s': argument #%d: attempt to use array as a scalar"
msgstr ""
"Funktion »%s«: Argument #%d: Es wird versucht, ein Feld als Skalar zu "
"verwenden"
-#: ext.c:412
+#: ext.c:413
msgid "dynamic loading of library not supported"
msgstr ""
-#: extension/filefuncs.c:97
+#: extension/filefuncs.c:159
#, fuzzy
msgid "chdir: called with incorrect number of arguments, expecting 1"
msgstr "sqrt: das Argument %g ist negativ"
-#: extension/filefuncs.c:343
+#: extension/filefuncs.c:439
#, c-format
msgid "stat: unable to read symbolic link `%s'"
msgstr ""
-#: extension/filefuncs.c:376
+#: extension/filefuncs.c:472
#, fuzzy
msgid "stat: called with wrong number of arguments"
msgstr "sqrt: das Argument %g ist negativ"
-#: extension/filefuncs.c:383
+#: extension/filefuncs.c:479
#, fuzzy
msgid "stat: bad parameters"
msgstr "%s: ist ein Parameter\n"
-#: extension/filefuncs.c:437
+#: extension/filefuncs.c:533
#, fuzzy, c-format
msgid "fts init: could not create variable %s"
msgstr "index: Zweites Argument ist kein string"
-#: extension/filefuncs.c:460
+#: extension/filefuncs.c:554
+#, fuzzy
+msgid "fts is not supported on this system"
+msgstr "»%s« wird im alten awk nicht unterstützt"
+
+#: extension/filefuncs.c:573
msgid "fill_stat_element: could not create array"
msgstr ""
-#: extension/filefuncs.c:469
+#: extension/filefuncs.c:582
msgid "fill_stat_element: could not set element"
msgstr ""
-#: extension/filefuncs.c:484
+#: extension/filefuncs.c:597
#, fuzzy
msgid "fill_path_element: could not set element"
msgstr "index: Zweites Argument ist kein string"
-#: extension/filefuncs.c:500
+#: extension/filefuncs.c:613
msgid "fill_error_element: could not set element"
msgstr ""
-#: extension/filefuncs.c:547 extension/filefuncs.c:594
+#: extension/filefuncs.c:660 extension/filefuncs.c:707
msgid "fts-process: could not create array"
msgstr ""
-#: extension/filefuncs.c:557 extension/filefuncs.c:604
-#: extension/filefuncs.c:622
+#: extension/filefuncs.c:670 extension/filefuncs.c:717
+#: extension/filefuncs.c:735
#, fuzzy
msgid "fts-process: could not set element"
msgstr "index: Zweites Argument ist kein string"
-#: extension/filefuncs.c:671
+#: extension/filefuncs.c:784
#, fuzzy
msgid "fts: called with incorrect number of arguments, expecting 3"
msgstr "sqrt: das Argument %g ist negativ"
-#: extension/filefuncs.c:674
+#: extension/filefuncs.c:787
#, fuzzy
msgid "fts: bad first parameter"
msgstr "%s: ist ein Parameter\n"
-#: extension/filefuncs.c:680
+#: extension/filefuncs.c:793
#, fuzzy
msgid "fts: bad second parameter"
msgstr "%s: ist ein Parameter\n"
-#: extension/filefuncs.c:686
+#: extension/filefuncs.c:799
#, fuzzy
msgid "fts: bad third parameter"
msgstr "%s: ist ein Parameter\n"
-#: extension/filefuncs.c:693
+#: extension/filefuncs.c:806
#, fuzzy
msgid "fts: could not flatten array\n"
msgstr "»%s« ist kein gültiger Variablenname"
-#: extension/filefuncs.c:711
+#: extension/filefuncs.c:824
msgid "fts: ignoring sneaky FTS_NOSTAT flag. nyah, nyah, nyah."
msgstr ""
-#: extension/filefuncs.c:728
+#: extension/filefuncs.c:841
msgid "fts: clear_array() failed\n"
msgstr ""
-#: extension/fnmatch.c:98
+#: extension/fnmatch.c:112
#, fuzzy
msgid "fnmatch: called with less than three arguments"
msgstr "sqrt: das Argument %g ist negativ"
-#: extension/fnmatch.c:101
+#: extension/fnmatch.c:115
#, fuzzy
msgid "fnmatch: called with more than three arguments"
msgstr "sqrt: das Argument %g ist negativ"
-#: extension/fnmatch.c:104
+#: extension/fnmatch.c:118
#, fuzzy
msgid "fnmatch: could not get first argument"
msgstr "strftime: Das erste Argument ist kein String"
-#: extension/fnmatch.c:109
+#: extension/fnmatch.c:123
#, fuzzy
msgid "fnmatch: could not get second argument"
msgstr "index: Zweites Argument ist kein string"
-#: extension/fnmatch.c:114
+#: extension/fnmatch.c:128
msgid "fnmatch: could not get third argument"
msgstr ""
-#: extension/fnmatch.c:127
+#: extension/fnmatch.c:141
msgid "fnmatch is not implemented on this system\n"
msgstr ""
-#: extension/fnmatch.c:159
+#: extension/fnmatch.c:173
msgid "fnmatch init: could not add FNM_NOMATCH variable"
msgstr ""
-#: extension/fnmatch.c:169
+#: extension/fnmatch.c:183
#, c-format
msgid "fnmatch init: could not set array element %s"
msgstr ""
-#: extension/fnmatch.c:179
+#: extension/fnmatch.c:193
msgid "fnmatch init: could not install FNM array"
msgstr ""
@@ -2238,88 +2257,88 @@ msgstr "sqrt: das Argument %g ist negativ"
msgid "wait: called with too many arguments"
msgstr "sqrt: das Argument %g ist negativ"
-#: extension/inplace.c:110
+#: extension/inplace.c:130
msgid "inplace_begin: in-place editing already active"
msgstr ""
-#: extension/inplace.c:113 extension/inplace.c:187
+#: extension/inplace.c:133 extension/inplace.c:207
#, c-format
msgid "inplace_begin: expects 2 arguments but called with %d"
msgstr ""
-#: extension/inplace.c:116
+#: extension/inplace.c:136
msgid "inplace_begin: cannot retrieve 1st argument as a string filename"
msgstr ""
-#: extension/inplace.c:124
+#: extension/inplace.c:144
#, c-format
msgid "inplace_begin: disabling in-place editing for invalid FILENAME `%s'"
msgstr ""
-#: extension/inplace.c:131
+#: extension/inplace.c:151
#, fuzzy, c-format
msgid "inplace_begin: Cannot stat `%s' (%s)"
msgstr "Fatal: extension: »%s« kann nicht geöffnet werden (%s)\n"
-#: extension/inplace.c:138
+#: extension/inplace.c:158
#, fuzzy, c-format
msgid "inplace_begin: `%s' is not a regular file"
msgstr "»%s« ist kein gültiger Variablenname"
-#: extension/inplace.c:149
+#: extension/inplace.c:169
#, c-format
msgid "inplace_begin: mkstemp(`%s') failed (%s)"
msgstr ""
-#: extension/inplace.c:158
+#: extension/inplace.c:178
#, fuzzy, c-format
msgid "inplace_begin: chmod failed (%s)"
msgstr "%s: close ist gescheitert (%s)"
-#: extension/inplace.c:165
+#: extension/inplace.c:185
#, c-format
msgid "inplace_begin: dup(stdout) failed (%s)"
msgstr ""
-#: extension/inplace.c:168
+#: extension/inplace.c:188
#, c-format
msgid "inplace_begin: dup2(%d, stdout) failed (%s)"
msgstr ""
-#: extension/inplace.c:171
+#: extension/inplace.c:191
#, fuzzy, c-format
msgid "inplace_begin: close(%d) failed (%s)"
msgstr "%s: close ist gescheitert (%s)"
-#: extension/inplace.c:190
+#: extension/inplace.c:210
msgid "inplace_end: cannot retrieve 1st argument as a string filename"
msgstr ""
-#: extension/inplace.c:197
+#: extension/inplace.c:217
msgid "inplace_end: in-place editing not active"
msgstr ""
-#: extension/inplace.c:203
+#: extension/inplace.c:223
#, c-format
msgid "inplace_end: dup2(%d, stdout) failed (%s)"
msgstr ""
-#: extension/inplace.c:206
+#: extension/inplace.c:226
#, fuzzy, c-format
msgid "inplace_end: close(%d) failed (%s)"
msgstr "%s: close ist gescheitert (%s)"
-#: extension/inplace.c:210
+#: extension/inplace.c:230
#, c-format
msgid "inplace_end: fsetpos(stdout) failed (%s)"
msgstr ""
-#: extension/inplace.c:223
+#: extension/inplace.c:243
#, fuzzy, c-format
msgid "inplace_end: link(`%s', `%s') failed (%s)"
msgstr "Das Leeren der Pipe »%s« ist gescheitert (%s)"
-#: extension/inplace.c:229
+#: extension/inplace.c:253
#, fuzzy, c-format
msgid "inplace_end: rename(`%s', `%s') failed (%s)"
msgstr "Das Schließen des Dateideskriptors %d (»%s«) ist gescheitert (%s)"
@@ -2354,185 +2373,185 @@ msgstr "sqrt: das Argument %g ist negativ"
msgid "chr: called with inappropriate argument(s)"
msgstr "sqrt: das Argument %g ist negativ"
-#: extension/readdir.c:203
+#: extension/readdir.c:281
#, c-format
msgid "dir_take_control_of: opendir/fdopendir failed: %s"
msgstr ""
-#: extension/readfile.c:84
+#: extension/readfile.c:113
#, fuzzy
msgid "readfile: called with too many arguments"
msgstr "sqrt: das Argument %g ist negativ"
-#: extension/readfile.c:118
+#: extension/readfile.c:137
#, fuzzy
msgid "readfile: called with no arguments"
msgstr "sqrt: das Argument %g ist negativ"
-#: extension/rwarray.c:120
+#: extension/rwarray.c:124
#, fuzzy
msgid "writea: called with too many arguments"
msgstr "sqrt: das Argument %g ist negativ"
-#: extension/rwarray.c:127
+#: extension/rwarray.c:131
#, fuzzy, c-format
msgid "do_writea: argument 0 is not a string\n"
msgstr "exp: das Argument %g liegt außerhalb des gültigen Bereichs"
-#: extension/rwarray.c:133
+#: extension/rwarray.c:137
#, fuzzy, c-format
msgid "do_writea: argument 1 is not an array\n"
msgstr "split: das vierte Argument ist kein Feld"
-#: extension/rwarray.c:180
+#: extension/rwarray.c:184
#, c-format
msgid "write_array: could not flatten array\n"
msgstr ""
-#: extension/rwarray.c:194
+#: extension/rwarray.c:198
#, c-format
msgid "write_array: could not release flattened array\n"
msgstr ""
-#: extension/rwarray.c:276
+#: extension/rwarray.c:280
#, fuzzy
msgid "reada: called with too many arguments"
msgstr "sqrt: das Argument %g ist negativ"
-#: extension/rwarray.c:283
+#: extension/rwarray.c:287
#, fuzzy, c-format
msgid "do_reada: argument 0 is not a string\n"
msgstr "exp: das Argument %g liegt außerhalb des gültigen Bereichs"
-#: extension/rwarray.c:289
+#: extension/rwarray.c:293
#, fuzzy, c-format
msgid "do_reada: argument 1 is not an array\n"
msgstr "match: das dritte Argument ist kein Array"
-#: extension/rwarray.c:333
+#: extension/rwarray.c:337
#, c-format
msgid "do_reada: clear_array failed\n"
msgstr ""
-#: extension/rwarray.c:370
+#: extension/rwarray.c:374
#, c-format
msgid "read_array: set_array_element failed\n"
msgstr ""
-#: extension/time.c:81
+#: extension/time.c:113
#, fuzzy
msgid "gettimeofday: ignoring arguments"
msgstr "mktime: Das Argument ist kein String"
-#: extension/time.c:112
+#: extension/time.c:144
msgid "gettimeofday: not supported on this platform"
msgstr ""
-#: extension/time.c:133
+#: extension/time.c:165
#, fuzzy
msgid "sleep: called with too many arguments"
msgstr "sqrt: das Argument %g ist negativ"
-#: extension/time.c:136
+#: extension/time.c:168
#, fuzzy
msgid "sleep: missing required numeric argument"
msgstr "exp: das Argument ist keine Zahl"
-#: extension/time.c:142
+#: extension/time.c:174
#, fuzzy
msgid "sleep: argument is negative"
msgstr "exp: das Argument %g liegt außerhalb des gültigen Bereichs"
-#: extension/time.c:176
+#: extension/time.c:208
msgid "sleep: not supported on this platform"
msgstr ""
-#: field.c:339
+#: field.c:345
msgid "NF set to negative value"
msgstr "NF wird ein negativer Wert zugewiesen"
-#: field.c:964 field.c:971 field.c:975
+#: field.c:971 field.c:978 field.c:982
msgid "split: fourth argument is a gawk extension"
msgstr "split: das vierte Argument ist eine gawk-Erweiterung"
-#: field.c:968
+#: field.c:975
msgid "split: fourth argument is not an array"
msgstr "split: das vierte Argument ist kein Feld"
-#: field.c:982
+#: field.c:989
msgid "split: second argument is not an array"
msgstr "split: das zweite Argument ist kein Feld"
-#: field.c:986
+#: field.c:993
msgid "split: cannot use the same array for second and fourth args"
msgstr ""
"split: als zweites und viertes Argument kann nicht das gleiche Feld "
"verwendet werden"
-#: field.c:991
+#: field.c:998
msgid "split: cannot use a subarray of second arg for fourth arg"
msgstr ""
"split: Ein untergeordnetes Feld des zweiten Arguments kann nicht als viertes "
"Argument verwendet werden"
-#: field.c:994
+#: field.c:1001
msgid "split: cannot use a subarray of fourth arg for second arg"
msgstr ""
"split: Ein untergeordnetes Feld des vierten Arguments kann nicht als zweites "
"Argument verwendet werden"
-#: field.c:1023
+#: field.c:1032
msgid "split: null string for third arg is a gawk extension"
msgstr "split: Null-String als drittes Argument ist eine gawk-Erweiterung"
-#: field.c:1063
+#: field.c:1072
msgid "patsplit: fourth argument is not an array"
msgstr "patsplit: Das vierte Argument ist kein Feld"
-#: field.c:1068
+#: field.c:1077
msgid "patsplit: second argument is not an array"
msgstr "patsplit: Das zweite Argument ist kein Feld"
-#: field.c:1074
+#: field.c:1083
msgid "patsplit: third argument must be non-null"
msgstr "patsplit: Das dritte Argument darf nicht Null sein"
-#: field.c:1078
+#: field.c:1087
msgid "patsplit: cannot use the same array for second and fourth args"
msgstr ""
"patsplit: als zweites und viertes Argument kann nicht das gleiche Feld "
"verwendet werden"
-#: field.c:1083
+#: field.c:1092
msgid "patsplit: cannot use a subarray of second arg for fourth arg"
msgstr ""
"patsplit: Ein untergeordnetes Feld des zweiten Arguments kann nicht als "
"viertes Argument verwendet werden"
-#: field.c:1086
+#: field.c:1095
msgid "patsplit: cannot use a subarray of fourth arg for second arg"
msgstr ""
"patsplit: Ein untergeordnetes Feld des vierten Arguments kann nicht als "
"zweites Argument verwendet werden"
-#: field.c:1124
+#: field.c:1133
msgid "`FIELDWIDTHS' is a gawk extension"
msgstr "»FIELDWIDTHS« ist eine gawk-Erweiterung"
-#: field.c:1188
+#: field.c:1197
#, c-format
msgid "invalid FIELDWIDTHS value, near `%s'"
msgstr "ungültiger FIELDWIDTHS-Wert nah bei »%s«"
-#: field.c:1261
+#: field.c:1270
msgid "null string for `FS' is a gawk extension"
msgstr "Null-String für »FS« ist eine gawk-Erweiterung"
-#: field.c:1265
+#: field.c:1274
msgid "old awk does not support regexps as value of `FS'"
msgstr "Das alte awk unterstützt keine regulären Ausdrücke als Wert von »FS«"
-#: field.c:1384
+#: field.c:1393
msgid "`FPAT' is a gawk extension"
msgstr "»FPAT« ist eine gawk-Erweiterung"
@@ -2548,610 +2567,610 @@ msgstr ""
msgid "node_to_awk_value: received null val"
msgstr ""
-#: gawkapi.c:808
+#: gawkapi.c:807
#, fuzzy
msgid "remove_element: received null array"
msgstr "length: Argument ist ein Feld"
-#: gawkapi.c:811
+#: gawkapi.c:810
msgid "remove_element: received null subscript"
msgstr ""
-#: gawkapi.c:943
+#: gawkapi.c:947
#, c-format
msgid "api_flatten_array: could not convert index %d\n"
msgstr ""
-#: gawkapi.c:948
+#: gawkapi.c:952
#, c-format
msgid "api_flatten_array: could not convert value %d\n"
msgstr ""
-#: getopt.c:603 getopt.c:632
+#: getopt.c:604 getopt.c:633
#, fuzzy, c-format
msgid "%s: option '%s' is ambiguous; possibilities:"
msgstr "%s: Option »%s« ist mehrdeutig\n"
-#: getopt.c:678 getopt.c:682
+#: getopt.c:679 getopt.c:683
#, c-format
msgid "%s: option '--%s' doesn't allow an argument\n"
msgstr "%s: Die Option »--%s« hat keine Argumente\n"
-#: getopt.c:691 getopt.c:696
+#: getopt.c:692 getopt.c:697
#, c-format
msgid "%s: option '%c%s' doesn't allow an argument\n"
msgstr "%s: Die Option »%c%s« hat keine Argument\n"
-#: getopt.c:739 getopt.c:758
+#: getopt.c:740 getopt.c:759
#, c-format
msgid "%s: option '--%s' requires an argument\n"
msgstr "%s: Die Option »%s« erfordert ein Argument\n"
-#: getopt.c:796 getopt.c:799
+#: getopt.c:797 getopt.c:800
#, c-format
msgid "%s: unrecognized option '--%s'\n"
msgstr "%s: Die Option »--%s« ist unbekannt\n"
-#: getopt.c:807 getopt.c:810
+#: getopt.c:808 getopt.c:811
#, c-format
msgid "%s: unrecognized option '%c%s'\n"
msgstr "%s: Die Option »%c%s« ist unbekannt\n"
-#: getopt.c:859 getopt.c:862
+#: getopt.c:860 getopt.c:863
#, c-format
msgid "%s: invalid option -- '%c'\n"
msgstr "%s: Ungültige Option -- »%c«\n"
-#: getopt.c:915 getopt.c:932 getopt.c:1142 getopt.c:1160
+#: getopt.c:916 getopt.c:933 getopt.c:1143 getopt.c:1161
#, c-format
msgid "%s: option requires an argument -- '%c'\n"
msgstr "%s Die Option »%c« erfordert ein Argument\n"
-#: getopt.c:988 getopt.c:1004
+#: getopt.c:989 getopt.c:1005
#, c-format
msgid "%s: option '-W %s' is ambiguous\n"
msgstr "%s: Die Option »-W %s« ist mehrdeutig\n"
-#: getopt.c:1028 getopt.c:1046
+#: getopt.c:1029 getopt.c:1047
#, c-format
msgid "%s: option '-W %s' doesn't allow an argument\n"
msgstr "%s: Die Option »-W %s« hat keine Argumente\n"
-#: getopt.c:1067 getopt.c:1085
+#: getopt.c:1068 getopt.c:1086
#, c-format
msgid "%s: option '-W %s' requires an argument\n"
msgstr "%s: Die Option »-W %s« erfordert ein Argument\n"
-#: io.c:347
+#: io.c:392
#, c-format
msgid "command line argument `%s' is a directory: skipped"
msgstr ""
"das Kommandozeilen-Argument »%s« ist ein Verzeichnis: wird übersprungen"
-#: io.c:350 io.c:463
+#: io.c:395 io.c:513
#, c-format
msgid "cannot open file `%s' for reading (%s)"
msgstr "Die Datei »%s« kann nicht zum Lesen geöffnet werden (%s)"
-#: io.c:590
+#: io.c:640
#, c-format
msgid "close of fd %d (`%s') failed (%s)"
msgstr "Das Schließen des Dateideskriptors %d (»%s«) ist gescheitert (%s)"
-#: io.c:666
+#: io.c:716
msgid "redirection not allowed in sandbox mode"
msgstr "Umlenkungen sind im Sandbox-Modus nicht erlaubt"
-#: io.c:700
+#: io.c:750
#, c-format
msgid "expression in `%s' redirection only has numeric value"
msgstr ""
"Der Ausdruck in einer Umlenkung mittels »%s« hat nur einen numerischen Wert"
-#: io.c:706
+#: io.c:756
#, c-format
msgid "expression for `%s' redirection has null string value"
msgstr "Der Ausdruck für eine Umlenkung mittels »%s« ist ein leerer String"
-#: io.c:711
+#: io.c:761
#, c-format
msgid "filename `%s' for `%s' redirection may be result of logical expression"
msgstr ""
"Der Dateiname »%s« für eine Umlenkung mittels »%s« kann das Ergebnis eines "
"logischen Ausdrucks sein"
-#: io.c:754
+#: io.c:809
#, c-format
msgid "unnecessary mixing of `>' and `>>' for file `%.*s'"
msgstr "Unnötige Kombination von »>« und »>>« für Datei »%.*s«"
-#: io.c:808
+#: io.c:863
#, c-format
msgid "can't open pipe `%s' for output (%s)"
msgstr "Die Pipe »%s« kann nicht für die Ausgabe geöffnet werden (%s)"
-#: io.c:818
+#: io.c:873
#, c-format
msgid "can't open pipe `%s' for input (%s)"
msgstr "Die Pipe »%s« kann nicht für die Eingabe geöffnet werden (%s)"
-#: io.c:849
+#: io.c:904
#, c-format
msgid "can't open two way pipe `%s' for input/output (%s)"
msgstr ""
"Die bidirektionale Pipe »%s« kann nicht für die Ein-/Ausgabe geöffnet werden "
"(%s)"
-#: io.c:928
+#: io.c:986
#, c-format
msgid "can't redirect from `%s' (%s)"
msgstr "Von »%s« kann nicht umgelenkt werden (%s)"
-#: io.c:931
+#: io.c:989
#, c-format
msgid "can't redirect to `%s' (%s)"
msgstr "Zu »%s« kann nicht umgelenkt werden (%s)"
-#: io.c:982
+#: io.c:1040
msgid ""
"reached system limit for open files: starting to multiplex file descriptors"
msgstr ""
"Die Systemgrenze offener Dateien ist erreicht, daher werden nun "
"Dateideskriptoren mehrfach verwendet"
-#: io.c:998
+#: io.c:1056
#, c-format
msgid "close of `%s' failed (%s)."
msgstr "Das Schließen von »%s« ist gescheitert (%s)."
-#: io.c:1006
+#: io.c:1064
msgid "too many pipes or input files open"
msgstr "Zu viele Pipes oder Eingabedateien offen"
-#: io.c:1028
+#: io.c:1086
msgid "close: second argument must be `to' or `from'"
msgstr "close: Das zweite Argument muss »to« oder »from« sein"
-#: io.c:1045
+#: io.c:1103
#, c-format
msgid "close: `%.*s' is not an open file, pipe or co-process"
msgstr "close: »%.*s« ist weder offene Datei, noch Pipe oder Ko-Prozess"
-#: io.c:1050
+#: io.c:1108
msgid "close of redirection that was never opened"
msgstr "»close« für eine Umlenkung, die nie geöffnet wurde"
-#: io.c:1147
+#: io.c:1205
#, c-format
msgid "close: redirection `%s' not opened with `|&', second argument ignored"
msgstr ""
"close: Umlenkung »%s« wurde nicht mit »[&« geöffnet, das zweite Argument "
"wird ignoriert"
-#: io.c:1164
+#: io.c:1222
#, c-format
msgid "failure status (%d) on pipe close of `%s' (%s)"
msgstr "Fehlerstatus (%d) beim Schließen der Pipe »%s« (%s)"
-#: io.c:1167
+#: io.c:1225
#, c-format
msgid "failure status (%d) on file close of `%s' (%s)"
msgstr "Fehlerstatus (%d) beim Schließen der Datei »%s« (%s)"
-#: io.c:1187
+#: io.c:1245
#, c-format
msgid "no explicit close of socket `%s' provided"
msgstr "Das explizite Schließen des Sockets »%s« fehlt"
-#: io.c:1190
+#: io.c:1248
#, c-format
msgid "no explicit close of co-process `%s' provided"
msgstr "Das explizite Schließen des Ko-Prozesses »%s« fehlt"
-#: io.c:1193
+#: io.c:1251
#, c-format
msgid "no explicit close of pipe `%s' provided"
msgstr "Das explizite Schließen der Pipe »%s« fehlt"
-#: io.c:1196
+#: io.c:1254
#, c-format
msgid "no explicit close of file `%s' provided"
msgstr "Das explizite Schließen der Datei »%s« fehlt"
-#: io.c:1224 io.c:1279 main.c:842 main.c:879
+#: io.c:1284 io.c:1342 main.c:864 main.c:906
#, c-format
msgid "error writing standard output (%s)"
msgstr "Fehler beim Schreiben auf die Standardausgabe (%s)"
-#: io.c:1228 io.c:1284
+#: io.c:1289 io.c:1348 main.c:866
#, c-format
msgid "error writing standard error (%s)"
msgstr "Fehler beim Schreiben auf die Standardfehlerausgabe (%s)"
-#: io.c:1236
+#: io.c:1297
#, c-format
msgid "pipe flush of `%s' failed (%s)."
msgstr "Das Leeren der Pipe »%s« ist gescheitert (%s)"
-#: io.c:1239
+#: io.c:1300
#, c-format
msgid "co-process flush of pipe to `%s' failed (%s)."
msgstr "Ko-Prozess: Das Leeren der Pipe zu »%s« ist gescheitert (%s)"
-#: io.c:1242
+#: io.c:1303
#, c-format
msgid "file flush of `%s' failed (%s)."
msgstr "Das Leeren der Datei »%s« ist gescheitert (%s)"
-#: io.c:1356
+#: io.c:1420
#, c-format
msgid "local port %s invalid in `/inet'"
msgstr "Der lokale Port »%s« ist ungültig in »/inet«"
-#: io.c:1374
+#: io.c:1438
#, c-format
msgid "remote host and port information (%s, %s) invalid"
msgstr "Die Angaben zu entferntem Host und Port (%s, %s) sind ungültig"
-#: io.c:1526
+#: io.c:1590
#, c-format
msgid "no (known) protocol supplied in special filename `%s'"
msgstr "Es wurde kein (bekanntes) Protokoll im Dateinamen »%s« angegeben"
-#: io.c:1540
+#: io.c:1604
#, c-format
msgid "special file name `%s' is incomplete"
msgstr "Der Dateiname »%s« ist unvollständig"
-#: io.c:1557
+#: io.c:1621
msgid "must supply a remote hostname to `/inet'"
msgstr "Sie müssen in /inet einen Rechnernamen angeben"
-#: io.c:1575
+#: io.c:1639
msgid "must supply a remote port to `/inet'"
msgstr "Sie müssen in »/inet« einen Port angeben"
-#: io.c:1621
+#: io.c:1685
msgid "TCP/IP communications are not supported"
msgstr "TCP/IP-Verbindungen werden nicht unterstützt"
-#: io.c:1796
+#: io.c:1867
#, c-format
msgid "could not open `%s', mode `%s'"
msgstr "»%s« konnte nicht geöffnet werden, Modus »%s«"
-#: io.c:1846
+#: io.c:1917
#, c-format
msgid "close of master pty failed (%s)"
msgstr ""
"Das Schließen der übergeordneten Terminal-Gerätedatei ist gescheitert (%s)"
-#: io.c:1848 io.c:2024 io.c:2194
+#: io.c:1919 io.c:2105 io.c:2305
#, c-format
msgid "close of stdout in child failed (%s)"
msgstr "Das Schließen der Standardausgabe im Kindprozess ist gescheitert (%s)"
-#: io.c:1851
+#: io.c:1922
#, c-format
msgid "moving slave pty to stdout in child failed (dup: %s)"
msgstr ""
"Das Verschieben der untergeordneten Terminal-Gerätedatei zur Standardausgabe "
"im Kindprozess ist gescheitert (dup: %s)"
-#: io.c:1853 io.c:2029
+#: io.c:1924 io.c:2110
#, c-format
msgid "close of stdin in child failed (%s)"
msgstr "Schließen von stdin im Kindprozess gescheitert (%s)"
-#: io.c:1856
+#: io.c:1927
#, c-format
msgid "moving slave pty to stdin in child failed (dup: %s)"
msgstr ""
"Das Verschieben der untergeordneten Terminal-Gerätedatei zur Standardeingabe "
"im Kindprozess ist gescheitert (dup: %s)"
-#: io.c:1858 io.c:1879
+#: io.c:1929 io.c:1951
#, c-format
msgid "close of slave pty failed (%s)"
msgstr ""
"Das Schließen der untergeordneten Terminal-Gerätedatei ist gescheitert (%s)"
-#: io.c:1965 io.c:2027 io.c:2171 io.c:2197
+#: io.c:2040 io.c:2108 io.c:2276 io.c:2308
#, c-format
msgid "moving pipe to stdout in child failed (dup: %s)"
msgstr ""
"Das Verschieben der Pipe zur Standardausgabe im Kindprozess ist gescheitert "
"(dup: %s)"
-#: io.c:1972 io.c:2032
+#: io.c:2047 io.c:2113
#, c-format
msgid "moving pipe to stdin in child failed (dup: %s)"
msgstr ""
"Das Verschieben der Pipe zur Standardeingabe im Kindprozess ist gescheitert "
"(dup: %s)"
-#: io.c:1992 io.c:2187
+#: io.c:2073 io.c:2298
msgid "restoring stdout in parent process failed\n"
msgstr ""
"Das Wiederherstellen der Standardausgabe im Elternprozess ist gescheitert\n"
-#: io.c:2000
+#: io.c:2081
msgid "restoring stdin in parent process failed\n"
msgstr ""
"Das Wiederherstellen der Standardeingabe im Elternprozess ist gescheitert\n"
-#: io.c:2035 io.c:2199 io.c:2213
+#: io.c:2116 io.c:2310 io.c:2324
#, c-format
msgid "close of pipe failed (%s)"
msgstr "Das Schließen der Pipe ist gescheitert (%s)"
-#: io.c:2089
+#: io.c:2174
msgid "`|&' not supported"
msgstr "»|&« wird nicht unterstützt"
-#: io.c:2156
+#: io.c:2261
#, c-format
msgid "cannot open pipe `%s' (%s)"
msgstr "Pipe »%s« kann nicht geöffnet werden (%s)"
-#: io.c:2207
+#: io.c:2318
#, c-format
msgid "cannot create child process for `%s' (fork: %s)"
msgstr "Kindprozess für »%s« kann nicht erzeugt werden (fork: %s)"
-#: io.c:2667
+#: io.c:2790
msgid "register_input_parser: received NULL pointer"
msgstr ""
-#: io.c:2695
+#: io.c:2818
#, c-format
msgid "input parser `%s' conflicts with previously installed input parser `%s'"
msgstr ""
-#: io.c:2702
+#: io.c:2825
#, c-format
msgid "input parser `%s' failed to open `%s'"
msgstr ""
-#: io.c:2722
+#: io.c:2845
msgid "register_output_wrapper: received NULL pointer"
msgstr ""
-#: io.c:2750
+#: io.c:2873
#, c-format
msgid ""
"output wrapper `%s' conflicts with previously installed output wrapper `%s'"
msgstr ""
-#: io.c:2757
+#: io.c:2880
#, c-format
msgid "output wrapper `%s' failed to open `%s'"
msgstr ""
-#: io.c:2778
+#: io.c:2901
msgid "register_output_processor: received NULL pointer"
msgstr ""
-#: io.c:2807
+#: io.c:2930
#, c-format
msgid ""
"two-way processor `%s' conflicts with previously installed two-way processor "
"`%s'"
msgstr ""
-#: io.c:2816
+#: io.c:2939
#, c-format
msgid "two way processor `%s' failed to open `%s'"
msgstr ""
-#: io.c:2923
+#: io.c:3064
#, c-format
msgid "data file `%s' is empty"
msgstr "Die Datei »%s« ist leer"
-#: io.c:2965 io.c:2973
+#: io.c:3106 io.c:3114
msgid "could not allocate more input memory"
msgstr "Es konnte kein weiterer Speicher für die Eingabe beschafft werden"
-#: io.c:3539
+#: io.c:3682
msgid "multicharacter value of `RS' is a gawk extension"
msgstr "Multicharacter-Wert von »RS« ist eine gawk-Erweiterung"
-#: io.c:3628
+#: io.c:3771
msgid "IPv6 communication is not supported"
msgstr "IPv6-Verbindungen werden nicht unterstützt"
-#: main.c:388
+#: main.c:405
msgid "empty argument to `-e/--source' ignored"
msgstr "Das leere Argument für »--source« wird ignoriert"
-#: main.c:478
+#: main.c:495
#, c-format
msgid "%s: option `-W %s' unrecognized, ignored\n"
msgstr "%s: Die Option »-W %s« ist unbekannt und wird ignoriert\n"
-#: main.c:524
+#: main.c:541
#, c-format
msgid "%s: option requires an argument -- %c\n"
msgstr "%s: Die Option %c erfordert ein Argument\n"
-#: main.c:545
+#: main.c:562
msgid "environment variable `POSIXLY_CORRECT' set: turning on `--posix'"
msgstr ""
"Die Umgebungsvariable »POSIXLY_CORRECT« ist gesetzt: »--posix« wird "
"eingeschaltet"
-#: main.c:551
+#: main.c:568
msgid "`--posix' overrides `--traditional'"
msgstr "»--posix« hat Vorrang vor »--traditional«"
-#: main.c:562
+#: main.c:579
msgid "`--posix'/`--traditional' overrides `--non-decimal-data'"
msgstr "»--posix« /»--traditional« hat Vorrang vor »--non-decimal-data«"
-#: main.c:566
+#: main.c:583
#, c-format
msgid "running %s setuid root may be a security problem"
msgstr "%s als setuid root auszuführen kann zu Sicherheitsproblemen führen"
-#: main.c:571
+#: main.c:588
#, fuzzy
msgid "`--posix' overrides `--characters-as-bytes'"
msgstr "»--posix« hat Vorrang vor »--binary«"
-#: main.c:630
+#: main.c:647
#, c-format
msgid "can't set binary mode on stdin (%s)"
msgstr ""
"Das Setzen des Binärermodus für die Standardeingabe ist nicht möglich (%s)"
-#: main.c:633
+#: main.c:650
#, c-format
msgid "can't set binary mode on stdout (%s)"
msgstr ""
"Das Setzen des Binärermodus für die Standardausgabe ist nicht möglich (%s)"
-#: main.c:635
+#: main.c:652
#, c-format
msgid "can't set binary mode on stderr (%s)"
msgstr ""
"Das Setzen des Binärermodus für die Standardfehlerausgabe ist nicht möglich "
"(%s)"
-#: main.c:693
+#: main.c:710
msgid "no program text at all!"
msgstr "Es wurde überhaupt kein Programmtext angegeben!"
-#: main.c:779
+#: main.c:799
#, c-format
msgid "Usage: %s [POSIX or GNU style options] -f progfile [--] file ...\n"
msgstr "Aufruf: %s [POSIX- oder GNU-Optionen] -f PROGRAMM [--] Datei ...\n"
-#: main.c:781
+#: main.c:801
#, c-format
msgid "Usage: %s [POSIX or GNU style options] [--] %cprogram%c file ...\n"
msgstr "Aufruf: %s [POSIX- oder GNU-Optionen] -- %cPROGRAMM%c Datei ...\n"
-#: main.c:786
+#: main.c:806
msgid "POSIX options:\t\tGNU long options: (standard)\n"
msgstr "POSIX-Optionen\t\tlange GNU-Optionen: (standard)\n"
-#: main.c:787
+#: main.c:807
msgid "\t-f progfile\t\t--file=progfile\n"
msgstr "\t-f PROGRAMM\t\t--file=PROGRAMM\n"
-#: main.c:788
+#: main.c:808
msgid "\t-F fs\t\t\t--field-separator=fs\n"
msgstr "\t-F Feldtrenner\t\t\t--field-separator=Feldtrenner\n"
-#: main.c:789
+#: main.c:809
msgid "\t-v var=val\t\t--assign=var=val\n"
msgstr "\t-v var=Wert\t\t--assign=var=Wert\n"
-#: main.c:790
+#: main.c:810
msgid "Short options:\t\tGNU long options: (extensions)\n"
msgstr "POSIX-Optionen\t\tGNU-Optionen (lang): (Erweiterungen)\n"
-#: main.c:791
+#: main.c:811
msgid "\t-b\t\t\t--characters-as-bytes\n"
msgstr "\t-b\t\t\t--characters-as-bytes\n"
-#: main.c:792
+#: main.c:812
msgid "\t-c\t\t\t--traditional\n"
msgstr "\t-c\t\t\t--traditional\n"
-#: main.c:793
+#: main.c:813
msgid "\t-C\t\t\t--copyright\n"
msgstr "\t-C\t\t\t--copyright\n"
-#: main.c:794
+#: main.c:814
msgid "\t-d[file]\t\t--dump-variables[=file]\n"
msgstr "\t-d [Datei]\t\t--dump-variables[=Datei]\n"
-#: main.c:795
+#: main.c:815
#, fuzzy
msgid "\t-D[file]\t\t--debug[=file]\n"
msgstr "\t-p [Datei]\t\t--profile[=Datei]\n"
-#: main.c:796
+#: main.c:816
msgid "\t-e 'program-text'\t--source='program-text'\n"
msgstr "\t-e 'Programmtext'\t--source=Programmtext\n"
-#: main.c:797
+#: main.c:817
msgid "\t-E file\t\t\t--exec=file\n"
msgstr "\t-E Datei\t\t\t--exec=Datei\n"
-#: main.c:798
+#: main.c:818
msgid "\t-g\t\t\t--gen-pot\n"
msgstr "\t-g\t\t\t--gen-pot\n"
-#: main.c:799
+#: main.c:819
msgid "\t-h\t\t\t--help\n"
msgstr "\t-h\t\t\t--help\n"
-#: main.c:800
+#: main.c:820
msgid "\t-i includefile\t\t--include=includefile\n"
msgstr ""
-#: main.c:801
+#: main.c:821
msgid "\t-l library\t\t--load=library\n"
msgstr ""
-#: main.c:802
+#: main.c:822
msgid "\t-L [fatal]\t\t--lint[=fatal]\n"
msgstr "\t-L [fatal]\t\t--lint[=fatal]\n"
-#: main.c:803
+#: main.c:823
msgid "\t-n\t\t\t--non-decimal-data\n"
msgstr "\t-n\t\t\t--non-decimal-data\n"
-#: main.c:804
+#: main.c:824
#, fuzzy
msgid "\t-M\t\t\t--bignum\n"
msgstr "\t-g\t\t\t--gen-pot\n"
-#: main.c:805
+#: main.c:825
msgid "\t-N\t\t\t--use-lc-numeric\n"
msgstr "\t-N\t\t\t--use-lc-numeric\n"
-#: main.c:806
+#: main.c:826
#, fuzzy
msgid "\t-o[file]\t\t--pretty-print[=file]\n"
msgstr "\t-p [Datei]\t\t--profile[=Datei]\n"
-#: main.c:807
+#: main.c:827
msgid "\t-O\t\t\t--optimize\n"
msgstr "\t-O\t\t\t--optimize\n"
-#: main.c:808
+#: main.c:828
msgid "\t-p[file]\t\t--profile[=file]\n"
msgstr "\t-p [Datei]\t\t--profile[=Datei]\n"
-#: main.c:809
+#: main.c:829
msgid "\t-P\t\t\t--posix\n"
msgstr "\t-P\t\t\t--posix\n"
-#: main.c:810
+#: main.c:830
msgid "\t-r\t\t\t--re-interval\n"
msgstr "\t-r\t\t\t--re-interval\n"
-#: main.c:811
+#: main.c:831
msgid "\t-S\t\t\t--sandbox\n"
msgstr "\t-S\t\t\t--sandbox\n"
-#: main.c:812
+#: main.c:832
msgid "\t-t\t\t\t--lint-old\n"
msgstr "\t-t\t\t\t--lint-old\n"
-#: main.c:813
+#: main.c:833
msgid "\t-V\t\t\t--version\n"
msgstr "\t-V\t\t\t--version\n"
-#: main.c:815
+#: main.c:835
msgid "\t-W nostalgia\t\t--nostalgia\n"
msgstr "\t-W nostalgia\t\t--nostalgia\n"
-#: main.c:818
+#: main.c:838
msgid "\t-Y\t\t--parsedebug\n"
msgstr "\t-Y\t\t--parsedebug\n"
@@ -3160,7 +3179,7 @@ msgstr "\t-Y\t\t--parsedebug\n"
#. for this application. Please add _another line_ with the
#. address for translation bugs.
#. no-wrap
-#: main.c:827
+#: main.c:847
msgid ""
"\n"
"To report bugs, see node `Bugs' in `gawk.info', which is\n"
@@ -3176,7 +3195,7 @@ msgstr ""
"an translation-team-de@lists.sourceforge.net\n"
"\n"
-#: main.c:831
+#: main.c:851
msgid ""
"gawk is a pattern scanning and processing language.\n"
"By default it reads standard input and writes standard output.\n"
@@ -3187,7 +3206,7 @@ msgstr ""
"auf der Standardausgabe aus.\n"
"\n"
-#: main.c:835
+#: main.c:855
msgid ""
"Examples:\n"
"\tgawk '{ sum += $1 }; END { print sum }' file\n"
@@ -3197,7 +3216,7 @@ msgstr ""
"\tgawk '{ sum += $1 }; END { print sum }' file\n"
"\tgawk -F: '{ print $1 }' /etc/passwd\n"
-#: main.c:855
+#: main.c:880
#, c-format
msgid ""
"Copyright (C) 1989, 1991-%d Free Software Foundation.\n"
@@ -3217,7 +3236,7 @@ msgstr ""
"spätere Version.\n"
"\n"
-#: main.c:863
+#: main.c:888
msgid ""
"This program is distributed in the hope that it will be useful,\n"
"but WITHOUT ANY WARRANTY; without even the implied warranty of\n"
@@ -3230,7 +3249,7 @@ msgstr ""
"leistung einer HANDELBARKEIT oder der EIGNUNG FÃœR EINEN BESTIMMTEN ZWECK.\n"
"Sehen Sie bitte die GNU General Public License für weitere Details.\n"
-#: main.c:869
+#: main.c:894
msgid ""
"You should have received a copy of the GNU General Public License\n"
"along with this program. If not, see http://www.gnu.org/licenses/.\n"
@@ -3239,16 +3258,16 @@ msgstr ""
"diesem Programm erhalten haben. Wenn nicht, lesen Sie bitte\n"
"http://www.gnu.org/licenses/.\n"
-#: main.c:904
+#: main.c:931
msgid "-Ft does not set FS to tab in POSIX awk"
msgstr "-Ft setzt FS im POSIX-awk nicht auf Tab"
-#: main.c:1181
+#: main.c:1208
#, c-format
msgid "unknown value for field spec: %d\n"
msgstr "unbekannter Wert für eine Feldangabe: %d\n"
-#: main.c:1279
+#: main.c:1306
#, c-format
msgid ""
"%s: `%s' argument to `-v' not in `var=value' form\n"
@@ -3257,50 +3276,50 @@ msgstr ""
"%s: Argument »%s« von »-v« ist nicht in der Form »Variable=Wert«\n"
"\n"
-#: main.c:1305
+#: main.c:1332
#, c-format
msgid "`%s' is not a legal variable name"
msgstr "»%s« ist kein gültiger Variablenname"
-#: main.c:1308
+#: main.c:1335
#, c-format
msgid "`%s' is not a variable name, looking for file `%s=%s'"
msgstr "»%s« ist kein Variablenname, es wird nach der Datei »%s=%s« gesucht"
-#: main.c:1312
+#: main.c:1339
#, c-format
msgid "cannot use gawk builtin `%s' as variable name"
msgstr ""
"die eingebaute Funktion »%s« kann nicht als Variablenname verwendet werden"
# c-format
-#: main.c:1317
+#: main.c:1344
#, c-format
msgid "cannot use function `%s' as variable name"
msgstr "Funktion »%s« kann nicht als Name einer Variablen verwendet werden"
-#: main.c:1370
+#: main.c:1397
msgid "floating point exception"
msgstr "Fließkomma-Ausnahme"
-#: main.c:1377
+#: main.c:1404
msgid "fatal error: internal error"
msgstr "Fataler Fehler: interner Fehler"
-#: main.c:1392
+#: main.c:1419
msgid "fatal error: internal error: segfault"
msgstr "Fataler Fehler: interner Fehler: Speicherbegrenzungsfehler"
-#: main.c:1404
+#: main.c:1431
msgid "fatal error: internal error: stack overflow"
msgstr "Fataler Fehler: interner Fehler: Stapelüberlauf"
-#: main.c:1463
+#: main.c:1490
#, c-format
msgid "no pre-opened fd %d"
msgstr "Kein bereits geöffneter Dateideskriptor %d"
-#: main.c:1470
+#: main.c:1497
#, c-format
msgid "could not pre-open /dev/null for fd %d"
msgstr "/dev/null konnte nicht für Dateideskriptor %d geöffnet werden"
@@ -3359,7 +3378,7 @@ msgstr "or(%lf, %lf): Dezimalteil wird abgeschnitten"
msgid "%s: argument #%d negative value %Zd will give strange results"
msgstr "compl(%lf): Negativer Wert wird zu merkwürdigen Ergebnissen führen"
-#: msg.c:61
+#: msg.c:68
#, c-format
msgid "cmd. line:"
msgstr "Kommandozeile:"
@@ -3416,16 +3435,16 @@ msgid "%s %s `%s': could not set close-on-exec: (fcntl F_SETFD: %s)"
msgstr ""
"%s %s »%s«: close-on-exec konnte nicht gesetzt werden: (fcntl F_SETFD: %s)"
-#: profile.c:70
+#: profile.c:71
#, c-format
msgid "could not open `%s' for writing: %s"
msgstr "»%s« konnte nicht zum Schreiben geöffnet werden: %s"
-#: profile.c:72
+#: profile.c:73
msgid "sending profile to standard error"
msgstr "Das Profil wird auf der Standardfehlerausgabe ausgegeben"
-#: profile.c:188
+#: profile.c:193
#, c-format
msgid ""
"\t# %s block(s)\n"
@@ -3434,7 +3453,7 @@ msgstr ""
"\t# %s Blöcke\n"
"\n"
-#: profile.c:193
+#: profile.c:198
#, c-format
msgid ""
"\t# Rule(s)\n"
@@ -3443,29 +3462,29 @@ msgstr ""
"\t# Regeln(s)\n"
"\n"
-#: profile.c:267
+#: profile.c:272
#, c-format
msgid "internal error: %s with null vname"
msgstr "Interner Fehler: %s mit null vname"
-#: profile.c:530
+#: profile.c:537
#, fuzzy
msgid "internal error: builtin with null fname"
msgstr "Interner Fehler: %s mit null vname"
-#: profile.c:942
+#: profile.c:949
#, c-format
msgid ""
"\t# Loaded extensions (-l and/or @load)\n"
"\n"
msgstr ""
-#: profile.c:965
+#: profile.c:972
#, c-format
msgid "\t# gawk profile, created %s\n"
msgstr "\t# gawk-Profil, erzeugt %s\n"
-#: profile.c:1351
+#: profile.c:1475
#, c-format
msgid ""
"\n"
@@ -3474,18 +3493,12 @@ msgstr ""
"\n"
"\t# Funktionen in alphabetischer Reihenfolge\n"
-#: profile.c:1389
+#: profile.c:1513
#, c-format
msgid "redir2str: unknown redirection type %d"
msgstr "redir2str: unbekannter Umlenkungstyp %d"
-#: re.c:583
-#, c-format
-msgid "range of the form `[%c-%c]' is locale dependent"
-msgstr ""
-"Ein Bereich in der Form »[%c-%c]« ist abhängig von der gesetzten Locale"
-
-#: re.c:610
+#: re.c:607
#, c-format
msgid "regexp component `%.*s' should probably be `[%.*s]'"
msgstr ""
@@ -3555,10 +3568,14 @@ msgstr ") oder \\) werden nicht geöffnet"
msgid "No previous regular expression"
msgstr "Kein vorangehender regulärer Ausdruck"
-#: symbol.c:740
+#: symbol.c:741
msgid "can not pop main context"
msgstr ""
+#~ msgid "range of the form `[%c-%c]' is locale dependent"
+#~ msgstr ""
+#~ "Ein Bereich in der Form »[%c-%c]« ist abhängig von der gesetzten Locale"
+
#, fuzzy
#~ msgid "[s]printf called with no arguments"
#~ msgstr "sqrt: das Argument %g ist negativ"
diff --git a/po/es.gmo b/po/es.gmo
index 53ace354..0bfebbae 100644
--- a/po/es.gmo
+++ b/po/es.gmo
Binary files differ
diff --git a/po/es.po b/po/es.po
index 59b53afb..d16109a9 100644
--- a/po/es.po
+++ b/po/es.po
@@ -7,7 +7,7 @@ msgid ""
msgstr ""
"Project-Id-Version: gawk 4.0.0h\n"
"Report-Msgid-Bugs-To: arnold@skeeve.com\n"
-"POT-Creation-Date: 2013-05-09 16:05+0300\n"
+"POT-Creation-Date: 2014-04-08 19:23+0300\n"
"PO-Revision-Date: 2012-01-30 07:42-0600\n"
"Last-Translator: Cristian Othón Martínez Vera <cfuga@cfuga.mx>\n"
"Language-Team: Spanish <es@li.org>\n"
@@ -16,93 +16,93 @@ msgstr ""
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-#: array.c:254
+#: array.c:256
#, c-format
msgid "from %s"
msgstr "desde %s"
-#: array.c:354
+#: array.c:357
msgid "attempt to use a scalar value as array"
msgstr "se intentó usar un valor escalar como una matriz"
-#: array.c:356
+#: array.c:359
#, c-format
msgid "attempt to use scalar parameter `%s' as an array"
msgstr "se intentó usar el parámetro escalar `%s como una matriz'"
-#: array.c:359
+#: array.c:362
#, c-format
msgid "attempt to use scalar `%s' as an array"
msgstr "se intentó usar el escalar `%s' como una matriz"
-#: array.c:406 array.c:573 builtin.c:85 builtin.c:1591 builtin.c:1637
-#: builtin.c:1650 builtin.c:2078 builtin.c:2092 eval.c:1121 eval.c:1125
-#: eval.c:1524
+#: array.c:409 array.c:576 builtin.c:85 builtin.c:1615 builtin.c:1661
+#: builtin.c:1674 builtin.c:2102 builtin.c:2116 eval.c:1122 eval.c:1126
+#: eval.c:1531
#, c-format
msgid "attempt to use array `%s' in a scalar context"
msgstr "se intentó usar la matriz `%s' en un contexto escalar"
-#: array.c:580
+#: array.c:583
#, c-format
msgid "delete: index `%s' not in array `%s'"
msgstr "delete: el índice `%s' no está en la matriz `%s'"
-#: array.c:594
+#: array.c:597
#, c-format
msgid "attempt to use scalar `%s[\"%.*s\"]' as an array"
msgstr "se intentó usar el dato escalar `%s[\"%.*s\"]' como una matriz"
-#: array.c:773
+#: array.c:776
#, fuzzy
msgid "adump: first argument not an array"
msgstr "adump: el argumento no es una matriz"
-#: array.c:812
+#: array.c:815
msgid "asort: second argument not an array"
msgstr "asort: el segundo argumento no es una matriz"
-#: array.c:813
+#: array.c:816
msgid "asorti: second argument not an array"
msgstr "asorti: el segundo argumento no es una matriz"
-#: array.c:820
+#: array.c:823
msgid "asort: first argument not an array"
msgstr "asort: el primer argumento no es una matriz"
-#: array.c:821
+#: array.c:824
msgid "asorti: first argument not an array"
msgstr "asorti: el primer argumento no es una matriz"
-#: array.c:828
+#: array.c:831
msgid "asort: cannot use a subarray of first arg for second arg"
msgstr ""
"asort: no se puede usar una submatriz del primer argumento para el segundo "
"argumento"
-#: array.c:829
+#: array.c:832
msgid "asorti: cannot use a subarray of first arg for second arg"
msgstr ""
"asorti: no se puede usar una submatriz del primer argumento para el segundo "
"argumento"
-#: array.c:834
+#: array.c:837
msgid "asort: cannot use a subarray of second arg for first arg"
msgstr ""
"asort: no se puede usar una submatriz del segundo argumento para el primer "
"argumento"
-#: array.c:835
+#: array.c:838
msgid "asorti: cannot use a subarray of second arg for first arg"
msgstr ""
"asorti: no se puede usar una submatriz del segundo argumento para el primer "
"argumento"
-#: array.c:1309
+#: array.c:1314
#, c-format
msgid "`%s' is invalid as a function name"
msgstr "`%s' es inválido como un nombre de función"
-#: array.c:1313
+#: array.c:1318
#, c-format
msgid "sort comparison function `%s' is not defined"
msgstr "la función de comparación de ordenamiento `%s' no está definida"
@@ -147,11 +147,11 @@ msgstr "valores case duplicados en el cuerpo de un switch: %s"
msgid "duplicate `default' detected in switch body"
msgstr "se detectó un `default' duplicado en el cuerpo de un switch"
-#: awkgram.y:796 awkgram.y:3699
+#: awkgram.y:796 awkgram.y:3723
msgid "`break' is not allowed outside a loop or switch"
msgstr "no se permite `break' fuera de un bucle o switch"
-#: awkgram.y:805 awkgram.y:3691
+#: awkgram.y:805 awkgram.y:3715
msgid "`continue' is not allowed outside a loop"
msgstr "no se permite `continue' fuera de un bucle"
@@ -243,275 +243,275 @@ msgstr ""
msgid "invalid subscript expression"
msgstr "expresión de subíndice inválida"
-#: awkgram.y:2024 awkgram.y:2044 gawkapi.c:206 gawkapi.c:224 msg.c:119
+#: awkgram.y:2048 awkgram.y:2068 gawkapi.c:206 gawkapi.c:224 msg.c:126
msgid "warning: "
msgstr "aviso: "
-#: awkgram.y:2042 gawkapi.c:192 gawkapi.c:221 msg.c:151
+#: awkgram.y:2066 gawkapi.c:192 gawkapi.c:221 msg.c:158
msgid "fatal: "
msgstr "fatal: "
-#: awkgram.y:2092
+#: awkgram.y:2116
msgid "unexpected newline or end of string"
msgstr "nueva línea o fin de la cadena inesperados"
-#: awkgram.y:2359 awkgram.y:2435 awkgram.y:2658 debug.c:517 debug.c:533
-#: debug.c:2792 debug.c:5040
+#: awkgram.y:2383 awkgram.y:2459 awkgram.y:2682 debug.c:523 debug.c:539
+#: debug.c:2812 debug.c:5055
#, c-format
msgid "can't open source file `%s' for reading (%s)"
msgstr "no se puede abrir el fichero fuente `%s' para lectura (%s)"
-#: awkgram.y:2360 awkgram.y:2485
+#: awkgram.y:2384 awkgram.y:2509
#, fuzzy, c-format
msgid "can't open shared library `%s' for reading (%s)"
msgstr "no se puede abrir el fichero fuente `%s' para lectura (%s)"
-#: awkgram.y:2362 awkgram.y:2436 awkgram.y:2486 builtin.c:130 debug.c:5191
+#: awkgram.y:2386 awkgram.y:2460 awkgram.y:2510 builtin.c:135 debug.c:5206
msgid "reason unknown"
msgstr "razón desconocida"
-#: awkgram.y:2371 awkgram.y:2395
+#: awkgram.y:2395 awkgram.y:2419
#, c-format
msgid "can't include `%s' and use it as a program file"
msgstr ""
-#: awkgram.y:2384
+#: awkgram.y:2408
#, c-format
msgid "already included source file `%s'"
msgstr "ya se incluyó el fichero fuente `%s'"
-#: awkgram.y:2385
+#: awkgram.y:2409
#, fuzzy, c-format
msgid "already loaded shared library `%s'"
msgstr "ya se incluyó el fichero fuente `%s'"
-#: awkgram.y:2420
+#: awkgram.y:2444
msgid "@include is a gawk extension"
msgstr "@include es una extensión de gawk"
-#: awkgram.y:2426
+#: awkgram.y:2450
msgid "empty filename after @include"
msgstr "nombre de fichero vacío después de @include"
-#: awkgram.y:2470
+#: awkgram.y:2494
#, fuzzy
msgid "@load is a gawk extension"
msgstr "@include es una extensión de gawk"
-#: awkgram.y:2476
+#: awkgram.y:2500
#, fuzzy
msgid "empty filename after @load"
msgstr "nombre de fichero vacío después de @include"
-#: awkgram.y:2610
+#: awkgram.y:2634
msgid "empty program text on command line"
msgstr "texto de programa vacío en la linea de órdenes"
-#: awkgram.y:2725
+#: awkgram.y:2749
#, c-format
msgid "can't read sourcefile `%s' (%s)"
msgstr "no se puede leer el fichero fuente `%s' (%s)"
-#: awkgram.y:2736
+#: awkgram.y:2760
#, c-format
msgid "source file `%s' is empty"
msgstr "el fichero fuente `%s' está vacío"
-#: awkgram.y:2913
+#: awkgram.y:2937
msgid "source file does not end in newline"
msgstr "el fichero fuente no termina con línea nueva"
-#: awkgram.y:3018
+#: awkgram.y:3042
msgid "unterminated regexp ends with `\\' at end of file"
msgstr "expresión regular sin terminar termina con `\\` al final del fichero"
-#: awkgram.y:3042
+#: awkgram.y:3066
#, c-format
msgid "%s: %d: tawk regex modifier `/.../%c' doesn't work in gawk"
msgstr ""
"%s: %d: el modificador de expresión regular `/.../%c` de tawk no funciona en "
"gawk"
-#: awkgram.y:3046
+#: awkgram.y:3070
#, c-format
msgid "tawk regex modifier `/.../%c' doesn't work in gawk"
msgstr ""
"el modificador de expresión regular `/.../%c` de tawk no funciona en gawk"
-#: awkgram.y:3053
+#: awkgram.y:3077
msgid "unterminated regexp"
msgstr "expresión regular sin terminar"
-#: awkgram.y:3057
+#: awkgram.y:3081
msgid "unterminated regexp at end of file"
msgstr "expresión regular sin terminar al final del fichero"
-#: awkgram.y:3116
+#: awkgram.y:3140
msgid "use of `\\ #...' line continuation is not portable"
msgstr "el uso de la continuación de línea `\\ #...' no es transportable"
-#: awkgram.y:3132
+#: awkgram.y:3156
msgid "backslash not last character on line"
msgstr "la barra invertida no es el último caracter en la línea"
-#: awkgram.y:3193
+#: awkgram.y:3217
msgid "POSIX does not allow operator `**='"
msgstr "POSIX no permite el operador `**='"
-#: awkgram.y:3195
+#: awkgram.y:3219
msgid "old awk does not support operator `**='"
msgstr "el awk antiguo no admite el operador `**='"
-#: awkgram.y:3204
+#: awkgram.y:3228
msgid "POSIX does not allow operator `**'"
msgstr "POSIX no permite el operador `**'"
-#: awkgram.y:3206
+#: awkgram.y:3230
msgid "old awk does not support operator `**'"
msgstr "el awk antiguo no admite el operador `**='"
-#: awkgram.y:3241
+#: awkgram.y:3265
msgid "operator `^=' is not supported in old awk"
msgstr "el operador `^=' no se admite en el awk antiguo"
-#: awkgram.y:3249
+#: awkgram.y:3273
msgid "operator `^' is not supported in old awk"
msgstr "el operador `^' no se admite en el awk antiguo"
-#: awkgram.y:3342 awkgram.y:3358 command.y:1178
+#: awkgram.y:3366 awkgram.y:3382 command.y:1178
msgid "unterminated string"
msgstr "cadena sin terminar"
-#: awkgram.y:3579
+#: awkgram.y:3603
#, c-format
msgid "invalid char '%c' in expression"
msgstr "caracter '%c' inválido en la expresión"
-#: awkgram.y:3626
+#: awkgram.y:3650
#, c-format
msgid "`%s' is a gawk extension"
msgstr "`%s' es una extensión de gawk"
-#: awkgram.y:3631
+#: awkgram.y:3655
#, c-format
msgid "POSIX does not allow `%s'"
msgstr "POSIX no permite `%s'"
-#: awkgram.y:3639
+#: awkgram.y:3663
#, c-format
msgid "`%s' is not supported in old awk"
msgstr "`%s' no se admite en el awk antiguo"
-#: awkgram.y:3729
+#: awkgram.y:3753
msgid "`goto' considered harmful!\n"
msgstr "¡`goto' se considera dañino!\n"
-#: awkgram.y:3763
+#: awkgram.y:3787
#, c-format
msgid "%d is invalid as number of arguments for %s"
msgstr "%d es inválido como número de argumentos para %s"
-#: awkgram.y:3798
+#: awkgram.y:3822
#, c-format
msgid "%s: string literal as last arg of substitute has no effect"
msgstr ""
"%s: la literal de cadena como último argumento de substitute no tiene efecto"
-#: awkgram.y:3803
+#: awkgram.y:3827
#, c-format
msgid "%s third parameter is not a changeable object"
msgstr "el tercer argumento de %s no es un objecto modificable"
-#: awkgram.y:3886 awkgram.y:3889
+#: awkgram.y:3910 awkgram.y:3913
msgid "match: third argument is a gawk extension"
msgstr "match: el tercer argumento es una extensión de gawk"
-#: awkgram.y:3943 awkgram.y:3946
+#: awkgram.y:3967 awkgram.y:3970
msgid "close: second argument is a gawk extension"
msgstr "close: el segundo argumento es una extensión de gawk"
-#: awkgram.y:3958
+#: awkgram.y:3982
msgid "use of dcgettext(_\"...\") is incorrect: remove leading underscore"
msgstr ""
"el uso de dcgettext(_\"...\") es incorrecto: quite el subrayado inicial"
-#: awkgram.y:3973
+#: awkgram.y:3997
msgid "use of dcngettext(_\"...\") is incorrect: remove leading underscore"
msgstr ""
"el uso de dcngettext(_\"...\") es incorrecto: quite el subrayado inicial"
-#: awkgram.y:3992
+#: awkgram.y:4016
#, fuzzy
msgid "index: regexp constant as second argument is not allowed"
msgstr "index: el segundo argumento recibido no es una cadena"
-#: awkgram.y:4045
+#: awkgram.y:4069
#, c-format
msgid "function `%s': parameter `%s' shadows global variable"
msgstr "función `%s': parámetro `%s' oscurece la variable global"
-#: awkgram.y:4102 debug.c:4021 debug.c:4064 debug.c:5189
+#: awkgram.y:4126 debug.c:4041 debug.c:4084 debug.c:5204
#, c-format
msgid "could not open `%s' for writing (%s)"
msgstr "no se puede abrir `%s' para escritura (%s)"
-#: awkgram.y:4103
+#: awkgram.y:4127
msgid "sending variable list to standard error"
msgstr "se envía la lista de variables a la salida estándar de error"
-#: awkgram.y:4111
+#: awkgram.y:4135
#, c-format
msgid "%s: close failed (%s)"
msgstr "%s: falló close (%s)"
-#: awkgram.y:4136
+#: awkgram.y:4160
msgid "shadow_funcs() called twice!"
msgstr "¡se llamó shadow_funcs() dos veces!"
-#: awkgram.y:4144
+#: awkgram.y:4168
msgid "there were shadowed variables."
msgstr "hay variables opacadas."
-#: awkgram.y:4215
+#: awkgram.y:4239
#, c-format
msgid "function name `%s' previously defined"
msgstr "el nombre de función `%s' se definió previamente"
-#: awkgram.y:4261
+#: awkgram.y:4285
#, c-format
msgid "function `%s': can't use function name as parameter name"
msgstr ""
"función `%s': no se puede usar un nombre de función como nombre de parámetro"
-#: awkgram.y:4264
+#: awkgram.y:4288
#, c-format
msgid "function `%s': can't use special variable `%s' as a function parameter"
msgstr ""
"función `%s': no se puede usar la variable especial `%s' como un parámetro "
"de función"
-#: awkgram.y:4272
+#: awkgram.y:4296
#, c-format
msgid "function `%s': parameter #%d, `%s', duplicates parameter #%d"
msgstr "función `%s': parámetro #%d, `%s', duplica el parámetro #%d"
-#: awkgram.y:4366 awkgram.y:4372
+#: awkgram.y:4383 awkgram.y:4389
#, c-format
msgid "function `%s' called but never defined"
msgstr "se llamó a la función `%s' pero nunca se definió"
-#: awkgram.y:4376
+#: awkgram.y:4393
#, c-format
msgid "function `%s' defined but never called directly"
msgstr "se definió la función `%s' pero nunca se llamó directamente"
-#: awkgram.y:4408
+#: awkgram.y:4425
#, c-format
msgid "regexp constant for parameter #%d yields boolean value"
msgstr ""
"la constante de expresión regular para el parámetro #%d da un valor booleano"
-#: awkgram.y:4467
+#: awkgram.y:4484
#, c-format
msgid ""
"function `%s' called with space between name and `(',\n"
@@ -520,243 +520,253 @@ msgstr ""
"se llamó la función `%s' con espacio entre el nombre y el `(',\n"
"o se usó como una variable o una matriz"
-#: awkgram.y:4703
+#: awkgram.y:4720
msgid "division by zero attempted"
msgstr "se intentó una división por cero"
-#: awkgram.y:4712
+#: awkgram.y:4729
#, c-format
msgid "division by zero attempted in `%%'"
msgstr "se intentó una división por cero en `%%'"
-#: builtin.c:128
+#: awkgram.y:5049
+msgid ""
+"cannot assign a value to the result of a field post-increment expression"
+msgstr ""
+
+#: awkgram.y:5052
+#, fuzzy, c-format
+msgid "invalid target of assignment (opcode %s)"
+msgstr "%d es inválido como número de argumentos para %s"
+
+#: builtin.c:133
#, c-format
msgid "%s to \"%s\" failed (%s)"
msgstr "falló %s a \"%s\" (%s)"
-#: builtin.c:129
+#: builtin.c:134
msgid "standard output"
msgstr "salida estándar"
-#: builtin.c:143
+#: builtin.c:148
msgid "exp: received non-numeric argument"
msgstr "exp: se recibió un argumento que no es númerico"
-#: builtin.c:149
+#: builtin.c:154
#, c-format
msgid "exp: argument %g is out of range"
msgstr "exp: el argumento %g está fuera de rango"
-#: builtin.c:224
+#: builtin.c:229
#, c-format
msgid "fflush: cannot flush: pipe `%s' opened for reading, not writing"
msgstr ""
"fflush: no se puede limpiar: se abrió la tubería `%s' para lectura, no para "
"escritura"
-#: builtin.c:227
+#: builtin.c:232
#, c-format
msgid "fflush: cannot flush: file `%s' opened for reading, not writing"
msgstr ""
"fflush: no se puede limpiar: se abrió el fichero `%s' para lectura, no para "
"escritura"
-#: builtin.c:239
+#: builtin.c:244
#, c-format
msgid "fflush: `%s' is not an open file, pipe or co-process"
msgstr "fflush: `%s' no es un fichero abierto, tubería o co-proceso"
-#: builtin.c:357
+#: builtin.c:362
msgid "index: received non-string first argument"
msgstr "index: el primer argumento recibido no es una cadena"
-#: builtin.c:359
+#: builtin.c:364
msgid "index: received non-string second argument"
msgstr "index: el segundo argumento recibido no es una cadena"
-#: builtin.c:483 mpfr.c:757
+#: builtin.c:488 mpfr.c:757
msgid "int: received non-numeric argument"
msgstr "int: se recibió un argumento que no es númerico"
-#: builtin.c:520
+#: builtin.c:525
msgid "length: received array argument"
msgstr "length: se recibió un argumento de matriz"
-#: builtin.c:523
+#: builtin.c:528
msgid "`length(array)' is a gawk extension"
msgstr "`length(array)' es una extensión de gawk"
-#: builtin.c:539
+#: builtin.c:544
msgid "length: received non-string argument"
msgstr "length: se recibió un argumento que no es una cadena"
-#: builtin.c:570
+#: builtin.c:575
msgid "log: received non-numeric argument"
msgstr "log: se recibió un argumento que no es númerico"
-#: builtin.c:573
+#: builtin.c:578
#, c-format
msgid "log: received negative argument %g"
msgstr "log: se recibió el argumento negativo %g"
-#: builtin.c:771 builtin.c:776
+#: builtin.c:776 builtin.c:781
msgid "fatal: must use `count$' on all formats or none"
msgstr "fatal: se debe utilizar `count$' en todos los formatos o en ninguno"
-#: builtin.c:846
+#: builtin.c:851
#, c-format
msgid "field width is ignored for `%%' specifier"
msgstr "se descarta la anchura del campo para el especificador `%%'"
-#: builtin.c:848
+#: builtin.c:853
#, c-format
msgid "precision is ignored for `%%' specifier"
msgstr "se descarta la precisión para el especificador `%%'"
-#: builtin.c:850
+#: builtin.c:855
#, c-format
msgid "field width and precision are ignored for `%%' specifier"
msgstr ""
"se descartan la anchura del campo y la precisión para el especificador `%%'"
-#: builtin.c:901
+#: builtin.c:906
msgid "fatal: `$' is not permitted in awk formats"
msgstr "fatal: no se permite `$' en los formatos de awk"
-#: builtin.c:910
+#: builtin.c:915
msgid "fatal: arg count with `$' must be > 0"
msgstr "fatal: la cuenta de argumentos con `$' debe ser > 0"
-#: builtin.c:914
+#: builtin.c:919
#, c-format
msgid "fatal: arg count %ld greater than total number of supplied arguments"
msgstr ""
"fatal: la cuenta de argumentos %ld es mayor que el número total de "
"argumentos proporcionados"
-#: builtin.c:918
+#: builtin.c:923
msgid "fatal: `$' not permitted after period in format"
msgstr "fatal: no se permite `$' después de un punto en el formato"
-#: builtin.c:934
+#: builtin.c:939
msgid "fatal: no `$' supplied for positional field width or precision"
msgstr ""
"fatal: no se proporciona `$' para la anchura o la precisión del campo "
"posicional"
-#: builtin.c:1006
+#: builtin.c:1009
msgid "`l' is meaningless in awk formats; ignored"
msgstr "`l' no tiene significado en los formatos de awk; se descarta"
-#: builtin.c:1010
+#: builtin.c:1013
msgid "fatal: `l' is not permitted in POSIX awk formats"
msgstr "fatal: no se permite `l' en los formatos POSIX de awk"
-#: builtin.c:1023
+#: builtin.c:1026
msgid "`L' is meaningless in awk formats; ignored"
msgstr "`L' no tiene significado en los formatos de awk; se descarta"
-#: builtin.c:1027
+#: builtin.c:1030
msgid "fatal: `L' is not permitted in POSIX awk formats"
msgstr "fatal: no se permite `L' en los formatos POSIX de awk"
-#: builtin.c:1040
+#: builtin.c:1043
msgid "`h' is meaningless in awk formats; ignored"
msgstr "`h' no tiene significado en los formatos de awk; se descarta"
-#: builtin.c:1044
+#: builtin.c:1047
msgid "fatal: `h' is not permitted in POSIX awk formats"
msgstr "fatal: no se permite `h' en los formatos POSIX de awk"
-#: builtin.c:1439
+#: builtin.c:1463
#, c-format
msgid "[s]printf: value %g is out of range for `%%%c' format"
msgstr "[s]printf: el valor %g está fuera del rango para el formato `%%%c'"
-#: builtin.c:1537
+#: builtin.c:1561
#, c-format
msgid "ignoring unknown format specifier character `%c': no argument converted"
msgstr ""
"se descarta el carácter especificador de formato `%c' desconocido: no se "
"convirtió ningún argumento"
-#: builtin.c:1542
+#: builtin.c:1566
msgid "fatal: not enough arguments to satisfy format string"
msgstr ""
"fatal: no hay suficientes argumentos para satisfacer a la cadena de formato"
-#: builtin.c:1544
+#: builtin.c:1568
msgid "^ ran out for this one"
msgstr "se acabó ^ para éste"
-#: builtin.c:1551
+#: builtin.c:1575
msgid "[s]printf: format specifier does not have control letter"
msgstr "[s]printf: el especificador de formato no tiene letras de control"
-#: builtin.c:1554
+#: builtin.c:1578
msgid "too many arguments supplied for format string"
msgstr "se proporcionaron demasiados argumentos para la cadena de formato"
-#: builtin.c:1610
+#: builtin.c:1634
#, fuzzy
msgid "sprintf: no arguments"
msgstr "printf: sin argumentos"
-#: builtin.c:1633 builtin.c:1644
+#: builtin.c:1657 builtin.c:1668
msgid "printf: no arguments"
msgstr "printf: sin argumentos"
-#: builtin.c:1687
+#: builtin.c:1711
msgid "sqrt: received non-numeric argument"
msgstr "sqrt: se recibió un argumento que no es un númerico"
-#: builtin.c:1691
+#: builtin.c:1715
#, c-format
msgid "sqrt: called with negative argument %g"
msgstr "sqrt: se llamó con el argumento negativo %g"
-#: builtin.c:1722
+#: builtin.c:1746
#, c-format
msgid "substr: length %g is not >= 1"
msgstr "substr: la longitud %g no es >= 1"
-#: builtin.c:1724
+#: builtin.c:1748
#, c-format
msgid "substr: length %g is not >= 0"
msgstr "substr: la longitud %g no es >= 0"
-#: builtin.c:1731
+#: builtin.c:1755
#, c-format
msgid "substr: non-integer length %g will be truncated"
msgstr "substr: se truncará la longitud no entera %g"
-#: builtin.c:1736
+#: builtin.c:1760
#, c-format
msgid "substr: length %g too big for string indexing, truncating to %g"
msgstr ""
"substr: la longitud %g es demasiado grande para ser índice de cadena, se "
"trunca a %g"
-#: builtin.c:1748
+#: builtin.c:1772
#, c-format
msgid "substr: start index %g is invalid, using 1"
msgstr "substr: el índice de inicio %g es inválido, se usa 1"
-#: builtin.c:1753
+#: builtin.c:1777
#, c-format
msgid "substr: non-integer start index %g will be truncated"
msgstr "substr: se truncará el índice de inicio no entero %g"
-#: builtin.c:1778
+#: builtin.c:1802
msgid "substr: source string is zero length"
msgstr "substr: la cadena de origen es de longitud cero"
-#: builtin.c:1794
+#: builtin.c:1818
#, c-format
msgid "substr: start index %g is past end of string"
msgstr "substr: el índice de inicio %g está después del fin de la cadena"
-#: builtin.c:1802
+#: builtin.c:1826
#, c-format
msgid ""
"substr: length %g at start index %g exceeds length of first argument (%lu)"
@@ -764,196 +774,196 @@ msgstr ""
"substr: la cadena %g en el índice de inicio %g excede la longitud del primer "
"argumento (%lu)"
-#: builtin.c:1876
+#: builtin.c:1900
msgid "strftime: format value in PROCINFO[\"strftime\"] has numeric type"
msgstr ""
"strftime: el valor de formato en PROCINFO[\"strftime\"] tiene tipo numérico"
-#: builtin.c:1899
+#: builtin.c:1923
msgid "strftime: received non-numeric second argument"
msgstr "strftime: el segundo argumento recibido no es númerico"
-#: builtin.c:1903
+#: builtin.c:1927
msgid "strftime: second argument less than 0 or too big for time_t"
msgstr ""
"strftime: el segundo argumento es menor que 0 o demasiado grande para time_t"
-#: builtin.c:1910
+#: builtin.c:1934
msgid "strftime: received non-string first argument"
msgstr "strftime: el primer argumento recibido no es una cadena"
-#: builtin.c:1917
+#: builtin.c:1941
msgid "strftime: received empty format string"
msgstr "strftime: se recibió una cadena de formato vacía"
-#: builtin.c:1983
+#: builtin.c:2007
msgid "mktime: received non-string argument"
msgstr "mktime: se recibió un argumento que no es una cadena"
-#: builtin.c:2000
+#: builtin.c:2024
msgid "mktime: at least one of the values is out of the default range"
msgstr ""
"mktime: por lo menos uno de los valores está fuera del rango por defecto"
-#: builtin.c:2035
+#: builtin.c:2059
msgid "'system' function not allowed in sandbox mode"
msgstr "no se permite la función 'system' en modo sandbox"
-#: builtin.c:2040
+#: builtin.c:2064
msgid "system: received non-string argument"
msgstr "system: se recibió un argumento que no es una cadena"
-#: builtin.c:2160
+#: builtin.c:2184
#, c-format
msgid "reference to uninitialized field `$%d'"
msgstr "referencia al campo sin inicializar `$%d'"
-#: builtin.c:2247
+#: builtin.c:2271
msgid "tolower: received non-string argument"
msgstr "tolower: se recibió un argumento que no es una cadena"
-#: builtin.c:2281
+#: builtin.c:2305
msgid "toupper: received non-string argument"
msgstr "toupper: se recibió un argumento que no es una cadena"
-#: builtin.c:2317 mpfr.c:672
+#: builtin.c:2341 mpfr.c:672
msgid "atan2: received non-numeric first argument"
msgstr "atan2: el primer argumento recibido no es númerico"
-#: builtin.c:2319 mpfr.c:674
+#: builtin.c:2343 mpfr.c:674
msgid "atan2: received non-numeric second argument"
msgstr "atan2: el segundo argumento recibido no es númerico"
-#: builtin.c:2338
+#: builtin.c:2362
msgid "sin: received non-numeric argument"
msgstr "sin: se recibió un argumento que no es númerico"
-#: builtin.c:2354
+#: builtin.c:2378
msgid "cos: received non-numeric argument"
msgstr "cos: se recibió un argumento que no es númerico"
-#: builtin.c:2407 mpfr.c:1156
+#: builtin.c:2431 mpfr.c:1156
msgid "srand: received non-numeric argument"
msgstr "srand: se recibió un argumento que no es númerico"
-#: builtin.c:2438
+#: builtin.c:2462
msgid "match: third argument is not an array"
msgstr "match: el tercer argumento no es una matriz"
-#: builtin.c:2710
+#: builtin.c:2734
msgid "gensub: third argument of 0 treated as 1"
msgstr "gensub: el tercer argumento de 0 se trata como 1"
-#: builtin.c:3003
+#: builtin.c:3030
msgid "lshift: received non-numeric first argument"
msgstr "lshift: el primer argumento recibido no es númerico"
-#: builtin.c:3005
+#: builtin.c:3032
msgid "lshift: received non-numeric second argument"
msgstr "lshift: el segundo argumento recibido no es númerico"
-#: builtin.c:3011
+#: builtin.c:3038
#, fuzzy, c-format
msgid "lshift(%f, %f): negative values will give strange results"
msgstr "lshift(%lf, %lf): los valores negativos darán resultados extraños"
-#: builtin.c:3013
+#: builtin.c:3040
#, fuzzy, c-format
msgid "lshift(%f, %f): fractional values will be truncated"
msgstr "lshift(%lf, %lf): los valores fraccionarios se truncarán"
-#: builtin.c:3015
+#: builtin.c:3042
#, fuzzy, c-format
msgid "lshift(%f, %f): too large shift value will give strange results"
msgstr ""
"lshift(%lf, %lf): un valor de desplazamiento muy grande dará resultados "
"extraños"
-#: builtin.c:3040
+#: builtin.c:3067
msgid "rshift: received non-numeric first argument"
msgstr "rshift: el primer argumento recibido no es númerico"
-#: builtin.c:3042
+#: builtin.c:3069
msgid "rshift: received non-numeric second argument"
msgstr "rshift: el segundo argumento recibido no es númerico"
-#: builtin.c:3048
+#: builtin.c:3075
#, fuzzy, c-format
msgid "rshift(%f, %f): negative values will give strange results"
msgstr "rshift(%lf, %lf): los valores negativos darán resultados extraños"
-#: builtin.c:3050
+#: builtin.c:3077
#, fuzzy, c-format
msgid "rshift(%f, %f): fractional values will be truncated"
msgstr "rshift(%lf, %lf): los valores fraccionarios serán truncados"
-#: builtin.c:3052
+#: builtin.c:3079
#, fuzzy, c-format
msgid "rshift(%f, %f): too large shift value will give strange results"
msgstr ""
"rshift(%lf, %lf): un valor de desplazamiento muy grande dará resultados "
"extraños"
-#: builtin.c:3077 mpfr.c:968
+#: builtin.c:3104 mpfr.c:968
#, fuzzy
msgid "and: called with less than two arguments"
msgstr "sqrt: se llamó con el argumento negativo %g"
-#: builtin.c:3082
+#: builtin.c:3109
#, fuzzy, c-format
msgid "and: argument %d is non-numeric"
msgstr "exp: el argumento %g está fuera de rango"
-#: builtin.c:3086
+#: builtin.c:3113
#, fuzzy, c-format
msgid "and: argument %d negative value %g will give strange results"
msgstr "and(%lf, %lf): los valores negativos darán resultados extraños"
-#: builtin.c:3109 mpfr.c:1000
+#: builtin.c:3136 mpfr.c:1000
#, fuzzy
msgid "or: called with less than two arguments"
msgstr "sqrt: se llamó con el argumento negativo %g"
-#: builtin.c:3114
+#: builtin.c:3141
#, fuzzy, c-format
msgid "or: argument %d is non-numeric"
msgstr "exp: el argumento %g está fuera de rango"
-#: builtin.c:3118
+#: builtin.c:3145
#, fuzzy, c-format
msgid "or: argument %d negative value %g will give strange results"
msgstr "compl(%lf): el valor negativo dará resultados extraños"
-#: builtin.c:3140 mpfr.c:1031
+#: builtin.c:3167 mpfr.c:1031
#, fuzzy
msgid "xor: called with less than two arguments"
msgstr "sqrt: se llamó con el argumento negativo %g"
-#: builtin.c:3146
+#: builtin.c:3173
#, fuzzy, c-format
msgid "xor: argument %d is non-numeric"
msgstr "exp: el argumento %g está fuera de rango"
-#: builtin.c:3150
+#: builtin.c:3177
#, fuzzy, c-format
msgid "xor: argument %d negative value %g will give strange results"
msgstr "xor(%lf, %lf): los valores negativos darán resultados extraños"
-#: builtin.c:3175 mpfr.c:787
+#: builtin.c:3202 mpfr.c:787
msgid "compl: received non-numeric argument"
msgstr "compl: se recibió un argumento que no es númerico"
-#: builtin.c:3181
+#: builtin.c:3208
#, fuzzy, c-format
msgid "compl(%f): negative value will give strange results"
msgstr "compl(%lf): el valor negativo dará resultados extraños"
-#: builtin.c:3183
+#: builtin.c:3210
#, fuzzy, c-format
msgid "compl(%f): fractional value will be truncated"
msgstr "compl(%lf): el valor fraccionario se truncará"
-#: builtin.c:3352
+#: builtin.c:3379
#, c-format
msgid "dcgettext: `%s' is not a valid locale category"
msgstr "dcgettext: `%s' no es una categoría local válida"
@@ -1077,8 +1087,8 @@ msgstr ""
#: command.y:823
msgid ""
-"commands [num] - starts a list of commands to be executed at a breakpoint"
-"(watchpoint) hit."
+"commands [num] - starts a list of commands to be executed at a "
+"breakpoint(watchpoint) hit."
msgstr ""
#: command.y:825
@@ -1235,7 +1245,7 @@ msgstr ""
msgid "watch var - set a watchpoint for a variable."
msgstr ""
-#: command.y:1011 debug.c:395 msg.c:128
+#: command.y:1011 debug.c:401 msg.c:135
#, c-format
msgid "error: "
msgstr "error: "
@@ -1275,561 +1285,561 @@ msgstr "Caracter de ordenación inválido"
msgid "undefined command: %s\n"
msgstr ""
-#: debug.c:246
+#: debug.c:252
msgid "set or show the number of lines to keep in history file."
msgstr ""
-#: debug.c:248
+#: debug.c:254
msgid "set or show the list command window size."
msgstr ""
-#: debug.c:250
+#: debug.c:256
msgid "set or show gawk output file."
msgstr ""
-#: debug.c:252
+#: debug.c:258
msgid "set or show debugger prompt."
msgstr ""
-#: debug.c:254
+#: debug.c:260
msgid "(un)set or show saving of command history (value=on|off)."
msgstr ""
-#: debug.c:256
+#: debug.c:262
msgid "(un)set or show saving of options (value=on|off)."
msgstr ""
-#: debug.c:258
+#: debug.c:264
msgid "(un)set or show instruction tracing (value=on|off)."
msgstr ""
-#: debug.c:339
+#: debug.c:345
msgid "program not running."
msgstr ""
-#: debug.c:442 debug.c:597
+#: debug.c:448 debug.c:606
#, fuzzy, c-format
msgid "can't read source file `%s' (%s)"
msgstr "no se puede leer el fichero fuente `%s' (%s)"
-#: debug.c:447
+#: debug.c:453
#, fuzzy, c-format
msgid "source file `%s' is empty.\n"
msgstr "el fichero fuente `%s' está vacío"
-#: debug.c:474
+#: debug.c:480
msgid "no current source file."
msgstr ""
-#: debug.c:499
+#: debug.c:505
#, fuzzy, c-format
msgid "cannot find source file named `%s' (%s)"
msgstr "no se puede leer el fichero fuente `%s' (%s)"
-#: debug.c:523
+#: debug.c:529
#, c-format
msgid "WARNING: source file `%s' modified since program compilation.\n"
msgstr ""
-#: debug.c:542
+#: debug.c:551
#, c-format
msgid "line number %d out of range; `%s' has %d lines"
msgstr ""
-#: debug.c:602
+#: debug.c:611
#, fuzzy, c-format
msgid "unexpected eof while reading file `%s', line %d"
msgstr "error interno: fichero `%s', línea %d\n"
-#: debug.c:611
+#: debug.c:620
#, c-format
msgid "source file `%s' modified since start of program execution"
msgstr ""
-#: debug.c:723
+#: debug.c:732
#, fuzzy, c-format
msgid "Current source file: %s\n"
msgstr "ya se incluyó el fichero fuente `%s'"
-#: debug.c:724
+#: debug.c:733
#, c-format
msgid "Number of lines: %d\n"
msgstr ""
-#: debug.c:731
+#: debug.c:740
#, c-format
msgid "Source file (lines): %s (%d)\n"
msgstr ""
-#: debug.c:745
+#: debug.c:754
msgid ""
"Number Disp Enabled Location\n"
"\n"
msgstr ""
-#: debug.c:756
+#: debug.c:765
#, c-format
msgid "\tno of hits = %ld\n"
msgstr ""
-#: debug.c:758
+#: debug.c:767
#, c-format
msgid "\tignore next %ld hit(s)\n"
msgstr ""
-#: debug.c:760 debug.c:900
+#: debug.c:769 debug.c:909
#, c-format
msgid "\tstop condition: %s\n"
msgstr ""
-#: debug.c:762 debug.c:902
+#: debug.c:771 debug.c:911
msgid "\tcommands:\n"
msgstr ""
-#: debug.c:784
+#: debug.c:793
#, c-format
msgid "Current frame: "
msgstr ""
-#: debug.c:787
+#: debug.c:796
#, c-format
msgid "Called by frame: "
msgstr ""
-#: debug.c:791
+#: debug.c:800
#, c-format
msgid "Caller of frame: "
msgstr ""
-#: debug.c:809
+#: debug.c:818
#, c-format
msgid "None in main().\n"
msgstr ""
-#: debug.c:839
+#: debug.c:848
#, fuzzy
msgid "No arguments.\n"
msgstr "printf: sin argumentos"
-#: debug.c:840
+#: debug.c:849
msgid "No locals.\n"
msgstr ""
-#: debug.c:848
+#: debug.c:857
msgid ""
"All defined variables:\n"
"\n"
msgstr ""
-#: debug.c:858
+#: debug.c:867
msgid ""
"All defined functions:\n"
"\n"
msgstr ""
-#: debug.c:877
+#: debug.c:886
msgid ""
"Auto-display variables:\n"
"\n"
msgstr ""
-#: debug.c:880
+#: debug.c:889
msgid ""
"Watch variables:\n"
"\n"
msgstr ""
-#: debug.c:1020
+#: debug.c:1029
#, fuzzy, c-format
msgid "no symbol `%s' in current context\n"
msgstr "`exit' no se puede llamar en el contexto actual"
-#: debug.c:1032 debug.c:1418
+#: debug.c:1041 debug.c:1427
#, fuzzy, c-format
msgid "`%s' is not an array\n"
msgstr "`%s' no es un nombre de variable legal"
-#: debug.c:1046
+#: debug.c:1055
#, fuzzy, c-format
msgid "$%ld = uninitialized field\n"
msgstr "referencia al campo sin inicializar `$%d'"
-#: debug.c:1067
+#: debug.c:1076
#, fuzzy, c-format
msgid "array `%s' is empty\n"
msgstr "el fichero de datos `%s' está vacío"
-#: debug.c:1110 debug.c:1162
+#: debug.c:1119 debug.c:1171
#, fuzzy, c-format
msgid "[\"%s\"] not in array `%s'\n"
msgstr "delete: el índice `%s' no está en la matriz `%s'"
-#: debug.c:1166
+#: debug.c:1175
#, c-format
msgid "`%s[\"%s\"]' is not an array\n"
msgstr ""
-#: debug.c:1227 debug.c:4949
+#: debug.c:1236 debug.c:4964
#, fuzzy, c-format
msgid "`%s' is not a scalar variable"
msgstr "`%s' no es un nombre de variable legal"
-#: debug.c:1249 debug.c:4979
+#: debug.c:1258 debug.c:4994
#, fuzzy, c-format
msgid "attempt to use array `%s[\"%s\"]' in a scalar context"
msgstr "se intentó usar la matriz `%s[\"%.*s\"]' en un contexto escalar"
-#: debug.c:1271 debug.c:4990
+#: debug.c:1280 debug.c:5005
#, fuzzy, c-format
msgid "attempt to use scalar `%s[\"%s\"]' as array"
msgstr "se intentó usar el dato escalar `%s[\"%.*s\"]' como una matriz"
-#: debug.c:1414
+#: debug.c:1423
#, fuzzy, c-format
msgid "`%s' is a function"
msgstr "`%s' es inválido como un nombre de función"
-#: debug.c:1456
+#: debug.c:1465
#, c-format
msgid "watchpoint %d is unconditional\n"
msgstr ""
-#: debug.c:1490
+#: debug.c:1499
#, c-format
msgid "No display item numbered %ld"
msgstr ""
-#: debug.c:1493
+#: debug.c:1502
#, c-format
msgid "No watch item numbered %ld"
msgstr ""
-#: debug.c:1519
+#: debug.c:1528
#, fuzzy, c-format
msgid "%d: [\"%s\"] not in array `%s'\n"
msgstr "delete: el índice `%s' no está en la matriz `%s'"
-#: debug.c:1758
+#: debug.c:1767
#, fuzzy
msgid "attempt to use scalar value as array"
msgstr "se intentó usar un valor escalar como una matriz"
-#: debug.c:1847
+#: debug.c:1856
#, c-format
msgid "Watchpoint %d deleted because parameter is out of scope.\n"
msgstr ""
-#: debug.c:1858
+#: debug.c:1867
#, c-format
msgid "Display %d deleted because parameter is out of scope.\n"
msgstr ""
-#: debug.c:1891
+#: debug.c:1900
#, fuzzy, c-format
msgid " in file `%s', line %d\n"
msgstr "error interno: fichero `%s', línea %d\n"
-#: debug.c:1912
+#: debug.c:1921
#, c-format
msgid " at `%s':%d"
msgstr ""
-#: debug.c:1928 debug.c:1991
+#: debug.c:1937 debug.c:2000
#, c-format
msgid "#%ld\tin "
msgstr ""
-#: debug.c:1965
+#: debug.c:1974
#, c-format
msgid "More stack frames follow ...\n"
msgstr ""
-#: debug.c:2008
+#: debug.c:2017
#, fuzzy
msgid "invalid frame number"
msgstr "Final de rango inválido"
-#: debug.c:2180
+#: debug.c:2200
#, c-format
msgid "Note: breakpoint %d (enabled, ignore next %ld hits), also set at %s:%d"
msgstr ""
-#: debug.c:2187
+#: debug.c:2207
#, c-format
msgid "Note: breakpoint %d (enabled), also set at %s:%d"
msgstr ""
-#: debug.c:2194
+#: debug.c:2214
#, c-format
msgid "Note: breakpoint %d (disabled, ignore next %ld hits), also set at %s:%d"
msgstr ""
-#: debug.c:2201
+#: debug.c:2221
#, c-format
msgid "Note: breakpoint %d (disabled), also set at %s:%d"
msgstr ""
-#: debug.c:2218
+#: debug.c:2238
#, fuzzy, c-format
msgid "Breakpoint %d set at file `%s', line %d\n"
msgstr "error interno: fichero `%s', línea %d\n"
-#: debug.c:2320
+#: debug.c:2340
#, c-format
msgid "Can't set breakpoint in file `%s'\n"
msgstr ""
-#: debug.c:2349 debug.c:2472 debug.c:3330
+#: debug.c:2369 debug.c:2492 debug.c:3350
#, fuzzy, c-format
msgid "line number %d in file `%s' out of range"
msgstr "exp: el argumento %g está fuera de rango"
-#: debug.c:2353
+#: debug.c:2373
#, c-format
msgid "Can't find rule!!!\n"
msgstr ""
-#: debug.c:2355
+#: debug.c:2375
#, c-format
msgid "Can't set breakpoint at `%s':%d\n"
msgstr ""
-#: debug.c:2367
+#: debug.c:2387
#, c-format
msgid "Can't set breakpoint in function `%s'\n"
msgstr ""
-#: debug.c:2383
+#: debug.c:2403
#, c-format
msgid "breakpoint %d set at file `%s', line %d is unconditional\n"
msgstr ""
-#: debug.c:2488 debug.c:2510
+#: debug.c:2508 debug.c:2530
#, c-format
msgid "Deleted breakpoint %d"
msgstr ""
-#: debug.c:2494
+#: debug.c:2514
#, c-format
msgid "No breakpoint(s) at entry to function `%s'\n"
msgstr ""
-#: debug.c:2521
+#: debug.c:2541
#, fuzzy, c-format
msgid "No breakpoint at file `%s', line #%d\n"
msgstr "error interno: fichero `%s', línea %d\n"
-#: debug.c:2576 debug.c:2617 debug.c:2637 debug.c:2680
+#: debug.c:2596 debug.c:2637 debug.c:2657 debug.c:2700
msgid "invalid breakpoint number"
msgstr ""
-#: debug.c:2592
+#: debug.c:2612
msgid "Delete all breakpoints? (y or n) "
msgstr ""
-#: debug.c:2593 debug.c:2903 debug.c:2956
+#: debug.c:2613 debug.c:2923 debug.c:2976
msgid "y"
msgstr ""
-#: debug.c:2642
+#: debug.c:2662
#, c-format
msgid "Will ignore next %ld crossing(s) of breakpoint %d.\n"
msgstr ""
-#: debug.c:2646
+#: debug.c:2666
#, c-format
msgid "Will stop next time breakpoint %d is reached.\n"
msgstr ""
-#: debug.c:2763
+#: debug.c:2783
#, c-format
msgid "Can only debug programs provided with the `-f' option.\n"
msgstr ""
-#: debug.c:2888
+#: debug.c:2908
#, c-format
msgid "Failed to restart debugger"
msgstr ""
-#: debug.c:2902
+#: debug.c:2922
msgid "Program already running. Restart from beginning (y/n)? "
msgstr ""
-#: debug.c:2906
+#: debug.c:2926
#, c-format
msgid "Program not restarted\n"
msgstr ""
-#: debug.c:2916
+#: debug.c:2936
#, c-format
msgid "error: cannot restart, operation not allowed\n"
msgstr ""
-#: debug.c:2922
+#: debug.c:2942
#, c-format
msgid "error (%s): cannot restart, ignoring rest of the commands\n"
msgstr ""
-#: debug.c:2930
+#: debug.c:2950
#, c-format
msgid "Starting program: \n"
msgstr ""
-#: debug.c:2939
+#: debug.c:2959
#, c-format
msgid "Program exited %s with exit value: %d\n"
msgstr ""
-#: debug.c:2955
+#: debug.c:2975
msgid "The program is running. Exit anyway (y/n)? "
msgstr ""
-#: debug.c:2990
+#: debug.c:3010
#, c-format
msgid "Not stopped at any breakpoint; argument ignored.\n"
msgstr ""
-#: debug.c:2995
+#: debug.c:3015
#, c-format
msgid "invalid breakpoint number %d."
msgstr ""
-#: debug.c:3000
+#: debug.c:3020
#, c-format
msgid "Will ignore next %ld crossings of breakpoint %d.\n"
msgstr ""
-#: debug.c:3187
+#: debug.c:3207
#, c-format
msgid "'finish' not meaningful in the outermost frame main()\n"
msgstr ""
-#: debug.c:3192
+#: debug.c:3212
#, c-format
msgid "Run till return from "
msgstr ""
-#: debug.c:3235
+#: debug.c:3255
#, c-format
msgid "'return' not meaningful in the outermost frame main()\n"
msgstr ""
-#: debug.c:3349
+#: debug.c:3369
#, c-format
msgid "Can't find specified location in function `%s'\n"
msgstr ""
-#: debug.c:3357
+#: debug.c:3377
#, fuzzy, c-format
msgid "invalid source line %d in file `%s'"
msgstr "ya se incluyó el fichero fuente `%s'"
-#: debug.c:3372
+#: debug.c:3392
#, c-format
msgid "Can't find specified location %d in file `%s'\n"
msgstr ""
-#: debug.c:3404
+#: debug.c:3424
#, fuzzy, c-format
msgid "element not in array\n"
msgstr "delete: el índice `%s' no está en la matriz `%s'"
-#: debug.c:3404
+#: debug.c:3424
#, c-format
msgid "untyped variable\n"
msgstr ""
-#: debug.c:3446
+#: debug.c:3466
#, c-format
msgid "Stopping in %s ...\n"
msgstr ""
-#: debug.c:3523
+#: debug.c:3543
#, c-format
msgid "'finish' not meaningful with non-local jump '%s'\n"
msgstr ""
-#: debug.c:3530
+#: debug.c:3550
#, c-format
msgid "'until' not meaningful with non-local jump '%s'\n"
msgstr ""
-#: debug.c:4165
+#: debug.c:4185
msgid "\t------[Enter] to continue or q [Enter] to quit------"
msgstr ""
-#: debug.c:4166
+#: debug.c:4186
msgid "q"
msgstr ""
-#: debug.c:4986
+#: debug.c:5001
#, fuzzy, c-format
msgid "[\"%s\"] not in array `%s'"
msgstr "delete: el índice `%s' no está en la matriz `%s'"
-#: debug.c:5192
+#: debug.c:5207
#, c-format
msgid "sending output to stdout\n"
msgstr ""
-#: debug.c:5232
+#: debug.c:5247
msgid "invalid number"
msgstr ""
-#: debug.c:5366
+#: debug.c:5381
#, fuzzy, c-format
msgid "`%s' not allowed in current context; statement ignored"
msgstr "`exit' no se puede llamar en el contexto actual"
-#: debug.c:5374
+#: debug.c:5389
#, fuzzy
msgid "`return' not allowed in current context; statement ignored"
msgstr "`exit' no se puede llamar en el contexto actual"
-#: debug.c:5575
+#: debug.c:5590
#, fuzzy, c-format
msgid "No symbol `%s' in current context"
msgstr "se intentó usar la matriz `%s' en un contexto escalar"
-#: dfa.c:998 dfa.c:1001 dfa.c:1021 dfa.c:1031 dfa.c:1043 dfa.c:1094 dfa.c:1103
-#: dfa.c:1106 dfa.c:1111 dfa.c:1124 dfa.c:1192
+#: dfa.c:1118 dfa.c:1121 dfa.c:1142 dfa.c:1150 dfa.c:1162 dfa.c:1197
+#: dfa.c:1206 dfa.c:1209 dfa.c:1214 dfa.c:1228 dfa.c:1275
#, fuzzy
msgid "unbalanced ["
msgstr "[ desbalanceado"
-#: dfa.c:1052
+#: dfa.c:1174
#, fuzzy
msgid "invalid character class"
msgstr "Nombre de clase de caracter inválido"
-#: dfa.c:1229
+#: dfa.c:1316
msgid "character class syntax is [[:space:]], not [:space:]"
msgstr ""
-#: dfa.c:1281
+#: dfa.c:1366
#, fuzzy
msgid "unfinished \\ escape"
msgstr "Escape \\ sin terminar"
-#: dfa.c:1428 regcomp.c:161
+#: dfa.c:1513 regcomp.c:161
msgid "Invalid content of \\{\\}"
msgstr "Contenido inválido de \\{\\}"
-#: dfa.c:1431 regcomp.c:176
+#: dfa.c:1516 regcomp.c:176
msgid "Regular expression too big"
msgstr "La expresión regular es demasiado grande"
-#: dfa.c:1816
+#: dfa.c:1936
#, fuzzy
msgid "unbalanced ("
msgstr "( desbalanceado"
-#: dfa.c:1943
+#: dfa.c:2062
#, fuzzy
msgid "no syntax specified"
msgstr "No se especifican los bits de sintaxis de la expresión regular"
-#: dfa.c:1951
+#: dfa.c:2070
#, fuzzy
msgid "unbalanced )"
msgstr ") desbalanceado"
@@ -1849,11 +1859,11 @@ msgstr "código de operación %d desconocido"
msgid "opcode %s not an operator or keyword"
msgstr "el código de operación %s no es un operador o una palabra clave"
-#: eval.c:471
+#: eval.c:472
msgid "buffer overflow in genflags2str"
msgstr "desbordamiento de almacenamiento temporal en genflags2str"
-#: eval.c:674
+#: eval.c:675
#, c-format
msgid ""
"\n"
@@ -1864,71 +1874,71 @@ msgstr ""
"\t# Pila de Llamadas de Funciones:\n"
"\n"
-#: eval.c:703
+#: eval.c:704
msgid "`IGNORECASE' is a gawk extension"
msgstr "`IGNORECASE' es una extensión de gawk"
-#: eval.c:735
+#: eval.c:736
msgid "`BINMODE' is a gawk extension"
msgstr "`BINMODE' es una extensión de gawk"
-#: eval.c:793
+#: eval.c:794
#, c-format
msgid "BINMODE value `%s' is invalid, treated as 3"
msgstr "el valor BINMODE `%s' es inválido; se trata como 3"
-#: eval.c:884
+#: eval.c:885
#, c-format
msgid "bad `%sFMT' specification `%s'"
msgstr "especificación `%sFMT' `%s' errónea"
-#: eval.c:968
+#: eval.c:969
msgid "turning off `--lint' due to assignment to `LINT'"
msgstr "se desactiva `--lint' debido a una asignación a `LINT'"
-#: eval.c:1146
+#: eval.c:1147
#, c-format
msgid "reference to uninitialized argument `%s'"
msgstr "referencia al argumento sin inicializar `%s'"
-#: eval.c:1147
+#: eval.c:1148
#, c-format
msgid "reference to uninitialized variable `%s'"
msgstr "referencia a la variable sin inicializar `%s'"
-#: eval.c:1165
+#: eval.c:1166
msgid "attempt to field reference from non-numeric value"
msgstr "se intentó una referencia de campo desde un valor que no es númerico"
-#: eval.c:1167
+#: eval.c:1168
msgid "attempt to field reference from null string"
msgstr "se intentó una referencia de campo desde una cadena nula"
-#: eval.c:1175
+#: eval.c:1176
#, c-format
msgid "attempt to access field %ld"
msgstr "se intentó acceder al campo %ld"
-#: eval.c:1184
+#: eval.c:1185
#, c-format
msgid "reference to uninitialized field `$%ld'"
msgstr "referencia al campo sin inicializar `$%ld'"
-#: eval.c:1271
+#: eval.c:1272
#, c-format
msgid "function `%s' called with more arguments than declared"
msgstr "se llamó a la función `%s' con más argumentos de los declarados"
-#: eval.c:1466
+#: eval.c:1473
#, c-format
msgid "unwind_stack: unexpected type `%s'"
msgstr "unwind_stack: tipo `%s' inesperado"
-#: eval.c:1562
+#: eval.c:1569
msgid "division by zero attempted in `/='"
msgstr "se intentó una división por cero en `/='"
-#: eval.c:1569
+#: eval.c:1576
#, c-format
msgid "division by zero attempted in `%%='"
msgstr "se intentó una división por cero en `%%='"
@@ -1942,7 +1952,7 @@ msgstr "no se permiten las extensiones en modo sandbox"
msgid "-l / @load are gawk extensions"
msgstr "@include es una extensión de gawk"
-#: ext.c:95 ext.c:177
+#: ext.c:95
msgid "load_ext: received NULL lib_name"
msgstr ""
@@ -1975,6 +1985,10 @@ msgstr ""
msgid "`extension' is a gawk extension"
msgstr "`extension' es una extensión de gawk"
+#: ext.c:177
+msgid "extension: received NULL lib_name"
+msgstr ""
+
#: ext.c:180
#, fuzzy, c-format
msgid "extension: cannot open library `%s' (%s)"
@@ -2000,39 +2014,39 @@ msgstr ""
msgid "make_builtin: missing function name"
msgstr "extension: falta el nombre de la función"
-#: ext.c:238
+#: ext.c:236
#, fuzzy, c-format
msgid "make_builtin: can't redefine function `%s'"
msgstr "extension: no se puede redefinir la función `%s'"
-#: ext.c:242
+#: ext.c:240
#, fuzzy, c-format
msgid "make_builtin: function `%s' already defined"
msgstr "extension: la función `%s' ya está definida"
-#: ext.c:246
+#: ext.c:244
#, fuzzy, c-format
msgid "make_builtin: function name `%s' previously defined"
msgstr "extension: el nombre de función `%s' se definió previamente"
-#: ext.c:248
+#: ext.c:246
#, fuzzy, c-format
msgid "make_builtin: can't use gawk built-in `%s' as function name"
msgstr ""
"extension: no se puede utilizar la orden interna de gawk `%s' como nombre de "
"función"
-#: ext.c:251 ext.c:304
+#: ext.c:249 ext.c:304
#, c-format
msgid "make_builtin: negative argument count for function `%s'"
msgstr "make_builtin: cuenta de argumento negativa para la función `%s'"
-#: ext.c:278
+#: ext.c:276
#, fuzzy
msgid "extension: missing function name"
msgstr "extension: falta el nombre de la función"
-#: ext.c:283
+#: ext.c:279 ext.c:283
#, fuzzy, c-format
msgid "extension: illegal character `%c' in function name `%s'"
msgstr "extension: carácter ilegal `%c' en el nombre de la función `%s'"
@@ -2059,155 +2073,160 @@ msgstr ""
"extension: no se puede utilizar la orden interna de gawk `%s' como nombre de "
"función"
-#: ext.c:374
+#: ext.c:375
#, c-format
msgid "function `%s' defined to take no more than %d argument(s)"
msgstr "la función `%s' se definió para tomar no más de %d argumento(s)"
-#: ext.c:377
+#: ext.c:378
#, c-format
msgid "function `%s': missing argument #%d"
msgstr "función `%s': falta el argumento #%d"
-#: ext.c:394
+#: ext.c:395
#, c-format
msgid "function `%s': argument #%d: attempt to use scalar as an array"
msgstr ""
"función `%s': argumento #%d: se intentó usar un escalar como una matriz"
-#: ext.c:398
+#: ext.c:399
#, c-format
msgid "function `%s': argument #%d: attempt to use array as a scalar"
msgstr ""
"función `%s': argumento #%d: se intentó usar una matriz como un escalar"
-#: ext.c:412
+#: ext.c:413
msgid "dynamic loading of library not supported"
msgstr ""
-#: extension/filefuncs.c:97
+#: extension/filefuncs.c:159
#, fuzzy
msgid "chdir: called with incorrect number of arguments, expecting 1"
msgstr "sqrt: se llamó con el argumento negativo %g"
-#: extension/filefuncs.c:343
+#: extension/filefuncs.c:439
#, c-format
msgid "stat: unable to read symbolic link `%s'"
msgstr ""
-#: extension/filefuncs.c:376
+#: extension/filefuncs.c:472
#, fuzzy
msgid "stat: called with wrong number of arguments"
msgstr "sqrt: se llamó con el argumento negativo %g"
-#: extension/filefuncs.c:383
+#: extension/filefuncs.c:479
#, fuzzy
msgid "stat: bad parameters"
msgstr "%s: es un parámetro\n"
-#: extension/filefuncs.c:437
+#: extension/filefuncs.c:533
#, fuzzy, c-format
msgid "fts init: could not create variable %s"
msgstr "index: el segundo argumento recibido no es una cadena"
-#: extension/filefuncs.c:460
+#: extension/filefuncs.c:554
+#, fuzzy
+msgid "fts is not supported on this system"
+msgstr "`%s' no se admite en el awk antiguo"
+
+#: extension/filefuncs.c:573
msgid "fill_stat_element: could not create array"
msgstr ""
-#: extension/filefuncs.c:469
+#: extension/filefuncs.c:582
msgid "fill_stat_element: could not set element"
msgstr ""
-#: extension/filefuncs.c:484
+#: extension/filefuncs.c:597
#, fuzzy
msgid "fill_path_element: could not set element"
msgstr "index: el segundo argumento recibido no es una cadena"
-#: extension/filefuncs.c:500
+#: extension/filefuncs.c:613
msgid "fill_error_element: could not set element"
msgstr ""
-#: extension/filefuncs.c:547 extension/filefuncs.c:594
+#: extension/filefuncs.c:660 extension/filefuncs.c:707
msgid "fts-process: could not create array"
msgstr ""
-#: extension/filefuncs.c:557 extension/filefuncs.c:604
-#: extension/filefuncs.c:622
+#: extension/filefuncs.c:670 extension/filefuncs.c:717
+#: extension/filefuncs.c:735
#, fuzzy
msgid "fts-process: could not set element"
msgstr "index: el segundo argumento recibido no es una cadena"
-#: extension/filefuncs.c:671
+#: extension/filefuncs.c:784
#, fuzzy
msgid "fts: called with incorrect number of arguments, expecting 3"
msgstr "sqrt: se llamó con el argumento negativo %g"
-#: extension/filefuncs.c:674
+#: extension/filefuncs.c:787
#, fuzzy
msgid "fts: bad first parameter"
msgstr "%s: es un parámetro\n"
-#: extension/filefuncs.c:680
+#: extension/filefuncs.c:793
#, fuzzy
msgid "fts: bad second parameter"
msgstr "%s: es un parámetro\n"
-#: extension/filefuncs.c:686
+#: extension/filefuncs.c:799
#, fuzzy
msgid "fts: bad third parameter"
msgstr "%s: es un parámetro\n"
-#: extension/filefuncs.c:693
+#: extension/filefuncs.c:806
#, fuzzy
msgid "fts: could not flatten array\n"
msgstr "`%s' no es un nombre de variable legal"
-#: extension/filefuncs.c:711
+#: extension/filefuncs.c:824
msgid "fts: ignoring sneaky FTS_NOSTAT flag. nyah, nyah, nyah."
msgstr ""
-#: extension/filefuncs.c:728
+#: extension/filefuncs.c:841
msgid "fts: clear_array() failed\n"
msgstr ""
-#: extension/fnmatch.c:98
+#: extension/fnmatch.c:112
#, fuzzy
msgid "fnmatch: called with less than three arguments"
msgstr "sqrt: se llamó con el argumento negativo %g"
-#: extension/fnmatch.c:101
+#: extension/fnmatch.c:115
#, fuzzy
msgid "fnmatch: called with more than three arguments"
msgstr "sqrt: se llamó con el argumento negativo %g"
-#: extension/fnmatch.c:104
+#: extension/fnmatch.c:118
#, fuzzy
msgid "fnmatch: could not get first argument"
msgstr "strftime: el primer argumento recibido no es una cadena"
-#: extension/fnmatch.c:109
+#: extension/fnmatch.c:123
#, fuzzy
msgid "fnmatch: could not get second argument"
msgstr "index: el segundo argumento recibido no es una cadena"
-#: extension/fnmatch.c:114
+#: extension/fnmatch.c:128
msgid "fnmatch: could not get third argument"
msgstr ""
-#: extension/fnmatch.c:127
+#: extension/fnmatch.c:141
msgid "fnmatch is not implemented on this system\n"
msgstr ""
-#: extension/fnmatch.c:159
+#: extension/fnmatch.c:173
msgid "fnmatch init: could not add FNM_NOMATCH variable"
msgstr ""
-#: extension/fnmatch.c:169
+#: extension/fnmatch.c:183
#, c-format
msgid "fnmatch init: could not set array element %s"
msgstr ""
-#: extension/fnmatch.c:179
+#: extension/fnmatch.c:193
msgid "fnmatch init: could not install FNM array"
msgstr ""
@@ -2235,88 +2254,88 @@ msgstr "sqrt: se llamó con el argumento negativo %g"
msgid "wait: called with too many arguments"
msgstr "sqrt: se llamó con el argumento negativo %g"
-#: extension/inplace.c:110
+#: extension/inplace.c:130
msgid "inplace_begin: in-place editing already active"
msgstr ""
-#: extension/inplace.c:113 extension/inplace.c:187
+#: extension/inplace.c:133 extension/inplace.c:207
#, c-format
msgid "inplace_begin: expects 2 arguments but called with %d"
msgstr ""
-#: extension/inplace.c:116
+#: extension/inplace.c:136
msgid "inplace_begin: cannot retrieve 1st argument as a string filename"
msgstr ""
-#: extension/inplace.c:124
+#: extension/inplace.c:144
#, c-format
msgid "inplace_begin: disabling in-place editing for invalid FILENAME `%s'"
msgstr ""
-#: extension/inplace.c:131
+#: extension/inplace.c:151
#, fuzzy, c-format
msgid "inplace_begin: Cannot stat `%s' (%s)"
msgstr "fatal: extension: no se puede abrir `%s' (%s)\n"
-#: extension/inplace.c:138
+#: extension/inplace.c:158
#, fuzzy, c-format
msgid "inplace_begin: `%s' is not a regular file"
msgstr "`%s' no es un nombre de variable legal"
-#: extension/inplace.c:149
+#: extension/inplace.c:169
#, c-format
msgid "inplace_begin: mkstemp(`%s') failed (%s)"
msgstr ""
-#: extension/inplace.c:158
+#: extension/inplace.c:178
#, fuzzy, c-format
msgid "inplace_begin: chmod failed (%s)"
msgstr "%s: falló close (%s)"
-#: extension/inplace.c:165
+#: extension/inplace.c:185
#, c-format
msgid "inplace_begin: dup(stdout) failed (%s)"
msgstr ""
-#: extension/inplace.c:168
+#: extension/inplace.c:188
#, c-format
msgid "inplace_begin: dup2(%d, stdout) failed (%s)"
msgstr ""
-#: extension/inplace.c:171
+#: extension/inplace.c:191
#, fuzzy, c-format
msgid "inplace_begin: close(%d) failed (%s)"
msgstr "%s: falló close (%s)"
-#: extension/inplace.c:190
+#: extension/inplace.c:210
msgid "inplace_end: cannot retrieve 1st argument as a string filename"
msgstr ""
-#: extension/inplace.c:197
+#: extension/inplace.c:217
msgid "inplace_end: in-place editing not active"
msgstr ""
-#: extension/inplace.c:203
+#: extension/inplace.c:223
#, c-format
msgid "inplace_end: dup2(%d, stdout) failed (%s)"
msgstr ""
-#: extension/inplace.c:206
+#: extension/inplace.c:226
#, fuzzy, c-format
msgid "inplace_end: close(%d) failed (%s)"
msgstr "%s: falló close (%s)"
-#: extension/inplace.c:210
+#: extension/inplace.c:230
#, c-format
msgid "inplace_end: fsetpos(stdout) failed (%s)"
msgstr ""
-#: extension/inplace.c:223
+#: extension/inplace.c:243
#, fuzzy, c-format
msgid "inplace_end: link(`%s', `%s') failed (%s)"
msgstr "falló la limpieza de la tubería de `%s' (%s)."
-#: extension/inplace.c:229
+#: extension/inplace.c:253
#, fuzzy, c-format
msgid "inplace_end: rename(`%s', `%s') failed (%s)"
msgstr "falló al cerrar el df %d (`%s') (%s)"
@@ -2351,185 +2370,185 @@ msgstr "sqrt: se llamó con el argumento negativo %g"
msgid "chr: called with inappropriate argument(s)"
msgstr "sqrt: se llamó con el argumento negativo %g"
-#: extension/readdir.c:203
+#: extension/readdir.c:281
#, c-format
msgid "dir_take_control_of: opendir/fdopendir failed: %s"
msgstr ""
-#: extension/readfile.c:84
+#: extension/readfile.c:113
#, fuzzy
msgid "readfile: called with too many arguments"
msgstr "sqrt: se llamó con el argumento negativo %g"
-#: extension/readfile.c:118
+#: extension/readfile.c:137
#, fuzzy
msgid "readfile: called with no arguments"
msgstr "sqrt: se llamó con el argumento negativo %g"
-#: extension/rwarray.c:120
+#: extension/rwarray.c:124
#, fuzzy
msgid "writea: called with too many arguments"
msgstr "sqrt: se llamó con el argumento negativo %g"
-#: extension/rwarray.c:127
+#: extension/rwarray.c:131
#, fuzzy, c-format
msgid "do_writea: argument 0 is not a string\n"
msgstr "exp: el argumento %g está fuera de rango"
-#: extension/rwarray.c:133
+#: extension/rwarray.c:137
#, fuzzy, c-format
msgid "do_writea: argument 1 is not an array\n"
msgstr "split: el cuarto argumento no es una matriz"
-#: extension/rwarray.c:180
+#: extension/rwarray.c:184
#, c-format
msgid "write_array: could not flatten array\n"
msgstr ""
-#: extension/rwarray.c:194
+#: extension/rwarray.c:198
#, c-format
msgid "write_array: could not release flattened array\n"
msgstr ""
-#: extension/rwarray.c:276
+#: extension/rwarray.c:280
#, fuzzy
msgid "reada: called with too many arguments"
msgstr "sqrt: se llamó con el argumento negativo %g"
-#: extension/rwarray.c:283
+#: extension/rwarray.c:287
#, fuzzy, c-format
msgid "do_reada: argument 0 is not a string\n"
msgstr "exp: el argumento %g está fuera de rango"
-#: extension/rwarray.c:289
+#: extension/rwarray.c:293
#, fuzzy, c-format
msgid "do_reada: argument 1 is not an array\n"
msgstr "match: el tercer argumento no es una matriz"
-#: extension/rwarray.c:333
+#: extension/rwarray.c:337
#, c-format
msgid "do_reada: clear_array failed\n"
msgstr ""
-#: extension/rwarray.c:370
+#: extension/rwarray.c:374
#, c-format
msgid "read_array: set_array_element failed\n"
msgstr ""
-#: extension/time.c:81
+#: extension/time.c:113
#, fuzzy
msgid "gettimeofday: ignoring arguments"
msgstr "mktime: se recibió un argumento que no es una cadena"
-#: extension/time.c:112
+#: extension/time.c:144
msgid "gettimeofday: not supported on this platform"
msgstr ""
-#: extension/time.c:133
+#: extension/time.c:165
#, fuzzy
msgid "sleep: called with too many arguments"
msgstr "sqrt: se llamó con el argumento negativo %g"
-#: extension/time.c:136
+#: extension/time.c:168
#, fuzzy
msgid "sleep: missing required numeric argument"
msgstr "exp: se recibió un argumento que no es númerico"
-#: extension/time.c:142
+#: extension/time.c:174
#, fuzzy
msgid "sleep: argument is negative"
msgstr "exp: el argumento %g está fuera de rango"
-#: extension/time.c:176
+#: extension/time.c:208
msgid "sleep: not supported on this platform"
msgstr ""
-#: field.c:339
+#: field.c:345
msgid "NF set to negative value"
msgstr "se definió NF con un valor negativo"
-#: field.c:964 field.c:971 field.c:975
+#: field.c:971 field.c:978 field.c:982
msgid "split: fourth argument is a gawk extension"
msgstr "split: el cuarto argumento es una extensión de gawk"
-#: field.c:968
+#: field.c:975
msgid "split: fourth argument is not an array"
msgstr "split: el cuarto argumento no es una matriz"
-#: field.c:982
+#: field.c:989
msgid "split: second argument is not an array"
msgstr "split: el segundo argumento no es una matriz"
-#: field.c:986
+#: field.c:993
msgid "split: cannot use the same array for second and fourth args"
msgstr ""
"split: no se puede usar la misma matriz para el segundo y cuarto argumentos"
-#: field.c:991
+#: field.c:998
msgid "split: cannot use a subarray of second arg for fourth arg"
msgstr ""
"split: no se puede usar una submatriz del segundo argumento para el cuarto "
"argumento"
-#: field.c:994
+#: field.c:1001
msgid "split: cannot use a subarray of fourth arg for second arg"
msgstr ""
"split: no se puede usar una submatriz del cuarto argumento para el segundo "
"argumento"
-#: field.c:1023
+#: field.c:1032
msgid "split: null string for third arg is a gawk extension"
msgstr ""
"split: la cadena nula para el tercer argumento es una extensión de gawk"
-#: field.c:1063
+#: field.c:1072
msgid "patsplit: fourth argument is not an array"
msgstr "patsplit: el cuarto argumento no es una matriz"
-#: field.c:1068
+#: field.c:1077
msgid "patsplit: second argument is not an array"
msgstr "patsplit: el segundo argumento no es una matriz"
-#: field.c:1074
+#: field.c:1083
msgid "patsplit: third argument must be non-null"
msgstr "patsplit: el tercer argumento no debe ser nulo"
-#: field.c:1078
+#: field.c:1087
msgid "patsplit: cannot use the same array for second and fourth args"
msgstr ""
"patsplit: no se puede usar la misma matriz para el segundo y cuarto "
"argumentos"
-#: field.c:1083
+#: field.c:1092
msgid "patsplit: cannot use a subarray of second arg for fourth arg"
msgstr ""
"patsplit: no se puede usar una submatriz del segundo argumento para el "
"cuarto argumento"
-#: field.c:1086
+#: field.c:1095
msgid "patsplit: cannot use a subarray of fourth arg for second arg"
msgstr ""
"patsplit: no se puede usar una submatriz del cuarto argumento para el "
"segundo argumento"
-#: field.c:1124
+#: field.c:1133
msgid "`FIELDWIDTHS' is a gawk extension"
msgstr "`FIELDWIDTHS' es una extensión gawk"
-#: field.c:1188
+#: field.c:1197
#, c-format
msgid "invalid FIELDWIDTHS value, near `%s'"
msgstr "valor de FIELDWIDTHS inválido, cerca de `%s'"
-#: field.c:1261
+#: field.c:1270
msgid "null string for `FS' is a gawk extension"
msgstr "la cadena nula para `FS' es una extensión de gawk"
-#: field.c:1265
+#: field.c:1274
msgid "old awk does not support regexps as value of `FS'"
msgstr "el awk antiguo no admite expresiones regulares como valor de `FS'"
-#: field.c:1384
+#: field.c:1393
msgid "`FPAT' is a gawk extension"
msgstr "`FPAT' es una extensión de gawk"
@@ -2545,602 +2564,602 @@ msgstr ""
msgid "node_to_awk_value: received null val"
msgstr ""
-#: gawkapi.c:808
+#: gawkapi.c:807
#, fuzzy
msgid "remove_element: received null array"
msgstr "length: se recibió un argumento de matriz"
-#: gawkapi.c:811
+#: gawkapi.c:810
msgid "remove_element: received null subscript"
msgstr ""
-#: gawkapi.c:943
+#: gawkapi.c:947
#, c-format
msgid "api_flatten_array: could not convert index %d\n"
msgstr ""
-#: gawkapi.c:948
+#: gawkapi.c:952
#, c-format
msgid "api_flatten_array: could not convert value %d\n"
msgstr ""
-#: getopt.c:603 getopt.c:632
+#: getopt.c:604 getopt.c:633
#, fuzzy, c-format
msgid "%s: option '%s' is ambiguous; possibilities:"
msgstr "%s: la opción '%s' es ambigua\n"
-#: getopt.c:678 getopt.c:682
+#: getopt.c:679 getopt.c:683
#, c-format
msgid "%s: option '--%s' doesn't allow an argument\n"
msgstr "%s: la opción '--%s' no admite ningún argumento\n"
-#: getopt.c:691 getopt.c:696
+#: getopt.c:692 getopt.c:697
#, c-format
msgid "%s: option '%c%s' doesn't allow an argument\n"
msgstr "%s: la opción '%c%s' no admite ningún argumento\n"
-#: getopt.c:739 getopt.c:758
+#: getopt.c:740 getopt.c:759
#, c-format
msgid "%s: option '--%s' requires an argument\n"
msgstr "%s: la opción '--%s' requiere un argumento\n"
-#: getopt.c:796 getopt.c:799
+#: getopt.c:797 getopt.c:800
#, c-format
msgid "%s: unrecognized option '--%s'\n"
msgstr "%s: no se reconoce la opción '--%s'\n"
-#: getopt.c:807 getopt.c:810
+#: getopt.c:808 getopt.c:811
#, c-format
msgid "%s: unrecognized option '%c%s'\n"
msgstr "%s: no se reconoce la opción '%c%s'\n"
-#: getopt.c:859 getopt.c:862
+#: getopt.c:860 getopt.c:863
#, c-format
msgid "%s: invalid option -- '%c'\n"
msgstr "%s: opción inválida -- '%c'\n"
-#: getopt.c:915 getopt.c:932 getopt.c:1142 getopt.c:1160
+#: getopt.c:916 getopt.c:933 getopt.c:1143 getopt.c:1161
#, c-format
msgid "%s: option requires an argument -- '%c'\n"
msgstr "%s: la opción requiere un argumento -- '%c'\n"
-#: getopt.c:988 getopt.c:1004
+#: getopt.c:989 getopt.c:1005
#, c-format
msgid "%s: option '-W %s' is ambiguous\n"
msgstr "%s: la opción '-W %s' es ambigua\n"
-#: getopt.c:1028 getopt.c:1046
+#: getopt.c:1029 getopt.c:1047
#, c-format
msgid "%s: option '-W %s' doesn't allow an argument\n"
msgstr "%s: la opción '-W %s' no admite ningún argumento\n"
-#: getopt.c:1067 getopt.c:1085
+#: getopt.c:1068 getopt.c:1086
#, c-format
msgid "%s: option '-W %s' requires an argument\n"
msgstr "%s: la opción '-W %s' requiere un argumento\n"
-#: io.c:347
+#: io.c:392
#, c-format
msgid "command line argument `%s' is a directory: skipped"
msgstr "el argumento de la línea de órdenes `%s' es un directorio: se salta"
-#: io.c:350 io.c:463
+#: io.c:395 io.c:513
#, c-format
msgid "cannot open file `%s' for reading (%s)"
msgstr "no se puede abrir el fichero `%s' para lectura (%s)"
-#: io.c:590
+#: io.c:640
#, c-format
msgid "close of fd %d (`%s') failed (%s)"
msgstr "falló al cerrar el df %d (`%s') (%s)"
-#: io.c:666
+#: io.c:716
msgid "redirection not allowed in sandbox mode"
msgstr "no se permite la redirección en modo sandbox"
-#: io.c:700
+#: io.c:750
#, c-format
msgid "expression in `%s' redirection only has numeric value"
msgstr "la expresión en la redirección `%s' sólo tiene valor numérico"
-#: io.c:706
+#: io.c:756
#, c-format
msgid "expression for `%s' redirection has null string value"
msgstr "la expresión para la redirección `%s' tiene un valor de cadena nula"
-#: io.c:711
+#: io.c:761
#, c-format
msgid "filename `%s' for `%s' redirection may be result of logical expression"
msgstr ""
"el fichero `%s' para la redirección `%s' puede ser resultado de una "
"expresión lógica"
-#: io.c:754
+#: io.c:809
#, c-format
msgid "unnecessary mixing of `>' and `>>' for file `%.*s'"
msgstr "mezcla innecesaria de `>' y `>>' para el fichero `%.*s'"
-#: io.c:808
+#: io.c:863
#, c-format
msgid "can't open pipe `%s' for output (%s)"
msgstr "no se puede abrir la tubería `%s' para la salida (%s)"
-#: io.c:818
+#: io.c:873
#, c-format
msgid "can't open pipe `%s' for input (%s)"
msgstr "no se puede abrir la tubería `%s' para la entrada (%s)"
-#: io.c:849
+#: io.c:904
#, c-format
msgid "can't open two way pipe `%s' for input/output (%s)"
msgstr "no se puede abrir la tubería de dos vías `%s' para entrada/salida (%s)"
-#: io.c:928
+#: io.c:986
#, c-format
msgid "can't redirect from `%s' (%s)"
msgstr "no se puede redirigir desde `%s' (%s)"
-#: io.c:931
+#: io.c:989
#, c-format
msgid "can't redirect to `%s' (%s)"
msgstr "no se puede redirigir a `%s' (%s)"
-#: io.c:982
+#: io.c:1040
msgid ""
"reached system limit for open files: starting to multiplex file descriptors"
msgstr ""
"se alcanzó el límite del sistema para ficheros abiertos: comenzando a "
"multiplexar los descriptores de fichero"
-#: io.c:998
+#: io.c:1056
#, c-format
msgid "close of `%s' failed (%s)."
msgstr "falló al cerrar `%s' (%s)."
-#: io.c:1006
+#: io.c:1064
msgid "too many pipes or input files open"
msgstr "demasiadas tuberías o ficheros de entrada abiertos"
-#: io.c:1028
+#: io.c:1086
msgid "close: second argument must be `to' or `from'"
msgstr "close: el segundo argumento debe ser `to' o `from'"
-#: io.c:1045
+#: io.c:1103
#, c-format
msgid "close: `%.*s' is not an open file, pipe or co-process"
msgstr "close: `%.*s' no es un fichero abierto, tubería o co-proceso"
-#: io.c:1050
+#: io.c:1108
msgid "close of redirection that was never opened"
msgstr "se cerró una redirección que nunca se abrió"
-#: io.c:1147
+#: io.c:1205
#, c-format
msgid "close: redirection `%s' not opened with `|&', second argument ignored"
msgstr ""
"close: la redirección `%s' no se abrió con `|&', se descarta el segundo "
"argumento"
-#: io.c:1164
+#: io.c:1222
#, c-format
msgid "failure status (%d) on pipe close of `%s' (%s)"
msgstr "estado de fallo (%d) al cerrar la tubería de `%s' (%s)"
-#: io.c:1167
+#: io.c:1225
#, c-format
msgid "failure status (%d) on file close of `%s' (%s)"
msgstr "estado de fallo (%d) al cerrar el fichero de `%s' (%s)"
-#: io.c:1187
+#: io.c:1245
#, c-format
msgid "no explicit close of socket `%s' provided"
msgstr "no se provee el cerrado explícito del `socket' `%s'"
-#: io.c:1190
+#: io.c:1248
#, c-format
msgid "no explicit close of co-process `%s' provided"
msgstr "no se provee el cerrado explícito del co-proceso `%s'"
-#: io.c:1193
+#: io.c:1251
#, c-format
msgid "no explicit close of pipe `%s' provided"
msgstr "no se provee el cerrado explícito del la tubería `%s'"
-#: io.c:1196
+#: io.c:1254
#, c-format
msgid "no explicit close of file `%s' provided"
msgstr "no se provee el cerrado explícito del fichero `%s'"
-#: io.c:1224 io.c:1279 main.c:842 main.c:879
+#: io.c:1284 io.c:1342 main.c:864 main.c:906
#, c-format
msgid "error writing standard output (%s)"
msgstr "error al escribir en la salida estándar (%s)"
-#: io.c:1228 io.c:1284
+#: io.c:1289 io.c:1348 main.c:866
#, c-format
msgid "error writing standard error (%s)"
msgstr "error al escribir en la salida estándar de error (%s)"
-#: io.c:1236
+#: io.c:1297
#, c-format
msgid "pipe flush of `%s' failed (%s)."
msgstr "falló la limpieza de la tubería de `%s' (%s)."
-#: io.c:1239
+#: io.c:1300
#, c-format
msgid "co-process flush of pipe to `%s' failed (%s)."
msgstr "falló la limpieza del co-proceso de la tubería a `%s' (%s)."
-#: io.c:1242
+#: io.c:1303
#, c-format
msgid "file flush of `%s' failed (%s)."
msgstr "falló la limpieza del fichero de `%s' (%s)."
-#: io.c:1356
+#: io.c:1420
#, c-format
msgid "local port %s invalid in `/inet'"
msgstr "puerto local %s inválido en `/inet'"
-#: io.c:1374
+#: io.c:1438
#, c-format
msgid "remote host and port information (%s, %s) invalid"
msgstr "anfitrión remoto e información de puerto (%s, %s) inválidos"
-#: io.c:1526
+#: io.c:1590
#, c-format
msgid "no (known) protocol supplied in special filename `%s'"
msgstr ""
"no se proporciona algún protocolo (conocido) en el nombre de fichero "
"especial `%s'"
-#: io.c:1540
+#: io.c:1604
#, c-format
msgid "special file name `%s' is incomplete"
msgstr "el nombre de fichero especial `%s' está incompleto"
-#: io.c:1557
+#: io.c:1621
msgid "must supply a remote hostname to `/inet'"
msgstr "se debe proporcionar a `/inet' un nombre de anfitrión remoto"
-#: io.c:1575
+#: io.c:1639
msgid "must supply a remote port to `/inet'"
msgstr "se debe proporcionar a `/inet' un puerto remoto"
-#: io.c:1621
+#: io.c:1685
msgid "TCP/IP communications are not supported"
msgstr "no se admiten las comunicaciones TCP/IP"
-#: io.c:1796
+#: io.c:1867
#, c-format
msgid "could not open `%s', mode `%s'"
msgstr "no se puede abrir `%s', modo `%s'"
-#: io.c:1846
+#: io.c:1917
#, c-format
msgid "close of master pty failed (%s)"
msgstr "falló al cerrar el pty maestro (%s)"
-#: io.c:1848 io.c:2024 io.c:2194
+#: io.c:1919 io.c:2105 io.c:2305
#, c-format
msgid "close of stdout in child failed (%s)"
msgstr "falló al cerrar la salida estándar en el hijo (%s)"
-#: io.c:1851
+#: io.c:1922
#, c-format
msgid "moving slave pty to stdout in child failed (dup: %s)"
msgstr ""
"falló el movimiento del pty esclavo a la salida estándar en el hijo (dup: %s)"
-#: io.c:1853 io.c:2029
+#: io.c:1924 io.c:2110
#, c-format
msgid "close of stdin in child failed (%s)"
msgstr "falló al cerrar la entrada estándar en el hijo (%s)"
-#: io.c:1856
+#: io.c:1927
#, c-format
msgid "moving slave pty to stdin in child failed (dup: %s)"
msgstr ""
"falló el movimiento del pty esclavo a la entrada estándar en el hijo (dup: "
"%s)"
-#: io.c:1858 io.c:1879
+#: io.c:1929 io.c:1951
#, c-format
msgid "close of slave pty failed (%s)"
msgstr "falló al cerrar el pty esclavo (%s)"
-#: io.c:1965 io.c:2027 io.c:2171 io.c:2197
+#: io.c:2040 io.c:2108 io.c:2276 io.c:2308
#, c-format
msgid "moving pipe to stdout in child failed (dup: %s)"
msgstr "falló el movimiento a la salida estándar en el hijo (dup: %s)"
-#: io.c:1972 io.c:2032
+#: io.c:2047 io.c:2113
#, c-format
msgid "moving pipe to stdin in child failed (dup: %s)"
msgstr ""
"falló el movimiento de la tubería a la entrada estándar en el hijo (dup: %s)"
-#: io.c:1992 io.c:2187
+#: io.c:2073 io.c:2298
msgid "restoring stdout in parent process failed\n"
msgstr "falló la restauración de la salida estándar en el proceso padre\n"
-#: io.c:2000
+#: io.c:2081
msgid "restoring stdin in parent process failed\n"
msgstr "falló la restauración de la entrada estándar en el proceso padre\n"
-#: io.c:2035 io.c:2199 io.c:2213
+#: io.c:2116 io.c:2310 io.c:2324
#, c-format
msgid "close of pipe failed (%s)"
msgstr "falló al cerrar la tubería (%s)"
-#: io.c:2089
+#: io.c:2174
msgid "`|&' not supported"
msgstr "no se admite `|&'"
-#: io.c:2156
+#: io.c:2261
#, c-format
msgid "cannot open pipe `%s' (%s)"
msgstr "no se puede abrir la tubería `%s' (%s)"
-#: io.c:2207
+#: io.c:2318
#, c-format
msgid "cannot create child process for `%s' (fork: %s)"
msgstr "no se puede crear el proceso hijo para `%s' (fork: %s)"
-#: io.c:2667
+#: io.c:2790
msgid "register_input_parser: received NULL pointer"
msgstr ""
-#: io.c:2695
+#: io.c:2818
#, c-format
msgid "input parser `%s' conflicts with previously installed input parser `%s'"
msgstr ""
-#: io.c:2702
+#: io.c:2825
#, c-format
msgid "input parser `%s' failed to open `%s'"
msgstr ""
-#: io.c:2722
+#: io.c:2845
msgid "register_output_wrapper: received NULL pointer"
msgstr ""
-#: io.c:2750
+#: io.c:2873
#, c-format
msgid ""
"output wrapper `%s' conflicts with previously installed output wrapper `%s'"
msgstr ""
-#: io.c:2757
+#: io.c:2880
#, c-format
msgid "output wrapper `%s' failed to open `%s'"
msgstr ""
-#: io.c:2778
+#: io.c:2901
msgid "register_output_processor: received NULL pointer"
msgstr ""
-#: io.c:2807
+#: io.c:2930
#, c-format
msgid ""
"two-way processor `%s' conflicts with previously installed two-way processor "
"`%s'"
msgstr ""
-#: io.c:2816
+#: io.c:2939
#, c-format
msgid "two way processor `%s' failed to open `%s'"
msgstr ""
-#: io.c:2923
+#: io.c:3064
#, c-format
msgid "data file `%s' is empty"
msgstr "el fichero de datos `%s' está vacío"
-#: io.c:2965 io.c:2973
+#: io.c:3106 io.c:3114
msgid "could not allocate more input memory"
msgstr "no se puede reservar más memoria de entrada"
-#: io.c:3539
+#: io.c:3682
msgid "multicharacter value of `RS' is a gawk extension"
msgstr "el valor multicaracter de `RS' es una extensión de gawk"
-#: io.c:3628
+#: io.c:3771
msgid "IPv6 communication is not supported"
msgstr "no se admite la comunicación IPv6"
-#: main.c:388
+#: main.c:405
msgid "empty argument to `-e/--source' ignored"
msgstr "se descarta el argumento vacío para `-e/--source'"
-#: main.c:478
+#: main.c:495
#, c-format
msgid "%s: option `-W %s' unrecognized, ignored\n"
msgstr "%s: no se reconoce la opción `-W %s', se descarta\n"
-#: main.c:524
+#: main.c:541
#, c-format
msgid "%s: option requires an argument -- %c\n"
msgstr "%s: la opción requiere un argumento -- %c\n"
-#: main.c:545
+#: main.c:562
msgid "environment variable `POSIXLY_CORRECT' set: turning on `--posix'"
msgstr ""
"la variable de ambiente `POSIXLY_CORRECT' está definida: se activa `--posix'"
-#: main.c:551
+#: main.c:568
msgid "`--posix' overrides `--traditional'"
msgstr "`--posix' se impone a `--traditional'"
-#: main.c:562
+#: main.c:579
msgid "`--posix'/`--traditional' overrides `--non-decimal-data'"
msgstr "`--posix'/`--traditional' se imponen a `--non-decimal-data'"
-#: main.c:566
+#: main.c:583
#, c-format
msgid "running %s setuid root may be a security problem"
msgstr "ejecutar %s como setuid root puede ser un problema de seguridad"
-#: main.c:571
+#: main.c:588
#, fuzzy
msgid "`--posix' overrides `--characters-as-bytes'"
msgstr "`--posix' se impone a `--binary'"
-#: main.c:630
+#: main.c:647
#, c-format
msgid "can't set binary mode on stdin (%s)"
msgstr "no se puede establecer el modo binario en la entrada estándar (%s)"
-#: main.c:633
+#: main.c:650
#, c-format
msgid "can't set binary mode on stdout (%s)"
msgstr "no se puede establecer el modo binario en la salida estándar (%s)"
-#: main.c:635
+#: main.c:652
#, c-format
msgid "can't set binary mode on stderr (%s)"
msgstr ""
"no se puede establecer el modo binario en la salida estándar de error (%s)"
-#: main.c:693
+#: main.c:710
msgid "no program text at all!"
msgstr "¡No hay ningún programa de texto!"
-#: main.c:779
+#: main.c:799
#, c-format
msgid "Usage: %s [POSIX or GNU style options] -f progfile [--] file ...\n"
msgstr ""
"Modo de empleo: %s [opciones estilo POSIX o GNU] -f fichprog [--] "
"fichero ...\n"
-#: main.c:781
+#: main.c:801
#, c-format
msgid "Usage: %s [POSIX or GNU style options] [--] %cprogram%c file ...\n"
msgstr ""
"Modo de empleo: %s [opciones estilo POSIX o GNU] [--] %cprograma%c "
"fichero ...\n"
-#: main.c:786
+#: main.c:806
msgid "POSIX options:\t\tGNU long options: (standard)\n"
msgstr "Opciones POSIX:\t\tOpciones largas GNU: (estándar)\n"
-#: main.c:787
+#: main.c:807
msgid "\t-f progfile\t\t--file=progfile\n"
msgstr "\t-f fichprog\t\t--file=fichprog\n"
-#: main.c:788
+#: main.c:808
msgid "\t-F fs\t\t\t--field-separator=fs\n"
msgstr "\t-F sc\t\t\t--field-separator=sc\n"
-#: main.c:789
+#: main.c:809
msgid "\t-v var=val\t\t--assign=var=val\n"
msgstr "\t-v var=valor\t\t--assign=var=valor\n"
-#: main.c:790
+#: main.c:810
msgid "Short options:\t\tGNU long options: (extensions)\n"
msgstr "Opciones cortas:\t\tOpciones largas GNU: (extensiones)\n"
-#: main.c:791
+#: main.c:811
msgid "\t-b\t\t\t--characters-as-bytes\n"
msgstr "\t-b\t\t\t--characters-as-bytes\n"
-#: main.c:792
+#: main.c:812
msgid "\t-c\t\t\t--traditional\n"
msgstr "\t-c\t\t\t--traditional\n"
-#: main.c:793
+#: main.c:813
msgid "\t-C\t\t\t--copyright\n"
msgstr "\t-C\t\t\t--copyright\n"
-#: main.c:794
+#: main.c:814
msgid "\t-d[file]\t\t--dump-variables[=file]\n"
msgstr "\t-d[fichero]\t\t--dump-variables[=fichero]\n"
-#: main.c:795
+#: main.c:815
#, fuzzy
msgid "\t-D[file]\t\t--debug[=file]\n"
msgstr "\t-p[fichero]\t\t--profile[=fichero]\n"
# Esta es la línea más larga de la lista de argumentos.
# Probar con gawk para revisar tabuladores. cfuga
-#: main.c:796
+#: main.c:816
msgid "\t-e 'program-text'\t--source='program-text'\n"
msgstr "\t-e 'texto-prog'\t--source='texto-prog'\n"
-#: main.c:797
+#: main.c:817
msgid "\t-E file\t\t\t--exec=file\n"
msgstr "\t-E fichero\t\t--exec=fichero\n"
-#: main.c:798
+#: main.c:818
msgid "\t-g\t\t\t--gen-pot\n"
msgstr "\t-g\t\t\t--gen-pot\n"
-#: main.c:799
+#: main.c:819
msgid "\t-h\t\t\t--help\n"
msgstr "\t-h\t\t\t--help\n"
-#: main.c:800
+#: main.c:820
msgid "\t-i includefile\t\t--include=includefile\n"
msgstr ""
-#: main.c:801
+#: main.c:821
msgid "\t-l library\t\t--load=library\n"
msgstr ""
-#: main.c:802
+#: main.c:822
msgid "\t-L [fatal]\t\t--lint[=fatal]\n"
msgstr "\t-L [fatal]\t\t--lint[=fatal]\n"
-#: main.c:803
+#: main.c:823
msgid "\t-n\t\t\t--non-decimal-data\n"
msgstr "\t-n\t\t\t--non-decimal-data\n"
-#: main.c:804
+#: main.c:824
#, fuzzy
msgid "\t-M\t\t\t--bignum\n"
msgstr "\t-g\t\t\t--gen-pot\n"
-#: main.c:805
+#: main.c:825
msgid "\t-N\t\t\t--use-lc-numeric\n"
msgstr "\t-N\t\t\t--use-lc-numeric\n"
-#: main.c:806
+#: main.c:826
#, fuzzy
msgid "\t-o[file]\t\t--pretty-print[=file]\n"
msgstr "\t-p[fichero]\t\t--profile[=fichero]\n"
-#: main.c:807
+#: main.c:827
msgid "\t-O\t\t\t--optimize\n"
msgstr "\t-O\t\t\t--optimize\n"
-#: main.c:808
+#: main.c:828
msgid "\t-p[file]\t\t--profile[=file]\n"
msgstr "\t-p[fichero]\t\t--profile[=fichero]\n"
-#: main.c:809
+#: main.c:829
msgid "\t-P\t\t\t--posix\n"
msgstr "\t-P\t\t\t--posix\n"
-#: main.c:810
+#: main.c:830
msgid "\t-r\t\t\t--re-interval\n"
msgstr "\t-r\t\t\t--re-interval\n"
-#: main.c:811
+#: main.c:831
msgid "\t-S\t\t\t--sandbox\n"
msgstr "\t-S\t\t\t--sandbox\n"
-#: main.c:812
+#: main.c:832
msgid "\t-t\t\t\t--lint-old\n"
msgstr "\t-t\t\t\t--lint-old\n"
-#: main.c:813
+#: main.c:833
msgid "\t-V\t\t\t--version\n"
msgstr "\t-V\t\t\t--version\n"
-#: main.c:815
+#: main.c:835
msgid "\t-W nostalgia\t\t--nostalgia\n"
msgstr "\t-W nostalgia\t\t--nostalgia\n"
-#: main.c:818
+#: main.c:838
msgid "\t-Y\t\t--parsedebug\n"
msgstr "\t-Y\t\t--parsedebug\n"
@@ -3149,7 +3168,7 @@ msgstr "\t-Y\t\t--parsedebug\n"
#. for this application. Please add _another line_ with the
#. address for translation bugs.
#. no-wrap
-#: main.c:827
+#: main.c:847
msgid ""
"\n"
"To report bugs, see node `Bugs' in `gawk.info', which is\n"
@@ -3163,7 +3182,7 @@ msgstr ""
"Reporte los errores de los mensajes en español a <es@li.org>.\n"
"\n"
-#: main.c:831
+#: main.c:851
msgid ""
"gawk is a pattern scanning and processing language.\n"
"By default it reads standard input and writes standard output.\n"
@@ -3173,7 +3192,7 @@ msgstr ""
"Por defecto lee la entrada estándar y escribe en la salida estándar.\n"
"\n"
-#: main.c:835
+#: main.c:855
msgid ""
"Examples:\n"
"\tgawk '{ sum += $1 }; END { print sum }' file\n"
@@ -3183,7 +3202,7 @@ msgstr ""
"\tgawk '{ sum += $1 }; END { print sum }' fichero\n"
"\tgawk -F: '{ print $1 }' /etc/passwd\n"
-#: main.c:855
+#: main.c:880
#, c-format
msgid ""
"Copyright (C) 1989, 1991-%d Free Software Foundation.\n"
@@ -3203,7 +3222,7 @@ msgstr ""
"(a su elección) cualquier versión posterior.\n"
"\n"
-#: main.c:863
+#: main.c:888
msgid ""
"This program is distributed in the hope that it will be useful,\n"
"but WITHOUT ANY WARRANTY; without even the implied warranty of\n"
@@ -3217,7 +3236,7 @@ msgstr ""
"Licencia Pública General de GNU para más detalles.\n"
"\n"
-#: main.c:869
+#: main.c:894
msgid ""
"You should have received a copy of the GNU General Public License\n"
"along with this program. If not, see http://www.gnu.org/licenses/.\n"
@@ -3226,16 +3245,16 @@ msgstr ""
"junto con este programa. Si no es así, consulte\n"
"http://www.gnu.org/licenses/.\n"
-#: main.c:904
+#: main.c:931
msgid "-Ft does not set FS to tab in POSIX awk"
msgstr "-Ft no establece FS a tabulador en el awk de POSIX"
-#: main.c:1181
+#: main.c:1208
#, c-format
msgid "unknown value for field spec: %d\n"
msgstr "valor desconocido para la especificación de campo: %d\n"
-#: main.c:1279
+#: main.c:1306
#, c-format
msgid ""
"%s: `%s' argument to `-v' not in `var=value' form\n"
@@ -3244,49 +3263,49 @@ msgstr ""
"%s: el argumento `%s' para `-v' no es de la forma `var=valor'\n"
"\n"
-#: main.c:1305
+#: main.c:1332
#, c-format
msgid "`%s' is not a legal variable name"
msgstr "`%s' no es un nombre de variable legal"
-#: main.c:1308
+#: main.c:1335
#, c-format
msgid "`%s' is not a variable name, looking for file `%s=%s'"
msgstr "`%s' no es un nombre de variable, se busca el fichero `%s=%s'"
-#: main.c:1312
+#: main.c:1339
#, c-format
msgid "cannot use gawk builtin `%s' as variable name"
msgstr ""
"no se puede utilizar la orden interna de gawk `%s' como nombre de variable"
-#: main.c:1317
+#: main.c:1344
#, c-format
msgid "cannot use function `%s' as variable name"
msgstr "no se puede usar la función `%s' como nombre de variable"
-#: main.c:1370
+#: main.c:1397
msgid "floating point exception"
msgstr "excepción de coma flotante"
-#: main.c:1377
+#: main.c:1404
msgid "fatal error: internal error"
msgstr "error fatal: error interno"
-#: main.c:1392
+#: main.c:1419
msgid "fatal error: internal error: segfault"
msgstr "error fatal: error interno: falla de segmentación"
-#: main.c:1404
+#: main.c:1431
msgid "fatal error: internal error: stack overflow"
msgstr "error fatal: error interno: desbordamiento de pila"
-#: main.c:1463
+#: main.c:1490
#, c-format
msgid "no pre-opened fd %d"
msgstr "no existe el df %d abierto previamente"
-#: main.c:1470
+#: main.c:1497
#, c-format
msgid "could not pre-open /dev/null for fd %d"
msgstr "no se puede abrir previamente /dev/null para el df %d"
@@ -3345,7 +3364,7 @@ msgstr "or(%lf, %lf): los valores fraccionarios serán truncados"
msgid "%s: argument #%d negative value %Zd will give strange results"
msgstr "compl(%lf): el valor negativo dará resultados extraños"
-#: msg.c:61
+#: msg.c:68
#, c-format
msgid "cmd. line:"
msgstr "línea ord.:"
@@ -3400,16 +3419,16 @@ msgstr ""
msgid "%s %s `%s': could not set close-on-exec: (fcntl F_SETFD: %s)"
msgstr "%s %s `%s': no se puede establecer close-on-exec: (fcntl F_SETFD: %s)"
-#: profile.c:70
+#: profile.c:71
#, c-format
msgid "could not open `%s' for writing: %s"
msgstr "no se puede abrir `%s' para escritura: %s"
-#: profile.c:72
+#: profile.c:73
msgid "sending profile to standard error"
msgstr "se envía el perfil a la salida estándar de error"
-#: profile.c:188
+#: profile.c:193
#, c-format
msgid ""
"\t# %s block(s)\n"
@@ -3418,7 +3437,7 @@ msgstr ""
"\t# bloque(s) %s\n"
"\n"
-#: profile.c:193
+#: profile.c:198
#, c-format
msgid ""
"\t# Rule(s)\n"
@@ -3427,29 +3446,29 @@ msgstr ""
"\t# Regla(s)\n"
"\n"
-#: profile.c:267
+#: profile.c:272
#, c-format
msgid "internal error: %s with null vname"
msgstr "error interno: %s con vname nulo"
-#: profile.c:530
+#: profile.c:537
#, fuzzy
msgid "internal error: builtin with null fname"
msgstr "error interno: %s con vname nulo"
-#: profile.c:942
+#: profile.c:949
#, c-format
msgid ""
"\t# Loaded extensions (-l and/or @load)\n"
"\n"
msgstr ""
-#: profile.c:965
+#: profile.c:972
#, c-format
msgid "\t# gawk profile, created %s\n"
msgstr "\t# perfil de gawk, creado %s\n"
-#: profile.c:1351
+#: profile.c:1475
#, c-format
msgid ""
"\n"
@@ -3458,17 +3477,12 @@ msgstr ""
"\n"
"\t# Funciones, enumeradas alfabéticamente\n"
-#: profile.c:1389
+#: profile.c:1513
#, c-format
msgid "redir2str: unknown redirection type %d"
msgstr "redir2str: tipo de redirección %d desconocida"
-#: re.c:583
-#, c-format
-msgid "range of the form `[%c-%c]' is locale dependent"
-msgstr "el rango de la forma `[%c-%c]' depende del local"
-
-#: re.c:610
+#: re.c:607
#, c-format
msgid "regexp component `%.*s' should probably be `[%.*s]'"
msgstr ""
@@ -3538,10 +3552,13 @@ msgstr ") o \\) desemparejados"
msgid "No previous regular expression"
msgstr "No hay una expresión regular previa"
-#: symbol.c:740
+#: symbol.c:741
msgid "can not pop main context"
msgstr ""
+#~ msgid "range of the form `[%c-%c]' is locale dependent"
+#~ msgstr "el rango de la forma `[%c-%c]' depende del local"
+
#, fuzzy
#~ msgid "[s]printf called with no arguments"
#~ msgstr "sqrt: se llamó con el argumento negativo %g"
diff --git a/po/fi.gmo b/po/fi.gmo
index 18411e5b..478aa070 100644
--- a/po/fi.gmo
+++ b/po/fi.gmo
Binary files differ
diff --git a/po/fi.po b/po/fi.po
index 37607553..49014233 100644
--- a/po/fi.po
+++ b/po/fi.po
@@ -1,14 +1,14 @@
# Finnish messages for gawk.
-# Copyright © 2010, 2011, 2012 Free Software Foundation, Inc.
+# Copyright © 2010, 2011, 2012, 2013, 2014 Free Software Foundation, Inc.
# This file is distributed under the same license as the gawk package.
-# Jorma Karvonen <karvonen.jorma@gmail.com>, 2010-2012.
+# Jorma Karvonen <karvonen.jorma@gmail.com>, 2010-2014.
#
msgid ""
msgstr ""
-"Project-Id-Version: gawk 4.0.0h\n"
+"Project-Id-Version: gawk 4.1.0b\n"
"Report-Msgid-Bugs-To: arnold@skeeve.com\n"
-"POT-Creation-Date: 2013-05-09 16:05+0300\n"
-"PO-Revision-Date: 2012-03-13 18:00+0200\n"
+"POT-Creation-Date: 2014-04-08 19:23+0300\n"
+"PO-Revision-Date: 2014-01-16 13:32+0200\n"
"Last-Translator: Jorma Karvonen <karvonen.jorma@gmail.com>\n"
"Language-Team: Finnish <translation-team-fi@lists.sourceforge.net>\n"
"Language: fi\n"
@@ -16,94 +16,94 @@ msgstr ""
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+"X-Generator: Poedit 1.5.4\n"
-#: array.c:254
+#: array.c:256
#, c-format
msgid "from %s"
msgstr "taulukosta %s"
-#: array.c:354
+#: array.c:357
msgid "attempt to use a scalar value as array"
msgstr "yritettiin käyttää skalaariarvoa taulukkona"
-#: array.c:356
+#: array.c:359
#, c-format
msgid "attempt to use scalar parameter `%s' as an array"
msgstr "yritettiin käyttää skalaariparametria â€%s†taulukkona"
-#: array.c:359
+#: array.c:362
#, c-format
msgid "attempt to use scalar `%s' as an array"
msgstr "yritettiin käyttää skalaaria â€%s†taulukkona"
-#: array.c:406 array.c:573 builtin.c:85 builtin.c:1591 builtin.c:1637
-#: builtin.c:1650 builtin.c:2078 builtin.c:2092 eval.c:1121 eval.c:1125
-#: eval.c:1524
+#: array.c:409 array.c:576 builtin.c:85 builtin.c:1615 builtin.c:1661
+#: builtin.c:1674 builtin.c:2102 builtin.c:2116 eval.c:1122 eval.c:1126
+#: eval.c:1531
#, c-format
msgid "attempt to use array `%s' in a scalar context"
msgstr "yritettiin käyttää taulukkoa â€%s†skalaarikontekstissa"
-#: array.c:580
+#: array.c:583
#, c-format
msgid "delete: index `%s' not in array `%s'"
msgstr "delete: indeksi â€%s†ei ole taulukossa â€%sâ€"
-#: array.c:594
+#: array.c:597
#, c-format
msgid "attempt to use scalar `%s[\"%.*s\"]' as an array"
msgstr "yritettiin käyttää skalaaria â€%s[\"%.*s\"]†taulukkona"
-#: array.c:773
-#, fuzzy
+#: array.c:776
msgid "adump: first argument not an array"
-msgstr "adump: argumentti ei ole taulukko"
+msgstr "adump: ensimmäinen argumentti ei ole taulukko"
-#: array.c:812
+#: array.c:815
msgid "asort: second argument not an array"
msgstr "asort: toinen argumentti ei ole taulukko"
-#: array.c:813
+#: array.c:816
msgid "asorti: second argument not an array"
msgstr "asorti: toinen argumentti ei ole taulukko"
-#: array.c:820
+#: array.c:823
msgid "asort: first argument not an array"
msgstr "asort: ensimmäinen argumentti ei ole taulukko"
-#: array.c:821
+#: array.c:824
msgid "asorti: first argument not an array"
msgstr "asorti: ensimmäinen argumentti ei ole taulukko"
-#: array.c:828
+#: array.c:831
msgid "asort: cannot use a subarray of first arg for second arg"
msgstr ""
-"asort: ei voida käyttää ensimmäisen argumentin alitaulukkoa toiselle "
-"argumentille"
+"asort: ensimmäisen argumentin alitaulukon käyttö toiselle argumentille "
+"epäonnistui"
-#: array.c:829
+#: array.c:832
msgid "asorti: cannot use a subarray of first arg for second arg"
msgstr ""
-"asorti: ei voida käyttää ensimmäisen argumentin alitaulukkoa toiselle "
-"argumentille"
+"asorti: ensimmäisen argumentin alitaulukon käyttö toiselle argumentille "
+"epäonnistui"
-#: array.c:834
+#: array.c:837
msgid "asort: cannot use a subarray of second arg for first arg"
msgstr ""
-"asort: ei voida käyttää toisen argumentin alitaulukkoa ensimmäiselle "
-"argumentille"
+"asort: toisen argumentin alitaulukon käyttö ensimmäiselle argumentille "
+"epäonnistui"
-#: array.c:835
+#: array.c:838
msgid "asorti: cannot use a subarray of second arg for first arg"
msgstr ""
-"asorti: ei voida käyttää toisen argumentin alitaulukkoa ensimmäiselle "
-"argumentille"
+"asorti: toisen argumentin alitaulukon käyttö ensimmäiselle argumentille "
+"epäonnistui"
-#: array.c:1309
+#: array.c:1314
#, c-format
msgid "`%s' is invalid as a function name"
msgstr "â€%s†on virheellinen funktionimenä"
-#: array.c:1313
+#: array.c:1318
#, c-format
msgid "sort comparison function `%s' is not defined"
msgstr "lajitteluvertailufunktiota â€%s†ei ole määritelty"
@@ -146,11 +146,11 @@ msgstr "kaksi samanlaista case-arvoa switch-rakenteen rungossa: %s"
msgid "duplicate `default' detected in switch body"
msgstr "kaksoiskappale â€default†havaittu switch-rungossa"
-#: awkgram.y:796 awkgram.y:3699
+#: awkgram.y:796 awkgram.y:3723
msgid "`break' is not allowed outside a loop or switch"
msgstr "â€break†ei ole sallittu silmukan tai switch-lauseen ulkopuolella"
-#: awkgram.y:805 awkgram.y:3691
+#: awkgram.y:805 awkgram.y:3715
msgid "`continue' is not allowed outside a loop"
msgstr "â€continue†ei ole sallittu silmukan ulkopuolella"
@@ -175,11 +175,11 @@ msgstr ""
#: awkgram.y:988 awkgram.y:1037
msgid "`delete' is not allowed with SYMTAB"
-msgstr ""
+msgstr "â€delete†ei ole sallittu kohteessa SYMTAB"
#: awkgram.y:990 awkgram.y:1039
msgid "`delete' is not allowed with FUNCTAB"
-msgstr ""
+msgstr "â€delete†ei ole sallittu kohteessa FUNCTAB"
#: awkgram.y:1024 awkgram.y:1028
msgid "`delete(array)' is a non-portable tawk extension"
@@ -234,274 +234,272 @@ msgstr "epäsuorat funktiokutsut ovat gawk-laajennus"
#: awkgram.y:1620
#, c-format
msgid "can not use special variable `%s' for indirect function call"
-msgstr "ei voi käyttää erikoismuuttujaa â€%s†epäsuoralle funktiokutsulle"
+msgstr "erikoismuuttujan â€%s†käyttö epäsuoralle funktiokutsulle epäonnistui"
#: awkgram.y:1698
msgid "invalid subscript expression"
msgstr "virheellinen indeksointilauseke"
-#: awkgram.y:2024 awkgram.y:2044 gawkapi.c:206 gawkapi.c:224 msg.c:119
+#: awkgram.y:2048 awkgram.y:2068 gawkapi.c:206 gawkapi.c:224 msg.c:126
msgid "warning: "
-msgstr "varoitus:"
+msgstr "varoitus: "
-#: awkgram.y:2042 gawkapi.c:192 gawkapi.c:221 msg.c:151
+#: awkgram.y:2066 gawkapi.c:192 gawkapi.c:221 msg.c:158
msgid "fatal: "
-msgstr "tuhoisa:"
+msgstr "tuhoisa: "
-#: awkgram.y:2092
+#: awkgram.y:2116
msgid "unexpected newline or end of string"
msgstr "odottamaton rivinvaihto tai merkkijonon loppu"
-#: awkgram.y:2359 awkgram.y:2435 awkgram.y:2658 debug.c:517 debug.c:533
-#: debug.c:2792 debug.c:5040
+#: awkgram.y:2383 awkgram.y:2459 awkgram.y:2682 debug.c:523 debug.c:539
+#: debug.c:2812 debug.c:5055
#, c-format
msgid "can't open source file `%s' for reading (%s)"
-msgstr "ei voi avata lähdetiedostoa â€%s†lukemista varten (%s)"
+msgstr "lähdetiedoston â€%s†avaaminen lukemista varten (%s) epäonnistui"
-#: awkgram.y:2360 awkgram.y:2485
-#, fuzzy, c-format
+#: awkgram.y:2384 awkgram.y:2509
+#, c-format
msgid "can't open shared library `%s' for reading (%s)"
-msgstr "ei voi avata lähdetiedostoa â€%s†lukemista varten (%s)"
+msgstr "jaetun kirjaston â€%s†avaaminen lukemista varten (%s) epäonnistui"
-#: awkgram.y:2362 awkgram.y:2436 awkgram.y:2486 builtin.c:130 debug.c:5191
+#: awkgram.y:2386 awkgram.y:2460 awkgram.y:2510 builtin.c:135 debug.c:5206
msgid "reason unknown"
msgstr "syy tuntematon"
-#: awkgram.y:2371 awkgram.y:2395
+#: awkgram.y:2395 awkgram.y:2419
#, c-format
msgid "can't include `%s' and use it as a program file"
-msgstr ""
+msgstr "kohteen â€%s†sisällyttäminen ja käyttö ohjelmatiedostona epäonnistui"
-#: awkgram.y:2384
+#: awkgram.y:2408
#, c-format
msgid "already included source file `%s'"
msgstr "on jo sisällytetty lähdetiedostoon â€%sâ€"
-#: awkgram.y:2385
-#, fuzzy, c-format
+#: awkgram.y:2409
+#, c-format
msgid "already loaded shared library `%s'"
-msgstr "on jo sisällytetty lähdetiedostoon â€%sâ€"
+msgstr "jaettu kirjasto â€%s†on jo ladattu"
-#: awkgram.y:2420
+#: awkgram.y:2444
msgid "@include is a gawk extension"
msgstr "@include on gawk-laajennus"
-#: awkgram.y:2426
+#: awkgram.y:2450
msgid "empty filename after @include"
msgstr "tyhjä tiedostonimi @include:n jälkeen"
-#: awkgram.y:2470
-#, fuzzy
+#: awkgram.y:2494
msgid "@load is a gawk extension"
-msgstr "@include on gawk-laajennus"
+msgstr "@load on gawk-laajennus"
-#: awkgram.y:2476
-#, fuzzy
+#: awkgram.y:2500
msgid "empty filename after @load"
-msgstr "tyhjä tiedostonimi @include:n jälkeen"
+msgstr "tyhjä tiedostonimi @load:n jälkeen"
-#: awkgram.y:2610
+#: awkgram.y:2634
msgid "empty program text on command line"
msgstr "tyhjä ohjelmateksti komentorivillä"
-#: awkgram.y:2725
+#: awkgram.y:2749
#, c-format
msgid "can't read sourcefile `%s' (%s)"
-msgstr "ei voi lukea lähdetiedostoa â€%s†(%s)"
+msgstr "lähdetiedoston â€%s†(%s) lukeminen epäonnistui"
-#: awkgram.y:2736
+#: awkgram.y:2760
#, c-format
msgid "source file `%s' is empty"
msgstr "lähdetiedosto â€%s†on tyhjä"
-#: awkgram.y:2913
+#: awkgram.y:2937
msgid "source file does not end in newline"
msgstr "lähdetiedoston lopussa ei ole rivinvaihtoa"
-#: awkgram.y:3018
+#: awkgram.y:3042
msgid "unterminated regexp ends with `\\' at end of file"
msgstr ""
"päättämätön säännöllinen lauseke loppuu â€\\â€-merkkeihin tiedoston lopussa"
-#: awkgram.y:3042
+#: awkgram.y:3066
#, c-format
msgid "%s: %d: tawk regex modifier `/.../%c' doesn't work in gawk"
msgstr "%s: %d: tawk:n regex-määre â€/.../%c†ei toimi gawk:ssa"
-#: awkgram.y:3046
+#: awkgram.y:3070
#, c-format
msgid "tawk regex modifier `/.../%c' doesn't work in gawk"
msgstr "tawkin regex-määre â€/.../%c†ei toimi gawkissa"
-#: awkgram.y:3053
+#: awkgram.y:3077
msgid "unterminated regexp"
msgstr "päättämätön säännöllinen lauseke"
-#: awkgram.y:3057
+#: awkgram.y:3081
msgid "unterminated regexp at end of file"
msgstr "päättämätön säännöllinen lauseke tiedoston lopussa"
-#: awkgram.y:3116
+#: awkgram.y:3140
msgid "use of `\\ #...' line continuation is not portable"
msgstr "â€\\ #...â€-rivijatkamisen käyttö ei ole siirrettävä"
-#: awkgram.y:3132
+#: awkgram.y:3156
msgid "backslash not last character on line"
msgstr "kenoviiva ei ole rivin viimeinen merkki"
-#: awkgram.y:3193
+#: awkgram.y:3217
msgid "POSIX does not allow operator `**='"
msgstr "POSIX ei salli operaattoria â€**=â€"
-#: awkgram.y:3195
+#: awkgram.y:3219
msgid "old awk does not support operator `**='"
msgstr "vanha awk ei tue operaattoria â€**=â€"
-#: awkgram.y:3204
+#: awkgram.y:3228
msgid "POSIX does not allow operator `**'"
msgstr "POSIX ei salli operaattoria â€**â€"
-#: awkgram.y:3206
+#: awkgram.y:3230
msgid "old awk does not support operator `**'"
msgstr "vanha awk ei tue operaattoria â€**â€"
-#: awkgram.y:3241
+#: awkgram.y:3265
msgid "operator `^=' is not supported in old awk"
msgstr "operaattoria â€^=†ei tueta vanhassa awk:ssa"
-#: awkgram.y:3249
+#: awkgram.y:3273
msgid "operator `^' is not supported in old awk"
msgstr "operaattoria â€^†ei tueta vanhassa awk:ssa"
-#: awkgram.y:3342 awkgram.y:3358 command.y:1178
+#: awkgram.y:3366 awkgram.y:3382 command.y:1178
msgid "unterminated string"
msgstr "päättämätön merkkijono"
-#: awkgram.y:3579
+#: awkgram.y:3603
#, c-format
msgid "invalid char '%c' in expression"
msgstr "virheellinen merkki ’%c’ lausekkeessa"
-#: awkgram.y:3626
+#: awkgram.y:3650
#, c-format
msgid "`%s' is a gawk extension"
msgstr "â€%s†on gawk-laajennus"
-#: awkgram.y:3631
+#: awkgram.y:3655
#, c-format
msgid "POSIX does not allow `%s'"
-msgstr "POSIX ei salli operaattori â€%sâ€"
+msgstr "POSIX ei salli operaattoria â€%sâ€"
-#: awkgram.y:3639
+#: awkgram.y:3663
#, c-format
msgid "`%s' is not supported in old awk"
msgstr "â€%s†ei ole tuettu vanhassa awk-ohjelmassa"
-#: awkgram.y:3729
+#: awkgram.y:3753
msgid "`goto' considered harmful!\n"
msgstr "â€gotoâ€-käskyä pidetään haitallisena!\n"
-#: awkgram.y:3763
+#: awkgram.y:3787
#, c-format
msgid "%d is invalid as number of arguments for %s"
msgstr "%d on virheellinen argumenttilukumäärä operaattorille %s"
-#: awkgram.y:3798
+#: awkgram.y:3822
#, c-format
msgid "%s: string literal as last arg of substitute has no effect"
msgstr ""
"%s: merkkijonoliteraalilla ei ole vaikutusta korvauksen viimeisenä "
"argumenttina"
-#: awkgram.y:3803
+#: awkgram.y:3827
#, c-format
msgid "%s third parameter is not a changeable object"
msgstr "%s kolmas parametri ei ole vaihdettava objekti"
-#: awkgram.y:3886 awkgram.y:3889
+#: awkgram.y:3910 awkgram.y:3913
msgid "match: third argument is a gawk extension"
msgstr "match: kolmas argumentti on gawk-laajennus"
-#: awkgram.y:3943 awkgram.y:3946
+#: awkgram.y:3967 awkgram.y:3970
msgid "close: second argument is a gawk extension"
msgstr "close: toinen argumentti on gawk-laajennus"
-#: awkgram.y:3958
+#: awkgram.y:3982
msgid "use of dcgettext(_\"...\") is incorrect: remove leading underscore"
msgstr "dcgettext(_\"...\")-käyttö on virheellinen: poista alaviiva alusta"
-#: awkgram.y:3973
+#: awkgram.y:3997
msgid "use of dcngettext(_\"...\") is incorrect: remove leading underscore"
msgstr "dcngettext(_\"...\")-käyttö on virheellinen: poista alaviiva alusta"
-#: awkgram.y:3992
-#, fuzzy
+#: awkgram.y:4016
msgid "index: regexp constant as second argument is not allowed"
-msgstr "index: toinen vastaanotettu argumentti ei ole merkkijono"
+msgstr "index: regexp-vakio toisena argumenttina ei ole sallittu"
-#: awkgram.y:4045
+#: awkgram.y:4069
#, c-format
msgid "function `%s': parameter `%s' shadows global variable"
msgstr "funktio â€%sâ€: parametri â€%s†varjostaa yleismuuttujaa"
-#: awkgram.y:4102 debug.c:4021 debug.c:4064 debug.c:5189
+#: awkgram.y:4126 debug.c:4041 debug.c:4084 debug.c:5204
#, c-format
msgid "could not open `%s' for writing (%s)"
-msgstr "ei voitu avata tiedostoa â€%s†kirjoittamista varten (%s)"
+msgstr "tiedoston â€%s†avaaminen kirjoittamista varten (%s) epäonnistui"
-#: awkgram.y:4103
+#: awkgram.y:4127
msgid "sending variable list to standard error"
msgstr "lähetetään muuttujaluettelo vakiovirheeseen"
-#: awkgram.y:4111
+#: awkgram.y:4135
#, c-format
msgid "%s: close failed (%s)"
msgstr "%s: sulkeminen epäonnistui (%s)"
-#: awkgram.y:4136
+#: awkgram.y:4160
msgid "shadow_funcs() called twice!"
msgstr "shadow_funcs() kutsuttu kahdesti!"
-#: awkgram.y:4144
+#: awkgram.y:4168
msgid "there were shadowed variables."
msgstr "siellä oli varjostettuja muuttujia."
-#: awkgram.y:4215
+#: awkgram.y:4239
#, c-format
msgid "function name `%s' previously defined"
msgstr "funktionimi â€%s†on jo aikaisemmin määritelty"
-#: awkgram.y:4261
+#: awkgram.y:4285
#, c-format
msgid "function `%s': can't use function name as parameter name"
-msgstr "funktio â€%sâ€: ei voi käyttää funktionimeä parametrinimenä"
+msgstr "funktio â€%sâ€: funktionimen käyttö parametrinimenä epäonnistui"
-#: awkgram.y:4264
+#: awkgram.y:4288
#, c-format
msgid "function `%s': can't use special variable `%s' as a function parameter"
-msgstr "funktio â€%sâ€: ei voi käyttää erikoismuuttujaa â€%s†funktioparametrina"
+msgstr ""
+"funktio â€%sâ€: erikoismuuttujan â€%s†käyttö funktioparametrina epäonnistui"
-#: awkgram.y:4272
+#: awkgram.y:4296
#, c-format
msgid "function `%s': parameter #%d, `%s', duplicates parameter #%d"
msgstr "funktio â€%sâ€: parametri #%d, â€%sâ€, samanlainen parametri #%d"
-#: awkgram.y:4366 awkgram.y:4372
+#: awkgram.y:4383 awkgram.y:4389
#, c-format
msgid "function `%s' called but never defined"
msgstr "funktiota â€%s†kutsuttiin, mutta sitä ei ole koskaan määritelty"
-#: awkgram.y:4376
+#: awkgram.y:4393
#, c-format
msgid "function `%s' defined but never called directly"
msgstr "funktio â€%s†määriteltiin, mutta sitä ei ole koskaan kutsuttu suoraan"
-#: awkgram.y:4408
+#: awkgram.y:4425
#, c-format
msgid "regexp constant for parameter #%d yields boolean value"
msgstr "säännöllisen lausekkeen vakio parametrille #%d antaa boolean-arvon"
-#: awkgram.y:4467
+#: awkgram.y:4484
#, c-format
msgid ""
"function `%s' called with space between name and `(',\n"
@@ -510,240 +508,249 @@ msgstr ""
"funktio â€%s†kutsuttu välilyönnillä nimen ja â€(â€-merkin\n"
"välillä, tai käytetty muuttujana tai taulukkona"
-#: awkgram.y:4703
+#: awkgram.y:4720
msgid "division by zero attempted"
msgstr "nollalla jakoa yritettiin"
-#: awkgram.y:4712
+#: awkgram.y:4729
#, c-format
msgid "division by zero attempted in `%%'"
msgstr "jakoa nollalla yritettiin operaattorissa â€%%â€"
+#: awkgram.y:5049
+msgid ""
+"cannot assign a value to the result of a field post-increment expression"
+msgstr "arvon liittäminen kenttäjälkiaskelkasvatuslausekkeeseen epäonnistui"
+
+#: awkgram.y:5052
+#, c-format
+msgid "invalid target of assignment (opcode %s)"
+msgstr "virheellinen liittämiskohde (käskykoodi %s)"
+
# kohteena voi olla vakiotuloste tai joku muu
-#: builtin.c:128
+#: builtin.c:133
#, c-format
msgid "%s to \"%s\" failed (%s)"
msgstr "%s kohteeseen â€%s†epäonnistui (%s)"
-#: builtin.c:129
+#: builtin.c:134
msgid "standard output"
msgstr "vakiotuloste"
-#: builtin.c:143
+#: builtin.c:148
msgid "exp: received non-numeric argument"
msgstr "exp: vastaanotettu argumentti ei ole numeerinen"
-#: builtin.c:149
+#: builtin.c:154
#, c-format
msgid "exp: argument %g is out of range"
msgstr "exp: argumentti %g on lukualueen ulkopuolella"
-#: builtin.c:224
+#: builtin.c:229
#, c-format
msgid "fflush: cannot flush: pipe `%s' opened for reading, not writing"
msgstr ""
-"fflush: ei voi tyhjentää: putki â€%s†avattu lukemista varten, ei "
+"fflush: tyhjentäminen epäonnistui: putki â€%s†avattu lukemista varten, ei "
"kirjoittamiseen"
-#: builtin.c:227
+#: builtin.c:232
#, c-format
msgid "fflush: cannot flush: file `%s' opened for reading, not writing"
msgstr ""
-"fflush: ei voi tyhjentää: tiedosto â€%s†avattu lukemista varten, ei "
+"fflush: tyhjentäminen epäonnistui: tiedosto â€%s†avattu lukemista varten, ei "
"kirjoittamiseen"
-#: builtin.c:239
+#: builtin.c:244
#, 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:357
+#: builtin.c:362
msgid "index: received non-string first argument"
msgstr "index: ensimmäinen vastaanotettu argumentti ei ole merkkijono"
-#: builtin.c:359
+#: builtin.c:364
msgid "index: received non-string second argument"
msgstr "index: toinen vastaanotettu argumentti ei ole merkkijono"
-#: builtin.c:483 mpfr.c:757
+#: builtin.c:488 mpfr.c:757
msgid "int: received non-numeric argument"
msgstr "int: vastaanotettu argumentti ei ole numeerinen"
-#: builtin.c:520
+#: builtin.c:525
msgid "length: received array argument"
msgstr "length: vastaanotettu taulukkoargumentti"
-#: builtin.c:523
+#: builtin.c:528
msgid "`length(array)' is a gawk extension"
msgstr "â€length(array)†on gawk-laajennus"
-#: builtin.c:539
+#: builtin.c:544
msgid "length: received non-string argument"
msgstr "length: vastaanotettu argumentti ei ole merkkijono"
-#: builtin.c:570
+#: builtin.c:575
msgid "log: received non-numeric argument"
msgstr "log: vastaanotettu argumentti ei ole numeerinen"
-#: builtin.c:573
+#: builtin.c:578
#, c-format
msgid "log: received negative argument %g"
msgstr "log: vastaanotettu negatiivinen argumentti %g"
-#: builtin.c:771 builtin.c:776
+#: builtin.c:776 builtin.c:781
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:846
+#: builtin.c:851
#, c-format
msgid "field width is ignored for `%%' specifier"
msgstr "kenttäleveys ohitetaan â€%%%%â€-määritteelle"
-#: builtin.c:848
+#: builtin.c:853
#, c-format
msgid "precision is ignored for `%%' specifier"
msgstr "tarkkuus ohitetaan â€%%%%â€-määritteelle"
-#: builtin.c:850
+#: builtin.c:855
#, c-format
msgid "field width and precision are ignored for `%%' specifier"
msgstr "kenttäleveys ja tarkkuus ohitetaan â€%%%%â€-määritteelle"
-#: builtin.c:901
+#: builtin.c:906
msgid "fatal: `$' is not permitted in awk formats"
msgstr "kohtalokas: â€$â€-argumentti ei ole sallittu awk-muodoissa"
-#: builtin.c:910
+#: builtin.c:915
msgid "fatal: arg count with `$' must be > 0"
msgstr "kohtalokas: argumenttilukumäärän argumentilla â€$†on oltava > 0"
-#: builtin.c:914
+#: builtin.c:919
#, c-format
msgid "fatal: arg count %ld greater than total number of supplied arguments"
msgstr ""
"kohtalokas: argumenttilukumäärä %ld on suurempi kuin toimitettujen "
"argumenttien lukumäärä"
-#: builtin.c:918
+#: builtin.c:923
msgid "fatal: `$' not permitted after period in format"
msgstr "kohtalokas: â€$â€-argumentti ei ole sallittu pisteen jälkeen muodossa"
-#: builtin.c:934
+#: builtin.c:939
msgid "fatal: no `$' supplied for positional field width or precision"
msgstr ""
"kohtalokas: ei â€$â€-argumenttia tarjottu sijantikenttäleveydelle tai "
"tarkkuudelle"
-#: builtin.c:1006
+#: builtin.c:1009
msgid "`l' is meaningless in awk formats; ignored"
msgstr "â€l†on merkityksetön awk-muodoissa; ohitetaan"
-#: builtin.c:1010
+#: builtin.c:1013
msgid "fatal: `l' is not permitted in POSIX awk formats"
msgstr "kohtalokas: â€l†ei ole sallittu POSIX awk -muodoissa"
-#: builtin.c:1023
+#: builtin.c:1026
msgid "`L' is meaningless in awk formats; ignored"
msgstr "â€L†on merkityksetön awk-muodoissa; ohitetaan"
-#: builtin.c:1027
+#: builtin.c:1030
msgid "fatal: `L' is not permitted in POSIX awk formats"
msgstr "kohtalokas: â€L†ei ole sallittu POSIX awk -muodoissa"
-#: builtin.c:1040
+#: builtin.c:1043
msgid "`h' is meaningless in awk formats; ignored"
msgstr "â€h†on merkityksetön awk-muodoissa; ohitetaan"
-#: builtin.c:1044
+#: builtin.c:1047
msgid "fatal: `h' is not permitted in POSIX awk formats"
msgstr "kohtalokas: â€h†ei ole sallittu POSIX awk -muodoissa"
-#: builtin.c:1439
+#: builtin.c:1463
#, c-format
msgid "[s]printf: value %g is out of range for `%%%c' format"
msgstr "[s]printf: arvo %g on lukualueen ulkopuolella â€%%%câ€-muodolle"
-#: builtin.c:1537
+#: builtin.c:1561
#, c-format
msgid "ignoring unknown format specifier character `%c': no argument converted"
msgstr ""
"ohitetaan tuntematon muotoargumenttimerkki â€%câ€: ei muunnettu argumenttia"
-#: builtin.c:1542
+#: builtin.c:1566
msgid "fatal: not enough arguments to satisfy format string"
msgstr "kohtalokas: ei kylliksi argumentteja muotomerkkijonon tyydyttämiseksi"
-#: builtin.c:1544
+#: builtin.c:1568
msgid "^ ran out for this one"
msgstr "^ tällainen loppui kesken"
-#: builtin.c:1551
+#: builtin.c:1575
msgid "[s]printf: format specifier does not have control letter"
msgstr "[s]printf: muotoargumentilla ei ole ohjauskirjainta"
-#: builtin.c:1554
+#: builtin.c:1578
msgid "too many arguments supplied for format string"
msgstr "muotomerkkijonoon toimitettu liian monta argumenttia"
-#: builtin.c:1610
-#, fuzzy
+#: builtin.c:1634
msgid "sprintf: no arguments"
-msgstr "printf: ei argumentteja"
+msgstr "sprintf: ei argumentteja"
-#: builtin.c:1633 builtin.c:1644
+#: builtin.c:1657 builtin.c:1668
msgid "printf: no arguments"
msgstr "printf: ei argumentteja"
-#: builtin.c:1687
+#: builtin.c:1711
msgid "sqrt: received non-numeric argument"
msgstr "sqrt: vastaanotettu argumentti ei ole numeerinen"
-#: builtin.c:1691
+#: builtin.c:1715
#, c-format
msgid "sqrt: called with negative argument %g"
msgstr "sqrt: kutsuttu negatiivisella argumentilla %g"
-#: builtin.c:1722
+#: builtin.c:1746
#, c-format
msgid "substr: length %g is not >= 1"
msgstr "substr: pituus %g ei ole >= 1"
-#: builtin.c:1724
+#: builtin.c:1748
#, c-format
msgid "substr: length %g is not >= 0"
msgstr "substr: pituus %g ei ole >= 0"
-#: builtin.c:1731
+#: builtin.c:1755
#, c-format
msgid "substr: non-integer length %g will be truncated"
msgstr "substr: typistetään pituus %g, joka ei ole kokonaisluku"
-#: builtin.c:1736
+#: builtin.c:1760
#, c-format
msgid "substr: length %g too big for string indexing, truncating to %g"
msgstr ""
"substr: pituus %g liian suuri merkkijononindeksointiin, typistetään arvoon %g"
-#: builtin.c:1748
+#: builtin.c:1772
#, c-format
msgid "substr: start index %g is invalid, using 1"
msgstr "substr: aloitusindeksi %g on virheellinen, käytetään 1:tä"
-#: builtin.c:1753
+#: builtin.c:1777
#, c-format
msgid "substr: non-integer start index %g will be truncated"
msgstr "substr: typistetään aloitusindeksi %g, joka ei ole kokonaisluku"
-#: builtin.c:1778
+#: builtin.c:1802
msgid "substr: source string is zero length"
msgstr "substr: lähdemerkkijono on nollapituinen"
-#: builtin.c:1794
+#: builtin.c:1818
#, c-format
msgid "substr: start index %g is past end of string"
msgstr "substr: aloitusindeksi %g on merkkijonon lopun jälkeen"
-#: builtin.c:1802
+#: builtin.c:1826
#, c-format
msgid ""
"substr: length %g at start index %g exceeds length of first argument (%lu)"
@@ -751,192 +758,189 @@ msgstr ""
"substr: pituus %g alkuindeksissä %g ylittää ensimmäisen argumentin pituuden "
"(%lu)"
-#: builtin.c:1876
+#: builtin.c:1900
msgid "strftime: format value in PROCINFO[\"strftime\"] has numeric type"
msgstr ""
"strftime: muotoarvolla kohteessa PROCINFO[\"strftime\"] on numerotyyppi"
-#: builtin.c:1899
+#: builtin.c:1923
msgid "strftime: received non-numeric second argument"
msgstr "strftime: toinen vastaanotettu argumentti ei ole numeerinen"
-#: builtin.c:1903
+#: builtin.c:1927
msgid "strftime: second argument less than 0 or too big for time_t"
msgstr ""
"strftime: toinen argumentti on pienempi kuin 0 tai liian suuri time_t-"
"rakenteeseen"
-#: builtin.c:1910
+#: builtin.c:1934
msgid "strftime: received non-string first argument"
msgstr "strftime: ensimmäinen vastaanotettu argumentti ei ole merkkijono"
-#: builtin.c:1917
+#: builtin.c:1941
msgid "strftime: received empty format string"
msgstr "strftime: vastaanotettu tyhjä muotomerkkijono"
-#: builtin.c:1983
+#: builtin.c:2007
msgid "mktime: received non-string argument"
msgstr "mktime: vastaanotettu argumentti ei ole merkkijono"
-#: builtin.c:2000
+#: builtin.c:2024
msgid "mktime: at least one of the values is out of the default range"
msgstr "mktime: vähintään yksi arvoista on oletuslukualueen ulkopuolella"
-#: builtin.c:2035
+#: builtin.c:2059
msgid "'system' function not allowed in sandbox mode"
-msgstr "â€systemâ€-funktio ei ole sallittu hiekkalaatikkotilassa"
+msgstr "’system’-funktio ei ole sallittu hiekkalaatikkotilassa"
-#: builtin.c:2040
+#: builtin.c:2064
msgid "system: received non-string argument"
msgstr "system: vastaanotettu argumentti ei ole merkkijono"
-#: builtin.c:2160
+#: builtin.c:2184
#, c-format
msgid "reference to uninitialized field `$%d'"
msgstr "viite alustamattomaan kenttään â€$%dâ€"
-#: builtin.c:2247
+#: builtin.c:2271
msgid "tolower: received non-string argument"
msgstr "tolower: vastaanotettu argumentti ei ole merkkijono"
-#: builtin.c:2281
+#: builtin.c:2305
msgid "toupper: received non-string argument"
msgstr "toupper: vastaanotettu argumentti ei ole merkkijono"
-#: builtin.c:2317 mpfr.c:672
+#: builtin.c:2341 mpfr.c:672
msgid "atan2: received non-numeric first argument"
msgstr "atan2: ensimmäinen vastaanotettu argumentti ei ole numeerinen"
-#: builtin.c:2319 mpfr.c:674
+#: builtin.c:2343 mpfr.c:674
msgid "atan2: received non-numeric second argument"
msgstr "atan2: toinen vastaanotettu argumentti ei ole numeerinen"
-#: builtin.c:2338
+#: builtin.c:2362
msgid "sin: received non-numeric argument"
msgstr "sin: vastaanotettu argumentti ei ole numeerinen"
-#: builtin.c:2354
+#: builtin.c:2378
msgid "cos: received non-numeric argument"
msgstr "cos: vastaanotettu argumentti ei ole numeerinen"
-#: builtin.c:2407 mpfr.c:1156
+#: builtin.c:2431 mpfr.c:1156
msgid "srand: received non-numeric argument"
msgstr "srand: vastaanotettu argumentti ei ole numeerinen"
-#: builtin.c:2438
+#: builtin.c:2462
msgid "match: third argument is not an array"
msgstr "match: kolmas argumentti ei ole taulukko"
-#: builtin.c:2710
+#: builtin.c:2734
msgid "gensub: third argument of 0 treated as 1"
msgstr "gensub: 0-arvoinen kolmas argumentti käsitellään kuin 1"
-#: builtin.c:3003
+#: builtin.c:3030
msgid "lshift: received non-numeric first argument"
msgstr "lshift: ensimmäinen vastaanotettu argumentti ei ole numeerinen"
-#: builtin.c:3005
+#: builtin.c:3032
msgid "lshift: received non-numeric second argument"
msgstr "lshift: toinen vastaanotettu argumentti ei ole numeerinen"
-#: builtin.c:3011
-#, fuzzy, c-format
+#: builtin.c:3038
+#, c-format
msgid "lshift(%f, %f): negative values will give strange results"
-msgstr "lshift(%lf, %lf): negatiiviset arvot antavat outoja tuloksia"
+msgstr "lshift(%f, %f): negatiiviset arvot antavat outoja tuloksia"
-#: builtin.c:3013
-#, fuzzy, c-format
+#: builtin.c:3040
+#, c-format
msgid "lshift(%f, %f): fractional values will be truncated"
-msgstr "lshift(%lf, %lf): jaosarvot typistetään"
+msgstr "lshift(%f, %f): jaosarvot typistetään"
-#: builtin.c:3015
-#, fuzzy, c-format
+#: builtin.c:3042
+#, c-format
msgid "lshift(%f, %f): too large shift value will give strange results"
-msgstr "lshift(%lf, %lf): liian suuri siirrosarvo antaa outoja tuloksia"
+msgstr "lshift(%f, %f): liian suuri siirrosarvo antaa outoja tuloksia"
-#: builtin.c:3040
+#: builtin.c:3067
msgid "rshift: received non-numeric first argument"
msgstr "rshift: ensimmäinen vastaanotettu argumentti ei ole numeerinen"
-#: builtin.c:3042
+#: builtin.c:3069
msgid "rshift: received non-numeric second argument"
msgstr "rshift: toinen vastaanotettu argumentti ei ole numeerinen"
-#: builtin.c:3048
-#, fuzzy, c-format
+#: builtin.c:3075
+#, c-format
msgid "rshift(%f, %f): negative values will give strange results"
-msgstr "rshift(%lf, %lf): negatiiviset arvot antavat outoja tuloksia"
+msgstr "rshift(%f, %f): negatiiviset arvot antavat outoja tuloksia"
-#: builtin.c:3050
-#, fuzzy, c-format
+#: builtin.c:3077
+#, c-format
msgid "rshift(%f, %f): fractional values will be truncated"
-msgstr "rshift(%lf, %lf): jaosarvot typistetään"
+msgstr "rshift(%f, %f): jaosarvot typistetään"
-#: builtin.c:3052
-#, fuzzy, c-format
+#: builtin.c:3079
+#, c-format
msgid "rshift(%f, %f): too large shift value will give strange results"
-msgstr "rshift(%lf, %lf): liian suuri siirrosarvo antaa outoja tuloksia"
+msgstr "rshift(%f, %f): liian suuri siirrosarvo antaa outoja tuloksia"
-#: builtin.c:3077 mpfr.c:968
-#, fuzzy
+#: builtin.c:3104 mpfr.c:968
msgid "and: called with less than two arguments"
-msgstr "sqrt: kutsuttu negatiivisella argumentilla %g"
+msgstr "and: kutsuttu vähemmällä kuin kahdella argumentilla"
-#: builtin.c:3082
-#, fuzzy, c-format
+#: builtin.c:3109
+#, c-format
msgid "and: argument %d is non-numeric"
-msgstr "exp: argumentti %g on lukualueen ulkopuolella"
+msgstr "and: argumentti %d ei ole numeeraaliargumentti"
-#: builtin.c:3086
-#, fuzzy, c-format
+#: builtin.c:3113
+#, c-format
msgid "and: argument %d negative value %g will give strange results"
-msgstr "and(%lf, %lf): negatiiviset arvot antavat outoja tuloksia"
+msgstr "and: argumentin %d negatiivinen arvo %g antaa outoja tuloksia"
-#: builtin.c:3109 mpfr.c:1000
-#, fuzzy
+#: builtin.c:3136 mpfr.c:1000
msgid "or: called with less than two arguments"
-msgstr "sqrt: kutsuttu negatiivisella argumentilla %g"
+msgstr "or: kutsuttu vähemmällä kuin kahdella argumentilla"
-#: builtin.c:3114
-#, fuzzy, c-format
+#: builtin.c:3141
+#, c-format
msgid "or: argument %d is non-numeric"
-msgstr "exp: argumentti %g on lukualueen ulkopuolella"
+msgstr "or: argumentti %d ei ole numeraaliargumentti"
-#: builtin.c:3118
-#, fuzzy, c-format
+#: builtin.c:3145
+#, c-format
msgid "or: argument %d negative value %g will give strange results"
-msgstr "compl(%lf): negatiiviset arvot antavat outoja tuloksia"
+msgstr "or: argumentin %d negatiivinen arvo %g antaa outoja tuloksia"
-#: builtin.c:3140 mpfr.c:1031
-#, fuzzy
+#: builtin.c:3167 mpfr.c:1031
msgid "xor: called with less than two arguments"
-msgstr "sqrt: kutsuttu negatiivisella argumentilla %g"
+msgstr "xor: kutsuttu vähemmällä kuin kahdella argumentilla"
-#: builtin.c:3146
-#, fuzzy, c-format
+#: builtin.c:3173
+#, c-format
msgid "xor: argument %d is non-numeric"
-msgstr "exp: argumentti %g on lukualueen ulkopuolella"
+msgstr "xor: argumentti %d ei ole numeraaliargumentti"
-#: builtin.c:3150
-#, fuzzy, c-format
+#: builtin.c:3177
+#, c-format
msgid "xor: argument %d negative value %g will give strange results"
-msgstr "xor(%lf, %lf): negatiiviset arvot antavat outoja tuloksia"
+msgstr "xor: argumentin %d negatiivinen arvo %g antaa outoja tuloksia"
-#: builtin.c:3175 mpfr.c:787
+#: builtin.c:3202 mpfr.c:787
msgid "compl: received non-numeric argument"
msgstr "compl: vastaanotettu argumentti ei ole numeerinen"
-#: builtin.c:3181
-#, fuzzy, c-format
+#: builtin.c:3208
+#, c-format
msgid "compl(%f): negative value will give strange results"
-msgstr "compl(%lf): negatiiviset arvot antavat outoja tuloksia"
+msgstr "compl(%f): negatiivinen arvo antaa outoja tuloksia"
-#: builtin.c:3183
-#, fuzzy, c-format
+#: builtin.c:3210
+#, c-format
msgid "compl(%f): fractional value will be truncated"
-msgstr "compl(%lf): jaosarvo typistetään"
+msgstr "compl(%f): jaosarvo typistetään"
-#: builtin.c:3352
+#: builtin.c:3379
#, c-format
msgid "dcgettext: `%s' is not a valid locale category"
msgstr "dcgettext: â€%s†ei ole kelvollinen paikallinen kategoria"
@@ -944,873 +948,916 @@ msgstr "dcgettext: â€%s†ei ole kelvollinen paikallinen kategoria"
#: command.y:225
#, c-format
msgid "Type (g)awk statement(s). End with the command \"end\"\n"
-msgstr ""
+msgstr "Kirjoita (g)awk-lause(et). Lopeta komennolla \"end\"\n"
#: command.y:289
-#, fuzzy, c-format
+#, c-format
msgid "invalid frame number: %d"
-msgstr "Virheellinen lukualueen loppu"
+msgstr "virheellinen kehysnumero: %d"
#: command.y:295
-#, fuzzy, c-format
+#, c-format
msgid "info: invalid option - \"%s\""
-msgstr "%s: virheellinen valitsin -- ’%c’\n"
+msgstr "info: virheellinen valitsin -- â€%sâ€"
#: command.y:321
#, c-format
msgid "source \"%s\": already sourced."
-msgstr ""
+msgstr "source â€%sâ€: on jo merkitty lähteeksi."
#: command.y:326
#, c-format
msgid "save \"%s\": command not permitted."
-msgstr ""
+msgstr "save â€%sâ€: komento ei ole sallittu."
#: command.y:339
msgid "Can't use command `commands' for breakpoint/watchpoint commands"
msgstr ""
+"Komennon â€commands†käyttö breakpoint/watchpoint-komentoja varten epäonnistui"
#: command.y:341
msgid "no breakpoint/watchpoint has been set yet"
-msgstr ""
+msgstr "yhtään breakpoint/watchpoint -kohdetta ei ole vielä asetettu"
#: command.y:343
msgid "invalid breakpoint/watchpoint number"
-msgstr ""
+msgstr "virheellinen breakpoint/watchpoint-numero"
#: command.y:348
#, c-format
msgid "Type commands for when %s %d is hit, one per line.\n"
-msgstr ""
+msgstr "Kirjoita komennot, kun %s %d osui, yksi per rivi.\n"
#: command.y:350
#, c-format
msgid "End with the command \"end\"\n"
-msgstr ""
+msgstr "Lopeta komennolla â€endâ€\n"
#: command.y:357
msgid "`end' valid only in command `commands' or `eval'"
-msgstr ""
+msgstr "â€end†on kelvollinen vain komennoissa â€commands†tai â€evalâ€"
#: command.y:367
msgid "`silent' valid only in command `commands'"
-msgstr ""
+msgstr "â€silent†on kelvollinen vain komennossa â€commandsâ€"
#: command.y:373
-#, fuzzy, c-format
+#, c-format
msgid "trace: invalid option - \"%s\""
-msgstr "%s: virheellinen valitsin -- ’%c’\n"
+msgstr "trace: virheellinen valitsin -- â€%sâ€"
#: command.y:387
msgid "condition: invalid breakpoint/watchpoint number"
-msgstr ""
+msgstr "condition: virheellinen breakpoint/watchpoint-numero"
#: command.y:449
-#, fuzzy
msgid "argument not a string"
-msgstr "exp: argumentti %g on lukualueen ulkopuolella"
+msgstr "argumentti ei ole merkkijono"
#: command.y:459 command.y:464
#, c-format
msgid "option: invalid parameter - \"%s\""
-msgstr ""
+msgstr "option: virheellinen parametri - â€%sâ€"
#: command.y:474
#, c-format
msgid "no such function - \"%s\""
-msgstr ""
+msgstr "tuntematon funktio - â€%sâ€"
#: command.y:531
-#, fuzzy, c-format
+#, c-format
msgid "enable: invalid option - \"%s\""
-msgstr "%s: virheellinen valitsin -- ’%c’\n"
+msgstr "enable: virheellinen valitsin -- â€%sâ€"
#: command.y:597
-#, fuzzy, c-format
+#, c-format
msgid "invalid range specification: %d - %d"
-msgstr "Virheellinen lukualueen loppu"
+msgstr "virheellinen lukualuemäärittely: %d - %d"
#: command.y:659
-#, fuzzy
msgid "non-numeric value for field number"
-msgstr "tuntematon arvo kenttämääritteelle: %d\n"
+msgstr "ei-numeerinen arvo kenttänumerolle"
#: command.y:680 command.y:687
msgid "non-numeric value found, numeric expected"
-msgstr ""
+msgstr "löytyi ei-numeerinen arvo, odotettiin numeraalia"
#: command.y:712 command.y:718
msgid "non-zero integer value"
-msgstr ""
+msgstr "nollasta poikkeava kokonaislukuarvo"
#: command.y:817
msgid ""
"backtrace [N] - print trace of all or N innermost (outermost if N < 0) "
"frames."
msgstr ""
+"backtrace [N] - tulosta kaikkien tai N:n sisimmäisen (ulommaisin, jos N < 0) "
+"kehyksen jäljet."
#: command.y:819
msgid ""
"break [[filename:]N|function] - set breakpoint at the specified location."
msgstr ""
+"break [[filename:]N|function] - aseta breakpoint määriteltyyn sijaintiin."
#: command.y:821
msgid "clear [[filename:]N|function] - delete breakpoints previously set."
msgstr ""
+"clear [[filename:]N|function] - poista aiemmin asetetut breakpoint-kohdat."
#: command.y:823
msgid ""
-"commands [num] - starts a list of commands to be executed at a breakpoint"
-"(watchpoint) hit."
+"commands [num] - starts a list of commands to be executed at a "
+"breakpoint(watchpoint) hit."
msgstr ""
+"commands [num] - aloittaa komentojen luettelon, joka suoritetaan "
+"keskeytyskohta(watchpoint)osumassa."
#: command.y:825
msgid "condition num [expr] - set or clear breakpoint or watchpoint condition."
msgstr ""
+"condition num [expr] - aseta tai nollaa keskeytyskohta- tai vahtikohtaehdot."
#: command.y:827
msgid "continue [COUNT] - continue program being debugged."
-msgstr ""
+msgstr "continue [COUNT] - continue program being debugged."
#: command.y:829
msgid "delete [breakpoints] [range] - delete specified breakpoints."
msgstr ""
+"delete [keskeytyskohdat] [lukualue] - poista määritellyt keskeytyskohdat."
#: command.y:831
msgid "disable [breakpoints] [range] - disable specified breakpoints."
msgstr ""
+"disable [keskeytyskohdat] [lukualue] - ota pois käytöstä määritellyt "
+"keskeytyskohdat."
#: command.y:833
msgid "display [var] - print value of variable each time the program stops."
msgstr ""
+"display [muuttuja] - tulosta muuttujan arvo joka kerta kun ohjelma pysähtyy."
#: command.y:835
msgid "down [N] - move N frames down the stack."
-msgstr ""
+msgstr "down [N] - siirrä N kehystä alaspäin pinossa."
#: command.y:837
msgid "dump [filename] - dump instructions to file or stdout."
-msgstr ""
+msgstr "dump [tiedostonimi] - vedosta käskyt tiedostoon tai vakiotulosteeseen."
#: command.y:839
msgid "enable [once|del] [breakpoints] [range] - enable specified breakpoints."
msgstr ""
+"enable [once|del] [keskeytyskohdat] [lukualue] - ota käyttöön määritellyt "
+"keskeytyskohdat."
#: command.y:841
msgid "end - end a list of commands or awk statements."
-msgstr ""
+msgstr "end - lopeta komentojen tai awk-lauseiden luottelo."
#: command.y:843
msgid "eval stmt|[p1, p2, ...] - evaluate awk statement(s)."
-msgstr ""
+msgstr "eval stmt|[p1, p2, ...] - evaloi awk-lauseet."
#: command.y:845
msgid "finish - execute until selected stack frame returns."
-msgstr ""
+msgstr "finish - suorita kunnes palautetaan valittu pinokehys."
#: command.y:847
msgid "frame [N] - select and print stack frame number N."
-msgstr ""
+msgstr "frame [N] - valitse ja tulosta pinokehys numero N."
#: command.y:849
msgid "help [command] - print list of commands or explanation of command."
-msgstr ""
+msgstr "help [komento] - tulosta komentoluettelo tai komennon selitys."
#: command.y:851
msgid "ignore N COUNT - set ignore-count of breakpoint number N to COUNT."
msgstr ""
+"ignore N COUNT - aseta keskeytyskohdan ignore-count numero N arvoon COUNT."
#: command.y:853
msgid ""
"info topic - source|sources|variables|functions|break|frame|args|locals|"
"display|watch."
msgstr ""
+"info aihe - source|sources|variables|functions|break|frame|args|locals|"
+"display|watch."
#: command.y:855
msgid "list [-|+|[filename:]lineno|function|range] - list specified line(s)."
msgstr ""
+"list [-|+|[tiedostonimi:]rivinumero|funktio|lukualue] - luettele määritellyt "
+"rivit."
#: command.y:857
msgid "next [COUNT] - step program, proceeding through subroutine calls."
-msgstr ""
+msgstr "next [COUNT] - askella ohjelmaa, etene alirutiinikutsujen kautta."
#: command.y:859
msgid ""
"nexti [COUNT] - step one instruction, but proceed through subroutine calls."
msgstr ""
+"nexti [COUNT] - askella yksi käsky, mutta etene alirutiinikutsujen kautta."
#: command.y:861
msgid "option [name[=value]] - set or display debugger option(s)."
-msgstr ""
+msgstr "option [nimi[=arvo]] - aseta tai näytä vianjäljittäjävalitsimet."
#: command.y:863
msgid "print var [var] - print value of a variable or array."
-msgstr ""
+msgstr "print var [muuttuja] - tulosta muutujan tai taulukon arvo."
#: command.y:865
msgid "printf format, [arg], ... - formatted output."
-msgstr ""
+msgstr "printf muoto, [argumentti], ... - muotoiltu tuloste."
#: command.y:867
msgid "quit - exit debugger."
-msgstr ""
+msgstr "quit - poistu vianjäljittäjästä."
#: command.y:869
msgid "return [value] - make selected stack frame return to its caller."
-msgstr ""
+msgstr "return [arvo] - tekee valitun pinokehyksen paluun sen kutsujalle."
#: command.y:871
msgid "run - start or restart executing program."
-msgstr ""
+msgstr "run - käynnistä tai uudelleenkäynnistä ohjelman suoritus."
#: command.y:874
msgid "save filename - save commands from the session to file."
-msgstr ""
+msgstr "save tiedostonimi - tallenna komennot istunnosta tiedostoon."
#: command.y:877
msgid "set var = value - assign value to a scalar variable."
-msgstr ""
+msgstr "set var = arvo - liitä arvo skalaarimuuttujaan."
#: command.y:879
msgid ""
"silent - suspends usual message when stopped at a breakpoint/watchpoint."
msgstr ""
+"silent - pysäyttää tavallisen viestin kun pysähdytään katkaisukohdassa/"
+"vahtipisteessä."
#: command.y:881
msgid "source file - execute commands from file."
-msgstr ""
+msgstr "source file - suorita komennot tiedostosta."
#: command.y:883
msgid "step [COUNT] - step program until it reaches a different source line."
msgstr ""
+"step [COUNT] - askella ohjelmaa, kunnes se saavuttaa eri lähdekoodirivin."
#: command.y:885
msgid "stepi [COUNT] - step one instruction exactly."
-msgstr ""
+msgstr "stepi [COUNT] - askella tarkalleen yksi käsky."
#: command.y:887
msgid "tbreak [[filename:]N|function] - set a temporary breakpoint."
-msgstr ""
+msgstr "tbreak [[tiedostonimi:]N|funktio] - aseta tilapäinen keskeytyskohta."
#: command.y:889
msgid "trace on|off - print instruction before executing."
-msgstr ""
+msgstr "trace on|off - tulosta käsky ennen suoritusta."
#: command.y:891
msgid "undisplay [N] - remove variable(s) from automatic display list."
-msgstr ""
+msgstr "undisplay [N] - poista muuttuja(t) automaattisesta näyttöluettelosta."
#: command.y:893
msgid ""
"until [[filename:]N|function] - execute until program reaches a different "
"line or line N within current frame."
msgstr ""
+"until [[tiedostonimi:]N|funktio] - suorita kunnes ohjelma tavoittaa eri "
+"rivin tai rivin N nykyisen kehyksen sisällä."
#: command.y:895
msgid "unwatch [N] - remove variable(s) from watch list."
-msgstr ""
+msgstr "unwatch [N] - poista muuttuja(t) vahtiluettelosta."
#: command.y:897
msgid "up [N] - move N frames up the stack."
-msgstr ""
+msgstr "up [N] - siirrä N kehystä ylöspäin pinossa."
#: command.y:899
msgid "watch var - set a watchpoint for a variable."
-msgstr ""
+msgstr "watch muuttuja - aseta vahtikohta muuttujalle."
-#: command.y:1011 debug.c:395 msg.c:128
+#: command.y:1011 debug.c:401 msg.c:135
#, c-format
msgid "error: "
-msgstr "virhe:"
+msgstr "virhe: "
#: command.y:1051
-#, fuzzy, c-format
+#, c-format
msgid "can't read command (%s)\n"
-msgstr "ei voi uudelleenohjata putkesta â€%s†(%s)"
+msgstr "komennon (%s) lukeminen epäonnistui\n"
#: command.y:1065
-#, fuzzy, c-format
+#, c-format
msgid "can't read command (%s)"
-msgstr "ei voi uudelleenohjata putkesta â€%s†(%s)"
+msgstr "komennon (%s) lukeminen epäonnistui"
#: command.y:1116
-#, fuzzy
msgid "invalid character in command"
-msgstr "Virheellinen merkkiluokkanimi"
+msgstr "virheellinen merkki komennossa"
#: command.y:1152
#, c-format
msgid "unknown command - \"%.*s\", try help"
-msgstr ""
+msgstr "tuntematon komento - \"%.*s\", kokeile käskyä help"
#: command.y:1222
#, c-format
msgid "%s"
-msgstr ""
+msgstr "%s"
#: command.y:1284
-#, fuzzy
msgid "invalid character"
-msgstr "Virheellinen vertailumerkki"
+msgstr "virheellinen merkki"
#: command.y:1455
#, c-format
msgid "undefined command: %s\n"
-msgstr ""
+msgstr "määrittelemätön komento: %s\n"
-#: debug.c:246
+#: debug.c:252
msgid "set or show the number of lines to keep in history file."
-msgstr ""
+msgstr "aseta tai näytä historiatiedostossa säilytettävien rivien lukumäärä."
-#: debug.c:248
+#: debug.c:254
msgid "set or show the list command window size."
-msgstr ""
+msgstr "aseta tai näytä luettelokomentoikkunan koko."
-#: debug.c:250
+#: debug.c:256
msgid "set or show gawk output file."
-msgstr ""
+msgstr "aseta tai näytä gawk-tulostetiedosto."
-#: debug.c:252
+#: debug.c:258
msgid "set or show debugger prompt."
-msgstr ""
+msgstr "aseta tai näytä vianjäljittäjäkehote."
-#: debug.c:254
+#: debug.c:260
msgid "(un)set or show saving of command history (value=on|off)."
msgstr ""
+"aseta, poista asetus tai näytä komentohistoriatallennus (value=on|off)."
-#: debug.c:256
+#: debug.c:262
msgid "(un)set or show saving of options (value=on|off)."
-msgstr ""
+msgstr "aseta, poista asetus tai näytä valitsintallennus (value=on|off)."
-#: debug.c:258
+#: debug.c:264
msgid "(un)set or show instruction tracing (value=on|off)."
-msgstr ""
+msgstr "aseta, poista asetus tai näytä käskyjäljitys (value=on|off)."
-#: debug.c:339
+#: debug.c:345
msgid "program not running."
-msgstr ""
+msgstr "ohjelma ei ole käynnissä."
-#: debug.c:442 debug.c:597
-#, fuzzy, c-format
+#: debug.c:448 debug.c:606
+#, c-format
msgid "can't read source file `%s' (%s)"
-msgstr "ei voi lukea lähdetiedostoa â€%s†(%s)"
+msgstr "lähdetiedoston â€%s†(%s) lukeminen epäonnistui"
-#: debug.c:447
-#, fuzzy, c-format
+#: debug.c:453
+#, c-format
msgid "source file `%s' is empty.\n"
-msgstr "lähdetiedosto â€%s†on tyhjä"
+msgstr "lähdetiedosto â€%s†on tyhjä.\n"
-#: debug.c:474
+#: debug.c:480
msgid "no current source file."
-msgstr ""
+msgstr "ei nykyistä lähdekooditiedostoa."
-#: debug.c:499
-#, fuzzy, c-format
+#: debug.c:505
+#, c-format
msgid "cannot find source file named `%s' (%s)"
-msgstr "ei voi lukea lähdetiedostoa â€%s†(%s)"
+msgstr "lähdetiedostoa nimeltä â€%s†(%s) ei kyetä lukemaan"
-#: debug.c:523
+#: debug.c:529
#, c-format
msgid "WARNING: source file `%s' modified since program compilation.\n"
msgstr ""
+"VAROITUS: lähdekooditiedostoa â€%s†on muokattu ohjelman kääntämisen "
+"jälkeen.\n"
-#: debug.c:542
+#: debug.c:551
#, c-format
msgid "line number %d out of range; `%s' has %d lines"
-msgstr ""
+msgstr "rivinumero %d lukualueen ulkopuolella; kohteessa â€%s†on %d riviä"
-#: debug.c:602
-#, fuzzy, c-format
+#: debug.c:611
+#, c-format
msgid "unexpected eof while reading file `%s', line %d"
-msgstr "odottamaton rivinvaihto tai merkkijonon loppu"
+msgstr ""
+"odottamaton eof-tiedostonloppumerkki luettaessa tiedostoa â€%sâ€, rivi %d"
-#: debug.c:611
+#: debug.c:620
#, c-format
msgid "source file `%s' modified since start of program execution"
msgstr ""
+"lähdekooditiedostoa â€%s†on muokattu ohjelman suorituksen aloituksen jälkeen"
-#: debug.c:723
-#, fuzzy, c-format
+#: debug.c:732
+#, c-format
msgid "Current source file: %s\n"
-msgstr "on jo sisällytetty lähdetiedostoon â€%sâ€"
+msgstr "Nykyinen lähdetiedosto: %s\n"
-#: debug.c:724
+#: debug.c:733
#, c-format
msgid "Number of lines: %d\n"
-msgstr ""
+msgstr "Rivien lukumäärä: %d\n"
-#: debug.c:731
+#: debug.c:740
#, c-format
msgid "Source file (lines): %s (%d)\n"
-msgstr ""
+msgstr "Lähdetiedosto (riviä): %s (%d)\n"
-#: debug.c:745
+#: debug.c:754
msgid ""
"Number Disp Enabled Location\n"
"\n"
msgstr ""
+"Numero Disp Käytössä Sijainti\n"
+"\n"
-#: debug.c:756
+#: debug.c:765
#, c-format
msgid "\tno of hits = %ld\n"
-msgstr ""
+msgstr "\tosumien lukumäärä = %ld\n"
-#: debug.c:758
+#: debug.c:767
#, c-format
msgid "\tignore next %ld hit(s)\n"
-msgstr ""
+msgstr "\tohita seuraavat %ld osumaa\n"
-#: debug.c:760 debug.c:900
+#: debug.c:769 debug.c:909
#, c-format
msgid "\tstop condition: %s\n"
-msgstr ""
+msgstr "\tpysähtymisehto: %s\n"
-#: debug.c:762 debug.c:902
+#: debug.c:771 debug.c:911
msgid "\tcommands:\n"
-msgstr ""
+msgstr "\tkomennot:\n"
-#: debug.c:784
+#: debug.c:793
#, c-format
msgid "Current frame: "
-msgstr ""
+msgstr "Nykyinen kehys: "
-#: debug.c:787
+#: debug.c:796
#, c-format
msgid "Called by frame: "
-msgstr ""
+msgstr "Kehyksen kutsuma: "
-#: debug.c:791
+#: debug.c:800
#, c-format
msgid "Caller of frame: "
-msgstr ""
+msgstr "Kehyksen kutsuja: "
-#: debug.c:809
+#: debug.c:818
#, c-format
msgid "None in main().\n"
-msgstr ""
+msgstr "Funktiossa main() ei ole mitään.\n"
-#: debug.c:839
-#, fuzzy
+#: debug.c:848
msgid "No arguments.\n"
-msgstr "printf: ei argumentteja"
+msgstr "Ei argumentteja.\n"
-#: debug.c:840
+#: debug.c:849
msgid "No locals.\n"
-msgstr ""
+msgstr "Ei paikallisia muuttujia.\n"
-#: debug.c:848
+#: debug.c:857
msgid ""
"All defined variables:\n"
"\n"
msgstr ""
+"Kaikki määritellyt muuttujat:\n"
+"\n"
-#: debug.c:858
+#: debug.c:867
msgid ""
"All defined functions:\n"
"\n"
msgstr ""
+"Kaikki määritellyt funktiot.\n"
+"\n"
-#: debug.c:877
+#: debug.c:886
msgid ""
"Auto-display variables:\n"
"\n"
msgstr ""
+"Automaattisesti näytettävät muuttujat:\n"
+"\n"
-#: debug.c:880
+#: debug.c:889
msgid ""
"Watch variables:\n"
"\n"
msgstr ""
+"Vahtimuuttujia:\n"
+"\n"
-#: debug.c:1020
-#, fuzzy, c-format
+#: debug.c:1029
+#, c-format
msgid "no symbol `%s' in current context\n"
-msgstr "â€exit†ei voida kutsua nykyisessä asiayhteydessä"
+msgstr "symbolia â€%s†ei löydy nykyisestä asiayhteydestä\n"
-#: debug.c:1032 debug.c:1418
-#, fuzzy, c-format
+#: debug.c:1041 debug.c:1427
+#, c-format
msgid "`%s' is not an array\n"
-msgstr "â€%s†ei ole laillinen muuttujanimi"
+msgstr "â€%s†ei ole taulukko\n"
-#: debug.c:1046
-#, fuzzy, c-format
+#: debug.c:1055
+#, c-format
msgid "$%ld = uninitialized field\n"
-msgstr "viite alustamattomaan kenttään â€$%dâ€"
+msgstr "$%ld = alustamaton kenttä\n"
-#: debug.c:1067
-#, fuzzy, c-format
+#: debug.c:1076
+#, c-format
msgid "array `%s' is empty\n"
-msgstr "data-tiedosto â€%s†on tyhjä"
+msgstr "taulukko â€%s†on tyhjä\n"
-#: debug.c:1110 debug.c:1162
-#, fuzzy, c-format
+#: debug.c:1119 debug.c:1171
+#, c-format
msgid "[\"%s\"] not in array `%s'\n"
-msgstr "delete: indeksi â€%s†ei ole taulukossa â€%sâ€"
+msgstr "[â€%sâ€] ei ole taulukossa â€%sâ€\n"
-#: debug.c:1166
+#: debug.c:1175
#, c-format
msgid "`%s[\"%s\"]' is not an array\n"
-msgstr ""
+msgstr "â€%s[\"%s\"]†ei ole taulukko\n"
-#: debug.c:1227 debug.c:4949
-#, fuzzy, c-format
+#: debug.c:1236 debug.c:4964
+#, c-format
msgid "`%s' is not a scalar variable"
-msgstr "â€%s†ei ole laillinen muuttujanimi"
+msgstr "â€%s†ei ole skalaarimuuttuja"
-#: debug.c:1249 debug.c:4979
-#, fuzzy, c-format
+#: debug.c:1258 debug.c:4994
+#, c-format
msgid "attempt to use array `%s[\"%s\"]' in a scalar context"
-msgstr "yritettiin käyttää taulukkoa â€%s[\"%.*s\"]†skalaarikontekstissa"
+msgstr "yritettiin käyttää taulukkoa â€%s[\"%s\"]†skalaarikontekstissa"
-#: debug.c:1271 debug.c:4990
-#, fuzzy, c-format
+#: debug.c:1280 debug.c:5005
+#, c-format
msgid "attempt to use scalar `%s[\"%s\"]' as array"
-msgstr "yritettiin käyttää skalaaria â€%s[\"%.*s\"]†taulukkona"
+msgstr "yritettiin käyttää skalaaria â€%s[\"%s\"]†taulukkona"
-#: debug.c:1414
-#, fuzzy, c-format
+#: debug.c:1423
+#, c-format
msgid "`%s' is a function"
-msgstr "â€%s†on virheellinen funktionimenä"
+msgstr "â€%s†on funktio"
-#: debug.c:1456
+#: debug.c:1465
#, c-format
msgid "watchpoint %d is unconditional\n"
-msgstr ""
+msgstr "watchpoint %d ei ole ehdollinen\n"
-#: debug.c:1490
+#: debug.c:1499
#, c-format
msgid "No display item numbered %ld"
-msgstr ""
+msgstr "Yksikään näyttörivi ei ole numeroitu %ld"
-#: debug.c:1493
+#: debug.c:1502
#, c-format
msgid "No watch item numbered %ld"
-msgstr ""
+msgstr "Yksikään vahtirivi ei ole numeroitu %ld"
-#: debug.c:1519
-#, fuzzy, c-format
+#: debug.c:1528
+#, c-format
msgid "%d: [\"%s\"] not in array `%s'\n"
-msgstr "delete: indeksi â€%s†ei ole taulukossa â€%sâ€"
+msgstr "%d: [â€%sâ€] ei ole taulukossa â€%sâ€\n"
-#: debug.c:1758
-#, fuzzy
+#: debug.c:1767
msgid "attempt to use scalar value as array"
msgstr "yritettiin käyttää skalaariarvoa taulukkona"
-#: debug.c:1847
+#: debug.c:1856
#, c-format
msgid "Watchpoint %d deleted because parameter is out of scope.\n"
msgstr ""
+"Watchpoint %d poistettiin, koska parametri on lukualueen ulkopuolella.\n"
-#: debug.c:1858
+#: debug.c:1867
#, c-format
msgid "Display %d deleted because parameter is out of scope.\n"
-msgstr ""
+msgstr "Display %d poistettiin, koska parametri on lukualueen ulkopuolella.\n"
-#: debug.c:1891
+#: debug.c:1900
#, c-format
msgid " in file `%s', line %d\n"
-msgstr ""
+msgstr " tiedostossa â€%sâ€, rivi %d\n"
-#: debug.c:1912
+#: debug.c:1921
#, c-format
msgid " at `%s':%d"
-msgstr ""
+msgstr " osoitteessa â€%sâ€:%d"
-#: debug.c:1928 debug.c:1991
+#: debug.c:1937 debug.c:2000
#, c-format
msgid "#%ld\tin "
-msgstr ""
+msgstr "#%ld\tkohteessa "
-#: debug.c:1965
+#: debug.c:1974
#, c-format
msgid "More stack frames follow ...\n"
-msgstr ""
+msgstr "Lisää pinokehyksiä seuraa ...\n"
-#: debug.c:2008
-#, fuzzy
+#: debug.c:2017
msgid "invalid frame number"
-msgstr "Virheellinen lukualueen loppu"
+msgstr "virheellinen kehysnumero"
-#: debug.c:2180
+#: debug.c:2200
#, c-format
msgid "Note: breakpoint %d (enabled, ignore next %ld hits), also set at %s:%d"
msgstr ""
+"Huomaa: keskeytyskohta %d (otettu käyttöön, ohita seuraavat %ld osumaa), "
+"asetettu myös osoitteessa %s:%d"
-#: debug.c:2187
+#: debug.c:2207
#, c-format
msgid "Note: breakpoint %d (enabled), also set at %s:%d"
msgstr ""
+"Huomaa: keskeytyskohta %d (otettu käyttöön), asetettu myös kohdassa %s:%d"
-#: debug.c:2194
+#: debug.c:2214
#, c-format
msgid "Note: breakpoint %d (disabled, ignore next %ld hits), also set at %s:%d"
msgstr ""
+"Huomaa: keskeytyskohta %d (otettu pois käytöstä, ohita seuraavat %ld "
+"osumaa), asetettu myös kohdassa %s:%d"
-#: debug.c:2201
+#: debug.c:2221
#, c-format
msgid "Note: breakpoint %d (disabled), also set at %s:%d"
msgstr ""
+"Huomaa: keskeytyskohta %d (otettu pois käytöstä), asetettu myös kohdassa %s:"
+"%d"
-#: debug.c:2218
+#: debug.c:2238
#, c-format
msgid "Breakpoint %d set at file `%s', line %d\n"
-msgstr ""
+msgstr "Keskeytyskohta %d asetettu tiedostossa â€%sâ€, rivi %d\n"
-#: debug.c:2320
+#: debug.c:2340
#, c-format
msgid "Can't set breakpoint in file `%s'\n"
-msgstr ""
+msgstr "Keskeytyskohdan asetaminen tiedostossa â€%s†epäonnistui\n"
-#: debug.c:2349 debug.c:2472 debug.c:3330
-#, fuzzy, c-format
+#: debug.c:2369 debug.c:2492 debug.c:3350
+#, c-format
msgid "line number %d in file `%s' out of range"
-msgstr "exp: argumentti %g on lukualueen ulkopuolella"
+msgstr "rivinumero %d tiedostossa â€%s†on lukualueen ulkopuolella"
-#: debug.c:2353
+#: debug.c:2373
#, c-format
msgid "Can't find rule!!!\n"
-msgstr ""
+msgstr "Säännön löytäminen epäonnistui!!!\n"
-#: debug.c:2355
+#: debug.c:2375
#, c-format
msgid "Can't set breakpoint at `%s':%d\n"
-msgstr ""
+msgstr "Keskeytykohdan asettaminen kohdassa â€%sâ€:%d epäonnistui\n"
-#: debug.c:2367
+#: debug.c:2387
#, c-format
msgid "Can't set breakpoint in function `%s'\n"
-msgstr ""
+msgstr "Keskeytyskohdan asettaminen funktiossa â€%s†epäonnistui\n"
-#: debug.c:2383
+#: debug.c:2403
#, c-format
msgid "breakpoint %d set at file `%s', line %d is unconditional\n"
-msgstr ""
+msgstr "keskeytyskohta %d asetettu tiedostossa â€%sâ€, rivi %d on ehdoton\n"
-#: debug.c:2488 debug.c:2510
+#: debug.c:2508 debug.c:2530
#, c-format
msgid "Deleted breakpoint %d"
-msgstr ""
+msgstr "Poistettu keskeytyskohta %d"
-#: debug.c:2494
+#: debug.c:2514
#, c-format
msgid "No breakpoint(s) at entry to function `%s'\n"
-msgstr ""
+msgstr "Ei keskeytyskohtaa funktion â€%s†sisääntulossa\n"
-#: debug.c:2521
-#, fuzzy, c-format
+#: debug.c:2541
+#, c-format
msgid "No breakpoint at file `%s', line #%d\n"
-msgstr "virhe luettaessa syötetiedostoa â€%sâ€: %s"
+msgstr "Tiedostossa â€%s†ei ole keskeytyskohtaa, rivi #%d\n"
-#: debug.c:2576 debug.c:2617 debug.c:2637 debug.c:2680
+#: debug.c:2596 debug.c:2637 debug.c:2657 debug.c:2700
msgid "invalid breakpoint number"
-msgstr ""
+msgstr "virheellinen keskeytyskohtanumero"
-#: debug.c:2592
+#: debug.c:2612
msgid "Delete all breakpoints? (y or n) "
-msgstr ""
+msgstr "Poistetaanko kaikki keskeytyskohdata? (y tai n) "
-#: debug.c:2593 debug.c:2903 debug.c:2956
+#: debug.c:2613 debug.c:2923 debug.c:2976
msgid "y"
-msgstr ""
+msgstr "k"
-#: debug.c:2642
+#: debug.c:2662
#, c-format
msgid "Will ignore next %ld crossing(s) of breakpoint %d.\n"
-msgstr ""
+msgstr "Keskeytyskohta %2$d:n seuraavat %1$ld risteystä ohitetaan.\n"
-#: debug.c:2646
+#: debug.c:2666
#, c-format
msgid "Will stop next time breakpoint %d is reached.\n"
-msgstr ""
+msgstr "Pysähtyy seuraavalla kerralla kun keskeytyskohta %d saavutetaan.\n"
-#: debug.c:2763
+#: debug.c:2783
#, c-format
msgid "Can only debug programs provided with the `-f' option.\n"
msgstr ""
+"Vain ohjelmia, jotka tarjoavat valitsimen â€-fâ€, voidaan vikajäljittää.\n"
-#: debug.c:2888
+#: debug.c:2908
#, c-format
msgid "Failed to restart debugger"
-msgstr ""
+msgstr "Vianjäljittäjän uudelleenkäynnistys epäonnistui"
-#: debug.c:2902
+#: debug.c:2922
msgid "Program already running. Restart from beginning (y/n)? "
-msgstr ""
+msgstr "Ohjelma on jo käynnissä. Käynnistetäänkö uudelleen alusta (y/n)? "
-#: debug.c:2906
+#: debug.c:2926
#, c-format
msgid "Program not restarted\n"
-msgstr ""
+msgstr "Ohjelma ei käynnistynyt uudelleen\n"
-#: debug.c:2916
+#: debug.c:2936
#, c-format
msgid "error: cannot restart, operation not allowed\n"
-msgstr ""
+msgstr "virhe: uudelleenkäynnistys epäonnistui, toiminto ei ole sallittu\n"
-#: debug.c:2922
+#: debug.c:2942
#, c-format
msgid "error (%s): cannot restart, ignoring rest of the commands\n"
msgstr ""
+"virhe (%s): uudelleenkäynnistys epäonnistui, loput komennot ohitetaan\n"
-#: debug.c:2930
+#: debug.c:2950
#, c-format
msgid "Starting program: \n"
-msgstr ""
+msgstr "Käynnistetään ohjelma: \n"
-#: debug.c:2939
+#: debug.c:2959
#, c-format
msgid "Program exited %s with exit value: %d\n"
-msgstr ""
+msgstr "Ohjelma päättyi %s päättymisarvolla: %d\n"
-#: debug.c:2955
+#: debug.c:2975
msgid "The program is running. Exit anyway (y/n)? "
-msgstr ""
+msgstr "Ohjelma on käynnissä. Poistutaanko silti (y/n)? "
-#: debug.c:2990
+#: debug.c:3010
#, c-format
msgid "Not stopped at any breakpoint; argument ignored.\n"
-msgstr ""
+msgstr "Ei pysäytetty yhdessäkään keskeytyskohdassa; argumentti ohitetaan.\n"
-#: debug.c:2995
+#: debug.c:3015
#, c-format
msgid "invalid breakpoint number %d."
-msgstr ""
+msgstr "virheellinen keskeytyskohtanumero %d."
-#: debug.c:3000
+#: debug.c:3020
#, c-format
msgid "Will ignore next %ld crossings of breakpoint %d.\n"
-msgstr ""
+msgstr "Ohittaa seuraavat %ld keskeytyskohdan %d ylitystä.\n"
-#: debug.c:3187
+#: debug.c:3207
#, c-format
msgid "'finish' not meaningful in the outermost frame main()\n"
msgstr ""
+"’finish’ ei ole merkityksellinen ulommaisen kehyksen main()-funktiossa\n"
-#: debug.c:3192
+#: debug.c:3212
#, c-format
msgid "Run till return from "
-msgstr ""
+msgstr "Suorita kunnes paluu kohteesta "
-#: debug.c:3235
+#: debug.c:3255
#, c-format
msgid "'return' not meaningful in the outermost frame main()\n"
msgstr ""
+"’return’ ei ole merkityksellinen ulommaisen kehyksen main()-funktiossa\n"
-#: debug.c:3349
+#: debug.c:3369
#, c-format
msgid "Can't find specified location in function `%s'\n"
-msgstr ""
+msgstr "Määritellyn sijainnin löytyminen funktiossa â€%s†epäonnistui\n"
-#: debug.c:3357
-#, fuzzy, c-format
+#: debug.c:3377
+#, c-format
msgid "invalid source line %d in file `%s'"
-msgstr "on jo sisällytetty lähdetiedostoon â€%sâ€"
+msgstr "virheellinen lähdekoodirivi %d tiedostossa â€%sâ€"
-#: debug.c:3372
+#: debug.c:3392
#, c-format
msgid "Can't find specified location %d in file `%s'\n"
-msgstr ""
+msgstr "Määritellyn sijainnin %d löytyminen tiedostossa â€%s†epäonnistui\n"
-#: debug.c:3404
-#, fuzzy, c-format
+#: debug.c:3424
+#, c-format
msgid "element not in array\n"
-msgstr "delete: indeksi â€%s†ei ole taulukossa â€%sâ€"
+msgstr "elementti ei ole taulukossa\n"
-#: debug.c:3404
+#: debug.c:3424
#, c-format
msgid "untyped variable\n"
-msgstr ""
+msgstr "tyypitön muuttuja\n"
-#: debug.c:3446
+#: debug.c:3466
#, c-format
msgid "Stopping in %s ...\n"
-msgstr ""
+msgstr "Pysäytetään kohdassa %s ...\n"
-#: debug.c:3523
+#: debug.c:3543
#, c-format
msgid "'finish' not meaningful with non-local jump '%s'\n"
-msgstr ""
+msgstr "’finish’ ei ole merkityksellinen ei-paikallisessa hypyssä ’%s’\n"
-#: debug.c:3530
+#: debug.c:3550
#, c-format
msgid "'until' not meaningful with non-local jump '%s'\n"
-msgstr ""
+msgstr "’until’ ei ole merkityksellinen ei-paikallisessa hypyssä ’%s’\n"
-#: debug.c:4165
+#: debug.c:4185
msgid "\t------[Enter] to continue or q [Enter] to quit------"
-msgstr ""
+msgstr "\t------Jatka painamalla [Enter] tai poistu painamalla q [Enter]------"
-#: debug.c:4166
+#: debug.c:4186
msgid "q"
-msgstr ""
+msgstr "q"
-#: debug.c:4986
-#, fuzzy, c-format
+#: debug.c:5001
+#, c-format
msgid "[\"%s\"] not in array `%s'"
-msgstr "delete: indeksi â€%s†ei ole taulukossa â€%sâ€"
+msgstr "[â€%sâ€] ei ole taulukossa â€%sâ€"
-#: debug.c:5192
+#: debug.c:5207
#, c-format
msgid "sending output to stdout\n"
-msgstr ""
+msgstr "lähetetään tuloste vakiotulosteeseen\n"
-#: debug.c:5232
+#: debug.c:5247
msgid "invalid number"
-msgstr ""
+msgstr "virheellinen numero"
-#: debug.c:5366
-#, fuzzy, c-format
+#: debug.c:5381
+#, c-format
msgid "`%s' not allowed in current context; statement ignored"
-msgstr "â€exit†ei voida kutsua nykyisessä asiayhteydessä"
+msgstr "â€%s†ei ole sallittu nykyisessä asiayhteydessä; lause ohitetaan"
-#: debug.c:5374
-#, fuzzy
+#: debug.c:5389
msgid "`return' not allowed in current context; statement ignored"
-msgstr "â€exit†ei voida kutsua nykyisessä asiayhteydessä"
+msgstr "â€return†ei ole sallittu nykyisessä asiayhteydessä; lause ohitetaan"
-#: debug.c:5575
-#, fuzzy, c-format
+#: debug.c:5590
+#, c-format
msgid "No symbol `%s' in current context"
-msgstr "yritettiin käyttää taulukkoa â€%s†skalaarikontekstissa"
+msgstr "Symbolia â€%s†ei ole nykyisesssä asiayhteydessä"
-#: dfa.c:998 dfa.c:1001 dfa.c:1021 dfa.c:1031 dfa.c:1043 dfa.c:1094 dfa.c:1103
-#: dfa.c:1106 dfa.c:1111 dfa.c:1124 dfa.c:1192
+#: dfa.c:1118 dfa.c:1121 dfa.c:1142 dfa.c:1150 dfa.c:1162 dfa.c:1197
+#: dfa.c:1206 dfa.c:1209 dfa.c:1214 dfa.c:1228 dfa.c:1275
msgid "unbalanced ["
-msgstr ""
+msgstr "pariton ["
-#: dfa.c:1052
-#, fuzzy
+#: dfa.c:1174
msgid "invalid character class"
-msgstr "Virheellinen merkkiluokkanimi"
+msgstr "virheellinen merkkiluokka"
-#: dfa.c:1229
+#: dfa.c:1316
msgid "character class syntax is [[:space:]], not [:space:]"
-msgstr ""
+msgstr "merkkiluokkasyntaksi on [[:space:]], ei [:space:]"
-#: dfa.c:1281
+#: dfa.c:1366
msgid "unfinished \\ escape"
-msgstr ""
+msgstr "päättymätön \\-koodinvaihtomerkki"
-#: dfa.c:1428 regcomp.c:161
+#: dfa.c:1513 regcomp.c:161
msgid "Invalid content of \\{\\}"
msgstr "Virheellinen \\{\\}-sisältö"
-#: dfa.c:1431 regcomp.c:176
+#: dfa.c:1516 regcomp.c:176
msgid "Regular expression too big"
msgstr "Säännöllinen lauseke on liian iso"
-#: dfa.c:1816
+#: dfa.c:1936
msgid "unbalanced ("
-msgstr ""
+msgstr "pariton ("
-#: dfa.c:1943
+#: dfa.c:2062
msgid "no syntax specified"
-msgstr ""
+msgstr "syntaksi ei ole määritelty"
-#: dfa.c:1951
+#: dfa.c:2070
msgid "unbalanced )"
-msgstr ""
+msgstr "pariton )"
#: eval.c:394
#, c-format
@@ -1827,11 +1874,11 @@ msgstr "tuntematon käskykoodi %d"
msgid "opcode %s not an operator or keyword"
msgstr "käskykoodi %s ei ole operaattori tai avainsana"
-#: eval.c:471
+#: eval.c:472
msgid "buffer overflow in genflags2str"
msgstr "puskurin ylivuoto funktiossa genflags2str"
-#: eval.c:674
+#: eval.c:675
#, c-format
msgid ""
"\n"
@@ -1842,71 +1889,71 @@ msgstr ""
"\t# Funktiokutsupino:\n"
"\n"
-#: eval.c:703
+#: eval.c:704
msgid "`IGNORECASE' is a gawk extension"
msgstr "â€IGNORECASE†on gawk-laajennus"
-#: eval.c:735
+#: eval.c:736
msgid "`BINMODE' is a gawk extension"
msgstr "â€BINMODE†on gawk-laajennus"
-#: eval.c:793
+#: eval.c:794
#, c-format
msgid "BINMODE value `%s' is invalid, treated as 3"
msgstr "BINMODE-arvo â€%s†on virheellinen, käsiteltiin arvona 3"
-#: eval.c:884
+#: eval.c:885
#, c-format
msgid "bad `%sFMT' specification `%s'"
msgstr "väärä â€%sFMTâ€-määritys â€%sâ€"
-#: eval.c:968
+#: eval.c:969
msgid "turning off `--lint' due to assignment to `LINT'"
msgstr "käännetään pois â€--lintâ€-valitsin â€LINTâ€-sijoituksen vuoksi"
-#: eval.c:1146
+#: eval.c:1147
#, c-format
msgid "reference to uninitialized argument `%s'"
msgstr "viite alustamattomaan argumenttiin â€%sâ€"
-#: eval.c:1147
+#: eval.c:1148
#, c-format
msgid "reference to uninitialized variable `%s'"
msgstr "viite alustamattomaan muuttujaan â€%sâ€"
-#: eval.c:1165
+#: eval.c:1166
msgid "attempt to field reference from non-numeric value"
msgstr "yritettiin kenttäviitettä arvosta, joka ei ole numeerinen"
-#: eval.c:1167
+#: eval.c:1168
msgid "attempt to field reference from null string"
msgstr "yritettiin kenttäviitettä null-merkkijonosta"
-#: eval.c:1175
+#: eval.c:1176
#, c-format
msgid "attempt to access field %ld"
msgstr "yritettiin saantia kenttään %ld"
-#: eval.c:1184
+#: eval.c:1185
#, c-format
msgid "reference to uninitialized field `$%ld'"
msgstr "viite alustamattomaan kenttään â€$%ldâ€"
-#: eval.c:1271
+#: eval.c:1272
#, c-format
msgid "function `%s' called with more arguments than declared"
msgstr "funktio â€%s†kutsuttiin useammalla argumentilla kuin esiteltiin"
-#: eval.c:1466
+#: eval.c:1473
#, c-format
msgid "unwind_stack: unexpected type `%s'"
msgstr "unwind_stack: odottamaton tyyppi â€%sâ€"
-#: eval.c:1562
+#: eval.c:1569
msgid "division by zero attempted in `/='"
msgstr "jakoa nollalla yritettiin operaatiossa â€/=â€"
-#: eval.c:1569
+#: eval.c:1576
#, c-format
msgid "division by zero attempted in `%%='"
msgstr "jakoa nollalla yritettiin operaatiossa â€%%=â€"
@@ -1916,1201 +1963,1181 @@ msgid "extensions are not allowed in sandbox mode"
msgstr "laajennuksia ei sallita hiekkalaatikkotilassa"
#: ext.c:92
-#, fuzzy
msgid "-l / @load are gawk extensions"
-msgstr "@include on gawk-laajennus"
+msgstr "-l / @load ovat gawk-laajennuksia"
-#: ext.c:95 ext.c:177
+#: ext.c:95
msgid "load_ext: received NULL lib_name"
-msgstr ""
+msgstr "load_ext: vastaanotettiin NULL lib_name"
#: ext.c:98
-#, fuzzy, c-format
+#, c-format
msgid "load_ext: cannot open library `%s' (%s)\n"
-msgstr "tuhoisa: extension: ei voi avata solmua â€%s†(%s)\n"
+msgstr "load_ext: kirjaston â€%s†(%s) avaus epäonnistui\n"
#: ext.c:104
-#, fuzzy, c-format
+#, c-format
msgid ""
"load_ext: library `%s': does not define `plugin_is_GPL_compatible' (%s)\n"
msgstr ""
-"tuhoisa: extension: kirjasto â€%sâ€: ei määrittele "
-"â€plugin_is_GPL_compatible†(%s)\n"
+"load_ext: kirjasto â€%sâ€: ei määrittele â€plugin_is_GPL_compatible†(%s)\n"
#: ext.c:110
-#, fuzzy, c-format
+#, c-format
msgid "load_ext: library `%s': cannot call function `%s' (%s)\n"
-msgstr "tuhoisa: extension: kirjasto â€%sâ€: ei voi kutsua funktiota â€%s†(%s)\n"
+msgstr "load_ext: kirjasto â€%sâ€: funktion â€%s†(%s) kutsu epäonnistui\n"
#: ext.c:114
#, c-format
msgid "load_ext: library `%s' initialization routine `%s' failed\n"
-msgstr ""
+msgstr "load_ext: kirjaston â€%s†alustusrutiini â€%s†epäonnistui\n"
#: ext.c:174
msgid "`extension' is a gawk extension"
msgstr "â€extension†on gawk-laajennus"
+#: ext.c:177
+msgid "extension: received NULL lib_name"
+msgstr "extension: vastaanotettiin NULL lib_name"
+
#: ext.c:180
-#, fuzzy, c-format
+#, c-format
msgid "extension: cannot open library `%s' (%s)"
-msgstr "tuhoisa: extension: ei voi avata solmua â€%s†(%s)\n"
+msgstr "extension: kirjaston â€%s†(%s) avaus epäonnistui"
#: ext.c:186
-#, fuzzy, c-format
+#, c-format
msgid ""
"extension: library `%s': does not define `plugin_is_GPL_compatible' (%s)"
msgstr ""
-"tuhoisa: extension: kirjasto â€%sâ€: ei määrittele "
-"â€plugin_is_GPL_compatible†(%s)\n"
+"extension: kirjasto â€%sâ€: ei määrittele â€plugin_is_GPL_compatible†(%s)"
#: ext.c:190
-#, fuzzy, c-format
+#, c-format
msgid "extension: library `%s': cannot call function `%s' (%s)"
-msgstr "tuhoisa: extension: kirjasto â€%sâ€: ei voi kutsua funktiota â€%s†(%s)\n"
+msgstr "extension: kirjasto â€%sâ€: funktion â€%s†(%s) kutsu epäonnistui"
#: ext.c:221
-#, fuzzy
msgid "make_builtin: missing function name"
-msgstr "extension: puuttuva funktionimi"
+msgstr "make_builtin: puuttuva funktionimi"
-#: ext.c:238
-#, fuzzy, c-format
+#: ext.c:236
+#, c-format
msgid "make_builtin: can't redefine function `%s'"
-msgstr "extension: ei voi määritellä uudelleen funktiota â€%sâ€"
+msgstr "make_builtin: funktion â€%s†uudelleenmäärittely epäonnistui"
-#: ext.c:242
-#, fuzzy, c-format
+#: ext.c:240
+#, c-format
msgid "make_builtin: function `%s' already defined"
-msgstr "extension: funktio â€%s†on jo määritelty"
+msgstr "make_builtin: funktio â€%s†on jo määritelty"
-#: ext.c:246
-#, fuzzy, c-format
+#: ext.c:244
+#, c-format
msgid "make_builtin: function name `%s' previously defined"
-msgstr "extension: funktionimi â€%s†on määritelty jo aiemmin"
+msgstr "make_builtin: funktionimi â€%s†on määritelty jo aiemmin"
-#: ext.c:248
-#, fuzzy, c-format
+#: ext.c:246
+#, c-format
msgid "make_builtin: can't use gawk built-in `%s' as function name"
msgstr ""
-"extension: ei voi käyttää gawk-ohjelman sisäistä muuttujanimeä â€%s†"
-"funktionimenä"
+"make_builtin: gawk-ohjelman sisäisen muuttujanimen â€%s†käyttö funktionimenä "
+"epäonnistui"
-#: ext.c:251 ext.c:304
+#: ext.c:249 ext.c:304
#, c-format
msgid "make_builtin: negative argument count for function `%s'"
msgstr "make_builtin: negatiivinen argumenttilukumäärä funktiolle â€%sâ€"
-#: ext.c:278
-#, fuzzy
+#: ext.c:276
msgid "extension: missing function name"
msgstr "extension: puuttuva funktionimi"
-#: ext.c:283
-#, fuzzy, c-format
+#: ext.c:279 ext.c:283
+#, c-format
msgid "extension: illegal character `%c' in function name `%s'"
msgstr "extension: virheellinen merkki â€%c†funktionimessä â€%sâ€"
#: ext.c:291
-#, fuzzy, c-format
+#, c-format
msgid "extension: can't redefine function `%s'"
-msgstr "extension: ei voi määritellä uudelleen funktiota â€%sâ€"
+msgstr "extension: funktion â€%s†uudelleenmäärittely epäonnistui"
#: ext.c:295
-#, fuzzy, c-format
+#, c-format
msgid "extension: function `%s' already defined"
msgstr "extension: funktio â€%s†on jo määritelty"
#: ext.c:299
-#, fuzzy, c-format
+#, c-format
msgid "extension: function name `%s' previously defined"
-msgstr "funktionimi â€%s†on jo aikaisemmin määritelty"
+msgstr "extension: funktionimi â€%s†on määritelty jo aiemmin"
#: ext.c:301
-#, fuzzy, c-format
+#, 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ä"
+"extension: gawk-ohjelman sisäisen muuttujanimen käyttö â€%s†funktionimenä "
+"epäonnistui"
-#: ext.c:374
+#: ext.c:375
#, 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:377
+#: ext.c:378
#, c-format
msgid "function `%s': missing argument #%d"
msgstr "function â€%sâ€: puuttuva argumentti #%d"
-#: ext.c:394
+#: ext.c:395
#, 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:398
+#: ext.c:399
#, 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:412
+#: ext.c:413
msgid "dynamic loading of library not supported"
-msgstr ""
+msgstr "kirjaston dynaamista latausta ei tueta"
-#: extension/filefuncs.c:97
-#, fuzzy
+#: extension/filefuncs.c:159
msgid "chdir: called with incorrect number of arguments, expecting 1"
-msgstr "sqrt: kutsuttu negatiivisella argumentilla %g"
+msgstr "chdir: kutsuttu argumenttien väärällä lukumäärällä, odotettiin 1"
-#: extension/filefuncs.c:343
+#: extension/filefuncs.c:439
#, c-format
msgid "stat: unable to read symbolic link `%s'"
-msgstr ""
+msgstr "stat: symbolisen linkin â€%s†lukeminen epäonnistui"
-#: extension/filefuncs.c:376
-#, fuzzy
+#: extension/filefuncs.c:472
msgid "stat: called with wrong number of arguments"
-msgstr "sqrt: kutsuttu negatiivisella argumentilla %g"
+msgstr "stat: kutsuttu argumenttien väärällä lukumäärällä"
-#: extension/filefuncs.c:383
-#, fuzzy
+#: extension/filefuncs.c:479
msgid "stat: bad parameters"
-msgstr "%s: on parametri\n"
+msgstr "stat: väärät parametrit"
-#: extension/filefuncs.c:437
-#, fuzzy, c-format
+#: extension/filefuncs.c:533
+#, c-format
msgid "fts init: could not create variable %s"
-msgstr "index: toinen vastaanotettu argumentti ei ole merkkijono"
+msgstr "fts init: muuttujan %s luominen epäonnistui"
+
+#: extension/filefuncs.c:554
+msgid "fts is not supported on this system"
+msgstr "fts ei ole tuettu tässä järjestelmässä"
-#: extension/filefuncs.c:460
+#: extension/filefuncs.c:573
msgid "fill_stat_element: could not create array"
-msgstr ""
+msgstr "fill_stat_element: taulukon luominen epäonnistui"
-#: extension/filefuncs.c:469
+#: extension/filefuncs.c:582
msgid "fill_stat_element: could not set element"
-msgstr ""
+msgstr "fill_stat_element: elementin asettaminen epäonnistui"
-#: extension/filefuncs.c:484
-#, fuzzy
+#: extension/filefuncs.c:597
msgid "fill_path_element: could not set element"
-msgstr "index: toinen vastaanotettu argumentti ei ole merkkijono"
+msgstr "fill_path_element: elementin asettaminen epäonnistui"
-#: extension/filefuncs.c:500
+#: extension/filefuncs.c:613
msgid "fill_error_element: could not set element"
-msgstr ""
+msgstr "fill_error_element: elementin asettaminen epäonnistui"
-#: extension/filefuncs.c:547 extension/filefuncs.c:594
+#: extension/filefuncs.c:660 extension/filefuncs.c:707
msgid "fts-process: could not create array"
-msgstr ""
+msgstr "fts-process: taulukon luominen epäonnistui"
-#: extension/filefuncs.c:557 extension/filefuncs.c:604
-#: extension/filefuncs.c:622
-#, fuzzy
+#: extension/filefuncs.c:670 extension/filefuncs.c:717
+#: extension/filefuncs.c:735
msgid "fts-process: could not set element"
-msgstr "index: toinen vastaanotettu argumentti ei ole merkkijono"
+msgstr "fts-process: elementin asettaminen epäonnistui"
-#: extension/filefuncs.c:671
-#, fuzzy
+#: extension/filefuncs.c:784
msgid "fts: called with incorrect number of arguments, expecting 3"
-msgstr "sqrt: kutsuttu negatiivisella argumentilla %g"
+msgstr "fts: kutsuttu argumenttien väärällä lukumäärällä, odotettiin 3"
-#: extension/filefuncs.c:674
-#, fuzzy
+#: extension/filefuncs.c:787
msgid "fts: bad first parameter"
-msgstr "%s: on parametri\n"
+msgstr "fts: väärä ensimmäinen parametri"
-#: extension/filefuncs.c:680
-#, fuzzy
+#: extension/filefuncs.c:793
msgid "fts: bad second parameter"
-msgstr "%s: on parametri\n"
+msgstr "fts: väärä toinen parametri"
-#: extension/filefuncs.c:686
-#, fuzzy
+#: extension/filefuncs.c:799
msgid "fts: bad third parameter"
-msgstr "%s: on parametri\n"
+msgstr "fts: väärä kolmas parametri"
-#: extension/filefuncs.c:693
-#, fuzzy
+#: extension/filefuncs.c:806
msgid "fts: could not flatten array\n"
-msgstr "â€%s†ei ole laillinen muuttujanimi"
+msgstr "fts: taulukon litistäminen epäonnistui\n"
-#: extension/filefuncs.c:711
+#: extension/filefuncs.c:824
msgid "fts: ignoring sneaky FTS_NOSTAT flag. nyah, nyah, nyah."
-msgstr ""
+msgstr "fts: ohitetaan petollinen FTS_NOSTAT-lippu. nyyh, nyyh, nyyh."
-#: extension/filefuncs.c:728
+#: extension/filefuncs.c:841
msgid "fts: clear_array() failed\n"
-msgstr ""
+msgstr "fts: clear_array() epäonnistui\n"
-#: extension/fnmatch.c:98
-#, fuzzy
+#: extension/fnmatch.c:112
msgid "fnmatch: called with less than three arguments"
-msgstr "sqrt: kutsuttu negatiivisella argumentilla %g"
+msgstr "fnmatch: kutsuttu vähemmällä kuin kolmella argumentilla"
-#: extension/fnmatch.c:101
-#, fuzzy
+#: extension/fnmatch.c:115
msgid "fnmatch: called with more than three arguments"
-msgstr "sqrt: kutsuttu negatiivisella argumentilla %g"
+msgstr "fnmatch: kutsuttu useammalla kuin kolmella argumentilla"
-#: extension/fnmatch.c:104
-#, fuzzy
+#: extension/fnmatch.c:118
msgid "fnmatch: could not get first argument"
-msgstr "strftime: ensimmäinen vastaanotettu argumentti ei ole merkkijono"
+msgstr "fnmatch: ensimmäistä argumenttia ei saatu"
-#: extension/fnmatch.c:109
-#, fuzzy
+#: extension/fnmatch.c:123
msgid "fnmatch: could not get second argument"
-msgstr "index: toinen vastaanotettu argumentti ei ole merkkijono"
+msgstr "fnmatch: toista argumenttia ei saatu"
-#: extension/fnmatch.c:114
+#: extension/fnmatch.c:128
msgid "fnmatch: could not get third argument"
-msgstr ""
+msgstr "fnmatch: kolmatta argumenttia ei saatu"
-#: extension/fnmatch.c:127
+#: extension/fnmatch.c:141
msgid "fnmatch is not implemented on this system\n"
-msgstr ""
+msgstr "fnmatch ei ole toteutettu tässä järjestelmässä\n"
-#: extension/fnmatch.c:159
+#: extension/fnmatch.c:173
msgid "fnmatch init: could not add FNM_NOMATCH variable"
-msgstr ""
+msgstr "fnmatch init: muuttujan FNM_NOMATCH lisääminen epäonnistui"
-#: extension/fnmatch.c:169
+#: extension/fnmatch.c:183
#, c-format
msgid "fnmatch init: could not set array element %s"
-msgstr ""
+msgstr "fnmatch init: taulukkoelementin %s asettaminen epäonnistui"
-#: extension/fnmatch.c:179
+#: extension/fnmatch.c:193
msgid "fnmatch init: could not install FNM array"
-msgstr ""
+msgstr "fnmatch init: FNM-taulukon lisääminen epäonnistui"
#: extension/fork.c:81
-#, fuzzy
msgid "fork: called with too many arguments"
-msgstr "sqrt: kutsuttu negatiivisella argumentilla %g"
+msgstr "fork: kutsuttu liian monella argumentilla"
#: extension/fork.c:94
msgid "fork: PROCINFO is not an array!"
-msgstr ""
+msgstr "fork: PROCINFO ei ole taulukko!"
#: extension/fork.c:118
-#, fuzzy
msgid "waitpid: called with too many arguments"
-msgstr "sqrt: kutsuttu negatiivisella argumentilla %g"
+msgstr "waitpid: kutsuttu liian monella argumentilla"
#: extension/fork.c:126
-#, fuzzy
msgid "wait: called with no arguments"
-msgstr "sqrt: kutsuttu negatiivisella argumentilla %g"
+msgstr "wait: kutsuttu ilman argumentteja"
#: extension/fork.c:143
-#, fuzzy
msgid "wait: called with too many arguments"
-msgstr "sqrt: kutsuttu negatiivisella argumentilla %g"
+msgstr "wait: kutsuttu liian monella argumentilla"
-#: extension/inplace.c:110
+#: extension/inplace.c:130
msgid "inplace_begin: in-place editing already active"
-msgstr ""
+msgstr "inplace_begin: kohdallaanmuokkaus on jo aktivoitu"
-#: extension/inplace.c:113 extension/inplace.c:187
+#: extension/inplace.c:133 extension/inplace.c:207
#, c-format
msgid "inplace_begin: expects 2 arguments but called with %d"
msgstr ""
+"inplace_begin: odotetaan 2 argumenttia, mutta kutsussa oli %d argumenttia"
-#: extension/inplace.c:116
+#: extension/inplace.c:136
msgid "inplace_begin: cannot retrieve 1st argument as a string filename"
msgstr ""
+"inplace_begin: ensimmäisen argumentin noutaminen merkkijonotiedostonimenä "
+"epäonnistui"
-#: extension/inplace.c:124
+#: extension/inplace.c:144
#, c-format
msgid "inplace_begin: disabling in-place editing for invalid FILENAME `%s'"
msgstr ""
+"inplace_begin: ottaen pois käytöstä virheellisen TIEDOSTONIMI â€%s†"
+"muokkauksen"
-#: extension/inplace.c:131
-#, fuzzy, c-format
+#: extension/inplace.c:151
+#, c-format
msgid "inplace_begin: Cannot stat `%s' (%s)"
-msgstr "tuhoisa: extension: ei voi avata solmua â€%s†(%s)\n"
+msgstr "inplace_begin: stat â€%s†(%s) epäonnistui"
-#: extension/inplace.c:138
-#, fuzzy, c-format
+#: extension/inplace.c:158
+#, c-format
msgid "inplace_begin: `%s' is not a regular file"
-msgstr "â€%s†ei ole laillinen muuttujanimi"
+msgstr "inplace_begin: â€%s†ei ole tavallinen tiedosto"
-#: extension/inplace.c:149
+#: extension/inplace.c:169
#, c-format
msgid "inplace_begin: mkstemp(`%s') failed (%s)"
-msgstr ""
+msgstr "inplace_begin: mkstemp(â€%sâ€) epäonnistui (%s)"
-#: extension/inplace.c:158
-#, fuzzy, c-format
+#: extension/inplace.c:178
+#, c-format
msgid "inplace_begin: chmod failed (%s)"
-msgstr "%s: sulkeminen epäonnistui (%s)"
+msgstr "inplace_begin: chmod epäonnistui (%s)"
-#: extension/inplace.c:165
+#: extension/inplace.c:185
#, c-format
msgid "inplace_begin: dup(stdout) failed (%s)"
-msgstr ""
+msgstr "inplace_begin: dup(stdout) epäonnistui (%s)"
-#: extension/inplace.c:168
+#: extension/inplace.c:188
#, c-format
msgid "inplace_begin: dup2(%d, stdout) failed (%s)"
-msgstr ""
+msgstr "inplace_begin: dup2(%d, stdout) epäonnistui (%s)"
-#: extension/inplace.c:171
-#, fuzzy, c-format
+#: extension/inplace.c:191
+#, c-format
msgid "inplace_begin: close(%d) failed (%s)"
-msgstr "%s: sulkeminen epäonnistui (%s)"
+msgstr "inplace_begin: close(%d) epäonnistui (%s)"
-#: extension/inplace.c:190
+#: extension/inplace.c:210
msgid "inplace_end: cannot retrieve 1st argument as a string filename"
msgstr ""
+"inplace_end: ensimmäisen argumentin noutaminen merkkijonotiedostonimenä "
+"epäonnistui"
-#: extension/inplace.c:197
+#: extension/inplace.c:217
msgid "inplace_end: in-place editing not active"
-msgstr ""
+msgstr "inplace_end: kohdallaanmuokkaus ei ole aktiivinen"
-#: extension/inplace.c:203
+#: extension/inplace.c:223
#, c-format
msgid "inplace_end: dup2(%d, stdout) failed (%s)"
-msgstr ""
+msgstr "inplace_end: dup2(%d, stdout) epäonnistui (%s)"
-#: extension/inplace.c:206
-#, fuzzy, c-format
+#: extension/inplace.c:226
+#, c-format
msgid "inplace_end: close(%d) failed (%s)"
-msgstr "%s: sulkeminen epäonnistui (%s)"
+msgstr "inplace_end: close(%d) epäonnistui (%s)"
-#: extension/inplace.c:210
+#: extension/inplace.c:230
#, c-format
msgid "inplace_end: fsetpos(stdout) failed (%s)"
-msgstr ""
+msgstr "inplace_end: fsetpos(stdout) epäonnistui (%s)"
-#: extension/inplace.c:223
-#, fuzzy, c-format
+#: extension/inplace.c:243
+#, c-format
msgid "inplace_end: link(`%s', `%s') failed (%s)"
-msgstr "uudelleenohjauksen â€%s†putken tyhjennys epäonnistui (%s)."
+msgstr "inplace_end: link(â€%sâ€, â€%sâ€) epäonnistui (%s)."
-#: extension/inplace.c:229
-#, fuzzy, c-format
+#: extension/inplace.c:253
+#, c-format
msgid "inplace_end: rename(`%s', `%s') failed (%s)"
-msgstr "tiedostomäärittelijän %d (â€%sâ€) sulkeminen epäonnistui (%s)"
+msgstr "inplace_end: rename(â€%sâ€, â€%sâ€) epäonnistui (%s)"
#: extension/ordchr.c:69
-#, fuzzy
msgid "ord: called with too many arguments"
-msgstr "sqrt: kutsuttu negatiivisella argumentilla %g"
+msgstr "ord: kutsuttu liian monella argumentilla"
#: extension/ordchr.c:75
-#, fuzzy
msgid "ord: called with no arguments"
-msgstr "sqrt: kutsuttu negatiivisella argumentilla %g"
+msgstr "ord: kutsuttu ilman argumentteja"
#: extension/ordchr.c:77
-#, fuzzy
msgid "ord: called with inappropriate argument(s)"
-msgstr "sqrt: kutsuttu negatiivisella argumentilla %g"
+msgstr "ord: kutsuttu sopimattomalla argumentilla"
#: extension/ordchr.c:99
-#, fuzzy
msgid "chr: called with too many arguments"
-msgstr "sqrt: kutsuttu negatiivisella argumentilla %g"
+msgstr "chr: kutsuttu liian monella argumentilla"
#: extension/ordchr.c:109
-#, fuzzy
msgid "chr: called with no arguments"
-msgstr "sqrt: kutsuttu negatiivisella argumentilla %g"
+msgstr "chr: kutsuttu ilman argumentteja"
#: extension/ordchr.c:111
-#, fuzzy
msgid "chr: called with inappropriate argument(s)"
-msgstr "sqrt: kutsuttu negatiivisella argumentilla %g"
+msgstr "chr: kutsuttu sopimattomalla argumentilla"
-#: extension/readdir.c:203
+#: extension/readdir.c:281
#, c-format
msgid "dir_take_control_of: opendir/fdopendir failed: %s"
-msgstr ""
+msgstr "dir_take_control_of: opendir/fdopendir epäonnistui: %s"
-#: extension/readfile.c:84
-#, fuzzy
+#: extension/readfile.c:113
msgid "readfile: called with too many arguments"
-msgstr "sqrt: kutsuttu negatiivisella argumentilla %g"
+msgstr "readfile: kutsuttu liian monella argumentilla"
-#: extension/readfile.c:118
-#, fuzzy
+#: extension/readfile.c:137
msgid "readfile: called with no arguments"
-msgstr "sqrt: kutsuttu negatiivisella argumentilla %g"
+msgstr "readfile: kutsuttu ilman argumentteja"
-#: extension/rwarray.c:120
-#, fuzzy
+#: extension/rwarray.c:124
msgid "writea: called with too many arguments"
-msgstr "sqrt: kutsuttu negatiivisella argumentilla %g"
+msgstr "writea: kutsuttu liian monella argumentilla"
-#: extension/rwarray.c:127
-#, fuzzy, c-format
+#: extension/rwarray.c:131
+#, c-format
msgid "do_writea: argument 0 is not a string\n"
-msgstr "exp: argumentti %g on lukualueen ulkopuolella"
+msgstr "do_writea: argumentti 0 ei ole merkkijono\n"
-#: extension/rwarray.c:133
-#, fuzzy, c-format
+#: extension/rwarray.c:137
+#, c-format
msgid "do_writea: argument 1 is not an array\n"
-msgstr "split: neljäs argumentti ei ole taulukko"
+msgstr "do_writea: argumentti 1 ei ole taulukko\n"
-#: extension/rwarray.c:180
+#: extension/rwarray.c:184
#, c-format
msgid "write_array: could not flatten array\n"
-msgstr ""
+msgstr "write_array: taulukon litistäminen epäonnistui\n"
-#: extension/rwarray.c:194
+#: extension/rwarray.c:198
#, c-format
msgid "write_array: could not release flattened array\n"
-msgstr ""
+msgstr "write_array: litistettyä taulukon vapauttaminen epäonnistui\n"
-#: extension/rwarray.c:276
-#, fuzzy
+#: extension/rwarray.c:280
msgid "reada: called with too many arguments"
-msgstr "sqrt: kutsuttu negatiivisella argumentilla %g"
+msgstr "reada: kutsuttu liian monilla argumenteilla"
-#: extension/rwarray.c:283
-#, fuzzy, c-format
+#: extension/rwarray.c:287
+#, c-format
msgid "do_reada: argument 0 is not a string\n"
-msgstr "exp: argumentti %g on lukualueen ulkopuolella"
+msgstr "do_reada: argumentti 0 ei ole merkkijono\n"
-#: extension/rwarray.c:289
-#, fuzzy, c-format
+#: extension/rwarray.c:293
+#, c-format
msgid "do_reada: argument 1 is not an array\n"
-msgstr "match: kolmas argumentti ei ole taulukko"
+msgstr "do_reada: argumentti 1 ei ole taulukko\n"
-#: extension/rwarray.c:333
+#: extension/rwarray.c:337
#, c-format
msgid "do_reada: clear_array failed\n"
-msgstr ""
+msgstr "do_reada: clear_array epäonnistui\n"
-#: extension/rwarray.c:370
+#: extension/rwarray.c:374
#, c-format
msgid "read_array: set_array_element failed\n"
-msgstr ""
+msgstr "read_array: set_array_element epäonnistui\n"
-#: extension/time.c:81
-#, fuzzy
+#: extension/time.c:113
msgid "gettimeofday: ignoring arguments"
-msgstr "mktime: vastaanotettu argumentti ei ole merkkijono"
+msgstr "gettimeofday: ohitetaan argumentit"
-#: extension/time.c:112
+#: extension/time.c:144
msgid "gettimeofday: not supported on this platform"
-msgstr ""
+msgstr "gettimeofday: ei ole tuettu tällä alustalla"
-#: extension/time.c:133
-#, fuzzy
+#: extension/time.c:165
msgid "sleep: called with too many arguments"
-msgstr "sqrt: kutsuttu negatiivisella argumentilla %g"
+msgstr "sleep: kutsuttu liian monella argumentilla"
-#: extension/time.c:136
-#, fuzzy
+#: extension/time.c:168
msgid "sleep: missing required numeric argument"
-msgstr "exp: vastaanotettu argumentti ei ole numeerinen"
+msgstr "sleep: puuttuu vaadittu numeerinen argumentti"
-#: extension/time.c:142
-#, fuzzy
+#: extension/time.c:174
msgid "sleep: argument is negative"
-msgstr "exp: argumentti %g on lukualueen ulkopuolella"
+msgstr "sleep: argumentti on negatiivinen"
-#: extension/time.c:176
+#: extension/time.c:208
msgid "sleep: not supported on this platform"
-msgstr ""
+msgstr "sleep: ei ole tuettu tällä alustalla"
-#: field.c:339
+#: field.c:345
msgid "NF set to negative value"
msgstr "NF asetettu negatiiviseen arvoon"
-#: field.c:964 field.c:971 field.c:975
+#: field.c:971 field.c:978 field.c:982
msgid "split: fourth argument is a gawk extension"
msgstr "split: neljäs argumentti on gawk-laajennus"
-#: field.c:968
+#: field.c:975
msgid "split: fourth argument is not an array"
msgstr "split: neljäs argumentti ei ole taulukko"
-#: field.c:982
+#: field.c:989
msgid "split: second argument is not an array"
msgstr "split: toinen argumentti ei ole taulukko"
-#: field.c:986
+#: field.c:993
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"
+"split: saman taulukon käyttö toiselle ja neljännelle argumentille epäonnistui"
-#: field.c:991
+#: field.c:998
msgid "split: cannot use a subarray of second arg for fourth arg"
msgstr ""
-"split: ei voida käyttää toisen argumentin alitaulukkoa neljännelle "
-"argumentille"
+"split: toisen argumentin käyttö alitaulukkoa neljännelle argumentille "
+"epäonnistui"
-#: field.c:994
+#: field.c:1001
msgid "split: cannot use a subarray of fourth arg for second arg"
msgstr ""
-"split: ei voida käyttää neljännen argumentin alitaulukkoa toiselle "
-"argumentille"
+"split: neljännen argumentin käyttö alitaulukkoa toiselle argumentille "
+"epäonnistui"
-#: field.c:1023
+#: field.c:1032
msgid "split: null string for third arg is a gawk extension"
msgstr "split: null-merkkijono kolmantena argumenttina on gawk-laajennus"
-#: field.c:1063
+#: field.c:1072
msgid "patsplit: fourth argument is not an array"
msgstr "patsplit: neljäs argumentti ei ole taulukko"
-#: field.c:1068
+#: field.c:1077
msgid "patsplit: second argument is not an array"
msgstr "patsplit: toinen argumentti ei ole taulukko"
-#: field.c:1074
+#: field.c:1083
msgid "patsplit: third argument must be non-null"
msgstr "patsplit: kolmas argumentti ei ole taulukko"
-#: field.c:1078
+#: field.c:1087
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"
+"patsplit: saman taulukon käyttö toiselle ja neljännelle argumentille "
+"epäonnistui"
-#: field.c:1083
+#: field.c:1092
msgid "patsplit: cannot use a subarray of second arg for fourth arg"
msgstr ""
-"patsplit: ei voida käyttää toisen argumentin alitaulukkkoa neljännelle "
-"argumentille"
+"patsplit: toisen argumentin käyttö alitaulukkkoa neljännelle argumentille "
+"epäonnistui"
-#: field.c:1086
+#: field.c:1095
msgid "patsplit: cannot use a subarray of fourth arg for second arg"
msgstr ""
-"patsplit: ei voida käyttää neljännen argumentin alitaulukkoa toiselle "
-"argumentille"
+"patsplit: neljännen argumentin käyttö alitaulukkoa toiselle argumentille "
+"epäonnistui"
-#: field.c:1124
+#: field.c:1133
msgid "`FIELDWIDTHS' is a gawk extension"
msgstr "â€FIELDWIDTHS†on gawk-laajennus"
-#: field.c:1188
+#: field.c:1197
#, c-format
msgid "invalid FIELDWIDTHS value, near `%s'"
msgstr "virheellinen FIELDWIDTHS-arvo, lähellä â€%sâ€"
-#: field.c:1261
+#: field.c:1270
msgid "null string for `FS' is a gawk extension"
msgstr "null-merkkijono â€FSâ€-kenttäerotinmuuttujalle on gawk-laajennus"
-#: field.c:1265
+#: field.c:1274
msgid "old awk does not support regexps as value of `FS'"
msgstr "vanha awk ei tue regexp-arvoja â€FSâ€-kenttäerotinmuuttujana"
-#: field.c:1384
+#: field.c:1393
msgid "`FPAT' is a gawk extension"
msgstr "â€FPAT†on gawk-laajennus"
#: gawkapi.c:146
msgid "awk_value_to_node: received null retval"
-msgstr ""
+msgstr "awk_value_to_node: vastaanotti null retval-paluuarvon"
#: gawkapi.c:384
msgid "node_to_awk_value: received null node"
-msgstr ""
+msgstr "node_to_awk_value: vastaaotti null-solmun"
#: gawkapi.c:387
msgid "node_to_awk_value: received null val"
-msgstr ""
+msgstr "node_to_awk_value: vastaanotti null-arvon"
-#: gawkapi.c:808
-#, fuzzy
+#: gawkapi.c:807
msgid "remove_element: received null array"
-msgstr "length: vastaanotettu taulukkoargumentti"
+msgstr "remove_element: vastaanotettu null-taulukko"
-#: gawkapi.c:811
+#: gawkapi.c:810
msgid "remove_element: received null subscript"
-msgstr ""
+msgstr "remove_element: vastaanotti null-alaindeksin"
-#: gawkapi.c:943
+#: gawkapi.c:947
#, c-format
msgid "api_flatten_array: could not convert index %d\n"
-msgstr ""
+msgstr "api_flatten_array: indeksin %d muuntaminen epäonnistui\n"
-#: gawkapi.c:948
+#: gawkapi.c:952
#, c-format
msgid "api_flatten_array: could not convert value %d\n"
-msgstr ""
+msgstr "api_flatten_array: arvon %d muuntaminen epäonnistui\n"
-#: getopt.c:603 getopt.c:632
-#, fuzzy, c-format
+#: getopt.c:604 getopt.c:633
+#, c-format
msgid "%s: option '%s' is ambiguous; possibilities:"
-msgstr "%s: valitsin ’%s’ ei ole yksiselitteinen\n"
+msgstr "%s: valitsin ’%s’ ei ole yksiselitteinen; mahdollisuudet:"
-#: getopt.c:678 getopt.c:682
+#: getopt.c:679 getopt.c:683
#, c-format
msgid "%s: option '--%s' doesn't allow an argument\n"
msgstr "%s: valitsin ’--%s’ ei salli argumenttia\n"
-#: getopt.c:691 getopt.c:696
+#: getopt.c:692 getopt.c:697
#, c-format
msgid "%s: option '%c%s' doesn't allow an argument\n"
msgstr "%s: valitsin ’%c%s’ ei salli argumenttia\n"
-#: getopt.c:739 getopt.c:758
+#: getopt.c:740 getopt.c:759
#, c-format
msgid "%s: option '--%s' requires an argument\n"
msgstr "%s: valitsin ’--%s’ vaatii argumentin\n"
-#: getopt.c:796 getopt.c:799
+#: getopt.c:797 getopt.c:800
#, c-format
msgid "%s: unrecognized option '--%s'\n"
msgstr "%s: tunnistamaton valitsin ’--%s’\n"
-#: getopt.c:807 getopt.c:810
+#: getopt.c:808 getopt.c:811
#, c-format
msgid "%s: unrecognized option '%c%s'\n"
msgstr "%s: tunnistamaton valitsin ’%c%s’\n"
-#: getopt.c:859 getopt.c:862
+#: getopt.c:860 getopt.c:863
#, c-format
msgid "%s: invalid option -- '%c'\n"
msgstr "%s: virheellinen valitsin -- ’%c’\n"
-#: getopt.c:915 getopt.c:932 getopt.c:1142 getopt.c:1160
+#: getopt.c:916 getopt.c:933 getopt.c:1143 getopt.c:1161
#, c-format
msgid "%s: option requires an argument -- '%c'\n"
msgstr "%s: valitsin vaatii argumentin -- ’%c’\n"
-#: getopt.c:988 getopt.c:1004
+#: getopt.c:989 getopt.c:1005
#, c-format
msgid "%s: option '-W %s' is ambiguous\n"
msgstr "%s: valitsin ’-W %s’ ei ole yksiselitteinen\n"
-#: getopt.c:1028 getopt.c:1046
+#: getopt.c:1029 getopt.c:1047
#, c-format
msgid "%s: option '-W %s' doesn't allow an argument\n"
msgstr "%s: valitsin ’-W %s’ ei salli argumenttia\n"
-#: getopt.c:1067 getopt.c:1085
+#: getopt.c:1068 getopt.c:1086
#, c-format
msgid "%s: option '-W %s' requires an argument\n"
msgstr "%s: valitsin ’-W %s’ vaatii argumentin\n"
-#: io.c:347
+#: io.c:392
#, c-format
msgid "command line argument `%s' is a directory: skipped"
msgstr "komentoriviargumentti â€%s†on hakemisto: ohitettiin"
-#: io.c:350 io.c:463
+#: io.c:395 io.c:513
#, c-format
msgid "cannot open file `%s' for reading (%s)"
-msgstr "ei voi avata tiedostoa â€%s†lukemista varten (%s)"
+msgstr "tiedoston â€%s†avaaminen lukemista varten (%s) epäonnistui"
-#: io.c:590
+#: io.c:640
#, c-format
msgid "close of fd %d (`%s') failed (%s)"
msgstr "tiedostomäärittelijän %d (â€%sâ€) sulkeminen epäonnistui (%s)"
-#: io.c:666
+#: io.c:716
msgid "redirection not allowed in sandbox mode"
msgstr "edelleenohjaus ei ole sallittua hiekkalaatikkotilassa"
-#: io.c:700
+#: io.c:750
#, c-format
msgid "expression in `%s' redirection only has numeric value"
msgstr "lausekkeella â€%sâ€-uudellenohjauksessa on vain numeerinen arvo"
-#: io.c:706
+#: io.c:756
#, c-format
msgid "expression for `%s' redirection has null string value"
msgstr "lausekkeella â€%sâ€-uudelleenohjauksessa on null-merkkijonoarvo"
-#: io.c:711
+#: io.c:761
#, c-format
msgid "filename `%s' for `%s' redirection may be result of logical expression"
msgstr ""
"tiedostonimi â€%s†â€%sâ€-uudelleenohjaukselle saattaa olla loogisen lausekkeen "
"tulos"
-#: io.c:754
+#: io.c:809
#, c-format
msgid "unnecessary mixing of `>' and `>>' for file `%.*s'"
msgstr "turha merkkien â€>†ja â€>>†sekoittaminen tiedostolle â€%.*sâ€"
-#: io.c:808
+#: io.c:863
#, c-format
msgid "can't open pipe `%s' for output (%s)"
-msgstr "ei voi avata putkea â€%s†tulosteelle (%s)"
+msgstr "putken â€%s†avaaminen tulosteelle (%s) epäonnistui"
-#: io.c:818
+#: io.c:873
#, c-format
msgid "can't open pipe `%s' for input (%s)"
-msgstr "ei voi avata putkea â€%s†syötteelle (%s)"
+msgstr "putken â€%s†avaaminen syötteelle (%s) epäonnistui"
-#: io.c:849
+#: io.c:904
#, c-format
msgid "can't open two way pipe `%s' for input/output (%s)"
-msgstr "ei voi avata kaksisuuntaista putkea â€%s†syötteelle/tulosteelle (%s)"
+msgstr ""
+"kaksisuuntaisen putken â€%s†avaaminen syötteelle/tulosteelle (%s) epäonnistui"
-#: io.c:928
+#: io.c:986
#, c-format
msgid "can't redirect from `%s' (%s)"
-msgstr "ei voi uudelleenohjata putkesta â€%s†(%s)"
+msgstr "uudelleenohjaus putkesta â€%s†(%s) epäonnistui"
-#: io.c:931
+#: io.c:989
#, c-format
msgid "can't redirect to `%s' (%s)"
-msgstr "ei voi uudelleenohjata putkeen â€%s†(%s)"
+msgstr "uudelleenohjaus putkeen â€%s†(%s) epäonnistui"
-#: io.c:982
+#: io.c:1040
msgid ""
"reached system limit for open files: starting to multiplex file descriptors"
msgstr ""
"saavutettiin avoimien tiedostojen järjestelmäraja: aloitetaan "
"tiedostomäärittelijöiden lomittaminen"
-#: io.c:998
+#: io.c:1056
#, c-format
msgid "close of `%s' failed (%s)."
msgstr "uudelleenohjauksen â€%s†sulkeminen epäonnistui (%s)."
-#: io.c:1006
+#: io.c:1064
msgid "too many pipes or input files open"
msgstr "avoinna liian monta putkea tai syötetiedostoa"
-#: io.c:1028
+#: io.c:1086
msgid "close: second argument must be `to' or `from'"
msgstr "close: toisen argumentin on oltava â€to†tai â€fromâ€"
-#: io.c:1045
+#: io.c:1103
#, c-format
msgid "close: `%.*s' is not an open file, pipe or co-process"
msgstr "close: â€%.*s†ei ole avoin tiedosto, putki tai apuprosessi"
-#: io.c:1050
+#: io.c:1108
msgid "close of redirection that was never opened"
msgstr "suljettiin uudelleenohjaus, jota ei avattu koskaan"
-#: io.c:1147
+#: io.c:1205
#, c-format
msgid "close: redirection `%s' not opened with `|&', second argument ignored"
msgstr ""
"close: uudelleenohjaus â€%s†ei ole avattu operaattoreilla â€|&â€, toinen "
"argumentti ohitettu"
-#: io.c:1164
+#: io.c:1222
#, c-format
msgid "failure status (%d) on pipe close of `%s' (%s)"
msgstr "virhetila (%d) putken â€%s†sulkemisessa (%s)"
-#: io.c:1167
+#: io.c:1225
#, c-format
msgid "failure status (%d) on file close of `%s' (%s)"
msgstr "virhetila (%d) tiedoston â€%s†sulkemisessa (%s)"
-#: io.c:1187
+#: io.c:1245
#, c-format
msgid "no explicit close of socket `%s' provided"
msgstr "pistokkeen â€%s†eksplisiittistä sulkemista ei tarjota"
-#: io.c:1190
+#: io.c:1248
#, c-format
msgid "no explicit close of co-process `%s' provided"
msgstr "apuprosessin â€%s†eksplisiittistä sulkemista ei tarjota"
-#: io.c:1193
+#: io.c:1251
#, c-format
msgid "no explicit close of pipe `%s' provided"
msgstr "putken â€%s†eksplisiittistä sulkemista ei tarjota"
-#: io.c:1196
+#: io.c:1254
#, c-format
msgid "no explicit close of file `%s' provided"
msgstr "tiedoston â€%s†eksplisiittistä sulkemista ei tarjota"
-#: io.c:1224 io.c:1279 main.c:842 main.c:879
+#: io.c:1284 io.c:1342 main.c:864 main.c:906
#, c-format
msgid "error writing standard output (%s)"
msgstr "virhe kirjoitettaessa vakiotulosteeseen (%s)"
-#: io.c:1228 io.c:1284
+#: io.c:1289 io.c:1348 main.c:866
#, c-format
msgid "error writing standard error (%s)"
msgstr "virhe kirjoitettaessa vakiovirheeseen (%s)"
-#: io.c:1236
+#: io.c:1297
#, c-format
msgid "pipe flush of `%s' failed (%s)."
msgstr "uudelleenohjauksen â€%s†putken tyhjennys epäonnistui (%s)."
-#: io.c:1239
+#: io.c:1300
#, c-format
msgid "co-process flush of pipe to `%s' failed (%s)."
msgstr "putken apuprosessityhjennys uudelleenohjaukseen â€%s†epäonnistui (%s)."
-#: io.c:1242
+#: io.c:1303
#, c-format
msgid "file flush of `%s' failed (%s)."
msgstr "uudelleenohjauksen â€%s†tiedostontyhjennys epäonnistui (%s)."
-#: io.c:1356
+#: io.c:1420
#, c-format
msgid "local port %s invalid in `/inet'"
msgstr "paikallinen portti %s virheellinen pistokkeessa â€/inetâ€"
-#: io.c:1374
+#: io.c:1438
#, c-format
msgid "remote host and port information (%s, %s) invalid"
msgstr "etäkone- ja porttitiedot (%s, %s) ovat virheellisiä"
-#: io.c:1526
+#: io.c:1590
#, c-format
msgid "no (known) protocol supplied in special filename `%s'"
msgstr "ei (tunnettua) yhteyskäytäntöä tarjottu erikoistiedostonimessä â€%sâ€"
-#: io.c:1540
+#: io.c:1604
#, c-format
msgid "special file name `%s' is incomplete"
msgstr "erikoistiedostonimi â€%s†on vaillinainen"
-#: io.c:1557
+#: io.c:1621
msgid "must supply a remote hostname to `/inet'"
msgstr "on tarjottava etäkoneen nimi pistokkeeseen â€/inetâ€"
-#: io.c:1575
+#: io.c:1639
msgid "must supply a remote port to `/inet'"
msgstr "on tarjottava etäportti pistokkeeseen â€/inetâ€"
-#: io.c:1621
+#: io.c:1685
msgid "TCP/IP communications are not supported"
msgstr "TCP/IP-viestintää ei tueta"
-#: io.c:1796
+#: io.c:1867
#, c-format
msgid "could not open `%s', mode `%s'"
-msgstr "ei voitu avata laitetta â€%sâ€, tila â€%sâ€"
+msgstr "laitteen â€%s†avaus epäonnistui, tila â€%sâ€"
-#: io.c:1846
+#: io.c:1917
#, c-format
msgid "close of master pty failed (%s)"
msgstr "â€master ptyâ€-sulkeminen epäonnistui (%s)"
-#: io.c:1848 io.c:2024 io.c:2194
+#: io.c:1919 io.c:2105 io.c:2305
#, c-format
msgid "close of stdout in child failed (%s)"
msgstr "vakiotulosteen sulkeminen lapsiprosessissa epäonnistui (%s)"
-#: io.c:1851
+#: io.c:1922
#, c-format
msgid "moving slave pty to stdout in child failed (dup: %s)"
msgstr ""
"â€slave ptyâ€:n siirtäminen vakiotulosteeseen lapsiprosessissa epäonnistui "
"(dup: %s)"
-#: io.c:1853 io.c:2029
+#: io.c:1924 io.c:2110
#, c-format
msgid "close of stdin in child failed (%s)"
msgstr "vakiosyötteen sulkeminen lapsiprosessissa epäonnistui (%s)"
-#: io.c:1856
+#: io.c:1927
#, c-format
msgid "moving slave pty to stdin in child failed (dup: %s)"
msgstr ""
"â€slave ptyâ€:n siirtäminen vakiosyötteeseen lapsiprosessissa epäonnistui "
"(dup: %s)"
-#: io.c:1858 io.c:1879
+#: io.c:1929 io.c:1951
#, c-format
msgid "close of slave pty failed (%s)"
msgstr "â€slave ptyâ€:n sulkeminen epäonnistui (%s)"
-#: io.c:1965 io.c:2027 io.c:2171 io.c:2197
+#: io.c:2040 io.c:2108 io.c:2276 io.c:2308
#, c-format
msgid "moving pipe to stdout in child failed (dup: %s)"
msgstr ""
"putken siirtäminen vakiotulosteeseen lapsiprosessissa epäonnistui (dup: %s)"
-#: io.c:1972 io.c:2032
+#: io.c:2047 io.c:2113
#, c-format
msgid "moving pipe to stdin in child failed (dup: %s)"
msgstr ""
"putken siirtäminen vakiosyötteeseen lapsiprosessissa epäonnistui (dup: %s)"
-#: io.c:1992 io.c:2187
+#: io.c:2073 io.c:2298
msgid "restoring stdout in parent process failed\n"
msgstr "vakiotulosteen palauttaminen äitiprosessissa epäonnistui\n"
-#: io.c:2000
+#: io.c:2081
msgid "restoring stdin in parent process failed\n"
msgstr "vakiosyötön palauttaminen äitiprosessissa epäonnistui\n"
-#: io.c:2035 io.c:2199 io.c:2213
+#: io.c:2116 io.c:2310 io.c:2324
#, c-format
msgid "close of pipe failed (%s)"
msgstr "putken sulkeminen epäonnistui (%s)"
-#: io.c:2089
+#: io.c:2174
msgid "`|&' not supported"
msgstr "â€|&†ei tueta"
-#: io.c:2156
+#: io.c:2261
#, c-format
msgid "cannot open pipe `%s' (%s)"
-msgstr "ei voi avata putkea â€%s†(%s)"
+msgstr "putken â€%s†(%s) avaaminen epäonnistui"
-#: io.c:2207
+#: io.c:2318
#, c-format
msgid "cannot create child process for `%s' (fork: %s)"
-msgstr "ei voida luoda lapsiprosessia komennolle â€%s†(fork: %s)"
+msgstr "lapsiprosessin luominen komennolle â€%s†(fork: %s) epäonnistui"
-#: io.c:2667
+#: io.c:2790
msgid "register_input_parser: received NULL pointer"
-msgstr ""
+msgstr "register_input_parser: vastaanotettiin NULL-osoitin"
-#: io.c:2695
+#: io.c:2818
#, c-format
msgid "input parser `%s' conflicts with previously installed input parser `%s'"
msgstr ""
+"syötejäsennin â€%s†on ristiriidassa aiemmin asennetun syötejäsentimen â€%s†"
+"kanssa"
-#: io.c:2702
+#: io.c:2825
#, c-format
msgid "input parser `%s' failed to open `%s'"
-msgstr ""
+msgstr "syötejäsentäjä â€%s†epäonnistui kohteen â€%s†avaamisessa"
-#: io.c:2722
+#: io.c:2845
msgid "register_output_wrapper: received NULL pointer"
-msgstr ""
+msgstr "register_output_wrapper: vastaanotti NULL-osoittimen"
-#: io.c:2750
+#: io.c:2873
#, c-format
msgid ""
"output wrapper `%s' conflicts with previously installed output wrapper `%s'"
msgstr ""
+"tulostekäärin â€%s†on ristiriidassa aiemmin asennetun tulostekäärimen â€%s†"
+"kanssa"
-#: io.c:2757
+#: io.c:2880
#, c-format
msgid "output wrapper `%s' failed to open `%s'"
-msgstr ""
+msgstr "tulostekäärin â€%s†epäonnistui avaamaan â€%sâ€"
-#: io.c:2778
+#: io.c:2901
msgid "register_output_processor: received NULL pointer"
-msgstr ""
+msgstr "register_output_processor: vastaanotti NULL-osoittimen"
-#: io.c:2807
+#: io.c:2930
#, c-format
msgid ""
"two-way processor `%s' conflicts with previously installed two-way processor "
"`%s'"
msgstr ""
+"kaksisuuntainen prosessori â€%s†on ristiriidassa aiemmin asennetun "
+"kaksisuuntaisen prosessorin â€%s†kanssa"
-#: io.c:2816
+#: io.c:2939
#, c-format
msgid "two way processor `%s' failed to open `%s'"
-msgstr ""
+msgstr "kaksisuuntainen prosessori â€%s†epäonnistui avaamaan â€%sâ€"
-#: io.c:2923
+#: io.c:3064
#, c-format
msgid "data file `%s' is empty"
msgstr "data-tiedosto â€%s†on tyhjä"
-#: io.c:2965 io.c:2973
+#: io.c:3106 io.c:3114
msgid "could not allocate more input memory"
-msgstr "ei voitu varata lisää syötemuistia"
+msgstr "lisäsyötemuistin varaus epäonnistui"
-#: io.c:3539
+#: io.c:3682
msgid "multicharacter value of `RS' is a gawk extension"
msgstr "â€RSâ€-monimerkkiarvo on gawk-laajennus"
-#: io.c:3628
+#: io.c:3771
msgid "IPv6 communication is not supported"
msgstr "IPv6-viestintää ei tueta"
-#: main.c:388
+#: main.c:405
msgid "empty argument to `-e/--source' ignored"
msgstr "tyhjä argumentti valitsimelle â€-e/--source†ohitetaan"
-#: main.c:478
+#: main.c:495
#, c-format
msgid "%s: option `-W %s' unrecognized, ignored\n"
msgstr "%s: valitsin â€-W %s†on tunnistamaton, ohitetaan\n"
-#: main.c:524
+#: main.c:541
#, c-format
msgid "%s: option requires an argument -- %c\n"
msgstr "%s: valitsin vaatii argumentin -- %c\n"
-#: main.c:545
+#: main.c:562
msgid "environment variable `POSIXLY_CORRECT' set: turning on `--posix'"
msgstr ""
"ympäristömuuttuja â€POSIXLY_CORRECT†asetettu: käännetään päälle valitsin â€--"
"posixâ€"
-#: main.c:551
+#: main.c:568
msgid "`--posix' overrides `--traditional'"
msgstr "valitsin â€--posix†korvaa valitsimen â€--traditionalâ€"
-#: main.c:562
+#: main.c:579
msgid "`--posix'/`--traditional' overrides `--non-decimal-data'"
msgstr ""
"valitsin â€--posix†tai â€--traditional†korvaa valitsimen â€--non-decimal-dataâ€"
-#: main.c:566
+#: main.c:583
#, c-format
msgid "running %s setuid root may be a security problem"
msgstr "suorittaminen â€%s setuid rootâ€-käyttäjänä saattaa olla turvapulma"
-#: main.c:571
-#, fuzzy
+#: main.c:588
msgid "`--posix' overrides `--characters-as-bytes'"
-msgstr "valitsin â€--posix†korvaa valitsimen â€--binaryâ€"
+msgstr "valitsin â€--posix†korvaa valitsimen â€--characters-as-bytesâ€"
-#: main.c:630
+#: main.c:647
#, c-format
msgid "can't set binary mode on stdin (%s)"
-msgstr "ei voi asettaa binaaritilaa vakiosyötteessä (%s)"
+msgstr "binaaritilan asettaminen vakiosyötteessä (%s) epäonnistui"
-#: main.c:633
+#: main.c:650
#, c-format
msgid "can't set binary mode on stdout (%s)"
-msgstr "ei voi asettaa binaaritilaa vakiotulosteessa (%s)"
+msgstr "binaaritilan asettaminen vakiotulosteessa (%s) epäonnistui"
-#: main.c:635
+#: main.c:652
#, c-format
msgid "can't set binary mode on stderr (%s)"
-msgstr "ei voi asettaa binaaritilaa vakiovirheessä (%s)"
+msgstr "binaaritilaa asettaminen vakiovirheessä (%s) epäonnistui"
-#: main.c:693
+#: main.c:710
msgid "no program text at all!"
msgstr "ei ohjelmatekstiä ollenkaan!"
-#: main.c:779
+#: main.c:799
#, c-format
msgid "Usage: %s [POSIX or GNU style options] -f progfile [--] file ...\n"
msgstr ""
"Käyttö: %s [POSIX- tai GNU-tyyliset valitsimet] -f ohjelmatiedosto [--] "
"tiedosto ...\n"
-#: main.c:781
+#: main.c:801
#, c-format
msgid "Usage: %s [POSIX or GNU style options] [--] %cprogram%c file ...\n"
msgstr ""
"Käyttö: %s [POSIX- tai GNU-tyyliset valitsimet] [--] %cohjelma%c "
"tiedosto ...\n"
-#: main.c:786
+#: main.c:806
msgid "POSIX options:\t\tGNU long options: (standard)\n"
msgstr "POSIX-valitsimet:\t\tGNU-pitkät valitsimet: (vakio)\n"
-#: main.c:787
+#: main.c:807
msgid "\t-f progfile\t\t--file=progfile\n"
msgstr "\t-f ohjelmatiedosto\t\t--file=ohjelmatiedosto\n"
-#: main.c:788
+#: main.c:808
msgid "\t-F fs\t\t\t--field-separator=fs\n"
msgstr "\t-F fs\t\t\t--field-separator=fs\n"
-#: main.c:789
+#: main.c:809
msgid "\t-v var=val\t\t--assign=var=val\n"
msgstr "\t-v var=arvo\t\t--assign=muuttuja=arvo\n"
-#: main.c:790
+#: main.c:810
msgid "Short options:\t\tGNU long options: (extensions)\n"
msgstr "Lyhyet valitsimet:\t\tGNU-pitkät valitsimet: (laajennukset)\n"
-#: main.c:791
+#: main.c:811
msgid "\t-b\t\t\t--characters-as-bytes\n"
msgstr "\t-b\t\t\t--characters-as-bytes\n"
-#: main.c:792
+#: main.c:812
msgid "\t-c\t\t\t--traditional\n"
msgstr "\t-c\t\t\t--traditional\n"
-#: main.c:793
+#: main.c:813
msgid "\t-C\t\t\t--copyright\n"
msgstr "\t-C\t\t\t--copyright\n"
-#: main.c:794
+#: main.c:814
msgid "\t-d[file]\t\t--dump-variables[=file]\n"
msgstr "\t-d[tiedosto]\t\t--dump-variables[=tiedosto]\n"
-#: main.c:795
-#, fuzzy
+#: main.c:815
msgid "\t-D[file]\t\t--debug[=file]\n"
-msgstr "\t-p[tiedosto]\t\t--profile[=tiedosto]\n"
+msgstr "\t-D[tiedosto]\t\t--debug[=tiedosto]\n"
-#: main.c:796
+#: main.c:816
msgid "\t-e 'program-text'\t--source='program-text'\n"
msgstr "\t-e 'program-text'\t--source='program-text'\n"
-#: main.c:797
+#: main.c:817
msgid "\t-E file\t\t\t--exec=file\n"
msgstr "\t-E file\t\t\t--exec=tiedosto\n"
-#: main.c:798
+#: main.c:818
msgid "\t-g\t\t\t--gen-pot\n"
msgstr "\t-g\t\t\t--gen-po\n"
-#: main.c:799
+#: main.c:819
msgid "\t-h\t\t\t--help\n"
msgstr "\t-h\t\t\t--help\n"
-#: main.c:800
+#: main.c:820
msgid "\t-i includefile\t\t--include=includefile\n"
-msgstr ""
+msgstr "\t-i include-tiedosto\t\t--include=include-tiedosto\n"
-#: main.c:801
+#: main.c:821
msgid "\t-l library\t\t--load=library\n"
-msgstr ""
+msgstr "\t-l kirjasto\t\t--load=kirjasto\n"
-#: main.c:802
+#: main.c:822
msgid "\t-L [fatal]\t\t--lint[=fatal]\n"
msgstr "\t-L [fatal]\t\t--lint[=fatal]\n"
-#: main.c:803
+#: main.c:823
msgid "\t-n\t\t\t--non-decimal-data\n"
msgstr "\t-n\t\t\t--non-decimal-data\n"
-#: main.c:804
-#, fuzzy
+#: main.c:824
msgid "\t-M\t\t\t--bignum\n"
-msgstr "\t-g\t\t\t--gen-po\n"
+msgstr "\t-M\t\t\t--bignum\n"
-#: main.c:805
+#: main.c:825
msgid "\t-N\t\t\t--use-lc-numeric\n"
msgstr "\t-N\t\t\t--use-lc-numeric\n"
-#: main.c:806
-#, fuzzy
+#: main.c:826
msgid "\t-o[file]\t\t--pretty-print[=file]\n"
-msgstr "\t-p[tiedosto]\t\t--profile[=tiedosto]\n"
+msgstr "\t-o[tiedosto]\t\t--pretty-print[=tiedosto]\n"
-#: main.c:807
+#: main.c:827
msgid "\t-O\t\t\t--optimize\n"
msgstr "\t-O\t\t\t--optimize\n"
-#: main.c:808
+#: main.c:828
msgid "\t-p[file]\t\t--profile[=file]\n"
msgstr "\t-p[tiedosto]\t\t--profile[=tiedosto]\n"
-#: main.c:809
+#: main.c:829
msgid "\t-P\t\t\t--posix\n"
msgstr "\t-P\t\t\t--posix\n"
-#: main.c:810
+#: main.c:830
msgid "\t-r\t\t\t--re-interval\n"
msgstr "\t-r\t\t\t--re-interval\n"
-#: main.c:811
+#: main.c:831
msgid "\t-S\t\t\t--sandbox\n"
msgstr "\t-S\t\t\t--sandbox\n"
-#: main.c:812
+#: main.c:832
msgid "\t-t\t\t\t--lint-old\n"
msgstr "\t-t\t\t\t--lint-old\n"
-#: main.c:813
+#: main.c:833
msgid "\t-V\t\t\t--version\n"
msgstr "\t-V\t\t\t--version\n"
-#: main.c:815
+#: main.c:835
msgid "\t-W nostalgia\t\t--nostalgia\n"
msgstr "\t-W nostalgia\t\t--nostalgia\n"
-#: main.c:818
+#: main.c:838
msgid "\t-Y\t\t--parsedebug\n"
msgstr "\t-Y\t\t--parsedebug\n"
@@ -3119,7 +3146,7 @@ msgstr "\t-Y\t\t--parsedebug\n"
#. for this application. Please add _another line_ with the
#. address for translation bugs.
#. no-wrap
-#: main.c:827
+#: main.c:847
msgid ""
"\n"
"To report bugs, see node `Bugs' in `gawk.info', which is\n"
@@ -3132,7 +3159,7 @@ msgstr ""
"joka on kappale â€Reporting Problems and Bugs†painetussa versiossa.\n"
"\n"
-#: main.c:831
+#: main.c:851
msgid ""
"gawk is a pattern scanning and processing language.\n"
"By default it reads standard input and writes standard output.\n"
@@ -3142,7 +3169,7 @@ msgstr ""
"Oletuksena se lukee vakiosyötettä ja kirjoittaa vakiotulosteeseen.\n"
"\n"
-#: main.c:835
+#: main.c:855
msgid ""
"Examples:\n"
"\tgawk '{ sum += $1 }; END { print sum }' file\n"
@@ -3152,7 +3179,7 @@ msgstr ""
"\tgawk '{ sum += $1 }; END { print sum }' tiedosto\n"
"\tgawk -F: '{ print $1 }' /etc/passwd\n"
-#: main.c:855
+#: main.c:880
#, c-format
msgid ""
"Copyright (C) 1989, 1991-%d Free Software Foundation.\n"
@@ -3171,7 +3198,7 @@ msgstr ""
"ehtojen mukaisesti.\n"
"\n"
-#: main.c:863
+#: main.c:888
msgid ""
"This program is distributed in the hope that it will be useful,\n"
"but WITHOUT ANY WARRANTY; without even the implied warranty of\n"
@@ -3185,7 +3212,7 @@ msgstr ""
"GNU General Public License-ehdoista.\n"
"\n"
-#: main.c:869
+#: main.c:894
msgid ""
"You should have received a copy of the GNU General Public License\n"
"along with this program. If not, see http://www.gnu.org/licenses/.\n"
@@ -3193,16 +3220,16 @@ msgstr ""
"Sinun pitäisi vastaanottaa kopion GNU General Public Licence-lisenssistä\n"
"tämän ohjelman mukana. Jos näin ei ole, katso http://www.gnu.org/licenses/.\n"
-#: main.c:904
+#: main.c:931
msgid "-Ft does not set FS to tab in POSIX awk"
msgstr "-Ft ei aseta FS välilehteen POSIX awk:ssa"
-#: main.c:1181
+#: main.c:1208
#, c-format
msgid "unknown value for field spec: %d\n"
msgstr "tuntematon arvo kenttämääritteelle: %d\n"
-#: main.c:1279
+#: main.c:1306
#, c-format
msgid ""
"%s: `%s' argument to `-v' not in `var=value' form\n"
@@ -3211,107 +3238,105 @@ msgstr ""
"%s: â€%s†argumentti valitsimelle â€-v†ei ole â€var=arvoâ€-muodossa\n"
"\n"
-#: main.c:1305
+#: main.c:1332
#, c-format
msgid "`%s' is not a legal variable name"
msgstr "â€%s†ei ole laillinen muuttujanimi"
-#: main.c:1308
+#: main.c:1335
#, 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:1312
+#: main.c:1339
#, c-format
msgid "cannot use gawk builtin `%s' as variable name"
-msgstr "ei voi käyttää gawk-ohjelman sisäistä â€%sâ€-määrittelyä muuttujanimenä"
+msgstr ""
+"gawk-ohjelman sisäisen â€%sâ€-määrittelyn käyttö muuttujanimenä epäonnistui"
-#: main.c:1317
+#: main.c:1344
#, c-format
msgid "cannot use function `%s' as variable name"
-msgstr "funktionimeä â€%s†ei voi käyttää muuttujanimenä"
+msgstr "funktionimen â€%s†käyttö muuttujanimenä epäonnistui"
-#: main.c:1370
+#: main.c:1397
msgid "floating point exception"
msgstr "liukulukupoikkeus"
-#: main.c:1377
+#: main.c:1404
msgid "fatal error: internal error"
msgstr "tuhoisa virhe: sisäinen virhe"
-#: main.c:1392
+#: main.c:1419
msgid "fatal error: internal error: segfault"
msgstr "tuhoisa virhe: sisäinen virhe: segmenttivirhe"
-#: main.c:1404
+#: main.c:1431
msgid "fatal error: internal error: stack overflow"
msgstr "tuhoisa virhe: sisäinen virhe: pinoylivuoto"
-#: main.c:1463
+#: main.c:1490
#, c-format
msgid "no pre-opened fd %d"
msgstr "ei avattu uudelleen tiedostomäärittelijää %d"
-#: main.c:1470
+#: main.c:1497
#, c-format
msgid "could not pre-open /dev/null for fd %d"
-msgstr "ei voitu avata uudelleen laitetta /dev/null tiedostomäärittelijälle %d"
+msgstr ""
+"laitteen /dev/null avaaminen uudelleen tiedostomäärittelijälle %d epäonnistui"
#: mpfr.c:550
-#, fuzzy, c-format
+#, c-format
msgid "PREC value `%.*s' is invalid"
-msgstr "BINMODE-arvo â€%s†on virheellinen, käsiteltiin arvona 3"
+msgstr "PREC-arvo â€%.*s†on virheellinen"
#: mpfr.c:608
-#, fuzzy, c-format
+#, c-format
msgid "RNDMODE value `%.*s' is invalid"
-msgstr "BINMODE-arvo â€%s†on virheellinen, käsiteltiin arvona 3"
+msgstr "RNDMODE-arvo â€%.*s†on virheellinen"
#: mpfr.c:698
-#, fuzzy, c-format
+#, c-format
msgid "%s: received non-numeric argument"
-msgstr "cos: vastaanotettu argumentti ei ole numeerinen"
+msgstr "%s: vastaanotettu argumentti ei ole numeerinen"
#: mpfr.c:800
-#, fuzzy
msgid "compl(%Rg): negative value will give strange results"
-msgstr "compl(%lf): negatiiviset arvot antavat outoja tuloksia"
+msgstr "compl(%Rg): negatiivinen arvo antaa outoja tuloksia"
#: mpfr.c:804
-#, fuzzy
msgid "comp(%Rg): fractional value will be truncated"
-msgstr "compl(%lf): jaosarvo typistetään"
+msgstr "compl(%Rg): jaosarvo typistetään"
#: mpfr.c:816
-#, fuzzy, c-format
+#, c-format
msgid "cmpl(%Zd): negative values will give strange results"
-msgstr "compl(%lf): negatiiviset arvot antavat outoja tuloksia"
+msgstr "compl(%Zd): negatiiviset arvot antavat outoja tuloksia"
#: mpfr.c:835
-#, fuzzy, c-format
+#, c-format
msgid "%s: received non-numeric argument #%d"
-msgstr "cos: vastaanotettu argumentti ei ole numeerinen"
+msgstr "%s: vastaanotettu argumentti #%d ei ole numeerinen"
#: mpfr.c:845
msgid "%s: argument #%d has invalid value %Rg, using 0"
-msgstr ""
+msgstr "%s: argumentilla #%d on virheellinen arvo %Rg, käytetään 0"
#: mpfr.c:857
-#, fuzzy
msgid "%s: argument #%d negative value %Rg will give strange results"
-msgstr "compl(%lf): negatiiviset arvot antavat outoja tuloksia"
+msgstr "%s: argumentin #%d negatiivinen arvo %Rg antaa outoja tuloksia"
#: mpfr.c:863
-#, fuzzy
msgid "%s: argument #%d fractional value %Rg will be truncated"
-msgstr "or(%lf, %lf): jaosarvot typistetään"
+msgstr "%s: argumentin #%d jaosarvo %Rg typistetään"
#: mpfr.c:878
-#, fuzzy, c-format
+#, c-format
msgid "%s: argument #%d negative value %Zd will give strange results"
-msgstr "compl(%lf): negatiiviset arvot antavat outoja tuloksia"
+msgstr "%s: argumentin #%d negatiivinen arvo %Zd antaa outoja tuloksia"
-#: msg.c:61
+#: msg.c:68
#, c-format
msgid "cmd. line:"
msgstr "komentorivi:"
@@ -3358,23 +3383,24 @@ msgstr ""
#: posix/gawkmisc.c:177
#, c-format
msgid "%s %s `%s': could not get fd flags: (fcntl F_GETFD: %s)"
-msgstr "%s %s â€%sâ€: ei voitu hakea fd-lippuja: (fcntl F_GETFD: %s)"
+msgstr "%s %s â€%sâ€: fd-lippujen hakeminen epäonnistui: (fcntl F_GETFD: %s)"
#: posix/gawkmisc.c:189
#, c-format
msgid "%s %s `%s': could not set close-on-exec: (fcntl F_SETFD: %s)"
-msgstr "%s %s â€%sâ€: ei voitu asettaa close-on-exec: (fcntl F_SETFD: %s)"
+msgstr ""
+"%s %s â€%sâ€: close-on-exec -asettaminen epäonnistui: (fcntl F_SETFD: %s)"
-#: profile.c:70
+#: profile.c:71
#, c-format
msgid "could not open `%s' for writing: %s"
-msgstr "ei voitu avata tiedostoa â€%s†kirjoittamista varten: %s"
+msgstr "tiedoston â€%s†avaaminen kirjoittamista varten epäonnistui: %s"
-#: profile.c:72
+#: profile.c:73
msgid "sending profile to standard error"
msgstr "lähetetään profiili vakiovirheeseen"
-#: profile.c:188
+#: profile.c:193
#, c-format
msgid ""
"\t# %s block(s)\n"
@@ -3383,7 +3409,7 @@ msgstr ""
"\t# %s-lohko(t)\n"
"\n"
-#: profile.c:193
+#: profile.c:198
#, c-format
msgid ""
"\t# Rule(s)\n"
@@ -3392,29 +3418,30 @@ msgstr ""
"\t# Säännöt\n"
"\n"
-#: profile.c:267
+#: profile.c:272
#, c-format
msgid "internal error: %s with null vname"
msgstr "sisäinen virhe: %s null vname-arvolla"
-#: profile.c:530
-#, fuzzy
+#: profile.c:537
msgid "internal error: builtin with null fname"
-msgstr "sisäinen virhe: %s null vname-arvolla"
+msgstr "sisäinen virhe: builtin null-funktionimellä"
-#: profile.c:942
+#: profile.c:949
#, c-format
msgid ""
"\t# Loaded extensions (-l and/or @load)\n"
"\n"
msgstr ""
+"\t# Ladatut laajennukset (-l ja/tai @load)\n"
+"\n"
-#: profile.c:965
+#: profile.c:972
#, c-format
msgid "\t# gawk profile, created %s\n"
msgstr "\t# gawk-profiili, luotu %s\n"
-#: profile.c:1351
+#: profile.c:1475
#, c-format
msgid ""
"\n"
@@ -3423,17 +3450,12 @@ msgstr ""
"\n"
"\t# Funktiot, luetteloitu aakkosjärjestyksessä\n"
-#: profile.c:1389
+#: profile.c:1513
#, c-format
msgid "redir2str: unknown redirection type %d"
msgstr "redir2str: tuntematon edelleenohjaustyyppi %d"
-#: re.c:583
-#, c-format
-msgid "range of the form `[%c-%c]' is locale dependent"
-msgstr "muodon â€[%c-%c]†lukualue on paikallisasetuksesta riippuvainen"
-
-#: re.c:610
+#: re.c:607
#, c-format
msgid "regexp component `%.*s' should probably be `[%.*s]'"
msgstr ""
@@ -3503,50 +3525,33 @@ msgstr "Pariton ) tai \\)"
msgid "No previous regular expression"
msgstr "Ei edellistä säännöllistä lauseketta"
-#: symbol.c:740
+#: symbol.c:741
msgid "can not pop main context"
-msgstr ""
+msgstr "pääsisällön pop-toiminto epäonnistui"
-#, fuzzy
-#~ msgid "[s]printf called with no arguments"
-#~ msgstr "sqrt: kutsuttu negatiivisella argumentilla %g"
+#~ msgid "range of the form `[%c-%c]' is locale dependent"
+#~ msgstr "muodon â€[%c-%c]†lukualue on paikallisasetuksesta riippuvainen"
-#~ msgid "`-m[fr]' option irrelevant in gawk"
-#~ msgstr "â€-m[fr]â€-valitsin asiaanliittymätön gawk:ssa"
-
-#~ msgid "-m option usage: `-m[fr] nnn'"
-#~ msgstr "-m valitsinkäyttö: â€-m[fr] nnnâ€"
-
-#, fuzzy
-#~ msgid "%s: received non-numeric first argument"
-#~ msgstr "or: ensimmäinen vastaanotettu argumentti ei ole numeerinen"
-
-#, fuzzy
-#~ msgid "%s: received non-numeric second argument"
-#~ msgstr "or: toinen vastaanotettu argumentti ei ole numeerinen"
+#~ msgid "attempt to use function `%s' as an array"
+#~ msgstr "yritettiin käyttää funktiota â€%s†taulukkona"
-#, fuzzy
-#~ msgid "%s(%Rg, ..): negative values will give strange results"
-#~ msgstr "or(%lf, %lf): negatiiviset arvot antavat outoja tuloksia"
+#~ msgid "reference to uninitialized element `%s[\"%.*s\"]'"
+#~ msgstr "viite alustamattomaan elementtiin â€%s[\"%.*s\"]â€"
-#, fuzzy
-#~ msgid "%s(%Rg, ..): fractional values will be truncated"
-#~ msgstr "or(%lf, %lf): jaosarvot typistetään"
+#~ msgid "subscript of array `%s' is null string"
+#~ msgstr "taulukon alaindeksi â€%s†on null-merkkijono"
-#, fuzzy
-#~ msgid "%s(%Zd, ..): negative values will give strange results"
-#~ msgstr "or(%lf, %lf): negatiiviset arvot antavat outoja tuloksia"
+#~ msgid "%s: empty (null)\n"
+#~ msgstr "%s: tyhjä (null)\n"
-#, fuzzy
-#~ msgid "%s(.., %Rg): negative values will give strange results"
-#~ msgstr "or(%lf, %lf): negatiiviset arvot antavat outoja tuloksia"
+#~ msgid "%s: empty (zero)\n"
+#~ msgstr "%s: tyhjä (nolla)\n"
-#, fuzzy
-#~ msgid "%s(.., %Zd): negative values will give strange results"
-#~ msgstr "or(%lf, %lf): negatiiviset arvot antavat outoja tuloksia"
+#~ msgid "%s: table_size = %d, array_size = %d\n"
+#~ msgstr "%s: table_size = %d, array_size = %d\n"
-#~ msgid "`%s' is a Bell Labs extension"
-#~ msgstr "â€%s†on Bell Labs -laajennus"
+#~ msgid "%s: array_ref to %s\n"
+#~ msgstr "%s: array_ref-viite taulukkoon %s\n"
#~ msgid "`nextfile' is a gawk extension"
#~ msgstr "â€nextfile†on gawk-laajennus"
@@ -3554,14 +3559,29 @@ msgstr ""
#~ msgid "`delete array' is a gawk extension"
#~ msgstr "â€delete array†on gawk-laajennus"
+#~ msgid "use of non-array as array"
+#~ msgstr "ei-taulukon käyttö taulukkona"
+
+#~ msgid "`%s' is a Bell Labs extension"
+#~ msgstr "â€%s†on Bell Labs -laajennus"
+
#~ msgid "and: received non-numeric first argument"
#~ msgstr "and: ensimmäinen vastaanotettu argumentti ei ole numeerinen"
#~ msgid "and: received non-numeric second argument"
#~ msgstr "and: toinen vastaanotettu argumentti ei ole numeerinen"
-#~ msgid "and(%lf, %lf): fractional values will be truncated"
-#~ msgstr "and(%lf, %lf): jaosarvot typistetään"
+#~ msgid "or: received non-numeric first argument"
+#~ msgstr "or: ensimmäinen vastaanotettu argumentti ei ole numeerinen"
+
+#~ msgid "or: received non-numeric second argument"
+#~ msgstr "or: toinen vastaanotettu argumentti ei ole numeerinen"
+
+#~ msgid "or(%lf, %lf): negative values will give strange results"
+#~ msgstr "or(%lf, %lf): negatiiviset arvot antavat outoja tuloksia"
+
+#~ msgid "or(%lf, %lf): fractional values will be truncated"
+#~ msgstr "or(%lf, %lf): jaosarvot typistetään"
#~ msgid "xor: received non-numeric first argument"
#~ msgstr "xor: ensimmäinen vastaanotettu argumentti ei ole numeerinen"
@@ -3572,35 +3592,8 @@ msgstr ""
#~ msgid "xor(%lf, %lf): fractional values will be truncated"
#~ msgstr "xor(%lf, %lf): jaosarvot typistetään"
-#~ msgid "Operation Not Supported"
-#~ msgstr "Toimintoa ei tueta"
-
-#~ msgid "attempt to use function `%s' as an array"
-#~ msgstr "yritettiin käyttää funktiota â€%s†taulukkona"
-
-#~ msgid "reference to uninitialized element `%s[\"%.*s\"]'"
-#~ msgstr "viite alustamattomaan elementtiin â€%s[\"%.*s\"]â€"
-
-#~ msgid "subscript of array `%s' is null string"
-#~ msgstr "taulukon alaindeksi â€%s†on null-merkkijono"
-
-#~ msgid "%s: empty (null)\n"
-#~ msgstr "%s: tyhjä (null)\n"
-
-#~ msgid "%s: empty (zero)\n"
-#~ msgstr "%s: tyhjä (nolla)\n"
-
-#~ msgid "%s: table_size = %d, array_size = %d\n"
-#~ msgstr "%s: table_size = %d, array_size = %d\n"
-
-#~ msgid "%s: array_ref to %s\n"
-#~ msgstr "%s: array_ref-viite taulukkoon %s\n"
-
-#~ msgid "use of non-array as array"
-#~ msgstr "ei-taulukon käyttö taulukkona"
-
#~ msgid "can't use function name `%s' as variable or array"
-#~ msgstr "funktionimeä â€%s†ei voi käyttää muuttujana tai taulukkona"
+#~ msgstr "funktionimeä â€%s†käyttö muuttujana tai taulukkona epäonnistui"
#~ msgid "assignment used in conditional context"
#~ msgstr "sijoitusta käytetty ehdollisessa kontekstissa"
@@ -3632,11 +3625,20 @@ msgstr ""
#~ msgid "Sorry, don't know how to interpret `%s'"
#~ msgstr "Ei osata tulkita kohdetta â€%sâ€"
+#~ msgid "Operation Not Supported"
+#~ msgstr "Toimintoa ei tueta"
+
+#~ msgid "`-m[fr]' option irrelevant in gawk"
+#~ msgstr "â€-m[fr]â€-valitsin asiaanliittymätön gawk:ssa"
+
+#~ msgid "-m option usage: `-m[fr] nnn'"
+#~ msgstr "-m valitsinkäyttö: â€-m[fr] nnnâ€"
+
#~ msgid "\t-R file\t\t\t--command=file\n"
#~ msgstr "\t-R tiedosto\t\t\t--exec=tiedosto\n"
#~ msgid "could not find groups: %s"
-#~ msgstr "ei voitu löytää ryhmiä: %s"
+#~ msgstr "ryhmien löytäminen epäonnistui: %s"
#~ msgid "assignment is not allowed to result of builtin function"
#~ msgstr "sijoitusta ei sallita sisäänrakennetun funktion tulokselle"
@@ -3701,7 +3703,7 @@ msgstr ""
#~ msgstr "/inet/raw-palvelin ei ole vielä valitettavasti valmis"
#~ msgid "file `%s' is a directory"
-#~ msgstr "tiedosto `%s' on hakemisto"
+#~ msgstr "tiedosto â€%s†on hakemisto"
#~ msgid "use `PROCINFO[\"%s\"]' instead of `%s'"
#~ msgstr "käytä â€PROCINFO[\"%s\"]†eikä â€%sâ€"
@@ -3722,7 +3724,7 @@ msgstr ""
#~ msgstr "\t-W usage\t\t--usage\n"
#~ msgid "can't convert string to float"
-#~ msgstr "ei voi muuntaa merkkijonoa liukuluvuksi"
+#~ msgstr "merkkijonon muuntaminen liukuluvuksi epäonnistui"
#~ msgid "# treated internally as `delete'"
#~ msgstr "# käsitelty sisäisesti kuin â€deleteâ€"
@@ -3745,7 +3747,11 @@ msgstr ""
#~ msgid "can't open two way socket `%s' for input/output (%s)"
#~ msgstr ""
-#~ "ei voi avata kaksisuuntaista pistoketta â€%s†syötteelle/tulosteelle (%s)"
+#~ "kaksisuuntaisen vastakkeen â€%s†avaaminen syötteelle/tulosteelle (%s) "
+#~ "epäonnistui"
#~ msgid "attempt to use scalar `%s' as array"
#~ msgstr "yritettiin käyttää skalaaria â€%s†taulukkona"
+
+#~ msgid "cannot pop main context"
+#~ msgstr "pääsisällön pop-toiminto epäonnistui"
diff --git a/po/fr.gmo b/po/fr.gmo
index 2ed0420a..c962ab71 100644
--- a/po/fr.gmo
+++ b/po/fr.gmo
Binary files differ
diff --git a/po/fr.po b/po/fr.po
index 5c1ef226..2a951b29 100644
--- a/po/fr.po
+++ b/po/fr.po
@@ -7,10 +7,10 @@
#
msgid ""
msgstr ""
-"Project-Id-Version: gawk 4.0.75\n"
+"Project-Id-Version: gawk 4.1.0b\n"
"Report-Msgid-Bugs-To: arnold@skeeve.com\n"
-"POT-Creation-Date: 2013-05-09 16:05+0300\n"
-"PO-Revision-Date: 2013-04-23 23:41+0200\n"
+"POT-Creation-Date: 2014-04-08 19:23+0300\n"
+"PO-Revision-Date: 2014-01-16 00:31+0100\n"
"Last-Translator: Jean-Philippe Guérard <jean-philippe.guerard@corbeaunoir."
"org>\n"
"Language-Team: French <traduc@traduc.org>\n"
@@ -20,84 +20,84 @@ msgstr ""
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=(n > 1);\n"
-#: array.c:254
+#: array.c:256
#, c-format
msgid "from %s"
msgstr "de %s"
-#: array.c:354
+#: array.c:357
msgid "attempt to use a scalar value as array"
msgstr "tentative d'utiliser un scalaire comme tableau"
-#: array.c:356
+#: array.c:359
#, c-format
msgid "attempt to use scalar parameter `%s' as an array"
msgstr "tentative d'utiliser le paramètre scalaire « %s » comme tableau"
-#: array.c:359
+#: array.c:362
#, c-format
msgid "attempt to use scalar `%s' as an array"
msgstr "tentative d'utiliser le scalaire « %s » comme tableau"
-#: array.c:406 array.c:573 builtin.c:85 builtin.c:1591 builtin.c:1637
-#: builtin.c:1650 builtin.c:2078 builtin.c:2092 eval.c:1121 eval.c:1125
-#: eval.c:1524
+#: array.c:409 array.c:576 builtin.c:85 builtin.c:1615 builtin.c:1661
+#: builtin.c:1674 builtin.c:2102 builtin.c:2116 eval.c:1122 eval.c:1126
+#: eval.c:1531
#, c-format
msgid "attempt to use array `%s' in a scalar context"
msgstr "tentative d'utilisation du tableau « %s » dans un contexte scalaire"
-#: array.c:580
+#: array.c:583
#, c-format
msgid "delete: index `%s' not in array `%s'"
msgstr "delete : l'indice « %s » est absent du tableau « %s »"
-#: array.c:594
+#: array.c:597
#, c-format
msgid "attempt to use scalar `%s[\"%.*s\"]' as an array"
msgstr "tentative d'utiliser le scalaire « %s[\"%.*s\"] » comme tableau"
-#: array.c:773
+#: array.c:776
msgid "adump: first argument not an array"
msgstr "adump : le 1er argument n'est pas un tableau"
-#: array.c:812
+#: array.c:815
msgid "asort: second argument not an array"
msgstr "asort : le 2e argument n'est pas un tableau"
-#: array.c:813
+#: array.c:816
msgid "asorti: second argument not an array"
msgstr "asorti : le 2e argument n'est pas un tableau"
-#: array.c:820
+#: array.c:823
msgid "asort: first argument not an array"
msgstr "asort : le 1er argument n'est pas un tableau"
-#: array.c:821
+#: array.c:824
msgid "asorti: first argument not an array"
msgstr "asorti : le 1er argument n'est pas un tableau"
-#: array.c:828
+#: array.c:831
msgid "asort: cannot use a subarray of first arg for second arg"
msgstr "asort : le 2e argument ne doit pas être un sous-tableau du 1er"
-#: array.c:829
+#: array.c:832
msgid "asorti: cannot use a subarray of first arg for second arg"
msgstr "asorti : le 2e argument ne doit pas être un sous-tableau du 1er"
-#: array.c:834
+#: array.c:837
msgid "asort: cannot use a subarray of second arg for first arg"
msgstr "asort : le 1er argument ne doit pas être un sous-tableau du 2e"
-#: array.c:835
+#: array.c:838
msgid "asorti: cannot use a subarray of second arg for first arg"
msgstr "asorti : le 1er argument ne doit pas être un sous-tableau du 2e"
-#: array.c:1309
+#: array.c:1314
#, c-format
msgid "`%s' is invalid as a function name"
msgstr "« %s » n'est pas un nom de fonction valide"
-#: array.c:1313
+#: array.c:1318
#, c-format
msgid "sort comparison function `%s' is not defined"
msgstr "la fonction de comparaison « %s » du tri n'est pas définie"
@@ -138,11 +138,11 @@ msgstr "le corps du switch comporte des cas répétés : %s"
msgid "duplicate `default' detected in switch body"
msgstr "plusieurs « default » ont été détectés dans le corps du switch"
-#: awkgram.y:796 awkgram.y:3699
+#: awkgram.y:796 awkgram.y:3723
msgid "`break' is not allowed outside a loop or switch"
msgstr "« break » est interdit en dehors d'une boucle ou d'un switch"
-#: awkgram.y:805 awkgram.y:3691
+#: awkgram.y:805 awkgram.y:3715
msgid "`continue' is not allowed outside a loop"
msgstr "« continue » est interdit en dehors d'une boucle ou d'un switch"
@@ -235,277 +235,277 @@ msgstr ""
msgid "invalid subscript expression"
msgstr "expression indice incorrecte"
-#: awkgram.y:2024 awkgram.y:2044 gawkapi.c:206 gawkapi.c:224 msg.c:119
+#: awkgram.y:2048 awkgram.y:2068 gawkapi.c:206 gawkapi.c:224 msg.c:126
msgid "warning: "
msgstr "avertissement : "
-#: awkgram.y:2042 gawkapi.c:192 gawkapi.c:221 msg.c:151
+#: awkgram.y:2066 gawkapi.c:192 gawkapi.c:221 msg.c:158
msgid "fatal: "
msgstr "fatal : "
-#: awkgram.y:2092
+#: awkgram.y:2116
msgid "unexpected newline or end of string"
msgstr "fin de chaîne ou passage à la ligne inattendu"
-#: awkgram.y:2359 awkgram.y:2435 awkgram.y:2658 debug.c:517 debug.c:533
-#: debug.c:2792 debug.c:5040
+#: awkgram.y:2383 awkgram.y:2459 awkgram.y:2682 debug.c:523 debug.c:539
+#: debug.c:2812 debug.c:5055
#, c-format
msgid "can't open source file `%s' for reading (%s)"
msgstr "impossible d'ouvrir le fichier source « %s » en lecture (%s)"
-#: awkgram.y:2360 awkgram.y:2485
+#: awkgram.y:2384 awkgram.y:2509
#, c-format
msgid "can't open shared library `%s' for reading (%s)"
msgstr "impossible d'ouvrir la bibliothèque partagée « %s » en lecture (%s)"
-#: awkgram.y:2362 awkgram.y:2436 awkgram.y:2486 builtin.c:130 debug.c:5191
+#: awkgram.y:2386 awkgram.y:2460 awkgram.y:2510 builtin.c:135 debug.c:5206
msgid "reason unknown"
msgstr "raison inconnue"
-#: awkgram.y:2371 awkgram.y:2395
+#: awkgram.y:2395 awkgram.y:2419
#, c-format
msgid "can't include `%s' and use it as a program file"
msgstr "impossible d'inclure « %s » et de l'utiliser comme extension"
-#: awkgram.y:2384
+#: awkgram.y:2408
#, c-format
msgid "already included source file `%s'"
msgstr "le fichier source « %s » a déjà été intégré"
-#: awkgram.y:2385
+#: awkgram.y:2409
#, c-format
msgid "already loaded shared library `%s'"
msgstr "la bibliothèque partagée « %s » est déjà chargée"
-#: awkgram.y:2420
+#: awkgram.y:2444
msgid "@include is a gawk extension"
msgstr "@include est une extension gawk"
-#: awkgram.y:2426
+#: awkgram.y:2450
msgid "empty filename after @include"
msgstr "Le nom de fichier après @include est vide"
-#: awkgram.y:2470
+#: awkgram.y:2494
msgid "@load is a gawk extension"
msgstr "@load est une extension gawk"
-#: awkgram.y:2476
+#: awkgram.y:2500
msgid "empty filename after @load"
msgstr "Le nom de fichier après @load est vide"
-#: awkgram.y:2610
+#: awkgram.y:2634
msgid "empty program text on command line"
msgstr "le programme indiqué en ligne de commande est vide"
-#: awkgram.y:2725
+#: awkgram.y:2749
#, c-format
msgid "can't read sourcefile `%s' (%s)"
msgstr "impossible de lire le fichier source « %s » (%s)"
-#: awkgram.y:2736
+#: awkgram.y:2760
#, c-format
msgid "source file `%s' is empty"
msgstr "le fichier source « %s » est vide"
-#: awkgram.y:2913
+#: awkgram.y:2937
msgid "source file does not end in newline"
msgstr "le fichier source ne se termine pas par un passage à la ligne"
-#: awkgram.y:3018
+#: awkgram.y:3042
msgid "unterminated regexp ends with `\\' at end of file"
msgstr ""
"expression rationnelle non refermée terminée par un « \\ » en fin de fichier"
-#: awkgram.y:3042
+#: awkgram.y:3066
#, c-format
msgid "%s: %d: tawk regex modifier `/.../%c' doesn't work in gawk"
msgstr ""
"%s : %d : le modificateur d'expressions rationnelles « /.../%c » de tawk ne "
"marche pas dans gawk"
-#: awkgram.y:3046
+#: awkgram.y:3070
#, c-format
msgid "tawk regex modifier `/.../%c' doesn't work in gawk"
msgstr ""
"le modificateur d'expressions rationnelles « /.../%c » de tawk ne marche pas "
"dans gawk"
-#: awkgram.y:3053
+#: awkgram.y:3077
msgid "unterminated regexp"
msgstr "expression rationnelle non refermée"
-#: awkgram.y:3057
+#: awkgram.y:3081
msgid "unterminated regexp at end of file"
msgstr "expression rationnelle non refermée en fin de fichier"
-#: awkgram.y:3116
+#: awkgram.y:3140
msgid "use of `\\ #...' line continuation is not portable"
msgstr ""
"l'utilisation de « \\ #... » pour prolonger une ligne n'est pas portable"
-#: awkgram.y:3132
+#: awkgram.y:3156
msgid "backslash not last character on line"
msgstr "la barre oblique inverse n'est pas le dernier caractère de la ligne"
-#: awkgram.y:3193
+#: awkgram.y:3217
msgid "POSIX does not allow operator `**='"
msgstr "POSIX n'autorise pas l'opérateur « **= »"
-#: awkgram.y:3195
+#: awkgram.y:3219
msgid "old awk does not support operator `**='"
msgstr "l'ancien awk ne dispose pas de l'opérateur « **= »"
-#: awkgram.y:3204
+#: awkgram.y:3228
msgid "POSIX does not allow operator `**'"
msgstr "POSIX n'autorise pas l'opérateur « ** »"
-#: awkgram.y:3206
+#: awkgram.y:3230
msgid "old awk does not support operator `**'"
msgstr "l'ancien awk ne dispose pas de l'opérateur « ** »"
-#: awkgram.y:3241
+#: awkgram.y:3265
msgid "operator `^=' is not supported in old awk"
msgstr "l'ancien awk ne dispose pas de l'opérateur « ^= »"
-#: awkgram.y:3249
+#: awkgram.y:3273
msgid "operator `^' is not supported in old awk"
msgstr "l'ancien awk ne dispose pas de l'opérateur « ^ »"
-#: awkgram.y:3342 awkgram.y:3358 command.y:1178
+#: awkgram.y:3366 awkgram.y:3382 command.y:1178
msgid "unterminated string"
msgstr "chaîne non refermée"
-#: awkgram.y:3579
+#: awkgram.y:3603
#, c-format
msgid "invalid char '%c' in expression"
msgstr "caractère incorrect « %c » dans l'expression"
-#: awkgram.y:3626
+#: awkgram.y:3650
#, c-format
msgid "`%s' is a gawk extension"
msgstr "« %s » est une extension gawk"
-#: awkgram.y:3631
+#: awkgram.y:3655
#, c-format
msgid "POSIX does not allow `%s'"
msgstr "POSIX n'autorise pas « %s »"
-#: awkgram.y:3639
+#: awkgram.y:3663
#, c-format
msgid "`%s' is not supported in old awk"
msgstr "l'ancien awk ne dispose pas de « %s »"
-#: awkgram.y:3729
+#: awkgram.y:3753
msgid "`goto' considered harmful!\n"
msgstr "« goto est jugé dangereux ! » (Edsger W. Dijkstra)\n"
-#: awkgram.y:3763
+#: awkgram.y:3787
#, c-format
msgid "%d is invalid as number of arguments for %s"
msgstr "%d n'est pas un nombre d'arguments valide de %s"
-#: awkgram.y:3798
+#: awkgram.y:3822
#, c-format
msgid "%s: string literal as last arg of substitute has no effect"
msgstr ""
"%s : une chaîne littérale en dernier argument d'une substitution est sans "
"effet"
-#: awkgram.y:3803
+#: awkgram.y:3827
#, c-format
msgid "%s third parameter is not a changeable object"
msgstr "le 3e paramètre de %s n'est pas un objet modifiable"
-#: awkgram.y:3886 awkgram.y:3889
+#: awkgram.y:3910 awkgram.y:3913
msgid "match: third argument is a gawk extension"
msgstr "match : le 3e argument est une extension gawk"
-#: awkgram.y:3943 awkgram.y:3946
+#: awkgram.y:3967 awkgram.y:3970
msgid "close: second argument is a gawk extension"
msgstr "close : le 2e argument est une extension gawk"
-#: awkgram.y:3958
+#: awkgram.y:3982
msgid "use of dcgettext(_\"...\") is incorrect: remove leading underscore"
msgstr ""
"utilisation incorrecte de dcgettext(_\"...\") : enlevez le souligné de tête"
-#: awkgram.y:3973
+#: awkgram.y:3997
msgid "use of dcngettext(_\"...\") is incorrect: remove leading underscore"
msgstr ""
"utilisation incorrecte de dcngettext(_\"...\") : enlevez le souligné de tête"
-#: awkgram.y:3992
-#, fuzzy
+#: awkgram.y:4016
msgid "index: regexp constant as second argument is not allowed"
-msgstr "index : le second argument n'est pas une chaîne"
+msgstr ""
+"index : le second argument ne peut être une expression rationnelle constante"
-#: awkgram.y:4045
+#: awkgram.y:4069
#, c-format
msgid "function `%s': parameter `%s' shadows global variable"
msgstr "fonction « %s » : le paramètre « %s » masque la variable globale"
-#: awkgram.y:4102 debug.c:4021 debug.c:4064 debug.c:5189
+#: awkgram.y:4126 debug.c:4041 debug.c:4084 debug.c:5204
#, c-format
msgid "could not open `%s' for writing (%s)"
msgstr "impossible d'ouvrir « %s » en écriture (%s)"
-#: awkgram.y:4103
+#: awkgram.y:4127
msgid "sending variable list to standard error"
msgstr "envoi de la liste des variables vers la sortie d'erreur standard"
-#: awkgram.y:4111
+#: awkgram.y:4135
#, c-format
msgid "%s: close failed (%s)"
msgstr "%s : échec de la fermeture (%s)"
-#: awkgram.y:4136
+#: awkgram.y:4160
msgid "shadow_funcs() called twice!"
msgstr "shadows_funcs() a été appelé deux fois !"
-#: awkgram.y:4144
+#: awkgram.y:4168
msgid "there were shadowed variables."
msgstr "il y avait des variables masquées."
-#: awkgram.y:4215
+#: awkgram.y:4239
#, c-format
msgid "function name `%s' previously defined"
msgstr "nom de fonction « %s » déjà défini"
-#: awkgram.y:4261
+#: awkgram.y:4285
#, c-format
msgid "function `%s': can't use function name as parameter name"
msgstr ""
"fonction « %s » : impossible d'utiliser un nom de fonction comme paramètre"
-#: awkgram.y:4264
+#: awkgram.y:4288
#, c-format
msgid "function `%s': can't use special variable `%s' as a function parameter"
msgstr ""
"fonction « %s » : impossible d'utiliser la variable spéciale « %s » comme "
"paramètre d'une fonction"
-#: awkgram.y:4272
+#: awkgram.y:4296
#, c-format
msgid "function `%s': parameter #%d, `%s', duplicates parameter #%d"
msgstr ""
"fonction « %s » : paramètre #%d, « %s » est un doublon du paramètre #%d"
-#: awkgram.y:4366 awkgram.y:4372
+#: awkgram.y:4383 awkgram.y:4389
#, c-format
msgid "function `%s' called but never defined"
msgstr "fonction « %s » appelée sans être définie"
-#: awkgram.y:4376
+#: awkgram.y:4393
#, c-format
msgid "function `%s' defined but never called directly"
msgstr "fonction « %s » définie mais jamais appelée directement"
-#: awkgram.y:4408
+#: awkgram.y:4425
#, c-format
msgid "regexp constant for parameter #%d yields boolean value"
msgstr "le paramètre #%d, une expr. rationnelle constante, fournit un booléen"
-#: awkgram.y:4467
+#: awkgram.y:4484
#, c-format
msgid ""
"function `%s' called with space between name and `(',\n"
@@ -514,236 +514,249 @@ msgstr ""
"fonction « %s » appelée avec un espace entre son nom\n"
"et « ( », ou utilisée comme variable ou tableau"
-#: awkgram.y:4703
+#: awkgram.y:4720
msgid "division by zero attempted"
msgstr "tentative de division par zéro"
-#: awkgram.y:4712
+#: awkgram.y:4729
#, c-format
msgid "division by zero attempted in `%%'"
msgstr "tentative de division par zéro dans « %% »"
-#: builtin.c:128
+# gawk 'BEGIN { $1++ = 1 }'
+#: awkgram.y:5049
+msgid ""
+"cannot assign a value to the result of a field post-increment expression"
+msgstr ""
+"impossible d'assigner une valeur au résultat de la post-incrémentation d'un "
+"champ"
+
+#: awkgram.y:5052
+#, c-format
+msgid "invalid target of assignment (opcode %s)"
+msgstr "cible de l'assignement incorrecte (opcode %s)"
+
+#: builtin.c:133
#, c-format
msgid "%s to \"%s\" failed (%s)"
msgstr "échec de %s vers « %s » (%s)"
-#: builtin.c:129
+#: builtin.c:134
msgid "standard output"
msgstr "sortie standard"
-#: builtin.c:143
+#: builtin.c:148
msgid "exp: received non-numeric argument"
msgstr "exp : l'argument n'est pas numérique"
-#: builtin.c:149
+#: builtin.c:154
#, c-format
msgid "exp: argument %g is out of range"
msgstr "exp : l'argument %g est hors limite"
-#: builtin.c:224
+#: builtin.c:229
#, c-format
msgid "fflush: cannot flush: pipe `%s' opened for reading, not writing"
msgstr ""
"fflush : vidage impossible : le tube « %s » est ouvert en lecture et non en "
"écriture"
-#: builtin.c:227
+#: builtin.c:232
#, c-format
msgid "fflush: cannot flush: file `%s' opened for reading, not writing"
msgstr ""
"fflush : vidage impossible : fichier « %s » ouvert en lecture, pas en "
"écriture"
-#: builtin.c:239
+#: builtin.c:244
#, c-format
msgid "fflush: `%s' is not an open file, pipe or co-process"
msgstr ""
"fflush : « %s » n'est ni un fichier ouvert, ni un tube, ni un co-processus"
-#: builtin.c:357
+#: builtin.c:362
msgid "index: received non-string first argument"
msgstr "index : le premier argument n'est pas une chaîne"
-#: builtin.c:359
+#: builtin.c:364
msgid "index: received non-string second argument"
msgstr "index : le second argument n'est pas une chaîne"
-#: builtin.c:483 mpfr.c:757
+#: builtin.c:488 mpfr.c:757
msgid "int: received non-numeric argument"
msgstr "int : l'argument n'est pas numérique"
-#: builtin.c:520
+#: builtin.c:525
msgid "length: received array argument"
msgstr "length : l'argument reçu est un tableau"
-#: builtin.c:523
+#: builtin.c:528
msgid "`length(array)' is a gawk extension"
msgstr "« length(tableau) » est une extension gawk"
-#: builtin.c:539
+#: builtin.c:544
msgid "length: received non-string argument"
msgstr "length : l'argument n'est pas une chaîne"
-#: builtin.c:570
+#: builtin.c:575
msgid "log: received non-numeric argument"
msgstr "log : l'argument n'est pas numérique"
-#: builtin.c:573
+#: builtin.c:578
#, c-format
msgid "log: received negative argument %g"
msgstr "log : l'argument est négatif %g"
-#: builtin.c:771 builtin.c:776
+#: builtin.c:776 builtin.c:781
msgid "fatal: must use `count$' on all formats or none"
msgstr ""
"fatal : « numéro$ » doit être utilisé pour toutes les formats ou pour aucun"
-#: builtin.c:846
+#: builtin.c:851
#, c-format
msgid "field width is ignored for `%%' specifier"
msgstr "taille du champ de la spécification « %% » ignorée"
-#: builtin.c:848
+#: builtin.c:853
#, c-format
msgid "precision is ignored for `%%' specifier"
msgstr "précision de la spécification « %% » ignorée"
-#: builtin.c:850
+#: builtin.c:855
#, 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:901
+#: builtin.c:906
msgid "fatal: `$' is not permitted in awk formats"
msgstr "fatal : « $ » n'est pas autorisé dans les formats awk"
-#: builtin.c:910
+#: builtin.c:915
msgid "fatal: arg count with `$' must be > 0"
msgstr "fatal : le numéro d'argument de « $ » doit être > 0"
-#: builtin.c:914
+#: builtin.c:919
#, c-format
msgid "fatal: arg count %ld greater than total number of supplied arguments"
msgstr ""
"fatal : le numéro d'argument %ld est > au nombre total d'arguments fournis"
-#: builtin.c:918
+#: builtin.c:923
msgid "fatal: `$' not permitted after period in format"
msgstr "fatal : dans un format, « $ » ne doit pas suivre un point"
-#: builtin.c:934
+#: builtin.c:939
msgid "fatal: no `$' supplied for positional field width or precision"
msgstr ""
"fatal : aucun « $ » fourni pour la taille ou la précision du champ positionné"
-#: builtin.c:1006
+#: builtin.c:1009
msgid "`l' is meaningless in awk formats; ignored"
msgstr "« l » n'a aucun sens dans un format awk ; ignoré"
-#: builtin.c:1010
+#: builtin.c:1013
msgid "fatal: `l' is not permitted in POSIX awk formats"
msgstr "fatal : « l » est interdit dans un format awk POSIX"
-#: builtin.c:1023
+#: builtin.c:1026
msgid "`L' is meaningless in awk formats; ignored"
msgstr "« L » n'a aucun sens dans un format awk ; ignoré"
-#: builtin.c:1027
+#: builtin.c:1030
msgid "fatal: `L' is not permitted in POSIX awk formats"
msgstr "fatal : « L » est interdit dans un format awk POSIX"
-#: builtin.c:1040
+#: builtin.c:1043
msgid "`h' is meaningless in awk formats; ignored"
msgstr "« h » n'a aucun sens dans un format awk ; ignoré"
-#: builtin.c:1044
+#: builtin.c:1047
msgid "fatal: `h' is not permitted in POSIX awk formats"
msgstr "fatal : « h » est interdit dans un format awk POSIX"
-#: builtin.c:1439
+#: builtin.c:1463
#, c-format
msgid "[s]printf: value %g is out of range for `%%%c' format"
msgstr "[s]printf : valeur %g hors limite pour le format « %%%c »"
-#: builtin.c:1537
+#: builtin.c:1561
#, c-format
msgid "ignoring unknown format specifier character `%c': no argument converted"
msgstr "caractère de format inconnu « %c » ignoré : aucun argument converti"
-#: builtin.c:1542
+#: builtin.c:1566
msgid "fatal: not enough arguments to satisfy format string"
msgstr "fatal : pas assez d'arguments pour satisfaire la chaîne de formatage"
-#: builtin.c:1544
+#: builtin.c:1568
msgid "^ ran out for this one"
msgstr "^ à court pour celui-ci"
-#: builtin.c:1551
+#: builtin.c:1575
msgid "[s]printf: format specifier does not have control letter"
msgstr "[s]printf : spécification de format sans lettre de contrôle"
-#: builtin.c:1554
+#: builtin.c:1578
msgid "too many arguments supplied for format string"
msgstr "trop d'arguments pour la chaîne de formatage"
-#: builtin.c:1610
+#: builtin.c:1634
msgid "sprintf: no arguments"
msgstr "sprintf : aucun argument"
-#: builtin.c:1633 builtin.c:1644
+#: builtin.c:1657 builtin.c:1668
msgid "printf: no arguments"
msgstr "printf : aucun argument"
-#: builtin.c:1687
+#: builtin.c:1711
msgid "sqrt: received non-numeric argument"
msgstr "sqrt : l'argument n'est pas numérique"
-#: builtin.c:1691
+#: builtin.c:1715
#, c-format
msgid "sqrt: called with negative argument %g"
msgstr "sqrt : appelé avec un argument négatif %g"
-#: builtin.c:1722
+#: builtin.c:1746
#, c-format
msgid "substr: length %g is not >= 1"
msgstr "substr : la longueur %g n'est pas >= 1"
-#: builtin.c:1724
+#: builtin.c:1748
#, c-format
msgid "substr: length %g is not >= 0"
msgstr "substr : la longueur %g n'est pas >= 0"
-#: builtin.c:1731
+#: builtin.c:1755
#, c-format
msgid "substr: non-integer length %g will be truncated"
msgstr "substr : la longueur %g n'est pas entière, elle sera tronquée"
-#: builtin.c:1736
+#: builtin.c:1760
#, c-format
msgid "substr: length %g too big for string indexing, truncating to %g"
msgstr "substr : la longueur %g est trop grande, tronquée à %g"
-#: builtin.c:1748
+#: builtin.c:1772
#, c-format
msgid "substr: start index %g is invalid, using 1"
msgstr "substr : l'index de début %g n'est pas valide, utilisation de 1"
-#: builtin.c:1753
+#: builtin.c:1777
#, c-format
msgid "substr: non-integer start index %g will be truncated"
msgstr "substr : l'index de début %g n'est pas un entier, il sera tronqué"
-#: builtin.c:1778
+#: builtin.c:1802
msgid "substr: source string is zero length"
msgstr "substr : la chaîne source est de longueur nulle"
-#: builtin.c:1794
+#: builtin.c:1818
#, c-format
msgid "substr: start index %g is past end of string"
msgstr "substr : l'index de début %g est au-delà de la fin de la chaîne"
-#: builtin.c:1802
+#: builtin.c:1826
#, c-format
msgid ""
"substr: length %g at start index %g exceeds length of first argument (%lu)"
@@ -751,195 +764,195 @@ msgstr ""
"substr : la longueur %g à partir de %g dépasse la fin du 1er argument (%lu)"
# Exemple : gawk --lint 'BEGIN { PROCINFO["strftime"]=123 ; print strftime() }'
-#: builtin.c:1876
+#: builtin.c:1900
msgid "strftime: format value in PROCINFO[\"strftime\"] has numeric type"
msgstr ""
"strftime : la valeur de formatage PROCINFO[\"strftime\"] est de type "
"numérique"
-#: builtin.c:1899
+#: builtin.c:1923
msgid "strftime: received non-numeric second argument"
msgstr "strftime : le second argument n'est pas numérique"
-#: builtin.c:1903
+#: builtin.c:1927
msgid "strftime: second argument less than 0 or too big for time_t"
msgstr "strftime: second argument négatif ou trop grand pour time_t"
-#: builtin.c:1910
+#: builtin.c:1934
msgid "strftime: received non-string first argument"
msgstr "strftim : le premier argument n'est pas une chaîne"
-#: builtin.c:1917
+#: builtin.c:1941
msgid "strftime: received empty format string"
msgstr "strftime : la chaîne de formatage est vide"
-#: builtin.c:1983
+#: builtin.c:2007
msgid "mktime: received non-string argument"
msgstr "mktime : l'argument n'est pas une chaîne"
-#: builtin.c:2000
+#: builtin.c:2024
msgid "mktime: at least one of the values is out of the default range"
msgstr ""
"mktime : au moins l'une des valeurs est en dehors de la plage par défaut"
-#: builtin.c:2035
+#: builtin.c:2059
msgid "'system' function not allowed in sandbox mode"
msgstr "La fonction « system » est interdite en isolement (mode sandbox)"
-#: builtin.c:2040
+#: builtin.c:2064
msgid "system: received non-string argument"
msgstr "system : l'argument n'est pas une chaîne"
-#: builtin.c:2160
+#: builtin.c:2184
#, c-format
msgid "reference to uninitialized field `$%d'"
msgstr "référence à un champ non initialisé « $%d »"
-#: builtin.c:2247
+#: builtin.c:2271
msgid "tolower: received non-string argument"
msgstr "tolower : l'argument n'est pas une chaîne"
-#: builtin.c:2281
+#: builtin.c:2305
msgid "toupper: received non-string argument"
msgstr "toupper : l'argument n'est pas une chaîne"
-#: builtin.c:2317 mpfr.c:672
+#: builtin.c:2341 mpfr.c:672
msgid "atan2: received non-numeric first argument"
msgstr "atan2 : le premier argument n'est pas numérique"
-#: builtin.c:2319 mpfr.c:674
+#: builtin.c:2343 mpfr.c:674
msgid "atan2: received non-numeric second argument"
msgstr "atan2 : le second argument n'est pas numérique"
-#: builtin.c:2338
+#: builtin.c:2362
msgid "sin: received non-numeric argument"
msgstr "sin : l'argument n'est pas numérique"
-#: builtin.c:2354
+#: builtin.c:2378
msgid "cos: received non-numeric argument"
msgstr "cos : l'argument n'est pas numérique"
-#: builtin.c:2407 mpfr.c:1156
+#: builtin.c:2431 mpfr.c:1156
msgid "srand: received non-numeric argument"
msgstr "srand : l'argument n'est pas numérique"
-#: builtin.c:2438
+#: builtin.c:2462
msgid "match: third argument is not an array"
msgstr "match : le 3e argument n'est pas un tableau"
-#: builtin.c:2710
+#: builtin.c:2734
msgid "gensub: third argument of 0 treated as 1"
msgstr "gensub : le 3e argument vaut 0, il sera traité comme un 1"
-#: builtin.c:3003
+#: builtin.c:3030
msgid "lshift: received non-numeric first argument"
msgstr "lshift : le premier argument n'est pas numérique"
-#: builtin.c:3005
+#: builtin.c:3032
msgid "lshift: received non-numeric second argument"
msgstr "lshift : le second argument reçu n'est pas numérique"
-#: builtin.c:3011
+#: builtin.c:3038
#, c-format
msgid "lshift(%f, %f): negative values will give strange results"
msgstr ""
"lshift(%f, %f) : les valeurs négatives donnent des résultats inattendus"
-#: builtin.c:3013
+#: builtin.c:3040
#, c-format
msgid "lshift(%f, %f): fractional values will be truncated"
msgstr "lshift(%f, %f) : les valeurs non entières seront tronquées"
-#: builtin.c:3015
+#: builtin.c:3042
#, c-format
msgid "lshift(%f, %f): too large shift value will give strange results"
msgstr "lshift(%f, %f) : un décalage trop grand donne des résultats inattendus"
-#: builtin.c:3040
+#: builtin.c:3067
msgid "rshift: received non-numeric first argument"
msgstr "rshift : le premier argument n'est pas numérique"
-#: builtin.c:3042
+#: builtin.c:3069
msgid "rshift: received non-numeric second argument"
msgstr "rshift : le second argument reçu n'est pas numérique"
-#: builtin.c:3048
+#: builtin.c:3075
#, c-format
msgid "rshift(%f, %f): negative values will give strange results"
msgstr ""
"rshift(%f, %f) : les valeurs négatives donneront des résultats inattendus"
-#: builtin.c:3050
+#: builtin.c:3077
#, c-format
msgid "rshift(%f, %f): fractional values will be truncated"
msgstr "rshift(%f, %f) : les valeurs non entières seront tronquées"
-#: builtin.c:3052
+#: builtin.c:3079
#, c-format
msgid "rshift(%f, %f): too large shift value will give strange results"
msgstr ""
"rshift(%f, %f) : un décalage trop grand donnera des résultats inattendus"
-#: builtin.c:3077 mpfr.c:968
+#: builtin.c:3104 mpfr.c:968
msgid "and: called with less than two arguments"
msgstr "and : appelé avec moins de 2 arguments"
-#: builtin.c:3082
+#: builtin.c:3109
#, c-format
msgid "and: argument %d is non-numeric"
msgstr "and : l'argument %d n'est pas numérique"
-#: builtin.c:3086
+#: builtin.c:3113
#, c-format
msgid "and: argument %d negative value %g will give strange results"
msgstr ""
"and : l'argument %d est négatif (%g) ce qui aura des résultats inattendus"
-#: builtin.c:3109 mpfr.c:1000
+#: builtin.c:3136 mpfr.c:1000
msgid "or: called with less than two arguments"
msgstr "or : appelé avec moins de 2 arguments"
-#: builtin.c:3114
+#: builtin.c:3141
#, c-format
msgid "or: argument %d is non-numeric"
msgstr "or : l'argument %d n'est pas numérique"
-#: builtin.c:3118
+#: builtin.c:3145
#, c-format
msgid "or: argument %d negative value %g will give strange results"
msgstr ""
"or : l'argument %d est négatif (%g) ce qui aura des résultats inattendus"
-#: builtin.c:3140 mpfr.c:1031
+#: builtin.c:3167 mpfr.c:1031
msgid "xor: called with less than two arguments"
msgstr "xor : appelé avec moins de 2 arguments"
-#: builtin.c:3146
+#: builtin.c:3173
#, c-format
msgid "xor: argument %d is non-numeric"
msgstr "xor : l'argument %d n'est pas numérique"
-#: builtin.c:3150
+#: builtin.c:3177
#, c-format
msgid "xor: argument %d negative value %g will give strange results"
msgstr ""
"xor : l'argument %d est négatif (%g) ce qui aura des résultats inattendus"
-#: builtin.c:3175 mpfr.c:787
+#: builtin.c:3202 mpfr.c:787
msgid "compl: received non-numeric argument"
msgstr "compl : l'argument n'est pas numérique"
-#: builtin.c:3181
+#: builtin.c:3208
#, c-format
msgid "compl(%f): negative value will give strange results"
msgstr "compl(%f) : les valeurs négatives donneront des résultats inattendus"
-#: builtin.c:3183
+#: builtin.c:3210
#, c-format
msgid "compl(%f): fractional value will be truncated"
msgstr "compl(%f) : les valeurs non entières seront tronquées"
-#: builtin.c:3352
+#: builtin.c:3379
#, c-format
msgid "dcgettext: `%s' is not a valid locale category"
msgstr "dcgettext : « %s » n'est pas dans un catégorie valide de la locale"
@@ -1066,8 +1079,8 @@ msgstr "clear [[fichier:]N|fonction] - détruit un point d'arrêt existant."
#: command.y:823
msgid ""
-"commands [num] - starts a list of commands to be executed at a breakpoint"
-"(watchpoint) hit."
+"commands [num] - starts a list of commands to be executed at a "
+"breakpoint(watchpoint) hit."
msgstr ""
"commands [no] - débute une liste de commande à lancer aux points d'arrêt ou "
"de surveillance."
@@ -1243,7 +1256,7 @@ msgstr "up [N] - remonte de N trames dans la pile."
msgid "watch var - set a watchpoint for a variable."
msgstr "watch var - définit un point de surveillance pour une variable."
-#: command.y:1011 debug.c:395 msg.c:128
+#: command.y:1011 debug.c:401 msg.c:135
#, c-format
msgid "error: "
msgstr "erreur : "
@@ -1281,96 +1294,96 @@ msgstr "Caractère incorrect"
msgid "undefined command: %s\n"
msgstr "commande inconnue : %s\n"
-#: debug.c:246
+#: debug.c:252
msgid "set or show the number of lines to keep in history file."
msgstr "affiche ou définit le nombre de lignes du fichier d'historique."
-#: debug.c:248
+#: debug.c:254
msgid "set or show the list command window size."
msgstr "affiche ou définit la taille de fenêtre pour la commande list."
-#: debug.c:250
+#: debug.c:256
msgid "set or show gawk output file."
msgstr "affiche ou définit le fichier de sortie de gawk."
-#: debug.c:252
+#: debug.c:258
msgid "set or show debugger prompt."
msgstr "affiche ou définit l'invite du débogueur."
-#: debug.c:254
+#: debug.c:260
msgid "(un)set or show saving of command history (value=on|off)."
msgstr ""
"affiche ou (dés)active l'enregistrement de l'historique (valeur=on|off)."
-#: debug.c:256
+#: debug.c:262
msgid "(un)set or show saving of options (value=on|off)."
msgstr "affiche ou (dés)active l'enregistrement des options (valeur=on|off)."
-#: debug.c:258
+#: debug.c:264
msgid "(un)set or show instruction tracing (value=on|off)."
msgstr "affiche ou (dés)active le traçage des instructions (valeur=on|off)."
-#: debug.c:339
+#: debug.c:345
msgid "program not running."
msgstr "le programme n'est pas en cours."
-#: debug.c:442 debug.c:597
+#: debug.c:448 debug.c:606
#, c-format
msgid "can't read source file `%s' (%s)"
msgstr "impossible de lire le fichier source « %s » (%s)"
-#: debug.c:447
+#: debug.c:453
#, c-format
msgid "source file `%s' is empty.\n"
msgstr "le fichier source « %s » est vide.\n"
-#: debug.c:474
+#: debug.c:480
msgid "no current source file."
msgstr "pas de fichier source courant."
-#: debug.c:499
+#: debug.c:505
#, c-format
msgid "cannot find source file named `%s' (%s)"
msgstr "impossible de trouver le fichier source nommé « %s » (%s)"
-#: debug.c:523
+#: debug.c:529
#, c-format
msgid "WARNING: source file `%s' modified since program compilation.\n"
msgstr ""
"ATTENTION : fichier source « %s » modifié après compilation du programme.\n"
-#: debug.c:542
+#: debug.c:551
#, c-format
msgid "line number %d out of range; `%s' has %d lines"
msgstr "numéro de ligne %d hors limite ; « %s » a %d lignes"
-#: debug.c:602
+#: debug.c:611
#, c-format
msgid "unexpected eof while reading file `%s', line %d"
msgstr "fin de fichier inattendue lors de la lecture de « %s », ligne %d"
-#: debug.c:611
+#: debug.c:620
#, c-format
msgid "source file `%s' modified since start of program execution"
msgstr "fichier source « %s » modifié depuis le début d'exécution du programme"
# c-format
-#: debug.c:723
+#: debug.c:732
#, c-format
msgid "Current source file: %s\n"
msgstr "Fichier source courant : %s\n"
-#: debug.c:724
+#: debug.c:733
#, c-format
msgid "Number of lines: %d\n"
msgstr "Nombre de lignes : %d\n"
-#: debug.c:731
+#: debug.c:740
#, c-format
msgid "Source file (lines): %s (%d)\n"
msgstr "Fichier source (lignes) : %s (%d)\n"
-#: debug.c:745
+#: debug.c:754
msgid ""
"Number Disp Enabled Location\n"
"\n"
@@ -1378,54 +1391,54 @@ msgstr ""
"Numéro Post Activé Position\n"
"\n"
-#: debug.c:756
+#: debug.c:765
#, c-format
msgid "\tno of hits = %ld\n"
msgstr "\tnb occurrences = %ld\n"
-#: debug.c:758
+#: debug.c:767
#, c-format
msgid "\tignore next %ld hit(s)\n"
msgstr "\tignore %ld prochaines occurrences\n"
-#: debug.c:760 debug.c:900
+#: debug.c:769 debug.c:909
#, c-format
msgid "\tstop condition: %s\n"
msgstr "\tcondition d'arrêt : %s\n"
-#: debug.c:762 debug.c:902
+#: debug.c:771 debug.c:911
msgid "\tcommands:\n"
msgstr "\tcommandes :\n"
-#: debug.c:784
+#: debug.c:793
#, c-format
msgid "Current frame: "
msgstr "Trame courante : "
-#: debug.c:787
+#: debug.c:796
#, c-format
msgid "Called by frame: "
msgstr "Appelée par la trame : "
-#: debug.c:791
+#: debug.c:800
#, c-format
msgid "Caller of frame: "
msgstr "Appelant de la trame : "
-#: debug.c:809
+#: debug.c:818
#, c-format
msgid "None in main().\n"
msgstr "Aucune dans main().\n"
-#: debug.c:839
+#: debug.c:848
msgid "No arguments.\n"
msgstr "Aucun argument.\n"
-#: debug.c:840
+#: debug.c:849
msgid "No locals.\n"
msgstr "Aucune variable locale.\n"
-#: debug.c:848
+#: debug.c:857
msgid ""
"All defined variables:\n"
"\n"
@@ -1433,7 +1446,7 @@ msgstr ""
"Liste des variables définies :\n"
"\n"
-#: debug.c:858
+#: debug.c:867
msgid ""
"All defined functions:\n"
"\n"
@@ -1441,7 +1454,7 @@ msgstr ""
"Liste des fonctions définies :\n"
"\n"
-#: debug.c:877
+#: debug.c:886
msgid ""
"Auto-display variables:\n"
"\n"
@@ -1449,7 +1462,7 @@ msgstr ""
"Variables affichées automatiquement :\n"
"\n"
-#: debug.c:880
+#: debug.c:889
msgid ""
"Watch variables:\n"
"\n"
@@ -1457,396 +1470,396 @@ msgstr ""
"Variables inspectées :\n"
"\n"
-#: debug.c:1020
+#: debug.c:1029
#, c-format
msgid "no symbol `%s' in current context\n"
msgstr "pas de symbole « %s » dans le contexte actuel\n"
-#: debug.c:1032 debug.c:1418
+#: debug.c:1041 debug.c:1427
#, c-format
msgid "`%s' is not an array\n"
msgstr "« %s » n'est pas un tableau\n"
-#: debug.c:1046
+#: debug.c:1055
#, c-format
msgid "$%ld = uninitialized field\n"
msgstr "$%ld = champ non initialisé\n"
-#: debug.c:1067
+#: debug.c:1076
#, c-format
msgid "array `%s' is empty\n"
msgstr "le tableau « %s » est vide\n"
-#: debug.c:1110 debug.c:1162
+#: debug.c:1119 debug.c:1171
#, c-format
msgid "[\"%s\"] not in array `%s'\n"
msgstr "[\"%s\"] n'est pas dans le tableau « %s »\n"
-#: debug.c:1166
+#: debug.c:1175
#, c-format
msgid "`%s[\"%s\"]' is not an array\n"
msgstr "« %s[\"%s\"] » n'est pas un tableau\n"
-#: debug.c:1227 debug.c:4949
+#: debug.c:1236 debug.c:4964
#, c-format
msgid "`%s' is not a scalar variable"
msgstr "« %s » n'est pas une variable scalaire"
-#: debug.c:1249 debug.c:4979
+#: debug.c:1258 debug.c:4994
#, c-format
msgid "attempt to use array `%s[\"%s\"]' in a scalar context"
msgstr "tentative d'utilisation du tableau « %s[\"%s\"] » en contexte scalaire"
-#: debug.c:1271 debug.c:4990
+#: debug.c:1280 debug.c:5005
#, c-format
msgid "attempt to use scalar `%s[\"%s\"]' as array"
msgstr "tentative d'utiliser le scalaire « %s[\"%s\"] » comme tableau"
-#: debug.c:1414
+#: debug.c:1423
#, c-format
msgid "`%s' is a function"
msgstr "« %s » est une fonction"
-#: debug.c:1456
+#: debug.c:1465
#, c-format
msgid "watchpoint %d is unconditional\n"
msgstr "le point de surveillance %d est inconditionnel\n"
-#: debug.c:1490
+#: debug.c:1499
#, c-format
msgid "No display item numbered %ld"
msgstr "Aucune entrée d'affichage numéro %ld"
-#: debug.c:1493
+#: debug.c:1502
#, c-format
msgid "No watch item numbered %ld"
msgstr "Aucune entrée de surveillance numéro %ld"
-#: debug.c:1519
+#: debug.c:1528
#, c-format
msgid "%d: [\"%s\"] not in array `%s'\n"
msgstr "%d: [\"%s\"] n'est pas dans le tableau « %s »\n"
-#: debug.c:1758
+#: debug.c:1767
msgid "attempt to use scalar value as array"
msgstr "tentative d'utiliser un scalaire comme tableau"
-#: debug.c:1847
+#: debug.c:1856
#, c-format
msgid "Watchpoint %d deleted because parameter is out of scope.\n"
msgstr ""
"Point de surveillance %d détruit, car son paramètre est hors contexte.\n"
-#: debug.c:1858
+#: debug.c:1867
#, c-format
msgid "Display %d deleted because parameter is out of scope.\n"
msgstr "Affichage %d détruit, car son paramètre est hors contexte\n"
-#: debug.c:1891
+#: debug.c:1900
#, c-format
msgid " in file `%s', line %d\n"
msgstr "dans le fichier « %s », ligne %d\n"
-#: debug.c:1912
+#: debug.c:1921
#, c-format
msgid " at `%s':%d"
msgstr " à « %s »:%d"
-#: debug.c:1928 debug.c:1991
+#: debug.c:1937 debug.c:2000
#, c-format
msgid "#%ld\tin "
msgstr "#%ld\tdans "
-#: debug.c:1965
+#: debug.c:1974
#, c-format
msgid "More stack frames follow ...\n"
msgstr "D'autres trames de la pile suivent...\n"
-#: debug.c:2008
+#: debug.c:2017
msgid "invalid frame number"
msgstr "Numéro de trame incorrect"
-#: debug.c:2180
+#: debug.c:2200
#, c-format
msgid "Note: breakpoint %d (enabled, ignore next %ld hits), also set at %s:%d"
msgstr ""
"Note : point d'arrêt %d (activé, ignore %ld occurrences) déjà défini à %s:%d"
-#: debug.c:2187
+#: debug.c:2207
#, c-format
msgid "Note: breakpoint %d (enabled), also set at %s:%d"
msgstr "Note : point d'arrêt %d (activé) déjà défini à %s:%d"
-#: debug.c:2194
+#: debug.c:2214
#, c-format
msgid "Note: breakpoint %d (disabled, ignore next %ld hits), also set at %s:%d"
msgstr ""
"Note : point d'arrêt %d (désactivé, ignore %ld occurrences) déjà défini à %s:"
"%d"
-#: debug.c:2201
+#: debug.c:2221
#, c-format
msgid "Note: breakpoint %d (disabled), also set at %s:%d"
msgstr "Note : point d'arrêt %d (désactivé) déjà défini à %s:%d"
-#: debug.c:2218
+#: debug.c:2238
#, c-format
msgid "Breakpoint %d set at file `%s', line %d\n"
msgstr "Point d'arrêt %d défini dans le fichier « %s » ligne %d\n"
-#: debug.c:2320
+#: debug.c:2340
#, c-format
msgid "Can't set breakpoint in file `%s'\n"
msgstr "Impossible de définir un point d'arrêt dans le fichier « %s »\n"
-#: debug.c:2349 debug.c:2472 debug.c:3330
+#: debug.c:2369 debug.c:2492 debug.c:3350
#, c-format
msgid "line number %d in file `%s' out of range"
msgstr "numéro de ligne %d dans le fichier « %s » hors limite"
-#: debug.c:2353
+#: debug.c:2373
#, c-format
msgid "Can't find rule!!!\n"
msgstr "Règle introuvable !!!\n"
-#: debug.c:2355
+#: debug.c:2375
#, c-format
msgid "Can't set breakpoint at `%s':%d\n"
msgstr "Impossible de définir un point d'arrêt à « %s »:%d\n"
-#: debug.c:2367
+#: debug.c:2387
#, c-format
msgid "Can't set breakpoint in function `%s'\n"
msgstr "Impossible de définir un point d'arrêt dans la fonction « %s »\n"
-#: debug.c:2383
+#: debug.c:2403
#, c-format
msgid "breakpoint %d set at file `%s', line %d is unconditional\n"
msgstr ""
"le point d'arrêt %d défini sur le fichier « %s », ligne %d est "
"inconditionnel\n"
-#: debug.c:2488 debug.c:2510
+#: debug.c:2508 debug.c:2530
#, c-format
msgid "Deleted breakpoint %d"
msgstr "Point d'arrêt %d supprimé"
-#: debug.c:2494
+#: debug.c:2514
#, c-format
msgid "No breakpoint(s) at entry to function `%s'\n"
msgstr "Aucun point d'arrêt à l'appel de la fonction « %s »\n"
-#: debug.c:2521
+#: debug.c:2541
#, c-format
msgid "No breakpoint at file `%s', line #%d\n"
msgstr "Pas de point d'arrêt sur le fichier « %s », ligne #%d\n"
-#: debug.c:2576 debug.c:2617 debug.c:2637 debug.c:2680
+#: debug.c:2596 debug.c:2637 debug.c:2657 debug.c:2700
msgid "invalid breakpoint number"
msgstr "Numéro de point d'arrêt incorrect"
-#: debug.c:2592
+#: debug.c:2612
msgid "Delete all breakpoints? (y or n) "
msgstr "Supprimer tous les points d'arrêt (o ou n) "
-#: debug.c:2593 debug.c:2903 debug.c:2956
+#: debug.c:2613 debug.c:2923 debug.c:2976
msgid "y"
msgstr "o"
-#: debug.c:2642
+#: debug.c:2662
#, c-format
msgid "Will ignore next %ld crossing(s) of breakpoint %d.\n"
msgstr "Ignorera les prochaines %ld occurrences du point d'arrêt %d.\n"
-#: debug.c:2646
+#: debug.c:2666
#, c-format
msgid "Will stop next time breakpoint %d is reached.\n"
msgstr "S'arrêtera à la prochaine occurrence du point d'arrêt %d.\n"
-#: debug.c:2763
+#: debug.c:2783
#, c-format
msgid "Can only debug programs provided with the `-f' option.\n"
msgstr ""
"Seuls les programmes fournis via l'option « -f » peuvent être débogués.\n"
-#: debug.c:2888
+#: debug.c:2908
#, c-format
msgid "Failed to restart debugger"
msgstr "Échec de redémarrage du débogueur"
-#: debug.c:2902
+#: debug.c:2922
msgid "Program already running. Restart from beginning (y/n)? "
msgstr "Programme en cours. Reprendre depuis le début (o/n) ? "
-#: debug.c:2906
+#: debug.c:2926
#, c-format
msgid "Program not restarted\n"
msgstr "Programme non redémarré\n"
-#: debug.c:2916
+#: debug.c:2936
#, c-format
msgid "error: cannot restart, operation not allowed\n"
msgstr "erreur : impossible de redémarrer, opération interdite\n"
-#: debug.c:2922
+#: debug.c:2942
#, c-format
msgid "error (%s): cannot restart, ignoring rest of the commands\n"
msgstr "erreur (%s) : impossible de redémarrer, suite des commandes ignorées\n"
-#: debug.c:2930
+#: debug.c:2950
#, c-format
msgid "Starting program: \n"
msgstr "Démarrage du programme :\n"
-#: debug.c:2939
+#: debug.c:2959
#, c-format
msgid "Program exited %s with exit value: %d\n"
msgstr "Le programme s'est terminé %s avec le code de retour : %d\n"
-#: debug.c:2955
+#: debug.c:2975
msgid "The program is running. Exit anyway (y/n)? "
msgstr "Le programme est en cours. Sortir quand même (o/n) ?"
-#: debug.c:2990
+#: debug.c:3010
#, c-format
msgid "Not stopped at any breakpoint; argument ignored.\n"
msgstr "Auncun arrêt à un point d'arrêt : argument ignoré.\n"
-#: debug.c:2995
+#: debug.c:3015
#, c-format
msgid "invalid breakpoint number %d."
msgstr "point d'arrêt %d incorrect."
-#: debug.c:3000
+#: debug.c:3020
#, c-format
msgid "Will ignore next %ld crossings of breakpoint %d.\n"
msgstr "Les %ld prochaines occurrences du point d'arrêt %d seront ignorées.\n"
-#: debug.c:3187
+#: debug.c:3207
#, c-format
msgid "'finish' not meaningful in the outermost frame main()\n"
msgstr "« finish » n'a pas de sens dans la trame initiale main()\n"
-#: debug.c:3192
+#: debug.c:3212
#, c-format
msgid "Run till return from "
msgstr "S'exécute jusqu'au retour de "
-#: debug.c:3235
+#: debug.c:3255
#, c-format
msgid "'return' not meaningful in the outermost frame main()\n"
msgstr "« return » n'a pas de sens dans la trame initiale main()\n"
-#: debug.c:3349
+#: debug.c:3369
#, c-format
msgid "Can't find specified location in function `%s'\n"
msgstr "Impossible de trouver la position indiquée dans la fonction « %s »\n"
-#: debug.c:3357
+#: debug.c:3377
#, c-format
msgid "invalid source line %d in file `%s'"
msgstr "ligne source %d incorrecte dans le fichier « %s »"
-#: debug.c:3372
+#: debug.c:3392
#, c-format
msgid "Can't find specified location %d in file `%s'\n"
msgstr "Position %d introuvable dans le fichier « %s »\n"
-#: debug.c:3404
+#: debug.c:3424
#, c-format
msgid "element not in array\n"
msgstr "élément absent du tableau\n"
-#: debug.c:3404
+#: debug.c:3424
#, c-format
msgid "untyped variable\n"
msgstr "variable sans type\n"
-#: debug.c:3446
+#: debug.c:3466
#, c-format
msgid "Stopping in %s ...\n"
msgstr "Arrêt dans %s...\n"
-#: debug.c:3523
+#: debug.c:3543
#, c-format
msgid "'finish' not meaningful with non-local jump '%s'\n"
msgstr "« finish » n'a pas de sens avec un saut non local « %s »\n"
-#: debug.c:3530
+#: debug.c:3550
#, c-format
msgid "'until' not meaningful with non-local jump '%s'\n"
msgstr "« until » n'a pas de sens avec un saut non local « %s »\n"
-#: debug.c:4165
+#: debug.c:4185
msgid "\t------[Enter] to continue or q [Enter] to quit------"
msgstr "\t---« [Entrée] » continuer ; « q [Entrée] » quitter---"
-#: debug.c:4166
+#: debug.c:4186
msgid "q"
msgstr "q"
-#: debug.c:4986
+#: debug.c:5001
#, c-format
msgid "[\"%s\"] not in array `%s'"
msgstr "[\"%s\"] est absent du tableau « %s »"
-#: debug.c:5192
+#: debug.c:5207
#, c-format
msgid "sending output to stdout\n"
msgstr "envoi de la sortie vers stdout\n"
-#: debug.c:5232
+#: debug.c:5247
msgid "invalid number"
msgstr "nombre incorrect"
-#: debug.c:5366
+#: debug.c:5381
#, c-format
msgid "`%s' not allowed in current context; statement ignored"
msgstr "« %s » interdit dans ce contexte ; instruction ignorée"
-#: debug.c:5374
+#: debug.c:5389
msgid "`return' not allowed in current context; statement ignored"
msgstr "« return » interdit dans ce contexte ; instruction ignorée"
-#: debug.c:5575
+#: debug.c:5590
#, c-format
msgid "No symbol `%s' in current context"
msgstr "Pas de symbole « %s » dans le contexte actuel"
-#: dfa.c:998 dfa.c:1001 dfa.c:1021 dfa.c:1031 dfa.c:1043 dfa.c:1094 dfa.c:1103
-#: dfa.c:1106 dfa.c:1111 dfa.c:1124 dfa.c:1192
+#: dfa.c:1118 dfa.c:1121 dfa.c:1142 dfa.c:1150 dfa.c:1162 dfa.c:1197
+#: dfa.c:1206 dfa.c:1209 dfa.c:1214 dfa.c:1228 dfa.c:1275
msgid "unbalanced ["
msgstr "[ non apparié"
-#: dfa.c:1052
+#: dfa.c:1174
msgid "invalid character class"
msgstr "classe de caractères incorrecte"
-#: dfa.c:1229
+#: dfa.c:1316
msgid "character class syntax is [[:space:]], not [:space:]"
msgstr "la syntaxe des classes de caractères est [[:space:]], et non [:space:]"
-#: dfa.c:1281
+#: dfa.c:1366
msgid "unfinished \\ escape"
msgstr "échappement \\ non terminé"
-#: dfa.c:1428 regcomp.c:161
+#: dfa.c:1513 regcomp.c:161
msgid "Invalid content of \\{\\}"
msgstr "Contenu de \\{\\} incorrect"
-#: dfa.c:1431 regcomp.c:176
+#: dfa.c:1516 regcomp.c:176
msgid "Regular expression too big"
msgstr "Expression rationnelle trop grande"
-#: dfa.c:1816
+#: dfa.c:1936
msgid "unbalanced ("
msgstr "( non apparié"
-#: dfa.c:1943
+#: dfa.c:2062
msgid "no syntax specified"
msgstr "aucune syntaxe indiquée"
-#: dfa.c:1951
+#: dfa.c:2070
msgid "unbalanced )"
msgstr ") non apparié"
@@ -1865,11 +1878,11 @@ msgstr "code opération %d inconnu"
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:471
+#: eval.c:472
msgid "buffer overflow in genflags2str"
msgstr "débordement de tampon dans genflag2str"
-#: eval.c:674
+#: eval.c:675
#, c-format
msgid ""
"\n"
@@ -1880,71 +1893,71 @@ msgstr ""
"\t# Pile des appels de fonctions :\n"
"\n"
-#: eval.c:703
+#: eval.c:704
msgid "`IGNORECASE' is a gawk extension"
msgstr "« IGNORECASE » est une extension gawk"
-#: eval.c:735
+#: eval.c:736
msgid "`BINMODE' is a gawk extension"
msgstr "« BINMODE » est une extension gawk"
-#: eval.c:793
+#: eval.c:794
#, c-format
msgid "BINMODE value `%s' is invalid, treated as 3"
msgstr "la valeur « %s » de BINMODE n'est pas valide, 3 utilisé à la place"
-#: eval.c:884
+#: eval.c:885
#, c-format
msgid "bad `%sFMT' specification `%s'"
msgstr "spécification de « %sFMT » erronée « %s »"
-#: eval.c:968
+#: eval.c:969
msgid "turning off `--lint' due to assignment to `LINT'"
msgstr "désactivation de « --lint » en raison d'une affectation à « LINT »"
-#: eval.c:1146
+#: eval.c:1147
#, c-format
msgid "reference to uninitialized argument `%s'"
msgstr "référence à un argument non initialisé « %s »"
-#: eval.c:1147
+#: eval.c:1148
#, c-format
msgid "reference to uninitialized variable `%s'"
msgstr "référence à une variable non initialisée « %s »"
-#: eval.c:1165
+#: eval.c:1166
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:1167
+#: eval.c:1168
msgid "attempt to field reference from null string"
msgstr "tentative de référence à un champ via une chaîne nulle"
-#: eval.c:1175
+#: eval.c:1176
#, c-format
msgid "attempt to access field %ld"
msgstr "tentative d'accès au champ %ld"
-#: eval.c:1184
+#: eval.c:1185
#, c-format
msgid "reference to uninitialized field `$%ld'"
msgstr "référence à un champ non initialisé « $%ld »"
-#: eval.c:1271
+#: eval.c:1272
#, 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:1466
+#: eval.c:1473
#, c-format
msgid "unwind_stack: unexpected type `%s'"
msgstr "unwind_stack: type « %s » inattendu"
-#: eval.c:1562
+#: eval.c:1569
msgid "division by zero attempted in `/='"
msgstr "tentative de division par zéro dans « /= »"
-#: eval.c:1569
+#: eval.c:1576
#, c-format
msgid "division by zero attempted in `%%='"
msgstr "tentative de division par zéro dans « %%= »"
@@ -1957,7 +1970,7 @@ msgstr "les extensions sont interdites en isolement (mode sandbox)"
msgid "-l / @load are gawk extensions"
msgstr "-l / @load est une extension gawk"
-#: ext.c:95 ext.c:177
+#: ext.c:95
msgid "load_ext: received NULL lib_name"
msgstr "load_ext : lib_name reçu NULL"
@@ -1992,6 +2005,10 @@ msgstr ""
msgid "`extension' is a gawk extension"
msgstr "« extension » est une extension gawk"
+#: ext.c:177
+msgid "extension: received NULL lib_name"
+msgstr "extension : lib_name reçu NULL"
+
#: ext.c:180
#, c-format
msgid "extension: cannot open library `%s' (%s)"
@@ -2016,38 +2033,38 @@ msgstr ""
msgid "make_builtin: missing function name"
msgstr "make_builtin : nom de fonction manquant"
-#: ext.c:238
+#: ext.c:236
#, c-format
msgid "make_builtin: can't redefine function `%s'"
msgstr "make_builtin : impossible de redéfinir la fonction « %s »"
-#: ext.c:242
+#: ext.c:240
#, c-format
msgid "make_builtin: function `%s' already defined"
msgstr "make_builtin : fonction « %s » déjà définie"
-#: ext.c:246
+#: ext.c:244
#, c-format
msgid "make_builtin: function name `%s' previously defined"
msgstr "make_builtin : nom de la fonction « %s » déjà défini"
-#: ext.c:248
+#: ext.c:246
#, c-format
msgid "make_builtin: can't use gawk built-in `%s' as function name"
msgstr ""
"make_builtin : impossible d'utiliser la fonction gawk « %s » comme nom de "
"fonction"
-#: ext.c:251 ext.c:304
+#: ext.c:249 ext.c:304
#, c-format
msgid "make_builtin: negative argument count for function `%s'"
msgstr "make_builtin : la fonction « %s » a un nombre négatif d'arguments"
-#: ext.c:278
+#: ext.c:276
msgid "extension: missing function name"
msgstr "extension : nom de fonction manquant"
-#: ext.c:283
+#: ext.c:279 ext.c:283
#, 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 »"
@@ -2074,143 +2091,147 @@ msgstr ""
"extension : impossible d'utiliser la fonction interne gawk « %s » comme nom "
"de fonction"
-#: ext.c:374
+#: ext.c:375
#, 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:377
+#: ext.c:378
#, c-format
msgid "function `%s': missing argument #%d"
msgstr "fonction « %s » : argument #%d manquant"
-#: ext.c:394
+#: ext.c:395
#, c-format
msgid "function `%s': argument #%d: attempt to use scalar as an array"
msgstr ""
"fonction « %s » : argument #%d : tentative d'utilisation d'un scalaire comme "
"tableau"
-#: ext.c:398
+#: ext.c:399
#, c-format
msgid "function `%s': argument #%d: attempt to use array as a scalar"
msgstr ""
"fonction « %s » : argument #%d : tentative d'utiliser un tableau comme "
"scalaire"
-#: ext.c:412
+#: ext.c:413
msgid "dynamic loading of library not supported"
msgstr "chargement dynamique des bibliothèques impossible"
-#: extension/filefuncs.c:97
+#: extension/filefuncs.c:159
msgid "chdir: called with incorrect number of arguments, expecting 1"
msgstr "chdir : appelé avec un nombre d'arguments incorrects, attendu : 1"
-#: extension/filefuncs.c:343
+#: extension/filefuncs.c:439
#, c-format
msgid "stat: unable to read symbolic link `%s'"
msgstr "stat : impossible de lire le lien symbolique « %s »"
-#: extension/filefuncs.c:376
+#: extension/filefuncs.c:472
msgid "stat: called with wrong number of arguments"
msgstr "stat : appelé avec un nombre d'arguments incorrect"
-#: extension/filefuncs.c:383
+#: extension/filefuncs.c:479
msgid "stat: bad parameters"
msgstr "stat : paramètres incorrects"
-#: extension/filefuncs.c:437
+#: extension/filefuncs.c:533
#, c-format
msgid "fts init: could not create variable %s"
msgstr "fts init : impossible de créer la variable %s"
-#: extension/filefuncs.c:460
+#: extension/filefuncs.c:554
+msgid "fts is not supported on this system"
+msgstr "fts n'est pas compatible avec ce système"
+
+#: extension/filefuncs.c:573
msgid "fill_stat_element: could not create array"
msgstr "fill_stat_element : impossible de créer le tableau"
-#: extension/filefuncs.c:469
+#: extension/filefuncs.c:582
msgid "fill_stat_element: could not set element"
msgstr "fill_stat_element : impossible de définir l'élément"
-#: extension/filefuncs.c:484
+#: extension/filefuncs.c:597
msgid "fill_path_element: could not set element"
msgstr "fill_path_element : impossible de définir l'élément"
-#: extension/filefuncs.c:500
+#: extension/filefuncs.c:613
msgid "fill_error_element: could not set element"
msgstr "fill_error_element : impossible de définir l'élément"
-#: extension/filefuncs.c:547 extension/filefuncs.c:594
+#: extension/filefuncs.c:660 extension/filefuncs.c:707
msgid "fts-process: could not create array"
msgstr "fts-process : impossible de créer le tableau"
-#: extension/filefuncs.c:557 extension/filefuncs.c:604
-#: extension/filefuncs.c:622
+#: extension/filefuncs.c:670 extension/filefuncs.c:717
+#: extension/filefuncs.c:735
msgid "fts-process: could not set element"
msgstr "fts-process : impossible de définir l'élément"
-#: extension/filefuncs.c:671
+#: extension/filefuncs.c:784
msgid "fts: called with incorrect number of arguments, expecting 3"
msgstr "fts : appelé avec un nombre d'arguments incorrects, attendu : 3"
-#: extension/filefuncs.c:674
+#: extension/filefuncs.c:787
msgid "fts: bad first parameter"
msgstr "fts : premier paramètre incorrect"
-#: extension/filefuncs.c:680
+#: extension/filefuncs.c:793
msgid "fts: bad second parameter"
msgstr "fts : deuxième paramètre incorrect"
-#: extension/filefuncs.c:686
+#: extension/filefuncs.c:799
msgid "fts: bad third parameter"
msgstr "fts : troisième paramètre incorrect"
-#: extension/filefuncs.c:693
+#: extension/filefuncs.c:806
msgid "fts: could not flatten array\n"
msgstr "fts : impossible d'aplatir le tableau\n"
-#: extension/filefuncs.c:711
+#: extension/filefuncs.c:824
msgid "fts: ignoring sneaky FTS_NOSTAT flag. nyah, nyah, nyah."
msgstr "fts : on ignore le drapeau sournois FTS_NOSTAT..."
-#: extension/filefuncs.c:728
+#: extension/filefuncs.c:841
msgid "fts: clear_array() failed\n"
msgstr "fts : échec de clear_array()\n"
-#: extension/fnmatch.c:98
+#: extension/fnmatch.c:112
msgid "fnmatch: called with less than three arguments"
msgstr "fnmatch : appelé avec moins de 3 arguments"
-#: extension/fnmatch.c:101
+#: extension/fnmatch.c:115
msgid "fnmatch: called with more than three arguments"
msgstr "fnmatch : appelé avec plus de 3 arguments"
-#: extension/fnmatch.c:104
+#: extension/fnmatch.c:118
msgid "fnmatch: could not get first argument"
msgstr "fnmatch : impossible d'obtenir le 1er argument"
-#: extension/fnmatch.c:109
+#: extension/fnmatch.c:123
msgid "fnmatch: could not get second argument"
msgstr "fnmatch : impossible d'obtenir le 2e argument"
-#: extension/fnmatch.c:114
+#: extension/fnmatch.c:128
msgid "fnmatch: could not get third argument"
msgstr "fnmatch : impossible d'obtenir le 3e argument"
-#: extension/fnmatch.c:127
+#: extension/fnmatch.c:141
msgid "fnmatch is not implemented on this system\n"
msgstr "fnmatch n'est pas disponible sur ce système\n"
-#: extension/fnmatch.c:159
+#: extension/fnmatch.c:173
msgid "fnmatch init: could not add FNM_NOMATCH variable"
msgstr "fnmatch init : impossible d'ajouter la variable FNM_NOMATCH"
-#: extension/fnmatch.c:169
+#: extension/fnmatch.c:183
#, c-format
msgid "fnmatch init: could not set array element %s"
msgstr "fnmatch init : impossible de définir l'élément de tableau %s"
-#: extension/fnmatch.c:179
+#: extension/fnmatch.c:193
msgid "fnmatch init: could not install FNM array"
msgstr "fnmatch init : impossible d'installer le tableau FNM"
@@ -2234,92 +2255,92 @@ msgstr "wait : appelé sans argument"
msgid "wait: called with too many arguments"
msgstr "wait : appelé avec trop d'arguments"
-#: extension/inplace.c:110
+#: extension/inplace.c:130
msgid "inplace_begin: in-place editing already active"
msgstr "inplace_begin : modification sur place déjà active"
-#: extension/inplace.c:113 extension/inplace.c:187
+#: extension/inplace.c:133 extension/inplace.c:207
#, c-format
msgid "inplace_begin: expects 2 arguments but called with %d"
msgstr "inplace_begin : 2 arguments attendu, appelé avec %d"
-#: extension/inplace.c:116
+#: extension/inplace.c:136
msgid "inplace_begin: cannot retrieve 1st argument as a string filename"
msgstr ""
"inplace_begin : impossible de récupérer le 1er argument comme nom de fichier"
-#: extension/inplace.c:124
+#: extension/inplace.c:144
#, c-format
msgid "inplace_begin: disabling in-place editing for invalid FILENAME `%s'"
msgstr ""
"inplace_begin : modification sur place annulée pour le fichier incorrect "
"« %s »"
-#: extension/inplace.c:131
+#: extension/inplace.c:151
#, c-format
msgid "inplace_begin: Cannot stat `%s' (%s)"
msgstr "inplace_begin : stat impossible sur « %s » (%s)"
-#: extension/inplace.c:138
+#: extension/inplace.c:158
#, c-format
msgid "inplace_begin: `%s' is not a regular file"
msgstr "inplace_begin : « %s » n'est pas un fichier ordinaire"
-#: extension/inplace.c:149
+#: extension/inplace.c:169
#, c-format
msgid "inplace_begin: mkstemp(`%s') failed (%s)"
msgstr "inplace_begin : échec de mkstemp('%s') (%s)"
-#: extension/inplace.c:158
+#: extension/inplace.c:178
#, c-format
msgid "inplace_begin: chmod failed (%s)"
msgstr "inplace_begin : échec de la chmod (%s)"
-#: extension/inplace.c:165
+#: extension/inplace.c:185
#, c-format
msgid "inplace_begin: dup(stdout) failed (%s)"
msgstr "inplace_begin : échec de dup(stdout) (%s)"
-#: extension/inplace.c:168
+#: extension/inplace.c:188
#, c-format
msgid "inplace_begin: dup2(%d, stdout) failed (%s)"
msgstr "inplace_begin : échec de dup2(%d, stdout) (%s)"
-#: extension/inplace.c:171
+#: extension/inplace.c:191
#, c-format
msgid "inplace_begin: close(%d) failed (%s)"
msgstr "inplace_begin : échec de close(%d) (%s)"
-#: extension/inplace.c:190
+#: extension/inplace.c:210
msgid "inplace_end: cannot retrieve 1st argument as a string filename"
msgstr ""
"inplace_end : impossible de récupérer le 1er argument comme nom de fichier"
-#: extension/inplace.c:197
+#: extension/inplace.c:217
msgid "inplace_end: in-place editing not active"
msgstr "inplace_end : modification sur place non active"
-#: extension/inplace.c:203
+#: extension/inplace.c:223
#, c-format
msgid "inplace_end: dup2(%d, stdout) failed (%s)"
msgstr "ipnlace_end : échec de dup2(%d, stdout) (%s)"
-#: extension/inplace.c:206
+#: extension/inplace.c:226
#, c-format
msgid "inplace_end: close(%d) failed (%s)"
msgstr "inplace_end : échec de close(%d) (%s)"
-#: extension/inplace.c:210
+#: extension/inplace.c:230
#, c-format
msgid "inplace_end: fsetpos(stdout) failed (%s)"
msgstr "inplace_end : échec de fsetpos(stdout) (%s)"
-#: extension/inplace.c:223
+#: extension/inplace.c:243
#, c-format
msgid "inplace_end: link(`%s', `%s') failed (%s)"
msgstr "inplace_end : échec de link('%s', '%s') (%s)"
-#: extension/inplace.c:229
+#: extension/inplace.c:253
#, c-format
msgid "inplace_end: rename(`%s', `%s') failed (%s)"
msgstr "inplace_end : échec de rename('%s', '%s') (%s)"
@@ -2348,173 +2369,173 @@ msgstr "chr : appelé sans argument"
msgid "chr: called with inappropriate argument(s)"
msgstr "chr : appelé avec des arguments incorrects"
-#: extension/readdir.c:203
+#: extension/readdir.c:281
#, c-format
msgid "dir_take_control_of: opendir/fdopendir failed: %s"
msgstr "dir_take_control_of : échec de opendir/fdopendir : %s"
-#: extension/readfile.c:84
+#: extension/readfile.c:113
msgid "readfile: called with too many arguments"
msgstr "readfile : appelé avec trop d'arguments"
-#: extension/readfile.c:118
+#: extension/readfile.c:137
msgid "readfile: called with no arguments"
msgstr "readfile : appelé sans argument"
-#: extension/rwarray.c:120
+#: extension/rwarray.c:124
msgid "writea: called with too many arguments"
msgstr "writea : appelé avec trop d'arguments"
-#: extension/rwarray.c:127
+#: extension/rwarray.c:131
#, c-format
msgid "do_writea: argument 0 is not a string\n"
msgstr "do_writea : l'argument 0 n'est pas une chaîne\n"
-#: extension/rwarray.c:133
+#: extension/rwarray.c:137
#, c-format
msgid "do_writea: argument 1 is not an array\n"
msgstr "do_writea : l'argument 1 n'est pas un tableau\n"
-#: extension/rwarray.c:180
+#: extension/rwarray.c:184
#, c-format
msgid "write_array: could not flatten array\n"
msgstr "write_array : impossible d'aplatir le tableau\n"
-#: extension/rwarray.c:194
+#: extension/rwarray.c:198
#, c-format
msgid "write_array: could not release flattened array\n"
msgstr "write_array : impossible de libérer le tableau aplati\n"
-#: extension/rwarray.c:276
+#: extension/rwarray.c:280
msgid "reada: called with too many arguments"
msgstr "reada : appelé avec trop d'arguments"
-#: extension/rwarray.c:283
+#: extension/rwarray.c:287
#, c-format
msgid "do_reada: argument 0 is not a string\n"
msgstr "do_reada : l'argument 0 n'est pas une chaîne\n"
-#: extension/rwarray.c:289
+#: extension/rwarray.c:293
#, c-format
msgid "do_reada: argument 1 is not an array\n"
msgstr "do_reada : l'argument 1 n'est pas un tableau\n"
-#: extension/rwarray.c:333
+#: extension/rwarray.c:337
#, c-format
msgid "do_reada: clear_array failed\n"
msgstr "do_reada : échec de clear_array\n"
-#: extension/rwarray.c:370
+#: extension/rwarray.c:374
#, c-format
msgid "read_array: set_array_element failed\n"
msgstr "read_array : échec de set_array_element\n"
-#: extension/time.c:81
+#: extension/time.c:113
msgid "gettimeofday: ignoring arguments"
msgstr "gettimeofday : arguments ignorés"
-#: extension/time.c:112
+#: extension/time.c:144
msgid "gettimeofday: not supported on this platform"
msgstr "gettimeofday : n'est pas disponible sur cette plateforme"
-#: extension/time.c:133
+#: extension/time.c:165
msgid "sleep: called with too many arguments"
msgstr "sleep : appelé avec trop d'arguments"
-#: extension/time.c:136
+#: extension/time.c:168
msgid "sleep: missing required numeric argument"
msgstr "sleep : l'argument numérique requis est absent"
-#: extension/time.c:142
+#: extension/time.c:174
msgid "sleep: argument is negative"
msgstr "sleep : l'argument est négatif"
-#: extension/time.c:176
+#: extension/time.c:208
msgid "sleep: not supported on this platform"
msgstr "sleep : n'est pas disponible sur cette plateforme"
-#: field.c:339
+#: field.c:345
msgid "NF set to negative value"
msgstr "une valeur négative a été assignée à NF"
-#: field.c:964 field.c:971 field.c:975
+#: field.c:971 field.c:978 field.c:982
msgid "split: fourth argument is a gawk extension"
msgstr "split : le 4e argument est une extension gawk"
-#: field.c:968
+#: field.c:975
msgid "split: fourth argument is not an array"
msgstr "split : le 4e argument n'est pas un tableau"
-#: field.c:982
+#: field.c:989
msgid "split: second argument is not an array"
msgstr "split : le 2e argument n'est pas un tableau"
-#: field.c:986
+#: field.c:993
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:991
+#: field.c:998
msgid "split: cannot use a subarray of second arg for fourth arg"
msgstr ""
"split : impossible d'utiliser un sous-tableau du 2e argument en 4e argument"
-#: field.c:994
+#: field.c:1001
msgid "split: cannot use a subarray of fourth arg for second arg"
msgstr ""
"split : impossible d'utiliser un sous-tableau du 4e argument en 2e argument"
-#: field.c:1023
+#: field.c:1032
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:1063
+#: field.c:1072
msgid "patsplit: fourth argument is not an array"
msgstr "patsplit : le 4e argument n'est pas un tableau"
-#: field.c:1068
+#: field.c:1077
msgid "patsplit: second argument is not an array"
msgstr "patsplit : le 2e argument n'est pas un tableau"
-#: field.c:1074
+#: field.c:1083
msgid "patsplit: third argument must be non-null"
msgstr "patsplit : le 3e argument n'est pas un tableau"
-#: field.c:1078
+#: field.c:1087
msgid "patsplit: cannot use the same array for second and fourth args"
msgstr ""
"patsplit : impossible d'utiliser le même tableau comme 2e et 4e argument"
-#: field.c:1083
+#: field.c:1092
msgid "patsplit: cannot use a subarray of second arg for fourth arg"
msgstr ""
"patsplit : impossible d'utiliser un sous-tableau du 2e argument en 4e "
"argument"
-#: field.c:1086
+#: field.c:1095
msgid "patsplit: cannot use a subarray of fourth arg for second arg"
msgstr ""
"patsplit : impossible d'utiliser un sous-tableau du 4e argument en 2e "
"argument"
-#: field.c:1124
+#: field.c:1133
msgid "`FIELDWIDTHS' is a gawk extension"
msgstr "« FIELDWIDTHS » est une extension gawk"
-#: field.c:1188
+#: field.c:1197
#, c-format
msgid "invalid FIELDWIDTHS value, near `%s'"
msgstr "valeur de FIELDWIDTHS incorrecte, près de « %s »"
-#: field.c:1261
+#: field.c:1270
msgid "null string for `FS' is a gawk extension"
msgstr "utiliser une chaîne vide pour « FS » est une extension gawk"
-#: field.c:1265
+#: field.c:1274
msgid "old awk does not support regexps as value of `FS'"
msgstr ""
"l'ancien awk n'accepte pas les expr. rationnelles comme valeur de « FS »"
-#: field.c:1384
+#: field.c:1393
msgid "`FPAT' is a gawk extension"
msgstr "« FPAT » est une extension gawk"
@@ -2530,385 +2551,385 @@ msgstr "node_to_awk_value : node nul reçu"
msgid "node_to_awk_value: received null val"
msgstr "node_to_awk_value : val nul reçu"
-#: gawkapi.c:808
+#: gawkapi.c:807
msgid "remove_element: received null array"
msgstr "remove_element : tableau nul reçu"
-#: gawkapi.c:811
+#: gawkapi.c:810
msgid "remove_element: received null subscript"
msgstr "remove_element : indice nul reçu"
-#: gawkapi.c:943
+#: gawkapi.c:947
#, c-format
msgid "api_flatten_array: could not convert index %d\n"
msgstr "api_flatten_array : impossible de convertir l'indice %d\n"
-#: gawkapi.c:948
+#: gawkapi.c:952
#, c-format
msgid "api_flatten_array: could not convert value %d\n"
msgstr "api_flatten_array : impossible de convertir la valeur %d\n"
-#: getopt.c:603 getopt.c:632
+#: getopt.c:604 getopt.c:633
#, c-format
msgid "%s: option '%s' is ambiguous; possibilities:"
msgstr "%s : l'option « %s » est ambiguë ; possibilités :"
-#: getopt.c:678 getopt.c:682
+#: getopt.c:679 getopt.c:683
#, c-format
msgid "%s: option '--%s' doesn't allow an argument\n"
msgstr "%s : l'option « --%s » n'accepte pas d'argument\n"
-#: getopt.c:691 getopt.c:696
+#: getopt.c:692 getopt.c:697
#, c-format
msgid "%s: option '%c%s' doesn't allow an argument\n"
msgstr "%s : l'option « %c%s » n'accepte pas d'argument\n"
-#: getopt.c:739 getopt.c:758
+#: getopt.c:740 getopt.c:759
#, c-format
msgid "%s: option '--%s' requires an argument\n"
msgstr "%s : l'option « --%s » nécessite un argument\n"
-#: getopt.c:796 getopt.c:799
+#: getopt.c:797 getopt.c:800
#, c-format
msgid "%s: unrecognized option '--%s'\n"
msgstr "%s : option non reconnue « --%s »\n"
-#: getopt.c:807 getopt.c:810
+#: getopt.c:808 getopt.c:811
#, c-format
msgid "%s: unrecognized option '%c%s'\n"
msgstr "%s : option non reconnue « %c%s »\n"
-#: getopt.c:859 getopt.c:862
+#: getopt.c:860 getopt.c:863
#, c-format
msgid "%s: invalid option -- '%c'\n"
msgstr "%s : option incorrecte - « %c »\n"
-#: getopt.c:915 getopt.c:932 getopt.c:1142 getopt.c:1160
+#: getopt.c:916 getopt.c:933 getopt.c:1143 getopt.c:1161
#, c-format
msgid "%s: option requires an argument -- '%c'\n"
msgstr "%s : l'option requiert un argument - « %c »\n"
-#: getopt.c:988 getopt.c:1004
+#: getopt.c:989 getopt.c:1005
#, c-format
msgid "%s: option '-W %s' is ambiguous\n"
msgstr "%s : l'option « -W %s » est ambiguë\n"
-#: getopt.c:1028 getopt.c:1046
+#: getopt.c:1029 getopt.c:1047
#, c-format
msgid "%s: option '-W %s' doesn't allow an argument\n"
msgstr "%s : l'option « -W %s » n'accepte pas d'argument\n"
-#: getopt.c:1067 getopt.c:1085
+#: getopt.c:1068 getopt.c:1086
#, c-format
msgid "%s: option '-W %s' requires an argument\n"
msgstr "%s : l'option « -W %s » nécessite un argument\n"
-#: io.c:347
+#: io.c:392
#, 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:350 io.c:463
+#: io.c:395 io.c:513
#, c-format
msgid "cannot open file `%s' for reading (%s)"
msgstr "impossible d'ouvrir le fichier « %s » en lecture (%s)"
-#: io.c:590
+#: io.c:640
#, c-format
msgid "close of fd %d (`%s') failed (%s)"
msgstr "échec de la fermeture du fd %d (« %s ») : %s"
-#: io.c:666
+#: io.c:716
msgid "redirection not allowed in sandbox mode"
msgstr "les redirections sont interdites en isolement (mode sandbox)"
-#: io.c:700
+#: io.c:750
#, 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:706
+#: io.c:756
#, c-format
msgid "expression for `%s' redirection has null string value"
msgstr "l'expression dans la redirection « %s » donne une chaîne nulle"
-#: io.c:711
+#: io.c:761
#, c-format
msgid "filename `%s' for `%s' redirection may be result of logical expression"
msgstr ""
"le fichier « %s » de la redirection « %s » pourrait être le résultat d'une "
"expression booléenne"
-#: io.c:754
+#: io.c:809
#, c-format
msgid "unnecessary mixing of `>' and `>>' for file `%.*s'"
msgstr "mélange non nécessaire de « > » et « >> » pour le fichier « %.*s »"
-#: io.c:808
+#: io.c:863
#, c-format
msgid "can't open pipe `%s' for output (%s)"
msgstr "impossible d'ouvrir le tube « %s » en sortie (%s)"
-#: io.c:818
+#: io.c:873
#, c-format
msgid "can't open pipe `%s' for input (%s)"
msgstr "impossible d'ouvrir le tube « %s » en entrée (%s)"
-#: io.c:849
+#: io.c:904
#, c-format
msgid "can't open two way pipe `%s' for input/output (%s)"
msgstr ""
"impossible d'ouvrir un tube bidirectionnel « %s » en entrées-sorties (%s)"
-#: io.c:928
+#: io.c:986
#, c-format
msgid "can't redirect from `%s' (%s)"
msgstr "impossible de rediriger depuis « %s » (%s)"
-#: io.c:931
+#: io.c:989
#, c-format
msgid "can't redirect to `%s' (%s)"
msgstr "impossible de rediriger vers « %s » (%s)"
-#: io.c:982
+#: io.c:1040
msgid ""
"reached system limit for open files: starting to multiplex file descriptors"
msgstr ""
"limite système du nombre de fichiers ouverts atteinte : début du "
"multiplexage des descripteurs de fichiers"
-#: io.c:998
+#: io.c:1056
#, c-format
msgid "close of `%s' failed (%s)."
msgstr "échec de la fermeture de « %s » (%s)."
-#: io.c:1006
+#: io.c:1064
msgid "too many pipes or input files open"
msgstr "trop de fichiers d'entrées ou de tubes ouverts"
-#: io.c:1028
+#: io.c:1086
msgid "close: second argument must be `to' or `from'"
msgstr "close : le second argument doit être « to » ou « from »"
-#: io.c:1045
+#: io.c:1103
#, c-format
msgid "close: `%.*s' is not an open file, pipe or co-process"
msgstr ""
"close : « %.*s » n'est ni un fichier ouvert, ni un tube ou un co-processus"
-#: io.c:1050
+#: io.c:1108
msgid "close of redirection that was never opened"
msgstr "fermeture d'une redirection qui n'a jamais été ouverte"
-#: io.c:1147
+#: io.c:1205
#, c-format
msgid "close: redirection `%s' not opened with `|&', second argument ignored"
msgstr ""
"close : la redirection « %s » n'a pas été ouverte avec « |& », second "
"argument ignoré"
-#: io.c:1164
+#: io.c:1222
#, c-format
msgid "failure status (%d) on pipe close of `%s' (%s)"
msgstr "résultat d'échec (%d) sur la fermeture du tube « %s » (%s)"
-#: io.c:1167
+#: io.c:1225
#, c-format
msgid "failure status (%d) on file close of `%s' (%s)"
msgstr "résultat d'échec (%d) sur la fermeture du fichier « %s » (%s)"
-#: io.c:1187
+#: io.c:1245
#, c-format
msgid "no explicit close of socket `%s' provided"
msgstr "aucune fermeture explicite du connecteur « %s » fournie"
-#: io.c:1190
+#: io.c:1248
#, c-format
msgid "no explicit close of co-process `%s' provided"
msgstr "aucune fermeture explicite du co-processus « %s » fournie"
-#: io.c:1193
+#: io.c:1251
#, c-format
msgid "no explicit close of pipe `%s' provided"
msgstr "aucune fermeture explicite du tube « %s » fournie"
-#: io.c:1196
+#: io.c:1254
#, c-format
msgid "no explicit close of file `%s' provided"
msgstr "aucune fermeture explicite du fichier « %s » fournie"
-#: io.c:1224 io.c:1279 main.c:842 main.c:879
+#: io.c:1284 io.c:1342 main.c:864 main.c:906
#, c-format
msgid "error writing standard output (%s)"
msgstr "erreur lors de l'écriture vers la sortie standard (%s)"
-#: io.c:1228 io.c:1284
+#: io.c:1289 io.c:1348 main.c:866
#, c-format
msgid "error writing standard error (%s)"
msgstr "erreur lors de l'écriture vers l'erreur standard (%s)"
-#: io.c:1236
+#: io.c:1297
#, c-format
msgid "pipe flush of `%s' failed (%s)."
msgstr "échec du vidage du tube « %s » (%s)."
-#: io.c:1239
+#: io.c:1300
#, c-format
msgid "co-process flush of pipe to `%s' failed (%s)."
msgstr "échec du vidage du tube vers « %s » par le co-processus (%s)."
-#: io.c:1242
+#: io.c:1303
#, c-format
msgid "file flush of `%s' failed (%s)."
msgstr "échec du vidage vers le fichier « %s » (%s)."
-#: io.c:1356
+#: io.c:1420
#, c-format
msgid "local port %s invalid in `/inet'"
msgstr "le port local %s n'est pas valide dans « /inet »"
-#: io.c:1374
+#: io.c:1438
#, c-format
msgid "remote host and port information (%s, %s) invalid"
msgstr ""
"les informations sur l'hôte et le port distants (%s, %s) ne sont pas valides"
-#: io.c:1526
+#: io.c:1590
#, c-format
msgid "no (known) protocol supplied in special filename `%s'"
msgstr ""
"aucun protocole (connu) n'a été fourni dans le nom de fichier spécial « %s »"
-#: io.c:1540
+#: io.c:1604
#, c-format
msgid "special file name `%s' is incomplete"
msgstr "nom de fichier spécial « %s » incomplet"
-#: io.c:1557
+#: io.c:1621
msgid "must supply a remote hostname to `/inet'"
msgstr "un nom d'hôte distant doit être fourni à « /inet »"
-#: io.c:1575
+#: io.c:1639
msgid "must supply a remote port to `/inet'"
msgstr "un port distant doit être fourni à « /inet »"
-#: io.c:1621
+#: io.c:1685
msgid "TCP/IP communications are not supported"
msgstr "les communications TCP/IP ne sont pas disponibles"
-#: io.c:1796
+#: io.c:1867
#, c-format
msgid "could not open `%s', mode `%s'"
msgstr "impossible d'ouvrir « %s », mode « %s »"
-#: io.c:1846
+#: io.c:1917
#, c-format
msgid "close of master pty failed (%s)"
msgstr "échec de la fermeture du pty maître (%s)"
-#: io.c:1848 io.c:2024 io.c:2194
+#: io.c:1919 io.c:2105 io.c:2305
#, c-format
msgid "close of stdout in child failed (%s)"
msgstr "échec de la fermeture de stdout du processus fils (%s)"
-#: io.c:1851
+#: io.c:1922
#, c-format
msgid "moving slave pty to stdout in child failed (dup: %s)"
msgstr ""
"échec du déplacement du pty esclave vers le stdout du processus fils (dup : "
"%s)"
-#: io.c:1853 io.c:2029
+#: io.c:1924 io.c:2110
#, c-format
msgid "close of stdin in child failed (%s)"
msgstr "échec de fermeture du stdin du processus fils (%s)"
-#: io.c:1856
+#: io.c:1927
#, c-format
msgid "moving slave pty to stdin in child failed (dup: %s)"
msgstr ""
"échec du déplacement du pty esclave vers le stdin du processus fils (dup : "
"%s)"
-#: io.c:1858 io.c:1879
+#: io.c:1929 io.c:1951
#, c-format
msgid "close of slave pty failed (%s)"
msgstr "échec de la fermeture du pty esclave (%s)"
-#: io.c:1965 io.c:2027 io.c:2171 io.c:2197
+#: io.c:2040 io.c:2108 io.c:2276 io.c:2308
#, c-format
msgid "moving pipe to stdout in child failed (dup: %s)"
msgstr "échec du déplacement du tube vers stdout du processus fils (dup : %s)"
-#: io.c:1972 io.c:2032
+#: io.c:2047 io.c:2113
#, c-format
msgid "moving pipe to stdin in child failed (dup: %s)"
msgstr "échec de déplacement du tube vers stdin du processus fils (dup : %s)"
-#: io.c:1992 io.c:2187
+#: io.c:2073 io.c:2298
msgid "restoring stdout in parent process failed\n"
msgstr "échec de la restauration du stdout dans le processus parent\n"
-#: io.c:2000
+#: io.c:2081
msgid "restoring stdin in parent process failed\n"
msgstr "échec de la restauration du stdin dans le processus parent\n"
-#: io.c:2035 io.c:2199 io.c:2213
+#: io.c:2116 io.c:2310 io.c:2324
#, c-format
msgid "close of pipe failed (%s)"
msgstr "échec de la fermeture du tube (%s)"
-#: io.c:2089
+#: io.c:2174
msgid "`|&' not supported"
msgstr "« |& » non disponible"
-#: io.c:2156
+#: io.c:2261
#, c-format
msgid "cannot open pipe `%s' (%s)"
msgstr "impossible d'ouvrir le tube « %s » (%s)"
-#: io.c:2207
+#: io.c:2318
#, 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:2667
+#: io.c:2790
msgid "register_input_parser: received NULL pointer"
msgstr "register_input_parser : pointeur NULL reçu"
-#: io.c:2695
+#: io.c:2818
#, c-format
msgid "input parser `%s' conflicts with previously installed input parser `%s'"
msgstr ""
"l'analyseur d'entrée « %s » est en conflit avec l'analyseur « %s » déjà "
"installé"
-#: io.c:2702
+#: io.c:2825
#, c-format
msgid "input parser `%s' failed to open `%s'"
msgstr "l'analyseur d'entrée « %s » n'a pu ouvrir « %s »"
-#: io.c:2722
+#: io.c:2845
msgid "register_output_wrapper: received NULL pointer"
msgstr "register_output_wrapper : pointeur NULL reçu"
-#: io.c:2750
+#: io.c:2873
#, c-format
msgid ""
"output wrapper `%s' conflicts with previously installed output wrapper `%s'"
msgstr ""
"le filtre de sortie « %s » est en conflit avec le filtre « %s » déjà installé"
-#: io.c:2757
+#: io.c:2880
#, c-format
msgid "output wrapper `%s' failed to open `%s'"
msgstr "le filtre de sortie « %s » n'a pu ouvrir « %s »"
-#: io.c:2778
+#: io.c:2901
msgid "register_output_processor: received NULL pointer"
msgstr "register_output_processor : pointeur NULL reçu"
-#: io.c:2807
+#: io.c:2930
#, c-format
msgid ""
"two-way processor `%s' conflicts with previously installed two-way processor "
@@ -2917,216 +2938,216 @@ msgstr ""
"le gestionnaire bidirectionnel « %s » est en conflit avec le gestionnaire "
"« %s » déjà installé"
-#: io.c:2816
+#: io.c:2939
#, c-format
msgid "two way processor `%s' failed to open `%s'"
msgstr "le gestionnaire bidirectionnel « %s » n'a pu ouvrir « %s »"
-#: io.c:2923
+#: io.c:3064
#, c-format
msgid "data file `%s' is empty"
msgstr "le fichier de données « %s » est vide"
-#: io.c:2965 io.c:2973
+#: io.c:3106 io.c:3114
msgid "could not allocate more input memory"
msgstr "impossible d'allouer plus de mémoire d'entrée"
-#: io.c:3539
+#: io.c:3682
msgid "multicharacter value of `RS' is a gawk extension"
msgstr ""
"l'utilisation d'un « RS » de plusieurs caractères est une extension gawk"
-#: io.c:3628
+#: io.c:3771
msgid "IPv6 communication is not supported"
msgstr "les communications IPv6 ne sont pas disponibles"
-#: main.c:388
+#: main.c:405
msgid "empty argument to `-e/--source' ignored"
msgstr "argument vide de l'option « -e / --source » ignoré"
-#: main.c:478
+#: main.c:495
#, c-format
msgid "%s: option `-W %s' unrecognized, ignored\n"
msgstr "%s : option « -W %s » non reconnue, ignorée\n"
-#: main.c:524
+#: main.c:541
#, c-format
msgid "%s: option requires an argument -- %c\n"
msgstr "%s : l'option requiert un argument - %c\n"
-#: main.c:545
+#: main.c:562
msgid "environment variable `POSIXLY_CORRECT' set: turning on `--posix'"
msgstr ""
"variable d'environnement « POSIXLY__CORRECT » définie : activation de « --"
"posix »"
-#: main.c:551
+#: main.c:568
msgid "`--posix' overrides `--traditional'"
msgstr "« --posix » prend le pas sur « --traditional »"
-#: main.c:562
+#: main.c:579
msgid "`--posix'/`--traditional' overrides `--non-decimal-data'"
msgstr ""
"« --posix » et « --traditional » prennent le pas sur « --non-decimal-data »"
-#: main.c:566
+#: main.c:583
#, c-format
msgid "running %s setuid root may be a security problem"
msgstr ""
"l'exécution de %s en mode setuid root peut être un problème de sécurité"
-#: main.c:571
+#: main.c:588
msgid "`--posix' overrides `--characters-as-bytes'"
msgstr "« --posix » prend le pas sur « --characters-as-bytes »"
-#: main.c:630
+#: main.c:647
#, c-format
msgid "can't set binary mode on stdin (%s)"
msgstr "impossible d'activer le mode binaire sur stdin (%s)"
-#: main.c:633
+#: main.c:650
#, c-format
msgid "can't set binary mode on stdout (%s)"
msgstr "impossible d'activer le mode binaire sur stdout (%s)"
-#: main.c:635
+#: main.c:652
#, c-format
msgid "can't set binary mode on stderr (%s)"
msgstr "impossible d'activer le mode binaire sur stderr (%s)"
-#: main.c:693
+#: main.c:710
msgid "no program text at all!"
msgstr "aucun programme !"
-#: main.c:779
+#: main.c:799
#, c-format
msgid "Usage: %s [POSIX or GNU style options] -f progfile [--] file ...\n"
msgstr ""
"Utilisation : %s [options GNU ou POSIX] -f fichier_prog [--] fichier ...\n"
-#: main.c:781
+#: main.c:801
#, c-format
msgid "Usage: %s [POSIX or GNU style options] [--] %cprogram%c file ...\n"
msgstr ""
"Utilisation : %s [options GNU ou POSIX] [--] %cprogramme%c fichier ...\n"
-#: main.c:786
+#: main.c:806
msgid "POSIX options:\t\tGNU long options: (standard)\n"
msgstr "Options POSIX :\t\tOptions longues GNU : (standard)\n"
-#: main.c:787
+#: main.c:807
msgid "\t-f progfile\t\t--file=progfile\n"
msgstr "\t-f fichier_prog\t\t--file=fichier_prog\n"
-#: main.c:788
+#: main.c:808
msgid "\t-F fs\t\t\t--field-separator=fs\n"
msgstr "\t-F fs\t\t\t--field-separator=fs\n"
-#: main.c:789
+#: main.c:809
msgid "\t-v var=val\t\t--assign=var=val\n"
msgstr "\t-v var=valeur\t\t--assign=var=valeur\n"
-#: main.c:790
+#: main.c:810
msgid "Short options:\t\tGNU long options: (extensions)\n"
msgstr "Options POSIX :\t\tOptions longues GNU : (extensions)\n"
-#: main.c:791
+#: main.c:811
msgid "\t-b\t\t\t--characters-as-bytes\n"
msgstr "\t-b\t\t\t--characters-as-bytes\n"
-#: main.c:792
+#: main.c:812
msgid "\t-c\t\t\t--traditional\n"
msgstr "\t-c\t\t\t--traditional\n"
-#: main.c:793
+#: main.c:813
msgid "\t-C\t\t\t--copyright\n"
msgstr "\t-C\t\t\t--copyright\n"
-#: main.c:794
+#: main.c:814
msgid "\t-d[file]\t\t--dump-variables[=file]\n"
msgstr "\t-d[fichier]\t\t--dump-variables[=fichier]\n"
-#: main.c:795
+#: main.c:815
msgid "\t-D[file]\t\t--debug[=file]\n"
msgstr "\t-D[fichier]\t\t--debug[=fichier]\n"
-#: main.c:796
+#: main.c:816
msgid "\t-e 'program-text'\t--source='program-text'\n"
msgstr "\t-e 'programme'\t\t--source='programme'\n"
-#: main.c:797
+#: main.c:817
msgid "\t-E file\t\t\t--exec=file\n"
msgstr "\t-E fichier\t\t--exec=fichier\n"
-#: main.c:798
+#: main.c:818
msgid "\t-g\t\t\t--gen-pot\n"
msgstr "\t-g\t\t\t--gen-pot\n"
-#: main.c:799
+#: main.c:819
msgid "\t-h\t\t\t--help\n"
msgstr "\t-h\t\t\t--help\n"
-#: main.c:800
+#: main.c:820
msgid "\t-i includefile\t\t--include=includefile\n"
msgstr "\t-i fichier\t\t--include=fichier\n"
-#: main.c:801
+#: main.c:821
msgid "\t-l library\t\t--load=library\n"
msgstr "\t-l bibliothèque\t\t--load=bibliothèque\n"
-#: main.c:802
+#: main.c:822
msgid "\t-L [fatal]\t\t--lint[=fatal]\n"
msgstr "\t-L [fatal]\t\t--lint[=fatal]\n"
-#: main.c:803
+#: main.c:823
msgid "\t-n\t\t\t--non-decimal-data\n"
msgstr "\t-n\t\t\t--non-decimal-data\n"
-#: main.c:804
+#: main.c:824
msgid "\t-M\t\t\t--bignum\n"
msgstr "\t-M\t\t\t--bignum\n"
-#: main.c:805
+#: main.c:825
msgid "\t-N\t\t\t--use-lc-numeric\n"
msgstr "\t-N\t\t\t--use-lc-numeric\n"
-#: main.c:806
+#: main.c:826
msgid "\t-o[file]\t\t--pretty-print[=file]\n"
msgstr "\t-o[fichier]\t\t--pretty-print[=fichier]\n"
-#: main.c:807
+#: main.c:827
msgid "\t-O\t\t\t--optimize\n"
msgstr "\t-O\t\t\t--optimize\n"
-#: main.c:808
+#: main.c:828
msgid "\t-p[file]\t\t--profile[=file]\n"
msgstr "\t-p[fichier]\t\t--profile[=fichier]\n"
-#: main.c:809
+#: main.c:829
msgid "\t-P\t\t\t--posix\n"
msgstr "\t-P\t\t\t--posix\n"
-#: main.c:810
+#: main.c:830
msgid "\t-r\t\t\t--re-interval\n"
msgstr "\t-r\t\t\t--re-interval\n"
-#: main.c:811
+#: main.c:831
msgid "\t-S\t\t\t--sandbox\n"
msgstr "\t-S\t\t\t--sandbox\n"
-#: main.c:812
+#: main.c:832
msgid "\t-t\t\t\t--lint-old\n"
msgstr "\t-t\t\t\t--lint-old\n"
-#: main.c:813
+#: main.c:833
msgid "\t-V\t\t\t--version\n"
msgstr "\t-V\t\t\t--version\n"
-#: main.c:815
+#: main.c:835
msgid "\t-W nostalgia\t\t--nostalgia\n"
msgstr "\t-W nostalgia\t\t--nostalgia\n"
-#: main.c:818
+#: main.c:838
msgid "\t-Y\t\t--parsedebug\n"
msgstr "\t-Y\t\t--parsedebug\n"
@@ -3135,7 +3156,7 @@ msgstr "\t-Y\t\t--parsedebug\n"
#. for this application. Please add _another line_ with the
#. address for translation bugs.
#. no-wrap
-#: main.c:827
+#: main.c:847
msgid ""
"\n"
"To report bugs, see node `Bugs' in `gawk.info', which is\n"
@@ -3150,7 +3171,7 @@ msgstr ""
"<traduc CHEZ traduc POINT org>.\n"
"\n"
-#: main.c:831
+#: main.c:851
msgid ""
"gawk is a pattern scanning and processing language.\n"
"By default it reads standard input and writes standard output.\n"
@@ -3160,7 +3181,7 @@ msgstr ""
"Par défaut, il lit l'entrée standard et écrit sur la sortie standard.\n"
"\n"
-#: main.c:835
+#: main.c:855
msgid ""
"Examples:\n"
"\tgawk '{ sum += $1 }; END { print sum }' file\n"
@@ -3170,7 +3191,7 @@ msgstr ""
"\tgawk '{ somme += $1 }; END { print somme }' fichier\n"
"\tgawk -F: '{ print $1 }' /etc/passwd\n"
-#: main.c:855
+#: main.c:880
#, c-format
msgid ""
"Copyright (C) 1989, 1991-%d Free Software Foundation.\n"
@@ -3190,7 +3211,7 @@ msgstr ""
"version ultérieure de votre choix.\n"
"\n"
-#: main.c:863
+#: main.c:888
msgid ""
"This program is distributed in the hope that it will be useful,\n"
"but WITHOUT ANY WARRANTY; without even the implied warranty of\n"
@@ -3205,7 +3226,7 @@ msgstr ""
"General Public License).\n"
"\n"
-#: main.c:869
+#: main.c:894
msgid ""
"You should have received a copy of the GNU General Public License\n"
"along with this program. If not, see http://www.gnu.org/licenses/.\n"
@@ -3214,16 +3235,16 @@ msgstr ""
"(GNU General Public License) avec ce programme. Sinon, consultez\n"
"http://www.gnu.org/licenses/.\n"
-#: main.c:904
+#: main.c:931
msgid "-Ft does not set FS to tab in POSIX awk"
msgstr "-Ft ne définit pas le FS comme étant une tabulation en awk POSIX"
-#: main.c:1181
+#: main.c:1208
#, c-format
msgid "unknown value for field spec: %d\n"
msgstr "valeur inconnue pour la définition de champ : %d\n"
-#: main.c:1279
+#: main.c:1306
#, c-format
msgid ""
"%s: `%s' argument to `-v' not in `var=value' form\n"
@@ -3232,48 +3253,48 @@ msgstr ""
"%s : « %s » l'argument de « -v » ne respecte pas la forme « var=valeur »\n"
"\n"
-#: main.c:1305
+#: main.c:1332
#, c-format
msgid "`%s' is not a legal variable name"
msgstr "« %s » n'est pas un nom de variable valide"
-#: main.c:1308
+#: main.c:1335
#, 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:1312
+#: main.c:1339
#, c-format
msgid "cannot use gawk builtin `%s' as variable name"
msgstr "impossible d'utiliser le mot clef gawk « %s » comme variable"
-#: main.c:1317
+#: main.c:1344
#, c-format
msgid "cannot use function `%s' as variable name"
msgstr "impossible d'utiliser la fonction « %s » comme variable"
-#: main.c:1370
+#: main.c:1397
msgid "floating point exception"
msgstr "exception du traitement en virgule flottante"
-#: main.c:1377
+#: main.c:1404
msgid "fatal error: internal error"
msgstr "fatal : erreur interne"
-#: main.c:1392
+#: main.c:1419
msgid "fatal error: internal error: segfault"
msgstr "fatal : erreur interne : erreur de segmentation"
-#: main.c:1404
+#: main.c:1431
msgid "fatal error: internal error: stack overflow"
msgstr "fatal : erreur interne : débordement de la pile"
-#: main.c:1463
+#: main.c:1490
#, c-format
msgid "no pre-opened fd %d"
msgstr "aucun descripteur fd %d pré-ouvert"
-#: main.c:1470
+#: main.c:1497
#, c-format
msgid "could not pre-open /dev/null for fd %d"
msgstr "impossible de pré-ouvrir /dev/null pour le descripteur fd %d"
@@ -3330,7 +3351,7 @@ msgid "%s: argument #%d negative value %Zd will give strange results"
msgstr ""
"%s : argument #%d : la valeur négative %Zd donnera des résultats inattendus"
-#: msg.c:61
+#: msg.c:68
#, c-format
msgid "cmd. line:"
msgstr "ligne de commande:"
@@ -3386,16 +3407,16 @@ msgid "%s %s `%s': could not set close-on-exec: (fcntl F_SETFD: %s)"
msgstr ""
"%s %s « %s »: impossible de positionner close-on-exec: (fcntl F_SETFD: %s)"
-#: profile.c:70
+#: profile.c:71
#, c-format
msgid "could not open `%s' for writing: %s"
msgstr "impossible d'ouvrir « %s » en écriture : %s"
-#: profile.c:72
+#: profile.c:73
msgid "sending profile to standard error"
msgstr "envoi du profil vers la sortie d'erreur standard"
-#: profile.c:188
+#: profile.c:193
#, c-format
msgid ""
"\t# %s block(s)\n"
@@ -3404,7 +3425,7 @@ msgstr ""
"\t# Bloc(s) %s\n"
"\n"
-#: profile.c:193
+#: profile.c:198
#, c-format
msgid ""
"\t# Rule(s)\n"
@@ -3413,16 +3434,16 @@ msgstr ""
"\t# Règle(s)\n"
"\n"
-#: profile.c:267
+#: profile.c:272
#, c-format
msgid "internal error: %s with null vname"
msgstr "erreur interne : %s avec un vname nul"
-#: profile.c:530
+#: profile.c:537
msgid "internal error: builtin with null fname"
msgstr "erreur interne : fonction interne avec un fname nul"
-#: profile.c:942
+#: profile.c:949
#, c-format
msgid ""
"\t# Loaded extensions (-l and/or @load)\n"
@@ -3431,12 +3452,12 @@ msgstr ""
"\t# Extensions chargées (-l ou @load)\n"
"\n"
-#: profile.c:965
+#: profile.c:972
#, c-format
msgid "\t# gawk profile, created %s\n"
msgstr "\t# profile gawk, créé %s\n"
-#: profile.c:1351
+#: profile.c:1475
#, c-format
msgid ""
"\n"
@@ -3445,17 +3466,12 @@ msgstr ""
"\n"
"\t# Fonctions, par ordre alphabétique\n"
-#: profile.c:1389
+#: profile.c:1513
#, c-format
msgid "redir2str: unknown redirection type %d"
msgstr "redir2str : type de redirection %d inconnu"
-#: re.c:583
-#, c-format
-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:610
+#: re.c:607
#, c-format
msgid "regexp component `%.*s' should probably be `[%.*s]'"
msgstr ""
@@ -3526,6 +3542,9 @@ msgstr ") ou \\) sans correspondance"
msgid "No previous regular expression"
msgstr "Aucune expression rationnelle précédente"
-#: symbol.c:740
+#: symbol.c:741
msgid "can not pop main context"
msgstr "impossible de rétablir (pop) le contexte principal (main)"
+
+#~ msgid "range of the form `[%c-%c]' is locale dependent"
+#~ msgstr "les plages « [%c-%c] » sont dépendantes des paramètres régionaux"
diff --git a/po/gawk.pot b/po/gawk.pot
index 6e4582f5..bb47fa9e 100644
--- a/po/gawk.pot
+++ b/po/gawk.pot
@@ -6,9 +6,9 @@
#, fuzzy
msgid ""
msgstr ""
-"Project-Id-Version: gawk 4.1.0\n"
+"Project-Id-Version: gawk 4.1.1\n"
"Report-Msgid-Bugs-To: arnold@skeeve.com\n"
-"POT-Creation-Date: 2013-05-09 16:05+0300\n"
+"POT-Creation-Date: 2014-04-08 19:23+0300\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"
@@ -17,84 +17,84 @@ msgstr ""
"Content-Type: text/plain; charset=CHARSET\n"
"Content-Transfer-Encoding: 8bit\n"
-#: array.c:254
+#: array.c:256
#, c-format
msgid "from %s"
msgstr ""
-#: array.c:354
+#: array.c:357
msgid "attempt to use a scalar value as array"
msgstr ""
-#: array.c:356
+#: array.c:359
#, c-format
msgid "attempt to use scalar parameter `%s' as an array"
msgstr ""
-#: array.c:359
+#: array.c:362
#, c-format
msgid "attempt to use scalar `%s' as an array"
msgstr ""
-#: array.c:406 array.c:573 builtin.c:85 builtin.c:1591 builtin.c:1637
-#: builtin.c:1650 builtin.c:2078 builtin.c:2092 eval.c:1121 eval.c:1125
-#: eval.c:1524
+#: array.c:409 array.c:576 builtin.c:85 builtin.c:1615 builtin.c:1661
+#: builtin.c:1674 builtin.c:2102 builtin.c:2116 eval.c:1122 eval.c:1126
+#: eval.c:1531
#, c-format
msgid "attempt to use array `%s' in a scalar context"
msgstr ""
-#: array.c:580
+#: array.c:583
#, c-format
msgid "delete: index `%s' not in array `%s'"
msgstr ""
-#: array.c:594
+#: array.c:597
#, c-format
msgid "attempt to use scalar `%s[\"%.*s\"]' as an array"
msgstr ""
-#: array.c:773
+#: array.c:776
msgid "adump: first argument not an array"
msgstr ""
-#: array.c:812
+#: array.c:815
msgid "asort: second argument not an array"
msgstr ""
-#: array.c:813
+#: array.c:816
msgid "asorti: second argument not an array"
msgstr ""
-#: array.c:820
+#: array.c:823
msgid "asort: first argument not an array"
msgstr ""
-#: array.c:821
+#: array.c:824
msgid "asorti: first argument not an array"
msgstr ""
-#: array.c:828
+#: array.c:831
msgid "asort: cannot use a subarray of first arg for second arg"
msgstr ""
-#: array.c:829
+#: array.c:832
msgid "asorti: cannot use a subarray of first arg for second arg"
msgstr ""
-#: array.c:834
+#: array.c:837
msgid "asort: cannot use a subarray of second arg for first arg"
msgstr ""
-#: array.c:835
+#: array.c:838
msgid "asorti: cannot use a subarray of second arg for first arg"
msgstr ""
-#: array.c:1309
+#: array.c:1314
#, c-format
msgid "`%s' is invalid as a function name"
msgstr ""
-#: array.c:1313
+#: array.c:1318
#, c-format
msgid "sort comparison function `%s' is not defined"
msgstr ""
@@ -135,11 +135,11 @@ msgstr ""
msgid "duplicate `default' detected in switch body"
msgstr ""
-#: awkgram.y:796 awkgram.y:3699
+#: awkgram.y:796 awkgram.y:3723
msgid "`break' is not allowed outside a loop or switch"
msgstr ""
-#: awkgram.y:805 awkgram.y:3691
+#: awkgram.y:805 awkgram.y:3715
msgid "`continue' is not allowed outside a loop"
msgstr ""
@@ -228,675 +228,685 @@ msgstr ""
msgid "invalid subscript expression"
msgstr ""
-#: awkgram.y:2024 awkgram.y:2044 gawkapi.c:206 gawkapi.c:224 msg.c:119
+#: awkgram.y:2048 awkgram.y:2068 gawkapi.c:206 gawkapi.c:224 msg.c:126
msgid "warning: "
msgstr ""
-#: awkgram.y:2042 gawkapi.c:192 gawkapi.c:221 msg.c:151
+#: awkgram.y:2066 gawkapi.c:192 gawkapi.c:221 msg.c:158
msgid "fatal: "
msgstr ""
-#: awkgram.y:2092
+#: awkgram.y:2116
msgid "unexpected newline or end of string"
msgstr ""
-#: awkgram.y:2359 awkgram.y:2435 awkgram.y:2658 debug.c:517 debug.c:533
-#: debug.c:2792 debug.c:5040
+#: awkgram.y:2383 awkgram.y:2459 awkgram.y:2682 debug.c:523 debug.c:539
+#: debug.c:2812 debug.c:5055
#, c-format
msgid "can't open source file `%s' for reading (%s)"
msgstr ""
-#: awkgram.y:2360 awkgram.y:2485
+#: awkgram.y:2384 awkgram.y:2509
#, c-format
msgid "can't open shared library `%s' for reading (%s)"
msgstr ""
-#: awkgram.y:2362 awkgram.y:2436 awkgram.y:2486 builtin.c:130 debug.c:5191
+#: awkgram.y:2386 awkgram.y:2460 awkgram.y:2510 builtin.c:135 debug.c:5206
msgid "reason unknown"
msgstr ""
-#: awkgram.y:2371 awkgram.y:2395
+#: awkgram.y:2395 awkgram.y:2419
#, c-format
msgid "can't include `%s' and use it as a program file"
msgstr ""
-#: awkgram.y:2384
+#: awkgram.y:2408
#, c-format
msgid "already included source file `%s'"
msgstr ""
-#: awkgram.y:2385
+#: awkgram.y:2409
#, c-format
msgid "already loaded shared library `%s'"
msgstr ""
-#: awkgram.y:2420
+#: awkgram.y:2444
msgid "@include is a gawk extension"
msgstr ""
-#: awkgram.y:2426
+#: awkgram.y:2450
msgid "empty filename after @include"
msgstr ""
-#: awkgram.y:2470
+#: awkgram.y:2494
msgid "@load is a gawk extension"
msgstr ""
-#: awkgram.y:2476
+#: awkgram.y:2500
msgid "empty filename after @load"
msgstr ""
-#: awkgram.y:2610
+#: awkgram.y:2634
msgid "empty program text on command line"
msgstr ""
-#: awkgram.y:2725
+#: awkgram.y:2749
#, c-format
msgid "can't read sourcefile `%s' (%s)"
msgstr ""
-#: awkgram.y:2736
+#: awkgram.y:2760
#, c-format
msgid "source file `%s' is empty"
msgstr ""
-#: awkgram.y:2913
+#: awkgram.y:2937
msgid "source file does not end in newline"
msgstr ""
-#: awkgram.y:3018
+#: awkgram.y:3042
msgid "unterminated regexp ends with `\\' at end of file"
msgstr ""
-#: awkgram.y:3042
+#: awkgram.y:3066
#, c-format
msgid "%s: %d: tawk regex modifier `/.../%c' doesn't work in gawk"
msgstr ""
-#: awkgram.y:3046
+#: awkgram.y:3070
#, c-format
msgid "tawk regex modifier `/.../%c' doesn't work in gawk"
msgstr ""
-#: awkgram.y:3053
+#: awkgram.y:3077
msgid "unterminated regexp"
msgstr ""
-#: awkgram.y:3057
+#: awkgram.y:3081
msgid "unterminated regexp at end of file"
msgstr ""
-#: awkgram.y:3116
+#: awkgram.y:3140
msgid "use of `\\ #...' line continuation is not portable"
msgstr ""
-#: awkgram.y:3132
+#: awkgram.y:3156
msgid "backslash not last character on line"
msgstr ""
-#: awkgram.y:3193
+#: awkgram.y:3217
msgid "POSIX does not allow operator `**='"
msgstr ""
-#: awkgram.y:3195
+#: awkgram.y:3219
msgid "old awk does not support operator `**='"
msgstr ""
-#: awkgram.y:3204
+#: awkgram.y:3228
msgid "POSIX does not allow operator `**'"
msgstr ""
-#: awkgram.y:3206
+#: awkgram.y:3230
msgid "old awk does not support operator `**'"
msgstr ""
-#: awkgram.y:3241
+#: awkgram.y:3265
msgid "operator `^=' is not supported in old awk"
msgstr ""
-#: awkgram.y:3249
+#: awkgram.y:3273
msgid "operator `^' is not supported in old awk"
msgstr ""
-#: awkgram.y:3342 awkgram.y:3358 command.y:1178
+#: awkgram.y:3366 awkgram.y:3382 command.y:1178
msgid "unterminated string"
msgstr ""
-#: awkgram.y:3579
+#: awkgram.y:3603
#, c-format
msgid "invalid char '%c' in expression"
msgstr ""
-#: awkgram.y:3626
+#: awkgram.y:3650
#, c-format
msgid "`%s' is a gawk extension"
msgstr ""
-#: awkgram.y:3631
+#: awkgram.y:3655
#, c-format
msgid "POSIX does not allow `%s'"
msgstr ""
-#: awkgram.y:3639
+#: awkgram.y:3663
#, c-format
msgid "`%s' is not supported in old awk"
msgstr ""
-#: awkgram.y:3729
+#: awkgram.y:3753
msgid "`goto' considered harmful!\n"
msgstr ""
-#: awkgram.y:3763
+#: awkgram.y:3787
#, c-format
msgid "%d is invalid as number of arguments for %s"
msgstr ""
-#: awkgram.y:3798
+#: awkgram.y:3822
#, c-format
msgid "%s: string literal as last arg of substitute has no effect"
msgstr ""
-#: awkgram.y:3803
+#: awkgram.y:3827
#, c-format
msgid "%s third parameter is not a changeable object"
msgstr ""
-#: awkgram.y:3886 awkgram.y:3889
+#: awkgram.y:3910 awkgram.y:3913
msgid "match: third argument is a gawk extension"
msgstr ""
-#: awkgram.y:3943 awkgram.y:3946
+#: awkgram.y:3967 awkgram.y:3970
msgid "close: second argument is a gawk extension"
msgstr ""
-#: awkgram.y:3958
+#: awkgram.y:3982
msgid "use of dcgettext(_\"...\") is incorrect: remove leading underscore"
msgstr ""
-#: awkgram.y:3973
+#: awkgram.y:3997
msgid "use of dcngettext(_\"...\") is incorrect: remove leading underscore"
msgstr ""
-#: awkgram.y:3992
+#: awkgram.y:4016
msgid "index: regexp constant as second argument is not allowed"
msgstr ""
-#: awkgram.y:4045
+#: awkgram.y:4069
#, c-format
msgid "function `%s': parameter `%s' shadows global variable"
msgstr ""
-#: awkgram.y:4102 debug.c:4021 debug.c:4064 debug.c:5189
+#: awkgram.y:4126 debug.c:4041 debug.c:4084 debug.c:5204
#, c-format
msgid "could not open `%s' for writing (%s)"
msgstr ""
-#: awkgram.y:4103
+#: awkgram.y:4127
msgid "sending variable list to standard error"
msgstr ""
-#: awkgram.y:4111
+#: awkgram.y:4135
#, c-format
msgid "%s: close failed (%s)"
msgstr ""
-#: awkgram.y:4136
+#: awkgram.y:4160
msgid "shadow_funcs() called twice!"
msgstr ""
-#: awkgram.y:4144
+#: awkgram.y:4168
msgid "there were shadowed variables."
msgstr ""
-#: awkgram.y:4215
+#: awkgram.y:4239
#, c-format
msgid "function name `%s' previously defined"
msgstr ""
-#: awkgram.y:4261
+#: awkgram.y:4285
#, c-format
msgid "function `%s': can't use function name as parameter name"
msgstr ""
-#: awkgram.y:4264
+#: awkgram.y:4288
#, c-format
msgid "function `%s': can't use special variable `%s' as a function parameter"
msgstr ""
-#: awkgram.y:4272
+#: awkgram.y:4296
#, c-format
msgid "function `%s': parameter #%d, `%s', duplicates parameter #%d"
msgstr ""
-#: awkgram.y:4366 awkgram.y:4372
+#: awkgram.y:4383 awkgram.y:4389
#, c-format
msgid "function `%s' called but never defined"
msgstr ""
-#: awkgram.y:4376
+#: awkgram.y:4393
#, c-format
msgid "function `%s' defined but never called directly"
msgstr ""
-#: awkgram.y:4408
+#: awkgram.y:4425
#, c-format
msgid "regexp constant for parameter #%d yields boolean value"
msgstr ""
-#: awkgram.y:4467
+#: awkgram.y:4484
#, c-format
msgid ""
"function `%s' called with space between name and `(',\n"
"or used as a variable or an array"
msgstr ""
-#: awkgram.y:4703
+#: awkgram.y:4720
msgid "division by zero attempted"
msgstr ""
-#: awkgram.y:4712
+#: awkgram.y:4729
#, c-format
msgid "division by zero attempted in `%%'"
msgstr ""
-#: builtin.c:128
+#: awkgram.y:5049
+msgid ""
+"cannot assign a value to the result of a field post-increment expression"
+msgstr ""
+
+#: awkgram.y:5052
+#, c-format
+msgid "invalid target of assignment (opcode %s)"
+msgstr ""
+
+#: builtin.c:133
#, c-format
msgid "%s to \"%s\" failed (%s)"
msgstr ""
-#: builtin.c:129
+#: builtin.c:134
msgid "standard output"
msgstr ""
-#: builtin.c:143
+#: builtin.c:148
msgid "exp: received non-numeric argument"
msgstr ""
-#: builtin.c:149
+#: builtin.c:154
#, c-format
msgid "exp: argument %g is out of range"
msgstr ""
-#: builtin.c:224
+#: builtin.c:229
#, c-format
msgid "fflush: cannot flush: pipe `%s' opened for reading, not writing"
msgstr ""
-#: builtin.c:227
+#: builtin.c:232
#, c-format
msgid "fflush: cannot flush: file `%s' opened for reading, not writing"
msgstr ""
-#: builtin.c:239
+#: builtin.c:244
#, c-format
msgid "fflush: `%s' is not an open file, pipe or co-process"
msgstr ""
-#: builtin.c:357
+#: builtin.c:362
msgid "index: received non-string first argument"
msgstr ""
-#: builtin.c:359
+#: builtin.c:364
msgid "index: received non-string second argument"
msgstr ""
-#: builtin.c:483 mpfr.c:757
+#: builtin.c:488 mpfr.c:757
msgid "int: received non-numeric argument"
msgstr ""
-#: builtin.c:520
+#: builtin.c:525
msgid "length: received array argument"
msgstr ""
-#: builtin.c:523
+#: builtin.c:528
msgid "`length(array)' is a gawk extension"
msgstr ""
-#: builtin.c:539
+#: builtin.c:544
msgid "length: received non-string argument"
msgstr ""
-#: builtin.c:570
+#: builtin.c:575
msgid "log: received non-numeric argument"
msgstr ""
-#: builtin.c:573
+#: builtin.c:578
#, c-format
msgid "log: received negative argument %g"
msgstr ""
-#: builtin.c:771 builtin.c:776
+#: builtin.c:776 builtin.c:781
msgid "fatal: must use `count$' on all formats or none"
msgstr ""
-#: builtin.c:846
+#: builtin.c:851
#, c-format
msgid "field width is ignored for `%%' specifier"
msgstr ""
-#: builtin.c:848
+#: builtin.c:853
#, c-format
msgid "precision is ignored for `%%' specifier"
msgstr ""
-#: builtin.c:850
+#: builtin.c:855
#, c-format
msgid "field width and precision are ignored for `%%' specifier"
msgstr ""
-#: builtin.c:901
+#: builtin.c:906
msgid "fatal: `$' is not permitted in awk formats"
msgstr ""
-#: builtin.c:910
+#: builtin.c:915
msgid "fatal: arg count with `$' must be > 0"
msgstr ""
-#: builtin.c:914
+#: builtin.c:919
#, c-format
msgid "fatal: arg count %ld greater than total number of supplied arguments"
msgstr ""
-#: builtin.c:918
+#: builtin.c:923
msgid "fatal: `$' not permitted after period in format"
msgstr ""
-#: builtin.c:934
+#: builtin.c:939
msgid "fatal: no `$' supplied for positional field width or precision"
msgstr ""
-#: builtin.c:1006
+#: builtin.c:1009
msgid "`l' is meaningless in awk formats; ignored"
msgstr ""
-#: builtin.c:1010
+#: builtin.c:1013
msgid "fatal: `l' is not permitted in POSIX awk formats"
msgstr ""
-#: builtin.c:1023
+#: builtin.c:1026
msgid "`L' is meaningless in awk formats; ignored"
msgstr ""
-#: builtin.c:1027
+#: builtin.c:1030
msgid "fatal: `L' is not permitted in POSIX awk formats"
msgstr ""
-#: builtin.c:1040
+#: builtin.c:1043
msgid "`h' is meaningless in awk formats; ignored"
msgstr ""
-#: builtin.c:1044
+#: builtin.c:1047
msgid "fatal: `h' is not permitted in POSIX awk formats"
msgstr ""
-#: builtin.c:1439
+#: builtin.c:1463
#, c-format
msgid "[s]printf: value %g is out of range for `%%%c' format"
msgstr ""
-#: builtin.c:1537
+#: builtin.c:1561
#, c-format
msgid "ignoring unknown format specifier character `%c': no argument converted"
msgstr ""
-#: builtin.c:1542
+#: builtin.c:1566
msgid "fatal: not enough arguments to satisfy format string"
msgstr ""
-#: builtin.c:1544
+#: builtin.c:1568
msgid "^ ran out for this one"
msgstr ""
-#: builtin.c:1551
+#: builtin.c:1575
msgid "[s]printf: format specifier does not have control letter"
msgstr ""
-#: builtin.c:1554
+#: builtin.c:1578
msgid "too many arguments supplied for format string"
msgstr ""
-#: builtin.c:1610
+#: builtin.c:1634
msgid "sprintf: no arguments"
msgstr ""
-#: builtin.c:1633 builtin.c:1644
+#: builtin.c:1657 builtin.c:1668
msgid "printf: no arguments"
msgstr ""
-#: builtin.c:1687
+#: builtin.c:1711
msgid "sqrt: received non-numeric argument"
msgstr ""
-#: builtin.c:1691
+#: builtin.c:1715
#, c-format
msgid "sqrt: called with negative argument %g"
msgstr ""
-#: builtin.c:1722
+#: builtin.c:1746
#, c-format
msgid "substr: length %g is not >= 1"
msgstr ""
-#: builtin.c:1724
+#: builtin.c:1748
#, c-format
msgid "substr: length %g is not >= 0"
msgstr ""
-#: builtin.c:1731
+#: builtin.c:1755
#, c-format
msgid "substr: non-integer length %g will be truncated"
msgstr ""
-#: builtin.c:1736
+#: builtin.c:1760
#, c-format
msgid "substr: length %g too big for string indexing, truncating to %g"
msgstr ""
-#: builtin.c:1748
+#: builtin.c:1772
#, c-format
msgid "substr: start index %g is invalid, using 1"
msgstr ""
-#: builtin.c:1753
+#: builtin.c:1777
#, c-format
msgid "substr: non-integer start index %g will be truncated"
msgstr ""
-#: builtin.c:1778
+#: builtin.c:1802
msgid "substr: source string is zero length"
msgstr ""
-#: builtin.c:1794
+#: builtin.c:1818
#, c-format
msgid "substr: start index %g is past end of string"
msgstr ""
-#: builtin.c:1802
+#: builtin.c:1826
#, c-format
msgid ""
"substr: length %g at start index %g exceeds length of first argument (%lu)"
msgstr ""
-#: builtin.c:1876
+#: builtin.c:1900
msgid "strftime: format value in PROCINFO[\"strftime\"] has numeric type"
msgstr ""
-#: builtin.c:1899
+#: builtin.c:1923
msgid "strftime: received non-numeric second argument"
msgstr ""
-#: builtin.c:1903
+#: builtin.c:1927
msgid "strftime: second argument less than 0 or too big for time_t"
msgstr ""
-#: builtin.c:1910
+#: builtin.c:1934
msgid "strftime: received non-string first argument"
msgstr ""
-#: builtin.c:1917
+#: builtin.c:1941
msgid "strftime: received empty format string"
msgstr ""
-#: builtin.c:1983
+#: builtin.c:2007
msgid "mktime: received non-string argument"
msgstr ""
-#: builtin.c:2000
+#: builtin.c:2024
msgid "mktime: at least one of the values is out of the default range"
msgstr ""
-#: builtin.c:2035
+#: builtin.c:2059
msgid "'system' function not allowed in sandbox mode"
msgstr ""
-#: builtin.c:2040
+#: builtin.c:2064
msgid "system: received non-string argument"
msgstr ""
-#: builtin.c:2160
+#: builtin.c:2184
#, c-format
msgid "reference to uninitialized field `$%d'"
msgstr ""
-#: builtin.c:2247
+#: builtin.c:2271
msgid "tolower: received non-string argument"
msgstr ""
-#: builtin.c:2281
+#: builtin.c:2305
msgid "toupper: received non-string argument"
msgstr ""
-#: builtin.c:2317 mpfr.c:672
+#: builtin.c:2341 mpfr.c:672
msgid "atan2: received non-numeric first argument"
msgstr ""
-#: builtin.c:2319 mpfr.c:674
+#: builtin.c:2343 mpfr.c:674
msgid "atan2: received non-numeric second argument"
msgstr ""
-#: builtin.c:2338
+#: builtin.c:2362
msgid "sin: received non-numeric argument"
msgstr ""
-#: builtin.c:2354
+#: builtin.c:2378
msgid "cos: received non-numeric argument"
msgstr ""
-#: builtin.c:2407 mpfr.c:1156
+#: builtin.c:2431 mpfr.c:1156
msgid "srand: received non-numeric argument"
msgstr ""
-#: builtin.c:2438
+#: builtin.c:2462
msgid "match: third argument is not an array"
msgstr ""
-#: builtin.c:2710
+#: builtin.c:2734
msgid "gensub: third argument of 0 treated as 1"
msgstr ""
-#: builtin.c:3003
+#: builtin.c:3030
msgid "lshift: received non-numeric first argument"
msgstr ""
-#: builtin.c:3005
+#: builtin.c:3032
msgid "lshift: received non-numeric second argument"
msgstr ""
-#: builtin.c:3011
+#: builtin.c:3038
#, c-format
msgid "lshift(%f, %f): negative values will give strange results"
msgstr ""
-#: builtin.c:3013
+#: builtin.c:3040
#, c-format
msgid "lshift(%f, %f): fractional values will be truncated"
msgstr ""
-#: builtin.c:3015
+#: builtin.c:3042
#, c-format
msgid "lshift(%f, %f): too large shift value will give strange results"
msgstr ""
-#: builtin.c:3040
+#: builtin.c:3067
msgid "rshift: received non-numeric first argument"
msgstr ""
-#: builtin.c:3042
+#: builtin.c:3069
msgid "rshift: received non-numeric second argument"
msgstr ""
-#: builtin.c:3048
+#: builtin.c:3075
#, c-format
msgid "rshift(%f, %f): negative values will give strange results"
msgstr ""
-#: builtin.c:3050
+#: builtin.c:3077
#, c-format
msgid "rshift(%f, %f): fractional values will be truncated"
msgstr ""
-#: builtin.c:3052
+#: builtin.c:3079
#, c-format
msgid "rshift(%f, %f): too large shift value will give strange results"
msgstr ""
-#: builtin.c:3077 mpfr.c:968
+#: builtin.c:3104 mpfr.c:968
msgid "and: called with less than two arguments"
msgstr ""
-#: builtin.c:3082
+#: builtin.c:3109
#, c-format
msgid "and: argument %d is non-numeric"
msgstr ""
-#: builtin.c:3086
+#: builtin.c:3113
#, c-format
msgid "and: argument %d negative value %g will give strange results"
msgstr ""
-#: builtin.c:3109 mpfr.c:1000
+#: builtin.c:3136 mpfr.c:1000
msgid "or: called with less than two arguments"
msgstr ""
-#: builtin.c:3114
+#: builtin.c:3141
#, c-format
msgid "or: argument %d is non-numeric"
msgstr ""
-#: builtin.c:3118
+#: builtin.c:3145
#, c-format
msgid "or: argument %d negative value %g will give strange results"
msgstr ""
-#: builtin.c:3140 mpfr.c:1031
+#: builtin.c:3167 mpfr.c:1031
msgid "xor: called with less than two arguments"
msgstr ""
-#: builtin.c:3146
+#: builtin.c:3173
#, c-format
msgid "xor: argument %d is non-numeric"
msgstr ""
-#: builtin.c:3150
+#: builtin.c:3177
#, c-format
msgid "xor: argument %d negative value %g will give strange results"
msgstr ""
-#: builtin.c:3175 mpfr.c:787
+#: builtin.c:3202 mpfr.c:787
msgid "compl: received non-numeric argument"
msgstr ""
-#: builtin.c:3181
+#: builtin.c:3208
#, c-format
msgid "compl(%f): negative value will give strange results"
msgstr ""
-#: builtin.c:3183
+#: builtin.c:3210
#, c-format
msgid "compl(%f): fractional value will be truncated"
msgstr ""
-#: builtin.c:3352
+#: builtin.c:3379
#, c-format
msgid "dcgettext: `%s' is not a valid locale category"
msgstr ""
@@ -1018,8 +1028,8 @@ msgstr ""
#: command.y:823
msgid ""
-"commands [num] - starts a list of commands to be executed at a breakpoint"
-"(watchpoint) hit."
+"commands [num] - starts a list of commands to be executed at a "
+"breakpoint(watchpoint) hit."
msgstr ""
#: command.y:825
@@ -1176,7 +1186,7 @@ msgstr ""
msgid "watch var - set a watchpoint for a variable."
msgstr ""
-#: command.y:1011 debug.c:395 msg.c:128
+#: command.y:1011 debug.c:401 msg.c:135
#, c-format
msgid "error: "
msgstr ""
@@ -1214,552 +1224,552 @@ msgstr ""
msgid "undefined command: %s\n"
msgstr ""
-#: debug.c:246
+#: debug.c:252
msgid "set or show the number of lines to keep in history file."
msgstr ""
-#: debug.c:248
+#: debug.c:254
msgid "set or show the list command window size."
msgstr ""
-#: debug.c:250
+#: debug.c:256
msgid "set or show gawk output file."
msgstr ""
-#: debug.c:252
+#: debug.c:258
msgid "set or show debugger prompt."
msgstr ""
-#: debug.c:254
+#: debug.c:260
msgid "(un)set or show saving of command history (value=on|off)."
msgstr ""
-#: debug.c:256
+#: debug.c:262
msgid "(un)set or show saving of options (value=on|off)."
msgstr ""
-#: debug.c:258
+#: debug.c:264
msgid "(un)set or show instruction tracing (value=on|off)."
msgstr ""
-#: debug.c:339
+#: debug.c:345
msgid "program not running."
msgstr ""
-#: debug.c:442 debug.c:597
+#: debug.c:448 debug.c:606
#, c-format
msgid "can't read source file `%s' (%s)"
msgstr ""
-#: debug.c:447
+#: debug.c:453
#, c-format
msgid "source file `%s' is empty.\n"
msgstr ""
-#: debug.c:474
+#: debug.c:480
msgid "no current source file."
msgstr ""
-#: debug.c:499
+#: debug.c:505
#, c-format
msgid "cannot find source file named `%s' (%s)"
msgstr ""
-#: debug.c:523
+#: debug.c:529
#, c-format
msgid "WARNING: source file `%s' modified since program compilation.\n"
msgstr ""
-#: debug.c:542
+#: debug.c:551
#, c-format
msgid "line number %d out of range; `%s' has %d lines"
msgstr ""
-#: debug.c:602
+#: debug.c:611
#, c-format
msgid "unexpected eof while reading file `%s', line %d"
msgstr ""
-#: debug.c:611
+#: debug.c:620
#, c-format
msgid "source file `%s' modified since start of program execution"
msgstr ""
-#: debug.c:723
+#: debug.c:732
#, c-format
msgid "Current source file: %s\n"
msgstr ""
-#: debug.c:724
+#: debug.c:733
#, c-format
msgid "Number of lines: %d\n"
msgstr ""
-#: debug.c:731
+#: debug.c:740
#, c-format
msgid "Source file (lines): %s (%d)\n"
msgstr ""
-#: debug.c:745
+#: debug.c:754
msgid ""
"Number Disp Enabled Location\n"
"\n"
msgstr ""
-#: debug.c:756
+#: debug.c:765
#, c-format
msgid "\tno of hits = %ld\n"
msgstr ""
-#: debug.c:758
+#: debug.c:767
#, c-format
msgid "\tignore next %ld hit(s)\n"
msgstr ""
-#: debug.c:760 debug.c:900
+#: debug.c:769 debug.c:909
#, c-format
msgid "\tstop condition: %s\n"
msgstr ""
-#: debug.c:762 debug.c:902
+#: debug.c:771 debug.c:911
msgid "\tcommands:\n"
msgstr ""
-#: debug.c:784
+#: debug.c:793
#, c-format
msgid "Current frame: "
msgstr ""
-#: debug.c:787
+#: debug.c:796
#, c-format
msgid "Called by frame: "
msgstr ""
-#: debug.c:791
+#: debug.c:800
#, c-format
msgid "Caller of frame: "
msgstr ""
-#: debug.c:809
+#: debug.c:818
#, c-format
msgid "None in main().\n"
msgstr ""
-#: debug.c:839
+#: debug.c:848
msgid "No arguments.\n"
msgstr ""
-#: debug.c:840
+#: debug.c:849
msgid "No locals.\n"
msgstr ""
-#: debug.c:848
+#: debug.c:857
msgid ""
"All defined variables:\n"
"\n"
msgstr ""
-#: debug.c:858
+#: debug.c:867
msgid ""
"All defined functions:\n"
"\n"
msgstr ""
-#: debug.c:877
+#: debug.c:886
msgid ""
"Auto-display variables:\n"
"\n"
msgstr ""
-#: debug.c:880
+#: debug.c:889
msgid ""
"Watch variables:\n"
"\n"
msgstr ""
-#: debug.c:1020
+#: debug.c:1029
#, c-format
msgid "no symbol `%s' in current context\n"
msgstr ""
-#: debug.c:1032 debug.c:1418
+#: debug.c:1041 debug.c:1427
#, c-format
msgid "`%s' is not an array\n"
msgstr ""
-#: debug.c:1046
+#: debug.c:1055
#, c-format
msgid "$%ld = uninitialized field\n"
msgstr ""
-#: debug.c:1067
+#: debug.c:1076
#, c-format
msgid "array `%s' is empty\n"
msgstr ""
-#: debug.c:1110 debug.c:1162
+#: debug.c:1119 debug.c:1171
#, c-format
msgid "[\"%s\"] not in array `%s'\n"
msgstr ""
-#: debug.c:1166
+#: debug.c:1175
#, c-format
msgid "`%s[\"%s\"]' is not an array\n"
msgstr ""
-#: debug.c:1227 debug.c:4949
+#: debug.c:1236 debug.c:4964
#, c-format
msgid "`%s' is not a scalar variable"
msgstr ""
-#: debug.c:1249 debug.c:4979
+#: debug.c:1258 debug.c:4994
#, c-format
msgid "attempt to use array `%s[\"%s\"]' in a scalar context"
msgstr ""
-#: debug.c:1271 debug.c:4990
+#: debug.c:1280 debug.c:5005
#, c-format
msgid "attempt to use scalar `%s[\"%s\"]' as array"
msgstr ""
-#: debug.c:1414
+#: debug.c:1423
#, c-format
msgid "`%s' is a function"
msgstr ""
-#: debug.c:1456
+#: debug.c:1465
#, c-format
msgid "watchpoint %d is unconditional\n"
msgstr ""
-#: debug.c:1490
+#: debug.c:1499
#, c-format
msgid "No display item numbered %ld"
msgstr ""
-#: debug.c:1493
+#: debug.c:1502
#, c-format
msgid "No watch item numbered %ld"
msgstr ""
-#: debug.c:1519
+#: debug.c:1528
#, c-format
msgid "%d: [\"%s\"] not in array `%s'\n"
msgstr ""
-#: debug.c:1758
+#: debug.c:1767
msgid "attempt to use scalar value as array"
msgstr ""
-#: debug.c:1847
+#: debug.c:1856
#, c-format
msgid "Watchpoint %d deleted because parameter is out of scope.\n"
msgstr ""
-#: debug.c:1858
+#: debug.c:1867
#, c-format
msgid "Display %d deleted because parameter is out of scope.\n"
msgstr ""
-#: debug.c:1891
+#: debug.c:1900
#, c-format
msgid " in file `%s', line %d\n"
msgstr ""
-#: debug.c:1912
+#: debug.c:1921
#, c-format
msgid " at `%s':%d"
msgstr ""
-#: debug.c:1928 debug.c:1991
+#: debug.c:1937 debug.c:2000
#, c-format
msgid "#%ld\tin "
msgstr ""
-#: debug.c:1965
+#: debug.c:1974
#, c-format
msgid "More stack frames follow ...\n"
msgstr ""
-#: debug.c:2008
+#: debug.c:2017
msgid "invalid frame number"
msgstr ""
-#: debug.c:2180
+#: debug.c:2200
#, c-format
msgid "Note: breakpoint %d (enabled, ignore next %ld hits), also set at %s:%d"
msgstr ""
-#: debug.c:2187
+#: debug.c:2207
#, c-format
msgid "Note: breakpoint %d (enabled), also set at %s:%d"
msgstr ""
-#: debug.c:2194
+#: debug.c:2214
#, c-format
msgid "Note: breakpoint %d (disabled, ignore next %ld hits), also set at %s:%d"
msgstr ""
-#: debug.c:2201
+#: debug.c:2221
#, c-format
msgid "Note: breakpoint %d (disabled), also set at %s:%d"
msgstr ""
-#: debug.c:2218
+#: debug.c:2238
#, c-format
msgid "Breakpoint %d set at file `%s', line %d\n"
msgstr ""
-#: debug.c:2320
+#: debug.c:2340
#, c-format
msgid "Can't set breakpoint in file `%s'\n"
msgstr ""
-#: debug.c:2349 debug.c:2472 debug.c:3330
+#: debug.c:2369 debug.c:2492 debug.c:3350
#, c-format
msgid "line number %d in file `%s' out of range"
msgstr ""
-#: debug.c:2353
+#: debug.c:2373
#, c-format
msgid "Can't find rule!!!\n"
msgstr ""
-#: debug.c:2355
+#: debug.c:2375
#, c-format
msgid "Can't set breakpoint at `%s':%d\n"
msgstr ""
-#: debug.c:2367
+#: debug.c:2387
#, c-format
msgid "Can't set breakpoint in function `%s'\n"
msgstr ""
-#: debug.c:2383
+#: debug.c:2403
#, c-format
msgid "breakpoint %d set at file `%s', line %d is unconditional\n"
msgstr ""
-#: debug.c:2488 debug.c:2510
+#: debug.c:2508 debug.c:2530
#, c-format
msgid "Deleted breakpoint %d"
msgstr ""
-#: debug.c:2494
+#: debug.c:2514
#, c-format
msgid "No breakpoint(s) at entry to function `%s'\n"
msgstr ""
-#: debug.c:2521
+#: debug.c:2541
#, c-format
msgid "No breakpoint at file `%s', line #%d\n"
msgstr ""
-#: debug.c:2576 debug.c:2617 debug.c:2637 debug.c:2680
+#: debug.c:2596 debug.c:2637 debug.c:2657 debug.c:2700
msgid "invalid breakpoint number"
msgstr ""
-#: debug.c:2592
+#: debug.c:2612
msgid "Delete all breakpoints? (y or n) "
msgstr ""
-#: debug.c:2593 debug.c:2903 debug.c:2956
+#: debug.c:2613 debug.c:2923 debug.c:2976
msgid "y"
msgstr ""
-#: debug.c:2642
+#: debug.c:2662
#, c-format
msgid "Will ignore next %ld crossing(s) of breakpoint %d.\n"
msgstr ""
-#: debug.c:2646
+#: debug.c:2666
#, c-format
msgid "Will stop next time breakpoint %d is reached.\n"
msgstr ""
-#: debug.c:2763
+#: debug.c:2783
#, c-format
msgid "Can only debug programs provided with the `-f' option.\n"
msgstr ""
-#: debug.c:2888
+#: debug.c:2908
#, c-format
msgid "Failed to restart debugger"
msgstr ""
-#: debug.c:2902
+#: debug.c:2922
msgid "Program already running. Restart from beginning (y/n)? "
msgstr ""
-#: debug.c:2906
+#: debug.c:2926
#, c-format
msgid "Program not restarted\n"
msgstr ""
-#: debug.c:2916
+#: debug.c:2936
#, c-format
msgid "error: cannot restart, operation not allowed\n"
msgstr ""
-#: debug.c:2922
+#: debug.c:2942
#, c-format
msgid "error (%s): cannot restart, ignoring rest of the commands\n"
msgstr ""
-#: debug.c:2930
+#: debug.c:2950
#, c-format
msgid "Starting program: \n"
msgstr ""
-#: debug.c:2939
+#: debug.c:2959
#, c-format
msgid "Program exited %s with exit value: %d\n"
msgstr ""
-#: debug.c:2955
+#: debug.c:2975
msgid "The program is running. Exit anyway (y/n)? "
msgstr ""
-#: debug.c:2990
+#: debug.c:3010
#, c-format
msgid "Not stopped at any breakpoint; argument ignored.\n"
msgstr ""
-#: debug.c:2995
+#: debug.c:3015
#, c-format
msgid "invalid breakpoint number %d."
msgstr ""
-#: debug.c:3000
+#: debug.c:3020
#, c-format
msgid "Will ignore next %ld crossings of breakpoint %d.\n"
msgstr ""
-#: debug.c:3187
+#: debug.c:3207
#, c-format
msgid "'finish' not meaningful in the outermost frame main()\n"
msgstr ""
-#: debug.c:3192
+#: debug.c:3212
#, c-format
msgid "Run till return from "
msgstr ""
-#: debug.c:3235
+#: debug.c:3255
#, c-format
msgid "'return' not meaningful in the outermost frame main()\n"
msgstr ""
-#: debug.c:3349
+#: debug.c:3369
#, c-format
msgid "Can't find specified location in function `%s'\n"
msgstr ""
-#: debug.c:3357
+#: debug.c:3377
#, c-format
msgid "invalid source line %d in file `%s'"
msgstr ""
-#: debug.c:3372
+#: debug.c:3392
#, c-format
msgid "Can't find specified location %d in file `%s'\n"
msgstr ""
-#: debug.c:3404
+#: debug.c:3424
#, c-format
msgid "element not in array\n"
msgstr ""
-#: debug.c:3404
+#: debug.c:3424
#, c-format
msgid "untyped variable\n"
msgstr ""
-#: debug.c:3446
+#: debug.c:3466
#, c-format
msgid "Stopping in %s ...\n"
msgstr ""
-#: debug.c:3523
+#: debug.c:3543
#, c-format
msgid "'finish' not meaningful with non-local jump '%s'\n"
msgstr ""
-#: debug.c:3530
+#: debug.c:3550
#, c-format
msgid "'until' not meaningful with non-local jump '%s'\n"
msgstr ""
-#: debug.c:4165
+#: debug.c:4185
msgid "\t------[Enter] to continue or q [Enter] to quit------"
msgstr ""
-#: debug.c:4166
+#: debug.c:4186
msgid "q"
msgstr ""
-#: debug.c:4986
+#: debug.c:5001
#, c-format
msgid "[\"%s\"] not in array `%s'"
msgstr ""
-#: debug.c:5192
+#: debug.c:5207
#, c-format
msgid "sending output to stdout\n"
msgstr ""
-#: debug.c:5232
+#: debug.c:5247
msgid "invalid number"
msgstr ""
-#: debug.c:5366
+#: debug.c:5381
#, c-format
msgid "`%s' not allowed in current context; statement ignored"
msgstr ""
-#: debug.c:5374
+#: debug.c:5389
msgid "`return' not allowed in current context; statement ignored"
msgstr ""
-#: debug.c:5575
+#: debug.c:5590
#, c-format
msgid "No symbol `%s' in current context"
msgstr ""
-#: dfa.c:998 dfa.c:1001 dfa.c:1021 dfa.c:1031 dfa.c:1043 dfa.c:1094 dfa.c:1103
-#: dfa.c:1106 dfa.c:1111 dfa.c:1124 dfa.c:1192
+#: dfa.c:1118 dfa.c:1121 dfa.c:1142 dfa.c:1150 dfa.c:1162 dfa.c:1197
+#: dfa.c:1206 dfa.c:1209 dfa.c:1214 dfa.c:1228 dfa.c:1275
msgid "unbalanced ["
msgstr ""
-#: dfa.c:1052
+#: dfa.c:1174
msgid "invalid character class"
msgstr ""
-#: dfa.c:1229
+#: dfa.c:1316
msgid "character class syntax is [[:space:]], not [:space:]"
msgstr ""
-#: dfa.c:1281
+#: dfa.c:1366
msgid "unfinished \\ escape"
msgstr ""
-#: dfa.c:1428 regcomp.c:161
+#: dfa.c:1513 regcomp.c:161
msgid "Invalid content of \\{\\}"
msgstr ""
-#: dfa.c:1431 regcomp.c:176
+#: dfa.c:1516 regcomp.c:176
msgid "Regular expression too big"
msgstr ""
-#: dfa.c:1816
+#: dfa.c:1936
msgid "unbalanced ("
msgstr ""
-#: dfa.c:1943
+#: dfa.c:2062
msgid "no syntax specified"
msgstr ""
-#: dfa.c:1951
+#: dfa.c:2070
msgid "unbalanced )"
msgstr ""
@@ -1778,11 +1788,11 @@ msgstr ""
msgid "opcode %s not an operator or keyword"
msgstr ""
-#: eval.c:471
+#: eval.c:472
msgid "buffer overflow in genflags2str"
msgstr ""
-#: eval.c:674
+#: eval.c:675
#, c-format
msgid ""
"\n"
@@ -1790,71 +1800,71 @@ msgid ""
"\n"
msgstr ""
-#: eval.c:703
+#: eval.c:704
msgid "`IGNORECASE' is a gawk extension"
msgstr ""
-#: eval.c:735
+#: eval.c:736
msgid "`BINMODE' is a gawk extension"
msgstr ""
-#: eval.c:793
+#: eval.c:794
#, c-format
msgid "BINMODE value `%s' is invalid, treated as 3"
msgstr ""
-#: eval.c:884
+#: eval.c:885
#, c-format
msgid "bad `%sFMT' specification `%s'"
msgstr ""
-#: eval.c:968
+#: eval.c:969
msgid "turning off `--lint' due to assignment to `LINT'"
msgstr ""
-#: eval.c:1146
+#: eval.c:1147
#, c-format
msgid "reference to uninitialized argument `%s'"
msgstr ""
-#: eval.c:1147
+#: eval.c:1148
#, c-format
msgid "reference to uninitialized variable `%s'"
msgstr ""
-#: eval.c:1165
+#: eval.c:1166
msgid "attempt to field reference from non-numeric value"
msgstr ""
-#: eval.c:1167
+#: eval.c:1168
msgid "attempt to field reference from null string"
msgstr ""
-#: eval.c:1175
+#: eval.c:1176
#, c-format
msgid "attempt to access field %ld"
msgstr ""
-#: eval.c:1184
+#: eval.c:1185
#, c-format
msgid "reference to uninitialized field `$%ld'"
msgstr ""
-#: eval.c:1271
+#: eval.c:1272
#, c-format
msgid "function `%s' called with more arguments than declared"
msgstr ""
-#: eval.c:1466
+#: eval.c:1473
#, c-format
msgid "unwind_stack: unexpected type `%s'"
msgstr ""
-#: eval.c:1562
+#: eval.c:1569
msgid "division by zero attempted in `/='"
msgstr ""
-#: eval.c:1569
+#: eval.c:1576
#, c-format
msgid "division by zero attempted in `%%='"
msgstr ""
@@ -1867,7 +1877,7 @@ msgstr ""
msgid "-l / @load are gawk extensions"
msgstr ""
-#: ext.c:95 ext.c:177
+#: ext.c:95
msgid "load_ext: received NULL lib_name"
msgstr ""
@@ -1896,6 +1906,10 @@ msgstr ""
msgid "`extension' is a gawk extension"
msgstr ""
+#: ext.c:177
+msgid "extension: received NULL lib_name"
+msgstr ""
+
#: ext.c:180
#, c-format
msgid "extension: cannot open library `%s' (%s)"
@@ -1916,36 +1930,36 @@ msgstr ""
msgid "make_builtin: missing function name"
msgstr ""
-#: ext.c:238
+#: ext.c:236
#, c-format
msgid "make_builtin: can't redefine function `%s'"
msgstr ""
-#: ext.c:242
+#: ext.c:240
#, c-format
msgid "make_builtin: function `%s' already defined"
msgstr ""
-#: ext.c:246
+#: ext.c:244
#, c-format
msgid "make_builtin: function name `%s' previously defined"
msgstr ""
-#: ext.c:248
+#: ext.c:246
#, c-format
msgid "make_builtin: can't use gawk built-in `%s' as function name"
msgstr ""
-#: ext.c:251 ext.c:304
+#: ext.c:249 ext.c:304
#, c-format
msgid "make_builtin: negative argument count for function `%s'"
msgstr ""
-#: ext.c:278
+#: ext.c:276
msgid "extension: missing function name"
msgstr ""
-#: ext.c:283
+#: ext.c:279 ext.c:283
#, c-format
msgid "extension: illegal character `%c' in function name `%s'"
msgstr ""
@@ -1970,139 +1984,143 @@ msgstr ""
msgid "extension: can't use gawk built-in `%s' as function name"
msgstr ""
-#: ext.c:374
+#: ext.c:375
#, c-format
msgid "function `%s' defined to take no more than %d argument(s)"
msgstr ""
-#: ext.c:377
+#: ext.c:378
#, c-format
msgid "function `%s': missing argument #%d"
msgstr ""
-#: ext.c:394
+#: ext.c:395
#, c-format
msgid "function `%s': argument #%d: attempt to use scalar as an array"
msgstr ""
-#: ext.c:398
+#: ext.c:399
#, c-format
msgid "function `%s': argument #%d: attempt to use array as a scalar"
msgstr ""
-#: ext.c:412
+#: ext.c:413
msgid "dynamic loading of library not supported"
msgstr ""
-#: extension/filefuncs.c:97
+#: extension/filefuncs.c:159
msgid "chdir: called with incorrect number of arguments, expecting 1"
msgstr ""
-#: extension/filefuncs.c:343
+#: extension/filefuncs.c:439
#, c-format
msgid "stat: unable to read symbolic link `%s'"
msgstr ""
-#: extension/filefuncs.c:376
+#: extension/filefuncs.c:472
msgid "stat: called with wrong number of arguments"
msgstr ""
-#: extension/filefuncs.c:383
+#: extension/filefuncs.c:479
msgid "stat: bad parameters"
msgstr ""
-#: extension/filefuncs.c:437
+#: extension/filefuncs.c:533
#, c-format
msgid "fts init: could not create variable %s"
msgstr ""
-#: extension/filefuncs.c:460
+#: extension/filefuncs.c:554
+msgid "fts is not supported on this system"
+msgstr ""
+
+#: extension/filefuncs.c:573
msgid "fill_stat_element: could not create array"
msgstr ""
-#: extension/filefuncs.c:469
+#: extension/filefuncs.c:582
msgid "fill_stat_element: could not set element"
msgstr ""
-#: extension/filefuncs.c:484
+#: extension/filefuncs.c:597
msgid "fill_path_element: could not set element"
msgstr ""
-#: extension/filefuncs.c:500
+#: extension/filefuncs.c:613
msgid "fill_error_element: could not set element"
msgstr ""
-#: extension/filefuncs.c:547 extension/filefuncs.c:594
+#: extension/filefuncs.c:660 extension/filefuncs.c:707
msgid "fts-process: could not create array"
msgstr ""
-#: extension/filefuncs.c:557 extension/filefuncs.c:604
-#: extension/filefuncs.c:622
+#: extension/filefuncs.c:670 extension/filefuncs.c:717
+#: extension/filefuncs.c:735
msgid "fts-process: could not set element"
msgstr ""
-#: extension/filefuncs.c:671
+#: extension/filefuncs.c:784
msgid "fts: called with incorrect number of arguments, expecting 3"
msgstr ""
-#: extension/filefuncs.c:674
+#: extension/filefuncs.c:787
msgid "fts: bad first parameter"
msgstr ""
-#: extension/filefuncs.c:680
+#: extension/filefuncs.c:793
msgid "fts: bad second parameter"
msgstr ""
-#: extension/filefuncs.c:686
+#: extension/filefuncs.c:799
msgid "fts: bad third parameter"
msgstr ""
-#: extension/filefuncs.c:693
+#: extension/filefuncs.c:806
msgid "fts: could not flatten array\n"
msgstr ""
-#: extension/filefuncs.c:711
+#: extension/filefuncs.c:824
msgid "fts: ignoring sneaky FTS_NOSTAT flag. nyah, nyah, nyah."
msgstr ""
-#: extension/filefuncs.c:728
+#: extension/filefuncs.c:841
msgid "fts: clear_array() failed\n"
msgstr ""
-#: extension/fnmatch.c:98
+#: extension/fnmatch.c:112
msgid "fnmatch: called with less than three arguments"
msgstr ""
-#: extension/fnmatch.c:101
+#: extension/fnmatch.c:115
msgid "fnmatch: called with more than three arguments"
msgstr ""
-#: extension/fnmatch.c:104
+#: extension/fnmatch.c:118
msgid "fnmatch: could not get first argument"
msgstr ""
-#: extension/fnmatch.c:109
+#: extension/fnmatch.c:123
msgid "fnmatch: could not get second argument"
msgstr ""
-#: extension/fnmatch.c:114
+#: extension/fnmatch.c:128
msgid "fnmatch: could not get third argument"
msgstr ""
-#: extension/fnmatch.c:127
+#: extension/fnmatch.c:141
msgid "fnmatch is not implemented on this system\n"
msgstr ""
-#: extension/fnmatch.c:159
+#: extension/fnmatch.c:173
msgid "fnmatch init: could not add FNM_NOMATCH variable"
msgstr ""
-#: extension/fnmatch.c:169
+#: extension/fnmatch.c:183
#, c-format
msgid "fnmatch init: could not set array element %s"
msgstr ""
-#: extension/fnmatch.c:179
+#: extension/fnmatch.c:193
msgid "fnmatch init: could not install FNM array"
msgstr ""
@@ -2126,88 +2144,88 @@ msgstr ""
msgid "wait: called with too many arguments"
msgstr ""
-#: extension/inplace.c:110
+#: extension/inplace.c:130
msgid "inplace_begin: in-place editing already active"
msgstr ""
-#: extension/inplace.c:113 extension/inplace.c:187
+#: extension/inplace.c:133 extension/inplace.c:207
#, c-format
msgid "inplace_begin: expects 2 arguments but called with %d"
msgstr ""
-#: extension/inplace.c:116
+#: extension/inplace.c:136
msgid "inplace_begin: cannot retrieve 1st argument as a string filename"
msgstr ""
-#: extension/inplace.c:124
+#: extension/inplace.c:144
#, c-format
msgid "inplace_begin: disabling in-place editing for invalid FILENAME `%s'"
msgstr ""
-#: extension/inplace.c:131
+#: extension/inplace.c:151
#, c-format
msgid "inplace_begin: Cannot stat `%s' (%s)"
msgstr ""
-#: extension/inplace.c:138
+#: extension/inplace.c:158
#, c-format
msgid "inplace_begin: `%s' is not a regular file"
msgstr ""
-#: extension/inplace.c:149
+#: extension/inplace.c:169
#, c-format
msgid "inplace_begin: mkstemp(`%s') failed (%s)"
msgstr ""
-#: extension/inplace.c:158
+#: extension/inplace.c:178
#, c-format
msgid "inplace_begin: chmod failed (%s)"
msgstr ""
-#: extension/inplace.c:165
+#: extension/inplace.c:185
#, c-format
msgid "inplace_begin: dup(stdout) failed (%s)"
msgstr ""
-#: extension/inplace.c:168
+#: extension/inplace.c:188
#, c-format
msgid "inplace_begin: dup2(%d, stdout) failed (%s)"
msgstr ""
-#: extension/inplace.c:171
+#: extension/inplace.c:191
#, c-format
msgid "inplace_begin: close(%d) failed (%s)"
msgstr ""
-#: extension/inplace.c:190
+#: extension/inplace.c:210
msgid "inplace_end: cannot retrieve 1st argument as a string filename"
msgstr ""
-#: extension/inplace.c:197
+#: extension/inplace.c:217
msgid "inplace_end: in-place editing not active"
msgstr ""
-#: extension/inplace.c:203
+#: extension/inplace.c:223
#, c-format
msgid "inplace_end: dup2(%d, stdout) failed (%s)"
msgstr ""
-#: extension/inplace.c:206
+#: extension/inplace.c:226
#, c-format
msgid "inplace_end: close(%d) failed (%s)"
msgstr ""
-#: extension/inplace.c:210
+#: extension/inplace.c:230
#, c-format
msgid "inplace_end: fsetpos(stdout) failed (%s)"
msgstr ""
-#: extension/inplace.c:223
+#: extension/inplace.c:243
#, c-format
msgid "inplace_end: link(`%s', `%s') failed (%s)"
msgstr ""
-#: extension/inplace.c:229
+#: extension/inplace.c:253
#, c-format
msgid "inplace_end: rename(`%s', `%s') failed (%s)"
msgstr ""
@@ -2236,165 +2254,165 @@ msgstr ""
msgid "chr: called with inappropriate argument(s)"
msgstr ""
-#: extension/readdir.c:203
+#: extension/readdir.c:281
#, c-format
msgid "dir_take_control_of: opendir/fdopendir failed: %s"
msgstr ""
-#: extension/readfile.c:84
+#: extension/readfile.c:113
msgid "readfile: called with too many arguments"
msgstr ""
-#: extension/readfile.c:118
+#: extension/readfile.c:137
msgid "readfile: called with no arguments"
msgstr ""
-#: extension/rwarray.c:120
+#: extension/rwarray.c:124
msgid "writea: called with too many arguments"
msgstr ""
-#: extension/rwarray.c:127
+#: extension/rwarray.c:131
#, c-format
msgid "do_writea: argument 0 is not a string\n"
msgstr ""
-#: extension/rwarray.c:133
+#: extension/rwarray.c:137
#, c-format
msgid "do_writea: argument 1 is not an array\n"
msgstr ""
-#: extension/rwarray.c:180
+#: extension/rwarray.c:184
#, c-format
msgid "write_array: could not flatten array\n"
msgstr ""
-#: extension/rwarray.c:194
+#: extension/rwarray.c:198
#, c-format
msgid "write_array: could not release flattened array\n"
msgstr ""
-#: extension/rwarray.c:276
+#: extension/rwarray.c:280
msgid "reada: called with too many arguments"
msgstr ""
-#: extension/rwarray.c:283
+#: extension/rwarray.c:287
#, c-format
msgid "do_reada: argument 0 is not a string\n"
msgstr ""
-#: extension/rwarray.c:289
+#: extension/rwarray.c:293
#, c-format
msgid "do_reada: argument 1 is not an array\n"
msgstr ""
-#: extension/rwarray.c:333
+#: extension/rwarray.c:337
#, c-format
msgid "do_reada: clear_array failed\n"
msgstr ""
-#: extension/rwarray.c:370
+#: extension/rwarray.c:374
#, c-format
msgid "read_array: set_array_element failed\n"
msgstr ""
-#: extension/time.c:81
+#: extension/time.c:113
msgid "gettimeofday: ignoring arguments"
msgstr ""
-#: extension/time.c:112
+#: extension/time.c:144
msgid "gettimeofday: not supported on this platform"
msgstr ""
-#: extension/time.c:133
+#: extension/time.c:165
msgid "sleep: called with too many arguments"
msgstr ""
-#: extension/time.c:136
+#: extension/time.c:168
msgid "sleep: missing required numeric argument"
msgstr ""
-#: extension/time.c:142
+#: extension/time.c:174
msgid "sleep: argument is negative"
msgstr ""
-#: extension/time.c:176
+#: extension/time.c:208
msgid "sleep: not supported on this platform"
msgstr ""
-#: field.c:339
+#: field.c:345
msgid "NF set to negative value"
msgstr ""
-#: field.c:964 field.c:971 field.c:975
+#: field.c:971 field.c:978 field.c:982
msgid "split: fourth argument is a gawk extension"
msgstr ""
-#: field.c:968
+#: field.c:975
msgid "split: fourth argument is not an array"
msgstr ""
-#: field.c:982
+#: field.c:989
msgid "split: second argument is not an array"
msgstr ""
-#: field.c:986
+#: field.c:993
msgid "split: cannot use the same array for second and fourth args"
msgstr ""
-#: field.c:991
+#: field.c:998
msgid "split: cannot use a subarray of second arg for fourth arg"
msgstr ""
-#: field.c:994
+#: field.c:1001
msgid "split: cannot use a subarray of fourth arg for second arg"
msgstr ""
-#: field.c:1023
+#: field.c:1032
msgid "split: null string for third arg is a gawk extension"
msgstr ""
-#: field.c:1063
+#: field.c:1072
msgid "patsplit: fourth argument is not an array"
msgstr ""
-#: field.c:1068
+#: field.c:1077
msgid "patsplit: second argument is not an array"
msgstr ""
-#: field.c:1074
+#: field.c:1083
msgid "patsplit: third argument must be non-null"
msgstr ""
-#: field.c:1078
+#: field.c:1087
msgid "patsplit: cannot use the same array for second and fourth args"
msgstr ""
-#: field.c:1083
+#: field.c:1092
msgid "patsplit: cannot use a subarray of second arg for fourth arg"
msgstr ""
-#: field.c:1086
+#: field.c:1095
msgid "patsplit: cannot use a subarray of fourth arg for second arg"
msgstr ""
-#: field.c:1124
+#: field.c:1133
msgid "`FIELDWIDTHS' is a gawk extension"
msgstr ""
-#: field.c:1188
+#: field.c:1197
#, c-format
msgid "invalid FIELDWIDTHS value, near `%s'"
msgstr ""
-#: field.c:1261
+#: field.c:1270
msgid "null string for `FS' is a gawk extension"
msgstr ""
-#: field.c:1265
+#: field.c:1274
msgid "old awk does not support regexps as value of `FS'"
msgstr ""
-#: field.c:1384
+#: field.c:1393
msgid "`FPAT' is a gawk extension"
msgstr ""
@@ -2410,577 +2428,577 @@ msgstr ""
msgid "node_to_awk_value: received null val"
msgstr ""
-#: gawkapi.c:808
+#: gawkapi.c:807
msgid "remove_element: received null array"
msgstr ""
-#: gawkapi.c:811
+#: gawkapi.c:810
msgid "remove_element: received null subscript"
msgstr ""
-#: gawkapi.c:943
+#: gawkapi.c:947
#, c-format
msgid "api_flatten_array: could not convert index %d\n"
msgstr ""
-#: gawkapi.c:948
+#: gawkapi.c:952
#, c-format
msgid "api_flatten_array: could not convert value %d\n"
msgstr ""
-#: getopt.c:603 getopt.c:632
+#: getopt.c:604 getopt.c:633
#, c-format
msgid "%s: option '%s' is ambiguous; possibilities:"
msgstr ""
-#: getopt.c:678 getopt.c:682
+#: getopt.c:679 getopt.c:683
#, c-format
msgid "%s: option '--%s' doesn't allow an argument\n"
msgstr ""
-#: getopt.c:691 getopt.c:696
+#: getopt.c:692 getopt.c:697
#, c-format
msgid "%s: option '%c%s' doesn't allow an argument\n"
msgstr ""
-#: getopt.c:739 getopt.c:758
+#: getopt.c:740 getopt.c:759
#, c-format
msgid "%s: option '--%s' requires an argument\n"
msgstr ""
-#: getopt.c:796 getopt.c:799
+#: getopt.c:797 getopt.c:800
#, c-format
msgid "%s: unrecognized option '--%s'\n"
msgstr ""
-#: getopt.c:807 getopt.c:810
+#: getopt.c:808 getopt.c:811
#, c-format
msgid "%s: unrecognized option '%c%s'\n"
msgstr ""
-#: getopt.c:859 getopt.c:862
+#: getopt.c:860 getopt.c:863
#, c-format
msgid "%s: invalid option -- '%c'\n"
msgstr ""
-#: getopt.c:915 getopt.c:932 getopt.c:1142 getopt.c:1160
+#: getopt.c:916 getopt.c:933 getopt.c:1143 getopt.c:1161
#, c-format
msgid "%s: option requires an argument -- '%c'\n"
msgstr ""
-#: getopt.c:988 getopt.c:1004
+#: getopt.c:989 getopt.c:1005
#, c-format
msgid "%s: option '-W %s' is ambiguous\n"
msgstr ""
-#: getopt.c:1028 getopt.c:1046
+#: getopt.c:1029 getopt.c:1047
#, c-format
msgid "%s: option '-W %s' doesn't allow an argument\n"
msgstr ""
-#: getopt.c:1067 getopt.c:1085
+#: getopt.c:1068 getopt.c:1086
#, c-format
msgid "%s: option '-W %s' requires an argument\n"
msgstr ""
-#: io.c:347
+#: io.c:392
#, c-format
msgid "command line argument `%s' is a directory: skipped"
msgstr ""
-#: io.c:350 io.c:463
+#: io.c:395 io.c:513
#, c-format
msgid "cannot open file `%s' for reading (%s)"
msgstr ""
-#: io.c:590
+#: io.c:640
#, c-format
msgid "close of fd %d (`%s') failed (%s)"
msgstr ""
-#: io.c:666
+#: io.c:716
msgid "redirection not allowed in sandbox mode"
msgstr ""
-#: io.c:700
+#: io.c:750
#, c-format
msgid "expression in `%s' redirection only has numeric value"
msgstr ""
-#: io.c:706
+#: io.c:756
#, c-format
msgid "expression for `%s' redirection has null string value"
msgstr ""
-#: io.c:711
+#: io.c:761
#, c-format
msgid "filename `%s' for `%s' redirection may be result of logical expression"
msgstr ""
-#: io.c:754
+#: io.c:809
#, c-format
msgid "unnecessary mixing of `>' and `>>' for file `%.*s'"
msgstr ""
-#: io.c:808
+#: io.c:863
#, c-format
msgid "can't open pipe `%s' for output (%s)"
msgstr ""
-#: io.c:818
+#: io.c:873
#, c-format
msgid "can't open pipe `%s' for input (%s)"
msgstr ""
-#: io.c:849
+#: io.c:904
#, c-format
msgid "can't open two way pipe `%s' for input/output (%s)"
msgstr ""
-#: io.c:928
+#: io.c:986
#, c-format
msgid "can't redirect from `%s' (%s)"
msgstr ""
-#: io.c:931
+#: io.c:989
#, c-format
msgid "can't redirect to `%s' (%s)"
msgstr ""
-#: io.c:982
+#: io.c:1040
msgid ""
"reached system limit for open files: starting to multiplex file descriptors"
msgstr ""
-#: io.c:998
+#: io.c:1056
#, c-format
msgid "close of `%s' failed (%s)."
msgstr ""
-#: io.c:1006
+#: io.c:1064
msgid "too many pipes or input files open"
msgstr ""
-#: io.c:1028
+#: io.c:1086
msgid "close: second argument must be `to' or `from'"
msgstr ""
-#: io.c:1045
+#: io.c:1103
#, c-format
msgid "close: `%.*s' is not an open file, pipe or co-process"
msgstr ""
-#: io.c:1050
+#: io.c:1108
msgid "close of redirection that was never opened"
msgstr ""
-#: io.c:1147
+#: io.c:1205
#, c-format
msgid "close: redirection `%s' not opened with `|&', second argument ignored"
msgstr ""
-#: io.c:1164
+#: io.c:1222
#, c-format
msgid "failure status (%d) on pipe close of `%s' (%s)"
msgstr ""
-#: io.c:1167
+#: io.c:1225
#, c-format
msgid "failure status (%d) on file close of `%s' (%s)"
msgstr ""
-#: io.c:1187
+#: io.c:1245
#, c-format
msgid "no explicit close of socket `%s' provided"
msgstr ""
-#: io.c:1190
+#: io.c:1248
#, c-format
msgid "no explicit close of co-process `%s' provided"
msgstr ""
-#: io.c:1193
+#: io.c:1251
#, c-format
msgid "no explicit close of pipe `%s' provided"
msgstr ""
-#: io.c:1196
+#: io.c:1254
#, c-format
msgid "no explicit close of file `%s' provided"
msgstr ""
-#: io.c:1224 io.c:1279 main.c:842 main.c:879
+#: io.c:1284 io.c:1342 main.c:864 main.c:906
#, c-format
msgid "error writing standard output (%s)"
msgstr ""
-#: io.c:1228 io.c:1284
+#: io.c:1289 io.c:1348 main.c:866
#, c-format
msgid "error writing standard error (%s)"
msgstr ""
-#: io.c:1236
+#: io.c:1297
#, c-format
msgid "pipe flush of `%s' failed (%s)."
msgstr ""
-#: io.c:1239
+#: io.c:1300
#, c-format
msgid "co-process flush of pipe to `%s' failed (%s)."
msgstr ""
-#: io.c:1242
+#: io.c:1303
#, c-format
msgid "file flush of `%s' failed (%s)."
msgstr ""
-#: io.c:1356
+#: io.c:1420
#, c-format
msgid "local port %s invalid in `/inet'"
msgstr ""
-#: io.c:1374
+#: io.c:1438
#, c-format
msgid "remote host and port information (%s, %s) invalid"
msgstr ""
-#: io.c:1526
+#: io.c:1590
#, c-format
msgid "no (known) protocol supplied in special filename `%s'"
msgstr ""
-#: io.c:1540
+#: io.c:1604
#, c-format
msgid "special file name `%s' is incomplete"
msgstr ""
-#: io.c:1557
+#: io.c:1621
msgid "must supply a remote hostname to `/inet'"
msgstr ""
-#: io.c:1575
+#: io.c:1639
msgid "must supply a remote port to `/inet'"
msgstr ""
-#: io.c:1621
+#: io.c:1685
msgid "TCP/IP communications are not supported"
msgstr ""
-#: io.c:1796
+#: io.c:1867
#, c-format
msgid "could not open `%s', mode `%s'"
msgstr ""
-#: io.c:1846
+#: io.c:1917
#, c-format
msgid "close of master pty failed (%s)"
msgstr ""
-#: io.c:1848 io.c:2024 io.c:2194
+#: io.c:1919 io.c:2105 io.c:2305
#, c-format
msgid "close of stdout in child failed (%s)"
msgstr ""
-#: io.c:1851
+#: io.c:1922
#, c-format
msgid "moving slave pty to stdout in child failed (dup: %s)"
msgstr ""
-#: io.c:1853 io.c:2029
+#: io.c:1924 io.c:2110
#, c-format
msgid "close of stdin in child failed (%s)"
msgstr ""
-#: io.c:1856
+#: io.c:1927
#, c-format
msgid "moving slave pty to stdin in child failed (dup: %s)"
msgstr ""
-#: io.c:1858 io.c:1879
+#: io.c:1929 io.c:1951
#, c-format
msgid "close of slave pty failed (%s)"
msgstr ""
-#: io.c:1965 io.c:2027 io.c:2171 io.c:2197
+#: io.c:2040 io.c:2108 io.c:2276 io.c:2308
#, c-format
msgid "moving pipe to stdout in child failed (dup: %s)"
msgstr ""
-#: io.c:1972 io.c:2032
+#: io.c:2047 io.c:2113
#, c-format
msgid "moving pipe to stdin in child failed (dup: %s)"
msgstr ""
-#: io.c:1992 io.c:2187
+#: io.c:2073 io.c:2298
msgid "restoring stdout in parent process failed\n"
msgstr ""
-#: io.c:2000
+#: io.c:2081
msgid "restoring stdin in parent process failed\n"
msgstr ""
-#: io.c:2035 io.c:2199 io.c:2213
+#: io.c:2116 io.c:2310 io.c:2324
#, c-format
msgid "close of pipe failed (%s)"
msgstr ""
-#: io.c:2089
+#: io.c:2174
msgid "`|&' not supported"
msgstr ""
-#: io.c:2156
+#: io.c:2261
#, c-format
msgid "cannot open pipe `%s' (%s)"
msgstr ""
-#: io.c:2207
+#: io.c:2318
#, c-format
msgid "cannot create child process for `%s' (fork: %s)"
msgstr ""
-#: io.c:2667
+#: io.c:2790
msgid "register_input_parser: received NULL pointer"
msgstr ""
-#: io.c:2695
+#: io.c:2818
#, c-format
msgid "input parser `%s' conflicts with previously installed input parser `%s'"
msgstr ""
-#: io.c:2702
+#: io.c:2825
#, c-format
msgid "input parser `%s' failed to open `%s'"
msgstr ""
-#: io.c:2722
+#: io.c:2845
msgid "register_output_wrapper: received NULL pointer"
msgstr ""
-#: io.c:2750
+#: io.c:2873
#, c-format
msgid ""
"output wrapper `%s' conflicts with previously installed output wrapper `%s'"
msgstr ""
-#: io.c:2757
+#: io.c:2880
#, c-format
msgid "output wrapper `%s' failed to open `%s'"
msgstr ""
-#: io.c:2778
+#: io.c:2901
msgid "register_output_processor: received NULL pointer"
msgstr ""
-#: io.c:2807
+#: io.c:2930
#, c-format
msgid ""
"two-way processor `%s' conflicts with previously installed two-way processor "
"`%s'"
msgstr ""
-#: io.c:2816
+#: io.c:2939
#, c-format
msgid "two way processor `%s' failed to open `%s'"
msgstr ""
-#: io.c:2923
+#: io.c:3064
#, c-format
msgid "data file `%s' is empty"
msgstr ""
-#: io.c:2965 io.c:2973
+#: io.c:3106 io.c:3114
msgid "could not allocate more input memory"
msgstr ""
-#: io.c:3539
+#: io.c:3682
msgid "multicharacter value of `RS' is a gawk extension"
msgstr ""
-#: io.c:3628
+#: io.c:3771
msgid "IPv6 communication is not supported"
msgstr ""
-#: main.c:388
+#: main.c:405
msgid "empty argument to `-e/--source' ignored"
msgstr ""
-#: main.c:478
+#: main.c:495
#, c-format
msgid "%s: option `-W %s' unrecognized, ignored\n"
msgstr ""
-#: main.c:524
+#: main.c:541
#, c-format
msgid "%s: option requires an argument -- %c\n"
msgstr ""
-#: main.c:545
+#: main.c:562
msgid "environment variable `POSIXLY_CORRECT' set: turning on `--posix'"
msgstr ""
-#: main.c:551
+#: main.c:568
msgid "`--posix' overrides `--traditional'"
msgstr ""
-#: main.c:562
+#: main.c:579
msgid "`--posix'/`--traditional' overrides `--non-decimal-data'"
msgstr ""
-#: main.c:566
+#: main.c:583
#, c-format
msgid "running %s setuid root may be a security problem"
msgstr ""
-#: main.c:571
+#: main.c:588
msgid "`--posix' overrides `--characters-as-bytes'"
msgstr ""
-#: main.c:630
+#: main.c:647
#, c-format
msgid "can't set binary mode on stdin (%s)"
msgstr ""
-#: main.c:633
+#: main.c:650
#, c-format
msgid "can't set binary mode on stdout (%s)"
msgstr ""
-#: main.c:635
+#: main.c:652
#, c-format
msgid "can't set binary mode on stderr (%s)"
msgstr ""
-#: main.c:693
+#: main.c:710
msgid "no program text at all!"
msgstr ""
-#: main.c:779
+#: main.c:799
#, c-format
msgid "Usage: %s [POSIX or GNU style options] -f progfile [--] file ...\n"
msgstr ""
-#: main.c:781
+#: main.c:801
#, c-format
msgid "Usage: %s [POSIX or GNU style options] [--] %cprogram%c file ...\n"
msgstr ""
-#: main.c:786
+#: main.c:806
msgid "POSIX options:\t\tGNU long options: (standard)\n"
msgstr ""
-#: main.c:787
+#: main.c:807
msgid "\t-f progfile\t\t--file=progfile\n"
msgstr ""
-#: main.c:788
+#: main.c:808
msgid "\t-F fs\t\t\t--field-separator=fs\n"
msgstr ""
-#: main.c:789
+#: main.c:809
msgid "\t-v var=val\t\t--assign=var=val\n"
msgstr ""
-#: main.c:790
+#: main.c:810
msgid "Short options:\t\tGNU long options: (extensions)\n"
msgstr ""
-#: main.c:791
+#: main.c:811
msgid "\t-b\t\t\t--characters-as-bytes\n"
msgstr ""
-#: main.c:792
+#: main.c:812
msgid "\t-c\t\t\t--traditional\n"
msgstr ""
-#: main.c:793
+#: main.c:813
msgid "\t-C\t\t\t--copyright\n"
msgstr ""
-#: main.c:794
+#: main.c:814
msgid "\t-d[file]\t\t--dump-variables[=file]\n"
msgstr ""
-#: main.c:795
+#: main.c:815
msgid "\t-D[file]\t\t--debug[=file]\n"
msgstr ""
-#: main.c:796
+#: main.c:816
msgid "\t-e 'program-text'\t--source='program-text'\n"
msgstr ""
-#: main.c:797
+#: main.c:817
msgid "\t-E file\t\t\t--exec=file\n"
msgstr ""
-#: main.c:798
+#: main.c:818
msgid "\t-g\t\t\t--gen-pot\n"
msgstr ""
-#: main.c:799
+#: main.c:819
msgid "\t-h\t\t\t--help\n"
msgstr ""
-#: main.c:800
+#: main.c:820
msgid "\t-i includefile\t\t--include=includefile\n"
msgstr ""
-#: main.c:801
+#: main.c:821
msgid "\t-l library\t\t--load=library\n"
msgstr ""
-#: main.c:802
+#: main.c:822
msgid "\t-L [fatal]\t\t--lint[=fatal]\n"
msgstr ""
-#: main.c:803
+#: main.c:823
msgid "\t-n\t\t\t--non-decimal-data\n"
msgstr ""
-#: main.c:804
+#: main.c:824
msgid "\t-M\t\t\t--bignum\n"
msgstr ""
-#: main.c:805
+#: main.c:825
msgid "\t-N\t\t\t--use-lc-numeric\n"
msgstr ""
-#: main.c:806
+#: main.c:826
msgid "\t-o[file]\t\t--pretty-print[=file]\n"
msgstr ""
-#: main.c:807
+#: main.c:827
msgid "\t-O\t\t\t--optimize\n"
msgstr ""
-#: main.c:808
+#: main.c:828
msgid "\t-p[file]\t\t--profile[=file]\n"
msgstr ""
-#: main.c:809
+#: main.c:829
msgid "\t-P\t\t\t--posix\n"
msgstr ""
-#: main.c:810
+#: main.c:830
msgid "\t-r\t\t\t--re-interval\n"
msgstr ""
-#: main.c:811
+#: main.c:831
msgid "\t-S\t\t\t--sandbox\n"
msgstr ""
-#: main.c:812
+#: main.c:832
msgid "\t-t\t\t\t--lint-old\n"
msgstr ""
-#: main.c:813
+#: main.c:833
msgid "\t-V\t\t\t--version\n"
msgstr ""
-#: main.c:815
+#: main.c:835
msgid "\t-W nostalgia\t\t--nostalgia\n"
msgstr ""
-#: main.c:818
+#: main.c:838
msgid "\t-Y\t\t--parsedebug\n"
msgstr ""
@@ -2989,7 +3007,7 @@ msgstr ""
#. for this application. Please add _another line_ with the
#. address for translation bugs.
#. no-wrap
-#: main.c:827
+#: main.c:847
msgid ""
"\n"
"To report bugs, see node `Bugs' in `gawk.info', which is\n"
@@ -2997,21 +3015,21 @@ msgid ""
"\n"
msgstr ""
-#: main.c:831
+#: main.c:851
msgid ""
"gawk is a pattern scanning and processing language.\n"
"By default it reads standard input and writes standard output.\n"
"\n"
msgstr ""
-#: main.c:835
+#: main.c:855
msgid ""
"Examples:\n"
"\tgawk '{ sum += $1 }; END { print sum }' file\n"
"\tgawk -F: '{ print $1 }' /etc/passwd\n"
msgstr ""
-#: main.c:855
+#: main.c:880
#, c-format
msgid ""
"Copyright (C) 1989, 1991-%d Free Software Foundation.\n"
@@ -3023,7 +3041,7 @@ msgid ""
"\n"
msgstr ""
-#: main.c:863
+#: main.c:888
msgid ""
"This program is distributed in the hope that it will be useful,\n"
"but WITHOUT ANY WARRANTY; without even the implied warranty of\n"
@@ -3032,70 +3050,70 @@ msgid ""
"\n"
msgstr ""
-#: main.c:869
+#: main.c:894
msgid ""
"You should have received a copy of the GNU General Public License\n"
"along with this program. If not, see http://www.gnu.org/licenses/.\n"
msgstr ""
-#: main.c:904
+#: main.c:931
msgid "-Ft does not set FS to tab in POSIX awk"
msgstr ""
-#: main.c:1181
+#: main.c:1208
#, c-format
msgid "unknown value for field spec: %d\n"
msgstr ""
-#: main.c:1279
+#: main.c:1306
#, c-format
msgid ""
"%s: `%s' argument to `-v' not in `var=value' form\n"
"\n"
msgstr ""
-#: main.c:1305
+#: main.c:1332
#, c-format
msgid "`%s' is not a legal variable name"
msgstr ""
-#: main.c:1308
+#: main.c:1335
#, c-format
msgid "`%s' is not a variable name, looking for file `%s=%s'"
msgstr ""
-#: main.c:1312
+#: main.c:1339
#, c-format
msgid "cannot use gawk builtin `%s' as variable name"
msgstr ""
-#: main.c:1317
+#: main.c:1344
#, c-format
msgid "cannot use function `%s' as variable name"
msgstr ""
-#: main.c:1370
+#: main.c:1397
msgid "floating point exception"
msgstr ""
-#: main.c:1377
+#: main.c:1404
msgid "fatal error: internal error"
msgstr ""
-#: main.c:1392
+#: main.c:1419
msgid "fatal error: internal error: segfault"
msgstr ""
-#: main.c:1404
+#: main.c:1431
msgid "fatal error: internal error: stack overflow"
msgstr ""
-#: main.c:1463
+#: main.c:1490
#, c-format
msgid "no pre-opened fd %d"
msgstr ""
-#: main.c:1470
+#: main.c:1497
#, c-format
msgid "could not pre-open /dev/null for fd %d"
msgstr ""
@@ -3150,7 +3168,7 @@ msgstr ""
msgid "%s: argument #%d negative value %Zd will give strange results"
msgstr ""
-#: msg.c:61
+#: msg.c:68
#, c-format
msgid "cmd. line:"
msgstr ""
@@ -3200,68 +3218,63 @@ msgstr ""
msgid "%s %s `%s': could not set close-on-exec: (fcntl F_SETFD: %s)"
msgstr ""
-#: profile.c:70
+#: profile.c:71
#, c-format
msgid "could not open `%s' for writing: %s"
msgstr ""
-#: profile.c:72
+#: profile.c:73
msgid "sending profile to standard error"
msgstr ""
-#: profile.c:188
+#: profile.c:193
#, c-format
msgid ""
"\t# %s block(s)\n"
"\n"
msgstr ""
-#: profile.c:193
+#: profile.c:198
#, c-format
msgid ""
"\t# Rule(s)\n"
"\n"
msgstr ""
-#: profile.c:267
+#: profile.c:272
#, c-format
msgid "internal error: %s with null vname"
msgstr ""
-#: profile.c:530
+#: profile.c:537
msgid "internal error: builtin with null fname"
msgstr ""
-#: profile.c:942
+#: profile.c:949
#, c-format
msgid ""
"\t# Loaded extensions (-l and/or @load)\n"
"\n"
msgstr ""
-#: profile.c:965
+#: profile.c:972
#, c-format
msgid "\t# gawk profile, created %s\n"
msgstr ""
-#: profile.c:1351
+#: profile.c:1475
#, c-format
msgid ""
"\n"
"\t# Functions, listed alphabetically\n"
msgstr ""
-#: profile.c:1389
+#: profile.c:1513
#, c-format
msgid "redir2str: unknown redirection type %d"
msgstr ""
-#: re.c:583
-#, c-format
-msgid "range of the form `[%c-%c]' is locale dependent"
-msgstr ""
-
-#: re.c:610
+#: re.c:607
#, c-format
msgid "regexp component `%.*s' should probably be `[%.*s]'"
msgstr ""
@@ -3330,6 +3343,6 @@ msgstr ""
msgid "No previous regular expression"
msgstr ""
-#: symbol.c:740
+#: symbol.c:741
msgid "can not pop main context"
msgstr ""
diff --git a/po/it.gmo b/po/it.gmo
index 2cb0e347..73f46395 100644
--- a/po/it.gmo
+++ b/po/it.gmo
Binary files differ
diff --git a/po/it.po b/po/it.po
index 5e2c5a1b..68f2d7f0 100644
--- a/po/it.po
+++ b/po/it.po
@@ -6,8 +6,8 @@ msgid ""
msgstr ""
"Project-Id-Version: GNU Awk 4.0.73, API: 0.0\n"
"Report-Msgid-Bugs-To: arnold@skeeve.com\n"
-"POT-Creation-Date: 2013-05-09 16:05+0300\n"
-"PO-Revision-Date: 2013-05-10 11:52+0100\n"
+"POT-Creation-Date: 2014-04-08 19:23+0300\n"
+"PO-Revision-Date: 2014-01-15 10:39+0100\n"
"Last-Translator: Antonio Colombo <azc100@gmail.com>\n"
"Language-Team: Italian <it@li.org>\n"
"Language: it\n"
@@ -15,92 +15,92 @@ msgstr ""
"Content-Type: text/plain; charset=ISO-8859-1\n"
"Content-Transfer-Encoding: 8-bit\n"
-#: array.c:254
+#: array.c:256
#, c-format
msgid "from %s"
msgstr "da %s"
-#: array.c:354
+#: array.c:357
msgid "attempt to use a scalar value as array"
msgstr "tentativo di usare valore scalare come vettore"
-#: array.c:356
+#: array.c:359
#, c-format
msgid "attempt to use scalar parameter `%s' as an array"
msgstr "tentativo di usare il parametro scalare `%s' come un vettore"
-#: array.c:359
+#: array.c:362
#, c-format
msgid "attempt to use scalar `%s' as an array"
msgstr "tentativo di usare scalare '%s' come vettore"
-#: array.c:406 array.c:573 builtin.c:85 builtin.c:1591 builtin.c:1637
-#: builtin.c:1650 builtin.c:2078 builtin.c:2092 eval.c:1121 eval.c:1125
-#: eval.c:1524
+#: array.c:409 array.c:576 builtin.c:85 builtin.c:1615 builtin.c:1661
+#: builtin.c:1674 builtin.c:2102 builtin.c:2116 eval.c:1122 eval.c:1126
+#: eval.c:1531
#, c-format
msgid "attempt to use array `%s' in a scalar context"
msgstr "tentativo di usare vettore `%s' in un contesto scalare"
-#: array.c:580
+#: array.c:583
#, c-format
msgid "delete: index `%s' not in array `%s'"
msgstr "delete: indice `%s' non presente nel vettore `%s'"
-#: array.c:594
+#: array.c:597
#, c-format
msgid "attempt to use scalar `%s[\"%.*s\"]' as an array"
msgstr "tentativo di usare scalare`%s[\"%.*s\"]' come vettore"
-#: array.c:773
+#: array.c:776
msgid "adump: first argument not an array"
msgstr "adump: primo argomento non-vettoriale"
-#: array.c:812
+#: array.c:815
msgid "asort: second argument not an array"
msgstr "asort: secondo argomento non-vettoriale"
-#: array.c:813
+#: array.c:816
msgid "asorti: second argument not an array"
msgstr "asorti: secondo argomento non-vettoriale"
-#: array.c:820
+#: array.c:823
msgid "asort: first argument not an array"
msgstr "asort: primo argomento non-vettoriale"
-#: array.c:821
+#: array.c:824
msgid "asorti: first argument not an array"
msgstr "asorti: primo argomento non-vettoriale"
-#: array.c:828
+#: array.c:831
msgid "asort: cannot use a subarray of first arg for second arg"
msgstr ""
"asort: non consentito un secondo argomento che sia un sottovettore del primo "
"argomento"
-#: array.c:829
+#: array.c:832
msgid "asorti: cannot use a subarray of first arg for second arg"
msgstr ""
"asorti: non consentito un secondo argomento che sia un sottovettore del "
"primo argomento"
-#: array.c:834
+#: array.c:837
msgid "asort: cannot use a subarray of second arg for first arg"
msgstr ""
"asort: non consentito un primo argomento che sia un sottovettore del secondo "
"argomento"
-#: array.c:835
+#: array.c:838
msgid "asorti: cannot use a subarray of second arg for first arg"
msgstr ""
"asorti: non consentito un primo argomento che sia un sottovettore del "
"secondo argomento"
-#: array.c:1309
+#: array.c:1314
#, c-format
msgid "`%s' is invalid as a function name"
msgstr "`%s' non è un nome funzione valido"
-#: array.c:1313
+#: array.c:1318
#, c-format
msgid "sort comparison function `%s' is not defined"
msgstr "funzione di confronto del sort `%s' non definita"
@@ -141,11 +141,11 @@ msgstr "valori di `case' doppi all'interno di uno `switch': %s"
msgid "duplicate `default' detected in switch body"
msgstr "valori di default doppi all'interno di uno `switch'"
-#: awkgram.y:796 awkgram.y:3699
+#: awkgram.y:796 awkgram.y:3723
msgid "`break' is not allowed outside a loop or switch"
msgstr "`break' non consentito fuori da un ciclo o da uno `switch'"
-#: awkgram.y:805 awkgram.y:3691
+#: awkgram.y:805 awkgram.y:3715
msgid "`continue' is not allowed outside a loop"
msgstr "`continue' non consentito fuori da un un ciclo"
@@ -236,271 +236,271 @@ msgstr ""
msgid "invalid subscript expression"
msgstr "espressione indice invalida"
-#: awkgram.y:2024 awkgram.y:2044 gawkapi.c:206 gawkapi.c:224 msg.c:119
+#: awkgram.y:2048 awkgram.y:2068 gawkapi.c:206 gawkapi.c:224 msg.c:126
msgid "warning: "
msgstr "attenzione: "
-#: awkgram.y:2042 gawkapi.c:192 gawkapi.c:221 msg.c:151
+#: awkgram.y:2066 gawkapi.c:192 gawkapi.c:221 msg.c:158
msgid "fatal: "
msgstr "fatale: "
-#: awkgram.y:2092
+#: awkgram.y:2116
msgid "unexpected newline or end of string"
msgstr "carattere 'a capo' o fine stringa non previsti"
-#: awkgram.y:2359 awkgram.y:2435 awkgram.y:2658 debug.c:517 debug.c:533
-#: debug.c:2792 debug.c:5040
+#: awkgram.y:2383 awkgram.y:2459 awkgram.y:2682 debug.c:523 debug.c:539
+#: debug.c:2812 debug.c:5055
#, c-format
msgid "can't open source file `%s' for reading (%s)"
msgstr "non riesco ad aprire file sorgente `%s' in lettura (%s)"
-#: awkgram.y:2360 awkgram.y:2485
+#: awkgram.y:2384 awkgram.y:2509
#, c-format
msgid "can't open shared library `%s' for reading (%s)"
msgstr "non riesco ad aprire shared library `%s' in lettura (%s)"
-#: awkgram.y:2362 awkgram.y:2436 awkgram.y:2486 builtin.c:130 debug.c:5191
+#: awkgram.y:2386 awkgram.y:2460 awkgram.y:2510 builtin.c:135 debug.c:5206
msgid "reason unknown"
msgstr "ragione indeterminata"
-#: awkgram.y:2371 awkgram.y:2395
+#: awkgram.y:2395 awkgram.y:2419
#, c-format
msgid "can't include `%s' and use it as a program file"
msgstr "non riesco a includere `%s' per usarlo come file di programma"
-#: awkgram.y:2384
+#: awkgram.y:2408
#, c-format
msgid "already included source file `%s'"
msgstr "file sorgente `%s' già incluso"
-#: awkgram.y:2385
+#: awkgram.y:2409
#, c-format
msgid "already loaded shared library `%s'"
msgstr "shared library `%s' già inclusa"
-#: awkgram.y:2420
+#: awkgram.y:2444
msgid "@include is a gawk extension"
msgstr "@include è un'estensione gawk"
-#: awkgram.y:2426
+#: awkgram.y:2450
msgid "empty filename after @include"
msgstr "nome-file mancante dopo @include"
-#: awkgram.y:2470
+#: awkgram.y:2494
msgid "@load is a gawk extension"
msgstr "@load è un'estensione gawk"
-#: awkgram.y:2476
+#: awkgram.y:2500
msgid "empty filename after @load"
msgstr "nome-file mancante dopo @include"
-#: awkgram.y:2610
+#: awkgram.y:2634
msgid "empty program text on command line"
msgstr "programma nullo sulla riga comandi"
-#: awkgram.y:2725
+#: awkgram.y:2749
#, c-format
msgid "can't read sourcefile `%s' (%s)"
msgstr "non riesco a leggere file sorgente `%s' (%s)"
-#: awkgram.y:2736
+#: awkgram.y:2760
#, c-format
msgid "source file `%s' is empty"
msgstr "file sorgente `%s' vuoto"
-#: awkgram.y:2913
+#: awkgram.y:2937
msgid "source file does not end in newline"
msgstr "file sorgente non termina con carattere 'a capo'"
-#: awkgram.y:3018
+#: awkgram.y:3042
msgid "unterminated regexp ends with `\\' at end of file"
msgstr "espressione regolare non completata termina con `\\' a fine file"
-#: awkgram.y:3042
+#: awkgram.y:3066
#, c-format
msgid "%s: %d: tawk regex modifier `/.../%c' doesn't work in gawk"
msgstr ""
"%s: %d: modificatore di espressione regolare tawk `/.../%c' non valido in "
"gawk"
-#: awkgram.y:3046
+#: awkgram.y:3070
#, c-format
msgid "tawk regex modifier `/.../%c' doesn't work in gawk"
msgstr "modificatore di espressione regolare tawk `/.../%c' non valido in gawk"
-#: awkgram.y:3053
+#: awkgram.y:3077
msgid "unterminated regexp"
msgstr "espressione regolare non completata"
-#: awkgram.y:3057
+#: awkgram.y:3081
msgid "unterminated regexp at end of file"
msgstr "espressione regolare non completata a fine file"
-#: awkgram.y:3116
+#: awkgram.y:3140
msgid "use of `\\ #...' line continuation is not portable"
msgstr "uso di `\\ #...' continuazione riga non portabile"
-#: awkgram.y:3132
+#: awkgram.y:3156
msgid "backslash not last character on line"
msgstr "'\\' non è l'ultimo carattere della riga"
-#: awkgram.y:3193
+#: awkgram.y:3217
msgid "POSIX does not allow operator `**='"
msgstr "POSIX non permette l'operatore `**='"
-#: awkgram.y:3195
+#: awkgram.y:3219
msgid "old awk does not support operator `**='"
msgstr "il vecchio awk non supporta l'operatore `**='"
-#: awkgram.y:3204
+#: awkgram.y:3228
msgid "POSIX does not allow operator `**'"
msgstr "POSIX non permette l'operatore `**'"
-#: awkgram.y:3206
+#: awkgram.y:3230
msgid "old awk does not support operator `**'"
msgstr "il vecchio awk non supporta l'operatore `**'"
-#: awkgram.y:3241
+#: awkgram.y:3265
msgid "operator `^=' is not supported in old awk"
msgstr "l'operatore `^=' non è supportato nel vecchio awk"
-#: awkgram.y:3249
+#: awkgram.y:3273
msgid "operator `^' is not supported in old awk"
msgstr "l'operatore `^' non è supportato nel vecchio awk"
-#: awkgram.y:3342 awkgram.y:3358 command.y:1178
+#: awkgram.y:3366 awkgram.y:3382 command.y:1178
msgid "unterminated string"
msgstr "stringa non terminata"
-#: awkgram.y:3579
+#: awkgram.y:3603
#, c-format
msgid "invalid char '%c' in expression"
msgstr "carattere '%c' non valido in un'espressione"
-#: awkgram.y:3626
+#: awkgram.y:3650
#, c-format
msgid "`%s' is a gawk extension"
msgstr "`%s' è un'estensione gawk"
-#: awkgram.y:3631
+#: awkgram.y:3655
#, c-format
msgid "POSIX does not allow `%s'"
msgstr "POSIX non permette `%s'"
-#: awkgram.y:3639
+#: awkgram.y:3663
#, c-format
msgid "`%s' is not supported in old awk"
msgstr "`%s' non è supportato nel vecchio awk"
-#: awkgram.y:3729
+#: awkgram.y:3753
msgid "`goto' considered harmful!\n"
msgstr "`goto' considerato pericoloso!\n"
-#: awkgram.y:3763
+#: awkgram.y:3787
#, c-format
msgid "%d is invalid as number of arguments for %s"
msgstr "%d non valido come numero di argomenti per %s"
-#: awkgram.y:3798
+#: awkgram.y:3822
#, c-format
msgid "%s: string literal as last arg of substitute has no effect"
msgstr "%s: una stringa come ultimo argomento di `substitute' non ha effetto"
-#: awkgram.y:3803
+#: awkgram.y:3827
#, c-format
msgid "%s third parameter is not a changeable object"
msgstr "il terzo parametro di '%s' non è un oggetto modificabile"
-#: awkgram.y:3886 awkgram.y:3889
+#: awkgram.y:3910 awkgram.y:3913
msgid "match: third argument is a gawk extension"
msgstr "match: il terzo argomento è un'estensione gawk"
-#: awkgram.y:3943 awkgram.y:3946
+#: awkgram.y:3967 awkgram.y:3970
msgid "close: second argument is a gawk extension"
msgstr "close: il secondo argomento è un'estensione gawk"
-#: awkgram.y:3958
+#: awkgram.y:3982
msgid "use of dcgettext(_\"...\") is incorrect: remove leading underscore"
msgstr ""
"uso scorretto di dcgettext(_\"...\"): togliere il carattere '_' iniziale"
-#: awkgram.y:3973
+#: awkgram.y:3997
msgid "use of dcngettext(_\"...\") is incorrect: remove leading underscore"
msgstr ""
"uso scorretto di dcngettext(_\"...\"): togliere il carattere '_' iniziale"
-#: awkgram.y:3992
+#: awkgram.y:4016
msgid "index: regexp constant as second argument is not allowed"
msgstr "index: espressione regolare come secondo argomento non consentita"
-#: awkgram.y:4045
+#: awkgram.y:4069
#, c-format
msgid "function `%s': parameter `%s' shadows global variable"
msgstr "funzione `%s': parametro `%s' nasconde variabile globale"
-#: awkgram.y:4102 debug.c:4021 debug.c:4064 debug.c:5189
+#: awkgram.y:4126 debug.c:4041 debug.c:4084 debug.c:5204
#, c-format
msgid "could not open `%s' for writing (%s)"
msgstr "non riesco ad aprire `%s' in scrittura (%s)"
-#: awkgram.y:4103
+#: awkgram.y:4127
msgid "sending variable list to standard error"
msgstr "mando lista variabili a 'standard error'"
-#: awkgram.y:4111
+#: awkgram.y:4135
#, c-format
msgid "%s: close failed (%s)"
msgstr "%s: `close' non riuscita (%s)"
-#: awkgram.y:4136
+#: awkgram.y:4160
msgid "shadow_funcs() called twice!"
msgstr "shadow_funcs() chiamata due volte!"
-#: awkgram.y:4144
+#: awkgram.y:4168
msgid "there were shadowed variables."
msgstr "c'erano variabili nascoste."
-#: awkgram.y:4215
+#: awkgram.y:4239
#, c-format
msgid "function name `%s' previously defined"
msgstr "funzione di nome `%s' definita in precedenza"
-#: awkgram.y:4261
+#: awkgram.y:4285
#, c-format
msgid "function `%s': can't use function name as parameter name"
msgstr ""
"funzione `%s': non è possibile usare nome della funzione come nome parametro"
-#: awkgram.y:4264
+#: awkgram.y:4288
#, c-format
msgid "function `%s': can't use special variable `%s' as a function parameter"
msgstr ""
"funzione `%s': non è possibile usare la variabile speciale `%s' come "
"parametro di funzione"
-#: awkgram.y:4272
+#: awkgram.y:4296
#, c-format
msgid "function `%s': parameter #%d, `%s', duplicates parameter #%d"
msgstr "funzione `%s': parametro #%d, `%s', duplica parametro #%d"
-#: awkgram.y:4366 awkgram.y:4372
+#: awkgram.y:4383 awkgram.y:4389
#, c-format
msgid "function `%s' called but never defined"
msgstr "funzione `%s' chiamata ma mai definita"
-#: awkgram.y:4376
+#: awkgram.y:4393
#, c-format
msgid "function `%s' defined but never called directly"
msgstr "funzione `%s' definita ma mai chiamata direttamente"
-#: awkgram.y:4408
+#: awkgram.y:4425
#, c-format
msgid "regexp constant for parameter #%d yields boolean value"
msgstr ""
"espressione regolare di valore costante per parametro #%d genera valore "
"booleano"
-#: awkgram.y:4467
+#: awkgram.y:4484
#, c-format
msgid ""
"function `%s' called with space between name and `(',\n"
@@ -509,234 +509,246 @@ msgstr ""
"funzione `%s' chiamata con spazio tra il nome e `(',\n"
"o usata come variabile o vettore"
-#: awkgram.y:4703
+#: awkgram.y:4720
msgid "division by zero attempted"
msgstr "tentativo di dividere per zero"
-#: awkgram.y:4712
+#: awkgram.y:4729
#, c-format
msgid "division by zero attempted in `%%'"
msgstr "tentativo di dividere per zero in `%%'"
-#: builtin.c:128
+#: awkgram.y:5049
+msgid ""
+"cannot assign a value to the result of a field post-increment expression"
+msgstr ""
+"impossibile assegnare un valore al risultato di un'espressione di post-"
+"incremento di un campo"
+
+#: awkgram.y:5052
+#, c-format
+msgid "invalid target of assignment (opcode %s)"
+msgstr "destinazione di assegnazione non valida (codice operativo %s)"
+
+#: builtin.c:133
#, c-format
msgid "%s to \"%s\" failed (%s)"
msgstr "%s a \"%s\" non riuscita (%s)"
-#: builtin.c:129
+#: builtin.c:134
msgid "standard output"
msgstr "standard output"
-#: builtin.c:143
+#: builtin.c:148
msgid "exp: received non-numeric argument"
msgstr "exp: argomento non-numerico"
-#: builtin.c:149
+#: builtin.c:154
#, c-format
msgid "exp: argument %g is out of range"
msgstr "exp: argomento %g fuori intervallo"
-#: builtin.c:224
+#: builtin.c:229
#, c-format
msgid "fflush: cannot flush: pipe `%s' opened for reading, not writing"
msgstr ""
"fflush: non riesco a scaricare: `pipe' `%s' aperta in lettura, non in "
"scrittura"
-#: builtin.c:227
+#: builtin.c:232
#, c-format
msgid "fflush: cannot flush: file `%s' opened for reading, not writing"
msgstr ""
"fflush: non riesco a scaricare: file `%s' aperto in lettura, non in scrittura"
-#: builtin.c:239
+#: builtin.c:244
#, 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:357
+#: builtin.c:362
msgid "index: received non-string first argument"
msgstr "index: il primo argomento non è una stringa"
-#: builtin.c:359
+#: builtin.c:364
msgid "index: received non-string second argument"
msgstr "index: il secondo argomento non è una stringa"
-#: builtin.c:483 mpfr.c:757
+#: builtin.c:488 mpfr.c:757
msgid "int: received non-numeric argument"
msgstr "int: argomento non-numerico"
-#: builtin.c:520
+#: builtin.c:525
msgid "length: received array argument"
msgstr "length: l'argomento fornito è un vettore"
-#: builtin.c:523
+#: builtin.c:528
msgid "`length(array)' is a gawk extension"
msgstr "`length(array)' è un'estensione gawk"
-#: builtin.c:539
+#: builtin.c:544
msgid "length: received non-string argument"
msgstr "length: l'argomento non è una stringa"
-#: builtin.c:570
+#: builtin.c:575
msgid "log: received non-numeric argument"
msgstr "log: argomento non-numerico"
-#: builtin.c:573
+#: builtin.c:578
#, c-format
msgid "log: received negative argument %g"
msgstr "log: argomento negativo %g"
-#: builtin.c:771 builtin.c:776
+#: builtin.c:776 builtin.c:781
msgid "fatal: must use `count$' on all formats or none"
msgstr "fatale: `count$' va usato per ogni `format' o per nessuno"
-#: builtin.c:846
+#: builtin.c:851
#, c-format
msgid "field width is ignored for `%%' specifier"
msgstr "larghezza campo ignorata per la specifica `%%'"
-#: builtin.c:848
+#: builtin.c:853
#, c-format
msgid "precision is ignored for `%%' specifier"
msgstr "precisione ignorata per la specifica `%%'"
-#: builtin.c:850
+#: builtin.c:855
#, c-format
msgid "field width and precision are ignored for `%%' specifier"
msgstr "larghezza campo e precisone ignorate per la specifica `%%'"
-#: builtin.c:901
+#: builtin.c:906
msgid "fatal: `$' is not permitted in awk formats"
msgstr "fatale: operatore `$' non consentito nei `format' awk"
-#: builtin.c:910
+#: builtin.c:915
msgid "fatal: arg count with `$' must be > 0"
msgstr "fatale: numero argomenti con `$' dev'essere > 0"
-#: builtin.c:914
+#: builtin.c:919
#, c-format
msgid "fatal: arg count %ld greater than total number of supplied arguments"
msgstr "fatale: numero argomenti %ld > del numero totale argomenti specificati"
-#: builtin.c:918
+#: builtin.c:923
msgid "fatal: `$' not permitted after period in format"
msgstr "fatale: `$' non consentito dopo il punto in un `format'"
-#: builtin.c:934
+#: builtin.c:939
msgid "fatal: no `$' supplied for positional field width or precision"
msgstr "fatale: manca `$' per i campi posizionali larghezza o precisione"
-#: builtin.c:1006
+#: builtin.c:1009
msgid "`l' is meaningless in awk formats; ignored"
msgstr "`l' non ha senso nei `format' awk; ignorato"
-#: builtin.c:1010
+#: builtin.c:1013
msgid "fatal: `l' is not permitted in POSIX awk formats"
msgstr "fatale: `l' non consentito nei `format' POSIX awk"
-#: builtin.c:1023
+#: builtin.c:1026
msgid "`L' is meaningless in awk formats; ignored"
msgstr "`L' non ha senso nei `format' awk; ignorato"
-#: builtin.c:1027
+#: builtin.c:1030
msgid "fatal: `L' is not permitted in POSIX awk formats"
msgstr "`L' non ha senso nei `format' awk; ignorato"
-#: builtin.c:1040
+#: builtin.c:1043
msgid "`h' is meaningless in awk formats; ignored"
msgstr "`h' non ha senso nei `format' awk; ignorato"
-#: builtin.c:1044
+#: builtin.c:1047
msgid "fatal: `h' is not permitted in POSIX awk formats"
msgstr "fatale: `h' non consentito nei `format' POSIX awk"
-#: builtin.c:1439
+#: builtin.c:1463
#, c-format
msgid "[s]printf: value %g is out of range for `%%%c' format"
msgstr "[s]printf: valore %g fuori intervallo per il `format' `%%%c'"
-#: builtin.c:1537
+#: builtin.c:1561
#, c-format
msgid "ignoring unknown format specifier character `%c': no argument converted"
msgstr ""
"carattere di `format' sconosciuto `%c' ignorato: nessun argomento convertito"
-#: builtin.c:1542
+#: builtin.c:1566
msgid "fatal: not enough arguments to satisfy format string"
msgstr ""
"fatale: argomenti in numero minore di quelli richiesti dalla stringa di "
"`format'"
-#: builtin.c:1544
+#: builtin.c:1568
msgid "^ ran out for this one"
msgstr "^ esauriti a questo punto"
-#: builtin.c:1551
+#: builtin.c:1575
msgid "[s]printf: format specifier does not have control letter"
msgstr "[s]printf: specifica di `format' senza un carattere di controllo"
-#: builtin.c:1554
+#: builtin.c:1578
msgid "too many arguments supplied for format string"
msgstr "troppi argomenti specificati per questa stringa di `format'"
-#: builtin.c:1610
+#: builtin.c:1634
msgid "sprintf: no arguments"
msgstr "sprintf: nessun argomento"
-#: builtin.c:1633 builtin.c:1644
+#: builtin.c:1657 builtin.c:1668
msgid "printf: no arguments"
msgstr "printf: nessun argomento"
-#: builtin.c:1687
+#: builtin.c:1711
msgid "sqrt: received non-numeric argument"
msgstr "sqrt: argomento non-numerico"
-#: builtin.c:1691
+#: builtin.c:1715
#, c-format
msgid "sqrt: called with negative argument %g"
msgstr "sqrt: chiamata con argomento negativo %g"
-#: builtin.c:1722
+#: builtin.c:1746
#, c-format
msgid "substr: length %g is not >= 1"
msgstr "substr: lunghezza %g non >= 1"
-#: builtin.c:1724
+#: builtin.c:1748
#, c-format
msgid "substr: length %g is not >= 0"
msgstr "substr: lunghezza %g non >= 0"
-#: builtin.c:1731
+#: builtin.c:1755
#, c-format
msgid "substr: non-integer length %g will be truncated"
msgstr "substr: lunghezza non intera %g: sarà troncata"
-#: builtin.c:1736
+#: builtin.c:1760
#, c-format
msgid "substr: length %g too big for string indexing, truncating to %g"
msgstr "substr: lunghezza %g troppo elevata per indice stringa, tronco a %g"
-#: builtin.c:1748
+#: builtin.c:1772
#, c-format
msgid "substr: start index %g is invalid, using 1"
msgstr "substr: indice di partenza %g non valido, uso 1"
-#: builtin.c:1753
+#: builtin.c:1777
#, c-format
msgid "substr: non-integer start index %g will be truncated"
msgstr "substr: indice di partenza non intero %g: sarà troncato"
-#: builtin.c:1778
+#: builtin.c:1802
msgid "substr: source string is zero length"
msgstr "substr: stringa di partenza lunga zero"
-#: builtin.c:1794
+#: builtin.c:1818
#, c-format
msgid "substr: start index %g is past end of string"
msgstr "substr: indice di partenza %g oltre la fine della stringa"
-#: builtin.c:1802
+#: builtin.c:1826
#, c-format
msgid ""
"substr: length %g at start index %g exceeds length of first argument (%lu)"
@@ -744,187 +756,187 @@ msgstr ""
"substr: lunghezza %g all'indice di partenza %g supera la lunghezza del primo "
"argomento (%lu)"
-#: builtin.c:1876
+#: builtin.c:1900
msgid "strftime: format value in PROCINFO[\"strftime\"] has numeric type"
msgstr ""
"strftime: il valore del `format' in PROCINFO[\"strftime\"] è di tipo numerico"
-#: builtin.c:1899
+#: builtin.c:1923
msgid "strftime: received non-numeric second argument"
msgstr "strftime: secondo argomento non-numerico"
-#: builtin.c:1903
+#: builtin.c:1927
msgid "strftime: second argument less than 0 or too big for time_t"
msgstr "strftime: secondo argomento < 0 o troppo elevato per time_t"
-#: builtin.c:1910
+#: builtin.c:1934
msgid "strftime: received non-string first argument"
msgstr "strftime: il primo argomento non è una stringa"
-#: builtin.c:1917
+#: builtin.c:1941
msgid "strftime: received empty format string"
msgstr "strftime: `format' è una stringa nulla"
-#: builtin.c:1983
+#: builtin.c:2007
msgid "mktime: received non-string argument"
msgstr "mktime: l'argomento non è una stringa"
-#: builtin.c:2000
+#: builtin.c:2024
msgid "mktime: at least one of the values is out of the default range"
msgstr "mktime: almeno un valore è fuori dall'intervallo di default"
-#: builtin.c:2035
+#: builtin.c:2059
msgid "'system' function not allowed in sandbox mode"
msgstr "funzione 'system' non consentita in modo `sandbox'"
-#: builtin.c:2040
+#: builtin.c:2064
msgid "system: received non-string argument"
msgstr "system: l'argomento non è una stringa"
-#: builtin.c:2160
+#: builtin.c:2184
#, c-format
msgid "reference to uninitialized field `$%d'"
msgstr "riferimento a variabile non inizializzata `$%d'"
-#: builtin.c:2247
+#: builtin.c:2271
msgid "tolower: received non-string argument"
msgstr "tolower: l'argomento non è una stringa"
-#: builtin.c:2281
+#: builtin.c:2305
msgid "toupper: received non-string argument"
msgstr "toupper: l'argomento non è una stringa"
-#: builtin.c:2317 mpfr.c:672
+#: builtin.c:2341 mpfr.c:672
msgid "atan2: received non-numeric first argument"
msgstr "atan2: primo argomento non-numerico"
-#: builtin.c:2319 mpfr.c:674
+#: builtin.c:2343 mpfr.c:674
msgid "atan2: received non-numeric second argument"
msgstr "atan2: secondo argomento non-numerico"
-#: builtin.c:2338
+#: builtin.c:2362
msgid "sin: received non-numeric argument"
msgstr "sin: argomento non-numerico"
-#: builtin.c:2354
+#: builtin.c:2378
msgid "cos: received non-numeric argument"
msgstr "cos: argomento non-numerico"
-#: builtin.c:2407 mpfr.c:1156
+#: builtin.c:2431 mpfr.c:1156
msgid "srand: received non-numeric argument"
msgstr "srand: argomento non-numerico"
-#: builtin.c:2438
+#: builtin.c:2462
msgid "match: third argument is not an array"
msgstr "match: terzo argomento non-vettoriale"
-#: builtin.c:2710
+#: builtin.c:2734
msgid "gensub: third argument of 0 treated as 1"
msgstr "gensub: il terzo argomento è 0, trattato come 1"
-#: builtin.c:3003
+#: builtin.c:3030
msgid "lshift: received non-numeric first argument"
msgstr "lshift: primo argomento non-numerico"
-#: builtin.c:3005
+#: builtin.c:3032
msgid "lshift: received non-numeric second argument"
msgstr "lshift: secondo argomento non-numerico"
-#: builtin.c:3011
+#: builtin.c:3038
#, c-format
msgid "lshift(%f, %f): negative values will give strange results"
msgstr "lshift(%f, %f): valori negativi daranno risultati strani"
-#: builtin.c:3013
+#: builtin.c:3040
#, c-format
msgid "lshift(%f, %f): fractional values will be truncated"
msgstr "lshift(%f, %f): valori decimali saranno troncati"
-#: builtin.c:3015
+#: builtin.c:3042
#, c-format
msgid "lshift(%f, %f): too large shift value will give strange results"
msgstr "lshift(%f, %f): valori troppo alti daranno risultati strani"
-#: builtin.c:3040
+#: builtin.c:3067
msgid "rshift: received non-numeric first argument"
msgstr "rshift: primo argomento ricevuto non-numerico"
-#: builtin.c:3042
+#: builtin.c:3069
msgid "rshift: received non-numeric second argument"
msgstr "rshift: secondo argomento non-numerico"
-#: builtin.c:3048
+#: builtin.c:3075
#, c-format
msgid "rshift(%f, %f): negative values will give strange results"
msgstr "rshift(%f, %f): valori negativi daranno risultati strani"
-#: builtin.c:3050
+#: builtin.c:3077
#, c-format
msgid "rshift(%f, %f): fractional values will be truncated"
msgstr "rshift(%f, %f): valori decimali saranno troncati"
-#: builtin.c:3052
+#: builtin.c:3079
#, c-format
msgid "rshift(%f, %f): too large shift value will give strange results"
msgstr "rshift(%f, %f): valori troppo alti daranno risultati strani"
-#: builtin.c:3077 mpfr.c:968
+#: builtin.c:3104 mpfr.c:968
msgid "and: called with less than two arguments"
msgstr "and: chiamata con meno di due argomenti"
-#: builtin.c:3082
+#: builtin.c:3109
#, c-format
msgid "and: argument %d is non-numeric"
msgstr "and: argomento %d non-numerico"
-#: builtin.c:3086
+#: builtin.c:3113
#, c-format
msgid "and: argument %d negative value %g will give strange results"
msgstr "and: argomento %d, valore negativo %g darà risultati strani"
-#: builtin.c:3109 mpfr.c:1000
+#: builtin.c:3136 mpfr.c:1000
msgid "or: called with less than two arguments"
msgstr "or: chiamata con meno di due argomenti"
-#: builtin.c:3114
+#: builtin.c:3141
#, c-format
msgid "or: argument %d is non-numeric"
msgstr "or: argomento %d non-numerico"
-#: builtin.c:3118
+#: builtin.c:3145
#, c-format
msgid "or: argument %d negative value %g will give strange results"
msgstr "or: argomento %d, valore negativo %g darà risultati strani"
-#: builtin.c:3140 mpfr.c:1031
+#: builtin.c:3167 mpfr.c:1031
msgid "xor: called with less than two arguments"
msgstr "xor: chiamata con meno di due argomenti"
-#: builtin.c:3146
+#: builtin.c:3173
#, c-format
msgid "xor: argument %d is non-numeric"
msgstr "xor: argomento %d non-numerico"
-#: builtin.c:3150
+#: builtin.c:3177
#, c-format
msgid "xor: argument %d negative value %g will give strange results"
msgstr "xor: argomento %d, valore negativo %g darà risultati strani"
-#: builtin.c:3175 mpfr.c:787
+#: builtin.c:3202 mpfr.c:787
msgid "compl: received non-numeric argument"
msgstr "compl: argomento non-numerico"
-#: builtin.c:3181
+#: builtin.c:3208
#, c-format
msgid "compl(%f): negative value will give strange results"
msgstr "compl(%f): valore negativo, darà risultati strani"
-#: builtin.c:3183
+#: builtin.c:3210
#, c-format
msgid "compl(%f): fractional value will be truncated"
msgstr "compl(%f): valori decimali saranno troncati"
-#: builtin.c:3352
+#: builtin.c:3379
#, c-format
msgid "dcgettext: `%s' is not a valid locale category"
msgstr "dcgettext: `%s' non è una categoria `locale' valida"
@@ -1051,8 +1063,8 @@ msgstr "clear [[nome-file:]N|funzione] - togli breakpoint impostati prima."
#: command.y:823
msgid ""
-"commands [num] - starts a list of commands to be executed at a breakpoint"
-"(watchpoint) hit."
+"commands [num] - starts a list of commands to be executed at a "
+"breakpoint(watchpoint) hit."
msgstr ""
"commands [num] - inizia una lista di comandi da eseguire se si raggiunge un "
"breakpoint (watchpoint)."
@@ -1231,7 +1243,7 @@ msgstr "up [N] - spostati di N elementi dello stack verso l'alto."
msgid "watch var - set a watchpoint for a variable."
msgstr "watch var - imposta un watchpoint per una variabile."
-#: command.y:1011 debug.c:395 msg.c:128
+#: command.y:1011 debug.c:401 msg.c:135
#, c-format
msgid "error: "
msgstr "errore: "
@@ -1269,97 +1281,97 @@ msgstr "carattere non valido"
msgid "undefined command: %s\n"
msgstr "comando non definito: %s\n"
-#: debug.c:246
+#: debug.c:252
msgid "set or show the number of lines to keep in history file."
msgstr ""
"imposta o mostra il numero di righe da tenere nel file che contiene la "
"storia comandi."
-#: debug.c:248
+#: debug.c:254
msgid "set or show the list command window size."
msgstr "imposta o mostra dimensioni finestra lista comandi"
-#: debug.c:250
+#: debug.c:256
msgid "set or show gawk output file."
msgstr "imposta o mostra file di outpu gawk"
-#: debug.c:252
+#: debug.c:258
msgid "set or show debugger prompt."
msgstr "imposta o mostra prompt di debug"
-#: debug.c:254
+#: debug.c:260
msgid "(un)set or show saving of command history (value=on|off)."
msgstr "(dis)imposta o mostra salvataggio storia comandi (valore=on|off)."
-#: debug.c:256
+#: debug.c:262
msgid "(un)set or show saving of options (value=on|off)."
msgstr "(dis)imposta o mostra salvataggio opzioni (valore=on|off)."
-#: debug.c:258
+#: debug.c:264
msgid "(un)set or show instruction tracing (value=on|off)."
msgstr "(dis)imposta o mostra tracciamento istruzioni (valore=on|off)."
-#: debug.c:339
+#: debug.c:345
msgid "program not running."
msgstr "programma non in esecuzione."
-#: debug.c:442 debug.c:597
+#: debug.c:448 debug.c:606
#, c-format
msgid "can't read source file `%s' (%s)"
msgstr "non riesco a leggere file sorgente `%s' (%s)"
-#: debug.c:447
+#: debug.c:453
#, c-format
msgid "source file `%s' is empty.\n"
msgstr "file sorgente `%s' vuoto.\n"
-#: debug.c:474
+#: debug.c:480
msgid "no current source file."
msgstr "file sorgente non disponibile."
-#: debug.c:499
+#: debug.c:505
#, c-format
msgid "cannot find source file named `%s' (%s)"
msgstr "non riesco a leggere file di nome `%s' (%s)"
-#: debug.c:523
+#: debug.c:529
#, c-format
msgid "WARNING: source file `%s' modified since program compilation.\n"
msgstr ""
"ATTENZIONE: file sorgente `%s' modificato dopo la compilazione del "
"programma.\n"
-#: debug.c:542
+#: debug.c:551
#, c-format
msgid "line number %d out of range; `%s' has %d lines"
msgstr "numero riga %d non ammesso; `%s' ha %d righe"
-#: debug.c:602
+#: debug.c:611
#, c-format
msgid "unexpected eof while reading file `%s', line %d"
msgstr "fine-file inattesa durante lettura file `%s', riga %d"
-#: debug.c:611
+#: debug.c:620
#, c-format
msgid "source file `%s' modified since start of program execution"
msgstr "file sorgente `%s' modificato dopo l'inizio esecuzione del programma."
-#: debug.c:723
+#: debug.c:732
#, c-format
msgid "Current source file: %s\n"
msgstr "File sorgente corrente: %s\n"
-#: debug.c:724
+#: debug.c:733
#, c-format
msgid "Number of lines: %d\n"
msgstr "Numero di righe: %d\n"
-#: debug.c:731
+#: debug.c:740
#, c-format
msgid "Source file (lines): %s (%d)\n"
msgstr "File sorgente (righe): %s (%d)\n"
-#: debug.c:745
+#: debug.c:754
msgid ""
"Number Disp Enabled Location\n"
"\n"
@@ -1367,54 +1379,54 @@ msgstr ""
"Numero Disp Abilit. Posizione\n"
"\n"
-#: debug.c:756
+#: debug.c:765
#, c-format
msgid "\tno of hits = %ld\n"
msgstr "\tn. di occorrenze = %ld\n"
-#: debug.c:758
+#: debug.c:767
#, c-format
msgid "\tignore next %ld hit(s)\n"
msgstr "\tignora prossime %ld occorrenze\n"
-#: debug.c:760 debug.c:900
+#: debug.c:769 debug.c:909
#, c-format
msgid "\tstop condition: %s\n"
msgstr "\tcondizione per stop: %s\n"
-#: debug.c:762 debug.c:902
+#: debug.c:771 debug.c:911
msgid "\tcommands:\n"
msgstr "\tcomandi:\n"
-#: debug.c:784
+#: debug.c:793
#, c-format
msgid "Current frame: "
msgstr "Elemento corrente: "
-#: debug.c:787
+#: debug.c:796
#, c-format
msgid "Called by frame: "
msgstr "Chiamato da elemento: "
-#: debug.c:791
+#: debug.c:800
#, c-format
msgid "Caller of frame: "
msgstr "Chiamante di elemento: "
-#: debug.c:809
+#: debug.c:818
#, c-format
msgid "None in main().\n"
msgstr "Assente in main().\n"
-#: debug.c:839
+#: debug.c:848
msgid "No arguments.\n"
msgstr "Nessun argomento.\n"
-#: debug.c:840
+#: debug.c:849
msgid "No locals.\n"
msgstr "Nessun `locale'.\n"
-#: debug.c:848
+#: debug.c:857
msgid ""
"All defined variables:\n"
"\n"
@@ -1422,7 +1434,7 @@ msgstr ""
"Tutte le variabili definite:\n"
"\n"
-#: debug.c:858
+#: debug.c:867
msgid ""
"All defined functions:\n"
"\n"
@@ -1430,7 +1442,7 @@ msgstr ""
"Tutte le funzioni definite:\n"
"\n"
-#: debug.c:877
+#: debug.c:886
msgid ""
"Auto-display variables:\n"
"\n"
@@ -1438,7 +1450,7 @@ msgstr ""
"Auto-visualizzazione variabili:\n"
"\n"
-#: debug.c:880
+#: debug.c:889
msgid ""
"Watch variables:\n"
"\n"
@@ -1446,394 +1458,394 @@ msgstr ""
"Variabili Watch [da tenere sott'occhio]:\n"
"\n"
-#: debug.c:1020
+#: debug.c:1029
#, c-format
msgid "no symbol `%s' in current context\n"
msgstr "nessun simbolo `%s' nel contesto corrente\n"
-#: debug.c:1032 debug.c:1418
+#: debug.c:1041 debug.c:1427
#, c-format
msgid "`%s' is not an array\n"
msgstr "`%s' non è un vettore\n"
-#: debug.c:1046
+#: debug.c:1055
#, c-format
msgid "$%ld = uninitialized field\n"
msgstr "%ld = variabile non inizializzata\n"
-#: debug.c:1067
+#: debug.c:1076
#, c-format
msgid "array `%s' is empty\n"
msgstr "vettore `%s' vuoto\n"
-#: debug.c:1110 debug.c:1162
+#: debug.c:1119 debug.c:1171
#, c-format
msgid "[\"%s\"] not in array `%s'\n"
msgstr "[\"%s\"] non presente nel vettore `%s\n"
-#: debug.c:1166
+#: debug.c:1175
#, c-format
msgid "`%s[\"%s\"]' is not an array\n"
msgstr "`%s[\"%s\"]' non è un vettore\n"
-#: debug.c:1227 debug.c:4949
+#: debug.c:1236 debug.c:4964
#, c-format
msgid "`%s' is not a scalar variable"
msgstr "`%s' non è una variabile scalare"
-#: debug.c:1249 debug.c:4979
+#: debug.c:1258 debug.c:4994
#, c-format
msgid "attempt to use array `%s[\"%s\"]' in a scalar context"
msgstr "tentativo di usare vettore `%s[\"%s\"]' in un contesto scalare"
-#: debug.c:1271 debug.c:4990
+#: debug.c:1280 debug.c:5005
#, c-format
msgid "attempt to use scalar `%s[\"%s\"]' as array"
msgstr "tentativo di usare scalare `%s[\"%s\"]' come vettore"
-#: debug.c:1414
+#: debug.c:1423
#, c-format
msgid "`%s' is a function"
msgstr "`%s' è una funzione"
-#: debug.c:1456
+#: debug.c:1465
#, c-format
msgid "watchpoint %d is unconditional\n"
msgstr "watchpoint %d non soggetto a condizioni\n"
-#: debug.c:1490
+#: debug.c:1499
#, c-format
msgid "No display item numbered %ld"
msgstr "Nessun elemento numerato da visualizzare %ld"
-#: debug.c:1493
+#: debug.c:1502
#, c-format
msgid "No watch item numbered %ld"
msgstr "Nessun elemento numerato watch [da sorvegliare] da visualizzare %ld"
-#: debug.c:1519
+#: debug.c:1528
#, c-format
msgid "%d: [\"%s\"] not in array `%s'\n"
msgstr "%d: [\"%s\"] non presente nel vettore `%s'\n"
-#: debug.c:1758
+#: debug.c:1767
msgid "attempt to use scalar value as array"
msgstr "tentativo di usare valore scalare come vettore"
-#: debug.c:1847
+#: debug.c:1856
#, c-format
msgid "Watchpoint %d deleted because parameter is out of scope.\n"
msgstr "Watchpoint %d cancellato perché il parametro è fuori intervallo.\n"
-#: debug.c:1858
+#: debug.c:1867
#, c-format
msgid "Display %d deleted because parameter is out of scope.\n"
msgstr ""
"Visualizzazione %d cancellata perché il parametro è fuori intervallo.\n"
-#: debug.c:1891
+#: debug.c:1900
#, c-format
msgid " in file `%s', line %d\n"
msgstr " nel file `%s', riga %d\n"
-#: debug.c:1912
+#: debug.c:1921
#, c-format
msgid " at `%s':%d"
msgstr " a `%s':%d"
-#: debug.c:1928 debug.c:1991
+#: debug.c:1937 debug.c:2000
#, c-format
msgid "#%ld\tin "
msgstr "#%ld\tin "
-#: debug.c:1965
+#: debug.c:1974
#, c-format
msgid "More stack frames follow ...\n"
msgstr "Ulteriori elementi stack seguono...\n"
-#: debug.c:2008
+#: debug.c:2017
msgid "invalid frame number"
msgstr "numero elemento non valido"
-#: debug.c:2180
+#: debug.c:2200
#, c-format
msgid "Note: breakpoint %d (enabled, ignore next %ld hits), also set at %s:%d"
msgstr ""
"Nota: breakpoint %d (abilitato, ignora prossimi %ld passaggi), anche "
"impostato a %s:%d"
-#: debug.c:2187
+#: debug.c:2207
#, c-format
msgid "Note: breakpoint %d (enabled), also set at %s:%d"
msgstr "Nota: breakpoint %d (abilitato), anche impostato a %s:%d"
-#: debug.c:2194
+#: debug.c:2214
#, c-format
msgid "Note: breakpoint %d (disabled, ignore next %ld hits), also set at %s:%d"
msgstr ""
"Nota: breakpoint %d (disabilitato, ignora prossimi %ld passaggi), anche "
"impostato a %s:%d"
-#: debug.c:2201
+#: debug.c:2221
#, c-format
msgid "Note: breakpoint %d (disabled), also set at %s:%d"
msgstr "Nota: breakpoint %d (disabilitato), anche impostato a %s:%d"
-#: debug.c:2218
+#: debug.c:2238
#, c-format
msgid "Breakpoint %d set at file `%s', line %d\n"
msgstr "Breakpoint %d impostato al file `%s', riga %d\n"
-#: debug.c:2320
+#: debug.c:2340
#, c-format
msgid "Can't set breakpoint in file `%s'\n"
msgstr "Non riesco a impostare breakpoint nel file `%s'\n"
-#: debug.c:2349 debug.c:2472 debug.c:3330
+#: debug.c:2369 debug.c:2492 debug.c:3350
#, c-format
msgid "line number %d in file `%s' out of range"
msgstr "numero riga %d nel file `%s' fuori intervallo"
-#: debug.c:2353
+#: debug.c:2373
#, c-format
msgid "Can't find rule!!!\n"
msgstr "Non riesco a trovare la regola!!!\n"
-#: debug.c:2355
+#: debug.c:2375
#, c-format
msgid "Can't set breakpoint at `%s':%d\n"
msgstr "Non riesco a impostare breakpoint a `%s':%d\n"
-#: debug.c:2367
+#: debug.c:2387
#, c-format
msgid "Can't set breakpoint in function `%s'\n"
msgstr "Non riesco a impostare breakpoint nella funzione `%s'\n"
-#: debug.c:2383
+#: debug.c:2403
#, c-format
msgid "breakpoint %d set at file `%s', line %d is unconditional\n"
msgstr "breakpoint %d impostato al file `%s', riga %d è senza condizioni\n"
-#: debug.c:2488 debug.c:2510
+#: debug.c:2508 debug.c:2530
#, c-format
msgid "Deleted breakpoint %d"
msgstr "Cancellato breakpoint %d"
-#: debug.c:2494
+#: debug.c:2514
#, c-format
msgid "No breakpoint(s) at entry to function `%s'\n"
msgstr "No breakpoint all'entrata nella funzione `%s'\n"
-#: debug.c:2521
+#: debug.c:2541
#, c-format
msgid "No breakpoint at file `%s', line #%d\n"
msgstr "No breakpoint al file `%s', riga #%d\n"
-#: debug.c:2576 debug.c:2617 debug.c:2637 debug.c:2680
+#: debug.c:2596 debug.c:2637 debug.c:2657 debug.c:2700
msgid "invalid breakpoint number"
msgstr "numero breakpoint non valido"
-#: debug.c:2592
+#: debug.c:2612
msgid "Delete all breakpoints? (y or n) "
msgstr "Cancello tutti i breakpoint? (y oppure n) "
-#: debug.c:2593 debug.c:2903 debug.c:2956
+#: debug.c:2613 debug.c:2923 debug.c:2976
msgid "y"
msgstr "y"
-#: debug.c:2642
+#: debug.c:2662
#, c-format
msgid "Will ignore next %ld crossing(s) of breakpoint %d.\n"
msgstr "Prossimi %ld passaggi dal breakpoint %d ignorati.\n"
-#: debug.c:2646
+#: debug.c:2666
#, c-format
msgid "Will stop next time breakpoint %d is reached.\n"
msgstr "Farò uno stop al prossimo passaggio dal breakpoint %d.\n"
-#: debug.c:2763
+#: debug.c:2783
#, c-format
msgid "Can only debug programs provided with the `-f' option.\n"
msgstr "Debug possibile solo per programmi con opzione `-f' specificata.\n"
-#: debug.c:2888
+#: debug.c:2908
#, c-format
msgid "Failed to restart debugger"
msgstr "Non sono riuscito a far ripartire il debugger"
-#: debug.c:2902
+#: debug.c:2922
msgid "Program already running. Restart from beginning (y/n)? "
msgstr "Programma già in esecuzione. Lo faccio ripartire dall'inizio (y/n)? "
-#: debug.c:2906
+#: debug.c:2926
#, c-format
msgid "Program not restarted\n"
msgstr "Programma non fatto ripartire\n"
-#: debug.c:2916
+#: debug.c:2936
#, c-format
msgid "error: cannot restart, operation not allowed\n"
msgstr "errore: non riesco a far ripartire, operazione non consentita\n"
-#: debug.c:2922
+#: debug.c:2942
#, c-format
msgid "error (%s): cannot restart, ignoring rest of the commands\n"
msgstr "errore (%s): non riesco a far ripartire, ignoro i comandi rimanenti\n"
-#: debug.c:2930
+#: debug.c:2950
#, c-format
msgid "Starting program: \n"
msgstr "Partenza del programma: \n"
-#: debug.c:2939
+#: debug.c:2959
#, c-format
msgid "Program exited %s with exit value: %d\n"
msgstr "Programma %s eseguit, valore in uscita: %d\n"
-#: debug.c:2955
+#: debug.c:2975
msgid "The program is running. Exit anyway (y/n)? "
msgstr "Il programma è in esecuzione. Esco comunque (y/n)? "
-#: debug.c:2990
+#: debug.c:3010
#, c-format
msgid "Not stopped at any breakpoint; argument ignored.\n"
msgstr "Non interrotto ad alcun breakpoint: argomento ignorato.\n"
-#: debug.c:2995
+#: debug.c:3015
#, c-format
msgid "invalid breakpoint number %d."
msgstr "numero di breakpoint non valido %d."
-#: debug.c:3000
+#: debug.c:3020
#, c-format
msgid "Will ignore next %ld crossings of breakpoint %d.\n"
msgstr "Prossimi %ld passaggi dal breakpoint %d ignorati.\n"
-#: debug.c:3187
+#: debug.c:3207
#, c-format
msgid "'finish' not meaningful in the outermost frame main()\n"
msgstr "'finish' non significativo nell'elemento iniziale main()\n"
-#: debug.c:3192
+#: debug.c:3212
#, c-format
msgid "Run till return from "
msgstr "Esegui fino al ritorno da "
-#: debug.c:3235
+#: debug.c:3255
#, c-format
msgid "'return' not meaningful in the outermost frame main()\n"
msgstr "'return' non significativo nell'elemento iniziale main()\n"
-#: debug.c:3349
+#: debug.c:3369
#, c-format
msgid "Can't find specified location in function `%s'\n"
msgstr "Non trovo la posizione specificata nella funzione `%s'\n"
-#: debug.c:3357
+#: debug.c:3377
#, c-format
msgid "invalid source line %d in file `%s'"
msgstr "riga sorgente invalida %d nel file `%s'"
-#: debug.c:3372
+#: debug.c:3392
#, c-format
msgid "Can't find specified location %d in file `%s'\n"
msgstr "Non trovo posizione specificata %d nel file `%s'\n"
-#: debug.c:3404
+#: debug.c:3424
#, c-format
msgid "element not in array\n"
msgstr "elemento non presente nel vettore\n"
-#: debug.c:3404
+#: debug.c:3424
#, c-format
msgid "untyped variable\n"
msgstr "variabile di tipo sconosciuto\n"
-#: debug.c:3446
+#: debug.c:3466
#, c-format
msgid "Stopping in %s ...\n"
msgstr "Mi fermo in %s ...\n"
-#: debug.c:3523
+#: debug.c:3543
#, c-format
msgid "'finish' not meaningful with non-local jump '%s'\n"
msgstr "'finish' not significativo per salti non-locali '%s'\n"
-#: debug.c:3530
+#: debug.c:3550
#, c-format
msgid "'until' not meaningful with non-local jump '%s'\n"
msgstr "'until' not significativo per salti non-locali '%s'\n"
-#: debug.c:4165
+#: debug.c:4185
msgid "\t------[Enter] to continue or q [Enter] to quit------"
msgstr "\t------[Invio] per continuare o q [Invio] per uscire------"
-#: debug.c:4166
+#: debug.c:4186
msgid "q"
msgstr "q"
-#: debug.c:4986
+#: debug.c:5001
#, c-format
msgid "[\"%s\"] not in array `%s'"
msgstr "[\"%s\"] non presente nel vettore `%s'"
-#: debug.c:5192
+#: debug.c:5207
#, c-format
msgid "sending output to stdout\n"
msgstr "output inviato a stdout\n"
-#: debug.c:5232
+#: debug.c:5247
msgid "invalid number"
msgstr "numero non valido"
-#: debug.c:5366
+#: debug.c:5381
#, c-format
msgid "`%s' not allowed in current context; statement ignored"
msgstr "`%s' non consentito nel contesto corrente; istruzione ignorata"
-#: debug.c:5374
+#: debug.c:5389
msgid "`return' not allowed in current context; statement ignored"
msgstr "`return' non consentito nel contesto corrente; istruzione ignorata"
-#: debug.c:5575
+#: debug.c:5590
#, c-format
msgid "No symbol `%s' in current context"
msgstr "Simbolo `%s' non esiste nel contesto corrente"
-#: dfa.c:998 dfa.c:1001 dfa.c:1021 dfa.c:1031 dfa.c:1043 dfa.c:1094 dfa.c:1103
-#: dfa.c:1106 dfa.c:1111 dfa.c:1124 dfa.c:1192
+#: dfa.c:1118 dfa.c:1121 dfa.c:1142 dfa.c:1150 dfa.c:1162 dfa.c:1197
+#: dfa.c:1206 dfa.c:1209 dfa.c:1214 dfa.c:1228 dfa.c:1275
msgid "unbalanced ["
msgstr "[ non chiusa"
-#: dfa.c:1052
+#: dfa.c:1174
msgid "invalid character class"
msgstr "character class non valida"
-#: dfa.c:1229
+#: dfa.c:1316
msgid "character class syntax is [[:space:]], not [:space:]"
msgstr "sintassi character class è [[:spazio:]], non [:spazio:]"
-#: dfa.c:1281
+#: dfa.c:1366
msgid "unfinished \\ escape"
msgstr "sequenza escape \\ non completa"
-#: dfa.c:1428 regcomp.c:161
+#: dfa.c:1513 regcomp.c:161
msgid "Invalid content of \\{\\}"
msgstr "Contenuto di \\{\\} non valido"
-#: dfa.c:1431 regcomp.c:176
+#: dfa.c:1516 regcomp.c:176
msgid "Regular expression too big"
msgstr "Espressione regolare troppo complessa"
-#: dfa.c:1816
+#: dfa.c:1936
msgid "unbalanced ("
msgstr "( non chiusa"
-#: dfa.c:1943
+#: dfa.c:2062
msgid "no syntax specified"
msgstr "nessuna sintassi specificata"
-#: dfa.c:1951
+#: dfa.c:2070
msgid "unbalanced )"
msgstr ") non aperta"
@@ -1852,11 +1864,11 @@ msgstr "codice operativo sconosciuto %d"
msgid "opcode %s not an operator or keyword"
msgstr "codice operativo %s non è un operatore o una parola chiave"
-#: eval.c:471
+#: eval.c:472
msgid "buffer overflow in genflags2str"
msgstr "superamento limiti buffer in 'genflags2str'"
-#: eval.c:674
+#: eval.c:675
#, c-format
msgid ""
"\n"
@@ -1867,71 +1879,71 @@ msgstr ""
"\t# `Stack' (Pila) Chiamate Funzione:\n"
"\n"
-#: eval.c:703
+#: eval.c:704
msgid "`IGNORECASE' is a gawk extension"
msgstr "`IGNORECASE' è un'estensione gawk"
-#: eval.c:735
+#: eval.c:736
msgid "`BINMODE' is a gawk extension"
msgstr "`BINMODE' è un'estensione gawk"
-#: eval.c:793
+#: eval.c:794
#, c-format
msgid "BINMODE value `%s' is invalid, treated as 3"
msgstr "valore di BINMODE `%s' non valido, considerato come 3"
-#: eval.c:884
+#: eval.c:885
#, c-format
msgid "bad `%sFMT' specification `%s'"
msgstr "specificazione invalida `%sFMT' `%s'"
-#: eval.c:968
+#: eval.c:969
msgid "turning off `--lint' due to assignment to `LINT'"
msgstr "disabilito `--lint' a causa di assegnamento a `LINT'"
-#: eval.c:1146
+#: eval.c:1147
#, c-format
msgid "reference to uninitialized argument `%s'"
msgstr "riferimento ad argomento non inizializzato `%s'"
-#: eval.c:1147
+#: eval.c:1148
#, c-format
msgid "reference to uninitialized variable `%s'"
msgstr "riferimento a variabile non inizializzata `%s'"
-#: eval.c:1165
+#: eval.c:1166
msgid "attempt to field reference from non-numeric value"
msgstr "tentativo di riferimento a un campo da valore non-numerico"
-#: eval.c:1167
+#: eval.c:1168
msgid "attempt to field reference from null string"
msgstr "tentativo di riferimento a un campo da una stringa nulla"
-#: eval.c:1175
+#: eval.c:1176
#, c-format
msgid "attempt to access field %ld"
msgstr "tentativo di accedere al campo %ld"
-#: eval.c:1184
+#: eval.c:1185
#, c-format
msgid "reference to uninitialized field `$%ld'"
msgstr "riferimento a campo non inizializzato `$%ld'"
-#: eval.c:1271
+#: eval.c:1272
#, c-format
msgid "function `%s' called with more arguments than declared"
msgstr "funzione `%s' chiamata con più argomenti di quelli previsti"
-#: eval.c:1466
+#: eval.c:1473
#, c-format
msgid "unwind_stack: unexpected type `%s'"
msgstr "unwind_stack: tipo non previsto `%s'"
-#: eval.c:1562
+#: eval.c:1569
msgid "division by zero attempted in `/='"
msgstr "divisione per zero tentata in `/='"
-#: eval.c:1569
+#: eval.c:1576
#, c-format
msgid "division by zero attempted in `%%='"
msgstr "divisione per zero tentata in `%%='"
@@ -1944,7 +1956,7 @@ msgstr "le estensioni non sono consentite in modo `sandbox'"
msgid "-l / @load are gawk extensions"
msgstr "-l / @load sono estensioni gawk"
-#: ext.c:95 ext.c:177
+#: ext.c:95
msgid "load_ext: received NULL lib_name"
msgstr "load_ext: nome libreria ricevuto è NULL"
@@ -1975,6 +1987,10 @@ msgstr ""
msgid "`extension' is a gawk extension"
msgstr "`extension' è un'estensione gawk"
+#: ext.c:177
+msgid "extension: received NULL lib_name"
+msgstr "extension: nome libreria ricevuto è NULL"
+
#: ext.c:180
#, c-format
msgid "extension: cannot open library `%s' (%s)"
@@ -1996,37 +2012,37 @@ msgstr "extension: libreria `%s': non riesco a chiamare funzione `%s' (%s)"
msgid "make_builtin: missing function name"
msgstr "make_builtin: manca nome di funzione"
-#: ext.c:238
+#: ext.c:236
#, c-format
msgid "make_builtin: can't redefine function `%s'"
msgstr "make_builtin: non riesco a ridefinire funzione `%s'"
-#: ext.c:242
+#: ext.c:240
#, c-format
msgid "make_builtin: function `%s' already defined"
msgstr "make_builtin: funzione `%s' già definita"
-#: ext.c:246
+#: ext.c:244
#, c-format
msgid "make_builtin: function name `%s' previously defined"
msgstr "make_builtin: funzione di nome `%s' definita in precedenza"
-#: ext.c:248
+#: ext.c:246
#, c-format
msgid "make_builtin: can't use gawk built-in `%s' as function name"
msgstr ""
"make_builtin: nome funzione interna gawk `%s' non ammesso come nome funzione"
-#: ext.c:251 ext.c:304
+#: ext.c:249 ext.c:304
#, c-format
msgid "make_builtin: negative argument count for function `%s'"
msgstr "make_builtin: contatore argomenti negativo per la funzione `%s'"
-#: ext.c:278
+#: ext.c:276
msgid "extension: missing function name"
msgstr "extension: manca nome di funzione"
-#: ext.c:283
+#: ext.c:279 ext.c:283
#, c-format
msgid "extension: illegal character `%c' in function name `%s'"
msgstr "extension: carattere non ammesso `%c' nel nome di funzione `%s'"
@@ -2052,139 +2068,143 @@ msgid "extension: can't use gawk built-in `%s' as function name"
msgstr ""
"extension: nome funzione interna gawk `%s' non ammesso come nome funzione"
-#: ext.c:374
+#: ext.c:375
#, 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:377
+#: ext.c:378
#, c-format
msgid "function `%s': missing argument #%d"
msgstr "funzione `%s': manca argomento #%d"
-#: ext.c:394
+#: ext.c:395
#, 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:398
+#: ext.c:399
#, 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:412
+#: ext.c:413
msgid "dynamic loading of library not supported"
msgstr "caricamento dinamico di libreria non supportato"
-#: extension/filefuncs.c:97
+#: extension/filefuncs.c:159
msgid "chdir: called with incorrect number of arguments, expecting 1"
msgstr "chdir: chiamata con numero di argomenti errato, 1 previsto"
-#: extension/filefuncs.c:343
+#: extension/filefuncs.c:439
#, c-format
msgid "stat: unable to read symbolic link `%s'"
msgstr "stat: non riesco a leggere il link simbolico `%s'"
-#: extension/filefuncs.c:376
+#: extension/filefuncs.c:472
msgid "stat: called with wrong number of arguments"
msgstr "stat: chiamata con numero di argomenti errato"
-#: extension/filefuncs.c:383
+#: extension/filefuncs.c:479
msgid "stat: bad parameters"
msgstr "stat: parametri errati"
-#: extension/filefuncs.c:437
+#: extension/filefuncs.c:533
#, c-format
msgid "fts init: could not create variable %s"
msgstr "ftp init: non riesco a creare variabile %s"
-#: extension/filefuncs.c:460
+#: extension/filefuncs.c:554
+msgid "fts is not supported on this system"
+msgstr "fts non disponibile su questo sistema"
+
+#: extension/filefuncs.c:573
msgid "fill_stat_element: could not create array"
msgstr "fill_stat_element: non riesco a creare vettore"
-#: extension/filefuncs.c:469
+#: extension/filefuncs.c:582
msgid "fill_stat_element: could not set element"
msgstr "fill_stat_element: non riesco a impostare elemento"
-#: extension/filefuncs.c:484
+#: extension/filefuncs.c:597
msgid "fill_path_element: could not set element"
msgstr "fill_path_element: non riesco a impostare elemento"
-#: extension/filefuncs.c:500
+#: extension/filefuncs.c:613
msgid "fill_error_element: could not set element"
msgstr "fill_error_element: non riesco a impostare elemento"
-#: extension/filefuncs.c:547 extension/filefuncs.c:594
+#: extension/filefuncs.c:660 extension/filefuncs.c:707
msgid "fts-process: could not create array"
msgstr "fts-process: non riesco a creare vettore"
-#: extension/filefuncs.c:557 extension/filefuncs.c:604
-#: extension/filefuncs.c:622
+#: extension/filefuncs.c:670 extension/filefuncs.c:717
+#: extension/filefuncs.c:735
msgid "fts-process: could not set element"
msgstr "fts-process: non riesco a impostare elemento"
-#: extension/filefuncs.c:671
+#: extension/filefuncs.c:784
msgid "fts: called with incorrect number of arguments, expecting 3"
msgstr "fts: chiamata con numero di argomenti errato, 3 previsti"
-#: extension/filefuncs.c:674
+#: extension/filefuncs.c:787
msgid "fts: bad first parameter"
msgstr "fts: primo parametro errato"
-#: extension/filefuncs.c:680
+#: extension/filefuncs.c:793
msgid "fts: bad second parameter"
msgstr "fts: secondo parametro errato"
-#: extension/filefuncs.c:686
+#: extension/filefuncs.c:799
msgid "fts: bad third parameter"
msgstr "fts: terzo parametro errato"
-#: extension/filefuncs.c:693
+#: extension/filefuncs.c:806
msgid "fts: could not flatten array\n"
msgstr "fts: non sono riuscito a appiattire un vettore\n"
-#: extension/filefuncs.c:711
+#: extension/filefuncs.c:824
msgid "fts: ignoring sneaky FTS_NOSTAT flag. nyah, nyah, nyah."
msgstr "fts: ignoro flag infido FTS_NOSTAT. nooo, nooo, nooo."
-#: extension/filefuncs.c:728
+#: extension/filefuncs.c:841
msgid "fts: clear_array() failed\n"
msgstr "fts: clear_array() non riuscita\n"
-#: extension/fnmatch.c:98
+#: extension/fnmatch.c:112
msgid "fnmatch: called with less than three arguments"
msgstr "fnmatch: chiamata con meno di tre argomenti"
-#: extension/fnmatch.c:101
+#: extension/fnmatch.c:115
msgid "fnmatch: called with more than three arguments"
msgstr "fnmatch: chiamata con più di tre argomenti"
-#: extension/fnmatch.c:104
+#: extension/fnmatch.c:118
msgid "fnmatch: could not get first argument"
msgstr "fnmatch: primo argomento non disponibile"
-#: extension/fnmatch.c:109
+#: extension/fnmatch.c:123
msgid "fnmatch: could not get second argument"
msgstr "fnmatch: secondo argomento non disponibile"
-#: extension/fnmatch.c:114
+#: extension/fnmatch.c:128
msgid "fnmatch: could not get third argument"
msgstr "fnmatch: terzo argomento non disponibile"
-#: extension/fnmatch.c:127
+#: extension/fnmatch.c:141
msgid "fnmatch is not implemented on this system\n"
msgstr "fnmatch non disponibile su questo sistema\n"
-#: extension/fnmatch.c:159
+#: extension/fnmatch.c:173
msgid "fnmatch init: could not add FNM_NOMATCH variable"
msgstr "fnmatch init: non riesco ad aggiungere variabile FNM_NOMATCH"
-#: extension/fnmatch.c:169
+#: extension/fnmatch.c:183
#, c-format
msgid "fnmatch init: could not set array element %s"
msgstr "fnmatch init: non riesco a impostare elemento vettoriale %s"
-#: extension/fnmatch.c:179
+#: extension/fnmatch.c:193
msgid "fnmatch init: could not install FNM array"
msgstr "fnmatch init: non riesco a installare vettore FNM"
@@ -2208,91 +2228,91 @@ msgstr "wait: chiamata senza argomenti"
msgid "wait: called with too many arguments"
msgstr "wait: chiamata con troppi argomenti"
-#: extension/inplace.c:110
+#: extension/inplace.c:130
msgid "inplace_begin: in-place editing already active"
msgstr "inplace_begin: modifica in-place già attiva"
-#: extension/inplace.c:113 extension/inplace.c:187
+#: extension/inplace.c:133 extension/inplace.c:207
#, c-format
msgid "inplace_begin: expects 2 arguments but called with %d"
msgstr "inplace_begin: 2 argumenti richiesti, ma chiamata con %d"
-#: extension/inplace.c:116
+#: extension/inplace.c:136
msgid "inplace_begin: cannot retrieve 1st argument as a string filename"
msgstr ""
"inplace_begin: non riesco a trovare il 1° argomento come stringa nome-file"
-#: extension/inplace.c:124
+#: extension/inplace.c:144
#, c-format
msgid "inplace_begin: disabling in-place editing for invalid FILENAME `%s'"
msgstr ""
"inplace_begin: modifica in-place disabilitato, FILENAME non valido `%s'"
-#: extension/inplace.c:131
+#: extension/inplace.c:151
#, c-format
msgid "inplace_begin: Cannot stat `%s' (%s)"
msgstr "inplace_begin: Non riesco a trovare `%s' (%s)"
-#: extension/inplace.c:138
+#: extension/inplace.c:158
#, c-format
msgid "inplace_begin: `%s' is not a regular file"
msgstr "inplace_begin: `%s' non è un file regolare"
-#: extension/inplace.c:149
+#: extension/inplace.c:169
#, c-format
msgid "inplace_begin: mkstemp(`%s') failed (%s)"
msgstr "inplace_begin: mkstemp(`%s') non riuscita (%s)"
-#: extension/inplace.c:158
+#: extension/inplace.c:178
#, c-format
msgid "inplace_begin: chmod failed (%s)"
msgstr "inplace_begin: chmod non riuscita (%s)"
-#: extension/inplace.c:165
+#: extension/inplace.c:185
#, c-format
msgid "inplace_begin: dup(stdout) failed (%s)"
msgstr "inplace_begin: dup(stdout) non riuscita (%s)"
-#: extension/inplace.c:168
+#: extension/inplace.c:188
#, c-format
msgid "inplace_begin: dup2(%d, stdout) failed (%s)"
msgstr "inplace_begin: dup2(%d, stdout) non riuscita (%s)"
-#: extension/inplace.c:171
+#: extension/inplace.c:191
#, c-format
msgid "inplace_begin: close(%d) failed (%s)"
msgstr "inplace_begin: close(%d) non riuscita (%s)"
-#: extension/inplace.c:190
+#: extension/inplace.c:210
msgid "inplace_end: cannot retrieve 1st argument as a string filename"
msgstr ""
"inplace_end: non riesco a trovare il 1° argomento come stringa nome-file"
-#: extension/inplace.c:197
+#: extension/inplace.c:217
msgid "inplace_end: in-place editing not active"
msgstr "inplace_end: modifica in-place non attiva"
-#: extension/inplace.c:203
+#: extension/inplace.c:223
#, c-format
msgid "inplace_end: dup2(%d, stdout) failed (%s)"
msgstr "inplace_end: dup2(%d, stdout) non riuscita (%s)"
-#: extension/inplace.c:206
+#: extension/inplace.c:226
#, c-format
msgid "inplace_end: close(%d) failed (%s)"
msgstr "inplace_end: close(%d) non riuscita (%s)"
-#: extension/inplace.c:210
+#: extension/inplace.c:230
#, c-format
msgid "inplace_end: fsetpos(stdout) failed (%s)"
msgstr "inplace_end: fsetpos(stdout) non riuscita (%s)"
-#: extension/inplace.c:223
+#: extension/inplace.c:243
#, c-format
msgid "inplace_end: link(`%s', `%s') failed (%s)"
msgstr "inplace_end: link(`%s', `%s') non riuscita (%s)"
-#: extension/inplace.c:229
+#: extension/inplace.c:253
#, c-format
msgid "inplace_end: rename(`%s', `%s') failed (%s)"
msgstr "inplace_end: rename(`%s', `%s') non riuscito (%s)"
@@ -2321,175 +2341,175 @@ msgstr "chr: chiamata senza argomenti"
msgid "chr: called with inappropriate argument(s)"
msgstr "chr: chiamata con argomento/i non corretto/i"
-#: extension/readdir.c:203
+#: extension/readdir.c:281
#, c-format
msgid "dir_take_control_of: opendir/fdopendir failed: %s"
msgstr "dir_take_control_of: opendir/fdopendir non riuscita: %s"
-#: extension/readfile.c:84
+#: extension/readfile.c:113
msgid "readfile: called with too many arguments"
msgstr "readfile: chiamata con troppi argomenti"
-#: extension/readfile.c:118
+#: extension/readfile.c:137
msgid "readfile: called with no arguments"
msgstr "readfile: chiamata senza argomenti"
-#: extension/rwarray.c:120
+#: extension/rwarray.c:124
msgid "writea: called with too many arguments"
msgstr "writea: chiamata con troppi argomenti"
-#: extension/rwarray.c:127
+#: extension/rwarray.c:131
#, c-format
msgid "do_writea: argument 0 is not a string\n"
msgstr "do_writea: argomento 0 non è una stringa\n"
-#: extension/rwarray.c:133
+#: extension/rwarray.c:137
#, c-format
msgid "do_writea: argument 1 is not an array\n"
msgstr "do_writea: argomento 1 non-vettoriale\n"
-#: extension/rwarray.c:180
+#: extension/rwarray.c:184
#, c-format
msgid "write_array: could not flatten array\n"
msgstr "write_array: non sono riuscito a appiattire un vettore\n"
-#: extension/rwarray.c:194
+#: extension/rwarray.c:198
#, c-format
msgid "write_array: could not release flattened array\n"
msgstr "write_array: non sono riuscito a rilasciare un vettore appiattito\n"
-#: extension/rwarray.c:276
+#: extension/rwarray.c:280
msgid "reada: called with too many arguments"
msgstr "reada: chiamata con troppi argomenti"
-#: extension/rwarray.c:283
+#: extension/rwarray.c:287
#, c-format
msgid "do_reada: argument 0 is not a string\n"
msgstr "do_reada: argomento 0 non è una stringa\n"
-#: extension/rwarray.c:289
+#: extension/rwarray.c:293
#, c-format
msgid "do_reada: argument 1 is not an array\n"
msgstr "do_reada: argomento 1 non-vettoriale\n"
-#: extension/rwarray.c:333
+#: extension/rwarray.c:337
#, c-format
msgid "do_reada: clear_array failed\n"
msgstr "do_reada: clear_array non riuscita\n"
-#: extension/rwarray.c:370
+#: extension/rwarray.c:374
#, c-format
msgid "read_array: set_array_element failed\n"
msgstr "read_array: set_array_element non riuscita\n"
-#: extension/time.c:81
+#: extension/time.c:113
msgid "gettimeofday: ignoring arguments"
msgstr "gettimeofday: ignoro argomenti"
-#: extension/time.c:112
+#: extension/time.c:144
msgid "gettimeofday: not supported on this platform"
msgstr "gettimeofday: non supportato in questa architettura"
-#: extension/time.c:133
+#: extension/time.c:165
msgid "sleep: called with too many arguments"
msgstr "sleep: chiamata con troppi argomenti"
-#: extension/time.c:136
+#: extension/time.c:168
msgid "sleep: missing required numeric argument"
msgstr "sleep: manca necessario argomento numerico"
-#: extension/time.c:142
+#: extension/time.c:174
msgid "sleep: argument is negative"
msgstr "sleep: l'argomento è negativo"
-#: extension/time.c:176
+#: extension/time.c:208
msgid "sleep: not supported on this platform"
msgstr "sleep: non supportato in questa architettura"
-#: field.c:339
+#: field.c:345
msgid "NF set to negative value"
msgstr "NF impostato a un valore negativo"
-#: field.c:964 field.c:971 field.c:975
+#: field.c:971 field.c:978 field.c:982
msgid "split: fourth argument is a gawk extension"
msgstr "split: il quarto argomento è un'estensione gawk"
-#: field.c:968
+#: field.c:975
msgid "split: fourth argument is not an array"
msgstr "split: quarto argomento non-vettoriale"
-#: field.c:982
+#: field.c:989
msgid "split: second argument is not an array"
msgstr "split: secondo argomento non-vettoriale"
-#: field.c:986
+#: field.c:993
msgid "split: cannot use the same array for second and fourth args"
msgstr ""
"split: non si può usare un unico vettore come secondo e quarto argomento"
-#: field.c:991
+#: field.c:998
msgid "split: cannot use a subarray of second arg for fourth arg"
msgstr ""
"split: non consentito un quarto argomento che sia un sottovettore del "
"secondo argomento"
-#: field.c:994
+#: field.c:1001
msgid "split: cannot use a subarray of fourth arg for second arg"
msgstr ""
"split: non consentito un secondo argomento che sia un sottovettore del "
"quarto argomento"
-#: field.c:1023
+#: field.c:1032
msgid "split: null string for third arg is a gawk extension"
msgstr "split: la stringa nulla come terzo arg. è un'estensione gawk"
-#: field.c:1063
+#: field.c:1072
msgid "patsplit: fourth argument is not an array"
msgstr "patsplit: secondo argomento non-vettoriale"
-#: field.c:1068
+#: field.c:1077
msgid "patsplit: second argument is not an array"
msgstr "patsplit: secondo argomento non-vettoriale"
-#: field.c:1074
+#: field.c:1083
msgid "patsplit: third argument must be non-null"
msgstr "patsplit: il terzo argomento non può essere nullo"
-#: field.c:1078
+#: field.c:1087
msgid "patsplit: cannot use the same array for second and fourth args"
msgstr ""
"patsplit: non si può usare un unico vettore come secondo e quarto argomento"
-#: field.c:1083
+#: field.c:1092
msgid "patsplit: cannot use a subarray of second arg for fourth arg"
msgstr ""
"patsplit: non consentito un quarto argomento che sia un sottovettore del "
"secondo argomento"
-#: field.c:1086
+#: field.c:1095
msgid "patsplit: cannot use a subarray of fourth arg for second arg"
msgstr ""
"patsplit: non consentito un secondo argomento che sia un sottovettore del "
"quarto argomento"
-#: field.c:1124
+#: field.c:1133
msgid "`FIELDWIDTHS' is a gawk extension"
msgstr "`FIELDWIDTHS' è un'estensione gawk"
-#: field.c:1188
+#: field.c:1197
#, c-format
msgid "invalid FIELDWIDTHS value, near `%s'"
msgstr "valore di FIELDWIDTHS non valido, vicino a `%s'"
-#: field.c:1261
+#: field.c:1270
msgid "null string for `FS' is a gawk extension"
msgstr "la stringa nulla usata come `FS' è un'estensione gawk"
-#: field.c:1265
+#: field.c:1274
msgid "old awk does not support regexps as value of `FS'"
msgstr "il vecchio awk non supporta espressioni come valori di `FS'"
-#: field.c:1384
+#: field.c:1393
msgid "`FPAT' is a gawk extension"
msgstr "`FPAT' è un'estensione gawk"
@@ -2505,366 +2525,366 @@ msgstr "node_to_awk_value: ricevuto nodo nullo"
msgid "node_to_awk_value: received null val"
msgstr "node_to_awk_value: ricevuto valore nullo"
-#: gawkapi.c:808
+#: gawkapi.c:807
msgid "remove_element: received null array"
msgstr "remove_element: ricevuto vettore nullo"
-#: gawkapi.c:811
+#: gawkapi.c:810
msgid "remove_element: received null subscript"
msgstr "remove_element: ricevuto indice nullo"
-#: gawkapi.c:943
+#: gawkapi.c:947
#, c-format
msgid "api_flatten_array: could not convert index %d\n"
msgstr "api_flatten_array: non sono riuscito a convertire l'indice %d\n"
-#: gawkapi.c:948
+#: gawkapi.c:952
#, c-format
msgid "api_flatten_array: could not convert value %d\n"
msgstr "api_flatten_array: non sono riuscito a convertire il valore %d\n"
-#: getopt.c:603 getopt.c:632
+#: getopt.c:604 getopt.c:633
#, c-format
msgid "%s: option '%s' is ambiguous; possibilities:"
msgstr "%s: opzione '%s' ambigua; possibilità:"
-#: getopt.c:678 getopt.c:682
+#: getopt.c:679 getopt.c:683
#, c-format
msgid "%s: option '--%s' doesn't allow an argument\n"
msgstr "%s: l'opzione '--%s' non ammette un argomento\n"
-#: getopt.c:691 getopt.c:696
+#: getopt.c:692 getopt.c:697
#, c-format
msgid "%s: option '%c%s' doesn't allow an argument\n"
msgstr "%s: l'opzione '%c%s' non ammette un argomento\n"
-#: getopt.c:739 getopt.c:758
+#: getopt.c:740 getopt.c:759
#, c-format
msgid "%s: option '--%s' requires an argument\n"
msgstr "%s: l'opzione '--%s' richiede un argomento\n"
-#: getopt.c:796 getopt.c:799
+#: getopt.c:797 getopt.c:800
#, c-format
msgid "%s: unrecognized option '--%s'\n"
msgstr "%s: opzione sconosciuta '--%s'\n"
-#: getopt.c:807 getopt.c:810
+#: getopt.c:808 getopt.c:811
#, c-format
msgid "%s: unrecognized option '%c%s'\n"
msgstr "%s: opzione sconosciuta '%c%s'\n"
-#: getopt.c:859 getopt.c:862
+#: getopt.c:860 getopt.c:863
#, c-format
msgid "%s: invalid option -- '%c'\n"
msgstr "%s: opzione non valida -- '%c'\n"
-#: getopt.c:915 getopt.c:932 getopt.c:1142 getopt.c:1160
+#: getopt.c:916 getopt.c:933 getopt.c:1143 getopt.c:1161
#, c-format
msgid "%s: option requires an argument -- '%c'\n"
msgstr "%s: l'opzione richiede un argomento -- '%c'\n"
-#: getopt.c:988 getopt.c:1004
+#: getopt.c:989 getopt.c:1005
#, c-format
msgid "%s: option '-W %s' is ambiguous\n"
msgstr "%s: l'opzione '-W %s' è ambigua\n"
-#: getopt.c:1028 getopt.c:1046
+#: getopt.c:1029 getopt.c:1047
#, c-format
msgid "%s: option '-W %s' doesn't allow an argument\n"
msgstr "%s: l'opzione '-W %s' non ammette un argomento\n"
-#: getopt.c:1067 getopt.c:1085
+#: getopt.c:1068 getopt.c:1086
#, c-format
msgid "%s: option '-W %s' requires an argument\n"
msgstr "%s: l'opzione '-W %s' richiede un argomento\n"
-#: io.c:347
+#: io.c:392
#, c-format
msgid "command line argument `%s' is a directory: skipped"
msgstr "l'argomento in linea comando `%s' è una directory: saltato"
-#: io.c:350 io.c:463
+#: io.c:395 io.c:513
#, c-format
msgid "cannot open file `%s' for reading (%s)"
msgstr "non riesco ad aprire file `%s' in lettura (%s)"
-#: io.c:590
+#: io.c:640
#, c-format
msgid "close of fd %d (`%s') failed (%s)"
msgstr "chiusura di fd %d (`%s') non riuscita (%s)"
-#: io.c:666
+#: io.c:716
msgid "redirection not allowed in sandbox mode"
msgstr "re-direzione non consentita in modo `sandbox'"
-#: io.c:700
+#: io.c:750
#, c-format
msgid "expression in `%s' redirection only has numeric value"
msgstr "espressione nella re-direzione `%s' ha solo un valore numerico"
-#: io.c:706
+#: io.c:756
#, c-format
msgid "expression for `%s' redirection has null string value"
msgstr "espressione nella re-direzione `%s' ha per valore la stringa nulla"
-#: io.c:711
+#: io.c:761
#, c-format
msgid "filename `%s' for `%s' redirection may be result of logical expression"
msgstr ""
"nome-file `%s' per la re-direzione `%s' può essere il risultato di una "
"espressione logica"
-#: io.c:754
+#: io.c:809
#, c-format
msgid "unnecessary mixing of `>' and `>>' for file `%.*s'"
msgstr "mistura non necessaria di `>' e `>>' per il file `%.*s'"
-#: io.c:808
+#: io.c:863
#, c-format
msgid "can't open pipe `%s' for output (%s)"
msgstr "non riesco ad aprire `pipe' `%s' in scrittura (%s)"
-#: io.c:818
+#: io.c:873
#, c-format
msgid "can't open pipe `%s' for input (%s)"
msgstr "non riesco ad aprire `pipe' `%s' in lettura (%s)"
-#: io.c:849
+#: io.c:904
#, c-format
msgid "can't open two way pipe `%s' for input/output (%s)"
msgstr ""
"non riesco ad aprire `pipe' bidirezionale `%s' in lettura/scrittura (%s)"
-#: io.c:928
+#: io.c:986
#, c-format
msgid "can't redirect from `%s' (%s)"
msgstr "non riesco a re-dirigere da `%s' (%s)"
-#: io.c:931
+#: io.c:989
#, c-format
msgid "can't redirect to `%s' (%s)"
msgstr "non riesco a re-dirigere a `%s' (%s)"
-#: io.c:982
+#: io.c:1040
msgid ""
"reached system limit for open files: starting to multiplex file descriptors"
msgstr ""
"numero massimo consentito di file aperti raggiunto: comincio a riutilizzare "
"i descrittori di file"
-#: io.c:998
+#: io.c:1056
#, c-format
msgid "close of `%s' failed (%s)."
msgstr "chiusura di `%s' non riuscita (%s)."
-#: io.c:1006
+#: io.c:1064
msgid "too many pipes or input files open"
msgstr "troppe `pipe' o file di input aperti"
-#: io.c:1028
+#: io.c:1086
msgid "close: second argument must be `to' or `from'"
msgstr "close: il secondo argomento deve essere `a' o `da'"
-#: io.c:1045
+#: io.c:1103
#, c-format
msgid "close: `%.*s' is not an open file, pipe or co-process"
msgstr "close: `%.*s' non è un file aperto, una `pipe' o un co-processo"
-#: io.c:1050
+#: io.c:1108
msgid "close of redirection that was never opened"
msgstr "chiusura di una re-direzione mai aperta"
-#: io.c:1147
+#: io.c:1205
#, c-format
msgid "close: redirection `%s' not opened with `|&', second argument ignored"
msgstr "close: re-direzione `%s' non aperta con `|&', ignoro secondo argomento"
-#: io.c:1164
+#: io.c:1222
#, c-format
msgid "failure status (%d) on pipe close of `%s' (%s)"
msgstr "errore ritornato (%d) dalla chiusura della `pipe' `%s' (%s)"
-#: io.c:1167
+#: io.c:1225
#, c-format
msgid "failure status (%d) on file close of `%s' (%s)"
msgstr "errore ritornato (%d) dalla chiusura del file `%s' (%s)"
-#: io.c:1187
+#: io.c:1245
#, c-format
msgid "no explicit close of socket `%s' provided"
msgstr "nessuna chiusura esplicita richiesta per `socket' `%s'"
-#: io.c:1190
+#: io.c:1248
#, c-format
msgid "no explicit close of co-process `%s' provided"
msgstr "nessuna chiusura esplicita richiesta per co-processo `%s'"
-#: io.c:1193
+#: io.c:1251
#, c-format
msgid "no explicit close of pipe `%s' provided"
msgstr "nessuna chiusura esplicita richiesta per `pipe' `%s'"
-#: io.c:1196
+#: io.c:1254
#, c-format
msgid "no explicit close of file `%s' provided"
msgstr "nessuna chiusura esplicita richiesta per file `%s'"
-#: io.c:1224 io.c:1279 main.c:842 main.c:879
+#: io.c:1284 io.c:1342 main.c:864 main.c:906
#, c-format
msgid "error writing standard output (%s)"
msgstr "errore scrivendo 'standard output' (%s)"
-#: io.c:1228 io.c:1284
+#: io.c:1289 io.c:1348 main.c:866
#, c-format
msgid "error writing standard error (%s)"
msgstr "errore scrivendo 'standard error' (%s)"
-#: io.c:1236
+#: io.c:1297
#, c-format
msgid "pipe flush of `%s' failed (%s)."
msgstr "scaricamento di `pipe' `%s' non riuscito (%s)."
-#: io.c:1239
+#: io.c:1300
#, c-format
msgid "co-process flush of pipe to `%s' failed (%s)."
msgstr "scaricamento da co-processo di `pipe' a `%s' non riuscito (%s)."
-#: io.c:1242
+#: io.c:1303
#, c-format
msgid "file flush of `%s' failed (%s)."
msgstr "scaricamento di file `%s' non riuscito (%s)."
-#: io.c:1356
+#: io.c:1420
#, c-format
msgid "local port %s invalid in `/inet'"
msgstr "porta locale %s invalida in `/inet'"
-#: io.c:1374
+#: io.c:1438
#, c-format
msgid "remote host and port information (%s, %s) invalid"
msgstr "host remoto e informazione di porta (%s, %s) invalidi"
-#: io.c:1526
+#: io.c:1590
#, c-format
msgid "no (known) protocol supplied in special filename `%s'"
msgstr "nessuno protocollo (noto) specificato nel filename speciale `%s'"
-#: io.c:1540
+#: io.c:1604
#, c-format
msgid "special file name `%s' is incomplete"
msgstr "nome-file speciale `%s' incompleto"
-#: io.c:1557
+#: io.c:1621
msgid "must supply a remote hostname to `/inet'"
msgstr "va fornito nome di `host' remoto a `/inet'"
-#: io.c:1575
+#: io.c:1639
msgid "must supply a remote port to `/inet'"
msgstr "va fornita porta remota a `/inet'"
-#: io.c:1621
+#: io.c:1685
msgid "TCP/IP communications are not supported"
msgstr "comunicazioni TCP/IP non supportate"
-#: io.c:1796
+#: io.c:1867
#, c-format
msgid "could not open `%s', mode `%s'"
msgstr "non riesco ad aprire `%s', modo `%s'"
-#: io.c:1846
+#: io.c:1917
#, c-format
msgid "close of master pty failed (%s)"
msgstr "close di `pty' principale non riuscita (%s)"
-#: io.c:1848 io.c:2024 io.c:2194
+#: io.c:1919 io.c:2105 io.c:2305
#, c-format
msgid "close of stdout in child failed (%s)"
msgstr "close di `stdout' nel processo-figlio non riuscita (%s)"
-#: io.c:1851
+#: io.c:1922
#, c-format
msgid "moving slave pty to stdout in child failed (dup: %s)"
msgstr ""
"trasferimento di `pty' secondaria a `stdout' nel processo-figlio non "
"riuscita (dup: %s)"
-#: io.c:1853 io.c:2029
+#: io.c:1924 io.c:2110
#, c-format
msgid "close of stdin in child failed (%s)"
msgstr "close di `stdin' nel processo-figlio non riuscita (%s)"
-#: io.c:1856
+#: io.c:1927
#, c-format
msgid "moving slave pty to stdin in child failed (dup: %s)"
msgstr ""
"trasferimento di 'pty' secondaria a 'stdin' nel processo-figlio non riuscito "
"(dup: %s)"
-#: io.c:1858 io.c:1879
+#: io.c:1929 io.c:1951
#, c-format
msgid "close of slave pty failed (%s)"
msgstr "close di 'pty' secondaria non riuscita (%s)"
-#: io.c:1965 io.c:2027 io.c:2171 io.c:2197
+#: io.c:2040 io.c:2108 io.c:2276 io.c:2308
#, c-format
msgid "moving pipe to stdout in child failed (dup: %s)"
msgstr ""
"passaggio di `pipe' a `stdout' nel processo-figlio non riuscito (dup: %s)"
-#: io.c:1972 io.c:2032
+#: io.c:2047 io.c:2113
#, c-format
msgid "moving pipe to stdin in child failed (dup: %s)"
msgstr ""
"passaggio di pipe a `stdin' nel processo-figlio non riuscito (dup: %s)"
-#: io.c:1992 io.c:2187
+#: io.c:2073 io.c:2298
msgid "restoring stdout in parent process failed\n"
msgstr "ripristino di `stdout' nel processo-padre non riuscito\n"
-#: io.c:2000
+#: io.c:2081
msgid "restoring stdin in parent process failed\n"
msgstr "ripristino di `stdin' nel processo-padre non riuscito\n"
-#: io.c:2035 io.c:2199 io.c:2213
+#: io.c:2116 io.c:2310 io.c:2324
#, c-format
msgid "close of pipe failed (%s)"
msgstr "close di 'pipe' non riuscita (%s)"
-#: io.c:2089
+#: io.c:2174
msgid "`|&' not supported"
msgstr "`|&' non supportato"
-#: io.c:2156
+#: io.c:2261
#, c-format
msgid "cannot open pipe `%s' (%s)"
msgstr "non riesco ad aprire `pipe' `%s' (%s)"
-#: io.c:2207
+#: io.c:2318
#, c-format
msgid "cannot create child process for `%s' (fork: %s)"
msgstr "non riesco a creare processo-figlio per `%s' (fork: %s)"
-#: io.c:2667
+#: io.c:2790
msgid "register_input_parser: received NULL pointer"
msgstr "register_input_parser: ricevuto puntatore NULL"
-#: io.c:2695
+#: io.c:2818
#, c-format
msgid "input parser `%s' conflicts with previously installed input parser `%s'"
msgstr ""
"input parser `%s' in conflitto con l'input parser `%s' installato in "
"precedenza"
-#: io.c:2702
+#: io.c:2825
#, c-format
msgid "input parser `%s' failed to open `%s'"
msgstr "l'input parser `%s' non è riuscito ad aprire `%s'"
-#: io.c:2722
+#: io.c:2845
msgid "register_output_wrapper: received NULL pointer"
msgstr "register_output_wrapper: ricevuto puntatore NULL"
-#: io.c:2750
+#: io.c:2873
#, c-format
msgid ""
"output wrapper `%s' conflicts with previously installed output wrapper `%s'"
@@ -2872,16 +2892,16 @@ msgstr ""
"output wrapper `%s' in conflitto con l'output wrapper `%s' installato in "
"precedenza"
-#: io.c:2757
+#: io.c:2880
#, c-format
msgid "output wrapper `%s' failed to open `%s'"
msgstr "l'output wrapper `%s' non è riuscito ad aprire `%s'"
-#: io.c:2778
+#: io.c:2901
msgid "register_output_processor: received NULL pointer"
msgstr "register_output_processor: ricevuto puntatore NULL"
-#: io.c:2807
+#: io.c:2930
#, c-format
msgid ""
"two-way processor `%s' conflicts with previously installed two-way processor "
@@ -2890,209 +2910,209 @@ msgstr ""
"processore doppio `%s' in conflitto con il processore doppio installato in "
"precedenza `%s'"
-#: io.c:2816
+#: io.c:2939
#, c-format
msgid "two way processor `%s' failed to open `%s'"
msgstr "il processore doppio `%s' non è riuscito ad aprire `%s'"
-#: io.c:2923
+#: io.c:3064
#, c-format
msgid "data file `%s' is empty"
msgstr "file dati `%s' vuoto"
-#: io.c:2965 io.c:2973
+#: io.c:3106 io.c:3114
msgid "could not allocate more input memory"
msgstr "non riesco ad allocare ulteriore memoria per l'input"
-#: io.c:3539
+#: io.c:3682
msgid "multicharacter value of `RS' is a gawk extension"
msgstr "valore multicarattere per `RS' è un'estensione gawk"
-#: io.c:3628
+#: io.c:3771
msgid "IPv6 communication is not supported"
msgstr "comunicazioni IPv6 non supportate"
-#: main.c:388
+#: main.c:405
msgid "empty argument to `-e/--source' ignored"
msgstr "argomento di `-e/--source' nullo, ignorato"
-#: main.c:478
+#: main.c:495
#, c-format
msgid "%s: option `-W %s' unrecognized, ignored\n"
msgstr "%s: opzione `-W %s' non riconosciuta, ignorata\n"
-#: main.c:524
+#: main.c:541
#, c-format
msgid "%s: option requires an argument -- %c\n"
msgstr "%s: l'opzione richiede un argomento -- %c\n"
-#: main.c:545
+#: main.c:562
msgid "environment variable `POSIXLY_CORRECT' set: turning on `--posix'"
msgstr "variable d'ambiente `POSIXLY_CORRECT' impostata: attivo `--posix'"
-#: main.c:551
+#: main.c:568
msgid "`--posix' overrides `--traditional'"
msgstr "`--posix' annulla `--traditional'"
-#: main.c:562
+#: main.c:579
msgid "`--posix'/`--traditional' overrides `--non-decimal-data'"
msgstr "`--posix'/`--traditional' annulla `--non-decimal-data'"
-#: main.c:566
+#: main.c:583
#, c-format
msgid "running %s setuid root may be a security problem"
msgstr "eseguire %s con `setuid' root può essere un rischio per la sicurezza"
-#: main.c:571
+#: main.c:588
msgid "`--posix' overrides `--characters-as-bytes'"
msgstr "`--posix' annulla `--characters-as-bytes'"
-#: main.c:630
+#: main.c:647
#, c-format
msgid "can't set binary mode on stdin (%s)"
msgstr "non è possibile impostare modalità binaria su `stdin'(%s)"
-#: main.c:633
+#: main.c:650
#, c-format
msgid "can't set binary mode on stdout (%s)"
msgstr "non è possibile impostare modalità binaria su `stdout'(%s)"
-#: main.c:635
+#: main.c:652
#, c-format
msgid "can't set binary mode on stderr (%s)"
msgstr "non è possibile impostare modalità binaria su `stderr'(%s)"
-#: main.c:693
+#: main.c:710
msgid "no program text at all!"
msgstr "manca del tutto il testo del programma!"
-#: main.c:779
+#: main.c:799
#, 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:781
+#: main.c:801
#, 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:786
+#: main.c:806
msgid "POSIX options:\t\tGNU long options: (standard)\n"
msgstr "Opzioni POSIX:\t\topzioni lunghe GNU: (standard)\n"
-#: main.c:787
+#: main.c:807
msgid "\t-f progfile\t\t--file=progfile\n"
msgstr "\t-f fileprog\t\t--file=file-prog.\n"
-#: main.c:788
+#: main.c:808
msgid "\t-F fs\t\t\t--field-separator=fs\n"
msgstr "\t-F fs\t\t\t--field-separator=fs\n"
-#: main.c:789
+#: main.c:809
msgid "\t-v var=val\t\t--assign=var=val\n"
msgstr "\t-v var=valore\t\t--assign=var=valore\n"
-#: main.c:790
+#: main.c:810
msgid "Short options:\t\tGNU long options: (extensions)\n"
msgstr "Opzioni brevi:\t\topzioni lunghe GNU: (estensioni)\n"
-#: main.c:791
+#: main.c:811
msgid "\t-b\t\t\t--characters-as-bytes\n"
msgstr "\t-b\t\t\t--characters-as-bytes\n"
-#: main.c:792
+#: main.c:812
msgid "\t-c\t\t\t--traditional\n"
msgstr "\t-c\t\t\t--traditional\n"
-#: main.c:793
+#: main.c:813
msgid "\t-C\t\t\t--copyright\n"
msgstr "\t-C\t\t\t--copyright\n"
-#: main.c:794
+#: main.c:814
msgid "\t-d[file]\t\t--dump-variables[=file]\n"
msgstr "\t-d[file]\t\t--dump-variables[=file]\n"
-#: main.c:795
+#: main.c:815
msgid "\t-D[file]\t\t--debug[=file]\n"
msgstr "\t-D[file]\t\t--debug[=file]\n"
-#: main.c:796
+#: main.c:816
msgid "\t-e 'program-text'\t--source='program-text'\n"
msgstr "\t-e 'testo-del-programma'\t--source='testo-del-programma'\n"
-#: main.c:797
+#: main.c:817
msgid "\t-E file\t\t\t--exec=file\n"
msgstr "\t-E file\t\t\t--exec=file\n"
-#: main.c:798
+#: main.c:818
msgid "\t-g\t\t\t--gen-pot\n"
msgstr "\t-g\t\t\t--gen-pot\n"
-#: main.c:799
+#: main.c:819
msgid "\t-h\t\t\t--help\n"
msgstr "\t-h\t\t\t--help\n"
-#: main.c:800
+#: main.c:820
msgid "\t-i includefile\t\t--include=includefile\n"
msgstr "\t-i include_file\t\t--include=include_file\n"
-#: main.c:801
+#: main.c:821
msgid "\t-l library\t\t--load=library\n"
msgstr "\t-l libreria\t\t--load=libreria\n"
-#: main.c:802
+#: main.c:822
msgid "\t-L [fatal]\t\t--lint[=fatal]\n"
msgstr "\t-L [fatal]\t\t--lint[=fatal]\n"
-#: main.c:803
+#: main.c:823
msgid "\t-n\t\t\t--non-decimal-data\n"
msgstr "\t-n\t\t\t--non-decimal-data\n"
-#: main.c:804
+#: main.c:824
msgid "\t-M\t\t\t--bignum\n"
msgstr "\t-M\t\t\t--bignum\n"
-#: main.c:805
+#: main.c:825
msgid "\t-N\t\t\t--use-lc-numeric\n"
msgstr "\t-N\t\t\t--use-lc-numeric\n"
-#: main.c:806
+#: main.c:826
msgid "\t-o[file]\t\t--pretty-print[=file]\n"
msgstr "\t-o[file]\t\t--pretty-print[=file]\n"
-#: main.c:807
+#: main.c:827
msgid "\t-O\t\t\t--optimize\n"
msgstr "\t-O\t\t\t--optimize\n"
-#: main.c:808
+#: main.c:828
msgid "\t-p[file]\t\t--profile[=file]\n"
msgstr "\t-p[file]\t\t--profile[=file]\n"
-#: main.c:809
+#: main.c:829
msgid "\t-P\t\t\t--posix\n"
msgstr "\t-P\t\t\t--posix\n"
-#: main.c:810
+#: main.c:830
msgid "\t-r\t\t\t--re-interval\n"
msgstr "\t-r\t\t\t--re-interval\n"
-#: main.c:811
+#: main.c:831
msgid "\t-S\t\t\t--sandbox\n"
msgstr "\t-S\t\t\t--sandbox\n"
-#: main.c:812
+#: main.c:832
msgid "\t-t\t\t\t--lint-old\n"
msgstr "\t-t\t\t\t--lint-old\n"
-#: main.c:813
+#: main.c:833
msgid "\t-V\t\t\t--version\n"
msgstr "\t-V\t\t\t--version\n"
-#: main.c:815
+#: main.c:835
msgid "\t-W nostalgia\t\t--nostalgia\n"
msgstr "\t-W nostalgia\t\t--nostalgia\n"
-#: main.c:818
+#: main.c:838
msgid "\t-Y\t\t--parsedebug\n"
msgstr "\t-Y\t\t--parsedebug\n"
@@ -3101,7 +3121,7 @@ msgstr "\t-Y\t\t--parsedebug\n"
#. for this application. Please add _another line_ with the
#. address for translation bugs.
#. no-wrap
-#: main.c:827
+#: main.c:847
msgid ""
"\n"
"To report bugs, see node `Bugs' in `gawk.info', which is\n"
@@ -3114,7 +3134,7 @@ msgstr ""
"Problemi di traduzione, segnalare ad: azc100@gmail.com.\n"
"\n"
-#: main.c:831
+#: main.c:851
msgid ""
"gawk is a pattern scanning and processing language.\n"
"By default it reads standard input and writes standard output.\n"
@@ -3124,7 +3144,7 @@ msgstr ""
"Senza parametri, legge da 'standard input' e scrive su 'standard output'.\n"
"\n"
-#: main.c:835
+#: main.c:855
msgid ""
"Examples:\n"
"\tgawk '{ sum += $1 }; END { print sum }' file\n"
@@ -3134,7 +3154,7 @@ msgstr ""
"\tgawk '{ sum += $1 }; END { print sum }' file\n"
"\tgawk -F: '{ print $1 }' /etc/passwd\n"
-#: main.c:855
+#: main.c:880
#, c-format
msgid ""
"Copyright (C) 1989, 1991-%d Free Software Foundation.\n"
@@ -3153,7 +3173,7 @@ msgstr ""
"Licenza, o (a tua scelta) a una qualsiasi versione successiva.\n"
"\n"
-#: main.c:863
+#: main.c:888
msgid ""
"This program is distributed in the hope that it will be useful,\n"
"but WITHOUT ANY WARRANTY; without even the implied warranty of\n"
@@ -3167,7 +3187,7 @@ msgstr ""
"Vedi la 'GNU General Public License' per ulteriori dettagli.\n"
"\n"
-#: main.c:869
+#: main.c:894
msgid ""
"You should have received a copy of the GNU General Public License\n"
"along with this program. If not, see http://www.gnu.org/licenses/.\n"
@@ -3176,16 +3196,16 @@ msgstr ""
"assieme a questo programma; se non è così, vedi http://www.gnu.org/"
"licenses/.\n"
-#: main.c:904
+#: main.c:931
msgid "-Ft does not set FS to tab in POSIX awk"
msgstr "-Ft non imposta FS a `tab' nell'awk POSIX"
-#: main.c:1181
+#: main.c:1208
#, c-format
msgid "unknown value for field spec: %d\n"
msgstr "valore non noto per specifica campo: %d\n"
-#: main.c:1279
+#: main.c:1306
#, c-format
msgid ""
"%s: `%s' argument to `-v' not in `var=value' form\n"
@@ -3194,48 +3214,48 @@ msgstr ""
"%s: `%s' argomento di `-v' non in forma `var=valore'\n"
"\n"
-#: main.c:1305
+#: main.c:1332
#, c-format
msgid "`%s' is not a legal variable name"
msgstr "`%s' non è un nome di variabile ammesso"
-#: main.c:1308
+#: main.c:1335
#, 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:1312
+#: main.c:1339
#, c-format
msgid "cannot use gawk builtin `%s' as variable name"
msgstr "nome funzione interna gawk `%s' non ammesso come nome variabile"
-#: main.c:1317
+#: main.c:1344
#, c-format
msgid "cannot use function `%s' as variable name"
msgstr "non è possibile usare nome di funzione `%s' come nome di variabile"
-#: main.c:1370
+#: main.c:1397
msgid "floating point exception"
msgstr "eccezione floating point"
-#: main.c:1377
+#: main.c:1404
msgid "fatal error: internal error"
msgstr "errore fatale: errore interno"
-#: main.c:1392
+#: main.c:1419
msgid "fatal error: internal error: segfault"
msgstr "errore fatale: errore interno: segfault"
-#: main.c:1404
+#: main.c:1431
msgid "fatal error: internal error: stack overflow"
msgstr "errore fatale: errore interno: stack overflow"
-#: main.c:1463
+#: main.c:1490
#, c-format
msgid "no pre-opened fd %d"
msgstr "manca `fd' pre-aperta %d"
-#: main.c:1470
+#: main.c:1497
#, c-format
msgid "could not pre-open /dev/null for fd %d"
msgstr "non riesco a pre-aprire /dev/null per `fd' %d"
@@ -3290,7 +3310,7 @@ msgstr "%s: argomento #%d, valore decimale sarà troncato"
msgid "%s: argument #%d negative value %Zd will give strange results"
msgstr "%s: argomento #%d con valore negativo %Zd, darà risultati strani"
-#: msg.c:61
+#: msg.c:68
#, c-format
msgid "cmd. line:"
msgstr "linea com.:"
@@ -3345,16 +3365,16 @@ msgid "%s %s `%s': could not set close-on-exec: (fcntl F_SETFD: %s)"
msgstr ""
"%s %s `%s': non riesco a impostare 'close-on-exec': (fcntl F_SETFD: %s)"
-#: profile.c:70
+#: profile.c:71
#, c-format
msgid "could not open `%s' for writing: %s"
msgstr "non riesco ad aprire `%s' in scrittura: %s"
-#: profile.c:72
+#: profile.c:73
msgid "sending profile to standard error"
msgstr "mando profilo a 'standard error'"
-#: profile.c:188
+#: profile.c:193
#, c-format
msgid ""
"\t# %s block(s)\n"
@@ -3363,7 +3383,7 @@ msgstr ""
"\t# blocco(hi) %s\n"
"\n"
-#: profile.c:193
+#: profile.c:198
#, c-format
msgid ""
"\t# Rule(s)\n"
@@ -3372,16 +3392,16 @@ msgstr ""
"\t# Regola(e)\n"
"\n"
-#: profile.c:267
+#: profile.c:272
#, c-format
msgid "internal error: %s with null vname"
msgstr "errore interno: %s con `vname' nullo"
-#: profile.c:530
+#: profile.c:537
msgid "internal error: builtin with null fname"
msgstr "errore interno: funzione interna con `fname' nullo"
-#: profile.c:942
+#: profile.c:949
#, c-format
msgid ""
"\t# Loaded extensions (-l and/or @load)\n"
@@ -3390,12 +3410,12 @@ msgstr ""
"\t# Estensioni caricate (-l e/o @load)\n"
"\n"
-#: profile.c:965
+#: profile.c:972
#, c-format
msgid "\t# gawk profile, created %s\n"
msgstr "\t# profilo gawk, creato %s\n"
-#: profile.c:1351
+#: profile.c:1475
#, c-format
msgid ""
"\n"
@@ -3404,17 +3424,12 @@ msgstr ""
"\n"
"\t# Funzioni, in ordine alfabetico\n"
-#: profile.c:1389
+#: profile.c:1513
#, c-format
msgid "redir2str: unknown redirection type %d"
msgstr "redir2str: tipo di re-direzione non noto %d"
-#: re.c:583
-#, c-format
-msgid "range of the form `[%c-%c]' is locale dependent"
-msgstr "intervallo della forma `[%c-%c]' dipende da `locale'"
-
-#: re.c:610
+#: re.c:607
#, c-format
msgid "regexp component `%.*s' should probably be `[%.*s]'"
msgstr ""
@@ -3484,6 +3499,9 @@ msgstr ") o \\) non aperta"
msgid "No previous regular expression"
msgstr "Nessuna espressione regolare precedente"
-#: symbol.c:740
+#: symbol.c:741
msgid "can not pop main context"
msgstr "non posso salire più in alto nello stack"
+
+#~ msgid "range of the form `[%c-%c]' is locale dependent"
+#~ msgstr "intervallo della forma `[%c-%c]' dipende da `locale'"
diff --git a/po/ja.gmo b/po/ja.gmo
index faca679e..d1ef30cc 100644
--- a/po/ja.gmo
+++ b/po/ja.gmo
Binary files differ
diff --git a/po/ja.po b/po/ja.po
index 756f3548..ae5b61c8 100644
--- a/po/ja.po
+++ b/po/ja.po
@@ -8,7 +8,7 @@ msgid ""
msgstr ""
"Project-Id-Version: gawk 4.0.0\n"
"Report-Msgid-Bugs-To: arnold@skeeve.com\n"
-"POT-Creation-Date: 2013-05-09 16:05+0300\n"
+"POT-Creation-Date: 2014-04-08 19:23+0300\n"
"PO-Revision-Date: 2011-07-17 08:28+0900\n"
"Last-Translator: Yasuaki Taniguchi <yasuakit@gmail.com>\n"
"Language-Team: Japanese <translation-team-ja@lists.sourceforge.net>\n"
@@ -18,85 +18,85 @@ msgstr ""
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=1; plural=0;\n"
-#: array.c:254
+#: array.c:256
#, c-format
msgid "from %s"
msgstr "%s ã‹ã‚‰"
-#: array.c:354
+#: array.c:357
msgid "attempt to use a scalar value as array"
msgstr "スカラー値をé…列ã¨ã—ã¦ä½¿ç”¨ã™ã‚‹è©¦ã¿ã§ã™"
-#: array.c:356
+#: array.c:359
#, c-format
msgid "attempt to use scalar parameter `%s' as an array"
msgstr "スカラー仮引数 `%s' ã‚’é…列ã¨ã—ã¦ä½¿ç”¨ã™ã‚‹è©¦ã¿ã§ã™"
-#: array.c:359
+#: array.c:362
#, c-format
msgid "attempt to use scalar `%s' as an array"
msgstr "スカラー `%s' ã‚’é…列ã¨ã—ã¦ä½¿ç”¨ã™ã‚‹è©¦ã¿ã§ã™"
-#: array.c:406 array.c:573 builtin.c:85 builtin.c:1591 builtin.c:1637
-#: builtin.c:1650 builtin.c:2078 builtin.c:2092 eval.c:1121 eval.c:1125
-#: eval.c:1524
+#: array.c:409 array.c:576 builtin.c:85 builtin.c:1615 builtin.c:1661
+#: builtin.c:1674 builtin.c:2102 builtin.c:2116 eval.c:1122 eval.c:1126
+#: eval.c:1531
#, c-format
msgid "attempt to use array `%s' in a scalar context"
msgstr "スカラーコンテキストã§é…列 `%s' を使用ã™ã‚‹è©¦ã¿ã§ã™"
-#: array.c:580
+#: array.c:583
#, c-format
msgid "delete: index `%s' not in array `%s'"
msgstr "delete: é…列 `%2$s' 内ã«ã‚¤ãƒ³ãƒ‡ãƒƒã‚¯ã‚¹ `%1$s' ãŒã‚ã‚Šã¾ã›ã‚“"
-#: array.c:594
+#: array.c:597
#, c-format
msgid "attempt to use scalar `%s[\"%.*s\"]' as an array"
msgstr "スカラー `%s[\"%.*s\"]' ã‚’é…列ã¨ã—ã¦ä½¿ç”¨ã™ã‚‹è©¦ã¿ã§ã™"
-#: array.c:773
+#: array.c:776
#, fuzzy
msgid "adump: first argument not an array"
msgstr "adump: 引数ãŒé…列ã§ã¯ã‚ã‚Šã¾ã›ã‚“"
-#: array.c:812
+#: array.c:815
msgid "asort: second argument not an array"
msgstr "asort: 第二引数ãŒé…列ã§ã¯ã‚ã‚Šã¾ã›ã‚“"
-#: array.c:813
+#: array.c:816
msgid "asorti: second argument not an array"
msgstr "asorti: 第二引数ãŒé…列ã§ã¯ã‚ã‚Šã¾ã›ã‚“"
-#: array.c:820
+#: array.c:823
msgid "asort: first argument not an array"
msgstr "asort: 第一引数ãŒé…列ã§ã¯ã‚ã‚Šã¾ã›ã‚“"
-#: array.c:821
+#: array.c:824
msgid "asorti: first argument not an array"
msgstr "asorti: 第一引数ãŒé…列ã§ã¯ã‚ã‚Šã¾ã›ã‚“"
-#: array.c:828
+#: array.c:831
msgid "asort: cannot use a subarray of first arg for second arg"
msgstr "asort: 第一引数ã®éƒ¨åˆ†é…列を第二引数用ã«ä½¿ç”¨ã™ã‚‹ã“ã¨ã¯å‡ºæ¥ã¾ã›ã‚“"
-#: array.c:829
+#: array.c:832
msgid "asorti: cannot use a subarray of first arg for second arg"
msgstr "asorti: 第一引数ã®éƒ¨åˆ†é…列を第二引数用ã«ä½¿ç”¨ã™ã‚‹ã“ã¨ã¯å‡ºæ¥ã¾ã›ã‚“"
-#: array.c:834
+#: array.c:837
msgid "asort: cannot use a subarray of second arg for first arg"
msgstr "asort: 第二引数ã®éƒ¨åˆ†é…列を第一引数用ã«ä½¿ç”¨ã™ã‚‹ã“ã¨ã¯å‡ºæ¥ã¾ã›ã‚“"
-#: array.c:835
+#: array.c:838
msgid "asorti: cannot use a subarray of second arg for first arg"
msgstr "asorti: 第二引数ã®éƒ¨åˆ†é…列を第一引数用ã«ä½¿ç”¨ã™ã‚‹ã“ã¨ã¯å‡ºæ¥ã¾ã›ã‚“"
-#: array.c:1309
+#: array.c:1314
#, c-format
msgid "`%s' is invalid as a function name"
msgstr "`%s' ã¯é–¢æ•°åã¨ã—ã¦ã¯ç„¡åŠ¹ã§ã™"
-#: array.c:1313
+#: array.c:1318
#, c-format
msgid "sort comparison function `%s' is not defined"
msgstr "ソート比較関数 `%s' ãŒå®šç¾©ã•ã‚Œã¦ã„ã¾ã›ã‚“"
@@ -137,11 +137,11 @@ msgstr "switch æ–‡ã®ä¸­ã§é‡è¤‡ã—㟠case 値ãŒä½¿ç”¨ã•ã‚Œã¦ã„ã¾ã™: %s"
msgid "duplicate `default' detected in switch body"
msgstr "switch æ–‡ã®ä¸­ã§é‡è¤‡ã—㟠`default' ãŒæ¤œå‡ºã•ã‚Œã¾ã—ãŸ"
-#: awkgram.y:796 awkgram.y:3699
+#: awkgram.y:796 awkgram.y:3723
msgid "`break' is not allowed outside a loop or switch"
msgstr "`break' ã¯ãƒ«ãƒ¼ãƒ—ã¾ãŸã¯ switch ã®å¤–ã§ã¯è¨±å¯ã•ã‚Œã¦ã„ã¾ã›ã‚“"
-#: awkgram.y:805 awkgram.y:3691
+#: awkgram.y:805 awkgram.y:3715
msgid "`continue' is not allowed outside a loop"
msgstr "`continue' ã¯ãƒ«ãƒ¼ãƒ—ã®å¤–ã§ã¯è¨±å¯ã•ã‚Œã¦ã„ã¾ã›ã‚“"
@@ -231,269 +231,269 @@ msgstr "特別ãªå¤‰æ•° `%s' ã¯é–“接関数呼ã³å‡ºã—用ã«ã¯ä½¿ç”¨å‡ºæ¥ã¾
msgid "invalid subscript expression"
msgstr "添字ã®å¼ãŒç„¡åŠ¹ã§ã™"
-#: awkgram.y:2024 awkgram.y:2044 gawkapi.c:206 gawkapi.c:224 msg.c:119
+#: awkgram.y:2048 awkgram.y:2068 gawkapi.c:206 gawkapi.c:224 msg.c:126
msgid "warning: "
msgstr "警告: "
-#: awkgram.y:2042 gawkapi.c:192 gawkapi.c:221 msg.c:151
+#: awkgram.y:2066 gawkapi.c:192 gawkapi.c:221 msg.c:158
msgid "fatal: "
msgstr "致命的: "
-#: awkgram.y:2092
+#: awkgram.y:2116
msgid "unexpected newline or end of string"
msgstr "予期ã—ãªã„改行ã¾ãŸã¯æ–‡å­—列終端ã§ã™"
-#: awkgram.y:2359 awkgram.y:2435 awkgram.y:2658 debug.c:517 debug.c:533
-#: debug.c:2792 debug.c:5040
+#: awkgram.y:2383 awkgram.y:2459 awkgram.y:2682 debug.c:523 debug.c:539
+#: debug.c:2812 debug.c:5055
#, c-format
msgid "can't open source file `%s' for reading (%s)"
msgstr "ソースファイル `%s' を読ã¿è¾¼ã¿ç”¨ã«é–‹ã‘ã¾ã›ã‚“ (%s)"
-#: awkgram.y:2360 awkgram.y:2485
+#: awkgram.y:2384 awkgram.y:2509
#, fuzzy, c-format
msgid "can't open shared library `%s' for reading (%s)"
msgstr "ソースファイル `%s' を読ã¿è¾¼ã¿ç”¨ã«é–‹ã‘ã¾ã›ã‚“ (%s)"
-#: awkgram.y:2362 awkgram.y:2436 awkgram.y:2486 builtin.c:130 debug.c:5191
+#: awkgram.y:2386 awkgram.y:2460 awkgram.y:2510 builtin.c:135 debug.c:5206
msgid "reason unknown"
msgstr "原因ä¸æ˜Ž"
-#: awkgram.y:2371 awkgram.y:2395
+#: awkgram.y:2395 awkgram.y:2419
#, c-format
msgid "can't include `%s' and use it as a program file"
msgstr ""
-#: awkgram.y:2384
+#: awkgram.y:2408
#, c-format
msgid "already included source file `%s'"
msgstr "ソースファイル `%s' ã¯æ—¢ã«èª­ã¿è¾¼ã¾ã‚Œã¦ã„ã¾ã™"
-#: awkgram.y:2385
+#: awkgram.y:2409
#, fuzzy, c-format
msgid "already loaded shared library `%s'"
msgstr "ソースファイル `%s' ã¯æ—¢ã«èª­ã¿è¾¼ã¾ã‚Œã¦ã„ã¾ã™"
-#: awkgram.y:2420
+#: awkgram.y:2444
msgid "@include is a gawk extension"
msgstr "@include 㯠gawk æ‹¡å¼µã§ã™"
-#: awkgram.y:2426
+#: awkgram.y:2450
msgid "empty filename after @include"
msgstr "@include ã®å¾Œã«ç©ºã®ãƒ•ã‚¡ã‚¤ãƒ«åãŒã‚ã‚Šã¾ã™"
-#: awkgram.y:2470
+#: awkgram.y:2494
#, fuzzy
msgid "@load is a gawk extension"
msgstr "@include 㯠gawk æ‹¡å¼µã§ã™"
-#: awkgram.y:2476
+#: awkgram.y:2500
#, fuzzy
msgid "empty filename after @load"
msgstr "@include ã®å¾Œã«ç©ºã®ãƒ•ã‚¡ã‚¤ãƒ«åãŒã‚ã‚Šã¾ã™"
-#: awkgram.y:2610
+#: awkgram.y:2634
msgid "empty program text on command line"
msgstr "コマンド行ã®ãƒ—ログラム表記ãŒç©ºã§ã™"
-#: awkgram.y:2725
+#: awkgram.y:2749
#, c-format
msgid "can't read sourcefile `%s' (%s)"
msgstr "ソースファイル `%s' を読ã¿è¾¼ã‚ã¾ã›ã‚“ (%s)"
-#: awkgram.y:2736
+#: awkgram.y:2760
#, c-format
msgid "source file `%s' is empty"
msgstr "ソースファイル `%s' ã¯ç©ºã§ã™"
-#: awkgram.y:2913
+#: awkgram.y:2937
msgid "source file does not end in newline"
msgstr "ソースファイルãŒæ”¹è¡Œã§çµ‚ã£ã¦ã„ã¾ã›ã‚“"
-#: awkgram.y:3018
+#: awkgram.y:3042
msgid "unterminated regexp ends with `\\' at end of file"
msgstr "終端ã•ã‚Œã¦ã„ãªã„æ­£è¦è¡¨ç¾ãŒãƒ•ã‚¡ã‚¤ãƒ«æœ€å¾Œã® `\\' ã§çµ‚ã£ã¦ã„ã¾ã™ã€‚"
-#: awkgram.y:3042
+#: awkgram.y:3066
#, c-format
msgid "%s: %d: tawk regex modifier `/.../%c' doesn't work in gawk"
msgstr "%s: %d: tawk ã®æ­£è¦è¡¨ç¾ä¿®é£¾å­ `/.../%c' 㯠gawk ã§ä½¿ç”¨ã§ãã¾ã›ã‚“"
-#: awkgram.y:3046
+#: awkgram.y:3070
#, c-format
msgid "tawk regex modifier `/.../%c' doesn't work in gawk"
msgstr "tawk ã®æ­£è¦è¡¨ç¾ä¿®é£¾å­ `/.../%c' 㯠gawk ã§ä½¿ç”¨ã§ãã¾ã›ã‚“"
-#: awkgram.y:3053
+#: awkgram.y:3077
msgid "unterminated regexp"
msgstr "æ­£è¦è¡¨ç¾ãŒçµ‚端ã•ã‚Œã¦ã„ã¾ã›ã‚“"
-#: awkgram.y:3057
+#: awkgram.y:3081
msgid "unterminated regexp at end of file"
msgstr "ファイルã®ä¸­ã§æ­£è¦è¡¨ç¾ãŒçµ‚端ã•ã‚Œã¦ã„ã¾ã›ã‚“"
-#: awkgram.y:3116
+#: awkgram.y:3140
msgid "use of `\\ #...' line continuation is not portable"
msgstr "`\\ #...' å½¢å¼ã®è¡Œç¶™ç¶šã¯ç§»æ¤æ€§ãŒã‚ã‚Šã¾ã›ã‚“"
-#: awkgram.y:3132
+#: awkgram.y:3156
msgid "backslash not last character on line"
msgstr "ãƒãƒƒã‚¯ã‚¹ãƒ©ãƒƒã‚·ãƒ¥ãŒè¡Œæœ€å¾Œã®æ–‡å­—ã«ãªã£ã¦ã„ã¾ã›ã‚“。"
-#: awkgram.y:3193
+#: awkgram.y:3217
msgid "POSIX does not allow operator `**='"
msgstr "POSIX ã§ã¯æ¼”ç®—å­ `**=' ã¯è¨±å¯ã•ã‚Œã¦ã„ã¾ã›ã‚“"
-#: awkgram.y:3195
+#: awkgram.y:3219
msgid "old awk does not support operator `**='"
msgstr "å¤ã„ awk ã¯æ¼”ç®—å­ `**=' をサãƒãƒ¼ãƒˆã—ã¾ã›ã‚“"
-#: awkgram.y:3204
+#: awkgram.y:3228
msgid "POSIX does not allow operator `**'"
msgstr "POSIX ã§ã¯æ¼”ç®—å­ `**' ã¯è¨±å¯ã•ã‚Œã¦ã„ã¾ã›ã‚“"
-#: awkgram.y:3206
+#: awkgram.y:3230
msgid "old awk does not support operator `**'"
msgstr "å¤ã„ awk ã¯æ¼”ç®—å­ `**' をサãƒãƒ¼ãƒˆã—ã¾ã›ã‚“"
-#: awkgram.y:3241
+#: awkgram.y:3265
msgid "operator `^=' is not supported in old awk"
msgstr "å¤ã„ awk ã¯æ¼”ç®—å­ `^=' をサãƒãƒ¼ãƒˆã—ã¾ã›ã‚“"
-#: awkgram.y:3249
+#: awkgram.y:3273
msgid "operator `^' is not supported in old awk"
msgstr "å¤ã„ awk ã¯æ¼”ç®—å­ `^' をサãƒãƒ¼ãƒˆã—ã¾ã›ã‚“"
-#: awkgram.y:3342 awkgram.y:3358 command.y:1178
+#: awkgram.y:3366 awkgram.y:3382 command.y:1178
msgid "unterminated string"
msgstr "文字列ãŒçµ‚端ã•ã‚Œã¦ã„ã¾ã›ã‚“"
-#: awkgram.y:3579
+#: awkgram.y:3603
#, c-format
msgid "invalid char '%c' in expression"
msgstr "å¼å†…ã«ç„¡åŠ¹ãªæ–‡å­— '%c' ãŒã‚ã‚Šã¾ã™"
-#: awkgram.y:3626
+#: awkgram.y:3650
#, c-format
msgid "`%s' is a gawk extension"
msgstr "`%s' 㯠gawk æ‹¡å¼µã§ã™"
-#: awkgram.y:3631
+#: awkgram.y:3655
#, c-format
msgid "POSIX does not allow `%s'"
msgstr "POSIX ã§ã¯ `%s' ã¯è¨±å¯ã•ã‚Œã¦ã„ã¾ã›ã‚“"
-#: awkgram.y:3639
+#: awkgram.y:3663
#, c-format
msgid "`%s' is not supported in old awk"
msgstr "å¤ã„ awk 㯠`%s' をサãƒãƒ¼ãƒˆã—ã¾ã›ã‚“"
-#: awkgram.y:3729
+#: awkgram.y:3753
msgid "`goto' considered harmful!\n"
msgstr "`goto' ã¯æœ‰å®³ã ã¨è¦‹ãªã•ã‚Œã¦ã„ã¾ã™!\n"
-#: awkgram.y:3763
+#: awkgram.y:3787
#, c-format
msgid "%d is invalid as number of arguments for %s"
msgstr "%d 㯠%s 用ã®å¼•æ•°ã®æ•°ã¨ã—ã¦ã¯ç„¡åŠ¹ã§ã™"
-#: awkgram.y:3798
+#: awkgram.y:3822
#, c-format
msgid "%s: string literal as last arg of substitute has no effect"
msgstr "%s: 文字列リテラルを置ãæ›ãˆæœ€å¾Œã®å¼•æ•°ã«ä½¿ç”¨ã™ã‚‹ã¨åŠ¹æžœãŒã‚ã‚Šã¾ã›ã‚“"
-#: awkgram.y:3803
+#: awkgram.y:3827
#, c-format
msgid "%s third parameter is not a changeable object"
msgstr "%s 第三仮引数ã¯å¯å¤‰ã‚ªãƒ–ジェクトã§ã¯ã‚ã‚Šã¾ã›ã‚“"
-#: awkgram.y:3886 awkgram.y:3889
+#: awkgram.y:3910 awkgram.y:3913
msgid "match: third argument is a gawk extension"
msgstr "match: 第三引数㯠gawk æ‹¡å¼µã§ã™"
-#: awkgram.y:3943 awkgram.y:3946
+#: awkgram.y:3967 awkgram.y:3970
msgid "close: second argument is a gawk extension"
msgstr "close: 第二引数㯠gawk æ‹¡å¼µã§ã™"
-#: awkgram.y:3958
+#: awkgram.y:3982
msgid "use of dcgettext(_\"...\") is incorrect: remove leading underscore"
msgstr ""
"dcgettext(_\"...\")ã®ä½¿ç”¨æ³•ãŒé–“é•ã£ã¦ã„ã¾ã™: 先頭ã®ã‚¢ãƒ³ãƒ€ãƒ¼ã‚¹ã‚³ã‚¢(_)を削除ã—"
"ã¦ãã ã•ã„"
-#: awkgram.y:3973
+#: awkgram.y:3997
msgid "use of dcngettext(_\"...\") is incorrect: remove leading underscore"
msgstr ""
"dcngettext(_\"...\")ã®ä½¿ç”¨æ³•ãŒé–“é•ã£ã¦ã„ã¾ã™: 先頭ã®ã‚¢ãƒ³ãƒ€ãƒ¼ã‚¹ã‚³ã‚¢(_)を削除ã—"
"ã¦ãã ã•ã„"
-#: awkgram.y:3992
+#: awkgram.y:4016
#, fuzzy
msgid "index: regexp constant as second argument is not allowed"
msgstr "index: 文字列ã§ã¯ç„¡ã„第二引数をå—ã‘å–ã‚Šã¾ã—ãŸ"
-#: awkgram.y:4045
+#: awkgram.y:4069
#, c-format
msgid "function `%s': parameter `%s' shadows global variable"
msgstr "関数 `%s': 仮引数 `%s' ãŒå¤§åŸŸå¤‰æ•°ã‚’覆ã„éš ã—ã¦ã„ã¾ã™"
-#: awkgram.y:4102 debug.c:4021 debug.c:4064 debug.c:5189
+#: awkgram.y:4126 debug.c:4041 debug.c:4084 debug.c:5204
#, c-format
msgid "could not open `%s' for writing (%s)"
msgstr "`%s' を書込ã¿ç”¨ã«é–‹ã‘ã¾ã›ã‚“ã§ã—㟠(%s)"
-#: awkgram.y:4103
+#: awkgram.y:4127
msgid "sending variable list to standard error"
msgstr "変数リストを標準エラーã«é€ã£ã¦ã„ã¾ã™"
-#: awkgram.y:4111
+#: awkgram.y:4135
#, c-format
msgid "%s: close failed (%s)"
msgstr "%s: é–‰ã˜ã‚‹ã®ã«å¤±æ•—ã—ã¾ã—㟠(%s)"
-#: awkgram.y:4136
+#: awkgram.y:4160
msgid "shadow_funcs() called twice!"
msgstr "shadow_funcs() を二回呼ã³å‡ºã—ã¦ã„ã¾ã™!"
-#: awkgram.y:4144
+#: awkgram.y:4168
msgid "there were shadowed variables."
msgstr "覆ã„éš ã•ã‚ŒãŸå¤‰æ•°ãŒã‚ã‚Šã¾ã—ãŸ"
-#: awkgram.y:4215
+#: awkgram.y:4239
#, c-format
msgid "function name `%s' previously defined"
msgstr "関数å `%s' ã¯å‰ã«å®šç¾©ã•ã‚Œã¦ã„ã¾ã™"
-#: awkgram.y:4261
+#: awkgram.y:4285
#, c-format
msgid "function `%s': can't use function name as parameter name"
msgstr "関数 `%s': 関数åを仮引数åã¨ã—ã¦ä½¿ç”¨å‡ºæ¥ã¾ã›ã‚“"
-#: awkgram.y:4264
+#: awkgram.y:4288
#, c-format
msgid "function `%s': can't use special variable `%s' as a function parameter"
msgstr "関数 `%s': 特別ãªå¤‰æ•° `%s' ã¯é–¢æ•°ã®ä»®å¼•æ•°ã¨ã—ã¦ä½¿ç”¨å‡ºæ¥ã¾ã›ã‚“"
-#: awkgram.y:4272
+#: awkgram.y:4296
#, c-format
msgid "function `%s': parameter #%d, `%s', duplicates parameter #%d"
msgstr "関数 `%s': 仮引数 #%d, `%s' ãŒä»®å¼•æ•° #%d ã¨é‡è¤‡ã—ã¦ã„ã¾ã™"
-#: awkgram.y:4366 awkgram.y:4372
+#: awkgram.y:4383 awkgram.y:4389
#, c-format
msgid "function `%s' called but never defined"
msgstr "未定義ã®é–¢æ•° `%s' を呼ã³å‡ºã—ã¾ã—ãŸ"
-#: awkgram.y:4376
+#: awkgram.y:4393
#, c-format
msgid "function `%s' defined but never called directly"
msgstr "関数 `%s' ã¯å®šç¾©ã•ã‚Œã¦ã„ã¾ã™ãŒã€ä¸€åº¦ã‚‚直接呼ã³å‡ºã•ã‚Œã¦ã„ã¾ã›ã‚“"
-#: awkgram.y:4408
+#: awkgram.y:4425
#, c-format
msgid "regexp constant for parameter #%d yields boolean value"
msgstr "仮引数 #%d 用ã®æ­£è¦è¡¨ç¾å®šæ•°ã¯çœŸå½å€¤ã‚’出力ã—ã¾ã™"
-#: awkgram.y:4467
+#: awkgram.y:4484
#, c-format
msgid ""
"function `%s' called with space between name and `(',\n"
@@ -502,235 +502,245 @@ msgstr ""
"関数å㨠`(' ã®é–“ã«ã‚¹ãƒšãƒ¼ã‚¹ã‚’入れã¦é–¢æ•° `%s' を呼ã³å‡ºã—ã¦ã„ã¾ã™ã€‚\n"
"ã¾ãŸã¯ã€å¤‰æ•°ã‹é…列ã¨ã—ã¦ä½¿ã‚ã‚Œã¦ã„ã¾ã™ã€‚"
-#: awkgram.y:4703
+#: awkgram.y:4720
msgid "division by zero attempted"
msgstr "ゼロã«ã‚ˆã‚‹é™¤ç®—ãŒè©¦ã¿ã‚‰ã‚Œã¾ã—ãŸ"
-#: awkgram.y:4712
+#: awkgram.y:4729
#, c-format
msgid "division by zero attempted in `%%'"
msgstr "`%%' 内ã§ã‚¼ãƒ­ã«ã‚ˆã‚‹é™¤ç®—ãŒè©¦ã¿ã‚‰ã‚Œã¾ã—ãŸ"
-#: builtin.c:128
+#: awkgram.y:5049
+msgid ""
+"cannot assign a value to the result of a field post-increment expression"
+msgstr ""
+
+#: awkgram.y:5052
+#, fuzzy, c-format
+msgid "invalid target of assignment (opcode %s)"
+msgstr "%d 㯠%s 用ã®å¼•æ•°ã®æ•°ã¨ã—ã¦ã¯ç„¡åŠ¹ã§ã™"
+
+#: builtin.c:133
#, c-format
msgid "%s to \"%s\" failed (%s)"
msgstr "%s ã‹ã‚‰ \"%s\" ã¸å‡ºåŠ›ã§ãã¾ã›ã‚“ (%s)。"
-#: builtin.c:129
+#: builtin.c:134
msgid "standard output"
msgstr "標準出力"
-#: builtin.c:143
+#: builtin.c:148
msgid "exp: received non-numeric argument"
msgstr "exp: 引数ãŒæ•°å€¤ã§ã¯ã‚ã‚Šã¾ã›ã‚“"
-#: builtin.c:149
+#: builtin.c:154
#, c-format
msgid "exp: argument %g is out of range"
msgstr "exp: 引数 %g ãŒç¯„囲外ã§ã™"
-#: builtin.c:224
+#: builtin.c:229
#, c-format
msgid "fflush: cannot flush: pipe `%s' opened for reading, not writing"
msgstr ""
"fflush: flush ã§ãã¾ã›ã‚“: パイプ `%s' ã¯èª­ã¿è¾¼ã¿ç”¨ã«é–‹ã‹ã‚Œã¦ã„ã¾ã™ã€‚書ãè¾¼ã¿"
"用ã§ã¯ã‚ã‚Šã¾ã›ã‚“"
-#: builtin.c:227
+#: builtin.c:232
#, c-format
msgid "fflush: cannot flush: file `%s' opened for reading, not writing"
msgstr ""
"fflush: flush ã§ãã¾ã›ã‚“: ファイル `%s' ã¯èª­ã¿è¾¼ã¿ç”¨ã«é–‹ã‹ã‚Œã¦ã„ã¾ã™ã€‚書ãè¾¼"
"ã¿ç”¨ã§ã¯ã‚ã‚Šã¾ã›ã‚“"
-#: builtin.c:239
+#: builtin.c:244
#, c-format
msgid "fflush: `%s' is not an open file, pipe or co-process"
msgstr "fflush: `%s' ãŒé–‹ã‹ã‚ŒãŸãƒ•ã‚¡ã‚¤ãƒ«ã€ãƒ‘イプã€ãƒ—ロセス共有ã§ã¯ã‚ã‚Šã¾ã›ã‚“"
-#: builtin.c:357
+#: builtin.c:362
msgid "index: received non-string first argument"
msgstr "index: 文字列ã§ã¯ç„¡ã„第一引数をå—ã‘å–ã‚Šã¾ã—ãŸ"
-#: builtin.c:359
+#: builtin.c:364
msgid "index: received non-string second argument"
msgstr "index: 文字列ã§ã¯ç„¡ã„第二引数をå—ã‘å–ã‚Šã¾ã—ãŸ"
-#: builtin.c:483 mpfr.c:757
+#: builtin.c:488 mpfr.c:757
msgid "int: received non-numeric argument"
msgstr "int: 数値ã§ã¯ç„¡ã„引数をå—ã‘å–ã‚Šã¾ã—ãŸ"
-#: builtin.c:520
+#: builtin.c:525
msgid "length: received array argument"
msgstr "length: é…列引数をå—ã‘å–ã‚Šã¾ã—ãŸ"
-#: builtin.c:523
+#: builtin.c:528
msgid "`length(array)' is a gawk extension"
msgstr "`length(array)' 㯠gawk æ‹¡å¼µã§ã™"
-#: builtin.c:539
+#: builtin.c:544
msgid "length: received non-string argument"
msgstr "length: 文字列ã§ã¯ç„¡ã„引数をå—ã‘å–ã‚Šã¾ã—ãŸ"
-#: builtin.c:570
+#: builtin.c:575
msgid "log: received non-numeric argument"
msgstr "log: 数値ã§ã¯ç„¡ã„引数をå—ã‘å–ã‚Šã¾ã—ãŸ"
-#: builtin.c:573
+#: builtin.c:578
#, c-format
msgid "log: received negative argument %g"
msgstr "log: è² ã®å¼•æ•° %g ã‚’å—ã‘å–ã‚Šã¾ã—ãŸ"
-#: builtin.c:771 builtin.c:776
+#: builtin.c:776 builtin.c:781
msgid "fatal: must use `count$' on all formats or none"
msgstr ""
"致命的: `count$’ ã¯å…¨ã¦ã®æ›¸å¼ä½¿ç”¨ã™ã‚‹ã€ã¾ãŸã¯å…¨ã¦ã«ä½¿ç”¨ã—ãªã„ã®ã„ãšã‚Œã‹ã§ãªã‘"
"ã‚Œã°ã„ã‘ã¾ã›ã‚“"
-#: builtin.c:846
+#: builtin.c:851
#, c-format
msgid "field width is ignored for `%%' specifier"
msgstr "`%%' 指定用ã®ãƒ•ã‚£ãƒ¼ãƒ«ãƒ‰å¹…ã¯ç„¡è¦–ã•ã‚Œã¾ã™"
-#: builtin.c:848
+#: builtin.c:853
#, c-format
msgid "precision is ignored for `%%' specifier"
msgstr "`%%' 指定用ã®ãƒ•ã‚£ãƒ¼ãƒ«ãƒ‰å¹…ã¯ç„¡è¦–ã•ã‚Œã¾ã™"
-#: builtin.c:850
+#: builtin.c:855
#, c-format
msgid "field width and precision are ignored for `%%' specifier"
msgstr "`%%' 指定用ã®ãƒ•ã‚£ãƒ¼ãƒ«ãƒ‰å¹…ãŠã‚ˆã³ç²¾åº¦ã¯ç„¡è¦–ã•ã‚Œã¾ã™"
-#: builtin.c:901
+#: builtin.c:906
msgid "fatal: `$' is not permitted in awk formats"
msgstr "致命的: `$' 㯠awk å½¢å¼å†…ã§ã¯è¨±å¯ã•ã‚Œã¦ã„ã¾ã›ã‚“"
-#: builtin.c:910
+#: builtin.c:915
msgid "fatal: arg count with `$' must be > 0"
msgstr "致命的: `$' ã§æŒ‡å®šã™ã‚‹å¼•æ•°ã®ç•ªå·ã¯æ­£ã§ãªã‘ã‚Œã°ã„ã‘ã¾ã›ã‚“"
-#: builtin.c:914
+#: builtin.c:919
#, c-format
msgid "fatal: arg count %ld greater than total number of supplied arguments"
msgstr "致命的: 引数ã®ç•ªå· %ld ã¯å¼•æ•°ã¨ã—ã¦ä¸Žãˆã‚‰ã‚ŒãŸæ•°ã‚ˆã‚Šå¤§ãã„ã§ã™"
-#: builtin.c:918
+#: builtin.c:923
msgid "fatal: `$' not permitted after period in format"
msgstr "致命的: `$' ã¯æ›¸å¼æŒ‡å®šå†…ã®ãƒ”リオド `.' ã®å¾Œã«ä½¿ç”¨ã§ãã¾ã›ã‚“"
-#: builtin.c:934
+#: builtin.c:939
msgid "fatal: no `$' supplied for positional field width or precision"
msgstr "致命的: フィールド幅ã€ã¾ãŸã¯ç²¾åº¦ã®æŒ‡å®šå­ã« `$' ãŒä¸Žãˆã‚‰ã‚Œã¦ã„ã¾ã›ã‚“"
-#: builtin.c:1006
+#: builtin.c:1009
msgid "`l' is meaningless in awk formats; ignored"
msgstr "awk ã®æ›¸å¼æŒ‡å®šã§ã¯ `l' ã¯ç„¡æ„味ã§ã™ã€‚無視ã—ã¾ã™"
-#: builtin.c:1010
+#: builtin.c:1013
msgid "fatal: `l' is not permitted in POSIX awk formats"
msgstr "致命的: POSIX awk 書å¼å†…ã§ã¯ `l' ã¯è¨±å¯ã•ã‚Œã¦ã„ã¾ã›ã‚“"
-#: builtin.c:1023
+#: builtin.c:1026
msgid "`L' is meaningless in awk formats; ignored"
msgstr "awk ã®æ›¸å¼æŒ‡å®šã§ã¯ `L' ã¯ç„¡æ„味ã§ã™ã€‚無視ã—ã¾ã™ã€‚"
-#: builtin.c:1027
+#: builtin.c:1030
msgid "fatal: `L' is not permitted in POSIX awk formats"
msgstr "致命的: POSIX awk 書å¼å†…ã§ã¯ `L' ã¯è¨±å¯ã•ã‚Œã¦ã„ã¾ã›ã‚“"
-#: builtin.c:1040
+#: builtin.c:1043
msgid "`h' is meaningless in awk formats; ignored"
msgstr "awk ã®æ›¸å¼æŒ‡å®šã§ã¯ `h' ã¯ç„¡æ„味ã§ã™ã€‚無視ã—ã¾ã™ã€‚"
-#: builtin.c:1044
+#: builtin.c:1047
msgid "fatal: `h' is not permitted in POSIX awk formats"
msgstr "致命的: POSIX awk 書å¼å†…ã§ã¯ `h' ã¯è¨±å¯ã•ã‚Œã¦ã„ã¾ã›ã‚“"
-#: builtin.c:1439
+#: builtin.c:1463
#, c-format
msgid "[s]printf: value %g is out of range for `%%%c' format"
msgstr "[s]printf: 値 %g ã¯æ›¸å¼ `%%%c' ã®ç¯„囲外ã§ã™"
-#: builtin.c:1537
+#: builtin.c:1561
#, c-format
msgid "ignoring unknown format specifier character `%c': no argument converted"
msgstr "ä¸æ˜Žãªæ›¸å¼æŒ‡å®šæ–‡å­— `%c' を無視ã—ã¦ã„ã¾ã™: 変æ›ã•ã‚Œã‚‹å¼•æ•°ã¯ã‚ã‚Šã¾ã›ã‚“"
-#: builtin.c:1542
+#: builtin.c:1566
msgid "fatal: not enough arguments to satisfy format string"
msgstr "致命的: 書å¼æ–‡å­—列を満ãŸã™å分ãªæ•°ã®å¼•æ•°ãŒã‚ã‚Šã¾ã›ã‚“"
-#: builtin.c:1544
+#: builtin.c:1568
msgid "^ ran out for this one"
msgstr "^ ã“ã“ã‹ã‚‰è¶³ã‚Šã¾ã›ã‚“"
-#: builtin.c:1551
+#: builtin.c:1575
msgid "[s]printf: format specifier does not have control letter"
msgstr "[s]printf: 書å¼æŒ‡å®šå­ã«åˆ¶å¾¡æ–‡å­—ãŒã‚ã‚Šã¾ã›ã‚“"
-#: builtin.c:1554
+#: builtin.c:1578
msgid "too many arguments supplied for format string"
msgstr "書å¼æ–‡å­—列ã«ä¸Žãˆã‚‰ã‚Œã¦ã„る引数ãŒå¤šã™ãŽã¾ã™"
-#: builtin.c:1610
+#: builtin.c:1634
#, fuzzy
msgid "sprintf: no arguments"
msgstr "printf: 引数ãŒã‚ã‚Šã¾ã›ã‚“"
-#: builtin.c:1633 builtin.c:1644
+#: builtin.c:1657 builtin.c:1668
msgid "printf: no arguments"
msgstr "printf: 引数ãŒã‚ã‚Šã¾ã›ã‚“"
-#: builtin.c:1687
+#: builtin.c:1711
msgid "sqrt: received non-numeric argument"
msgstr "sqrt: 数値ã§ã¯ç„¡ã„引数をå—ã‘å–ã‚Šã¾ã—ãŸ"
-#: builtin.c:1691
+#: builtin.c:1715
#, c-format
msgid "sqrt: called with negative argument %g"
msgstr "sqrt: è² ã®å€¤ %g を引数ã«ä½¿ç”¨ã—ã¦å‘¼ã³å‡ºã•ã‚Œã¾ã—ãŸ"
-#: builtin.c:1722
+#: builtin.c:1746
#, c-format
msgid "substr: length %g is not >= 1"
msgstr "substr: é•·ã• %g ㌠1 以上ã§ã¯ã‚ã‚Šã¾ã›ã‚“"
-#: builtin.c:1724
+#: builtin.c:1748
#, c-format
msgid "substr: length %g is not >= 0"
msgstr "substr: é•·ã• %g ㌠0 以上ã§ã¯ã‚ã‚Šã¾ã›ã‚“"
-#: builtin.c:1731
+#: builtin.c:1755
#, c-format
msgid "substr: non-integer length %g will be truncated"
msgstr "substr: 文字数 %g ã®å°æ•°ç‚¹ä»¥ä¸‹ã¯åˆ‡ã‚Šæ¨ã¦ã¾ã™ã€‚"
-#: builtin.c:1736
+#: builtin.c:1760
#, c-format
msgid "substr: length %g too big for string indexing, truncating to %g"
msgstr "substr: 文字数 %g ã¯æœ€å¤§å€¤ã‚’超ãˆã¦ã„ã¾ã™ã€‚%g を使ã„ã¾ã™ã€‚"
-#: builtin.c:1748
+#: builtin.c:1772
#, c-format
msgid "substr: start index %g is invalid, using 1"
msgstr "substr: 開始インデックス %g ãŒç„¡åŠ¹ã§ã™ã€‚1を使用ã—ã¾ã™"
-#: builtin.c:1753
+#: builtin.c:1777
#, c-format
msgid "substr: non-integer start index %g will be truncated"
msgstr "substr: 開始インデックス %g ãŒéžæ•´æ•°ã®ãŸã‚ã€å€¤ã¯åˆ‡ã‚Šæ¨ã¦ã‚‰ã‚Œã¾ã™"
-#: builtin.c:1778
+#: builtin.c:1802
msgid "substr: source string is zero length"
msgstr "substr: 文字列ã®é•·ã•ãŒã‚¼ãƒ­ã§ã™ã€‚"
-#: builtin.c:1794
+#: builtin.c:1818
#, c-format
msgid "substr: start index %g is past end of string"
msgstr "substr: 開始インデックス %g ãŒæ–‡å­—列終端ã®å¾Œã«ã‚ã‚Šã¾ã™"
-#: builtin.c:1802
+#: builtin.c:1826
#, c-format
msgid ""
"substr: length %g at start index %g exceeds length of first argument (%lu)"
@@ -738,189 +748,189 @@ msgstr ""
"substr: 開始インデックス %2$g ã‹ã‚‰ã®é•·ã• %1$g ã¯ç¬¬ä¸€å¼•æ•°ã®é•·ã•ã‚’超ãˆã¦ã„ã¾ã™ "
"(%3$lu)"
-#: builtin.c:1876
+#: builtin.c:1900
msgid "strftime: format value in PROCINFO[\"strftime\"] has numeric type"
msgstr "strftime: PROCINFO[\"strftime\"] ã®æ›¸å¼ã®å€¤ã¯æ•°å€¤åž‹ã§ã™"
-#: builtin.c:1899
+#: builtin.c:1923
msgid "strftime: received non-numeric second argument"
msgstr "strftime: éžæ•°å€¤ã®ç¬¬äºŒå¼•æ•°ã‚’å—ã‘å–ã‚Šã¾ã—ãŸ"
-#: builtin.c:1903
+#: builtin.c:1927
msgid "strftime: second argument less than 0 or too big for time_t"
msgstr ""
-#: builtin.c:1910
+#: builtin.c:1934
msgid "strftime: received non-string first argument"
msgstr "strftime: éžæ–‡å­—列ã®ç¬¬ä¸€å¼•æ•°ã‚’å—ã‘å–ã‚Šã¾ã—ãŸ"
-#: builtin.c:1917
+#: builtin.c:1941
msgid "strftime: received empty format string"
msgstr "strftime: 空ã®æ›¸å¼æ–‡å­—列をå—ã‘å–ã‚Šã¾ã—ãŸ"
-#: builtin.c:1983
+#: builtin.c:2007
msgid "mktime: received non-string argument"
msgstr "mktime: éžæ–‡å­—列引数をå—ã‘å–ã‚Šã¾ã—ãŸ"
-#: builtin.c:2000
+#: builtin.c:2024
msgid "mktime: at least one of the values is out of the default range"
msgstr "mktime: 一ã¤ä»¥ä¸Šã®å€¤ãŒãƒ‡ãƒ•ã‚©ãƒ«ãƒˆã®ç¯„囲を超ãˆã¦ã„ã¾ã™"
-#: builtin.c:2035
+#: builtin.c:2059
msgid "'system' function not allowed in sandbox mode"
msgstr "サンドボックスモードã§ã¯ 'system' 関数ã¯è¨±å¯ã•ã‚Œã¦ã„ã¾ã›ã‚“"
-#: builtin.c:2040
+#: builtin.c:2064
msgid "system: received non-string argument"
msgstr "system: 文字列ã§ã¯ç„¡ã„引数をå—ã‘å–ã‚Šã¾ã—ãŸ"
-#: builtin.c:2160
+#: builtin.c:2184
#, c-format
msgid "reference to uninitialized field `$%d'"
msgstr "åˆæœŸåŒ–ã•ã‚Œã¦ã„ãªã„フィールド `$%d' ã¸ã®å‚ç…§ã§ã™"
-#: builtin.c:2247
+#: builtin.c:2271
msgid "tolower: received non-string argument"
msgstr "tolower: éžæ–‡å­—列引数をå—ã‘å–ã‚Šã¾ã—ãŸ"
-#: builtin.c:2281
+#: builtin.c:2305
msgid "toupper: received non-string argument"
msgstr "toupper: éžæ–‡å­—列引数をå—ã‘å–ã‚Šã¾ã—ãŸ"
-#: builtin.c:2317 mpfr.c:672
+#: builtin.c:2341 mpfr.c:672
msgid "atan2: received non-numeric first argument"
msgstr "atan2: éžæ•°å€¤ã®ç¬¬ä¸€å¼•æ•°ã‚’å—ã‘å–ã‚Šã¾ã—ãŸ"
-#: builtin.c:2319 mpfr.c:674
+#: builtin.c:2343 mpfr.c:674
msgid "atan2: received non-numeric second argument"
msgstr "atan2: éžæ•°å€¤ã®ç¬¬äºŒå¼•æ•°ã‚’å—ã‘å–ã‚Šã¾ã—ãŸ"
-#: builtin.c:2338
+#: builtin.c:2362
msgid "sin: received non-numeric argument"
msgstr "sin: éžæ•°å€¤ã®å¼•æ•°ã‚’å—ã‘å–ã‚Šã¾ã—ãŸ"
-#: builtin.c:2354
+#: builtin.c:2378
msgid "cos: received non-numeric argument"
msgstr "cos: éžæ•°å€¤ã®å¼•æ•°ã‚’å—ã‘å–ã‚Šã¾ã—ãŸ"
-#: builtin.c:2407 mpfr.c:1156
+#: builtin.c:2431 mpfr.c:1156
msgid "srand: received non-numeric argument"
msgstr "srand: éžæ•°å€¤ã®å¼•æ•°ã‚’å—ã‘å–ã‚Šã¾ã—ãŸ"
-#: builtin.c:2438
+#: builtin.c:2462
msgid "match: third argument is not an array"
msgstr "match: 第三引数ãŒé…列ã§ã¯ã‚ã‚Šã¾ã›ã‚“"
-#: builtin.c:2710
+#: builtin.c:2734
msgid "gensub: third argument of 0 treated as 1"
msgstr "gensub: 第三引数㌠0 ã§ã™ã€‚1 を代ã‚ã‚Šã«ä½¿ç”¨ã—ã¾ã™"
-#: builtin.c:3003
+#: builtin.c:3030
msgid "lshift: received non-numeric first argument"
msgstr "lshift: éžæ•°å€¤ã®ç¬¬ä¸€å¼•æ•°ã‚’å—ã‘å–ã‚Šã¾ã—ãŸ"
-#: builtin.c:3005
+#: builtin.c:3032
msgid "lshift: received non-numeric second argument"
msgstr "lshift: éžæ•°å€¤ã®ç¬¬äºŒå¼•æ•°ã‚’å—ã‘å–ã‚Šã¾ã—ãŸ"
-#: builtin.c:3011
+#: builtin.c:3038
#, fuzzy, c-format
msgid "lshift(%f, %f): negative values will give strange results"
msgstr "lshift(%lf, %lf): è² ã®æ•°å€¤ã‚’使用ã™ã‚‹ã¨ç•°å¸¸ãªçµæžœã«ãªã‚Šã¾ã™"
-#: builtin.c:3013
+#: builtin.c:3040
#, fuzzy, c-format
msgid "lshift(%f, %f): fractional values will be truncated"
msgstr "lshift(%lf, %lf): å°æ•°ç‚¹ä»¥ä¸‹ã¯åˆ‡ã‚Šæ¨ã¦ã‚‰ã‚Œã¾ã™"
-#: builtin.c:3015
+#: builtin.c:3042
#, fuzzy, c-format
msgid "lshift(%f, %f): too large shift value will give strange results"
msgstr "lshift(%lf, %lf): シフト値ãŒå¤§ãéŽãŽã‚‹ã¨ç•°å¸¸ãªçµæžœã«ãªã‚Šã¾ã™"
-#: builtin.c:3040
+#: builtin.c:3067
msgid "rshift: received non-numeric first argument"
msgstr "rshift: éžæ•°å€¤ã®ç¬¬ä¸€å¼•æ•°ã‚’å—ã‘å–ã‚Šã¾ã—ãŸ"
-#: builtin.c:3042
+#: builtin.c:3069
msgid "rshift: received non-numeric second argument"
msgstr "rshift: éžæ•°å€¤ã®ç¬¬äºŒå¼•æ•°ã‚’å—ã‘å–ã‚Šã¾ã—ãŸ"
-#: builtin.c:3048
+#: builtin.c:3075
#, fuzzy, c-format
msgid "rshift(%f, %f): negative values will give strange results"
msgstr "rshift(%lf, %lf): è² ã®æ•°å€¤ã‚’使用ã™ã‚‹ã¨ç•°å¸¸ãªçµæžœã«ãªã‚Šã¾ã™"
-#: builtin.c:3050
+#: builtin.c:3077
#, fuzzy, c-format
msgid "rshift(%f, %f): fractional values will be truncated"
msgstr "rshift(%lf, %lf): å°æ•°ç‚¹ä»¥ä¸‹ã¯åˆ‡ã‚Šæ¨ã¦ã‚‰ã‚Œã¾ã™"
-#: builtin.c:3052
+#: builtin.c:3079
#, fuzzy, c-format
msgid "rshift(%f, %f): too large shift value will give strange results"
msgstr "rshift(%lf, %lf): シフト値ãŒå¤§ãéŽãŽã‚‹ã¨ç•°å¸¸ãªçµæžœã«ãªã‚Šã¾ã™"
-#: builtin.c:3077 mpfr.c:968
+#: builtin.c:3104 mpfr.c:968
#, fuzzy
msgid "and: called with less than two arguments"
msgstr "sqrt: è² ã®å€¤ %g を引数ã«ä½¿ç”¨ã—ã¦å‘¼ã³å‡ºã•ã‚Œã¾ã—ãŸ"
-#: builtin.c:3082
+#: builtin.c:3109
#, fuzzy, c-format
msgid "and: argument %d is non-numeric"
msgstr "exp: 引数 %g ãŒç¯„囲外ã§ã™"
-#: builtin.c:3086
+#: builtin.c:3113
#, fuzzy, c-format
msgid "and: argument %d negative value %g will give strange results"
msgstr "and(%lf, %lf): è² ã®æ•°å€¤ã‚’使用ã™ã‚‹ã¨ç•°å¸¸ãªçµæžœã«ãªã‚Šã¾ã™"
-#: builtin.c:3109 mpfr.c:1000
+#: builtin.c:3136 mpfr.c:1000
#, fuzzy
msgid "or: called with less than two arguments"
msgstr "sqrt: è² ã®å€¤ %g を引数ã«ä½¿ç”¨ã—ã¦å‘¼ã³å‡ºã•ã‚Œã¾ã—ãŸ"
-#: builtin.c:3114
+#: builtin.c:3141
#, fuzzy, c-format
msgid "or: argument %d is non-numeric"
msgstr "exp: 引数 %g ãŒç¯„囲外ã§ã™"
-#: builtin.c:3118
+#: builtin.c:3145
#, fuzzy, c-format
msgid "or: argument %d negative value %g will give strange results"
msgstr "compl(%lf): è² ã®æ•°å€¤ã‚’使用ã™ã‚‹ã¨ç•°å¸¸ãªçµæžœã«ãªã‚Šã¾ã™"
-#: builtin.c:3140 mpfr.c:1031
+#: builtin.c:3167 mpfr.c:1031
#, fuzzy
msgid "xor: called with less than two arguments"
msgstr "sqrt: è² ã®å€¤ %g を引数ã«ä½¿ç”¨ã—ã¦å‘¼ã³å‡ºã•ã‚Œã¾ã—ãŸ"
-#: builtin.c:3146
+#: builtin.c:3173
#, fuzzy, c-format
msgid "xor: argument %d is non-numeric"
msgstr "exp: 引数 %g ãŒç¯„囲外ã§ã™"
-#: builtin.c:3150
+#: builtin.c:3177
#, fuzzy, c-format
msgid "xor: argument %d negative value %g will give strange results"
msgstr "xor(%lf, %lf): è² ã®æ•°å€¤ã‚’使用ã™ã‚‹ã¨ç•°å¸¸ãªçµæžœã«ãªã‚Šã¾ã™"
-#: builtin.c:3175 mpfr.c:787
+#: builtin.c:3202 mpfr.c:787
msgid "compl: received non-numeric argument"
msgstr "compl: éžæ•°å€¤ã®å¼•æ•°ã‚’å—ã‘å–ã‚Šã¾ã—ãŸ"
-#: builtin.c:3181
+#: builtin.c:3208
#, fuzzy, c-format
msgid "compl(%f): negative value will give strange results"
msgstr "compl(%lf): è² ã®æ•°å€¤ã‚’使用ã™ã‚‹ã¨ç•°å¸¸ãªçµæžœã«ãªã‚Šã¾ã™"
-#: builtin.c:3183
+#: builtin.c:3210
#, fuzzy, c-format
msgid "compl(%f): fractional value will be truncated"
msgstr "compl(%lf): å°æ•°ç‚¹ä»¥ä¸‹ã¯åˆ‡ã‚Šæ¨ã¦ã‚‰ã‚Œã¾ã™"
-#: builtin.c:3352
+#: builtin.c:3379
#, c-format
msgid "dcgettext: `%s' is not a valid locale category"
msgstr "dcgettext: `%s' ã¯ç„¡åŠ¹ãªãƒ­ã‚±ãƒ¼ãƒ«åŒºåˆ†ã§ã™"
@@ -1044,8 +1054,8 @@ msgstr ""
#: command.y:823
msgid ""
-"commands [num] - starts a list of commands to be executed at a breakpoint"
-"(watchpoint) hit."
+"commands [num] - starts a list of commands to be executed at a "
+"breakpoint(watchpoint) hit."
msgstr ""
#: command.y:825
@@ -1202,7 +1212,7 @@ msgstr ""
msgid "watch var - set a watchpoint for a variable."
msgstr ""
-#: command.y:1011 debug.c:395 msg.c:128
+#: command.y:1011 debug.c:401 msg.c:135
#, c-format
msgid "error: "
msgstr "エラー: "
@@ -1242,557 +1252,557 @@ msgstr "無効ãªç…§åˆæ–‡å­—ã§ã™"
msgid "undefined command: %s\n"
msgstr ""
-#: debug.c:246
+#: debug.c:252
msgid "set or show the number of lines to keep in history file."
msgstr ""
-#: debug.c:248
+#: debug.c:254
msgid "set or show the list command window size."
msgstr ""
-#: debug.c:250
+#: debug.c:256
msgid "set or show gawk output file."
msgstr ""
-#: debug.c:252
+#: debug.c:258
msgid "set or show debugger prompt."
msgstr ""
-#: debug.c:254
+#: debug.c:260
msgid "(un)set or show saving of command history (value=on|off)."
msgstr ""
-#: debug.c:256
+#: debug.c:262
msgid "(un)set or show saving of options (value=on|off)."
msgstr ""
-#: debug.c:258
+#: debug.c:264
msgid "(un)set or show instruction tracing (value=on|off)."
msgstr ""
-#: debug.c:339
+#: debug.c:345
msgid "program not running."
msgstr ""
-#: debug.c:442 debug.c:597
+#: debug.c:448 debug.c:606
#, fuzzy, c-format
msgid "can't read source file `%s' (%s)"
msgstr "ソースファイル `%s' を読ã¿è¾¼ã‚ã¾ã›ã‚“ (%s)"
-#: debug.c:447
+#: debug.c:453
#, fuzzy, c-format
msgid "source file `%s' is empty.\n"
msgstr "ソースファイル `%s' ã¯ç©ºã§ã™"
-#: debug.c:474
+#: debug.c:480
msgid "no current source file."
msgstr ""
-#: debug.c:499
+#: debug.c:505
#, fuzzy, c-format
msgid "cannot find source file named `%s' (%s)"
msgstr "ソースファイル `%s' を読ã¿è¾¼ã‚ã¾ã›ã‚“ (%s)"
-#: debug.c:523
+#: debug.c:529
#, c-format
msgid "WARNING: source file `%s' modified since program compilation.\n"
msgstr ""
-#: debug.c:542
+#: debug.c:551
#, c-format
msgid "line number %d out of range; `%s' has %d lines"
msgstr ""
-#: debug.c:602
+#: debug.c:611
#, fuzzy, c-format
msgid "unexpected eof while reading file `%s', line %d"
msgstr "予期ã—ãªã„改行ã¾ãŸã¯æ–‡å­—列終端ã§ã™"
-#: debug.c:611
+#: debug.c:620
#, c-format
msgid "source file `%s' modified since start of program execution"
msgstr ""
-#: debug.c:723
+#: debug.c:732
#, fuzzy, c-format
msgid "Current source file: %s\n"
msgstr "ソースファイル `%s' ã¯æ—¢ã«èª­ã¿è¾¼ã¾ã‚Œã¦ã„ã¾ã™"
-#: debug.c:724
+#: debug.c:733
#, c-format
msgid "Number of lines: %d\n"
msgstr ""
-#: debug.c:731
+#: debug.c:740
#, c-format
msgid "Source file (lines): %s (%d)\n"
msgstr ""
-#: debug.c:745
+#: debug.c:754
msgid ""
"Number Disp Enabled Location\n"
"\n"
msgstr ""
-#: debug.c:756
+#: debug.c:765
#, c-format
msgid "\tno of hits = %ld\n"
msgstr ""
-#: debug.c:758
+#: debug.c:767
#, c-format
msgid "\tignore next %ld hit(s)\n"
msgstr ""
-#: debug.c:760 debug.c:900
+#: debug.c:769 debug.c:909
#, c-format
msgid "\tstop condition: %s\n"
msgstr ""
-#: debug.c:762 debug.c:902
+#: debug.c:771 debug.c:911
msgid "\tcommands:\n"
msgstr ""
-#: debug.c:784
+#: debug.c:793
#, c-format
msgid "Current frame: "
msgstr ""
-#: debug.c:787
+#: debug.c:796
#, c-format
msgid "Called by frame: "
msgstr ""
-#: debug.c:791
+#: debug.c:800
#, c-format
msgid "Caller of frame: "
msgstr ""
-#: debug.c:809
+#: debug.c:818
#, c-format
msgid "None in main().\n"
msgstr ""
-#: debug.c:839
+#: debug.c:848
#, fuzzy
msgid "No arguments.\n"
msgstr "printf: 引数ãŒã‚ã‚Šã¾ã›ã‚“"
-#: debug.c:840
+#: debug.c:849
msgid "No locals.\n"
msgstr ""
-#: debug.c:848
+#: debug.c:857
msgid ""
"All defined variables:\n"
"\n"
msgstr ""
-#: debug.c:858
+#: debug.c:867
msgid ""
"All defined functions:\n"
"\n"
msgstr ""
-#: debug.c:877
+#: debug.c:886
msgid ""
"Auto-display variables:\n"
"\n"
msgstr ""
-#: debug.c:880
+#: debug.c:889
msgid ""
"Watch variables:\n"
"\n"
msgstr ""
-#: debug.c:1020
+#: debug.c:1029
#, fuzzy, c-format
msgid "no symbol `%s' in current context\n"
msgstr "`next' 㯠`%s' ã‹ã‚‰å‘¼ã³å‡ºã™ã“ã¨ãŒå‡ºæ¥ã¾ã›ã‚“"
-#: debug.c:1032 debug.c:1418
+#: debug.c:1041 debug.c:1427
#, fuzzy, c-format
msgid "`%s' is not an array\n"
msgstr "`%s' ã¯ä¸æ­£ãªå¤‰æ•°åã§ã™"
-#: debug.c:1046
+#: debug.c:1055
#, fuzzy, c-format
msgid "$%ld = uninitialized field\n"
msgstr "åˆæœŸåŒ–ã•ã‚Œã¦ã„ãªã„フィールド `$%d' ã¸ã®å‚ç…§ã§ã™"
-#: debug.c:1067
+#: debug.c:1076
#, fuzzy, c-format
msgid "array `%s' is empty\n"
msgstr "データファイル `%s' ã¯ç©ºã§ã™ã€‚"
-#: debug.c:1110 debug.c:1162
+#: debug.c:1119 debug.c:1171
#, fuzzy, c-format
msgid "[\"%s\"] not in array `%s'\n"
msgstr "delete: é…列 `%2$s' 内ã«ã‚¤ãƒ³ãƒ‡ãƒƒã‚¯ã‚¹ `%1$s' ãŒã‚ã‚Šã¾ã›ã‚“"
-#: debug.c:1166
+#: debug.c:1175
#, c-format
msgid "`%s[\"%s\"]' is not an array\n"
msgstr ""
-#: debug.c:1227 debug.c:4949
+#: debug.c:1236 debug.c:4964
#, fuzzy, c-format
msgid "`%s' is not a scalar variable"
msgstr "`%s' ã¯ä¸æ­£ãªå¤‰æ•°åã§ã™"
-#: debug.c:1249 debug.c:4979
+#: debug.c:1258 debug.c:4994
#, fuzzy, c-format
msgid "attempt to use array `%s[\"%s\"]' in a scalar context"
msgstr "スカラーコンテキスト内ã§é…列 `%s[\"%.*s\"]' ã®ä½¿ç”¨ã®è©¦ã¿ã§ã™"
-#: debug.c:1271 debug.c:4990
+#: debug.c:1280 debug.c:5005
#, fuzzy, c-format
msgid "attempt to use scalar `%s[\"%s\"]' as array"
msgstr "スカラー `%s[\"%.*s\"]' ã‚’é…列ã¨ã—ã¦ä½¿ç”¨ã™ã‚‹è©¦ã¿ã§ã™"
-#: debug.c:1414
+#: debug.c:1423
#, fuzzy, c-format
msgid "`%s' is a function"
msgstr "`%s' ã¯é–¢æ•°åã¨ã—ã¦ã¯ç„¡åŠ¹ã§ã™"
-#: debug.c:1456
+#: debug.c:1465
#, c-format
msgid "watchpoint %d is unconditional\n"
msgstr ""
-#: debug.c:1490
+#: debug.c:1499
#, c-format
msgid "No display item numbered %ld"
msgstr ""
-#: debug.c:1493
+#: debug.c:1502
#, c-format
msgid "No watch item numbered %ld"
msgstr ""
-#: debug.c:1519
+#: debug.c:1528
#, fuzzy, c-format
msgid "%d: [\"%s\"] not in array `%s'\n"
msgstr "delete: é…列 `%2$s' 内ã«ã‚¤ãƒ³ãƒ‡ãƒƒã‚¯ã‚¹ `%1$s' ãŒã‚ã‚Šã¾ã›ã‚“"
-#: debug.c:1758
+#: debug.c:1767
#, fuzzy
msgid "attempt to use scalar value as array"
msgstr "スカラー値をé…列ã¨ã—ã¦ä½¿ç”¨ã™ã‚‹è©¦ã¿ã§ã™"
-#: debug.c:1847
+#: debug.c:1856
#, c-format
msgid "Watchpoint %d deleted because parameter is out of scope.\n"
msgstr ""
-#: debug.c:1858
+#: debug.c:1867
#, c-format
msgid "Display %d deleted because parameter is out of scope.\n"
msgstr ""
-#: debug.c:1891
+#: debug.c:1900
#, c-format
msgid " in file `%s', line %d\n"
msgstr ""
-#: debug.c:1912
+#: debug.c:1921
#, c-format
msgid " at `%s':%d"
msgstr ""
-#: debug.c:1928 debug.c:1991
+#: debug.c:1937 debug.c:2000
#, c-format
msgid "#%ld\tin "
msgstr ""
-#: debug.c:1965
+#: debug.c:1974
#, c-format
msgid "More stack frames follow ...\n"
msgstr ""
-#: debug.c:2008
+#: debug.c:2017
#, fuzzy
msgid "invalid frame number"
msgstr "無効ãªç¯„囲終了ã§ã™"
-#: debug.c:2180
+#: debug.c:2200
#, c-format
msgid "Note: breakpoint %d (enabled, ignore next %ld hits), also set at %s:%d"
msgstr ""
-#: debug.c:2187
+#: debug.c:2207
#, c-format
msgid "Note: breakpoint %d (enabled), also set at %s:%d"
msgstr ""
-#: debug.c:2194
+#: debug.c:2214
#, c-format
msgid "Note: breakpoint %d (disabled, ignore next %ld hits), also set at %s:%d"
msgstr ""
-#: debug.c:2201
+#: debug.c:2221
#, c-format
msgid "Note: breakpoint %d (disabled), also set at %s:%d"
msgstr ""
-#: debug.c:2218
+#: debug.c:2238
#, c-format
msgid "Breakpoint %d set at file `%s', line %d\n"
msgstr ""
-#: debug.c:2320
+#: debug.c:2340
#, c-format
msgid "Can't set breakpoint in file `%s'\n"
msgstr ""
-#: debug.c:2349 debug.c:2472 debug.c:3330
+#: debug.c:2369 debug.c:2492 debug.c:3350
#, fuzzy, c-format
msgid "line number %d in file `%s' out of range"
msgstr "exp: 引数 %g ãŒç¯„囲外ã§ã™"
-#: debug.c:2353
+#: debug.c:2373
#, c-format
msgid "Can't find rule!!!\n"
msgstr ""
-#: debug.c:2355
+#: debug.c:2375
#, c-format
msgid "Can't set breakpoint at `%s':%d\n"
msgstr ""
-#: debug.c:2367
+#: debug.c:2387
#, c-format
msgid "Can't set breakpoint in function `%s'\n"
msgstr ""
-#: debug.c:2383
+#: debug.c:2403
#, c-format
msgid "breakpoint %d set at file `%s', line %d is unconditional\n"
msgstr ""
-#: debug.c:2488 debug.c:2510
+#: debug.c:2508 debug.c:2530
#, c-format
msgid "Deleted breakpoint %d"
msgstr ""
-#: debug.c:2494
+#: debug.c:2514
#, c-format
msgid "No breakpoint(s) at entry to function `%s'\n"
msgstr ""
-#: debug.c:2521
+#: debug.c:2541
#, fuzzy, c-format
msgid "No breakpoint at file `%s', line #%d\n"
msgstr "入力ファイル `%s' を読ã¿è¾¼ã¿ä¸­ã«ã‚¨ãƒ©ãƒ¼ãŒç™ºç”Ÿã—ã¾ã—ãŸ: %s"
-#: debug.c:2576 debug.c:2617 debug.c:2637 debug.c:2680
+#: debug.c:2596 debug.c:2637 debug.c:2657 debug.c:2700
msgid "invalid breakpoint number"
msgstr ""
-#: debug.c:2592
+#: debug.c:2612
msgid "Delete all breakpoints? (y or n) "
msgstr ""
-#: debug.c:2593 debug.c:2903 debug.c:2956
+#: debug.c:2613 debug.c:2923 debug.c:2976
msgid "y"
msgstr ""
-#: debug.c:2642
+#: debug.c:2662
#, c-format
msgid "Will ignore next %ld crossing(s) of breakpoint %d.\n"
msgstr ""
-#: debug.c:2646
+#: debug.c:2666
#, c-format
msgid "Will stop next time breakpoint %d is reached.\n"
msgstr ""
-#: debug.c:2763
+#: debug.c:2783
#, c-format
msgid "Can only debug programs provided with the `-f' option.\n"
msgstr ""
-#: debug.c:2888
+#: debug.c:2908
#, c-format
msgid "Failed to restart debugger"
msgstr ""
-#: debug.c:2902
+#: debug.c:2922
msgid "Program already running. Restart from beginning (y/n)? "
msgstr ""
-#: debug.c:2906
+#: debug.c:2926
#, c-format
msgid "Program not restarted\n"
msgstr ""
-#: debug.c:2916
+#: debug.c:2936
#, c-format
msgid "error: cannot restart, operation not allowed\n"
msgstr ""
-#: debug.c:2922
+#: debug.c:2942
#, c-format
msgid "error (%s): cannot restart, ignoring rest of the commands\n"
msgstr ""
-#: debug.c:2930
+#: debug.c:2950
#, c-format
msgid "Starting program: \n"
msgstr ""
-#: debug.c:2939
+#: debug.c:2959
#, c-format
msgid "Program exited %s with exit value: %d\n"
msgstr ""
-#: debug.c:2955
+#: debug.c:2975
msgid "The program is running. Exit anyway (y/n)? "
msgstr ""
-#: debug.c:2990
+#: debug.c:3010
#, c-format
msgid "Not stopped at any breakpoint; argument ignored.\n"
msgstr ""
-#: debug.c:2995
+#: debug.c:3015
#, c-format
msgid "invalid breakpoint number %d."
msgstr ""
-#: debug.c:3000
+#: debug.c:3020
#, c-format
msgid "Will ignore next %ld crossings of breakpoint %d.\n"
msgstr ""
-#: debug.c:3187
+#: debug.c:3207
#, c-format
msgid "'finish' not meaningful in the outermost frame main()\n"
msgstr ""
-#: debug.c:3192
+#: debug.c:3212
#, c-format
msgid "Run till return from "
msgstr ""
-#: debug.c:3235
+#: debug.c:3255
#, c-format
msgid "'return' not meaningful in the outermost frame main()\n"
msgstr ""
-#: debug.c:3349
+#: debug.c:3369
#, c-format
msgid "Can't find specified location in function `%s'\n"
msgstr ""
-#: debug.c:3357
+#: debug.c:3377
#, fuzzy, c-format
msgid "invalid source line %d in file `%s'"
msgstr "ソースファイル `%s' ã¯æ—¢ã«èª­ã¿è¾¼ã¾ã‚Œã¦ã„ã¾ã™"
-#: debug.c:3372
+#: debug.c:3392
#, c-format
msgid "Can't find specified location %d in file `%s'\n"
msgstr ""
-#: debug.c:3404
+#: debug.c:3424
#, fuzzy, c-format
msgid "element not in array\n"
msgstr "delete: é…列 `%2$s' 内ã«ã‚¤ãƒ³ãƒ‡ãƒƒã‚¯ã‚¹ `%1$s' ãŒã‚ã‚Šã¾ã›ã‚“"
-#: debug.c:3404
+#: debug.c:3424
#, c-format
msgid "untyped variable\n"
msgstr ""
-#: debug.c:3446
+#: debug.c:3466
#, c-format
msgid "Stopping in %s ...\n"
msgstr ""
-#: debug.c:3523
+#: debug.c:3543
#, c-format
msgid "'finish' not meaningful with non-local jump '%s'\n"
msgstr ""
-#: debug.c:3530
+#: debug.c:3550
#, c-format
msgid "'until' not meaningful with non-local jump '%s'\n"
msgstr ""
-#: debug.c:4165
+#: debug.c:4185
msgid "\t------[Enter] to continue or q [Enter] to quit------"
msgstr ""
-#: debug.c:4166
+#: debug.c:4186
msgid "q"
msgstr ""
-#: debug.c:4986
+#: debug.c:5001
#, fuzzy, c-format
msgid "[\"%s\"] not in array `%s'"
msgstr "delete: é…列 `%2$s' 内ã«ã‚¤ãƒ³ãƒ‡ãƒƒã‚¯ã‚¹ `%1$s' ãŒã‚ã‚Šã¾ã›ã‚“"
-#: debug.c:5192
+#: debug.c:5207
#, c-format
msgid "sending output to stdout\n"
msgstr ""
-#: debug.c:5232
+#: debug.c:5247
msgid "invalid number"
msgstr ""
-#: debug.c:5366
+#: debug.c:5381
#, fuzzy, c-format
msgid "`%s' not allowed in current context; statement ignored"
msgstr "`next' 㯠`%s' ã‹ã‚‰å‘¼ã³å‡ºã™ã“ã¨ãŒå‡ºæ¥ã¾ã›ã‚“"
-#: debug.c:5374
+#: debug.c:5389
#, fuzzy
msgid "`return' not allowed in current context; statement ignored"
msgstr "`next' 㯠`%s' ã‹ã‚‰å‘¼ã³å‡ºã™ã“ã¨ãŒå‡ºæ¥ã¾ã›ã‚“"
-#: debug.c:5575
+#: debug.c:5590
#, c-format
msgid "No symbol `%s' in current context"
msgstr ""
-#: dfa.c:998 dfa.c:1001 dfa.c:1021 dfa.c:1031 dfa.c:1043 dfa.c:1094 dfa.c:1103
-#: dfa.c:1106 dfa.c:1111 dfa.c:1124 dfa.c:1192
+#: dfa.c:1118 dfa.c:1121 dfa.c:1142 dfa.c:1150 dfa.c:1162 dfa.c:1197
+#: dfa.c:1206 dfa.c:1209 dfa.c:1214 dfa.c:1228 dfa.c:1275
msgid "unbalanced ["
msgstr ""
-#: dfa.c:1052
+#: dfa.c:1174
#, fuzzy
msgid "invalid character class"
msgstr "無効ãªæ–‡å­—クラスåã§ã™"
-#: dfa.c:1229
+#: dfa.c:1316
msgid "character class syntax is [[:space:]], not [:space:]"
msgstr ""
-#: dfa.c:1281
+#: dfa.c:1366
msgid "unfinished \\ escape"
msgstr ""
-#: dfa.c:1428 regcomp.c:161
+#: dfa.c:1513 regcomp.c:161
msgid "Invalid content of \\{\\}"
msgstr "\\{\\} ã®ä¸­èº«ãŒç„¡åŠ¹ã§ã™"
-#: dfa.c:1431 regcomp.c:176
+#: dfa.c:1516 regcomp.c:176
msgid "Regular expression too big"
msgstr "æ­£è¦è¡¨ç¾ãŒå¤§ãã™ãŽã¾ã™"
-#: dfa.c:1816
+#: dfa.c:1936
msgid "unbalanced ("
msgstr ""
-#: dfa.c:1943
+#: dfa.c:2062
msgid "no syntax specified"
msgstr ""
-#: dfa.c:1951
+#: dfa.c:2070
msgid "unbalanced )"
msgstr ""
@@ -1811,11 +1821,11 @@ msgstr "ä¸æ˜Žãªã‚ªãƒšã‚³ãƒ¼ãƒ‰ %d ã§ã™"
msgid "opcode %s not an operator or keyword"
msgstr "オペコード %s ã¯æ¼”ç®—å­ã¾ãŸã¯äºˆç´„語ã§ã¯ã‚ã‚Šã¾ã›ã‚“"
-#: eval.c:471
+#: eval.c:472
msgid "buffer overflow in genflags2str"
msgstr "genflags2str 内ã§ãƒãƒƒãƒ•ã‚¡ã‚ªãƒ¼ãƒãƒ¼ãƒ•ãƒ­ãƒ¼ãŒç™ºç”Ÿã—ã¾ã—ãŸ"
-#: eval.c:674
+#: eval.c:675
#, c-format
msgid ""
"\n"
@@ -1826,71 +1836,71 @@ msgstr ""
"\t# 呼出関数スタック:\n"
"\n"
-#: eval.c:703
+#: eval.c:704
msgid "`IGNORECASE' is a gawk extension"
msgstr "`IGNORECASE' 㯠gawk æ‹¡å¼µã§ã™"
-#: eval.c:735
+#: eval.c:736
msgid "`BINMODE' is a gawk extension"
msgstr "`BINMODE' 㯠gawk æ‹¡å¼µã§ã™"
-#: eval.c:793
+#: eval.c:794
#, c-format
msgid "BINMODE value `%s' is invalid, treated as 3"
msgstr "BINMODE 値 `%s' ã¯ç„¡åŠ¹ã§ã™ã€‚代ã‚ã‚Šã« 3 を使用ã—ã¾ã™"
-#: eval.c:884
+#: eval.c:885
#, c-format
msgid "bad `%sFMT' specification `%s'"
msgstr "誤ã£ãŸ `%sFMT' 指定 `%s' ã§ã™"
-#: eval.c:968
+#: eval.c:969
msgid "turning off `--lint' due to assignment to `LINT'"
msgstr "`LINT' ã¸ã®ä»£å…¥ã«å¾“ã„ `--lint' を無効ã«ã—ã¾ã™"
-#: eval.c:1146
+#: eval.c:1147
#, c-format
msgid "reference to uninitialized argument `%s'"
msgstr "åˆæœŸåŒ–ã•ã‚Œã¦ã„ãªã„引数 `%s' ã¸ã®å‚ç…§ã§ã™"
-#: eval.c:1147
+#: eval.c:1148
#, c-format
msgid "reference to uninitialized variable `%s'"
msgstr "åˆæœŸåŒ–ã•ã‚Œã¦ã„ãªã„変数 `%s' ã¸ã®å‚ç…§ã§ã™"
-#: eval.c:1165
+#: eval.c:1166
msgid "attempt to field reference from non-numeric value"
msgstr "éžæ•°å€¤ã‚’使用ã—ãŸãƒ•ã‚¤ãƒ¼ãƒ«ãƒ‰å‚ç…§ã®è©¦ã¿ã§ã™"
-#: eval.c:1167
+#: eval.c:1168
msgid "attempt to field reference from null string"
msgstr "NULL 文字列を使用ã—ã¦ãƒ•ã‚£ãƒ¼ãƒ«ãƒ‰ã®å‚照を試ã¿ã¦ã„ã¾ã™"
-#: eval.c:1175
+#: eval.c:1176
#, c-format
msgid "attempt to access field %ld"
msgstr "フィールド %ld ã¸ã®ã‚¢ã‚¯ã‚»ã‚¹ã®è©¦ã¿ã§ã™"
-#: eval.c:1184
+#: eval.c:1185
#, c-format
msgid "reference to uninitialized field `$%ld'"
msgstr "åˆæœŸåŒ–ã•ã‚Œã¦ã„ãªã„フィールド `$%ld' ã¸ã®å‚ç…§ã§ã™"
-#: eval.c:1271
+#: eval.c:1272
#, c-format
msgid "function `%s' called with more arguments than declared"
msgstr "宣言ã•ã‚Œã¦ã„る数より多ã„引数を使ã£ã¦é–¢æ•° `%s' を呼ã³å‡ºã—ã¾ã—ãŸ"
-#: eval.c:1466
+#: eval.c:1473
#, c-format
msgid "unwind_stack: unexpected type `%s'"
msgstr "unwind_stack: 予期ã—ãªã„åž‹ `%s' ã§ã™"
-#: eval.c:1562
+#: eval.c:1569
msgid "division by zero attempted in `/='"
msgstr "`/=' 内ã§ã‚¼ãƒ­ã«ã‚ˆã‚‹é™¤ç®—ãŒè¡Œã‚ã‚Œã¾ã—ãŸ"
-#: eval.c:1569
+#: eval.c:1576
#, c-format
msgid "division by zero attempted in `%%='"
msgstr "`%%=' 内ã§ã‚¼ãƒ­ã«ã‚ˆã‚‹é™¤ç®—ãŒè¡Œã‚ã‚Œã¾ã—ãŸ"
@@ -1904,7 +1914,7 @@ msgstr "サンドボックスモード内ã§ã¯æ‹¡å¼µã¯è¨±å¯ã•ã‚Œã¦ã„ã¾ã›
msgid "-l / @load are gawk extensions"
msgstr "@include 㯠gawk æ‹¡å¼µã§ã™"
-#: ext.c:95 ext.c:177
+#: ext.c:95
msgid "load_ext: received NULL lib_name"
msgstr ""
@@ -1937,6 +1947,10 @@ msgstr ""
msgid "`extension' is a gawk extension"
msgstr "`extension' 㯠gawk æ‹¡å¼µã§ã™"
+#: ext.c:177
+msgid "extension: received NULL lib_name"
+msgstr ""
+
#: ext.c:180
#, fuzzy, c-format
msgid "extension: cannot open library `%s' (%s)"
@@ -1962,37 +1976,37 @@ msgstr ""
msgid "make_builtin: missing function name"
msgstr "extension: 関数åãŒã‚ã‚Šã¾ã›ã‚“"
-#: ext.c:238
+#: ext.c:236
#, fuzzy, c-format
msgid "make_builtin: can't redefine function `%s'"
msgstr "extension: 関数 `%s' ã‚’å†å®šç¾©ã§ãã¾ã›ã‚“"
-#: ext.c:242
+#: ext.c:240
#, fuzzy, c-format
msgid "make_builtin: function `%s' already defined"
msgstr "extension: 関数 `%s' ã¯æ—¢ã«å®šç¾©ã•ã‚Œã¦ã„ã¾ã™"
-#: ext.c:246
+#: ext.c:244
#, fuzzy, c-format
msgid "make_builtin: function name `%s' previously defined"
msgstr "extension: 関数å `%s' ã¯å‰ã«å®šç¾©ã•ã‚Œã¦ã„ã¾ã™"
-#: ext.c:248
+#: ext.c:246
#, fuzzy, c-format
msgid "make_builtin: can't use gawk built-in `%s' as function name"
msgstr "extension: gawk ã«çµ„ã¿è¾¼ã¾ã‚Œã¦ã„ã‚‹ `%s' ã¯é–¢æ•°åã¨ã—ã¦ä½¿ç”¨å‡ºæ¥ã¾ã›ã‚“"
-#: ext.c:251 ext.c:304
+#: ext.c:249 ext.c:304
#, c-format
msgid "make_builtin: negative argument count for function `%s'"
msgstr "make_builtin: 関数 `%s' ã®å¼•æ•°ã®æ•°ãŒè² ã§ã™"
-#: ext.c:278
+#: ext.c:276
#, fuzzy
msgid "extension: missing function name"
msgstr "extension: 関数åãŒã‚ã‚Šã¾ã›ã‚“"
-#: ext.c:283
+#: ext.c:279 ext.c:283
#, fuzzy, c-format
msgid "extension: illegal character `%c' in function name `%s'"
msgstr "extension: 関数å `%2$s' ã®ä¸­ã§ä¸æ­£ãªæ–‡å­— `%1$c' ãŒä½¿ç”¨ã•ã‚Œã¦ã„ã¾ã™"
@@ -2017,153 +2031,158 @@ msgstr "関数å `%s' ã¯å‰ã«å®šç¾©ã•ã‚Œã¦ã„ã¾ã™"
msgid "extension: can't use gawk built-in `%s' as function name"
msgstr "extension: gawk ã«çµ„ã¿è¾¼ã¾ã‚Œã¦ã„ã‚‹ `%s' ã¯é–¢æ•°åã¨ã—ã¦ä½¿ç”¨å‡ºæ¥ã¾ã›ã‚“"
-#: ext.c:374
+#: ext.c:375
#, c-format
msgid "function `%s' defined to take no more than %d argument(s)"
msgstr "関数 `%s' ã«ä½¿ãˆã‚‹å¼•æ•°ã®æ•°ã¯ `%d' 以下ã¨å®šç¾©ã•ã‚Œã¦ã„ã¾ã™"
-#: ext.c:377
+#: ext.c:378
#, c-format
msgid "function `%s': missing argument #%d"
msgstr "関数 `%s': 引数 #%d ãŒã‚ã‚Šã¾ã›ã‚“"
-#: ext.c:394
+#: ext.c:395
#, c-format
msgid "function `%s': argument #%d: attempt to use scalar as an array"
msgstr "関数 `%s': 引数 #%d: スカラーをé…列ã¨ã—ã¦ä½¿ç”¨ã™ã‚‹è©¦ã¿ã§ã™"
-#: ext.c:398
+#: ext.c:399
#, c-format
msgid "function `%s': argument #%d: attempt to use array as a scalar"
msgstr "関数 `%s': 引数 #%d: é…列をスカラーã¨ã—ã¦ä½¿ç”¨ã™ã‚‹è©¦ã¿ã§ã™"
-#: ext.c:412
+#: ext.c:413
msgid "dynamic loading of library not supported"
msgstr ""
-#: extension/filefuncs.c:97
+#: extension/filefuncs.c:159
#, fuzzy
msgid "chdir: called with incorrect number of arguments, expecting 1"
msgstr "sqrt: è² ã®å€¤ %g を引数ã«ä½¿ç”¨ã—ã¦å‘¼ã³å‡ºã•ã‚Œã¾ã—ãŸ"
-#: extension/filefuncs.c:343
+#: extension/filefuncs.c:439
#, c-format
msgid "stat: unable to read symbolic link `%s'"
msgstr ""
-#: extension/filefuncs.c:376
+#: extension/filefuncs.c:472
#, fuzzy
msgid "stat: called with wrong number of arguments"
msgstr "sqrt: è² ã®å€¤ %g を引数ã«ä½¿ç”¨ã—ã¦å‘¼ã³å‡ºã•ã‚Œã¾ã—ãŸ"
-#: extension/filefuncs.c:383
+#: extension/filefuncs.c:479
#, fuzzy
msgid "stat: bad parameters"
msgstr "%s: 仮引数ã§ã™\n"
-#: extension/filefuncs.c:437
+#: extension/filefuncs.c:533
#, fuzzy, c-format
msgid "fts init: could not create variable %s"
msgstr "index: 文字列ã§ã¯ç„¡ã„第二引数をå—ã‘å–ã‚Šã¾ã—ãŸ"
-#: extension/filefuncs.c:460
+#: extension/filefuncs.c:554
+#, fuzzy
+msgid "fts is not supported on this system"
+msgstr "å¤ã„ awk 㯠`%s' をサãƒãƒ¼ãƒˆã—ã¾ã›ã‚“"
+
+#: extension/filefuncs.c:573
msgid "fill_stat_element: could not create array"
msgstr ""
-#: extension/filefuncs.c:469
+#: extension/filefuncs.c:582
msgid "fill_stat_element: could not set element"
msgstr ""
-#: extension/filefuncs.c:484
+#: extension/filefuncs.c:597
#, fuzzy
msgid "fill_path_element: could not set element"
msgstr "index: 文字列ã§ã¯ç„¡ã„第二引数をå—ã‘å–ã‚Šã¾ã—ãŸ"
-#: extension/filefuncs.c:500
+#: extension/filefuncs.c:613
msgid "fill_error_element: could not set element"
msgstr ""
-#: extension/filefuncs.c:547 extension/filefuncs.c:594
+#: extension/filefuncs.c:660 extension/filefuncs.c:707
msgid "fts-process: could not create array"
msgstr ""
-#: extension/filefuncs.c:557 extension/filefuncs.c:604
-#: extension/filefuncs.c:622
+#: extension/filefuncs.c:670 extension/filefuncs.c:717
+#: extension/filefuncs.c:735
#, fuzzy
msgid "fts-process: could not set element"
msgstr "index: 文字列ã§ã¯ç„¡ã„第二引数をå—ã‘å–ã‚Šã¾ã—ãŸ"
-#: extension/filefuncs.c:671
+#: extension/filefuncs.c:784
#, fuzzy
msgid "fts: called with incorrect number of arguments, expecting 3"
msgstr "sqrt: è² ã®å€¤ %g を引数ã«ä½¿ç”¨ã—ã¦å‘¼ã³å‡ºã•ã‚Œã¾ã—ãŸ"
-#: extension/filefuncs.c:674
+#: extension/filefuncs.c:787
#, fuzzy
msgid "fts: bad first parameter"
msgstr "%s: 仮引数ã§ã™\n"
-#: extension/filefuncs.c:680
+#: extension/filefuncs.c:793
#, fuzzy
msgid "fts: bad second parameter"
msgstr "%s: 仮引数ã§ã™\n"
-#: extension/filefuncs.c:686
+#: extension/filefuncs.c:799
#, fuzzy
msgid "fts: bad third parameter"
msgstr "%s: 仮引数ã§ã™\n"
-#: extension/filefuncs.c:693
+#: extension/filefuncs.c:806
#, fuzzy
msgid "fts: could not flatten array\n"
msgstr "`%s' ã¯ä¸æ­£ãªå¤‰æ•°åã§ã™"
-#: extension/filefuncs.c:711
+#: extension/filefuncs.c:824
msgid "fts: ignoring sneaky FTS_NOSTAT flag. nyah, nyah, nyah."
msgstr ""
-#: extension/filefuncs.c:728
+#: extension/filefuncs.c:841
msgid "fts: clear_array() failed\n"
msgstr ""
-#: extension/fnmatch.c:98
+#: extension/fnmatch.c:112
#, fuzzy
msgid "fnmatch: called with less than three arguments"
msgstr "sqrt: è² ã®å€¤ %g を引数ã«ä½¿ç”¨ã—ã¦å‘¼ã³å‡ºã•ã‚Œã¾ã—ãŸ"
-#: extension/fnmatch.c:101
+#: extension/fnmatch.c:115
#, fuzzy
msgid "fnmatch: called with more than three arguments"
msgstr "sqrt: è² ã®å€¤ %g を引数ã«ä½¿ç”¨ã—ã¦å‘¼ã³å‡ºã•ã‚Œã¾ã—ãŸ"
-#: extension/fnmatch.c:104
+#: extension/fnmatch.c:118
#, fuzzy
msgid "fnmatch: could not get first argument"
msgstr "strftime: éžæ–‡å­—列ã®ç¬¬ä¸€å¼•æ•°ã‚’å—ã‘å–ã‚Šã¾ã—ãŸ"
-#: extension/fnmatch.c:109
+#: extension/fnmatch.c:123
#, fuzzy
msgid "fnmatch: could not get second argument"
msgstr "index: 文字列ã§ã¯ç„¡ã„第二引数をå—ã‘å–ã‚Šã¾ã—ãŸ"
-#: extension/fnmatch.c:114
+#: extension/fnmatch.c:128
msgid "fnmatch: could not get third argument"
msgstr ""
-#: extension/fnmatch.c:127
+#: extension/fnmatch.c:141
msgid "fnmatch is not implemented on this system\n"
msgstr ""
-#: extension/fnmatch.c:159
+#: extension/fnmatch.c:173
msgid "fnmatch init: could not add FNM_NOMATCH variable"
msgstr ""
-#: extension/fnmatch.c:169
+#: extension/fnmatch.c:183
#, c-format
msgid "fnmatch init: could not set array element %s"
msgstr ""
-#: extension/fnmatch.c:179
+#: extension/fnmatch.c:193
msgid "fnmatch init: could not install FNM array"
msgstr ""
@@ -2191,88 +2210,88 @@ msgstr "sqrt: è² ã®å€¤ %g を引数ã«ä½¿ç”¨ã—ã¦å‘¼ã³å‡ºã•ã‚Œã¾ã—ãŸ"
msgid "wait: called with too many arguments"
msgstr "sqrt: è² ã®å€¤ %g を引数ã«ä½¿ç”¨ã—ã¦å‘¼ã³å‡ºã•ã‚Œã¾ã—ãŸ"
-#: extension/inplace.c:110
+#: extension/inplace.c:130
msgid "inplace_begin: in-place editing already active"
msgstr ""
-#: extension/inplace.c:113 extension/inplace.c:187
+#: extension/inplace.c:133 extension/inplace.c:207
#, c-format
msgid "inplace_begin: expects 2 arguments but called with %d"
msgstr ""
-#: extension/inplace.c:116
+#: extension/inplace.c:136
msgid "inplace_begin: cannot retrieve 1st argument as a string filename"
msgstr ""
-#: extension/inplace.c:124
+#: extension/inplace.c:144
#, c-format
msgid "inplace_begin: disabling in-place editing for invalid FILENAME `%s'"
msgstr ""
-#: extension/inplace.c:131
+#: extension/inplace.c:151
#, fuzzy, c-format
msgid "inplace_begin: Cannot stat `%s' (%s)"
msgstr "致命的: extension: `%s' ã‚’é–‹ãã“ã¨ãŒå‡ºæ¥ã¾ã›ã‚“ (%s)\n"
-#: extension/inplace.c:138
+#: extension/inplace.c:158
#, fuzzy, c-format
msgid "inplace_begin: `%s' is not a regular file"
msgstr "`%s' ã¯ä¸æ­£ãªå¤‰æ•°åã§ã™"
-#: extension/inplace.c:149
+#: extension/inplace.c:169
#, c-format
msgid "inplace_begin: mkstemp(`%s') failed (%s)"
msgstr ""
-#: extension/inplace.c:158
+#: extension/inplace.c:178
#, fuzzy, c-format
msgid "inplace_begin: chmod failed (%s)"
msgstr "%s: é–‰ã˜ã‚‹ã®ã«å¤±æ•—ã—ã¾ã—㟠(%s)"
-#: extension/inplace.c:165
+#: extension/inplace.c:185
#, c-format
msgid "inplace_begin: dup(stdout) failed (%s)"
msgstr ""
-#: extension/inplace.c:168
+#: extension/inplace.c:188
#, c-format
msgid "inplace_begin: dup2(%d, stdout) failed (%s)"
msgstr ""
-#: extension/inplace.c:171
+#: extension/inplace.c:191
#, fuzzy, c-format
msgid "inplace_begin: close(%d) failed (%s)"
msgstr "%s: é–‰ã˜ã‚‹ã®ã«å¤±æ•—ã—ã¾ã—㟠(%s)"
-#: extension/inplace.c:190
+#: extension/inplace.c:210
msgid "inplace_end: cannot retrieve 1st argument as a string filename"
msgstr ""
-#: extension/inplace.c:197
+#: extension/inplace.c:217
msgid "inplace_end: in-place editing not active"
msgstr ""
-#: extension/inplace.c:203
+#: extension/inplace.c:223
#, c-format
msgid "inplace_end: dup2(%d, stdout) failed (%s)"
msgstr ""
-#: extension/inplace.c:206
+#: extension/inplace.c:226
#, fuzzy, c-format
msgid "inplace_end: close(%d) failed (%s)"
msgstr "%s: é–‰ã˜ã‚‹ã®ã«å¤±æ•—ã—ã¾ã—㟠(%s)"
-#: extension/inplace.c:210
+#: extension/inplace.c:230
#, c-format
msgid "inplace_end: fsetpos(stdout) failed (%s)"
msgstr ""
-#: extension/inplace.c:223
+#: extension/inplace.c:243
#, fuzzy, c-format
msgid "inplace_end: link(`%s', `%s') failed (%s)"
msgstr "パイプ `%s' をフラッシュã§ãã¾ã›ã‚“ (%s)。"
-#: extension/inplace.c:229
+#: extension/inplace.c:253
#, fuzzy, c-format
msgid "inplace_end: rename(`%s', `%s') failed (%s)"
msgstr "fd %d (`%s') ã‚’é–‰ã˜ã‚‹ã“ã¨ãŒã§ãã¾ã›ã‚“ (%s)"
@@ -2307,173 +2326,173 @@ msgstr "sqrt: è² ã®å€¤ %g を引数ã«ä½¿ç”¨ã—ã¦å‘¼ã³å‡ºã•ã‚Œã¾ã—ãŸ"
msgid "chr: called with inappropriate argument(s)"
msgstr "sqrt: è² ã®å€¤ %g を引数ã«ä½¿ç”¨ã—ã¦å‘¼ã³å‡ºã•ã‚Œã¾ã—ãŸ"
-#: extension/readdir.c:203
+#: extension/readdir.c:281
#, c-format
msgid "dir_take_control_of: opendir/fdopendir failed: %s"
msgstr ""
-#: extension/readfile.c:84
+#: extension/readfile.c:113
#, fuzzy
msgid "readfile: called with too many arguments"
msgstr "sqrt: è² ã®å€¤ %g を引数ã«ä½¿ç”¨ã—ã¦å‘¼ã³å‡ºã•ã‚Œã¾ã—ãŸ"
-#: extension/readfile.c:118
+#: extension/readfile.c:137
#, fuzzy
msgid "readfile: called with no arguments"
msgstr "sqrt: è² ã®å€¤ %g を引数ã«ä½¿ç”¨ã—ã¦å‘¼ã³å‡ºã•ã‚Œã¾ã—ãŸ"
-#: extension/rwarray.c:120
+#: extension/rwarray.c:124
#, fuzzy
msgid "writea: called with too many arguments"
msgstr "sqrt: è² ã®å€¤ %g を引数ã«ä½¿ç”¨ã—ã¦å‘¼ã³å‡ºã•ã‚Œã¾ã—ãŸ"
-#: extension/rwarray.c:127
+#: extension/rwarray.c:131
#, fuzzy, c-format
msgid "do_writea: argument 0 is not a string\n"
msgstr "exp: 引数 %g ãŒç¯„囲外ã§ã™"
-#: extension/rwarray.c:133
+#: extension/rwarray.c:137
#, fuzzy, c-format
msgid "do_writea: argument 1 is not an array\n"
msgstr "split: 第四引数ãŒé…列ã§ã¯ã‚ã‚Šã¾ã›ã‚“"
-#: extension/rwarray.c:180
+#: extension/rwarray.c:184
#, c-format
msgid "write_array: could not flatten array\n"
msgstr ""
-#: extension/rwarray.c:194
+#: extension/rwarray.c:198
#, c-format
msgid "write_array: could not release flattened array\n"
msgstr ""
-#: extension/rwarray.c:276
+#: extension/rwarray.c:280
#, fuzzy
msgid "reada: called with too many arguments"
msgstr "sqrt: è² ã®å€¤ %g を引数ã«ä½¿ç”¨ã—ã¦å‘¼ã³å‡ºã•ã‚Œã¾ã—ãŸ"
-#: extension/rwarray.c:283
+#: extension/rwarray.c:287
#, fuzzy, c-format
msgid "do_reada: argument 0 is not a string\n"
msgstr "exp: 引数 %g ãŒç¯„囲外ã§ã™"
-#: extension/rwarray.c:289
+#: extension/rwarray.c:293
#, fuzzy, c-format
msgid "do_reada: argument 1 is not an array\n"
msgstr "match: 第三引数ãŒé…列ã§ã¯ã‚ã‚Šã¾ã›ã‚“"
-#: extension/rwarray.c:333
+#: extension/rwarray.c:337
#, c-format
msgid "do_reada: clear_array failed\n"
msgstr ""
-#: extension/rwarray.c:370
+#: extension/rwarray.c:374
#, c-format
msgid "read_array: set_array_element failed\n"
msgstr ""
-#: extension/time.c:81
+#: extension/time.c:113
#, fuzzy
msgid "gettimeofday: ignoring arguments"
msgstr "mktime: éžæ–‡å­—列引数をå—ã‘å–ã‚Šã¾ã—ãŸ"
-#: extension/time.c:112
+#: extension/time.c:144
msgid "gettimeofday: not supported on this platform"
msgstr ""
-#: extension/time.c:133
+#: extension/time.c:165
#, fuzzy
msgid "sleep: called with too many arguments"
msgstr "sqrt: è² ã®å€¤ %g を引数ã«ä½¿ç”¨ã—ã¦å‘¼ã³å‡ºã•ã‚Œã¾ã—ãŸ"
-#: extension/time.c:136
+#: extension/time.c:168
#, fuzzy
msgid "sleep: missing required numeric argument"
msgstr "exp: 引数ãŒæ•°å€¤ã§ã¯ã‚ã‚Šã¾ã›ã‚“"
-#: extension/time.c:142
+#: extension/time.c:174
#, fuzzy
msgid "sleep: argument is negative"
msgstr "exp: 引数 %g ãŒç¯„囲外ã§ã™"
-#: extension/time.c:176
+#: extension/time.c:208
msgid "sleep: not supported on this platform"
msgstr ""
-#: field.c:339
+#: field.c:345
msgid "NF set to negative value"
msgstr "NF ãŒè² ã®å€¤ã«è¨­å®šã•ã‚Œã¦ã„ã¾ã™"
-#: field.c:964 field.c:971 field.c:975
+#: field.c:971 field.c:978 field.c:982
msgid "split: fourth argument is a gawk extension"
msgstr "split: 第四引数㯠gawk æ‹¡å¼µã§ã™"
-#: field.c:968
+#: field.c:975
msgid "split: fourth argument is not an array"
msgstr "split: 第四引数ãŒé…列ã§ã¯ã‚ã‚Šã¾ã›ã‚“"
-#: field.c:982
+#: field.c:989
msgid "split: second argument is not an array"
msgstr "split: 第二引数ãŒé…列ã§ã¯ã‚ã‚Šã¾ã›ã‚“"
-#: field.c:986
+#: field.c:993
msgid "split: cannot use the same array for second and fourth args"
msgstr "split: 第二引数ã¨ç¬¬å››å¼•æ•°ã«åŒã˜é…列を使用ã™ã‚‹ã“ã¨ã¯å‡ºæ¥ã¾ã›ã‚“"
-#: field.c:991
+#: field.c:998
msgid "split: cannot use a subarray of second arg for fourth arg"
msgstr "split: 第四引数ã«ç¬¬äºŒå¼•æ•°ã®éƒ¨åˆ†é…列を使用ã™ã‚‹ã“ã¨ã¯å‡ºæ¥ã¾ã›ã‚“"
-#: field.c:994
+#: field.c:1001
msgid "split: cannot use a subarray of fourth arg for second arg"
msgstr "split: 第二引数ã«ç¬¬å››å¼•æ•°ã®éƒ¨åˆ†é…列を使用ã™ã‚‹ã“ã¨ã¯å‡ºæ¥ã¾ã›ã‚“"
-#: field.c:1023
+#: field.c:1032
msgid "split: null string for third arg is a gawk extension"
msgstr "split: 第三引数㫠NULL 文字列を使用ã™ã‚‹ã“ã¨ã¯ gawk æ‹¡å¼µã§ã™"
-#: field.c:1063
+#: field.c:1072
msgid "patsplit: fourth argument is not an array"
msgstr "patsplit: 第四引数ãŒé…列ã§ã¯ã‚ã‚Šã¾ã›ã‚“"
-#: field.c:1068
+#: field.c:1077
msgid "patsplit: second argument is not an array"
msgstr "patsplit: 第二引数ãŒé…列ã§ã¯ã‚ã‚Šã¾ã›ã‚“"
-#: field.c:1074
+#: field.c:1083
msgid "patsplit: third argument must be non-null"
msgstr "patsplit: 第三引数ã¯éž NULL ã§ãªã‘ã‚Œã°ã„ã‘ã¾ã›ã‚“"
-#: field.c:1078
+#: field.c:1087
msgid "patsplit: cannot use the same array for second and fourth args"
msgstr "patsplit: 第二引数ã¨ç¬¬å››å¼•æ•°ã«åŒã˜é…列を使用ã™ã‚‹ã“ã¨ã¯å‡ºæ¥ã¾ã›ã‚“"
-#: field.c:1083
+#: field.c:1092
msgid "patsplit: cannot use a subarray of second arg for fourth arg"
msgstr "patsplit: 第四引数ã«ç¬¬äºŒå¼•æ•°ã®éƒ¨åˆ†é…列を使用ã™ã‚‹ã“ã¨ã¯å‡ºæ¥ã¾ã›ã‚“"
-#: field.c:1086
+#: field.c:1095
msgid "patsplit: cannot use a subarray of fourth arg for second arg"
msgstr "patsplit: 第二引数ã«ç¬¬å››å¼•æ•°ã®éƒ¨åˆ†é…列を使用ã™ã‚‹ã“ã¨ã¯å‡ºæ¥ã¾ã›ã‚“"
-#: field.c:1124
+#: field.c:1133
msgid "`FIELDWIDTHS' is a gawk extension"
msgstr "`FIELDWIDTHS' 㯠gawk æ‹¡å¼µã§ã™"
-#: field.c:1188
+#: field.c:1197
#, c-format
msgid "invalid FIELDWIDTHS value, near `%s'"
msgstr "`%s' 付近㮠FIELDWIDTHS 値ãŒç„¡åŠ¹ã§ã™"
-#: field.c:1261
+#: field.c:1270
msgid "null string for `FS' is a gawk extension"
msgstr "`FS' ã« NULL 文字列を使用ã™ã‚‹ã®ã¯ gawk æ‹¡å¼µã§ã™"
-#: field.c:1265
+#: field.c:1274
msgid "old awk does not support regexps as value of `FS'"
msgstr "å¤ã„ awk 㯠`FS' ã®å€¤ã¨ã—ã¦æ­£è¦è¡¨ç¾ã‚’サãƒãƒ¼ãƒˆã—ã¾ã›ã‚“"
-#: field.c:1384
+#: field.c:1393
msgid "`FPAT' is a gawk extension"
msgstr "`FPAT' 㯠gawk æ‹¡å¼µã§ã™"
@@ -2489,596 +2508,596 @@ msgstr ""
msgid "node_to_awk_value: received null val"
msgstr ""
-#: gawkapi.c:808
+#: gawkapi.c:807
#, fuzzy
msgid "remove_element: received null array"
msgstr "length: é…列引数をå—ã‘å–ã‚Šã¾ã—ãŸ"
-#: gawkapi.c:811
+#: gawkapi.c:810
msgid "remove_element: received null subscript"
msgstr ""
-#: gawkapi.c:943
+#: gawkapi.c:947
#, c-format
msgid "api_flatten_array: could not convert index %d\n"
msgstr ""
-#: gawkapi.c:948
+#: gawkapi.c:952
#, c-format
msgid "api_flatten_array: could not convert value %d\n"
msgstr ""
-#: getopt.c:603 getopt.c:632
+#: getopt.c:604 getopt.c:633
#, fuzzy, c-format
msgid "%s: option '%s' is ambiguous; possibilities:"
msgstr "%s: オプション '%s' ã¯æ›–昧ã§ã™\n"
-#: getopt.c:678 getopt.c:682
+#: getopt.c:679 getopt.c:683
#, c-format
msgid "%s: option '--%s' doesn't allow an argument\n"
msgstr "%s: オプション '--%s' ã¯å¼•æ•°ã‚’å–ã‚‹ã“ã¨ãŒã§ãã¾ã›ã‚“\n"
-#: getopt.c:691 getopt.c:696
+#: getopt.c:692 getopt.c:697
#, c-format
msgid "%s: option '%c%s' doesn't allow an argument\n"
msgstr "%s: オプション '%c%s' ã¯å¼•æ•°ã‚’å–ã‚‹ã“ã¨ãŒã§ãã¾ã›ã‚“\n"
-#: getopt.c:739 getopt.c:758
+#: getopt.c:740 getopt.c:759
#, c-format
msgid "%s: option '--%s' requires an argument\n"
msgstr "%s: オプション '--%s' ã«ã¯å¼•æ•°ãŒå¿…è¦ã§ã™\n"
-#: getopt.c:796 getopt.c:799
+#: getopt.c:797 getopt.c:800
#, c-format
msgid "%s: unrecognized option '--%s'\n"
msgstr "%s: オプション '--%s' ã‚’èªè­˜ã§ãã¾ã›ã‚“\n"
-#: getopt.c:807 getopt.c:810
+#: getopt.c:808 getopt.c:811
#, c-format
msgid "%s: unrecognized option '%c%s'\n"
msgstr "%s: オプション '%c%s' ã‚’èªè­˜ã§ãã¾ã›ã‚“\n"
-#: getopt.c:859 getopt.c:862
+#: getopt.c:860 getopt.c:863
#, c-format
msgid "%s: invalid option -- '%c'\n"
msgstr "%s: 無効ãªã‚ªãƒ—ション -- '%c'\n"
-#: getopt.c:915 getopt.c:932 getopt.c:1142 getopt.c:1160
+#: getopt.c:916 getopt.c:933 getopt.c:1143 getopt.c:1161
#, c-format
msgid "%s: option requires an argument -- '%c'\n"
msgstr "%s: オプションã«ã¯å¼•æ•°ãŒå¿…è¦ã§ã™ -- '%c'\n"
-#: getopt.c:988 getopt.c:1004
+#: getopt.c:989 getopt.c:1005
#, c-format
msgid "%s: option '-W %s' is ambiguous\n"
msgstr "%s: オプション '-W %s' ã¯æ›–昧ã§ã™\n"
-#: getopt.c:1028 getopt.c:1046
+#: getopt.c:1029 getopt.c:1047
#, c-format
msgid "%s: option '-W %s' doesn't allow an argument\n"
msgstr "%s: オプション '-W %s' ã¯å¼•æ•°ã‚’å–ã‚‹ã“ã¨ãŒã§ãã¾ã›ã‚“\n"
-#: getopt.c:1067 getopt.c:1085
+#: getopt.c:1068 getopt.c:1086
#, c-format
msgid "%s: option '-W %s' requires an argument\n"
msgstr "%s: オプション '-W %s' ã«ã¯å¼•æ•°ãŒå¿…è¦ã§ã™\n"
-#: io.c:347
+#: io.c:392
#, c-format
msgid "command line argument `%s' is a directory: skipped"
msgstr "コマンドライン引数 `%s' ã¯ãƒ‡ã‚£ãƒ¬ã‚¯ãƒˆãƒªã§ã™: スキップã•ã‚Œã¾ã—ãŸ"
-#: io.c:350 io.c:463
+#: io.c:395 io.c:513
#, c-format
msgid "cannot open file `%s' for reading (%s)"
msgstr "ファイル `%s' を読ã¿è¾¼ã¿ç”¨ã«é–‹ã‘ã¾ã›ã‚“ (%s)"
-#: io.c:590
+#: io.c:640
#, c-format
msgid "close of fd %d (`%s') failed (%s)"
msgstr "fd %d (`%s') ã‚’é–‰ã˜ã‚‹ã“ã¨ãŒã§ãã¾ã›ã‚“ (%s)"
-#: io.c:666
+#: io.c:716
msgid "redirection not allowed in sandbox mode"
msgstr "サンドボックスモード内ã§ã¯ãƒªãƒ€ã‚¤ãƒ¬ã‚¯ãƒˆã¯è¨±å¯ã•ã‚Œã¦ã„ã¾ã›ã‚“"
-#: io.c:700
+#: io.c:750
#, c-format
msgid "expression in `%s' redirection only has numeric value"
msgstr "`%s' リダイレクトã®å‘½ä»¤å¼ã«æ•°å€¤ã—ã‹è¨˜è¿°ã•ã‚Œã¦ã„ã¾ã›ã‚“。"
-#: io.c:706
+#: io.c:756
#, c-format
msgid "expression for `%s' redirection has null string value"
msgstr "`%s' リダイレクトã®å‘½ä»¤å¼ãŒç©ºåˆ—ã§ã™ã€‚"
-#: io.c:711
+#: io.c:761
#, c-format
msgid "filename `%s' for `%s' redirection may be result of logical expression"
msgstr ""
"`%2$s' リダイレクトã«è«–ç†æ¼”ç®—ã®çµæžœã¨æ€ã‚れるファイルå `%1$s' ãŒä½¿ã‚ã‚Œã¦ã„ã¾"
"ã™ã€‚"
-#: io.c:754
+#: io.c:809
#, c-format
msgid "unnecessary mixing of `>' and `>>' for file `%.*s'"
msgstr "ファイル `%.*s' ã§å¿…è¦ä»¥ä¸Šã« `>' 㨠`>>' を組åˆã›ã¦ã„ã¾ã™ã€‚"
-#: io.c:808
+#: io.c:863
#, c-format
msgid "can't open pipe `%s' for output (%s)"
msgstr "出力用ã«ãƒ‘イプ `%s' ã‚’é–‹ã‘ã¾ã›ã‚“ (%s)"
-#: io.c:818
+#: io.c:873
#, c-format
msgid "can't open pipe `%s' for input (%s)"
msgstr "入力用ã«ãƒ‘イプ `%s' ã‚’é–‹ã‘ã¾ã›ã‚“ (%s)"
-#: io.c:849
+#: io.c:904
#, c-format
msgid "can't open two way pipe `%s' for input/output (%s)"
msgstr "入出力用ã®åŒæ–¹å‘パイプ `%s' ãŒé–‹ã‘ã¾ã›ã‚“ (%s)"
-#: io.c:928
+#: io.c:986
#, c-format
msgid "can't redirect from `%s' (%s)"
msgstr "`%s' ã‹ã‚‰ãƒªãƒ€ã‚¤ãƒ¬ã‚¯ãƒˆã§ãã¾ã›ã‚“ (%s)"
-#: io.c:931
+#: io.c:989
#, c-format
msgid "can't redirect to `%s' (%s)"
msgstr "`%s' ã«ãƒªãƒ€ã‚¤ãƒ¬ã‚¯ãƒˆã§ãã¾ã›ã‚“ (%s)"
-#: io.c:982
+#: io.c:1040
msgid ""
"reached system limit for open files: starting to multiplex file descriptors"
msgstr ""
"é–‹ã„ã¦ã„るファイルã®æ•°ãŒã‚·ã‚¹ãƒ†ãƒ åˆ¶é™ã«é”ã—ã¾ã—ãŸã€‚ファイル記述å­ã‚’多é‡åŒ–ã—ã¾"
"ã™ã€‚"
-#: io.c:998
+#: io.c:1056
#, c-format
msgid "close of `%s' failed (%s)."
msgstr "`%s' ã‚’é–‰ã˜ã‚‹ã®ã«å¤±æ•—ã—ã¾ã—㟠(%s)"
-#: io.c:1006
+#: io.c:1064
msgid "too many pipes or input files open"
msgstr "é–‹ã„ã¦ã„るパイプã¾ãŸã¯å…¥åŠ›ãƒ•ã‚¡ã‚¤ãƒ«ã®æ•°ãŒå¤šéŽãŽã¾ã™ã€‚"
-#: io.c:1028
+#: io.c:1086
msgid "close: second argument must be `to' or `from'"
msgstr "close: 第二引数㯠`to' ã¾ãŸã¯ `from' ã§ãªã‘ã‚Œã°ã„ã‘ã¾ã›ã‚“"
-#: io.c:1045
+#: io.c:1103
#, c-format
msgid "close: `%.*s' is not an open file, pipe or co-process"
msgstr "close: `%.*s' ã¯é–‹ã„ã¦ã„るファイルã€ãƒ‘イプã€ãƒ—ロセス共有ã§ã¯ã‚ã‚Šã¾ã›ã‚“"
-#: io.c:1050
+#: io.c:1108
msgid "close of redirection that was never opened"
msgstr "é–‹ã„ã¦ãªã„リダイレクトを閉ã˜ã‚ˆã†ã¨ã—ã¦ã„ã¾ã™"
-#: io.c:1147
+#: io.c:1205
#, c-format
msgid "close: redirection `%s' not opened with `|&', second argument ignored"
msgstr ""
"close: リダイレクト `%s' 㯠`|&' を使用ã—ã¦é–‹ã‹ã‚Œã¦ã„ã¾ã›ã‚“。第二引数ã¯ç„¡è¦–ã•"
"ã‚Œã¾ã—ãŸ"
-#: io.c:1164
+#: io.c:1222
#, c-format
msgid "failure status (%d) on pipe close of `%s' (%s)"
msgstr "パイプ `%2$s' ã‚’é–‰ã˜ãŸã¨ãã®çŠ¶æ…‹ã‚³ãƒ¼ãƒ‰ãŒå¤±æ•— (%1$d) ã§ã—㟠(%3$s)。"
-#: io.c:1167
+#: io.c:1225
#, c-format
msgid "failure status (%d) on file close of `%s' (%s)"
msgstr "ファイル `%2$s' ã‚’é–‰ã˜ãŸã¨ãã®çŠ¶æ…‹ã‚³ãƒ¼ãƒ‰ãŒå¤±æ•— (%1$d) ã§ã—㟠(%3$s)。"
-#: io.c:1187
+#: io.c:1245
#, c-format
msgid "no explicit close of socket `%s' provided"
msgstr "ソケット `%s' を明示ã—ã¦é–‰ã˜ã¦ã„ã¾ã›ã‚“。"
-#: io.c:1190
+#: io.c:1248
#, c-format
msgid "no explicit close of co-process `%s' provided"
msgstr "並行プロセス `%s' を明示ã—ã¦é–‰ã˜ã¦ã„ã¾ã›ã‚“。"
-#: io.c:1193
+#: io.c:1251
#, c-format
msgid "no explicit close of pipe `%s' provided"
msgstr "パイプ `%s' を明示ã—ã¦é–‰ã˜ã¦ã„ã¾ã›ã‚“。"
-#: io.c:1196
+#: io.c:1254
#, c-format
msgid "no explicit close of file `%s' provided"
msgstr "ファイル `%s' を明示ã—ã¦é–‰ã˜ã¦ã„ã¾ã›ã‚“。"
-#: io.c:1224 io.c:1279 main.c:842 main.c:879
+#: io.c:1284 io.c:1342 main.c:864 main.c:906
#, c-format
msgid "error writing standard output (%s)"
msgstr "標準出力ã¸ã®æ›¸è¾¼ã¿ã‚¨ãƒ©ãƒ¼ (%s)"
-#: io.c:1228 io.c:1284
+#: io.c:1289 io.c:1348 main.c:866
#, c-format
msgid "error writing standard error (%s)"
msgstr "標準エラーã¸ã®æ›¸è¾¼ã¿ã‚¨ãƒ©ãƒ¼ (%s)"
-#: io.c:1236
+#: io.c:1297
#, c-format
msgid "pipe flush of `%s' failed (%s)."
msgstr "パイプ `%s' をフラッシュã§ãã¾ã›ã‚“ (%s)。"
-#: io.c:1239
+#: io.c:1300
#, c-format
msgid "co-process flush of pipe to `%s' failed (%s)."
msgstr "`%s' ã¸æŽ¥ç¶šã™ã‚‹ãƒ‘イプを並行プロセスã‹ã‚‰ãƒ•ãƒ©ãƒƒã‚·ãƒ¥ã§ãã¾ã›ã‚“ (%s)。"
-#: io.c:1242
+#: io.c:1303
#, c-format
msgid "file flush of `%s' failed (%s)."
msgstr "ファイル `%s' をフラッシュã§ãã¾ã›ã‚“ (%s)。"
-#: io.c:1356
+#: io.c:1420
#, c-format
msgid "local port %s invalid in `/inet'"
msgstr "`/inet' 内ã®ãƒ­ãƒ¼ã‚«ãƒ«ãƒãƒ¼ãƒˆ %s ãŒç„¡åŠ¹ã§ã™"
-#: io.c:1374
+#: io.c:1438
#, c-format
msgid "remote host and port information (%s, %s) invalid"
msgstr "リモートã®ãƒ›ã‚¹ãƒˆãŠã‚ˆã³ãƒãƒ¼ãƒˆæƒ…å ± (%s, %s) ãŒç„¡åŠ¹ã§ã™"
-#: io.c:1526
+#: io.c:1590
#, c-format
msgid "no (known) protocol supplied in special filename `%s'"
msgstr ""
"スペシャルファイルå `%s' ã«ï¼ˆèªè­˜ã§ãる)プロトコルãŒæŒ‡å®šã•ã‚Œã¦ã„ã¾ã›ã‚“"
-#: io.c:1540
+#: io.c:1604
#, c-format
msgid "special file name `%s' is incomplete"
msgstr "スペシャルファイルå `%s' ã¯ä¸å®Œå…¨ã§ã™"
-#: io.c:1557
+#: io.c:1621
msgid "must supply a remote hostname to `/inet'"
msgstr "`/inet' ã«ã¯ãƒªãƒ¢ãƒ¼ãƒˆãƒ›ã‚¹ãƒˆåを与ãˆãªã‘ã‚Œã°ã„ã‘ã¾ã›ã‚“"
-#: io.c:1575
+#: io.c:1639
msgid "must supply a remote port to `/inet'"
msgstr "`/inet' ã«ã¯ãƒªãƒ¢ãƒ¼ãƒˆãƒãƒ¼ãƒˆç•ªå·ã‚’与ãˆãªã‘ã‚Œã°ã„ã‘ã¾ã›ã‚“"
-#: io.c:1621
+#: io.c:1685
msgid "TCP/IP communications are not supported"
msgstr "TCP/IP 通信ã¯ã‚µãƒãƒ¼ãƒˆã•ã‚Œã¦ã„ã¾ã›ã‚“"
-#: io.c:1796
+#: io.c:1867
#, c-format
msgid "could not open `%s', mode `%s'"
msgstr "`%s' をモード `%s' ã§é–‹ã‘ã¾ã›ã‚“"
-#: io.c:1846
+#: io.c:1917
#, c-format
msgid "close of master pty failed (%s)"
msgstr "マスター pty ã‚’é–‰ã˜ã‚‹ã®ã«å¤±æ•—ã—ã¾ã—㟠(%s)"
-#: io.c:1848 io.c:2024 io.c:2194
+#: io.c:1919 io.c:2105 io.c:2305
#, c-format
msgid "close of stdout in child failed (%s)"
msgstr "å­ãƒ—ロセスãŒæ¨™æº–出力を閉ã˜ã‚‹ã®ã«å¤±æ•—ã—ã¾ã—㟠(%s)"
-#: io.c:1851
+#: io.c:1922
#, c-format
msgid "moving slave pty to stdout in child failed (dup: %s)"
msgstr "å­ãƒ—ロセスãŒã‚¹ãƒ¬ãƒ¼ãƒ– pty を標準出力ã«ç§»å‹•ã§ãã¾ã›ã‚“ (dup: %s)。"
-#: io.c:1853 io.c:2029
+#: io.c:1924 io.c:2110
#, c-format
msgid "close of stdin in child failed (%s)"
msgstr "å­ãƒ—ロセスãŒæ¨™æº–入力を閉ã˜ã‚‰ã‚Œã¾ã›ã‚“ (%s)。"
-#: io.c:1856
+#: io.c:1927
#, c-format
msgid "moving slave pty to stdin in child failed (dup: %s)"
msgstr "å­ãƒ—ロセスãŒã‚¹ãƒ¬ãƒ¼ãƒ– pty を標準入力ã«ç§»å‹•ã§ãã¾ã›ã‚“ (dup: %s)。"
-#: io.c:1858 io.c:1879
+#: io.c:1929 io.c:1951
#, c-format
msgid "close of slave pty failed (%s)"
msgstr "スレーブ pty ã‚’é–‰ã˜ã‚‹ã®ã«å¤±æ•—ã—ã¾ã—㟠(%s)"
-#: io.c:1965 io.c:2027 io.c:2171 io.c:2197
+#: io.c:2040 io.c:2108 io.c:2276 io.c:2308
#, c-format
msgid "moving pipe to stdout in child failed (dup: %s)"
msgstr "å­ãƒ—ロセスãŒãƒ‘イプを標準出力ã«ç§»å‹•ã§ãã¾ã›ã‚“ (dup: %s)。"
-#: io.c:1972 io.c:2032
+#: io.c:2047 io.c:2113
#, c-format
msgid "moving pipe to stdin in child failed (dup: %s)"
msgstr "å­ãƒ—ロセスãŒãƒ‘イプを標準入力ã«ç§»å‹•ã§ãã¾ã›ã‚“ (dup: %s)。"
-#: io.c:1992 io.c:2187
+#: io.c:2073 io.c:2298
msgid "restoring stdout in parent process failed\n"
msgstr "親プロセスãŒæ¨™æº–出力を復旧ã§ãã¾ã›ã‚“。\n"
-#: io.c:2000
+#: io.c:2081
msgid "restoring stdin in parent process failed\n"
msgstr "親プロセスãŒæ¨™æº–入力を復旧ã§ãã¾ã›ã‚“。\n"
-#: io.c:2035 io.c:2199 io.c:2213
+#: io.c:2116 io.c:2310 io.c:2324
#, c-format
msgid "close of pipe failed (%s)"
msgstr "パイプを閉ã˜ã‚‰ã‚Œã¾ã›ã‚“ (%s)。"
-#: io.c:2089
+#: io.c:2174
msgid "`|&' not supported"
msgstr "`|&' ã¯ä½¿ç”¨ã§ãã¾ã›ã‚“。"
-#: io.c:2156
+#: io.c:2261
#, c-format
msgid "cannot open pipe `%s' (%s)"
msgstr "パイプ `%s' ãŒé–‹ã‘ã¾ã›ã‚“ (%s)。"
-#: io.c:2207
+#: io.c:2318
#, c-format
msgid "cannot create child process for `%s' (fork: %s)"
msgstr "`%s' 用ã®å­ãƒ—ロセスを実行ã§ãã¾ã›ã‚“ (fork: %s)。"
-#: io.c:2667
+#: io.c:2790
msgid "register_input_parser: received NULL pointer"
msgstr ""
-#: io.c:2695
+#: io.c:2818
#, c-format
msgid "input parser `%s' conflicts with previously installed input parser `%s'"
msgstr ""
-#: io.c:2702
+#: io.c:2825
#, c-format
msgid "input parser `%s' failed to open `%s'"
msgstr ""
-#: io.c:2722
+#: io.c:2845
msgid "register_output_wrapper: received NULL pointer"
msgstr ""
-#: io.c:2750
+#: io.c:2873
#, c-format
msgid ""
"output wrapper `%s' conflicts with previously installed output wrapper `%s'"
msgstr ""
-#: io.c:2757
+#: io.c:2880
#, c-format
msgid "output wrapper `%s' failed to open `%s'"
msgstr ""
-#: io.c:2778
+#: io.c:2901
msgid "register_output_processor: received NULL pointer"
msgstr ""
-#: io.c:2807
+#: io.c:2930
#, c-format
msgid ""
"two-way processor `%s' conflicts with previously installed two-way processor "
"`%s'"
msgstr ""
-#: io.c:2816
+#: io.c:2939
#, c-format
msgid "two way processor `%s' failed to open `%s'"
msgstr ""
-#: io.c:2923
+#: io.c:3064
#, c-format
msgid "data file `%s' is empty"
msgstr "データファイル `%s' ã¯ç©ºã§ã™ã€‚"
-#: io.c:2965 io.c:2973
+#: io.c:3106 io.c:3114
msgid "could not allocate more input memory"
msgstr "入力用メモリーをã“れ以上確ä¿ã§ãã¾ã›ã‚“。"
-#: io.c:3539
+#: io.c:3682
msgid "multicharacter value of `RS' is a gawk extension"
msgstr "複数ã®æ–‡å­—ã‚’ `RS' ã«ä½¿ç”¨ã™ã‚‹ã®ã¯ gawk 特有ã®æ‹¡å¼µã§ã™ã€‚"
-#: io.c:3628
+#: io.c:3771
msgid "IPv6 communication is not supported"
msgstr "IPv6 通信ã¯ã‚µãƒãƒ¼ãƒˆã•ã‚Œã¦ã„ã¾ã›ã‚“"
-#: main.c:388
+#: main.c:405
msgid "empty argument to `-e/--source' ignored"
msgstr "`-e/--source' ã¸ã®ç©ºã®å¼•æ•°ã¯ç„¡è¦–ã•ã‚Œã¾ã—ãŸ"
-#: main.c:478
+#: main.c:495
#, c-format
msgid "%s: option `-W %s' unrecognized, ignored\n"
msgstr "%s: オプション `-W %s' ã¯èªè­˜ã§ãã¾ã›ã‚“。無視ã•ã‚Œã¾ã—ãŸ\n"
-#: main.c:524
+#: main.c:541
#, c-format
msgid "%s: option requires an argument -- %c\n"
msgstr "%s: 引数ãŒå¿…è¦ãªã‚ªãƒ—ション -- %c\n"
-#: main.c:545
+#: main.c:562
msgid "environment variable `POSIXLY_CORRECT' set: turning on `--posix'"
msgstr ""
"環境変数 `POSIXLY_CORRECT' ãŒæŒ‡å®šã•ã‚Œã¦ã„ã¾ã™ã€‚オプション `--posix' を有効ã«"
"ã—ã¾ã™"
-#: main.c:551
+#: main.c:568
msgid "`--posix' overrides `--traditional'"
msgstr "オプション `--posix' 㯠`--traditional' を無効ã«ã—ã¾ã™ã€‚"
-#: main.c:562
+#: main.c:579
msgid "`--posix'/`--traditional' overrides `--non-decimal-data'"
msgstr ""
"オプション `--posix'/`--traditional' 㯠`--non-decimal-data' を無効ã«ã—ã¾ã™ã€‚"
-#: main.c:566
+#: main.c:583
#, c-format
msgid "running %s setuid root may be a security problem"
msgstr ""
"setuid root 㧠%s を実行ã™ã‚‹ã¨ã€ã‚»ã‚­ãƒ¥ãƒªãƒ†ã‚£ä¸Šã®å•é¡ŒãŒç™ºç”Ÿã™ã‚‹å ´åˆãŒã‚ã‚Šã¾"
"ã™ã€‚"
-#: main.c:571
+#: main.c:588
#, fuzzy
msgid "`--posix' overrides `--characters-as-bytes'"
msgstr "`--posix' 㯠`--binary' を上書ãã—ã¾ã™"
-#: main.c:630
+#: main.c:647
#, c-format
msgid "can't set binary mode on stdin (%s)"
msgstr "標準入力をãƒã‚¤ãƒŠãƒªãƒ¢ãƒ¼ãƒ‰ã«è¨­å®šã§ãã¾ã›ã‚“ (%s)"
-#: main.c:633
+#: main.c:650
#, c-format
msgid "can't set binary mode on stdout (%s)"
msgstr "標準出力をãƒã‚¤ãƒŠãƒªãƒ¢ãƒ¼ãƒ‰ã«è¨­å®šã§ãã¾ã›ã‚“ (%s)"
-#: main.c:635
+#: main.c:652
#, c-format
msgid "can't set binary mode on stderr (%s)"
msgstr "標準エラーをãƒã‚¤ãƒŠãƒªãƒ¢ãƒ¼ãƒ‰ã«è¨­å®šã§ãã¾ã›ã‚“ (%s)"
-#: main.c:693
+#: main.c:710
msgid "no program text at all!"
msgstr "プログラム文ãŒå…¨ãã‚ã‚Šã¾ã›ã‚“!"
-#: main.c:779
+#: main.c:799
#, c-format
msgid "Usage: %s [POSIX or GNU style options] -f progfile [--] file ...\n"
msgstr ""
"使用法: %s [POSIX ã¾ãŸã¯ GNU å½¢å¼ã®ã‚ªãƒ—ション] -f progfile [--] file ...\n"
-#: main.c:781
+#: main.c:801
#, c-format
msgid "Usage: %s [POSIX or GNU style options] [--] %cprogram%c file ...\n"
msgstr ""
"使用法: %s [POSIX ã¾ãŸã¯ GNU å½¢å¼ã®ã‚ªãƒ—ション] [--] %cprogram%c file ...\n"
-#: main.c:786
+#: main.c:806
msgid "POSIX options:\t\tGNU long options: (standard)\n"
msgstr "POSIX オプション:\t\tGNU é•·ã„å½¢å¼ã®ã‚ªãƒ—ション: (標準)\n"
-#: main.c:787
+#: main.c:807
msgid "\t-f progfile\t\t--file=progfile\n"
msgstr "\t-f progfile\t\t--file=progfile\n"
-#: main.c:788
+#: main.c:808
msgid "\t-F fs\t\t\t--field-separator=fs\n"
msgstr "\t-F fs\t\t\t--field-separator=fs\n"
-#: main.c:789
+#: main.c:809
msgid "\t-v var=val\t\t--assign=var=val\n"
msgstr "\t-v var=val\t\t--assign=var=val\n"
-#: main.c:790
+#: main.c:810
msgid "Short options:\t\tGNU long options: (extensions)\n"
msgstr "短ã„オプション:\t\tGNU é•·ã„å½¢å¼ã®ã‚ªãƒ—ション: (æ‹¡å¼µ)\n"
-#: main.c:791
+#: main.c:811
msgid "\t-b\t\t\t--characters-as-bytes\n"
msgstr "\t-b\t\t\t--characters-as-bytes\n"
-#: main.c:792
+#: main.c:812
msgid "\t-c\t\t\t--traditional\n"
msgstr "\t-c\t\t\t--traditional\n"
-#: main.c:793
+#: main.c:813
msgid "\t-C\t\t\t--copyright\n"
msgstr "\t-C\t\t\t--copyright\n"
-#: main.c:794
+#: main.c:814
msgid "\t-d[file]\t\t--dump-variables[=file]\n"
msgstr "\t-d[file]\t\t--dump-variables[=file]\n"
-#: main.c:795
+#: main.c:815
#, fuzzy
msgid "\t-D[file]\t\t--debug[=file]\n"
msgstr "\t-p[file]\t\t--profile[=file]\n"
-#: main.c:796
+#: main.c:816
msgid "\t-e 'program-text'\t--source='program-text'\n"
msgstr "\t-e 'program-text'\t--source='program-text'\n"
-#: main.c:797
+#: main.c:817
msgid "\t-E file\t\t\t--exec=file\n"
msgstr "\t-E file\t\t\t--exec=file\n"
-#: main.c:798
+#: main.c:818
msgid "\t-g\t\t\t--gen-pot\n"
msgstr "\t-g\t\t\t--gen-pot\n"
-#: main.c:799
+#: main.c:819
msgid "\t-h\t\t\t--help\n"
msgstr "\t-h\t\t\t--help\n"
-#: main.c:800
+#: main.c:820
msgid "\t-i includefile\t\t--include=includefile\n"
msgstr ""
-#: main.c:801
+#: main.c:821
msgid "\t-l library\t\t--load=library\n"
msgstr ""
-#: main.c:802
+#: main.c:822
msgid "\t-L [fatal]\t\t--lint[=fatal]\n"
msgstr "\t-L [fatal]\t\t--lint[=fatal]\n"
-#: main.c:803
+#: main.c:823
msgid "\t-n\t\t\t--non-decimal-data\n"
msgstr "\t-n\t\t\t--non-decimal-data\n"
-#: main.c:804
+#: main.c:824
#, fuzzy
msgid "\t-M\t\t\t--bignum\n"
msgstr "\t-g\t\t\t--gen-pot\n"
-#: main.c:805
+#: main.c:825
msgid "\t-N\t\t\t--use-lc-numeric\n"
msgstr "\t-N\t\t\t--use-lc-numeric\n"
-#: main.c:806
+#: main.c:826
#, fuzzy
msgid "\t-o[file]\t\t--pretty-print[=file]\n"
msgstr "\t-p[file]\t\t--profile[=file]\n"
-#: main.c:807
+#: main.c:827
msgid "\t-O\t\t\t--optimize\n"
msgstr "\t-O\t\t\t--optimize\n"
-#: main.c:808
+#: main.c:828
msgid "\t-p[file]\t\t--profile[=file]\n"
msgstr "\t-p[file]\t\t--profile[=file]\n"
-#: main.c:809
+#: main.c:829
msgid "\t-P\t\t\t--posix\n"
msgstr "\t-P\t\t\t--posix\n"
-#: main.c:810
+#: main.c:830
msgid "\t-r\t\t\t--re-interval\n"
msgstr "\t-r\t\t\t--re-interval\n"
-#: main.c:811
+#: main.c:831
msgid "\t-S\t\t\t--sandbox\n"
msgstr "\t-S\t\t\t--sandbox\n"
-#: main.c:812
+#: main.c:832
msgid "\t-t\t\t\t--lint-old\n"
msgstr "\t-t\t\t\t--lint-old\n"
-#: main.c:813
+#: main.c:833
msgid "\t-V\t\t\t--version\n"
msgstr "\t-V\t\t\t--version\n"
-#: main.c:815
+#: main.c:835
msgid "\t-W nostalgia\t\t--nostalgia\n"
msgstr "\t-W nostalgia\t\t--nostalgia\n"
-#: main.c:818
+#: main.c:838
msgid "\t-Y\t\t--parsedebug\n"
msgstr "\t-Y\t\t--parsedebug\n"
@@ -3087,7 +3106,7 @@ msgstr "\t-Y\t\t--parsedebug\n"
#. for this application. Please add _another line_ with the
#. address for translation bugs.
#. no-wrap
-#: main.c:827
+#: main.c:847
msgid ""
"\n"
"To report bugs, see node `Bugs' in `gawk.info', which is\n"
@@ -3102,7 +3121,7 @@ msgstr ""
"翻訳ã«é–¢ã™ã‚‹ãƒã‚°ã¯<translation-team-ja@lists.sourceforge.net>ã«å ±å‘Šã—ã¦ãã ã•"
"ã„。\n"
-#: main.c:831
+#: main.c:851
msgid ""
"gawk is a pattern scanning and processing language.\n"
"By default it reads standard input and writes standard output.\n"
@@ -3112,7 +3131,7 @@ msgstr ""
"デフォルト設定ã§ã¯ã€æ¨™æº–入力を読ã¿è¾¼ã¿ã€æ¨™æº–出力ã«æ›¸ã出ã—ã¾ã™ã€‚\n"
"\n"
-#: main.c:835
+#: main.c:855
msgid ""
"Examples:\n"
"\tgawk '{ sum += $1 }; END { print sum }' file\n"
@@ -3122,7 +3141,7 @@ msgstr ""
"\tgawk '{ sum += $1 }; END { print sum }' file\n"
"\tgawk -F: '{ print $1 }' /etc/passwd\n"
-#: main.c:855
+#: main.c:880
#, c-format
msgid ""
"Copyright (C) 1989, 1991-%d Free Software Foundation.\n"
@@ -3141,7 +3160,7 @@ msgstr ""
"(at your option) any later version.\n"
"\n"
-#: main.c:863
+#: main.c:888
msgid ""
"This program is distributed in the hope that it will be useful,\n"
"but WITHOUT ANY WARRANTY; without even the implied warranty of\n"
@@ -3155,7 +3174,7 @@ msgstr ""
"GNU General Public License for more details.\n"
"\n"
-#: main.c:869
+#: main.c:894
msgid ""
"You should have received a copy of the GNU General Public License\n"
"along with this program. If not, see http://www.gnu.org/licenses/.\n"
@@ -3163,16 +3182,16 @@ msgstr ""
"You should have received a copy of the GNU General Public License\n"
"along with this program. If not, see http://www.gnu.org/licenses/.\n"
-#: main.c:904
+#: main.c:931
msgid "-Ft does not set FS to tab in POSIX awk"
msgstr "POSIX awk ã§ã¯ -Ft 㯠FS をタブã«è¨­å®šã—ã¾ã›ã‚“"
-#: main.c:1181
+#: main.c:1208
#, c-format
msgid "unknown value for field spec: %d\n"
msgstr "フィールド指定ã«ä¸æ˜Žãªå€¤ãŒã‚ã‚Šã¾ã™: %d\n"
-#: main.c:1279
+#: main.c:1306
#, c-format
msgid ""
"%s: `%s' argument to `-v' not in `var=value' form\n"
@@ -3181,48 +3200,48 @@ msgstr ""
"%s: オプション `-v' ã®å¼•æ•° `%s' ㌠`変数=代入値' ã®å½¢å¼ã«ãªã£ã¦ã„ã¾ã›ã‚“。\n"
"\n"
-#: main.c:1305
+#: main.c:1332
#, c-format
msgid "`%s' is not a legal variable name"
msgstr "`%s' ã¯ä¸æ­£ãªå¤‰æ•°åã§ã™"
-#: main.c:1308
+#: main.c:1335
#, c-format
msgid "`%s' is not a variable name, looking for file `%s=%s'"
msgstr "`%s' ã¯å¤‰æ•°åã§ã¯ã‚ã‚Šã¾ã›ã‚“。`%s=%s' ã®ãƒ•ã‚¡ã‚¤ãƒ«ã‚’探ã—ã¾ã™ã€‚"
-#: main.c:1312
+#: main.c:1339
#, c-format
msgid "cannot use gawk builtin `%s' as variable name"
msgstr "gawk ã«çµ„ã¿è¾¼ã¿ã® `%s' ã¯å¤‰æ•°åã¨ã—ã¦ä½¿ç”¨å‡ºæ¥ã¾ã›ã‚“"
-#: main.c:1317
+#: main.c:1344
#, c-format
msgid "cannot use function `%s' as variable name"
msgstr "関数 `%s' ã¯å¤‰æ•°åã¨ã—ã¦ä½¿ç”¨å‡ºæ¥ã¾ã›ã‚“"
-#: main.c:1370
+#: main.c:1397
msgid "floating point exception"
msgstr "浮動å°æ•°ç‚¹ä¾‹å¤–"
-#: main.c:1377
+#: main.c:1404
msgid "fatal error: internal error"
msgstr "致命的エラー: 内部エラー"
-#: main.c:1392
+#: main.c:1419
msgid "fatal error: internal error: segfault"
msgstr "致命的エラー: 内部エラー: セグメンテーションé•å"
-#: main.c:1404
+#: main.c:1431
msgid "fatal error: internal error: stack overflow"
msgstr "致命的エラー: 内部エラー: スタックオーãƒãƒ¼ãƒ•ãƒ­ãƒ¼"
-#: main.c:1463
+#: main.c:1490
#, c-format
msgid "no pre-opened fd %d"
msgstr "fd %d ãŒäº‹å‰ã«é–‹ã„ã¦ã„ã¾ã›ã‚“。"
-#: main.c:1470
+#: main.c:1497
#, c-format
msgid "could not pre-open /dev/null for fd %d"
msgstr "事å‰ã« fd %d 用㫠/dev/null ã‚’é–‹ã‘ã¾ã›ã‚“。"
@@ -3281,7 +3300,7 @@ msgstr "or(%lf, %lf): å°æ•°ç‚¹ä»¥ä¸‹ã¯åˆ‡ã‚Šæ¨ã¦ã‚‰ã‚Œã¾ã™"
msgid "%s: argument #%d negative value %Zd will give strange results"
msgstr "compl(%lf): è² ã®æ•°å€¤ã‚’使用ã™ã‚‹ã¨ç•°å¸¸ãªçµæžœã«ãªã‚Šã¾ã™"
-#: msg.c:61
+#: msg.c:68
#, c-format
msgid "cmd. line:"
msgstr "コマンドライン:"
@@ -3335,16 +3354,16 @@ msgstr "%s %s `%s': fd フラグをå–å¾—ã§ãã¾ã›ã‚“: (fcntl F_GETFD: %s)"
msgid "%s %s `%s': could not set close-on-exec: (fcntl F_SETFD: %s)"
msgstr "%s %s `%s': close-on-exec を設定ã§ãã¾ã›ã‚“: (fcntl F_SETFD: %s)"
-#: profile.c:70
+#: profile.c:71
#, c-format
msgid "could not open `%s' for writing: %s"
msgstr "`%s' を書込ã¿ç”¨ã«é–‹ã‘ã¾ã›ã‚“ã§ã—ãŸ: %s"
-#: profile.c:72
+#: profile.c:73
msgid "sending profile to standard error"
msgstr "プロファイルを標準エラーã«é€ã£ã¦ã„ã¾ã™"
-#: profile.c:188
+#: profile.c:193
#, c-format
msgid ""
"\t# %s block(s)\n"
@@ -3353,7 +3372,7 @@ msgstr ""
"\t# %s ブロック\n"
"\n"
-#: profile.c:193
+#: profile.c:198
#, c-format
msgid ""
"\t# Rule(s)\n"
@@ -3362,29 +3381,29 @@ msgstr ""
"\t# ルール\n"
"\n"
-#: profile.c:267
+#: profile.c:272
#, c-format
msgid "internal error: %s with null vname"
msgstr "内部エラー: %s ã® vname ãŒç„¡åŠ¹ã§ã™ã€‚"
-#: profile.c:530
+#: profile.c:537
#, fuzzy
msgid "internal error: builtin with null fname"
msgstr "内部エラー: %s ã® vname ãŒç„¡åŠ¹ã§ã™ã€‚"
-#: profile.c:942
+#: profile.c:949
#, c-format
msgid ""
"\t# Loaded extensions (-l and/or @load)\n"
"\n"
msgstr ""
-#: profile.c:965
+#: profile.c:972
#, c-format
msgid "\t# gawk profile, created %s\n"
msgstr "\t# gawk プロファイルã€ä½œæˆæ—¥æ™‚ %s\n"
-#: profile.c:1351
+#: profile.c:1475
#, c-format
msgid ""
"\n"
@@ -3393,17 +3412,12 @@ msgstr ""
"\n"
"\t# 関数一覧(アルファベット順)\n"
-#: profile.c:1389
+#: profile.c:1513
#, c-format
msgid "redir2str: unknown redirection type %d"
msgstr "redir2str: ä¸æ˜Žãªãƒªãƒ€ã‚¤ãƒ¬ã‚¯ãƒˆåž‹ %d ã§ã™"
-#: re.c:583
-#, fuzzy, c-format
-msgid "range of the form `[%c-%c]' is locale dependent"
-msgstr "`[%c-%c]' å½¢å¼ã®ç¯„囲ã¯ãƒ­ã‚±ãƒ¼ãƒ«ä¾å­˜ã§ã™"
-
-#: re.c:610
+#: re.c:607
#, c-format
msgid "regexp component `%.*s' should probably be `[%.*s]'"
msgstr "æ­£è¦è¡¨ç¾ã®è¦ç´  `%.*s' ã¯ãŠãらã `[%.*s]' ã§ã‚ã‚‹ã¹ãã§ã™"
@@ -3472,11 +3486,15 @@ msgstr ") ã¾ãŸã¯ \\) ãŒä¸ä¸€è‡´ã§ã™"
msgid "No previous regular expression"
msgstr "以å‰ã«æ­£è¦è¡¨ç¾ãŒã‚ã‚Šã¾ã›ã‚“"
-#: symbol.c:740
+#: symbol.c:741
msgid "can not pop main context"
msgstr ""
#, fuzzy
+#~ msgid "range of the form `[%c-%c]' is locale dependent"
+#~ msgstr "`[%c-%c]' å½¢å¼ã®ç¯„囲ã¯ãƒ­ã‚±ãƒ¼ãƒ«ä¾å­˜ã§ã™"
+
+#, fuzzy
#~ msgid "[s]printf called with no arguments"
#~ msgstr "sqrt: è² ã®å€¤ %g を引数ã«ä½¿ç”¨ã—ã¦å‘¼ã³å‡ºã•ã‚Œã¾ã—ãŸ"
diff --git a/po/ms.gmo b/po/ms.gmo
index 0db272d3..6123c873 100644
--- a/po/ms.gmo
+++ b/po/ms.gmo
Binary files differ
diff --git a/po/ms.po b/po/ms.po
index 70121298..09ec6472 100644
--- a/po/ms.po
+++ b/po/ms.po
@@ -7,7 +7,7 @@ msgid ""
msgstr ""
"Project-Id-Version: gawk 4.0.75\n"
"Report-Msgid-Bugs-To: arnold@skeeve.com\n"
-"POT-Creation-Date: 2013-05-09 16:05+0300\n"
+"POT-Creation-Date: 2014-04-08 19:23+0300\n"
"PO-Revision-Date: 2013-04-19 10:45+0800\n"
"Last-Translator: Sharuzzaman Ahmat Raslan <sharuzzaman@gmail.com>\n"
"Language-Team: Malay <translation-team-ms@lists.sourceforge.net>\n"
@@ -19,84 +19,84 @@ msgstr ""
"Plural-Forms: nplurals=1; plural=0;\n"
"X-Poedit-SourceCharset: UTF-8\n"
-#: array.c:254
+#: array.c:256
#, c-format
msgid "from %s"
msgstr "dari %s"
-#: array.c:354
+#: array.c:357
msgid "attempt to use a scalar value as array"
msgstr "cubaan untuk menggunakan nilai skalar sebagai tatasusunan"
-#: array.c:356
+#: array.c:359
#, c-format
msgid "attempt to use scalar parameter `%s' as an array"
msgstr "cubaan untuk menggunakan parameter skalar `%s' sebagai tatasusunan"
-#: array.c:359
+#: array.c:362
#, c-format
msgid "attempt to use scalar `%s' as an array"
msgstr "cubaan untuk menggunakan skalar `%s' sebagai tatasusunan"
-#: array.c:406 array.c:573 builtin.c:85 builtin.c:1591 builtin.c:1637
-#: builtin.c:1650 builtin.c:2078 builtin.c:2092 eval.c:1121 eval.c:1125
-#: eval.c:1524
+#: array.c:409 array.c:576 builtin.c:85 builtin.c:1615 builtin.c:1661
+#: builtin.c:1674 builtin.c:2102 builtin.c:2116 eval.c:1122 eval.c:1126
+#: eval.c:1531
#, c-format
msgid "attempt to use array `%s' in a scalar context"
msgstr "cubaan untuk menggunakan tatasusunan `%s' dalam konteks skalar"
-#: array.c:580
+#: array.c:583
#, c-format
msgid "delete: index `%s' not in array `%s'"
msgstr "padam: indeks `%s' tiada dalam tatasusunan `%s'"
-#: array.c:594
+#: array.c:597
#, c-format
msgid "attempt to use scalar `%s[\"%.*s\"]' as an array"
msgstr ""
-#: array.c:773
+#: array.c:776
msgid "adump: first argument not an array"
msgstr ""
-#: array.c:812
+#: array.c:815
msgid "asort: second argument not an array"
msgstr ""
-#: array.c:813
+#: array.c:816
msgid "asorti: second argument not an array"
msgstr ""
-#: array.c:820
+#: array.c:823
msgid "asort: first argument not an array"
msgstr ""
-#: array.c:821
+#: array.c:824
msgid "asorti: first argument not an array"
msgstr ""
-#: array.c:828
+#: array.c:831
msgid "asort: cannot use a subarray of first arg for second arg"
msgstr ""
-#: array.c:829
+#: array.c:832
msgid "asorti: cannot use a subarray of first arg for second arg"
msgstr ""
-#: array.c:834
+#: array.c:837
msgid "asort: cannot use a subarray of second arg for first arg"
msgstr ""
-#: array.c:835
+#: array.c:838
msgid "asorti: cannot use a subarray of second arg for first arg"
msgstr ""
-#: array.c:1309
+#: array.c:1314
#, c-format
msgid "`%s' is invalid as a function name"
msgstr ""
-#: array.c:1313
+#: array.c:1318
#, c-format
msgid "sort comparison function `%s' is not defined"
msgstr ""
@@ -137,11 +137,11 @@ msgstr ""
msgid "duplicate `default' detected in switch body"
msgstr ""
-#: awkgram.y:796 awkgram.y:3699
+#: awkgram.y:796 awkgram.y:3723
msgid "`break' is not allowed outside a loop or switch"
msgstr ""
-#: awkgram.y:805 awkgram.y:3691
+#: awkgram.y:805 awkgram.y:3715
msgid "`continue' is not allowed outside a loop"
msgstr ""
@@ -230,675 +230,685 @@ msgstr ""
msgid "invalid subscript expression"
msgstr ""
-#: awkgram.y:2024 awkgram.y:2044 gawkapi.c:206 gawkapi.c:224 msg.c:119
+#: awkgram.y:2048 awkgram.y:2068 gawkapi.c:206 gawkapi.c:224 msg.c:126
msgid "warning: "
msgstr ""
-#: awkgram.y:2042 gawkapi.c:192 gawkapi.c:221 msg.c:151
+#: awkgram.y:2066 gawkapi.c:192 gawkapi.c:221 msg.c:158
msgid "fatal: "
msgstr ""
-#: awkgram.y:2092
+#: awkgram.y:2116
msgid "unexpected newline or end of string"
msgstr ""
-#: awkgram.y:2359 awkgram.y:2435 awkgram.y:2658 debug.c:517 debug.c:533
-#: debug.c:2792 debug.c:5040
+#: awkgram.y:2383 awkgram.y:2459 awkgram.y:2682 debug.c:523 debug.c:539
+#: debug.c:2812 debug.c:5055
#, c-format
msgid "can't open source file `%s' for reading (%s)"
msgstr ""
-#: awkgram.y:2360 awkgram.y:2485
+#: awkgram.y:2384 awkgram.y:2509
#, c-format
msgid "can't open shared library `%s' for reading (%s)"
msgstr ""
-#: awkgram.y:2362 awkgram.y:2436 awkgram.y:2486 builtin.c:130 debug.c:5191
+#: awkgram.y:2386 awkgram.y:2460 awkgram.y:2510 builtin.c:135 debug.c:5206
msgid "reason unknown"
msgstr ""
-#: awkgram.y:2371 awkgram.y:2395
+#: awkgram.y:2395 awkgram.y:2419
#, c-format
msgid "can't include `%s' and use it as a program file"
msgstr ""
-#: awkgram.y:2384
+#: awkgram.y:2408
#, c-format
msgid "already included source file `%s'"
msgstr ""
-#: awkgram.y:2385
+#: awkgram.y:2409
#, c-format
msgid "already loaded shared library `%s'"
msgstr ""
-#: awkgram.y:2420
+#: awkgram.y:2444
msgid "@include is a gawk extension"
msgstr ""
-#: awkgram.y:2426
+#: awkgram.y:2450
msgid "empty filename after @include"
msgstr ""
-#: awkgram.y:2470
+#: awkgram.y:2494
msgid "@load is a gawk extension"
msgstr ""
-#: awkgram.y:2476
+#: awkgram.y:2500
msgid "empty filename after @load"
msgstr ""
-#: awkgram.y:2610
+#: awkgram.y:2634
msgid "empty program text on command line"
msgstr ""
-#: awkgram.y:2725
+#: awkgram.y:2749
#, c-format
msgid "can't read sourcefile `%s' (%s)"
msgstr ""
-#: awkgram.y:2736
+#: awkgram.y:2760
#, c-format
msgid "source file `%s' is empty"
msgstr ""
-#: awkgram.y:2913
+#: awkgram.y:2937
msgid "source file does not end in newline"
msgstr ""
-#: awkgram.y:3018
+#: awkgram.y:3042
msgid "unterminated regexp ends with `\\' at end of file"
msgstr ""
-#: awkgram.y:3042
+#: awkgram.y:3066
#, c-format
msgid "%s: %d: tawk regex modifier `/.../%c' doesn't work in gawk"
msgstr ""
-#: awkgram.y:3046
+#: awkgram.y:3070
#, c-format
msgid "tawk regex modifier `/.../%c' doesn't work in gawk"
msgstr ""
-#: awkgram.y:3053
+#: awkgram.y:3077
msgid "unterminated regexp"
msgstr ""
-#: awkgram.y:3057
+#: awkgram.y:3081
msgid "unterminated regexp at end of file"
msgstr ""
-#: awkgram.y:3116
+#: awkgram.y:3140
msgid "use of `\\ #...' line continuation is not portable"
msgstr ""
-#: awkgram.y:3132
+#: awkgram.y:3156
msgid "backslash not last character on line"
msgstr ""
-#: awkgram.y:3193
+#: awkgram.y:3217
msgid "POSIX does not allow operator `**='"
msgstr ""
-#: awkgram.y:3195
+#: awkgram.y:3219
msgid "old awk does not support operator `**='"
msgstr ""
-#: awkgram.y:3204
+#: awkgram.y:3228
msgid "POSIX does not allow operator `**'"
msgstr ""
-#: awkgram.y:3206
+#: awkgram.y:3230
msgid "old awk does not support operator `**'"
msgstr ""
-#: awkgram.y:3241
+#: awkgram.y:3265
msgid "operator `^=' is not supported in old awk"
msgstr ""
-#: awkgram.y:3249
+#: awkgram.y:3273
msgid "operator `^' is not supported in old awk"
msgstr ""
-#: awkgram.y:3342 awkgram.y:3358 command.y:1178
+#: awkgram.y:3366 awkgram.y:3382 command.y:1178
msgid "unterminated string"
msgstr ""
-#: awkgram.y:3579
+#: awkgram.y:3603
#, c-format
msgid "invalid char '%c' in expression"
msgstr ""
-#: awkgram.y:3626
+#: awkgram.y:3650
#, c-format
msgid "`%s' is a gawk extension"
msgstr ""
-#: awkgram.y:3631
+#: awkgram.y:3655
#, c-format
msgid "POSIX does not allow `%s'"
msgstr ""
-#: awkgram.y:3639
+#: awkgram.y:3663
#, c-format
msgid "`%s' is not supported in old awk"
msgstr ""
-#: awkgram.y:3729
+#: awkgram.y:3753
msgid "`goto' considered harmful!\n"
msgstr ""
-#: awkgram.y:3763
+#: awkgram.y:3787
#, c-format
msgid "%d is invalid as number of arguments for %s"
msgstr ""
-#: awkgram.y:3798
+#: awkgram.y:3822
#, c-format
msgid "%s: string literal as last arg of substitute has no effect"
msgstr ""
-#: awkgram.y:3803
+#: awkgram.y:3827
#, c-format
msgid "%s third parameter is not a changeable object"
msgstr ""
-#: awkgram.y:3886 awkgram.y:3889
+#: awkgram.y:3910 awkgram.y:3913
msgid "match: third argument is a gawk extension"
msgstr ""
-#: awkgram.y:3943 awkgram.y:3946
+#: awkgram.y:3967 awkgram.y:3970
msgid "close: second argument is a gawk extension"
msgstr ""
-#: awkgram.y:3958
+#: awkgram.y:3982
msgid "use of dcgettext(_\"...\") is incorrect: remove leading underscore"
msgstr ""
-#: awkgram.y:3973
+#: awkgram.y:3997
msgid "use of dcngettext(_\"...\") is incorrect: remove leading underscore"
msgstr ""
-#: awkgram.y:3992
+#: awkgram.y:4016
msgid "index: regexp constant as second argument is not allowed"
msgstr ""
-#: awkgram.y:4045
+#: awkgram.y:4069
#, c-format
msgid "function `%s': parameter `%s' shadows global variable"
msgstr ""
-#: awkgram.y:4102 debug.c:4021 debug.c:4064 debug.c:5189
+#: awkgram.y:4126 debug.c:4041 debug.c:4084 debug.c:5204
#, c-format
msgid "could not open `%s' for writing (%s)"
msgstr ""
-#: awkgram.y:4103
+#: awkgram.y:4127
msgid "sending variable list to standard error"
msgstr ""
-#: awkgram.y:4111
+#: awkgram.y:4135
#, c-format
msgid "%s: close failed (%s)"
msgstr ""
-#: awkgram.y:4136
+#: awkgram.y:4160
msgid "shadow_funcs() called twice!"
msgstr ""
-#: awkgram.y:4144
+#: awkgram.y:4168
msgid "there were shadowed variables."
msgstr ""
-#: awkgram.y:4215
+#: awkgram.y:4239
#, c-format
msgid "function name `%s' previously defined"
msgstr ""
-#: awkgram.y:4261
+#: awkgram.y:4285
#, c-format
msgid "function `%s': can't use function name as parameter name"
msgstr ""
-#: awkgram.y:4264
+#: awkgram.y:4288
#, c-format
msgid "function `%s': can't use special variable `%s' as a function parameter"
msgstr ""
-#: awkgram.y:4272
+#: awkgram.y:4296
#, c-format
msgid "function `%s': parameter #%d, `%s', duplicates parameter #%d"
msgstr ""
-#: awkgram.y:4366 awkgram.y:4372
+#: awkgram.y:4383 awkgram.y:4389
#, c-format
msgid "function `%s' called but never defined"
msgstr ""
-#: awkgram.y:4376
+#: awkgram.y:4393
#, c-format
msgid "function `%s' defined but never called directly"
msgstr ""
-#: awkgram.y:4408
+#: awkgram.y:4425
#, c-format
msgid "regexp constant for parameter #%d yields boolean value"
msgstr ""
-#: awkgram.y:4467
+#: awkgram.y:4484
#, c-format
msgid ""
"function `%s' called with space between name and `(',\n"
"or used as a variable or an array"
msgstr ""
-#: awkgram.y:4703
+#: awkgram.y:4720
msgid "division by zero attempted"
msgstr ""
-#: awkgram.y:4712
+#: awkgram.y:4729
#, c-format
msgid "division by zero attempted in `%%'"
msgstr ""
-#: builtin.c:128
+#: awkgram.y:5049
+msgid ""
+"cannot assign a value to the result of a field post-increment expression"
+msgstr ""
+
+#: awkgram.y:5052
+#, c-format
+msgid "invalid target of assignment (opcode %s)"
+msgstr ""
+
+#: builtin.c:133
#, c-format
msgid "%s to \"%s\" failed (%s)"
msgstr ""
-#: builtin.c:129
+#: builtin.c:134
msgid "standard output"
msgstr ""
-#: builtin.c:143
+#: builtin.c:148
msgid "exp: received non-numeric argument"
msgstr ""
-#: builtin.c:149
+#: builtin.c:154
#, c-format
msgid "exp: argument %g is out of range"
msgstr ""
-#: builtin.c:224
+#: builtin.c:229
#, c-format
msgid "fflush: cannot flush: pipe `%s' opened for reading, not writing"
msgstr ""
-#: builtin.c:227
+#: builtin.c:232
#, c-format
msgid "fflush: cannot flush: file `%s' opened for reading, not writing"
msgstr ""
-#: builtin.c:239
+#: builtin.c:244
#, c-format
msgid "fflush: `%s' is not an open file, pipe or co-process"
msgstr ""
-#: builtin.c:357
+#: builtin.c:362
msgid "index: received non-string first argument"
msgstr ""
-#: builtin.c:359
+#: builtin.c:364
msgid "index: received non-string second argument"
msgstr ""
-#: builtin.c:483 mpfr.c:757
+#: builtin.c:488 mpfr.c:757
msgid "int: received non-numeric argument"
msgstr ""
-#: builtin.c:520
+#: builtin.c:525
msgid "length: received array argument"
msgstr ""
-#: builtin.c:523
+#: builtin.c:528
msgid "`length(array)' is a gawk extension"
msgstr ""
-#: builtin.c:539
+#: builtin.c:544
msgid "length: received non-string argument"
msgstr ""
-#: builtin.c:570
+#: builtin.c:575
msgid "log: received non-numeric argument"
msgstr ""
-#: builtin.c:573
+#: builtin.c:578
#, c-format
msgid "log: received negative argument %g"
msgstr ""
-#: builtin.c:771 builtin.c:776
+#: builtin.c:776 builtin.c:781
msgid "fatal: must use `count$' on all formats or none"
msgstr ""
-#: builtin.c:846
+#: builtin.c:851
#, c-format
msgid "field width is ignored for `%%' specifier"
msgstr ""
-#: builtin.c:848
+#: builtin.c:853
#, c-format
msgid "precision is ignored for `%%' specifier"
msgstr ""
-#: builtin.c:850
+#: builtin.c:855
#, c-format
msgid "field width and precision are ignored for `%%' specifier"
msgstr ""
-#: builtin.c:901
+#: builtin.c:906
msgid "fatal: `$' is not permitted in awk formats"
msgstr ""
-#: builtin.c:910
+#: builtin.c:915
msgid "fatal: arg count with `$' must be > 0"
msgstr ""
-#: builtin.c:914
+#: builtin.c:919
#, c-format
msgid "fatal: arg count %ld greater than total number of supplied arguments"
msgstr ""
-#: builtin.c:918
+#: builtin.c:923
msgid "fatal: `$' not permitted after period in format"
msgstr ""
-#: builtin.c:934
+#: builtin.c:939
msgid "fatal: no `$' supplied for positional field width or precision"
msgstr ""
-#: builtin.c:1006
+#: builtin.c:1009
msgid "`l' is meaningless in awk formats; ignored"
msgstr ""
-#: builtin.c:1010
+#: builtin.c:1013
msgid "fatal: `l' is not permitted in POSIX awk formats"
msgstr ""
-#: builtin.c:1023
+#: builtin.c:1026
msgid "`L' is meaningless in awk formats; ignored"
msgstr ""
-#: builtin.c:1027
+#: builtin.c:1030
msgid "fatal: `L' is not permitted in POSIX awk formats"
msgstr ""
-#: builtin.c:1040
+#: builtin.c:1043
msgid "`h' is meaningless in awk formats; ignored"
msgstr ""
-#: builtin.c:1044
+#: builtin.c:1047
msgid "fatal: `h' is not permitted in POSIX awk formats"
msgstr ""
-#: builtin.c:1439
+#: builtin.c:1463
#, c-format
msgid "[s]printf: value %g is out of range for `%%%c' format"
msgstr ""
-#: builtin.c:1537
+#: builtin.c:1561
#, c-format
msgid "ignoring unknown format specifier character `%c': no argument converted"
msgstr ""
-#: builtin.c:1542
+#: builtin.c:1566
msgid "fatal: not enough arguments to satisfy format string"
msgstr ""
-#: builtin.c:1544
+#: builtin.c:1568
msgid "^ ran out for this one"
msgstr ""
-#: builtin.c:1551
+#: builtin.c:1575
msgid "[s]printf: format specifier does not have control letter"
msgstr ""
-#: builtin.c:1554
+#: builtin.c:1578
msgid "too many arguments supplied for format string"
msgstr ""
-#: builtin.c:1610
+#: builtin.c:1634
msgid "sprintf: no arguments"
msgstr ""
-#: builtin.c:1633 builtin.c:1644
+#: builtin.c:1657 builtin.c:1668
msgid "printf: no arguments"
msgstr ""
-#: builtin.c:1687
+#: builtin.c:1711
msgid "sqrt: received non-numeric argument"
msgstr ""
-#: builtin.c:1691
+#: builtin.c:1715
#, c-format
msgid "sqrt: called with negative argument %g"
msgstr ""
-#: builtin.c:1722
+#: builtin.c:1746
#, c-format
msgid "substr: length %g is not >= 1"
msgstr ""
-#: builtin.c:1724
+#: builtin.c:1748
#, c-format
msgid "substr: length %g is not >= 0"
msgstr ""
-#: builtin.c:1731
+#: builtin.c:1755
#, c-format
msgid "substr: non-integer length %g will be truncated"
msgstr ""
-#: builtin.c:1736
+#: builtin.c:1760
#, c-format
msgid "substr: length %g too big for string indexing, truncating to %g"
msgstr ""
-#: builtin.c:1748
+#: builtin.c:1772
#, c-format
msgid "substr: start index %g is invalid, using 1"
msgstr ""
-#: builtin.c:1753
+#: builtin.c:1777
#, c-format
msgid "substr: non-integer start index %g will be truncated"
msgstr ""
-#: builtin.c:1778
+#: builtin.c:1802
msgid "substr: source string is zero length"
msgstr ""
-#: builtin.c:1794
+#: builtin.c:1818
#, c-format
msgid "substr: start index %g is past end of string"
msgstr ""
-#: builtin.c:1802
+#: builtin.c:1826
#, c-format
msgid ""
"substr: length %g at start index %g exceeds length of first argument (%lu)"
msgstr ""
-#: builtin.c:1876
+#: builtin.c:1900
msgid "strftime: format value in PROCINFO[\"strftime\"] has numeric type"
msgstr ""
-#: builtin.c:1899
+#: builtin.c:1923
msgid "strftime: received non-numeric second argument"
msgstr ""
-#: builtin.c:1903
+#: builtin.c:1927
msgid "strftime: second argument less than 0 or too big for time_t"
msgstr ""
-#: builtin.c:1910
+#: builtin.c:1934
msgid "strftime: received non-string first argument"
msgstr ""
-#: builtin.c:1917
+#: builtin.c:1941
msgid "strftime: received empty format string"
msgstr ""
-#: builtin.c:1983
+#: builtin.c:2007
msgid "mktime: received non-string argument"
msgstr ""
-#: builtin.c:2000
+#: builtin.c:2024
msgid "mktime: at least one of the values is out of the default range"
msgstr ""
-#: builtin.c:2035
+#: builtin.c:2059
msgid "'system' function not allowed in sandbox mode"
msgstr ""
-#: builtin.c:2040
+#: builtin.c:2064
msgid "system: received non-string argument"
msgstr ""
-#: builtin.c:2160
+#: builtin.c:2184
#, c-format
msgid "reference to uninitialized field `$%d'"
msgstr ""
-#: builtin.c:2247
+#: builtin.c:2271
msgid "tolower: received non-string argument"
msgstr ""
-#: builtin.c:2281
+#: builtin.c:2305
msgid "toupper: received non-string argument"
msgstr ""
-#: builtin.c:2317 mpfr.c:672
+#: builtin.c:2341 mpfr.c:672
msgid "atan2: received non-numeric first argument"
msgstr ""
-#: builtin.c:2319 mpfr.c:674
+#: builtin.c:2343 mpfr.c:674
msgid "atan2: received non-numeric second argument"
msgstr ""
-#: builtin.c:2338
+#: builtin.c:2362
msgid "sin: received non-numeric argument"
msgstr ""
-#: builtin.c:2354
+#: builtin.c:2378
msgid "cos: received non-numeric argument"
msgstr ""
-#: builtin.c:2407 mpfr.c:1156
+#: builtin.c:2431 mpfr.c:1156
msgid "srand: received non-numeric argument"
msgstr ""
-#: builtin.c:2438
+#: builtin.c:2462
msgid "match: third argument is not an array"
msgstr ""
-#: builtin.c:2710
+#: builtin.c:2734
msgid "gensub: third argument of 0 treated as 1"
msgstr ""
-#: builtin.c:3003
+#: builtin.c:3030
msgid "lshift: received non-numeric first argument"
msgstr ""
-#: builtin.c:3005
+#: builtin.c:3032
msgid "lshift: received non-numeric second argument"
msgstr ""
-#: builtin.c:3011
+#: builtin.c:3038
#, c-format
msgid "lshift(%f, %f): negative values will give strange results"
msgstr ""
-#: builtin.c:3013
+#: builtin.c:3040
#, c-format
msgid "lshift(%f, %f): fractional values will be truncated"
msgstr ""
-#: builtin.c:3015
+#: builtin.c:3042
#, c-format
msgid "lshift(%f, %f): too large shift value will give strange results"
msgstr ""
-#: builtin.c:3040
+#: builtin.c:3067
msgid "rshift: received non-numeric first argument"
msgstr ""
-#: builtin.c:3042
+#: builtin.c:3069
msgid "rshift: received non-numeric second argument"
msgstr ""
-#: builtin.c:3048
+#: builtin.c:3075
#, c-format
msgid "rshift(%f, %f): negative values will give strange results"
msgstr ""
-#: builtin.c:3050
+#: builtin.c:3077
#, c-format
msgid "rshift(%f, %f): fractional values will be truncated"
msgstr ""
-#: builtin.c:3052
+#: builtin.c:3079
#, c-format
msgid "rshift(%f, %f): too large shift value will give strange results"
msgstr ""
-#: builtin.c:3077 mpfr.c:968
+#: builtin.c:3104 mpfr.c:968
msgid "and: called with less than two arguments"
msgstr ""
-#: builtin.c:3082
+#: builtin.c:3109
#, c-format
msgid "and: argument %d is non-numeric"
msgstr ""
-#: builtin.c:3086
+#: builtin.c:3113
#, c-format
msgid "and: argument %d negative value %g will give strange results"
msgstr ""
-#: builtin.c:3109 mpfr.c:1000
+#: builtin.c:3136 mpfr.c:1000
msgid "or: called with less than two arguments"
msgstr ""
-#: builtin.c:3114
+#: builtin.c:3141
#, c-format
msgid "or: argument %d is non-numeric"
msgstr ""
-#: builtin.c:3118
+#: builtin.c:3145
#, c-format
msgid "or: argument %d negative value %g will give strange results"
msgstr ""
-#: builtin.c:3140 mpfr.c:1031
+#: builtin.c:3167 mpfr.c:1031
msgid "xor: called with less than two arguments"
msgstr ""
-#: builtin.c:3146
+#: builtin.c:3173
#, c-format
msgid "xor: argument %d is non-numeric"
msgstr ""
-#: builtin.c:3150
+#: builtin.c:3177
#, c-format
msgid "xor: argument %d negative value %g will give strange results"
msgstr ""
-#: builtin.c:3175 mpfr.c:787
+#: builtin.c:3202 mpfr.c:787
msgid "compl: received non-numeric argument"
msgstr ""
-#: builtin.c:3181
+#: builtin.c:3208
#, c-format
msgid "compl(%f): negative value will give strange results"
msgstr ""
-#: builtin.c:3183
+#: builtin.c:3210
#, c-format
msgid "compl(%f): fractional value will be truncated"
msgstr ""
-#: builtin.c:3352
+#: builtin.c:3379
#, c-format
msgid "dcgettext: `%s' is not a valid locale category"
msgstr ""
@@ -1020,8 +1030,8 @@ msgstr ""
#: command.y:823
msgid ""
-"commands [num] - starts a list of commands to be executed at a breakpoint"
-"(watchpoint) hit."
+"commands [num] - starts a list of commands to be executed at a "
+"breakpoint(watchpoint) hit."
msgstr ""
#: command.y:825
@@ -1178,7 +1188,7 @@ msgstr ""
msgid "watch var - set a watchpoint for a variable."
msgstr ""
-#: command.y:1011 debug.c:395 msg.c:128
+#: command.y:1011 debug.c:401 msg.c:135
#, c-format
msgid "error: "
msgstr ""
@@ -1216,552 +1226,552 @@ msgstr ""
msgid "undefined command: %s\n"
msgstr ""
-#: debug.c:246
+#: debug.c:252
msgid "set or show the number of lines to keep in history file."
msgstr ""
-#: debug.c:248
+#: debug.c:254
msgid "set or show the list command window size."
msgstr ""
-#: debug.c:250
+#: debug.c:256
msgid "set or show gawk output file."
msgstr ""
-#: debug.c:252
+#: debug.c:258
msgid "set or show debugger prompt."
msgstr ""
-#: debug.c:254
+#: debug.c:260
msgid "(un)set or show saving of command history (value=on|off)."
msgstr ""
-#: debug.c:256
+#: debug.c:262
msgid "(un)set or show saving of options (value=on|off)."
msgstr ""
-#: debug.c:258
+#: debug.c:264
msgid "(un)set or show instruction tracing (value=on|off)."
msgstr ""
-#: debug.c:339
+#: debug.c:345
msgid "program not running."
msgstr ""
-#: debug.c:442 debug.c:597
+#: debug.c:448 debug.c:606
#, c-format
msgid "can't read source file `%s' (%s)"
msgstr ""
-#: debug.c:447
+#: debug.c:453
#, c-format
msgid "source file `%s' is empty.\n"
msgstr ""
-#: debug.c:474
+#: debug.c:480
msgid "no current source file."
msgstr ""
-#: debug.c:499
+#: debug.c:505
#, c-format
msgid "cannot find source file named `%s' (%s)"
msgstr ""
-#: debug.c:523
+#: debug.c:529
#, c-format
msgid "WARNING: source file `%s' modified since program compilation.\n"
msgstr ""
-#: debug.c:542
+#: debug.c:551
#, c-format
msgid "line number %d out of range; `%s' has %d lines"
msgstr ""
-#: debug.c:602
+#: debug.c:611
#, c-format
msgid "unexpected eof while reading file `%s', line %d"
msgstr ""
-#: debug.c:611
+#: debug.c:620
#, c-format
msgid "source file `%s' modified since start of program execution"
msgstr ""
-#: debug.c:723
+#: debug.c:732
#, c-format
msgid "Current source file: %s\n"
msgstr ""
-#: debug.c:724
+#: debug.c:733
#, c-format
msgid "Number of lines: %d\n"
msgstr ""
-#: debug.c:731
+#: debug.c:740
#, c-format
msgid "Source file (lines): %s (%d)\n"
msgstr ""
-#: debug.c:745
+#: debug.c:754
msgid ""
"Number Disp Enabled Location\n"
"\n"
msgstr ""
-#: debug.c:756
+#: debug.c:765
#, c-format
msgid "\tno of hits = %ld\n"
msgstr ""
-#: debug.c:758
+#: debug.c:767
#, c-format
msgid "\tignore next %ld hit(s)\n"
msgstr ""
-#: debug.c:760 debug.c:900
+#: debug.c:769 debug.c:909
#, c-format
msgid "\tstop condition: %s\n"
msgstr ""
-#: debug.c:762 debug.c:902
+#: debug.c:771 debug.c:911
msgid "\tcommands:\n"
msgstr ""
-#: debug.c:784
+#: debug.c:793
#, c-format
msgid "Current frame: "
msgstr ""
-#: debug.c:787
+#: debug.c:796
#, c-format
msgid "Called by frame: "
msgstr ""
-#: debug.c:791
+#: debug.c:800
#, c-format
msgid "Caller of frame: "
msgstr ""
-#: debug.c:809
+#: debug.c:818
#, c-format
msgid "None in main().\n"
msgstr ""
-#: debug.c:839
+#: debug.c:848
msgid "No arguments.\n"
msgstr ""
-#: debug.c:840
+#: debug.c:849
msgid "No locals.\n"
msgstr ""
-#: debug.c:848
+#: debug.c:857
msgid ""
"All defined variables:\n"
"\n"
msgstr ""
-#: debug.c:858
+#: debug.c:867
msgid ""
"All defined functions:\n"
"\n"
msgstr ""
-#: debug.c:877
+#: debug.c:886
msgid ""
"Auto-display variables:\n"
"\n"
msgstr ""
-#: debug.c:880
+#: debug.c:889
msgid ""
"Watch variables:\n"
"\n"
msgstr ""
-#: debug.c:1020
+#: debug.c:1029
#, c-format
msgid "no symbol `%s' in current context\n"
msgstr ""
-#: debug.c:1032 debug.c:1418
+#: debug.c:1041 debug.c:1427
#, c-format
msgid "`%s' is not an array\n"
msgstr ""
-#: debug.c:1046
+#: debug.c:1055
#, c-format
msgid "$%ld = uninitialized field\n"
msgstr ""
-#: debug.c:1067
+#: debug.c:1076
#, c-format
msgid "array `%s' is empty\n"
msgstr ""
-#: debug.c:1110 debug.c:1162
+#: debug.c:1119 debug.c:1171
#, c-format
msgid "[\"%s\"] not in array `%s'\n"
msgstr ""
-#: debug.c:1166
+#: debug.c:1175
#, c-format
msgid "`%s[\"%s\"]' is not an array\n"
msgstr ""
-#: debug.c:1227 debug.c:4949
+#: debug.c:1236 debug.c:4964
#, c-format
msgid "`%s' is not a scalar variable"
msgstr ""
-#: debug.c:1249 debug.c:4979
+#: debug.c:1258 debug.c:4994
#, c-format
msgid "attempt to use array `%s[\"%s\"]' in a scalar context"
msgstr ""
-#: debug.c:1271 debug.c:4990
+#: debug.c:1280 debug.c:5005
#, c-format
msgid "attempt to use scalar `%s[\"%s\"]' as array"
msgstr ""
-#: debug.c:1414
+#: debug.c:1423
#, c-format
msgid "`%s' is a function"
msgstr ""
-#: debug.c:1456
+#: debug.c:1465
#, c-format
msgid "watchpoint %d is unconditional\n"
msgstr ""
-#: debug.c:1490
+#: debug.c:1499
#, c-format
msgid "No display item numbered %ld"
msgstr ""
-#: debug.c:1493
+#: debug.c:1502
#, c-format
msgid "No watch item numbered %ld"
msgstr ""
-#: debug.c:1519
+#: debug.c:1528
#, c-format
msgid "%d: [\"%s\"] not in array `%s'\n"
msgstr ""
-#: debug.c:1758
+#: debug.c:1767
msgid "attempt to use scalar value as array"
msgstr ""
-#: debug.c:1847
+#: debug.c:1856
#, c-format
msgid "Watchpoint %d deleted because parameter is out of scope.\n"
msgstr ""
-#: debug.c:1858
+#: debug.c:1867
#, c-format
msgid "Display %d deleted because parameter is out of scope.\n"
msgstr ""
-#: debug.c:1891
+#: debug.c:1900
#, c-format
msgid " in file `%s', line %d\n"
msgstr ""
-#: debug.c:1912
+#: debug.c:1921
#, c-format
msgid " at `%s':%d"
msgstr ""
-#: debug.c:1928 debug.c:1991
+#: debug.c:1937 debug.c:2000
#, c-format
msgid "#%ld\tin "
msgstr ""
-#: debug.c:1965
+#: debug.c:1974
#, c-format
msgid "More stack frames follow ...\n"
msgstr ""
-#: debug.c:2008
+#: debug.c:2017
msgid "invalid frame number"
msgstr ""
-#: debug.c:2180
+#: debug.c:2200
#, c-format
msgid "Note: breakpoint %d (enabled, ignore next %ld hits), also set at %s:%d"
msgstr ""
-#: debug.c:2187
+#: debug.c:2207
#, c-format
msgid "Note: breakpoint %d (enabled), also set at %s:%d"
msgstr ""
-#: debug.c:2194
+#: debug.c:2214
#, c-format
msgid "Note: breakpoint %d (disabled, ignore next %ld hits), also set at %s:%d"
msgstr ""
-#: debug.c:2201
+#: debug.c:2221
#, c-format
msgid "Note: breakpoint %d (disabled), also set at %s:%d"
msgstr ""
-#: debug.c:2218
+#: debug.c:2238
#, c-format
msgid "Breakpoint %d set at file `%s', line %d\n"
msgstr ""
-#: debug.c:2320
+#: debug.c:2340
#, c-format
msgid "Can't set breakpoint in file `%s'\n"
msgstr ""
-#: debug.c:2349 debug.c:2472 debug.c:3330
+#: debug.c:2369 debug.c:2492 debug.c:3350
#, c-format
msgid "line number %d in file `%s' out of range"
msgstr ""
-#: debug.c:2353
+#: debug.c:2373
#, c-format
msgid "Can't find rule!!!\n"
msgstr ""
-#: debug.c:2355
+#: debug.c:2375
#, c-format
msgid "Can't set breakpoint at `%s':%d\n"
msgstr ""
-#: debug.c:2367
+#: debug.c:2387
#, c-format
msgid "Can't set breakpoint in function `%s'\n"
msgstr ""
-#: debug.c:2383
+#: debug.c:2403
#, c-format
msgid "breakpoint %d set at file `%s', line %d is unconditional\n"
msgstr ""
-#: debug.c:2488 debug.c:2510
+#: debug.c:2508 debug.c:2530
#, c-format
msgid "Deleted breakpoint %d"
msgstr ""
-#: debug.c:2494
+#: debug.c:2514
#, c-format
msgid "No breakpoint(s) at entry to function `%s'\n"
msgstr ""
-#: debug.c:2521
+#: debug.c:2541
#, c-format
msgid "No breakpoint at file `%s', line #%d\n"
msgstr ""
-#: debug.c:2576 debug.c:2617 debug.c:2637 debug.c:2680
+#: debug.c:2596 debug.c:2637 debug.c:2657 debug.c:2700
msgid "invalid breakpoint number"
msgstr ""
-#: debug.c:2592
+#: debug.c:2612
msgid "Delete all breakpoints? (y or n) "
msgstr ""
-#: debug.c:2593 debug.c:2903 debug.c:2956
+#: debug.c:2613 debug.c:2923 debug.c:2976
msgid "y"
msgstr ""
-#: debug.c:2642
+#: debug.c:2662
#, c-format
msgid "Will ignore next %ld crossing(s) of breakpoint %d.\n"
msgstr ""
-#: debug.c:2646
+#: debug.c:2666
#, c-format
msgid "Will stop next time breakpoint %d is reached.\n"
msgstr ""
-#: debug.c:2763
+#: debug.c:2783
#, c-format
msgid "Can only debug programs provided with the `-f' option.\n"
msgstr ""
-#: debug.c:2888
+#: debug.c:2908
#, c-format
msgid "Failed to restart debugger"
msgstr ""
-#: debug.c:2902
+#: debug.c:2922
msgid "Program already running. Restart from beginning (y/n)? "
msgstr ""
-#: debug.c:2906
+#: debug.c:2926
#, c-format
msgid "Program not restarted\n"
msgstr ""
-#: debug.c:2916
+#: debug.c:2936
#, c-format
msgid "error: cannot restart, operation not allowed\n"
msgstr ""
-#: debug.c:2922
+#: debug.c:2942
#, c-format
msgid "error (%s): cannot restart, ignoring rest of the commands\n"
msgstr ""
-#: debug.c:2930
+#: debug.c:2950
#, c-format
msgid "Starting program: \n"
msgstr ""
-#: debug.c:2939
+#: debug.c:2959
#, c-format
msgid "Program exited %s with exit value: %d\n"
msgstr ""
-#: debug.c:2955
+#: debug.c:2975
msgid "The program is running. Exit anyway (y/n)? "
msgstr ""
-#: debug.c:2990
+#: debug.c:3010
#, c-format
msgid "Not stopped at any breakpoint; argument ignored.\n"
msgstr ""
-#: debug.c:2995
+#: debug.c:3015
#, c-format
msgid "invalid breakpoint number %d."
msgstr ""
-#: debug.c:3000
+#: debug.c:3020
#, c-format
msgid "Will ignore next %ld crossings of breakpoint %d.\n"
msgstr ""
-#: debug.c:3187
+#: debug.c:3207
#, c-format
msgid "'finish' not meaningful in the outermost frame main()\n"
msgstr ""
-#: debug.c:3192
+#: debug.c:3212
#, c-format
msgid "Run till return from "
msgstr ""
-#: debug.c:3235
+#: debug.c:3255
#, c-format
msgid "'return' not meaningful in the outermost frame main()\n"
msgstr ""
-#: debug.c:3349
+#: debug.c:3369
#, c-format
msgid "Can't find specified location in function `%s'\n"
msgstr ""
-#: debug.c:3357
+#: debug.c:3377
#, c-format
msgid "invalid source line %d in file `%s'"
msgstr ""
-#: debug.c:3372
+#: debug.c:3392
#, c-format
msgid "Can't find specified location %d in file `%s'\n"
msgstr ""
-#: debug.c:3404
+#: debug.c:3424
#, c-format
msgid "element not in array\n"
msgstr ""
-#: debug.c:3404
+#: debug.c:3424
#, c-format
msgid "untyped variable\n"
msgstr ""
-#: debug.c:3446
+#: debug.c:3466
#, c-format
msgid "Stopping in %s ...\n"
msgstr ""
-#: debug.c:3523
+#: debug.c:3543
#, c-format
msgid "'finish' not meaningful with non-local jump '%s'\n"
msgstr ""
-#: debug.c:3530
+#: debug.c:3550
#, c-format
msgid "'until' not meaningful with non-local jump '%s'\n"
msgstr ""
-#: debug.c:4165
+#: debug.c:4185
msgid "\t------[Enter] to continue or q [Enter] to quit------"
msgstr ""
-#: debug.c:4166
+#: debug.c:4186
msgid "q"
msgstr ""
-#: debug.c:4986
+#: debug.c:5001
#, c-format
msgid "[\"%s\"] not in array `%s'"
msgstr ""
-#: debug.c:5192
+#: debug.c:5207
#, c-format
msgid "sending output to stdout\n"
msgstr ""
-#: debug.c:5232
+#: debug.c:5247
msgid "invalid number"
msgstr ""
-#: debug.c:5366
+#: debug.c:5381
#, c-format
msgid "`%s' not allowed in current context; statement ignored"
msgstr ""
-#: debug.c:5374
+#: debug.c:5389
msgid "`return' not allowed in current context; statement ignored"
msgstr ""
-#: debug.c:5575
+#: debug.c:5590
#, c-format
msgid "No symbol `%s' in current context"
msgstr ""
-#: dfa.c:998 dfa.c:1001 dfa.c:1021 dfa.c:1031 dfa.c:1043 dfa.c:1094 dfa.c:1103
-#: dfa.c:1106 dfa.c:1111 dfa.c:1124 dfa.c:1192
+#: dfa.c:1118 dfa.c:1121 dfa.c:1142 dfa.c:1150 dfa.c:1162 dfa.c:1197
+#: dfa.c:1206 dfa.c:1209 dfa.c:1214 dfa.c:1228 dfa.c:1275
msgid "unbalanced ["
msgstr ""
-#: dfa.c:1052
+#: dfa.c:1174
msgid "invalid character class"
msgstr ""
-#: dfa.c:1229
+#: dfa.c:1316
msgid "character class syntax is [[:space:]], not [:space:]"
msgstr ""
-#: dfa.c:1281
+#: dfa.c:1366
msgid "unfinished \\ escape"
msgstr ""
-#: dfa.c:1428 regcomp.c:161
+#: dfa.c:1513 regcomp.c:161
msgid "Invalid content of \\{\\}"
msgstr ""
-#: dfa.c:1431 regcomp.c:176
+#: dfa.c:1516 regcomp.c:176
msgid "Regular expression too big"
msgstr ""
-#: dfa.c:1816
+#: dfa.c:1936
msgid "unbalanced ("
msgstr ""
-#: dfa.c:1943
+#: dfa.c:2062
msgid "no syntax specified"
msgstr ""
-#: dfa.c:1951
+#: dfa.c:2070
msgid "unbalanced )"
msgstr ""
@@ -1780,11 +1790,11 @@ msgstr ""
msgid "opcode %s not an operator or keyword"
msgstr ""
-#: eval.c:471
+#: eval.c:472
msgid "buffer overflow in genflags2str"
msgstr ""
-#: eval.c:674
+#: eval.c:675
#, c-format
msgid ""
"\n"
@@ -1792,71 +1802,71 @@ msgid ""
"\n"
msgstr ""
-#: eval.c:703
+#: eval.c:704
msgid "`IGNORECASE' is a gawk extension"
msgstr ""
-#: eval.c:735
+#: eval.c:736
msgid "`BINMODE' is a gawk extension"
msgstr ""
-#: eval.c:793
+#: eval.c:794
#, c-format
msgid "BINMODE value `%s' is invalid, treated as 3"
msgstr ""
-#: eval.c:884
+#: eval.c:885
#, c-format
msgid "bad `%sFMT' specification `%s'"
msgstr ""
-#: eval.c:968
+#: eval.c:969
msgid "turning off `--lint' due to assignment to `LINT'"
msgstr ""
-#: eval.c:1146
+#: eval.c:1147
#, c-format
msgid "reference to uninitialized argument `%s'"
msgstr ""
-#: eval.c:1147
+#: eval.c:1148
#, c-format
msgid "reference to uninitialized variable `%s'"
msgstr ""
-#: eval.c:1165
+#: eval.c:1166
msgid "attempt to field reference from non-numeric value"
msgstr ""
-#: eval.c:1167
+#: eval.c:1168
msgid "attempt to field reference from null string"
msgstr ""
-#: eval.c:1175
+#: eval.c:1176
#, c-format
msgid "attempt to access field %ld"
msgstr ""
-#: eval.c:1184
+#: eval.c:1185
#, c-format
msgid "reference to uninitialized field `$%ld'"
msgstr ""
-#: eval.c:1271
+#: eval.c:1272
#, c-format
msgid "function `%s' called with more arguments than declared"
msgstr ""
-#: eval.c:1466
+#: eval.c:1473
#, c-format
msgid "unwind_stack: unexpected type `%s'"
msgstr ""
-#: eval.c:1562
+#: eval.c:1569
msgid "division by zero attempted in `/='"
msgstr ""
-#: eval.c:1569
+#: eval.c:1576
#, c-format
msgid "division by zero attempted in `%%='"
msgstr ""
@@ -1869,7 +1879,7 @@ msgstr ""
msgid "-l / @load are gawk extensions"
msgstr ""
-#: ext.c:95 ext.c:177
+#: ext.c:95
msgid "load_ext: received NULL lib_name"
msgstr ""
@@ -1898,6 +1908,10 @@ msgstr ""
msgid "`extension' is a gawk extension"
msgstr ""
+#: ext.c:177
+msgid "extension: received NULL lib_name"
+msgstr ""
+
#: ext.c:180
#, c-format
msgid "extension: cannot open library `%s' (%s)"
@@ -1918,36 +1932,36 @@ msgstr ""
msgid "make_builtin: missing function name"
msgstr ""
-#: ext.c:238
+#: ext.c:236
#, c-format
msgid "make_builtin: can't redefine function `%s'"
msgstr ""
-#: ext.c:242
+#: ext.c:240
#, c-format
msgid "make_builtin: function `%s' already defined"
msgstr ""
-#: ext.c:246
+#: ext.c:244
#, c-format
msgid "make_builtin: function name `%s' previously defined"
msgstr ""
-#: ext.c:248
+#: ext.c:246
#, c-format
msgid "make_builtin: can't use gawk built-in `%s' as function name"
msgstr ""
-#: ext.c:251 ext.c:304
+#: ext.c:249 ext.c:304
#, c-format
msgid "make_builtin: negative argument count for function `%s'"
msgstr ""
-#: ext.c:278
+#: ext.c:276
msgid "extension: missing function name"
msgstr ""
-#: ext.c:283
+#: ext.c:279 ext.c:283
#, c-format
msgid "extension: illegal character `%c' in function name `%s'"
msgstr ""
@@ -1972,139 +1986,143 @@ msgstr ""
msgid "extension: can't use gawk built-in `%s' as function name"
msgstr ""
-#: ext.c:374
+#: ext.c:375
#, c-format
msgid "function `%s' defined to take no more than %d argument(s)"
msgstr ""
-#: ext.c:377
+#: ext.c:378
#, c-format
msgid "function `%s': missing argument #%d"
msgstr ""
-#: ext.c:394
+#: ext.c:395
#, c-format
msgid "function `%s': argument #%d: attempt to use scalar as an array"
msgstr ""
-#: ext.c:398
+#: ext.c:399
#, c-format
msgid "function `%s': argument #%d: attempt to use array as a scalar"
msgstr ""
-#: ext.c:412
+#: ext.c:413
msgid "dynamic loading of library not supported"
msgstr ""
-#: extension/filefuncs.c:97
+#: extension/filefuncs.c:159
msgid "chdir: called with incorrect number of arguments, expecting 1"
msgstr ""
-#: extension/filefuncs.c:343
+#: extension/filefuncs.c:439
#, c-format
msgid "stat: unable to read symbolic link `%s'"
msgstr ""
-#: extension/filefuncs.c:376
+#: extension/filefuncs.c:472
msgid "stat: called with wrong number of arguments"
msgstr ""
-#: extension/filefuncs.c:383
+#: extension/filefuncs.c:479
msgid "stat: bad parameters"
msgstr ""
-#: extension/filefuncs.c:437
+#: extension/filefuncs.c:533
#, c-format
msgid "fts init: could not create variable %s"
msgstr ""
-#: extension/filefuncs.c:460
+#: extension/filefuncs.c:554
+msgid "fts is not supported on this system"
+msgstr ""
+
+#: extension/filefuncs.c:573
msgid "fill_stat_element: could not create array"
msgstr ""
-#: extension/filefuncs.c:469
+#: extension/filefuncs.c:582
msgid "fill_stat_element: could not set element"
msgstr ""
-#: extension/filefuncs.c:484
+#: extension/filefuncs.c:597
msgid "fill_path_element: could not set element"
msgstr ""
-#: extension/filefuncs.c:500
+#: extension/filefuncs.c:613
msgid "fill_error_element: could not set element"
msgstr ""
-#: extension/filefuncs.c:547 extension/filefuncs.c:594
+#: extension/filefuncs.c:660 extension/filefuncs.c:707
msgid "fts-process: could not create array"
msgstr ""
-#: extension/filefuncs.c:557 extension/filefuncs.c:604
-#: extension/filefuncs.c:622
+#: extension/filefuncs.c:670 extension/filefuncs.c:717
+#: extension/filefuncs.c:735
msgid "fts-process: could not set element"
msgstr ""
-#: extension/filefuncs.c:671
+#: extension/filefuncs.c:784
msgid "fts: called with incorrect number of arguments, expecting 3"
msgstr ""
-#: extension/filefuncs.c:674
+#: extension/filefuncs.c:787
msgid "fts: bad first parameter"
msgstr ""
-#: extension/filefuncs.c:680
+#: extension/filefuncs.c:793
msgid "fts: bad second parameter"
msgstr ""
-#: extension/filefuncs.c:686
+#: extension/filefuncs.c:799
msgid "fts: bad third parameter"
msgstr ""
-#: extension/filefuncs.c:693
+#: extension/filefuncs.c:806
msgid "fts: could not flatten array\n"
msgstr ""
-#: extension/filefuncs.c:711
+#: extension/filefuncs.c:824
msgid "fts: ignoring sneaky FTS_NOSTAT flag. nyah, nyah, nyah."
msgstr ""
-#: extension/filefuncs.c:728
+#: extension/filefuncs.c:841
msgid "fts: clear_array() failed\n"
msgstr ""
-#: extension/fnmatch.c:98
+#: extension/fnmatch.c:112
msgid "fnmatch: called with less than three arguments"
msgstr ""
-#: extension/fnmatch.c:101
+#: extension/fnmatch.c:115
msgid "fnmatch: called with more than three arguments"
msgstr ""
-#: extension/fnmatch.c:104
+#: extension/fnmatch.c:118
msgid "fnmatch: could not get first argument"
msgstr ""
-#: extension/fnmatch.c:109
+#: extension/fnmatch.c:123
msgid "fnmatch: could not get second argument"
msgstr ""
-#: extension/fnmatch.c:114
+#: extension/fnmatch.c:128
msgid "fnmatch: could not get third argument"
msgstr ""
-#: extension/fnmatch.c:127
+#: extension/fnmatch.c:141
msgid "fnmatch is not implemented on this system\n"
msgstr ""
-#: extension/fnmatch.c:159
+#: extension/fnmatch.c:173
msgid "fnmatch init: could not add FNM_NOMATCH variable"
msgstr ""
-#: extension/fnmatch.c:169
+#: extension/fnmatch.c:183
#, c-format
msgid "fnmatch init: could not set array element %s"
msgstr ""
-#: extension/fnmatch.c:179
+#: extension/fnmatch.c:193
msgid "fnmatch init: could not install FNM array"
msgstr ""
@@ -2128,88 +2146,88 @@ msgstr ""
msgid "wait: called with too many arguments"
msgstr ""
-#: extension/inplace.c:110
+#: extension/inplace.c:130
msgid "inplace_begin: in-place editing already active"
msgstr ""
-#: extension/inplace.c:113 extension/inplace.c:187
+#: extension/inplace.c:133 extension/inplace.c:207
#, c-format
msgid "inplace_begin: expects 2 arguments but called with %d"
msgstr ""
-#: extension/inplace.c:116
+#: extension/inplace.c:136
msgid "inplace_begin: cannot retrieve 1st argument as a string filename"
msgstr ""
-#: extension/inplace.c:124
+#: extension/inplace.c:144
#, c-format
msgid "inplace_begin: disabling in-place editing for invalid FILENAME `%s'"
msgstr ""
-#: extension/inplace.c:131
+#: extension/inplace.c:151
#, c-format
msgid "inplace_begin: Cannot stat `%s' (%s)"
msgstr ""
-#: extension/inplace.c:138
+#: extension/inplace.c:158
#, c-format
msgid "inplace_begin: `%s' is not a regular file"
msgstr ""
-#: extension/inplace.c:149
+#: extension/inplace.c:169
#, c-format
msgid "inplace_begin: mkstemp(`%s') failed (%s)"
msgstr ""
-#: extension/inplace.c:158
+#: extension/inplace.c:178
#, c-format
msgid "inplace_begin: chmod failed (%s)"
msgstr ""
-#: extension/inplace.c:165
+#: extension/inplace.c:185
#, c-format
msgid "inplace_begin: dup(stdout) failed (%s)"
msgstr ""
-#: extension/inplace.c:168
+#: extension/inplace.c:188
#, c-format
msgid "inplace_begin: dup2(%d, stdout) failed (%s)"
msgstr ""
-#: extension/inplace.c:171
+#: extension/inplace.c:191
#, c-format
msgid "inplace_begin: close(%d) failed (%s)"
msgstr ""
-#: extension/inplace.c:190
+#: extension/inplace.c:210
msgid "inplace_end: cannot retrieve 1st argument as a string filename"
msgstr ""
-#: extension/inplace.c:197
+#: extension/inplace.c:217
msgid "inplace_end: in-place editing not active"
msgstr ""
-#: extension/inplace.c:203
+#: extension/inplace.c:223
#, c-format
msgid "inplace_end: dup2(%d, stdout) failed (%s)"
msgstr ""
-#: extension/inplace.c:206
+#: extension/inplace.c:226
#, c-format
msgid "inplace_end: close(%d) failed (%s)"
msgstr ""
-#: extension/inplace.c:210
+#: extension/inplace.c:230
#, c-format
msgid "inplace_end: fsetpos(stdout) failed (%s)"
msgstr ""
-#: extension/inplace.c:223
+#: extension/inplace.c:243
#, c-format
msgid "inplace_end: link(`%s', `%s') failed (%s)"
msgstr ""
-#: extension/inplace.c:229
+#: extension/inplace.c:253
#, c-format
msgid "inplace_end: rename(`%s', `%s') failed (%s)"
msgstr ""
@@ -2238,165 +2256,165 @@ msgstr ""
msgid "chr: called with inappropriate argument(s)"
msgstr ""
-#: extension/readdir.c:203
+#: extension/readdir.c:281
#, c-format
msgid "dir_take_control_of: opendir/fdopendir failed: %s"
msgstr ""
-#: extension/readfile.c:84
+#: extension/readfile.c:113
msgid "readfile: called with too many arguments"
msgstr ""
-#: extension/readfile.c:118
+#: extension/readfile.c:137
msgid "readfile: called with no arguments"
msgstr ""
-#: extension/rwarray.c:120
+#: extension/rwarray.c:124
msgid "writea: called with too many arguments"
msgstr ""
-#: extension/rwarray.c:127
+#: extension/rwarray.c:131
#, c-format
msgid "do_writea: argument 0 is not a string\n"
msgstr ""
-#: extension/rwarray.c:133
+#: extension/rwarray.c:137
#, c-format
msgid "do_writea: argument 1 is not an array\n"
msgstr ""
-#: extension/rwarray.c:180
+#: extension/rwarray.c:184
#, c-format
msgid "write_array: could not flatten array\n"
msgstr ""
-#: extension/rwarray.c:194
+#: extension/rwarray.c:198
#, c-format
msgid "write_array: could not release flattened array\n"
msgstr ""
-#: extension/rwarray.c:276
+#: extension/rwarray.c:280
msgid "reada: called with too many arguments"
msgstr ""
-#: extension/rwarray.c:283
+#: extension/rwarray.c:287
#, c-format
msgid "do_reada: argument 0 is not a string\n"
msgstr ""
-#: extension/rwarray.c:289
+#: extension/rwarray.c:293
#, c-format
msgid "do_reada: argument 1 is not an array\n"
msgstr ""
-#: extension/rwarray.c:333
+#: extension/rwarray.c:337
#, c-format
msgid "do_reada: clear_array failed\n"
msgstr ""
-#: extension/rwarray.c:370
+#: extension/rwarray.c:374
#, c-format
msgid "read_array: set_array_element failed\n"
msgstr ""
-#: extension/time.c:81
+#: extension/time.c:113
msgid "gettimeofday: ignoring arguments"
msgstr ""
-#: extension/time.c:112
+#: extension/time.c:144
msgid "gettimeofday: not supported on this platform"
msgstr ""
-#: extension/time.c:133
+#: extension/time.c:165
msgid "sleep: called with too many arguments"
msgstr ""
-#: extension/time.c:136
+#: extension/time.c:168
msgid "sleep: missing required numeric argument"
msgstr ""
-#: extension/time.c:142
+#: extension/time.c:174
msgid "sleep: argument is negative"
msgstr ""
-#: extension/time.c:176
+#: extension/time.c:208
msgid "sleep: not supported on this platform"
msgstr ""
-#: field.c:339
+#: field.c:345
msgid "NF set to negative value"
msgstr ""
-#: field.c:964 field.c:971 field.c:975
+#: field.c:971 field.c:978 field.c:982
msgid "split: fourth argument is a gawk extension"
msgstr ""
-#: field.c:968
+#: field.c:975
msgid "split: fourth argument is not an array"
msgstr ""
-#: field.c:982
+#: field.c:989
msgid "split: second argument is not an array"
msgstr ""
-#: field.c:986
+#: field.c:993
msgid "split: cannot use the same array for second and fourth args"
msgstr ""
-#: field.c:991
+#: field.c:998
msgid "split: cannot use a subarray of second arg for fourth arg"
msgstr ""
-#: field.c:994
+#: field.c:1001
msgid "split: cannot use a subarray of fourth arg for second arg"
msgstr ""
-#: field.c:1023
+#: field.c:1032
msgid "split: null string for third arg is a gawk extension"
msgstr ""
-#: field.c:1063
+#: field.c:1072
msgid "patsplit: fourth argument is not an array"
msgstr ""
-#: field.c:1068
+#: field.c:1077
msgid "patsplit: second argument is not an array"
msgstr ""
-#: field.c:1074
+#: field.c:1083
msgid "patsplit: third argument must be non-null"
msgstr ""
-#: field.c:1078
+#: field.c:1087
msgid "patsplit: cannot use the same array for second and fourth args"
msgstr ""
-#: field.c:1083
+#: field.c:1092
msgid "patsplit: cannot use a subarray of second arg for fourth arg"
msgstr ""
-#: field.c:1086
+#: field.c:1095
msgid "patsplit: cannot use a subarray of fourth arg for second arg"
msgstr ""
-#: field.c:1124
+#: field.c:1133
msgid "`FIELDWIDTHS' is a gawk extension"
msgstr ""
-#: field.c:1188
+#: field.c:1197
#, c-format
msgid "invalid FIELDWIDTHS value, near `%s'"
msgstr ""
-#: field.c:1261
+#: field.c:1270
msgid "null string for `FS' is a gawk extension"
msgstr ""
-#: field.c:1265
+#: field.c:1274
msgid "old awk does not support regexps as value of `FS'"
msgstr ""
-#: field.c:1384
+#: field.c:1393
msgid "`FPAT' is a gawk extension"
msgstr ""
@@ -2412,577 +2430,577 @@ msgstr ""
msgid "node_to_awk_value: received null val"
msgstr ""
-#: gawkapi.c:808
+#: gawkapi.c:807
msgid "remove_element: received null array"
msgstr ""
-#: gawkapi.c:811
+#: gawkapi.c:810
msgid "remove_element: received null subscript"
msgstr ""
-#: gawkapi.c:943
+#: gawkapi.c:947
#, c-format
msgid "api_flatten_array: could not convert index %d\n"
msgstr ""
-#: gawkapi.c:948
+#: gawkapi.c:952
#, c-format
msgid "api_flatten_array: could not convert value %d\n"
msgstr ""
-#: getopt.c:603 getopt.c:632
+#: getopt.c:604 getopt.c:633
#, c-format
msgid "%s: option '%s' is ambiguous; possibilities:"
msgstr ""
-#: getopt.c:678 getopt.c:682
+#: getopt.c:679 getopt.c:683
#, c-format
msgid "%s: option '--%s' doesn't allow an argument\n"
msgstr ""
-#: getopt.c:691 getopt.c:696
+#: getopt.c:692 getopt.c:697
#, c-format
msgid "%s: option '%c%s' doesn't allow an argument\n"
msgstr ""
-#: getopt.c:739 getopt.c:758
+#: getopt.c:740 getopt.c:759
#, c-format
msgid "%s: option '--%s' requires an argument\n"
msgstr ""
-#: getopt.c:796 getopt.c:799
+#: getopt.c:797 getopt.c:800
#, c-format
msgid "%s: unrecognized option '--%s'\n"
msgstr ""
-#: getopt.c:807 getopt.c:810
+#: getopt.c:808 getopt.c:811
#, c-format
msgid "%s: unrecognized option '%c%s'\n"
msgstr ""
-#: getopt.c:859 getopt.c:862
+#: getopt.c:860 getopt.c:863
#, c-format
msgid "%s: invalid option -- '%c'\n"
msgstr ""
-#: getopt.c:915 getopt.c:932 getopt.c:1142 getopt.c:1160
+#: getopt.c:916 getopt.c:933 getopt.c:1143 getopt.c:1161
#, c-format
msgid "%s: option requires an argument -- '%c'\n"
msgstr ""
-#: getopt.c:988 getopt.c:1004
+#: getopt.c:989 getopt.c:1005
#, c-format
msgid "%s: option '-W %s' is ambiguous\n"
msgstr ""
-#: getopt.c:1028 getopt.c:1046
+#: getopt.c:1029 getopt.c:1047
#, c-format
msgid "%s: option '-W %s' doesn't allow an argument\n"
msgstr ""
-#: getopt.c:1067 getopt.c:1085
+#: getopt.c:1068 getopt.c:1086
#, c-format
msgid "%s: option '-W %s' requires an argument\n"
msgstr ""
-#: io.c:347
+#: io.c:392
#, c-format
msgid "command line argument `%s' is a directory: skipped"
msgstr ""
-#: io.c:350 io.c:463
+#: io.c:395 io.c:513
#, c-format
msgid "cannot open file `%s' for reading (%s)"
msgstr ""
-#: io.c:590
+#: io.c:640
#, c-format
msgid "close of fd %d (`%s') failed (%s)"
msgstr ""
-#: io.c:666
+#: io.c:716
msgid "redirection not allowed in sandbox mode"
msgstr ""
-#: io.c:700
+#: io.c:750
#, c-format
msgid "expression in `%s' redirection only has numeric value"
msgstr ""
-#: io.c:706
+#: io.c:756
#, c-format
msgid "expression for `%s' redirection has null string value"
msgstr ""
-#: io.c:711
+#: io.c:761
#, c-format
msgid "filename `%s' for `%s' redirection may be result of logical expression"
msgstr ""
-#: io.c:754
+#: io.c:809
#, c-format
msgid "unnecessary mixing of `>' and `>>' for file `%.*s'"
msgstr ""
-#: io.c:808
+#: io.c:863
#, c-format
msgid "can't open pipe `%s' for output (%s)"
msgstr ""
-#: io.c:818
+#: io.c:873
#, c-format
msgid "can't open pipe `%s' for input (%s)"
msgstr ""
-#: io.c:849
+#: io.c:904
#, c-format
msgid "can't open two way pipe `%s' for input/output (%s)"
msgstr ""
-#: io.c:928
+#: io.c:986
#, c-format
msgid "can't redirect from `%s' (%s)"
msgstr ""
-#: io.c:931
+#: io.c:989
#, c-format
msgid "can't redirect to `%s' (%s)"
msgstr ""
-#: io.c:982
+#: io.c:1040
msgid ""
"reached system limit for open files: starting to multiplex file descriptors"
msgstr ""
-#: io.c:998
+#: io.c:1056
#, c-format
msgid "close of `%s' failed (%s)."
msgstr ""
-#: io.c:1006
+#: io.c:1064
msgid "too many pipes or input files open"
msgstr ""
-#: io.c:1028
+#: io.c:1086
msgid "close: second argument must be `to' or `from'"
msgstr ""
-#: io.c:1045
+#: io.c:1103
#, c-format
msgid "close: `%.*s' is not an open file, pipe or co-process"
msgstr ""
-#: io.c:1050
+#: io.c:1108
msgid "close of redirection that was never opened"
msgstr ""
-#: io.c:1147
+#: io.c:1205
#, c-format
msgid "close: redirection `%s' not opened with `|&', second argument ignored"
msgstr ""
-#: io.c:1164
+#: io.c:1222
#, c-format
msgid "failure status (%d) on pipe close of `%s' (%s)"
msgstr ""
-#: io.c:1167
+#: io.c:1225
#, c-format
msgid "failure status (%d) on file close of `%s' (%s)"
msgstr ""
-#: io.c:1187
+#: io.c:1245
#, c-format
msgid "no explicit close of socket `%s' provided"
msgstr ""
-#: io.c:1190
+#: io.c:1248
#, c-format
msgid "no explicit close of co-process `%s' provided"
msgstr ""
-#: io.c:1193
+#: io.c:1251
#, c-format
msgid "no explicit close of pipe `%s' provided"
msgstr ""
-#: io.c:1196
+#: io.c:1254
#, c-format
msgid "no explicit close of file `%s' provided"
msgstr ""
-#: io.c:1224 io.c:1279 main.c:842 main.c:879
+#: io.c:1284 io.c:1342 main.c:864 main.c:906
#, c-format
msgid "error writing standard output (%s)"
msgstr ""
-#: io.c:1228 io.c:1284
+#: io.c:1289 io.c:1348 main.c:866
#, c-format
msgid "error writing standard error (%s)"
msgstr ""
-#: io.c:1236
+#: io.c:1297
#, c-format
msgid "pipe flush of `%s' failed (%s)."
msgstr ""
-#: io.c:1239
+#: io.c:1300
#, c-format
msgid "co-process flush of pipe to `%s' failed (%s)."
msgstr ""
-#: io.c:1242
+#: io.c:1303
#, c-format
msgid "file flush of `%s' failed (%s)."
msgstr ""
-#: io.c:1356
+#: io.c:1420
#, c-format
msgid "local port %s invalid in `/inet'"
msgstr ""
-#: io.c:1374
+#: io.c:1438
#, c-format
msgid "remote host and port information (%s, %s) invalid"
msgstr ""
-#: io.c:1526
+#: io.c:1590
#, c-format
msgid "no (known) protocol supplied in special filename `%s'"
msgstr ""
-#: io.c:1540
+#: io.c:1604
#, c-format
msgid "special file name `%s' is incomplete"
msgstr ""
-#: io.c:1557
+#: io.c:1621
msgid "must supply a remote hostname to `/inet'"
msgstr ""
-#: io.c:1575
+#: io.c:1639
msgid "must supply a remote port to `/inet'"
msgstr ""
-#: io.c:1621
+#: io.c:1685
msgid "TCP/IP communications are not supported"
msgstr ""
-#: io.c:1796
+#: io.c:1867
#, c-format
msgid "could not open `%s', mode `%s'"
msgstr ""
-#: io.c:1846
+#: io.c:1917
#, c-format
msgid "close of master pty failed (%s)"
msgstr ""
-#: io.c:1848 io.c:2024 io.c:2194
+#: io.c:1919 io.c:2105 io.c:2305
#, c-format
msgid "close of stdout in child failed (%s)"
msgstr ""
-#: io.c:1851
+#: io.c:1922
#, c-format
msgid "moving slave pty to stdout in child failed (dup: %s)"
msgstr ""
-#: io.c:1853 io.c:2029
+#: io.c:1924 io.c:2110
#, c-format
msgid "close of stdin in child failed (%s)"
msgstr ""
-#: io.c:1856
+#: io.c:1927
#, c-format
msgid "moving slave pty to stdin in child failed (dup: %s)"
msgstr ""
-#: io.c:1858 io.c:1879
+#: io.c:1929 io.c:1951
#, c-format
msgid "close of slave pty failed (%s)"
msgstr ""
-#: io.c:1965 io.c:2027 io.c:2171 io.c:2197
+#: io.c:2040 io.c:2108 io.c:2276 io.c:2308
#, c-format
msgid "moving pipe to stdout in child failed (dup: %s)"
msgstr ""
-#: io.c:1972 io.c:2032
+#: io.c:2047 io.c:2113
#, c-format
msgid "moving pipe to stdin in child failed (dup: %s)"
msgstr ""
-#: io.c:1992 io.c:2187
+#: io.c:2073 io.c:2298
msgid "restoring stdout in parent process failed\n"
msgstr ""
-#: io.c:2000
+#: io.c:2081
msgid "restoring stdin in parent process failed\n"
msgstr ""
-#: io.c:2035 io.c:2199 io.c:2213
+#: io.c:2116 io.c:2310 io.c:2324
#, c-format
msgid "close of pipe failed (%s)"
msgstr ""
-#: io.c:2089
+#: io.c:2174
msgid "`|&' not supported"
msgstr ""
-#: io.c:2156
+#: io.c:2261
#, c-format
msgid "cannot open pipe `%s' (%s)"
msgstr ""
-#: io.c:2207
+#: io.c:2318
#, c-format
msgid "cannot create child process for `%s' (fork: %s)"
msgstr ""
-#: io.c:2667
+#: io.c:2790
msgid "register_input_parser: received NULL pointer"
msgstr ""
-#: io.c:2695
+#: io.c:2818
#, c-format
msgid "input parser `%s' conflicts with previously installed input parser `%s'"
msgstr ""
-#: io.c:2702
+#: io.c:2825
#, c-format
msgid "input parser `%s' failed to open `%s'"
msgstr ""
-#: io.c:2722
+#: io.c:2845
msgid "register_output_wrapper: received NULL pointer"
msgstr ""
-#: io.c:2750
+#: io.c:2873
#, c-format
msgid ""
"output wrapper `%s' conflicts with previously installed output wrapper `%s'"
msgstr ""
-#: io.c:2757
+#: io.c:2880
#, c-format
msgid "output wrapper `%s' failed to open `%s'"
msgstr ""
-#: io.c:2778
+#: io.c:2901
msgid "register_output_processor: received NULL pointer"
msgstr ""
-#: io.c:2807
+#: io.c:2930
#, c-format
msgid ""
"two-way processor `%s' conflicts with previously installed two-way processor "
"`%s'"
msgstr ""
-#: io.c:2816
+#: io.c:2939
#, c-format
msgid "two way processor `%s' failed to open `%s'"
msgstr ""
-#: io.c:2923
+#: io.c:3064
#, c-format
msgid "data file `%s' is empty"
msgstr ""
-#: io.c:2965 io.c:2973
+#: io.c:3106 io.c:3114
msgid "could not allocate more input memory"
msgstr ""
-#: io.c:3539
+#: io.c:3682
msgid "multicharacter value of `RS' is a gawk extension"
msgstr ""
-#: io.c:3628
+#: io.c:3771
msgid "IPv6 communication is not supported"
msgstr ""
-#: main.c:388
+#: main.c:405
msgid "empty argument to `-e/--source' ignored"
msgstr ""
-#: main.c:478
+#: main.c:495
#, c-format
msgid "%s: option `-W %s' unrecognized, ignored\n"
msgstr ""
-#: main.c:524
+#: main.c:541
#, c-format
msgid "%s: option requires an argument -- %c\n"
msgstr ""
-#: main.c:545
+#: main.c:562
msgid "environment variable `POSIXLY_CORRECT' set: turning on `--posix'"
msgstr ""
-#: main.c:551
+#: main.c:568
msgid "`--posix' overrides `--traditional'"
msgstr ""
-#: main.c:562
+#: main.c:579
msgid "`--posix'/`--traditional' overrides `--non-decimal-data'"
msgstr ""
-#: main.c:566
+#: main.c:583
#, c-format
msgid "running %s setuid root may be a security problem"
msgstr ""
-#: main.c:571
+#: main.c:588
msgid "`--posix' overrides `--characters-as-bytes'"
msgstr ""
-#: main.c:630
+#: main.c:647
#, c-format
msgid "can't set binary mode on stdin (%s)"
msgstr ""
-#: main.c:633
+#: main.c:650
#, c-format
msgid "can't set binary mode on stdout (%s)"
msgstr ""
-#: main.c:635
+#: main.c:652
#, c-format
msgid "can't set binary mode on stderr (%s)"
msgstr ""
-#: main.c:693
+#: main.c:710
msgid "no program text at all!"
msgstr ""
-#: main.c:779
+#: main.c:799
#, c-format
msgid "Usage: %s [POSIX or GNU style options] -f progfile [--] file ...\n"
msgstr ""
-#: main.c:781
+#: main.c:801
#, c-format
msgid "Usage: %s [POSIX or GNU style options] [--] %cprogram%c file ...\n"
msgstr ""
-#: main.c:786
+#: main.c:806
msgid "POSIX options:\t\tGNU long options: (standard)\n"
msgstr ""
-#: main.c:787
+#: main.c:807
msgid "\t-f progfile\t\t--file=progfile\n"
msgstr ""
-#: main.c:788
+#: main.c:808
msgid "\t-F fs\t\t\t--field-separator=fs\n"
msgstr ""
-#: main.c:789
+#: main.c:809
msgid "\t-v var=val\t\t--assign=var=val\n"
msgstr ""
-#: main.c:790
+#: main.c:810
msgid "Short options:\t\tGNU long options: (extensions)\n"
msgstr ""
-#: main.c:791
+#: main.c:811
msgid "\t-b\t\t\t--characters-as-bytes\n"
msgstr ""
-#: main.c:792
+#: main.c:812
msgid "\t-c\t\t\t--traditional\n"
msgstr ""
-#: main.c:793
+#: main.c:813
msgid "\t-C\t\t\t--copyright\n"
msgstr ""
-#: main.c:794
+#: main.c:814
msgid "\t-d[file]\t\t--dump-variables[=file]\n"
msgstr ""
-#: main.c:795
+#: main.c:815
msgid "\t-D[file]\t\t--debug[=file]\n"
msgstr ""
-#: main.c:796
+#: main.c:816
msgid "\t-e 'program-text'\t--source='program-text'\n"
msgstr ""
-#: main.c:797
+#: main.c:817
msgid "\t-E file\t\t\t--exec=file\n"
msgstr ""
-#: main.c:798
+#: main.c:818
msgid "\t-g\t\t\t--gen-pot\n"
msgstr ""
-#: main.c:799
+#: main.c:819
msgid "\t-h\t\t\t--help\n"
msgstr ""
-#: main.c:800
+#: main.c:820
msgid "\t-i includefile\t\t--include=includefile\n"
msgstr ""
-#: main.c:801
+#: main.c:821
msgid "\t-l library\t\t--load=library\n"
msgstr ""
-#: main.c:802
+#: main.c:822
msgid "\t-L [fatal]\t\t--lint[=fatal]\n"
msgstr ""
-#: main.c:803
+#: main.c:823
msgid "\t-n\t\t\t--non-decimal-data\n"
msgstr ""
-#: main.c:804
+#: main.c:824
msgid "\t-M\t\t\t--bignum\n"
msgstr ""
-#: main.c:805
+#: main.c:825
msgid "\t-N\t\t\t--use-lc-numeric\n"
msgstr ""
-#: main.c:806
+#: main.c:826
msgid "\t-o[file]\t\t--pretty-print[=file]\n"
msgstr ""
-#: main.c:807
+#: main.c:827
msgid "\t-O\t\t\t--optimize\n"
msgstr ""
-#: main.c:808
+#: main.c:828
msgid "\t-p[file]\t\t--profile[=file]\n"
msgstr ""
-#: main.c:809
+#: main.c:829
msgid "\t-P\t\t\t--posix\n"
msgstr ""
-#: main.c:810
+#: main.c:830
msgid "\t-r\t\t\t--re-interval\n"
msgstr ""
-#: main.c:811
+#: main.c:831
msgid "\t-S\t\t\t--sandbox\n"
msgstr ""
-#: main.c:812
+#: main.c:832
msgid "\t-t\t\t\t--lint-old\n"
msgstr ""
-#: main.c:813
+#: main.c:833
msgid "\t-V\t\t\t--version\n"
msgstr ""
-#: main.c:815
+#: main.c:835
msgid "\t-W nostalgia\t\t--nostalgia\n"
msgstr ""
-#: main.c:818
+#: main.c:838
msgid "\t-Y\t\t--parsedebug\n"
msgstr ""
@@ -2991,7 +3009,7 @@ msgstr ""
#. for this application. Please add _another line_ with the
#. address for translation bugs.
#. no-wrap
-#: main.c:827
+#: main.c:847
msgid ""
"\n"
"To report bugs, see node `Bugs' in `gawk.info', which is\n"
@@ -2999,21 +3017,21 @@ msgid ""
"\n"
msgstr ""
-#: main.c:831
+#: main.c:851
msgid ""
"gawk is a pattern scanning and processing language.\n"
"By default it reads standard input and writes standard output.\n"
"\n"
msgstr ""
-#: main.c:835
+#: main.c:855
msgid ""
"Examples:\n"
"\tgawk '{ sum += $1 }; END { print sum }' file\n"
"\tgawk -F: '{ print $1 }' /etc/passwd\n"
msgstr ""
-#: main.c:855
+#: main.c:880
#, c-format
msgid ""
"Copyright (C) 1989, 1991-%d Free Software Foundation.\n"
@@ -3025,7 +3043,7 @@ msgid ""
"\n"
msgstr ""
-#: main.c:863
+#: main.c:888
msgid ""
"This program is distributed in the hope that it will be useful,\n"
"but WITHOUT ANY WARRANTY; without even the implied warranty of\n"
@@ -3034,70 +3052,70 @@ msgid ""
"\n"
msgstr ""
-#: main.c:869
+#: main.c:894
msgid ""
"You should have received a copy of the GNU General Public License\n"
"along with this program. If not, see http://www.gnu.org/licenses/.\n"
msgstr ""
-#: main.c:904
+#: main.c:931
msgid "-Ft does not set FS to tab in POSIX awk"
msgstr ""
-#: main.c:1181
+#: main.c:1208
#, c-format
msgid "unknown value for field spec: %d\n"
msgstr ""
-#: main.c:1279
+#: main.c:1306
#, c-format
msgid ""
"%s: `%s' argument to `-v' not in `var=value' form\n"
"\n"
msgstr ""
-#: main.c:1305
+#: main.c:1332
#, c-format
msgid "`%s' is not a legal variable name"
msgstr ""
-#: main.c:1308
+#: main.c:1335
#, c-format
msgid "`%s' is not a variable name, looking for file `%s=%s'"
msgstr ""
-#: main.c:1312
+#: main.c:1339
#, c-format
msgid "cannot use gawk builtin `%s' as variable name"
msgstr ""
-#: main.c:1317
+#: main.c:1344
#, c-format
msgid "cannot use function `%s' as variable name"
msgstr ""
-#: main.c:1370
+#: main.c:1397
msgid "floating point exception"
msgstr ""
-#: main.c:1377
+#: main.c:1404
msgid "fatal error: internal error"
msgstr ""
-#: main.c:1392
+#: main.c:1419
msgid "fatal error: internal error: segfault"
msgstr ""
-#: main.c:1404
+#: main.c:1431
msgid "fatal error: internal error: stack overflow"
msgstr ""
-#: main.c:1463
+#: main.c:1490
#, c-format
msgid "no pre-opened fd %d"
msgstr ""
-#: main.c:1470
+#: main.c:1497
#, c-format
msgid "could not pre-open /dev/null for fd %d"
msgstr ""
@@ -3152,7 +3170,7 @@ msgstr ""
msgid "%s: argument #%d negative value %Zd will give strange results"
msgstr ""
-#: msg.c:61
+#: msg.c:68
#, c-format
msgid "cmd. line:"
msgstr ""
@@ -3202,68 +3220,63 @@ msgstr ""
msgid "%s %s `%s': could not set close-on-exec: (fcntl F_SETFD: %s)"
msgstr ""
-#: profile.c:70
+#: profile.c:71
#, c-format
msgid "could not open `%s' for writing: %s"
msgstr ""
-#: profile.c:72
+#: profile.c:73
msgid "sending profile to standard error"
msgstr ""
-#: profile.c:188
+#: profile.c:193
#, c-format
msgid ""
"\t# %s block(s)\n"
"\n"
msgstr ""
-#: profile.c:193
+#: profile.c:198
#, c-format
msgid ""
"\t# Rule(s)\n"
"\n"
msgstr ""
-#: profile.c:267
+#: profile.c:272
#, c-format
msgid "internal error: %s with null vname"
msgstr ""
-#: profile.c:530
+#: profile.c:537
msgid "internal error: builtin with null fname"
msgstr ""
-#: profile.c:942
+#: profile.c:949
#, c-format
msgid ""
"\t# Loaded extensions (-l and/or @load)\n"
"\n"
msgstr ""
-#: profile.c:965
+#: profile.c:972
#, c-format
msgid "\t# gawk profile, created %s\n"
msgstr ""
-#: profile.c:1351
+#: profile.c:1475
#, c-format
msgid ""
"\n"
"\t# Functions, listed alphabetically\n"
msgstr ""
-#: profile.c:1389
+#: profile.c:1513
#, c-format
msgid "redir2str: unknown redirection type %d"
msgstr ""
-#: re.c:583
-#, c-format
-msgid "range of the form `[%c-%c]' is locale dependent"
-msgstr ""
-
-#: re.c:610
+#: re.c:607
#, c-format
msgid "regexp component `%.*s' should probably be `[%.*s]'"
msgstr ""
@@ -3332,6 +3345,6 @@ msgstr ""
msgid "No previous regular expression"
msgstr ""
-#: symbol.c:740
+#: symbol.c:741
msgid "can not pop main context"
msgstr ""
diff --git a/po/nl.gmo b/po/nl.gmo
index 7801796c..76c57134 100644
--- a/po/nl.gmo
+++ b/po/nl.gmo
Binary files differ
diff --git a/po/nl.po b/po/nl.po
index e15d9ff0..dc037a99 100644
--- a/po/nl.po
+++ b/po/nl.po
@@ -1,17 +1,17 @@
# Dutch translations for GNU gawk.
-# Copyright (C) 2013 Free Software Foundation, Inc.
+# Copyright (C) 2014 Free Software Foundation, Inc.
# This file is distributed under the same license as the gawk package.
#
-# Bright red with teasing buttons.
+# “Flierefluiten!!â€
#
-# Benno Schulenberg <benno@vertaalt.nl>, 2005, 2007, 2010, 2011, 2012, 2013.
# Erwin Poeze <erwin.poeze@gmail.com>, 2009.
+# Benno Schulenberg <benno@vertaalt.nl>, 2005, 2007, 2010, 2011, 2012, 2013, 2014.
msgid ""
msgstr ""
-"Project-Id-Version: gawk 4.0.75\n"
+"Project-Id-Version: gawk 4.1.0b\n"
"Report-Msgid-Bugs-To: arnold@skeeve.com\n"
-"POT-Creation-Date: 2013-05-09 16:05+0300\n"
-"PO-Revision-Date: 2013-04-25 21:49+0200\n"
+"POT-Creation-Date: 2014-04-08 19:23+0300\n"
+"PO-Revision-Date: 2014-02-04 11:18+0100\n"
"Last-Translator: Benno Schulenberg <benno@vertaalt.nl>\n"
"Language-Team: Dutch <vertaling@vrijschrift.org>\n"
"Language: nl\n"
@@ -21,92 +21,92 @@ msgstr ""
"X-Generator: Lokalize 1.0\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-#: array.c:254
+#: array.c:256
#, c-format
msgid "from %s"
msgstr "van %s"
-#: array.c:354
+#: array.c:357
msgid "attempt to use a scalar value as array"
msgstr "scalaire waarde wordt gebruikt als array"
-#: array.c:356
+#: array.c:359
#, c-format
msgid "attempt to use scalar parameter `%s' as an array"
msgstr "scalaire parameter '%s' wordt gebruikt als array"
-#: array.c:359
+#: array.c:362
#, c-format
msgid "attempt to use scalar `%s' as an array"
msgstr "scalair '%s' wordt gebruikt als array"
-#: array.c:406 array.c:573 builtin.c:85 builtin.c:1591 builtin.c:1637
-#: builtin.c:1650 builtin.c:2078 builtin.c:2092 eval.c:1121 eval.c:1125
-#: eval.c:1524
+#: array.c:409 array.c:576 builtin.c:85 builtin.c:1615 builtin.c:1661
+#: builtin.c:1674 builtin.c:2102 builtin.c:2116 eval.c:1122 eval.c:1126
+#: eval.c:1531
#, c-format
msgid "attempt to use array `%s' in a scalar context"
msgstr "array '%s' wordt gebruikt in een scalaire context"
-#: array.c:580
+#: array.c:583
#, c-format
msgid "delete: index `%s' not in array `%s'"
msgstr "delete: index '%s' niet in array '%s'"
-#: array.c:594
+#: array.c:597
#, c-format
msgid "attempt to use scalar `%s[\"%.*s\"]' as an array"
msgstr "scalair '%s[\"%.*s\"]' wordt gebruikt als array"
-#: array.c:773
+#: array.c:776
msgid "adump: first argument not an array"
msgstr "adump: eerste argument is geen array"
-#: array.c:812
+#: array.c:815
msgid "asort: second argument not an array"
msgstr "asort: tweede argument is geen array"
-#: array.c:813
+#: array.c:816
msgid "asorti: second argument not an array"
msgstr "asorti: tweede argument is geen array"
-#: array.c:820
+#: array.c:823
msgid "asort: first argument not an array"
msgstr "asort: eerste argument is geen array"
-#: array.c:821
+#: array.c:824
msgid "asorti: first argument not an array"
msgstr "asorti: eerste argument is geen array"
-#: array.c:828
+#: array.c:831
msgid "asort: cannot use a subarray of first arg for second arg"
msgstr ""
"asort: een subarray van het eerste argument kan niet als tweede argument "
"gebruikt worden"
-#: array.c:829
+#: array.c:832
msgid "asorti: cannot use a subarray of first arg for second arg"
msgstr ""
"asorti: een subarray van het eerste argument kan niet als tweede argument "
"gebruikt worden"
-#: array.c:834
+#: array.c:837
msgid "asort: cannot use a subarray of second arg for first arg"
msgstr ""
"asort: een subarray van het tweede argument kan niet als eerste argument "
"gebruikt worden"
-#: array.c:835
+#: array.c:838
msgid "asorti: cannot use a subarray of second arg for first arg"
msgstr ""
"asorti: een subarray van het tweede argument kan niet als eerste argument "
"gebruikt worden"
-#: array.c:1309
+#: array.c:1314
#, c-format
msgid "`%s' is invalid as a function name"
msgstr "'%s' is ongeldig als functienaam"
-#: array.c:1313
+#: array.c:1318
#, c-format
msgid "sort comparison function `%s' is not defined"
msgstr "sorteervergelijkingsfunctie '%s' is niet gedefinieerd"
@@ -147,11 +147,11 @@ msgstr "dubbele 'case'-waarde in 'switch'-opdracht: %s"
msgid "duplicate `default' detected in switch body"
msgstr "dubbele 'default' in 'switch'-opdracht"
-#: awkgram.y:796 awkgram.y:3699
+#: awkgram.y:796 awkgram.y:3723
msgid "`break' is not allowed outside a loop or switch"
msgstr "'break' buiten een lus of 'switch'-opdracht is niet toegestaan"
-#: awkgram.y:805 awkgram.y:3691
+#: awkgram.y:805 awkgram.y:3715
msgid "`continue' is not allowed outside a loop"
msgstr "'continue' buiten een lus is niet toegestaan"
@@ -242,264 +242,265 @@ msgstr ""
msgid "invalid subscript expression"
msgstr "ongeldige index-expressie"
-#: awkgram.y:2024 awkgram.y:2044 gawkapi.c:206 gawkapi.c:224 msg.c:119
+#: awkgram.y:2048 awkgram.y:2068 gawkapi.c:206 gawkapi.c:224 msg.c:126
msgid "warning: "
msgstr "waarschuwing: "
-#: awkgram.y:2042 gawkapi.c:192 gawkapi.c:221 msg.c:151
+#: awkgram.y:2066 gawkapi.c:192 gawkapi.c:221 msg.c:158
msgid "fatal: "
msgstr "fataal: "
-#: awkgram.y:2092
+#: awkgram.y:2116
msgid "unexpected newline or end of string"
msgstr "onverwacht regeleinde of einde van string"
-#: awkgram.y:2359 awkgram.y:2435 awkgram.y:2658 debug.c:517 debug.c:533
-#: debug.c:2792 debug.c:5040
+#: awkgram.y:2383 awkgram.y:2459 awkgram.y:2682 debug.c:523 debug.c:539
+#: debug.c:2812 debug.c:5055
#, c-format
msgid "can't open source file `%s' for reading (%s)"
msgstr "kan bronbestand '%s' niet openen om te lezen (%s)"
-#: awkgram.y:2360 awkgram.y:2485
+#: awkgram.y:2384 awkgram.y:2509
#, c-format
msgid "can't open shared library `%s' for reading (%s)"
msgstr "kan gedeelde bibliotheek '%s' niet openen om te lezen (%s)"
-#: awkgram.y:2362 awkgram.y:2436 awkgram.y:2486 builtin.c:130 debug.c:5191
+#: awkgram.y:2386 awkgram.y:2460 awkgram.y:2510 builtin.c:135 debug.c:5206
msgid "reason unknown"
msgstr "reden onbekend"
-#: awkgram.y:2371 awkgram.y:2395
+#: awkgram.y:2395 awkgram.y:2419
#, c-format
msgid "can't include `%s' and use it as a program file"
msgstr "kan '%s' niet invoegen en als programmabestand gebruiken"
-#: awkgram.y:2384
+#: awkgram.y:2408
#, c-format
msgid "already included source file `%s'"
msgstr "bronbestand '%s' is reeds ingesloten"
-#: awkgram.y:2385
+#: awkgram.y:2409
#, c-format
msgid "already loaded shared library `%s'"
msgstr "gedeelde bibliotheek '%s' is reeds geladen"
-#: awkgram.y:2420
+#: awkgram.y:2444
msgid "@include is a gawk extension"
msgstr "'@include' is een gawk-uitbreiding"
-#: awkgram.y:2426
+#: awkgram.y:2450
msgid "empty filename after @include"
msgstr "lege bestandsnaam na '@include'"
-#: awkgram.y:2470
+#: awkgram.y:2494
msgid "@load is a gawk extension"
msgstr "'@load' is een gawk-uitbreiding"
-#: awkgram.y:2476
+#: awkgram.y:2500
msgid "empty filename after @load"
msgstr "lege bestandsnaam na '@load'"
-#: awkgram.y:2610
+#: awkgram.y:2634
msgid "empty program text on command line"
-msgstr "lege programmatekst op commandoregel"
+msgstr "lege programmatekst op opdrachtregel"
-#: awkgram.y:2725
+#: awkgram.y:2749
#, c-format
msgid "can't read sourcefile `%s' (%s)"
msgstr "kan bronbestand '%s' niet lezen (%s)"
-#: awkgram.y:2736
+#: awkgram.y:2760
#, c-format
msgid "source file `%s' is empty"
msgstr "bronbestand '%s' is leeg"
-#: awkgram.y:2913
+#: awkgram.y:2937
msgid "source file does not end in newline"
msgstr "bronbestand eindigt niet met een regeleindeteken (LF)"
-#: awkgram.y:3018
+#: awkgram.y:3042
msgid "unterminated regexp ends with `\\' at end of file"
msgstr "onafgesloten reguliere expressie eindigt met '\\' aan bestandseinde"
-#: awkgram.y:3042
+#: awkgram.y:3066
#, c-format
msgid "%s: %d: tawk regex modifier `/.../%c' doesn't work in gawk"
msgstr "%s: %d: regexp-optie '/.../%c' van 'tawk' werkt niet in gawk"
-#: awkgram.y:3046
+#: awkgram.y:3070
#, c-format
msgid "tawk regex modifier `/.../%c' doesn't work in gawk"
msgstr "regexp-optie '/.../%c' van 'tawk' werkt niet in gawk"
-#: awkgram.y:3053
+#: awkgram.y:3077
msgid "unterminated regexp"
msgstr "onafgesloten reguliere expressie"
-#: awkgram.y:3057
+#: awkgram.y:3081
msgid "unterminated regexp at end of file"
msgstr "onafgesloten reguliere expressie aan bestandseinde"
-#: awkgram.y:3116
+#: awkgram.y:3140
msgid "use of `\\ #...' line continuation is not portable"
msgstr "gebruik van regelvoortzetting '\\ #...' is niet overdraagbaar"
-#: awkgram.y:3132
+#: awkgram.y:3156
msgid "backslash not last character on line"
msgstr "backslash is niet het laatste teken op de regel"
-#: awkgram.y:3193
+#: awkgram.y:3217
msgid "POSIX does not allow operator `**='"
msgstr "POSIX staat operator '**=' niet toe"
-#: awkgram.y:3195
+#: awkgram.y:3219
msgid "old awk does not support operator `**='"
msgstr "oude 'awk' kent de operator '**=' niet"
-#: awkgram.y:3204
+#: awkgram.y:3228
msgid "POSIX does not allow operator `**'"
msgstr "POSIX staat operator '**' niet toe"
-#: awkgram.y:3206
+#: awkgram.y:3230
msgid "old awk does not support operator `**'"
msgstr "oude 'awk' kent de operator '**' niet"
-#: awkgram.y:3241
+#: awkgram.y:3265
msgid "operator `^=' is not supported in old awk"
msgstr "oude 'awk' kent de operator '^=' niet"
-#: awkgram.y:3249
+#: awkgram.y:3273
msgid "operator `^' is not supported in old awk"
msgstr "oude 'awk' kent de operator '^' niet"
-#: awkgram.y:3342 awkgram.y:3358 command.y:1178
+#: awkgram.y:3366 awkgram.y:3382 command.y:1178
msgid "unterminated string"
msgstr "onafgesloten string"
-#: awkgram.y:3579
+#: awkgram.y:3603
#, c-format
msgid "invalid char '%c' in expression"
msgstr "ongeldig teken '%c' in expressie"
-#: awkgram.y:3626
+#: awkgram.y:3650
#, c-format
msgid "`%s' is a gawk extension"
msgstr "'%s' is een gawk-uitbreiding"
-#: awkgram.y:3631
+#: awkgram.y:3655
#, c-format
msgid "POSIX does not allow `%s'"
msgstr "POSIX staat '%s' niet toe"
-#: awkgram.y:3639
+#: awkgram.y:3663
#, c-format
msgid "`%s' is not supported in old awk"
msgstr "oude 'awk' kent '%s' niet"
-#: awkgram.y:3729
+#: awkgram.y:3753
msgid "`goto' considered harmful!\n"
msgstr "'goto' wordt als schadelijk beschouwd!\n"
-#: awkgram.y:3763
+#: awkgram.y:3787
#, c-format
msgid "%d is invalid as number of arguments for %s"
msgstr "%d is een ongeldig aantal argumenten voor %s"
-#: awkgram.y:3798
+#: awkgram.y:3822
#, c-format
msgid "%s: string literal as last arg of substitute has no effect"
msgstr "%s: een stringwaarde als laatste vervangingsargument heeft geen effect"
-#: awkgram.y:3803
+#: awkgram.y:3827
#, c-format
msgid "%s third parameter is not a changeable object"
msgstr "%s: derde parameter is geen veranderbaar object"
-#: awkgram.y:3886 awkgram.y:3889
+#: awkgram.y:3910 awkgram.y:3913
msgid "match: third argument is a gawk extension"
msgstr "match: derde argument is een gawk-uitbreiding"
-#: awkgram.y:3943 awkgram.y:3946
+#: awkgram.y:3967 awkgram.y:3970
msgid "close: second argument is a gawk extension"
msgstr "close: tweede argument is een gawk-uitbreiding"
-#: awkgram.y:3958
+#: awkgram.y:3982
msgid "use of dcgettext(_\"...\") is incorrect: remove leading underscore"
msgstr "dcgettext(_\"...\") is onjuist: verwijder het liggende streepje"
-#: awkgram.y:3973
+#: awkgram.y:3997
msgid "use of dcngettext(_\"...\") is incorrect: remove leading underscore"
msgstr "dcngettext(_\"...\") is onjuist: verwijder het liggende streepje"
-#: awkgram.y:3992
-#, fuzzy
+#: awkgram.y:4016
msgid "index: regexp constant as second argument is not allowed"
-msgstr "index: tweede argument is geen string"
+msgstr ""
+"index: een reguliere-expressie-constante als tweede argument is niet "
+"toegestaan"
-#: awkgram.y:4045
+#: awkgram.y:4069
#, c-format
msgid "function `%s': parameter `%s' shadows global variable"
msgstr "functie '%s': parameter '%s' schaduwt een globale variabele"
-#: awkgram.y:4102 debug.c:4021 debug.c:4064 debug.c:5189
+#: awkgram.y:4126 debug.c:4041 debug.c:4084 debug.c:5204
#, c-format
msgid "could not open `%s' for writing (%s)"
msgstr "kan '%s' niet openen om te schrijven (%s)"
-#: awkgram.y:4103
+#: awkgram.y:4127
msgid "sending variable list to standard error"
msgstr "variabelenlijst gaat naar standaardfoutuitvoer"
-#: awkgram.y:4111
+#: awkgram.y:4135
#, c-format
msgid "%s: close failed (%s)"
msgstr "%s: sluiten is mislukt (%s)"
-#: awkgram.y:4136
+#: awkgram.y:4160
msgid "shadow_funcs() called twice!"
msgstr "shadow_funcs() twee keer aangeroepen!"
-#: awkgram.y:4144
+#: awkgram.y:4168
msgid "there were shadowed variables."
msgstr "er waren geschaduwde variabelen."
-#: awkgram.y:4215
+#: awkgram.y:4239
#, c-format
msgid "function name `%s' previously defined"
msgstr "functienaam '%s' is al eerder gedefinieerd"
-#: awkgram.y:4261
+#: awkgram.y:4285
#, c-format
msgid "function `%s': can't use function name as parameter name"
msgstr "functie '%s': kan functienaam niet als parameternaam gebruiken"
-#: awkgram.y:4264
+#: awkgram.y:4288
#, c-format
msgid "function `%s': can't use special variable `%s' as a function parameter"
msgstr ""
"functie '%s': kan speciale variabele '%s' niet als functieparameter gebruiken"
-#: awkgram.y:4272
+#: awkgram.y:4296
#, c-format
msgid "function `%s': parameter #%d, `%s', duplicates parameter #%d"
msgstr "functie '%s': parameter #%d, '%s', dupliceert parameter #%d"
-#: awkgram.y:4366 awkgram.y:4372
+#: awkgram.y:4383 awkgram.y:4389
#, c-format
msgid "function `%s' called but never defined"
msgstr "functie '%s' wordt aangeroepen maar is nergens gedefinieerd"
-#: awkgram.y:4376
+#: awkgram.y:4393
#, c-format
msgid "function `%s' defined but never called directly"
msgstr "functie '%s' is gedefinieerd maar wordt nergens direct aangeroepen"
-#: awkgram.y:4408
+#: awkgram.y:4425
#, c-format
msgid "regexp constant for parameter #%d yields boolean value"
msgstr "regexp-constante als parameter #%d levert booleanwaarde op"
-#: awkgram.y:4467
+#: awkgram.y:4484
#, c-format
msgid ""
"function `%s' called with space between name and `(',\n"
@@ -508,234 +509,246 @@ msgstr ""
"functie '%s' wordt aangeroepen met een spatie tussen naam en '(',\n"
"of wordt gebruikt als variabele of array"
-#: awkgram.y:4703
+#: awkgram.y:4720
msgid "division by zero attempted"
msgstr "deling door nul"
-#: awkgram.y:4712
+#: awkgram.y:4729
#, c-format
msgid "division by zero attempted in `%%'"
msgstr "deling door nul in '%%'"
-#: builtin.c:128
+#: awkgram.y:5049
+msgid ""
+"cannot assign a value to the result of a field post-increment expression"
+msgstr ""
+"kan geen waarde toewijzen aan het resultaat van een post-increment-expressie "
+"van een veld"
+
+#: awkgram.y:5052
+#, c-format
+msgid "invalid target of assignment (opcode %s)"
+msgstr "ongeldig doel van toewijzing (opcode %s)"
+
+#: builtin.c:133
#, c-format
msgid "%s to \"%s\" failed (%s)"
msgstr "%s naar \"%s\" is mislukt (%s)"
-#: builtin.c:129
+#: builtin.c:134
msgid "standard output"
msgstr "standaarduitvoer"
-#: builtin.c:143
+#: builtin.c:148
msgid "exp: received non-numeric argument"
msgstr "exp: argument is geen getal"
-#: builtin.c:149
+#: builtin.c:154
#, c-format
msgid "exp: argument %g is out of range"
msgstr "exp: argument %g ligt buiten toegestane bereik"
-#: builtin.c:224
+#: builtin.c:229
#, c-format
msgid "fflush: cannot flush: pipe `%s' opened for reading, not writing"
msgstr ""
"fflush: kan pijp niet leegmaken: '%s' is geopend om te lezen, niet om te "
"schrijven"
-#: builtin.c:227
+#: builtin.c:232
#, c-format
msgid "fflush: cannot flush: file `%s' opened for reading, not writing"
msgstr ""
"fflush: kan bestand niet leegmaken: '%s' is geopend om te lezen, niet om te "
"schrijven"
-#: builtin.c:239
+#: builtin.c:244
#, 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:357
+#: builtin.c:362
msgid "index: received non-string first argument"
msgstr "index: eerste argument is geen string"
-#: builtin.c:359
+#: builtin.c:364
msgid "index: received non-string second argument"
msgstr "index: tweede argument is geen string"
-#: builtin.c:483 mpfr.c:757
+#: builtin.c:488 mpfr.c:757
msgid "int: received non-numeric argument"
msgstr "int: argument is geen getal"
-#: builtin.c:520
+#: builtin.c:525
msgid "length: received array argument"
msgstr "length: argument is een array"
-#: builtin.c:523
+#: builtin.c:528
msgid "`length(array)' is a gawk extension"
msgstr "'length(array)' is een gawk-uitbreiding"
-#: builtin.c:539
+#: builtin.c:544
msgid "length: received non-string argument"
msgstr "length: argument is geen string"
-#: builtin.c:570
+#: builtin.c:575
msgid "log: received non-numeric argument"
msgstr "log: argument is geen getal"
-#: builtin.c:573
+#: builtin.c:578
#, c-format
msgid "log: received negative argument %g"
msgstr "log: argument %g is negatief"
-#: builtin.c:771 builtin.c:776
+#: builtin.c:776 builtin.c:781
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:846
+#: builtin.c:851
#, c-format
msgid "field width is ignored for `%%' specifier"
msgstr "veldbreedte wordt genegeerd voor opmaakaanduiding '%%'"
-#: builtin.c:848
+#: builtin.c:853
#, c-format
msgid "precision is ignored for `%%' specifier"
msgstr "veldprecisie wordt genegeerd voor opmaakaanduiding '%%'"
-#: builtin.c:850
+#: builtin.c:855
#, c-format
msgid "field width and precision are ignored for `%%' specifier"
msgstr "veldbreedte en -precisie worden genegeerd voor opmaakaanduiding '%%'"
-#: builtin.c:901
+#: builtin.c:906
msgid "fatal: `$' is not permitted in awk formats"
msgstr "fataal: '$' is niet toegestaan in awk-opmaak"
-#: builtin.c:910
+#: builtin.c:915
msgid "fatal: arg count with `$' must be > 0"
msgstr "fataal: het aantal argumenten met '$' moet > 0 zijn"
-#: builtin.c:914
+#: builtin.c:919
#, 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:918
+#: builtin.c:923
msgid "fatal: `$' not permitted after period in format"
msgstr "fataal: '$' is niet toegestaan na een punt in de opmaak"
-#: builtin.c:934
+#: builtin.c:939
msgid "fatal: no `$' supplied for positional field width or precision"
msgstr "fataal: geen '$' opgegeven bij positionele veldbreedte of -precisie"
-#: builtin.c:1006
+#: builtin.c:1009
msgid "`l' is meaningless in awk formats; ignored"
msgstr "'l' is betekenisloos in awk-opmaak; genegeerd"
-#: builtin.c:1010
+#: builtin.c:1013
msgid "fatal: `l' is not permitted in POSIX awk formats"
msgstr "fataal: 'l' is niet toegestaan in POSIX awk-opmaak"
-#: builtin.c:1023
+#: builtin.c:1026
msgid "`L' is meaningless in awk formats; ignored"
msgstr "'L' is betekenisloos in awk-opmaak; genegeerd"
-#: builtin.c:1027
+#: builtin.c:1030
msgid "fatal: `L' is not permitted in POSIX awk formats"
msgstr "fataal: 'L' is niet toegestaan in POSIX awk-opmaak"
-#: builtin.c:1040
+#: builtin.c:1043
msgid "`h' is meaningless in awk formats; ignored"
msgstr "'h' is betekenisloos in awk-opmaak; genegeerd"
-#: builtin.c:1044
+#: builtin.c:1047
msgid "fatal: `h' is not permitted in POSIX awk formats"
msgstr "fataal: 'h' is niet toegestaan in POSIX awk-opmaak"
-#: builtin.c:1439
+#: builtin.c:1463
#, c-format
msgid "[s]printf: value %g is out of range for `%%%c' format"
msgstr "[s]printf: waarde %g ligt buiten toegestaan bereik voor opmaak '%%%c'"
-#: builtin.c:1537
+#: builtin.c:1561
#, c-format
msgid "ignoring unknown format specifier character `%c': no argument converted"
msgstr ""
"onbekend opmaakteken '%c' wordt genegeerd: geen argument is geconverteerd"
-#: builtin.c:1542
+#: builtin.c:1566
msgid "fatal: not enough arguments to satisfy format string"
msgstr "fataal: niet genoeg argumenten voor opmaakstring"
-#: builtin.c:1544
+#: builtin.c:1568
msgid "^ ran out for this one"
msgstr "niet genoeg ^ voor deze"
-#: builtin.c:1551
+#: builtin.c:1575
msgid "[s]printf: format specifier does not have control letter"
msgstr "[s]printf: opmaakaanduiding mist een stuurletter"
-#: builtin.c:1554
+#: builtin.c:1578
msgid "too many arguments supplied for format string"
msgstr "te veel argumenten voor opmaakstring"
-#: builtin.c:1610
+#: builtin.c:1634
msgid "sprintf: no arguments"
msgstr "sprintf: geen argumenten"
-#: builtin.c:1633 builtin.c:1644
+#: builtin.c:1657 builtin.c:1668
msgid "printf: no arguments"
msgstr "printf: geen argumenten"
-#: builtin.c:1687
+#: builtin.c:1711
msgid "sqrt: received non-numeric argument"
msgstr "sqrt: argument is geen getal"
-#: builtin.c:1691
+#: builtin.c:1715
#, c-format
msgid "sqrt: called with negative argument %g"
msgstr "sqrt: argument %g is negatief"
-#: builtin.c:1722
+#: builtin.c:1746
#, c-format
msgid "substr: length %g is not >= 1"
msgstr "substr: lengte %g is niet >= 1"
-#: builtin.c:1724
+#: builtin.c:1748
#, c-format
msgid "substr: length %g is not >= 0"
msgstr "substr: lengte %g is niet >= 0"
-#: builtin.c:1731
+#: builtin.c:1755
#, c-format
msgid "substr: non-integer length %g will be truncated"
msgstr "substr: lengte %g is geen integer; wordt afgekapt"
-#: builtin.c:1736
+#: builtin.c:1760
#, c-format
msgid "substr: length %g too big for string indexing, truncating to %g"
msgstr ""
"substr: lengte %g is te groot voor stringindexering; wordt verkort tot %g"
-#: builtin.c:1748
+#: builtin.c:1772
#, c-format
msgid "substr: start index %g is invalid, using 1"
msgstr "substr: startindex %g is ongeldig; 1 wordt gebruikt"
-#: builtin.c:1753
+#: builtin.c:1777
#, c-format
msgid "substr: non-integer start index %g will be truncated"
msgstr "substr: startindex %g is geen integer; wordt afgekapt"
-#: builtin.c:1778
+#: builtin.c:1802
msgid "substr: source string is zero length"
msgstr "substr: bronstring heeft lengte nul"
-#: builtin.c:1794
+#: builtin.c:1818
#, c-format
msgid "substr: start index %g is past end of string"
msgstr "substr: startindex %g ligt voorbij het einde van de string"
-#: builtin.c:1802
+#: builtin.c:1826
#, c-format
msgid ""
"substr: length %g at start index %g exceeds length of first argument (%lu)"
@@ -743,186 +756,186 @@ msgstr ""
"substr: lengte %g bij startindex %g is groter dan de lengte van het eerste "
"argument (%lu)"
-#: builtin.c:1876
+#: builtin.c:1900
msgid "strftime: format value in PROCINFO[\"strftime\"] has numeric type"
msgstr "strftime: opmaakwaarde in PROCINFO[\"strftime\"] is numeriek"
-#: builtin.c:1899
+#: builtin.c:1923
msgid "strftime: received non-numeric second argument"
msgstr "strftime: tweede argument is geen getal"
-#: builtin.c:1903
+#: builtin.c:1927
msgid "strftime: second argument less than 0 or too big for time_t"
msgstr "strftime: tweede argument is kleiner dan nul of te groot voor 'time_t'"
-#: builtin.c:1910
+#: builtin.c:1934
msgid "strftime: received non-string first argument"
msgstr "strftime: eerste argument is geen string"
-#: builtin.c:1917
+#: builtin.c:1941
msgid "strftime: received empty format string"
msgstr "strftime: opmaakstring is leeg"
-#: builtin.c:1983
+#: builtin.c:2007
msgid "mktime: received non-string argument"
msgstr "mktime: argument is geen string"
-#: builtin.c:2000
+#: builtin.c:2024
msgid "mktime: at least one of the values is out of the default range"
msgstr "mktime: minstens één van waarden valt buiten het standaardbereik"
-#: builtin.c:2035
+#: builtin.c:2059
msgid "'system' function not allowed in sandbox mode"
msgstr "'system'-functie is niet toegestaan in sandbox-modus"
-#: builtin.c:2040
+#: builtin.c:2064
msgid "system: received non-string argument"
msgstr "system: argument is geen string"
-#: builtin.c:2160
+#: builtin.c:2184
#, c-format
msgid "reference to uninitialized field `$%d'"
msgstr "verwijzing naar ongeïnitialiseerd veld '$%d'"
-#: builtin.c:2247
+#: builtin.c:2271
msgid "tolower: received non-string argument"
msgstr "tolower: argument is geen string"
-#: builtin.c:2281
+#: builtin.c:2305
msgid "toupper: received non-string argument"
msgstr "toupper: argument is geen string"
-#: builtin.c:2317 mpfr.c:672
+#: builtin.c:2341 mpfr.c:672
msgid "atan2: received non-numeric first argument"
msgstr "atan2: eerste argument is geen getal"
-#: builtin.c:2319 mpfr.c:674
+#: builtin.c:2343 mpfr.c:674
msgid "atan2: received non-numeric second argument"
msgstr "atan2: tweede argument is geen getal"
-#: builtin.c:2338
+#: builtin.c:2362
msgid "sin: received non-numeric argument"
msgstr "sin: argument is geen getal"
-#: builtin.c:2354
+#: builtin.c:2378
msgid "cos: received non-numeric argument"
msgstr "cos: argument is geen getal"
-#: builtin.c:2407 mpfr.c:1156
+#: builtin.c:2431 mpfr.c:1156
msgid "srand: received non-numeric argument"
msgstr "srand: argument is geen getal"
-#: builtin.c:2438
+#: builtin.c:2462
msgid "match: third argument is not an array"
msgstr "match: derde argument is geen array"
-#: builtin.c:2710
+#: builtin.c:2734
msgid "gensub: third argument of 0 treated as 1"
msgstr "gensub: derde argument is 0; wordt beschouwd als 1"
-#: builtin.c:3003
+#: builtin.c:3030
msgid "lshift: received non-numeric first argument"
msgstr "lshift: eerste argument is geen getal"
-#: builtin.c:3005
+#: builtin.c:3032
msgid "lshift: received non-numeric second argument"
msgstr "lshift: tweede argument is geen getal"
-#: builtin.c:3011
+#: builtin.c:3038
#, c-format
msgid "lshift(%f, %f): negative values will give strange results"
msgstr "lshift(%f, %f): negatieve waarden geven rare resultaten"
-#: builtin.c:3013
+#: builtin.c:3040
#, c-format
msgid "lshift(%f, %f): fractional values will be truncated"
msgstr "lshift(%f, %f): cijfers na de komma worden afgekapt"
-#: builtin.c:3015
+#: builtin.c:3042
#, c-format
msgid "lshift(%f, %f): too large shift value will give strange results"
msgstr "lshift(%f, %f): te grote opschuifwaarden geven rare resultaten"
-#: builtin.c:3040
+#: builtin.c:3067
msgid "rshift: received non-numeric first argument"
msgstr "rshift: eerste argument is geen getal"
-#: builtin.c:3042
+#: builtin.c:3069
msgid "rshift: received non-numeric second argument"
msgstr "rshift: tweede argument is geen getal"
-#: builtin.c:3048
+#: builtin.c:3075
#, c-format
msgid "rshift(%f, %f): negative values will give strange results"
msgstr "rshift(%f, %f): negatieve waarden geven rare resultaten"
-#: builtin.c:3050
+#: builtin.c:3077
#, c-format
msgid "rshift(%f, %f): fractional values will be truncated"
msgstr "rshift(%f, %f): cijfers na de komma worden afgekapt"
-#: builtin.c:3052
+#: builtin.c:3079
#, c-format
msgid "rshift(%f, %f): too large shift value will give strange results"
msgstr "rshift(%f, %f): te grote opschuifwaarden geven rare resultaten"
-#: builtin.c:3077 mpfr.c:968
+#: builtin.c:3104 mpfr.c:968
msgid "and: called with less than two arguments"
msgstr "and: aangeroepen met minder dan twee argumenten"
-#: builtin.c:3082
+#: builtin.c:3109
#, c-format
msgid "and: argument %d is non-numeric"
msgstr "and: argument %d is niet-numeriek"
-#: builtin.c:3086
+#: builtin.c:3113
#, c-format
msgid "and: argument %d negative value %g will give strange results"
msgstr "and: negatieve waarde %2$g van argument %1$d geeft rare resultaten"
-#: builtin.c:3109 mpfr.c:1000
+#: builtin.c:3136 mpfr.c:1000
msgid "or: called with less than two arguments"
msgstr "or: aangeroepen met minder dan twee argumenten"
-#: builtin.c:3114
+#: builtin.c:3141
#, c-format
msgid "or: argument %d is non-numeric"
msgstr "or: argument %d is niet-numeriek"
-#: builtin.c:3118
+#: builtin.c:3145
#, c-format
msgid "or: argument %d negative value %g will give strange results"
msgstr "or: negatieve waarde %2$g van argument %1$d geeft rare resultaten"
-#: builtin.c:3140 mpfr.c:1031
+#: builtin.c:3167 mpfr.c:1031
msgid "xor: called with less than two arguments"
msgstr "xor: aangeroepen met minder dan twee argumenten"
-#: builtin.c:3146
+#: builtin.c:3173
#, c-format
msgid "xor: argument %d is non-numeric"
msgstr "xor: argument %d is niet-numeriek"
-#: builtin.c:3150
+#: builtin.c:3177
#, c-format
msgid "xor: argument %d negative value %g will give strange results"
msgstr "xor: negatieve waarde %2$g van argument %1$d geeft rare resultaten"
-#: builtin.c:3175 mpfr.c:787
+#: builtin.c:3202 mpfr.c:787
msgid "compl: received non-numeric argument"
msgstr "compl: argument is geen getal"
-#: builtin.c:3181
+#: builtin.c:3208
#, c-format
msgid "compl(%f): negative value will give strange results"
msgstr "compl(%f): negatieve waarden geven rare resultaten"
-#: builtin.c:3183
+#: builtin.c:3210
#, c-format
msgid "compl(%f): fractional value will be truncated"
msgstr "compl(%f): cijfers na de komma worden afgekapt"
-#: builtin.c:3352
+#: builtin.c:3379
#, c-format
msgid "dcgettext: `%s' is not a valid locale category"
msgstr "dcgettext: '%s' is geen geldige taalregio-deelcategorie"
@@ -955,24 +968,25 @@ msgstr "save \"%s\": commando niet toegestaan."
#: command.y:339
msgid "Can't use command `commands' for breakpoint/watchpoint commands"
msgstr ""
+"Kan commando 'commands' niet voor breekpunt-/kijkpunt-commando's gebruiken"
#: command.y:341
msgid "no breakpoint/watchpoint has been set yet"
-msgstr ""
+msgstr "er is nog geen breekpunt/kijkpunt gezet"
#: command.y:343
msgid "invalid breakpoint/watchpoint number"
-msgstr ""
+msgstr "ongeldig nummer van breekpunt/kijkpunt"
#: command.y:348
#, c-format
msgid "Type commands for when %s %d is hit, one per line.\n"
-msgstr ""
+msgstr "Typ de commando's voor wanneer %s %d getroffen wordt, één per regel.\n"
#: command.y:350
#, c-format
msgid "End with the command \"end\"\n"
-msgstr "Eindig met het commando \"end\".\n"
+msgstr "Eindig met het commando 'end'.\n"
#: command.y:357
msgid "`end' valid only in command `commands' or `eval'"
@@ -989,7 +1003,7 @@ msgstr "trace: ongeldige optie -- \"%s\""
#: command.y:387
msgid "condition: invalid breakpoint/watchpoint number"
-msgstr ""
+msgstr "condition: ongeldig nummer van breekpunt/kijkpunt"
#: command.y:449
msgid "argument not a string"
@@ -1032,101 +1046,122 @@ msgid ""
"backtrace [N] - print trace of all or N innermost (outermost if N < 0) "
"frames."
msgstr ""
-"backtrace [N] - trace printen van alle of N binnenste frames (of buitenste "
-"als N < 0)"
+"backtrace [N] - een trace weergeven van alle of N binnenste frames (of "
+"buitenste als N < 0)"
#: command.y:819
msgid ""
"break [[filename:]N|function] - set breakpoint at the specified location."
-msgstr "break [[BESTANDSNAAM:]N|FUNCTIE] - breekpunt zetten op gegeven positie"
+msgstr ""
+"break [[BESTANDSNAAM:]REGELNUMMER|FUNCTIE] - breekpunt zetten op gegeven "
+"positie"
#: command.y:821
msgid "clear [[filename:]N|function] - delete breakpoints previously set."
-msgstr "clear [[BESTANDSNAAM:]N|FUNCTIE] - eerder gezet breekpunt verwijderen"
+msgstr ""
+"clear [[BESTANDSNAAM:]REGELNUMMER|FUNCTIE] - eerder gezet breekpunt "
+"verwijderen"
#: command.y:823
msgid ""
-"commands [num] - starts a list of commands to be executed at a breakpoint"
-"(watchpoint) hit."
+"commands [num] - starts a list of commands to be executed at a "
+"breakpoint(watchpoint) hit."
msgstr ""
+"commands [NUMMER] - een lijst van commando's beginnen die uitgevoerd moeten "
+"worden wanneer een breekpunt/kijkpunt getroffen wordt"
#: command.y:825
msgid "condition num [expr] - set or clear breakpoint or watchpoint condition."
msgstr ""
+"condition NUMMER [EXPRESSIE] - de conditie van een breekpunt/kijkpunt zetten "
+"of wissen"
#: command.y:827
msgid "continue [COUNT] - continue program being debugged."
-msgstr ""
+msgstr "continue [AANTAL] - doorgaan met het programma in de debugger"
#: command.y:829
msgid "delete [breakpoints] [range] - delete specified breakpoints."
-msgstr ""
+msgstr "delete [BREEKPUNTEN] [BEREIK] - de gegeven breekpunten verwijderen"
#: command.y:831
msgid "disable [breakpoints] [range] - disable specified breakpoints."
-msgstr ""
+msgstr "disable [BREEKPUNTEN] [BEREIK] - de gegeven breekpunten uitschakelen"
#: command.y:833
msgid "display [var] - print value of variable each time the program stops."
msgstr ""
-"display [VAR] - waarde van variabele printen elke keer dat het programma "
+"display [VAR] - waarde van variabele weergeven elke keer dat het programma "
"stopt"
#: command.y:835
msgid "down [N] - move N frames down the stack."
-msgstr ""
+msgstr "down [AANTAL] - dit aantal frames naar beneden in de stack gaan"
#: command.y:837
msgid "dump [filename] - dump instructions to file or stdout."
msgstr ""
-"dump [BESTANDSNAAM] - instructies dumpen op standaarduitvoer of naar bestand"
+"dump [BESTANDSNAAM] - instructies dumpen op standaarduitvoer (of naar "
+"bestand)"
#: command.y:839
msgid "enable [once|del] [breakpoints] [range] - enable specified breakpoints."
msgstr ""
+"enable [once|del] [BREEKPUNTEN] [BEREIK] - de gegeven breekpunten inschakelen"
#: command.y:841
msgid "end - end a list of commands or awk statements."
-msgstr ""
+msgstr "end - een lijst van commando's of awk-statements beëindigen"
#: command.y:843
msgid "eval stmt|[p1, p2, ...] - evaluate awk statement(s)."
-msgstr ""
+msgstr "eval STATEMENT|[p1, p2, ...] - awk-statement(s) evalueren"
#: command.y:845
msgid "finish - execute until selected stack frame returns."
-msgstr ""
+msgstr "finish - uitvoeren totdat het geselecteerde stack-frame terugkeert"
#: command.y:847
msgid "frame [N] - select and print stack frame number N."
-msgstr ""
+msgstr "frame [NUMMER] - stack-frame met dit nummer selecteren en weergeven"
#: command.y:849
msgid "help [command] - print list of commands or explanation of command."
msgstr ""
+"help [COMMANDO] - lijst van beschikbare commando's (of uitleg van commando) "
+"tonen"
#: command.y:851
msgid "ignore N COUNT - set ignore-count of breakpoint number N to COUNT."
msgstr ""
+"ignore NUMMER AANTAL - het aantal keren dat dit breekpuntnummer genegeerd "
+"moet worden"
#: command.y:853
msgid ""
"info topic - source|sources|variables|functions|break|frame|args|locals|"
"display|watch."
msgstr ""
+"info THEMA - source|sources|variables|functions|break|frame|args|locals|"
+"display|watch"
#: command.y:855
msgid "list [-|+|[filename:]lineno|function|range] - list specified line(s)."
msgstr ""
+"list [-|+|[BESTANDSNAAM:]REGELNUMMER|FUNCTIE|BEREIK] - aangegeven regels "
+"tonen"
#: command.y:857
msgid "next [COUNT] - step program, proceeding through subroutine calls."
msgstr ""
+"next [AANTAL] - programma uitvoeren tot de volgende bronregel bereikt is"
#: command.y:859
msgid ""
"nexti [COUNT] - step one instruction, but proceed through subroutine calls."
msgstr ""
+"nexti [AANTAL] - één instructie (of dit aantal) uitvoeren, waarbij een "
+"functie-aanroep als één telt"
#: command.y:861
msgid "option [name[=value]] - set or display debugger option(s)."
@@ -1134,7 +1169,7 @@ msgstr "option [NAAM[=WAARDE]] - opties van debugger tonen of instellen"
#: command.y:863
msgid "print var [var] - print value of a variable or array."
-msgstr "print VAR [VAR] - waarde van variabele of array printen"
+msgstr "print VAR [VAR] - waarde van variabele of array weergeven"
#: command.y:865
msgid "printf format, [arg], ... - formatted output."
@@ -1146,7 +1181,7 @@ msgstr "quit - de debugger verlaten"
#: command.y:869
msgid "return [value] - make selected stack frame return to its caller."
-msgstr "return [WAARDE] - gekozen stackframe terug laten keren naar aanroeper"
+msgstr "return [WAARDE] - gekozen stack-frame terug laten keren naar aanroeper"
#: command.y:871
msgid "run - start or restart executing program."
@@ -1164,6 +1199,8 @@ msgstr "set VAR = WAARDE - een waarde aan een scalaire variabele toekennen"
msgid ""
"silent - suspends usual message when stopped at a breakpoint/watchpoint."
msgstr ""
+"silent - de gewone meldingen bij het stoppen bij een breekpunt/kijkpunt "
+"onderdrukken"
#: command.y:881
msgid "source file - execute commands from file."
@@ -1176,39 +1213,43 @@ msgstr ""
#: command.y:885
msgid "stepi [COUNT] - step one instruction exactly."
-msgstr "stepi [AANTAL] - precies één of dit aantal instructies uitvoeren"
+msgstr "stepi [AANTAL] - precies één (of dit aantal) instructies uitvoeren"
#: command.y:887
msgid "tbreak [[filename:]N|function] - set a temporary breakpoint."
msgstr ""
+"tbreak [[BESTANDSNAAM:]REGELNUMMER|FUNCTIE] - een tijdelijk breekpunt zetten"
#: command.y:889
msgid "trace on|off - print instruction before executing."
-msgstr ""
+msgstr "trace on|off - instructie weergeven alvorens deze uit te voeren"
#: command.y:891
msgid "undisplay [N] - remove variable(s) from automatic display list."
msgstr ""
+"undisplay [AANTAL] - variabele(n) van automatische weergavelijst verwijderen"
#: command.y:893
msgid ""
"until [[filename:]N|function] - execute until program reaches a different "
"line or line N within current frame."
msgstr ""
+"until [[BESTANDSNAAM:]N|FUNCTIE] - programma uitvoeren totdat deze een "
+"andere regel bereikt of regel N binnen het huidige frame"
#: command.y:895
msgid "unwatch [N] - remove variable(s) from watch list."
-msgstr ""
+msgstr "unwatch [AANTAL] - variabele(n) van de kijklijst verwijderen"
#: command.y:897
msgid "up [N] - move N frames up the stack."
-msgstr ""
+msgstr "up [AANTAL] - dit aantal frames naar boven in de stack gaan"
#: command.y:899
msgid "watch var - set a watchpoint for a variable."
-msgstr ""
+msgstr "watch VAR - een kijkpunt voor een variabele zetten"
-#: command.y:1011 debug.c:395 msg.c:128
+#: command.y:1011 debug.c:401 msg.c:135
#, c-format
msgid "error: "
msgstr "fout: "
@@ -1230,12 +1271,12 @@ msgstr "ongeldig teken in commando"
#: command.y:1152
#, c-format
msgid "unknown command - \"%.*s\", try help"
-msgstr ""
+msgstr "onbekend commando - \"%.*s\", probeer help"
#: command.y:1222
#, c-format
msgid "%s"
-msgstr ""
+msgstr "%s"
#: command.y:1284
msgid "invalid character"
@@ -1244,560 +1285,571 @@ msgstr "ongeldig teken"
#: command.y:1455
#, c-format
msgid "undefined command: %s\n"
-msgstr ""
+msgstr "ongedefinieerd commando: %s\n"
-#: debug.c:246
+#: debug.c:252
msgid "set or show the number of lines to keep in history file."
-msgstr ""
+msgstr "zetten of tonen van maximum aantal regels in geschiedenisbestand"
-#: debug.c:248
+#: debug.c:254
msgid "set or show the list command window size."
-msgstr ""
+msgstr "zetten of tonen van venstergrootte van list-commando"
-#: debug.c:250
+#: debug.c:256
msgid "set or show gawk output file."
-msgstr ""
+msgstr "zetten of tonen van gawk-uitvoerbestand"
-#: debug.c:252
+#: debug.c:258
msgid "set or show debugger prompt."
-msgstr ""
+msgstr "zetten of tonen van debugger-prompt"
-#: debug.c:254
+#: debug.c:260
msgid "(un)set or show saving of command history (value=on|off)."
-msgstr ""
+msgstr "zetten of tonen van opslaan van commandogeschiedenis (waarde=on|off)"
-#: debug.c:256
+#: debug.c:262
msgid "(un)set or show saving of options (value=on|off)."
-msgstr ""
+msgstr "zetten of tonen van opslaan van opties (waarde=on|off)"
-#: debug.c:258
+#: debug.c:264
msgid "(un)set or show instruction tracing (value=on|off)."
-msgstr ""
+msgstr "zetten of tonen van instructie-tracing (waarde=on|off)"
-#: debug.c:339
+#: debug.c:345
msgid "program not running."
-msgstr ""
+msgstr "programma draait niet."
-#: debug.c:442 debug.c:597
+#: debug.c:448 debug.c:606
#, c-format
msgid "can't read source file `%s' (%s)"
msgstr "kan bronbestand '%s' niet lezen (%s)"
-#: debug.c:447
+#: debug.c:453
#, c-format
msgid "source file `%s' is empty.\n"
msgstr "bronbestand '%s' is leeg\n"
-#: debug.c:474
+#: debug.c:480
msgid "no current source file."
msgstr "geen huidig bronbestand"
-#: debug.c:499
+#: debug.c:505
#, c-format
msgid "cannot find source file named `%s' (%s)"
msgstr "kan geen bronbestand met naam '%s' vinden (%s)"
-#: debug.c:523
+#: debug.c:529
#, c-format
msgid "WARNING: source file `%s' modified since program compilation.\n"
msgstr ""
+"Waarschuwing: bronbestand '%s' is gewijzigd sinds programmacompilatie.\n"
-#: debug.c:542
+#: debug.c:551
#, c-format
msgid "line number %d out of range; `%s' has %d lines"
-msgstr ""
+msgstr "regelnummer %d valt buiten bereik; '%s' heeft %d regels"
-#: debug.c:602
+#: debug.c:611
#, c-format
msgid "unexpected eof while reading file `%s', line %d"
msgstr "onverwacht einde-van-bestand tijdens lezen van bestand '%s', regel %d"
-#: debug.c:611
+#: debug.c:620
#, c-format
msgid "source file `%s' modified since start of program execution"
-msgstr ""
+msgstr "bronbestand '%s' is gewijzigd sinds start van programma-uitvoering"
-#: debug.c:723
+#: debug.c:732
#, c-format
msgid "Current source file: %s\n"
msgstr "Huidig bronbestand: %s\n"
-#: debug.c:724
+#: debug.c:733
#, c-format
msgid "Number of lines: %d\n"
-msgstr ""
+msgstr "Aantal regels: %d\n"
-#: debug.c:731
+#: debug.c:740
#, c-format
msgid "Source file (lines): %s (%d)\n"
-msgstr ""
+msgstr "Bronbestand (regels): %s (%d)\n"
-#: debug.c:745
+#: debug.c:754
msgid ""
"Number Disp Enabled Location\n"
"\n"
msgstr ""
+"Nummer Toon Actief Locatie\n"
+"\n"
-#: debug.c:756
+#: debug.c:765
#, c-format
msgid "\tno of hits = %ld\n"
-msgstr ""
+msgstr "\taantal treffers = %ld\n"
-#: debug.c:758
+#: debug.c:767
#, c-format
msgid "\tignore next %ld hit(s)\n"
-msgstr ""
+msgstr "\tvolgende %ld treffer(s) negeren\n"
-#: debug.c:760 debug.c:900
+#: debug.c:769 debug.c:909
#, c-format
msgid "\tstop condition: %s\n"
-msgstr ""
+msgstr "\tstopconditie: %s\n"
-#: debug.c:762 debug.c:902
+#: debug.c:771 debug.c:911
msgid "\tcommands:\n"
-msgstr ""
+msgstr "\tcommando's:\n"
-#: debug.c:784
+#: debug.c:793
#, c-format
msgid "Current frame: "
-msgstr ""
+msgstr "Huidig frame: "
-#: debug.c:787
+#: debug.c:796
#, c-format
msgid "Called by frame: "
-msgstr ""
+msgstr "Aangeroepen door frame: "
-#: debug.c:791
+#: debug.c:800
#, c-format
msgid "Caller of frame: "
-msgstr ""
+msgstr "Aanroeper van frame: "
-#: debug.c:809
+#: debug.c:818
#, c-format
msgid "None in main().\n"
-msgstr ""
+msgstr "Geen in main().\n"
-#: debug.c:839
+#: debug.c:848
msgid "No arguments.\n"
msgstr "Geen argumenten.\n"
-#: debug.c:840
+#: debug.c:849
msgid "No locals.\n"
-msgstr ""
+msgstr "Geen lokalen.\n"
-#: debug.c:848
+#: debug.c:857
msgid ""
"All defined variables:\n"
"\n"
msgstr ""
+"Alle gedefinieerde variabelen:\n"
+"\n"
-#: debug.c:858
+#: debug.c:867
msgid ""
"All defined functions:\n"
"\n"
msgstr ""
+"Alle gedefinieerde functies:\n"
+"\n"
-#: debug.c:877
+#: debug.c:886
msgid ""
"Auto-display variables:\n"
"\n"
msgstr ""
+"Automatisch weer te geven variabelen:\n"
+"\n"
-#: debug.c:880
+#: debug.c:889
msgid ""
"Watch variables:\n"
"\n"
msgstr ""
+"Kijkvariabelen:\n"
+"\n"
-#: debug.c:1020
+#: debug.c:1029
#, c-format
msgid "no symbol `%s' in current context\n"
msgstr "geen symbool '%s' in huidige context\n"
-#: debug.c:1032 debug.c:1418
+#: debug.c:1041 debug.c:1427
#, c-format
msgid "`%s' is not an array\n"
msgstr "'%s' is geen array\n"
-#: debug.c:1046
+#: debug.c:1055
#, c-format
msgid "$%ld = uninitialized field\n"
msgstr "$%ld = ongeïnitialiseerd veld\n"
-#: debug.c:1067
+#: debug.c:1076
#, c-format
msgid "array `%s' is empty\n"
msgstr "array '%s' is leeg\n"
-#: debug.c:1110 debug.c:1162
+#: debug.c:1119 debug.c:1171
#, c-format
msgid "[\"%s\"] not in array `%s'\n"
msgstr "[\"%s\"] niet in array '%s'\n"
-#: debug.c:1166
+#: debug.c:1175
#, c-format
msgid "`%s[\"%s\"]' is not an array\n"
-msgstr ""
+msgstr "'%s[\"%s\"]' is geen array\n"
-#: debug.c:1227 debug.c:4949
+#: debug.c:1236 debug.c:4964
#, c-format
msgid "`%s' is not a scalar variable"
msgstr "'%s' is geen scalaire variabele"
-#: debug.c:1249 debug.c:4979
+#: debug.c:1258 debug.c:4994
#, c-format
msgid "attempt to use array `%s[\"%s\"]' in a scalar context"
msgstr "array '%s[\"%s\"]' wordt gebruikt in een scalaire context"
-#: debug.c:1271 debug.c:4990
+#: debug.c:1280 debug.c:5005
#, c-format
msgid "attempt to use scalar `%s[\"%s\"]' as array"
msgstr "scalair '%s[\"%s\"]' wordt gebruikt als array"
-#: debug.c:1414
+#: debug.c:1423
#, c-format
msgid "`%s' is a function"
msgstr "'%s' is een functie"
-#: debug.c:1456
+#: debug.c:1465
#, c-format
msgid "watchpoint %d is unconditional\n"
-msgstr ""
+msgstr "kijkpunt %d is zonder conditie\n"
-#: debug.c:1490
+#: debug.c:1499
#, c-format
msgid "No display item numbered %ld"
-msgstr ""
+msgstr "Er is geen weergave-item met nummer %ld"
-#: debug.c:1493
+#: debug.c:1502
#, c-format
msgid "No watch item numbered %ld"
-msgstr ""
+msgstr "Er is geen kijk-item met nummer %ld"
-#: debug.c:1519
+#: debug.c:1528
#, c-format
msgid "%d: [\"%s\"] not in array `%s'\n"
msgstr "%d: [\"%s\"] niet in array '%s'\n"
-#: debug.c:1758
+#: debug.c:1767
msgid "attempt to use scalar value as array"
msgstr "scalaire waarde wordt gebruikt als array"
-#: debug.c:1847
+#: debug.c:1856
#, c-format
msgid "Watchpoint %d deleted because parameter is out of scope.\n"
-msgstr ""
+msgstr "Kijkpunt %d is verwijderd omdat parameter buiten bereik is.\n"
-#: debug.c:1858
+#: debug.c:1867
#, c-format
msgid "Display %d deleted because parameter is out of scope.\n"
-msgstr ""
+msgstr "Weergave %d is verwijderd omdat parameter buiten bereik is.\n"
-#: debug.c:1891
+#: debug.c:1900
#, c-format
msgid " in file `%s', line %d\n"
msgstr " in bestand '%s', regel %d\n"
-#: debug.c:1912
+#: debug.c:1921
#, c-format
msgid " at `%s':%d"
msgstr " op '%s':%d"
-#: debug.c:1928 debug.c:1991
+#: debug.c:1937 debug.c:2000
#, c-format
msgid "#%ld\tin "
-msgstr ""
+msgstr "#%ld\tin "
-#: debug.c:1965
+#: debug.c:1974
#, c-format
msgid "More stack frames follow ...\n"
-msgstr ""
+msgstr "Er volgen meer stack-frames...\n"
-#: debug.c:2008
+#: debug.c:2017
msgid "invalid frame number"
msgstr "ongeldig framenummer"
-#: debug.c:2180
+#: debug.c:2200
#, c-format
msgid "Note: breakpoint %d (enabled, ignore next %ld hits), also set at %s:%d"
msgstr ""
"Opmerking: breekpunt %d (ingeschakeld, volgende %ld passages genegeerd), ook "
"gezet op %s:%d"
-#: debug.c:2187
+#: debug.c:2207
#, c-format
msgid "Note: breakpoint %d (enabled), also set at %s:%d"
msgstr "Opmerking: breekpunt %d (ingeschakeld), ook gezet op %s:%d"
-#: debug.c:2194
+#: debug.c:2214
#, c-format
msgid "Note: breakpoint %d (disabled, ignore next %ld hits), also set at %s:%d"
msgstr ""
"Opmerking: breekpunt %d (uitgeschakeld, volgende %ld passages genegeerd), "
"ook gezet op %s:%d"
-#: debug.c:2201
+#: debug.c:2221
#, c-format
msgid "Note: breakpoint %d (disabled), also set at %s:%d"
msgstr "Opmerking: breekpunt %d (uitgeschakeld), ook gezet op %s:%d"
-#: debug.c:2218
+#: debug.c:2238
#, c-format
msgid "Breakpoint %d set at file `%s', line %d\n"
msgstr "Breekpunt %d is gezet in bestand '%s', op regel %d\n"
-#: debug.c:2320
+#: debug.c:2340
#, c-format
msgid "Can't set breakpoint in file `%s'\n"
msgstr "Kan geen breekpunt zetten in bestand '%s'\n"
-#: debug.c:2349 debug.c:2472 debug.c:3330
+#: debug.c:2369 debug.c:2492 debug.c:3350
#, c-format
msgid "line number %d in file `%s' out of range"
msgstr "regelnummer %d in bestand '%s' valt buiten bereik"
-#: debug.c:2353
+#: debug.c:2373
#, c-format
msgid "Can't find rule!!!\n"
msgstr "Kan regel niet vinden!!!\n"
-#: debug.c:2355
+#: debug.c:2375
#, c-format
msgid "Can't set breakpoint at `%s':%d\n"
msgstr "Kan geen breekpunt zetten op '%s':%d\n"
-#: debug.c:2367
+#: debug.c:2387
#, c-format
msgid "Can't set breakpoint in function `%s'\n"
msgstr "Kan geen breekpunt zetten in functie '%s'\n"
-#: debug.c:2383
+#: debug.c:2403
#, c-format
msgid "breakpoint %d set at file `%s', line %d is unconditional\n"
msgstr "breekpunt %d (gezet in bestand '%s', op regel %d) is onconditioneel\n"
-#: debug.c:2488 debug.c:2510
+#: debug.c:2508 debug.c:2530
#, c-format
msgid "Deleted breakpoint %d"
msgstr "Breekpunt %d is verwijderd"
-#: debug.c:2494
+#: debug.c:2514
#, c-format
msgid "No breakpoint(s) at entry to function `%s'\n"
msgstr "Geen breekpunt(en) bij binnengaan van functie '%s'\n"
-#: debug.c:2521
+#: debug.c:2541
#, c-format
msgid "No breakpoint at file `%s', line #%d\n"
msgstr "Geen breekpunt in bestand '%s', op regel #%d\n"
-#: debug.c:2576 debug.c:2617 debug.c:2637 debug.c:2680
+#: debug.c:2596 debug.c:2637 debug.c:2657 debug.c:2700
msgid "invalid breakpoint number"
msgstr "ongeldig breekpuntnummer"
-#: debug.c:2592
+#: debug.c:2612
msgid "Delete all breakpoints? (y or n) "
msgstr "Alle breekpunten verwijderen? (j of n) "
-#: debug.c:2593 debug.c:2903 debug.c:2956
+#: debug.c:2613 debug.c:2923 debug.c:2976
msgid "y"
msgstr "j"
-#: debug.c:2642
+#: debug.c:2662
#, c-format
msgid "Will ignore next %ld crossing(s) of breakpoint %d.\n"
msgstr "Zal de volgende %ld passage(s) van breekpunt %d negeren.\n"
-#: debug.c:2646
+#: debug.c:2666
#, c-format
msgid "Will stop next time breakpoint %d is reached.\n"
msgstr "Zal de volgende keer dat breekpunt %d wordt bereikt stoppen.\n"
-#: debug.c:2763
+#: debug.c:2783
#, c-format
msgid "Can only debug programs provided with the `-f' option.\n"
-msgstr ""
+msgstr "Kan alleen programma's debuggen die met optie '-f' gegeven zijn.\n"
-#: debug.c:2888
+#: debug.c:2908
#, c-format
msgid "Failed to restart debugger"
msgstr "Herstarten van debugger is mislukt"
-#: debug.c:2902
+#: debug.c:2922
msgid "Program already running. Restart from beginning (y/n)? "
msgstr "Programma draait al. Herstarten vanaf begin (j/n)? "
-#: debug.c:2906
+#: debug.c:2926
#, c-format
msgid "Program not restarted\n"
msgstr "Programma is niet herstart\n"
-#: debug.c:2916
+#: debug.c:2936
#, c-format
msgid "error: cannot restart, operation not allowed\n"
msgstr "fout: kan niet herstarten; operatie is niet toegestaan\n"
-#: debug.c:2922
+#: debug.c:2942
#, c-format
msgid "error (%s): cannot restart, ignoring rest of the commands\n"
msgstr ""
"fout(%s): kan niet herstarten; de resterende commando's worden genegeerd\n"
-#: debug.c:2930
+#: debug.c:2950
#, c-format
msgid "Starting program: \n"
msgstr "Starten van programma: \n"
-#: debug.c:2939
+#: debug.c:2959
#, c-format
msgid "Program exited %s with exit value: %d\n"
msgstr "Programma verliet %s met afsluitwaarde %d\n"
-#: debug.c:2955
+#: debug.c:2975
msgid "The program is running. Exit anyway (y/n)? "
msgstr "Het programma draait. Toch afsluiten (j/n)? "
-#: debug.c:2990
+#: debug.c:3010
#, c-format
msgid "Not stopped at any breakpoint; argument ignored.\n"
msgstr "Niet gestopt op een breekpunt; argument is genegeerd.\n"
-#: debug.c:2995
+#: debug.c:3015
#, c-format
msgid "invalid breakpoint number %d."
msgstr "ongeldig breekpuntnummer %d."
-#: debug.c:3000
+#: debug.c:3020
#, c-format
msgid "Will ignore next %ld crossings of breakpoint %d.\n"
msgstr "Zal de volgende %ld passages van breekpunt %d negeren.\n"
-#: debug.c:3187
+#: debug.c:3207
#, c-format
msgid "'finish' not meaningful in the outermost frame main()\n"
-msgstr ""
+msgstr "'finish' is niet zinvol in het buitenste frame van main()\n"
-#: debug.c:3192
+#: debug.c:3212
#, c-format
msgid "Run till return from "
msgstr "Draaien tot terugkeer uit "
-#: debug.c:3235
+#: debug.c:3255
#, c-format
msgid "'return' not meaningful in the outermost frame main()\n"
-msgstr ""
+msgstr "'return' is niet zinvol in het buitenste frame van main()\n"
-#: debug.c:3349
+#: debug.c:3369
#, c-format
msgid "Can't find specified location in function `%s'\n"
msgstr "Kan gegeven locatie in functie '%s' niet vinden\n"
-#: debug.c:3357
+#: debug.c:3377
#, c-format
msgid "invalid source line %d in file `%s'"
msgstr "ongeldige bronregel %d in bestand '%s'"
-#: debug.c:3372
+#: debug.c:3392
#, c-format
msgid "Can't find specified location %d in file `%s'\n"
msgstr "Kan gegeven locatie %d in bestand '%s' niet vinden\n"
-#: debug.c:3404
+#: debug.c:3424
#, c-format
msgid "element not in array\n"
msgstr "element niet in array\n"
-#: debug.c:3404
+#: debug.c:3424
#, c-format
msgid "untyped variable\n"
msgstr "ongetypeerde variabele\n"
-#: debug.c:3446
+#: debug.c:3466
#, c-format
msgid "Stopping in %s ...\n"
msgstr "Stoppend in %s...\n"
-#: debug.c:3523
+#: debug.c:3543
#, c-format
msgid "'finish' not meaningful with non-local jump '%s'\n"
-msgstr ""
+msgstr "'finish' is niet zinvol met een niet-lokale sprong '%s'\n"
-#: debug.c:3530
+#: debug.c:3550
#, c-format
msgid "'until' not meaningful with non-local jump '%s'\n"
-msgstr ""
+msgstr "'until' is niet zinvol met een niet-lokale sprong '%s'\n"
-#: debug.c:4165
+#: debug.c:4185
msgid "\t------[Enter] to continue or q [Enter] to quit------"
msgstr ""
"\t------[Enter] om verder te gaan, of [q] [Enter] om af te sluiten------"
-#: debug.c:4166
+#: debug.c:4186
msgid "q"
msgstr "q"
-#: debug.c:4986
+#: debug.c:5001
#, c-format
msgid "[\"%s\"] not in array `%s'"
msgstr "[\"%s\"] niet in array '%s'"
-#: debug.c:5192
+#: debug.c:5207
#, c-format
msgid "sending output to stdout\n"
msgstr "uitvoer wordt naar standaarduitvoer gestuurd\n"
-#: debug.c:5232
+#: debug.c:5247
msgid "invalid number"
msgstr "ongeldig nummer"
-#: debug.c:5366
+#: debug.c:5381
#, c-format
msgid "`%s' not allowed in current context; statement ignored"
msgstr "'%s' is niet toegestaan in huidige context; statement is genegeerd"
-#: debug.c:5374
+#: debug.c:5389
msgid "`return' not allowed in current context; statement ignored"
msgstr "'return' is niet toegestaan in huidige context; statement is genegeerd"
-#: debug.c:5575
+#: debug.c:5590
#, c-format
msgid "No symbol `%s' in current context"
msgstr "Geen symbool '%s' in huidige context"
-#: dfa.c:998 dfa.c:1001 dfa.c:1021 dfa.c:1031 dfa.c:1043 dfa.c:1094 dfa.c:1103
-#: dfa.c:1106 dfa.c:1111 dfa.c:1124 dfa.c:1192
+#: dfa.c:1118 dfa.c:1121 dfa.c:1142 dfa.c:1150 dfa.c:1162 dfa.c:1197
+#: dfa.c:1206 dfa.c:1209 dfa.c:1214 dfa.c:1228 dfa.c:1275
msgid "unbalanced ["
msgstr "ongepaarde ["
-#: dfa.c:1052
+#: dfa.c:1174
msgid "invalid character class"
msgstr "ongeldige tekenklasse"
-#: dfa.c:1229
+#: dfa.c:1316
msgid "character class syntax is [[:space:]], not [:space:]"
msgstr "syntax van tekenklasse is [[:space:]], niet [:space:]"
-#: dfa.c:1281
+#: dfa.c:1366
msgid "unfinished \\ escape"
msgstr "onafgemaakte \\-stuurcode"
-#: dfa.c:1428 regcomp.c:161
+#: dfa.c:1513 regcomp.c:161
msgid "Invalid content of \\{\\}"
msgstr "Ongeldige inhoud van \\{\\}"
-#: dfa.c:1431 regcomp.c:176
+#: dfa.c:1516 regcomp.c:176
msgid "Regular expression too big"
msgstr "Reguliere expressie is te groot"
-#: dfa.c:1816
+#: dfa.c:1936
msgid "unbalanced ("
msgstr "ongepaarde ("
-#: dfa.c:1943
+#: dfa.c:2062
msgid "no syntax specified"
msgstr "geen syntax opgegeven"
-#: dfa.c:1951
+#: dfa.c:2070
msgid "unbalanced )"
msgstr "ongepaarde )"
@@ -1816,11 +1868,11 @@ msgstr "onbekende opcode %d"
msgid "opcode %s not an operator or keyword"
msgstr "opcode %s is geen operator noch sleutelwoord"
-#: eval.c:471
+#: eval.c:472
msgid "buffer overflow in genflags2str"
msgstr "bufferoverloop in genflags2str()"
-#: eval.c:674
+#: eval.c:675
#, c-format
msgid ""
"\n"
@@ -1831,71 +1883,71 @@ msgstr ""
"\t# Functieaanroepen-stack:\n"
"\n"
-#: eval.c:703
+#: eval.c:704
msgid "`IGNORECASE' is a gawk extension"
msgstr "'IGNORECASE' is een gawk-uitbreiding"
-#: eval.c:735
+#: eval.c:736
msgid "`BINMODE' is a gawk extension"
msgstr "'BINMODE' is een gawk-uitbreiding"
-#: eval.c:793
+#: eval.c:794
#, c-format
msgid "BINMODE value `%s' is invalid, treated as 3"
msgstr "BINMODE-waarde '%s' is ongeldig, wordt behandeld als 3"
-#: eval.c:884
+#: eval.c:885
#, c-format
msgid "bad `%sFMT' specification `%s'"
msgstr "onjuiste opgave van '%sFMT': '%s'"
-#: eval.c:968
+#: eval.c:969
msgid "turning off `--lint' due to assignment to `LINT'"
msgstr "'--lint' wordt uitgeschakeld wegens toewijzing aan 'LINT'"
-#: eval.c:1146
+#: eval.c:1147
#, c-format
msgid "reference to uninitialized argument `%s'"
msgstr "verwijzing naar ongeïnitialiseerd argument '%s'"
-#: eval.c:1147
+#: eval.c:1148
#, c-format
msgid "reference to uninitialized variable `%s'"
msgstr "verwijzing naar ongeïnitialiseerde variabele '%s'"
-#: eval.c:1165
+#: eval.c:1166
msgid "attempt to field reference from non-numeric value"
msgstr "veldverwijzingspoging via een waarde die geen getal is"
-#: eval.c:1167
+#: eval.c:1168
msgid "attempt to field reference from null string"
msgstr "veldverwijzingspoging via een lege string"
-#: eval.c:1175
+#: eval.c:1176
#, c-format
msgid "attempt to access field %ld"
msgstr "toegangspoging tot veld %ld"
-#: eval.c:1184
+#: eval.c:1185
#, c-format
msgid "reference to uninitialized field `$%ld'"
msgstr "verwijzing naar ongeïnitialiseerd veld '$%ld'"
-#: eval.c:1271
+#: eval.c:1272
#, c-format
msgid "function `%s' called with more arguments than declared"
msgstr "functie '%s' aangeroepen met meer argumenten dan gedeclareerd"
-#: eval.c:1466
+#: eval.c:1473
#, c-format
msgid "unwind_stack: unexpected type `%s'"
msgstr "unwind_stack(): onverwacht type '%s'"
-#: eval.c:1562
+#: eval.c:1569
msgid "division by zero attempted in `/='"
msgstr "deling door nul in '/='"
-#: eval.c:1569
+#: eval.c:1576
#, c-format
msgid "division by zero attempted in `%%='"
msgstr "deling door nul in '%%='"
@@ -1908,7 +1960,7 @@ msgstr "uitbreidingen zijn niet toegestaan in sandbox-modus"
msgid "-l / @load are gawk extensions"
msgstr "-l / '@load' zijn gawk-uitbreidingen"
-#: ext.c:95 ext.c:177
+#: ext.c:95
msgid "load_ext: received NULL lib_name"
msgstr "load_ext: lege bibliotheeknaam ontvangen"
@@ -1938,6 +1990,10 @@ msgstr "load_ext: bibliotheek '%s': initialisatiefunctie '%s' is mislukt\n"
msgid "`extension' is a gawk extension"
msgstr "'extension' is een gawk-uitbreiding"
+#: ext.c:177
+msgid "extension: received NULL lib_name"
+msgstr "uitbreiding: lege bibliotheeknaam ontvangen"
+
#: ext.c:180
#, c-format
msgid "extension: cannot open library `%s' (%s)"
@@ -1959,37 +2015,37 @@ msgstr "extension: bibliotheek '%s' kan functie '%s' niet aanroepen (%s)"
msgid "make_builtin: missing function name"
msgstr "make_builtin: ontbrekende functienaam"
-#: ext.c:238
+#: ext.c:236
#, c-format
msgid "make_builtin: can't redefine function `%s'"
msgstr "make_builtin: kan functie '%s' niet herdefiniëren"
-#: ext.c:242
+#: ext.c:240
#, c-format
msgid "make_builtin: function `%s' already defined"
msgstr "make_builtin: functie '%s' is al gedefinieerd"
-#: ext.c:246
+#: ext.c:244
#, c-format
msgid "make_builtin: function name `%s' previously defined"
msgstr "make_builtin: functienaam '%s' is al eerder gedefinieerd"
-#: ext.c:248
+#: ext.c:246
#, c-format
msgid "make_builtin: can't use gawk built-in `%s' as function name"
msgstr ""
"make_builtin: kan in gawk ingebouwde '%s' niet als functienaam gebruiken"
-#: ext.c:251 ext.c:304
+#: ext.c:249 ext.c:304
#, c-format
msgid "make_builtin: negative argument count for function `%s'"
msgstr "make_builtin: negatief aantal argumenten voor functie '%s'"
-#: ext.c:278
+#: ext.c:276
msgid "extension: missing function name"
msgstr "extension: ontbrekende functienaam"
-#: ext.c:283
+#: ext.c:279 ext.c:283
#, c-format
msgid "extension: illegal character `%c' in function name `%s'"
msgstr "extension: ongeldig teken '%c' in functienaam '%s'"
@@ -2014,142 +2070,146 @@ msgstr "extension: functienaam '%s' is al eerder gedefinieerd"
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:374
+#: ext.c:375
#, c-format
msgid "function `%s' defined to take no more than %d argument(s)"
msgstr ""
"functie '%s' is gedefinieerd om niet meer dan %d argument(en) te accepteren"
-#: ext.c:377
+#: ext.c:378
#, c-format
msgid "function `%s': missing argument #%d"
msgstr "functie '%s': ontbrekend argument #%d"
-#: ext.c:394
+#: ext.c:395
#, 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:398
+#: ext.c:399
#, 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:412
+#: ext.c:413
msgid "dynamic loading of library not supported"
msgstr "het dynamisch laden van de bibliotheek wordt niet ondersteund"
-#: extension/filefuncs.c:97
+#: extension/filefuncs.c:159
msgid "chdir: called with incorrect number of arguments, expecting 1"
msgstr ""
"chdir: aangeroepen met onjuist aantal argumenten; één wordt er verwacht"
-#: extension/filefuncs.c:343
+#: extension/filefuncs.c:439
#, c-format
msgid "stat: unable to read symbolic link `%s'"
msgstr "stat: kan symbolische koppeling '%s' niet lezen"
-#: extension/filefuncs.c:376
+#: extension/filefuncs.c:472
msgid "stat: called with wrong number of arguments"
msgstr "stat: aangeroepen met onjuist aantal argumenten"
-#: extension/filefuncs.c:383
+#: extension/filefuncs.c:479
msgid "stat: bad parameters"
msgstr "stat: onjuiste parameters"
-#: extension/filefuncs.c:437
+#: extension/filefuncs.c:533
#, c-format
msgid "fts init: could not create variable %s"
msgstr "fts-initialisatie: kan variabele %s niet aanmaken"
-#: extension/filefuncs.c:460
+#: extension/filefuncs.c:554
+msgid "fts is not supported on this system"
+msgstr "'fts' wordt op dit systeem niet ondersteund"
+
+#: extension/filefuncs.c:573
msgid "fill_stat_element: could not create array"
msgstr "fill_stat_element: kan array niet aanmaken"
-#: extension/filefuncs.c:469
+#: extension/filefuncs.c:582
msgid "fill_stat_element: could not set element"
msgstr "fill_stat_element: kan element niet instellen"
-#: extension/filefuncs.c:484
+#: extension/filefuncs.c:597
msgid "fill_path_element: could not set element"
msgstr "fill_path_element: kan element niet instellen"
-#: extension/filefuncs.c:500
+#: extension/filefuncs.c:613
msgid "fill_error_element: could not set element"
msgstr "fill_error_element: kan element niet instellen"
-#: extension/filefuncs.c:547 extension/filefuncs.c:594
+#: extension/filefuncs.c:660 extension/filefuncs.c:707
msgid "fts-process: could not create array"
msgstr "fts-verwerking: kan array niet aanmaken"
-#: extension/filefuncs.c:557 extension/filefuncs.c:604
-#: extension/filefuncs.c:622
+#: extension/filefuncs.c:670 extension/filefuncs.c:717
+#: extension/filefuncs.c:735
msgid "fts-process: could not set element"
msgstr "fts-verwerking: kan element niet instellen"
-#: extension/filefuncs.c:671
+#: extension/filefuncs.c:784
msgid "fts: called with incorrect number of arguments, expecting 3"
msgstr ""
"fts: aangeroepen met onjuist aantal argumenten; drie worden er verwacht"
-#: extension/filefuncs.c:674
+#: extension/filefuncs.c:787
msgid "fts: bad first parameter"
msgstr "fts: onjuiste eerste parameter"
-#: extension/filefuncs.c:680
+#: extension/filefuncs.c:793
msgid "fts: bad second parameter"
msgstr "fts: onjuiste tweede parameter"
-#: extension/filefuncs.c:686
+#: extension/filefuncs.c:799
msgid "fts: bad third parameter"
msgstr "fts: onjuiste derde parameter"
-#: extension/filefuncs.c:693
+#: extension/filefuncs.c:806
msgid "fts: could not flatten array\n"
msgstr "fts: kan array niet pletten\n"
-#: extension/filefuncs.c:711
+#: extension/filefuncs.c:824
msgid "fts: ignoring sneaky FTS_NOSTAT flag. nyah, nyah, nyah."
-msgstr ""
+msgstr "fts: listige FTS_NOSTAT-vlag wordt genegeerd -- lekker puh :)"
-#: extension/filefuncs.c:728
+#: extension/filefuncs.c:841
msgid "fts: clear_array() failed\n"
msgstr "fts: clear_array() is mislukt\n"
-#: extension/fnmatch.c:98
+#: extension/fnmatch.c:112
msgid "fnmatch: called with less than three arguments"
msgstr "fnmatch: aangeroepen met minder dan drie argumenten"
-#: extension/fnmatch.c:101
+#: extension/fnmatch.c:115
msgid "fnmatch: called with more than three arguments"
msgstr "fnmatch: aangeroepen met meer dan drie argumenten"
-#: extension/fnmatch.c:104
+#: extension/fnmatch.c:118
msgid "fnmatch: could not get first argument"
msgstr "fnmatch: kan eerste argument niet verkrijgen"
-#: extension/fnmatch.c:109
+#: extension/fnmatch.c:123
msgid "fnmatch: could not get second argument"
msgstr "fnmatch: kan tweede argument niet verkrijgen"
-#: extension/fnmatch.c:114
+#: extension/fnmatch.c:128
msgid "fnmatch: could not get third argument"
msgstr "fnmatch: kan derde argument niet verkrijgen"
-#: extension/fnmatch.c:127
+#: extension/fnmatch.c:141
msgid "fnmatch is not implemented on this system\n"
msgstr "'fnmatch' is niet geïmplementeerd op dit systeem\n"
-#: extension/fnmatch.c:159
+#: extension/fnmatch.c:173
msgid "fnmatch init: could not add FNM_NOMATCH variable"
msgstr "fnmatch()-initialisatie: kan de variabele FNM_NOMATCH niet toevoegen"
-#: extension/fnmatch.c:169
+#: extension/fnmatch.c:183
#, c-format
msgid "fnmatch init: could not set array element %s"
msgstr "fnmatch()-initialisatie: kan array-element %s niet instellen"
-#: extension/fnmatch.c:179
+#: extension/fnmatch.c:193
msgid "fnmatch init: could not install FNM array"
msgstr "fnmatch()-initialisatie: kan array FNM niet installeren"
@@ -2173,94 +2233,92 @@ msgstr "wait: aangeroepen zonder argumenten"
msgid "wait: called with too many arguments"
msgstr "wait: aangeroepen met te veel argumenten"
-#: extension/inplace.c:110
+#: extension/inplace.c:130
msgid "inplace_begin: in-place editing already active"
msgstr "inplace_begin(): in-situ-bewerken is al actief"
-#: extension/inplace.c:113 extension/inplace.c:187
+#: extension/inplace.c:133 extension/inplace.c:207
#, c-format
msgid "inplace_begin: expects 2 arguments but called with %d"
msgstr "inplace_begin(): verwachtte twee argumenten maar is aangeroepen met %d"
-#: extension/inplace.c:116
-#, fuzzy
+#: extension/inplace.c:136
msgid "inplace_begin: cannot retrieve 1st argument as a string filename"
msgstr ""
"inplace_begin(): kan eerste argument niet als bestandsnaamstring oppakken"
-#: extension/inplace.c:124
+#: extension/inplace.c:144
#, c-format
msgid "inplace_begin: disabling in-place editing for invalid FILENAME `%s'"
msgstr ""
"inplace_begin(): in-situ-bewerken wordt uitgeschakeld voor ongeldige "
"bestandsnaam '%s'"
-#: extension/inplace.c:131
+#: extension/inplace.c:151
#, c-format
msgid "inplace_begin: Cannot stat `%s' (%s)"
msgstr "inplace_begin(): Kan status van '%s' niet bepalen (%s)"
-#: extension/inplace.c:138
+#: extension/inplace.c:158
#, c-format
msgid "inplace_begin: `%s' is not a regular file"
msgstr "inplace_begin(): '%s' is geen normaal bestand"
-#: extension/inplace.c:149
+#: extension/inplace.c:169
#, c-format
msgid "inplace_begin: mkstemp(`%s') failed (%s)"
msgstr "inplace_begin(): mkstemp('%s') is mislukt (%s)"
-#: extension/inplace.c:158
+#: extension/inplace.c:178
#, c-format
msgid "inplace_begin: chmod failed (%s)"
msgstr "inplace_begin(): chmod is mislukt (%s)"
-#: extension/inplace.c:165
+#: extension/inplace.c:185
#, c-format
msgid "inplace_begin: dup(stdout) failed (%s)"
msgstr "inplace_begin(): dup(stdout) is mislukt (%s)"
-#: extension/inplace.c:168
+#: extension/inplace.c:188
#, c-format
msgid "inplace_begin: dup2(%d, stdout) failed (%s)"
msgstr "inplace_begin(): dup2(%d, stdout) is mislukt (%s)"
-#: extension/inplace.c:171
+#: extension/inplace.c:191
#, c-format
msgid "inplace_begin: close(%d) failed (%s)"
msgstr "inplace_begin(): close(%d) is mislukt (%s)"
-#: extension/inplace.c:190
-#, fuzzy
+#: extension/inplace.c:210
msgid "inplace_end: cannot retrieve 1st argument as a string filename"
msgstr ""
"inplace_end(): kan eerste argument niet als bestandsnaamstring oppakken"
-#: extension/inplace.c:197
+#: extension/inplace.c:217
msgid "inplace_end: in-place editing not active"
msgstr "inplace_end(): in-situ-bewerken is niet actief"
-#: extension/inplace.c:203
+#: extension/inplace.c:223
#, c-format
msgid "inplace_end: dup2(%d, stdout) failed (%s)"
msgstr "inplace_end(): dup2(%d, stdout) is mislukt (%s)"
-#: extension/inplace.c:206
+#: extension/inplace.c:226
#, c-format
msgid "inplace_end: close(%d) failed (%s)"
msgstr "inplace_end(): close(%d) is mislukt (%s)"
-#: extension/inplace.c:210
+#: extension/inplace.c:230
#, c-format
msgid "inplace_end: fsetpos(stdout) failed (%s)"
msgstr "inplace_end(): fsetpos(stdout) is mislukt (%s)"
-#: extension/inplace.c:223
+#: extension/inplace.c:243
#, c-format
msgid "inplace_end: link(`%s', `%s') failed (%s)"
msgstr "inplace_end(): link('%s', '%s') is mislukt (%s)"
-#: extension/inplace.c:229
+#: extension/inplace.c:253
#, c-format
msgid "inplace_end: rename(`%s', `%s') failed (%s)"
msgstr "inplace_end(): rename('%s', '%s') is mislukt (%s)"
@@ -2289,177 +2347,177 @@ msgstr "chr: aangeroepen zonder argumenten"
msgid "chr: called with inappropriate argument(s)"
msgstr "chr: aangeroepen met onjuiste argumenten"
-#: extension/readdir.c:203
+#: extension/readdir.c:281
#, c-format
msgid "dir_take_control_of: opendir/fdopendir failed: %s"
-msgstr ""
+msgstr "dir_take_control_of(): opendir()/fdopendir() is mislukt: %s"
-#: extension/readfile.c:84
+#: extension/readfile.c:113
msgid "readfile: called with too many arguments"
msgstr "readfile: aangeroepen met te veel argumenten"
-#: extension/readfile.c:118
+#: extension/readfile.c:137
msgid "readfile: called with no arguments"
msgstr "readfile: aangeroepen zonder argumenten"
-#: extension/rwarray.c:120
+#: extension/rwarray.c:124
msgid "writea: called with too many arguments"
msgstr "writea: aangeroepen met te veel argumenten"
-#: extension/rwarray.c:127
+#: extension/rwarray.c:131
#, c-format
msgid "do_writea: argument 0 is not a string\n"
msgstr "do_writea: argument 0 is geen string\n"
-#: extension/rwarray.c:133
+#: extension/rwarray.c:137
#, c-format
msgid "do_writea: argument 1 is not an array\n"
msgstr "do_writea: argument 1 is geen array\n"
-#: extension/rwarray.c:180
+#: extension/rwarray.c:184
#, c-format
msgid "write_array: could not flatten array\n"
msgstr "write_array: kan array niet pletten\n"
-#: extension/rwarray.c:194
+#: extension/rwarray.c:198
#, c-format
msgid "write_array: could not release flattened array\n"
msgstr "write_array: kan geplet array niet vrijgeven\n"
-#: extension/rwarray.c:276
+#: extension/rwarray.c:280
msgid "reada: called with too many arguments"
msgstr "reada: aangeroepen met te veel argumenten"
-#: extension/rwarray.c:283
+#: extension/rwarray.c:287
#, c-format
msgid "do_reada: argument 0 is not a string\n"
msgstr "do_reada: argument 0 is geen string\n"
-#: extension/rwarray.c:289
+#: extension/rwarray.c:293
#, c-format
msgid "do_reada: argument 1 is not an array\n"
msgstr "do_reada: argument 1 is geen array\n"
-#: extension/rwarray.c:333
+#: extension/rwarray.c:337
#, c-format
msgid "do_reada: clear_array failed\n"
msgstr "do_reada: clear_array() is mislukt\n"
-#: extension/rwarray.c:370
+#: extension/rwarray.c:374
#, c-format
msgid "read_array: set_array_element failed\n"
msgstr "read_array: set_array_element() is mislukt\n"
-#: extension/time.c:81
+#: extension/time.c:113
msgid "gettimeofday: ignoring arguments"
msgstr "gettimeofday: argumenten worden genegeerd"
-#: extension/time.c:112
+#: extension/time.c:144
msgid "gettimeofday: not supported on this platform"
msgstr "gettimeofday: wordt op dit platform niet ondersteund"
-#: extension/time.c:133
+#: extension/time.c:165
msgid "sleep: called with too many arguments"
msgstr "sleep: aangeroepen met te veel argumenten"
-#: extension/time.c:136
+#: extension/time.c:168
msgid "sleep: missing required numeric argument"
msgstr "sleep: vereist numeriek argument ontbreekt"
-#: extension/time.c:142
+#: extension/time.c:174
msgid "sleep: argument is negative"
msgstr "sleep: argument is negatief"
-#: extension/time.c:176
+#: extension/time.c:208
msgid "sleep: not supported on this platform"
msgstr "sleep: wordt op dit platform niet ondersteund"
-#: field.c:339
+#: field.c:345
msgid "NF set to negative value"
msgstr "NF is op een negatieve waarde gezet"
-#: field.c:964 field.c:971 field.c:975
+#: field.c:971 field.c:978 field.c:982
msgid "split: fourth argument is a gawk extension"
msgstr "split: vierde argument is een gawk-uitbreiding"
-#: field.c:968
+#: field.c:975
msgid "split: fourth argument is not an array"
msgstr "split: vierde argument is geen array"
-#: field.c:982
+#: field.c:989
msgid "split: second argument is not an array"
msgstr "split: tweede argument is geen array"
-#: field.c:986
+#: field.c:993
msgid "split: cannot use the same array for second and fourth args"
msgstr ""
"split: hetzelfde array kan niet zowel als tweede als als vierde argument "
"gebruikt worden"
-#: field.c:991
+#: field.c:998
msgid "split: cannot use a subarray of second arg for fourth arg"
msgstr ""
"split: een subarray van het tweede argument kan niet als vierde argument "
"gebruikt worden"
-#: field.c:994
+#: field.c:1001
msgid "split: cannot use a subarray of fourth arg for second arg"
msgstr ""
"split: een subarray van het vierde argument kan niet als tweede argument "
"gebruikt worden"
-#: field.c:1023
+#: field.c:1032
msgid "split: null string for third arg is a gawk extension"
msgstr "split: lege string als derde argument is een gawk-uitbreiding"
-#: field.c:1063
+#: field.c:1072
msgid "patsplit: fourth argument is not an array"
msgstr "patsplit: vierde argument is geen array"
-#: field.c:1068
+#: field.c:1077
msgid "patsplit: second argument is not an array"
msgstr "patsplit: tweede argument is geen array"
-#: field.c:1074
+#: field.c:1083
msgid "patsplit: third argument must be non-null"
msgstr "patsplit: derde argument moet niet-nil zijn"
-#: field.c:1078
+#: field.c:1087
msgid "patsplit: cannot use the same array for second and fourth args"
msgstr ""
"patsplit: hetzelfde array kan niet zowel als tweede als als vierde argument "
"gebruikt worden"
-#: field.c:1083
+#: field.c:1092
msgid "patsplit: cannot use a subarray of second arg for fourth arg"
msgstr ""
"patsplit: een subarray van het tweede argument kan niet als vierde argument "
"gebruikt worden"
-#: field.c:1086
+#: field.c:1095
msgid "patsplit: cannot use a subarray of fourth arg for second arg"
msgstr ""
"patsplit: een subarray van het vierde argument kan niet als tweede argument "
"gebruikt worden"
-#: field.c:1124
+#: field.c:1133
msgid "`FIELDWIDTHS' is a gawk extension"
msgstr "'FIELDWIDTHS' is een gawk-uitbreiding"
-#: field.c:1188
+#: field.c:1197
#, c-format
msgid "invalid FIELDWIDTHS value, near `%s'"
msgstr "ongeldige waarde voor FIELDWIDTHS, nabij '%s'"
-#: field.c:1261
+#: field.c:1270
msgid "null string for `FS' is a gawk extension"
msgstr "een lege string als 'FS' is een gawk-uitbreiding"
-#: field.c:1265
+#: field.c:1274
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:1384
+#: field.c:1393
msgid "`FPAT' is a gawk extension"
msgstr "'FPAT' is een gawk-uitbreiding"
@@ -2475,592 +2533,594 @@ msgstr "node_to_awk_value(): lege knoop ontvangen"
msgid "node_to_awk_value: received null val"
msgstr "node_to_awk_value(): lege waarde ontvangen"
-#: gawkapi.c:808
+#: gawkapi.c:807
msgid "remove_element: received null array"
msgstr "remove_element(): leeg array ontvangen"
-#: gawkapi.c:811
+#: gawkapi.c:810
msgid "remove_element: received null subscript"
msgstr "remove_element(): lege index ontvangen"
-#: gawkapi.c:943
+#: gawkapi.c:947
#, c-format
msgid "api_flatten_array: could not convert index %d\n"
msgstr "api_flatten_array(): kan index %d niet converteren\n"
-#: gawkapi.c:948
+#: gawkapi.c:952
#, c-format
msgid "api_flatten_array: could not convert value %d\n"
msgstr "api_flatten_array(): kan waarde %d niet converteren\n"
-#: getopt.c:603 getopt.c:632
+#: getopt.c:604 getopt.c:633
#, c-format
msgid "%s: option '%s' is ambiguous; possibilities:"
msgstr "%s: optie '%s' is niet eenduidig; mogelijkheden zijn:"
-#: getopt.c:678 getopt.c:682
+#: getopt.c:679 getopt.c:683
#, c-format
msgid "%s: option '--%s' doesn't allow an argument\n"
msgstr "%s: optie '--%s' staat geen argument toe\n"
-#: getopt.c:691 getopt.c:696
+#: getopt.c:692 getopt.c:697
#, c-format
msgid "%s: option '%c%s' doesn't allow an argument\n"
msgstr "%s: optie '%c%s' staat geen argument toe\n"
-#: getopt.c:739 getopt.c:758
+#: getopt.c:740 getopt.c:759
#, c-format
msgid "%s: option '--%s' requires an argument\n"
msgstr "%s: optie '--%s' vereist een argument\n"
-#: getopt.c:796 getopt.c:799
+#: getopt.c:797 getopt.c:800
#, c-format
msgid "%s: unrecognized option '--%s'\n"
msgstr "%s: onbekende optie '--%s'\n"
-#: getopt.c:807 getopt.c:810
+#: getopt.c:808 getopt.c:811
#, c-format
msgid "%s: unrecognized option '%c%s'\n"
msgstr "%s: onbekende optie '%c%s'\n"
-#: getopt.c:859 getopt.c:862
+#: getopt.c:860 getopt.c:863
#, c-format
msgid "%s: invalid option -- '%c'\n"
msgstr "%s: ongeldige optie -- '%c'\n"
-#: getopt.c:915 getopt.c:932 getopt.c:1142 getopt.c:1160
+#: getopt.c:916 getopt.c:933 getopt.c:1143 getopt.c:1161
#, c-format
msgid "%s: option requires an argument -- '%c'\n"
msgstr "%s: optie vereist een argument -- '%c'\n"
-#: getopt.c:988 getopt.c:1004
+#: getopt.c:989 getopt.c:1005
#, c-format
msgid "%s: option '-W %s' is ambiguous\n"
msgstr "%s: optie '-W %s' is niet eenduidig\n"
-#: getopt.c:1028 getopt.c:1046
+#: getopt.c:1029 getopt.c:1047
#, c-format
msgid "%s: option '-W %s' doesn't allow an argument\n"
msgstr "%s: optie '-W %s' staat geen argument toe\n"
-#: getopt.c:1067 getopt.c:1085
+#: getopt.c:1068 getopt.c:1086
#, c-format
msgid "%s: option '-W %s' requires an argument\n"
msgstr "%s: optie '-W %s' vereist een argument\n"
-#: io.c:347
+#: io.c:392
#, c-format
msgid "command line argument `%s' is a directory: skipped"
msgstr "opdrachtregelargument '%s' is een map -- overgeslagen"
-#: io.c:350 io.c:463
+#: io.c:395 io.c:513
#, c-format
msgid "cannot open file `%s' for reading (%s)"
msgstr "kan bestand '%s' niet openen om te lezen (%s)"
-#: io.c:590
+#: io.c:640
#, c-format
msgid "close of fd %d (`%s') failed (%s)"
msgstr "sluiten van bestandsdescriptor %d ('%s') is mislukt (%s)"
-#: io.c:666
+#: io.c:716
msgid "redirection not allowed in sandbox mode"
msgstr "omleiding is niet toegestaan in sandbox-modus"
-#: io.c:700
+#: io.c:750
#, c-format
msgid "expression in `%s' redirection only has numeric value"
msgstr "expressie in omleiding '%s' heeft alleen een getal als waarde"
-#: io.c:706
+#: io.c:756
#, c-format
msgid "expression for `%s' redirection has null string value"
msgstr "expressie voor omleiding '%s' heeft een lege string als waarde"
-#: io.c:711
+#: io.c:761
#, c-format
msgid "filename `%s' for `%s' redirection may be result of logical expression"
msgstr ""
"bestandsnaam '%s' voor omleiding '%s' kan het resultaat zijn van een "
"logische expressie"
-#: io.c:754
+#: io.c:809
#, c-format
msgid "unnecessary mixing of `>' and `>>' for file `%.*s'"
msgstr "onnodige mix van '>' en '>>' voor bestand '%.*s'"
-#: io.c:808
+#: io.c:863
#, c-format
msgid "can't open pipe `%s' for output (%s)"
msgstr "kan pijp '%s' niet openen voor uitvoer (%s)"
-#: io.c:818
+#: io.c:873
#, c-format
msgid "can't open pipe `%s' for input (%s)"
msgstr "kan pijp '%s' niet openen voor invoer (%s)"
-#: io.c:849
+#: io.c:904
#, c-format
msgid "can't open two way pipe `%s' for input/output (%s)"
msgstr "kan tweerichtings-pijp '%s' niet openen voor in- en uitvoer (%s)"
-#: io.c:928
+#: io.c:986
#, c-format
msgid "can't redirect from `%s' (%s)"
msgstr "kan niet omleiden van '%s' (%s)"
-#: io.c:931
+#: io.c:989
#, c-format
msgid "can't redirect to `%s' (%s)"
msgstr "kan niet omleiden naar '%s' (%s)"
-#: io.c:982
+#: io.c:1040
msgid ""
"reached system limit for open files: starting to multiplex file descriptors"
msgstr ""
"systeemgrens voor aantal open bestanden is bereikt: begonnen met multiplexen"
-#: io.c:998
+#: io.c:1056
#, c-format
msgid "close of `%s' failed (%s)."
msgstr "sluiten van '%s' is mislukt (%s)"
-#: io.c:1006
+#: io.c:1064
msgid "too many pipes or input files open"
msgstr "te veel pijpen of invoerbestanden geopend"
-#: io.c:1028
+#: io.c:1086
msgid "close: second argument must be `to' or `from'"
msgstr "close: tweede argument moet 'to' of 'from' zijn"
-#: io.c:1045
+#: io.c:1103
#, c-format
msgid "close: `%.*s' is not an open file, pipe or co-process"
msgstr "close: '%.*s' is geen open bestand, pijp, of co-proces"
-#: io.c:1050
+#: io.c:1108
msgid "close of redirection that was never opened"
msgstr "sluiten van een nooit-geopende omleiding"
-#: io.c:1147
+#: io.c:1205
#, c-format
msgid "close: redirection `%s' not opened with `|&', second argument ignored"
msgstr ""
"close: omleiding '%s' is niet geopend met '|&'; tweede argument wordt "
"genegeerd"
-#: io.c:1164
+#: io.c:1222
#, c-format
msgid "failure status (%d) on pipe close of `%s' (%s)"
msgstr "afsluitwaarde %d bij mislukte sluiting van pijp '%s' (%s)"
-#: io.c:1167
+#: io.c:1225
#, c-format
msgid "failure status (%d) on file close of `%s' (%s)"
msgstr "afsluitwaarde %d bij mislukte sluiting van bestand '%s' (%s)"
-#: io.c:1187
+#: io.c:1245
#, c-format
msgid "no explicit close of socket `%s' provided"
msgstr "geen expliciete sluiting van socket '%s' aangegeven"
-#: io.c:1190
+#: io.c:1248
#, c-format
msgid "no explicit close of co-process `%s' provided"
msgstr "geen expliciete sluiting van co-proces '%s' aangegeven"
-#: io.c:1193
+#: io.c:1251
#, c-format
msgid "no explicit close of pipe `%s' provided"
msgstr "geen expliciete sluiting van pijp '%s' aangegeven"
-#: io.c:1196
+#: io.c:1254
#, c-format
msgid "no explicit close of file `%s' provided"
msgstr "geen expliciete sluiting van bestand '%s' aangegeven"
-#: io.c:1224 io.c:1279 main.c:842 main.c:879
+#: io.c:1284 io.c:1342 main.c:864 main.c:906
#, c-format
msgid "error writing standard output (%s)"
msgstr "fout tijdens schrijven van standaarduitvoer (%s)"
-#: io.c:1228 io.c:1284
+#: io.c:1289 io.c:1348 main.c:866
#, c-format
msgid "error writing standard error (%s)"
msgstr "fout tijdens schrijven van standaardfoutuitvoer (%s)"
-#: io.c:1236
+#: io.c:1297
#, c-format
msgid "pipe flush of `%s' failed (%s)."
msgstr "leegmaken van pijp '%s' is mislukt (%s)"
-#: io.c:1239
+#: io.c:1300
#, c-format
msgid "co-process flush of pipe to `%s' failed (%s)."
msgstr "leegmaken door co-proces van pijp naar '%s' is mislukt (%s)"
-#: io.c:1242
+#: io.c:1303
#, c-format
msgid "file flush of `%s' failed (%s)."
msgstr "leegmaken van bestand '%s' is mislukt (%s)"
-#: io.c:1356
+#: io.c:1420
#, c-format
msgid "local port %s invalid in `/inet'"
msgstr "lokale poort %s is ongeldig in '/inet'"
-#: io.c:1374
+#: io.c:1438
#, c-format
msgid "remote host and port information (%s, %s) invalid"
msgstr "host- en poortinformatie (%s, %s) zijn ongeldig"
-#: io.c:1526
+#: io.c:1590
#, c-format
msgid "no (known) protocol supplied in special filename `%s'"
msgstr "geen (bekend) protocol aangegeven in speciale bestandsnaam '%s'"
-#: io.c:1540
+#: io.c:1604
#, c-format
msgid "special file name `%s' is incomplete"
msgstr "speciale bestandsnaam '%s' is onvolledig"
-#: io.c:1557
+#: io.c:1621
msgid "must supply a remote hostname to `/inet'"
msgstr "'/inet' heeft een gindse hostnaam nodig"
-#: io.c:1575
+#: io.c:1639
msgid "must supply a remote port to `/inet'"
msgstr "'/inet' heeft een gindse poort nodig"
-#: io.c:1621
+#: io.c:1685
msgid "TCP/IP communications are not supported"
msgstr "TCP/IP-communicatie wordt niet ondersteund"
-#: io.c:1796
+#: io.c:1867
#, c-format
msgid "could not open `%s', mode `%s'"
msgstr "kan '%s' niet openen -- modus '%s'"
-#: io.c:1846
+#: io.c:1917
#, c-format
msgid "close of master pty failed (%s)"
msgstr "kan meester-pty van dochterproces niet sluiten (%s)"
-#: io.c:1848 io.c:2024 io.c:2194
+#: io.c:1919 io.c:2105 io.c:2305
#, c-format
msgid "close of stdout in child failed (%s)"
msgstr "kan standaarduitvoer van dochterproces niet sluiten (%s)"
-#: io.c:1851
+#: io.c:1922
#, c-format
msgid "moving slave pty to stdout in child failed (dup: %s)"
msgstr ""
"kan slaaf-pty niet overzetten naar standaarduitvoer van dochterproces (dup: "
"%s)"
-#: io.c:1853 io.c:2029
+#: io.c:1924 io.c:2110
#, c-format
msgid "close of stdin in child failed (%s)"
msgstr "kan standaardinvoer van dochterproces niet sluiten (%s)"
-#: io.c:1856
+#: io.c:1927
#, c-format
msgid "moving slave pty to stdin in child failed (dup: %s)"
msgstr ""
"kan slaaf-pty niet overzetten naar standaardinvoer van dochterproces (dup: "
"%s)"
-#: io.c:1858 io.c:1879
+#: io.c:1929 io.c:1951
#, c-format
msgid "close of slave pty failed (%s)"
msgstr "kan slaaf-pty niet sluiten (%s)"
-#: io.c:1965 io.c:2027 io.c:2171 io.c:2197
+#: io.c:2040 io.c:2108 io.c:2276 io.c:2308
#, c-format
msgid "moving pipe to stdout in child failed (dup: %s)"
msgstr ""
"kan pijp niet overzetten naar standaarduitvoer van dochterproces (dup: %s)"
-#: io.c:1972 io.c:2032
+#: io.c:2047 io.c:2113
#, c-format
msgid "moving pipe to stdin in child failed (dup: %s)"
msgstr ""
"kan pijp niet overzetten naar standaardinvoer van dochterproces (dup: %s)"
-#: io.c:1992 io.c:2187
+#: io.c:2073 io.c:2298
msgid "restoring stdout in parent process failed\n"
msgstr "kan standaarduitvoer van ouderproces niet herstellen\n"
-#: io.c:2000
+#: io.c:2081
msgid "restoring stdin in parent process failed\n"
msgstr "kan standaardinvoer van ouderproces niet herstellen\n"
-#: io.c:2035 io.c:2199 io.c:2213
+#: io.c:2116 io.c:2310 io.c:2324
#, c-format
msgid "close of pipe failed (%s)"
msgstr "kan pijp niet sluiten (%s)"
-#: io.c:2089
+#: io.c:2174
msgid "`|&' not supported"
msgstr "'|&' wordt niet ondersteund"
-#: io.c:2156
+#: io.c:2261
#, c-format
msgid "cannot open pipe `%s' (%s)"
msgstr "kan pijp '%s' niet openen (%s)"
-#: io.c:2207
+#: io.c:2318
#, c-format
msgid "cannot create child process for `%s' (fork: %s)"
msgstr "kan voor '%s' geen dochterproces starten (fork: %s)"
-#: io.c:2667
+#: io.c:2790
msgid "register_input_parser: received NULL pointer"
msgstr "register_input_parser(): NULL-pointer gekregen"
-#: io.c:2695
+#: io.c:2818
#, c-format
msgid "input parser `%s' conflicts with previously installed input parser `%s'"
-msgstr ""
+msgstr "invoer-parser '%s' botst met eerder geïnstalleerde invoer-parser '%s'"
-#: io.c:2702
+#: io.c:2825
#, c-format
msgid "input parser `%s' failed to open `%s'"
-msgstr ""
+msgstr "invoer-parser '%s' kan '%s' niet openen"
-#: io.c:2722
+#: io.c:2845
msgid "register_output_wrapper: received NULL pointer"
msgstr "register_output_wrapper(): NULL-pointer gekregen"
-#: io.c:2750
+#: io.c:2873
#, c-format
msgid ""
"output wrapper `%s' conflicts with previously installed output wrapper `%s'"
msgstr ""
+"uitvoer-wrapper '%s' botst met eerder geïnstalleerde uitvoer-wrapper '%s'"
-#: io.c:2757
+#: io.c:2880
#, c-format
msgid "output wrapper `%s' failed to open `%s'"
-msgstr ""
+msgstr "uitvoer-wrapper '%s' kan '%s' niet openen"
-#: io.c:2778
+#: io.c:2901
msgid "register_output_processor: received NULL pointer"
msgstr "register_output_processor(): NULL-pointer gekregen"
-#: io.c:2807
+#: io.c:2930
#, c-format
msgid ""
"two-way processor `%s' conflicts with previously installed two-way processor "
"`%s'"
msgstr ""
+"tweeweg-processor '%s' botst met eerder geïnstalleerde tweeweg-processor '%s'"
-#: io.c:2816
+#: io.c:2939
#, c-format
msgid "two way processor `%s' failed to open `%s'"
-msgstr ""
+msgstr "tweeweg-processor '%s' kan '%s' niet openen"
-#: io.c:2923
+#: io.c:3064
#, c-format
msgid "data file `%s' is empty"
msgstr "databestand '%s' is leeg"
-#: io.c:2965 io.c:2973
+#: io.c:3106 io.c:3114
msgid "could not allocate more input memory"
msgstr "kan geen extra invoergeheugen meer toewijzen"
-#: io.c:3539
+#: io.c:3682
msgid "multicharacter value of `RS' is a gawk extension"
msgstr "een 'RS' van meerdere tekens is een gawk-uitbreiding"
-#: io.c:3628
+#: io.c:3771
msgid "IPv6 communication is not supported"
msgstr "IPv6-communicatie wordt niet ondersteund"
-#: main.c:388
+#: main.c:405
msgid "empty argument to `-e/--source' ignored"
msgstr "argument van '-e/--source' is leeg; genegeerd"
-#: main.c:478
+#: main.c:495
#, c-format
msgid "%s: option `-W %s' unrecognized, ignored\n"
msgstr "%s: optie '-W %s' is onbekend; genegeerd\n"
-#: main.c:524
+#: main.c:541
#, c-format
msgid "%s: option requires an argument -- %c\n"
msgstr "%s: optie vereist een argument -- %c\n"
-#: main.c:545
+#: main.c:562
msgid "environment variable `POSIXLY_CORRECT' set: turning on `--posix'"
msgstr "omgevingsvariabele 'POSIXLY_CORRECT' is gezet: '--posix' ingeschakeld"
-#: main.c:551
+#: main.c:568
msgid "`--posix' overrides `--traditional'"
msgstr "'--posix' overstijgt '--traditional'"
-#: main.c:562
+#: main.c:579
msgid "`--posix'/`--traditional' overrides `--non-decimal-data'"
msgstr "'--posix'/'--traditional' overstijgen '--non-decimal-data'"
-#: main.c:566
+#: main.c:583
#, c-format
msgid "running %s setuid root may be a security problem"
msgstr "het uitvoeren van %s als 'setuid root' kan een veiligheidsrisico zijn"
-#: main.c:571
+#: main.c:588
msgid "`--posix' overrides `--characters-as-bytes'"
msgstr "'--posix' overstijgt '--characters-as-bytes'"
-#: main.c:630
+#: main.c:647
#, c-format
msgid "can't set binary mode on stdin (%s)"
msgstr "kan standaardinvoer niet in binaire modus zetten (%s)"
-#: main.c:633
+#: main.c:650
#, c-format
msgid "can't set binary mode on stdout (%s)"
msgstr "kan standaarduitvoer niet in binaire modus zetten (%s)"
-#: main.c:635
+#: main.c:652
#, c-format
msgid "can't set binary mode on stderr (%s)"
msgstr "kan standaardfoutuitvoer niet in binaire modus zetten (%s)"
-#: main.c:693
+#: main.c:710
msgid "no program text at all!"
msgstr "helemaal geen programmatekst!"
-#: main.c:779
+#: main.c:799
#, c-format
msgid "Usage: %s [POSIX or GNU style options] -f progfile [--] file ...\n"
msgstr "Gebruik: %s [opties] -f programmabestand [--] bestand...\n"
-#: main.c:781
+#: main.c:801
#, 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:786
+#: main.c:806
msgid "POSIX options:\t\tGNU long options: (standard)\n"
msgstr "\tPOSIX-opties:\t\tEquivalente GNU-opties: (standaard)\n"
-#: main.c:787
+#: main.c:807
msgid "\t-f progfile\t\t--file=progfile\n"
msgstr "\t-f programmabestand\t--file=programmabestand\n"
-#: main.c:788
+#: main.c:808
msgid "\t-F fs\t\t\t--field-separator=fs\n"
msgstr "\t-F veldscheidingsteken\t--field-separator=veldscheidingsteken\n"
-#: main.c:789
+#: main.c:809
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:790
+#: main.c:810
msgid "Short options:\t\tGNU long options: (extensions)\n"
msgstr "\tKorte opties:\t\tEquivalente GNU-opties: (uitbreidingen)\n"
-#: main.c:791
+#: main.c:811
msgid "\t-b\t\t\t--characters-as-bytes\n"
msgstr "\t-b\t\t\t--characters-as-bytes\n"
-#: main.c:792
+#: main.c:812
msgid "\t-c\t\t\t--traditional\n"
msgstr "\t-c\t\t\t--traditional\n"
-#: main.c:793
+#: main.c:813
msgid "\t-C\t\t\t--copyright\n"
msgstr "\t-C\t\t\t--copyright\n"
-#: main.c:794
+#: main.c:814
msgid "\t-d[file]\t\t--dump-variables[=file]\n"
msgstr "\t-d[bestand]\t\t--dump-variables[=bestand]\n"
-#: main.c:795
+#: main.c:815
msgid "\t-D[file]\t\t--debug[=file]\n"
msgstr "\t-D[bestand]\t\t--debug[=bestand]\n"
-#: main.c:796
+#: main.c:816
msgid "\t-e 'program-text'\t--source='program-text'\n"
msgstr "\t-e 'programmatekst'\t--source='programmatekst'\n"
-#: main.c:797
+#: main.c:817
msgid "\t-E file\t\t\t--exec=file\n"
msgstr "\t-E bestand\t\t--exec=bestand\n"
-#: main.c:798
+#: main.c:818
msgid "\t-g\t\t\t--gen-pot\n"
msgstr "\t-g\t\t\t--gen-pot\n"
-#: main.c:799
+#: main.c:819
msgid "\t-h\t\t\t--help\n"
msgstr "\t-h\t\t\t--help\n"
-#: main.c:800
+#: main.c:820
msgid "\t-i includefile\t\t--include=includefile\n"
-msgstr ""
+msgstr "\t-i include-bestand\t\t--include=include-bestand\n"
-#: main.c:801
+#: main.c:821
msgid "\t-l library\t\t--load=library\n"
-msgstr ""
+msgstr "\t-l bibliotheek\t\t--load=bibliotheek\n"
-#: main.c:802
+#: main.c:822
msgid "\t-L [fatal]\t\t--lint[=fatal]\n"
msgstr "\t-L [fataal]\t\t--lint[=fataal]\n"
-#: main.c:803
+#: main.c:823
msgid "\t-n\t\t\t--non-decimal-data\n"
msgstr "\t-n\t\t\t--non-decimal-data\n"
-#: main.c:804
+#: main.c:824
msgid "\t-M\t\t\t--bignum\n"
msgstr "\t-M\t\t\t--bignum\n"
-#: main.c:805
+#: main.c:825
msgid "\t-N\t\t\t--use-lc-numeric\n"
msgstr "\t-N\t\t\t--use-lc-numeric\n"
-#: main.c:806
+#: main.c:826
msgid "\t-o[file]\t\t--pretty-print[=file]\n"
msgstr "\t-o[bestand]\t\t--pretty-print[=bestand]\n"
-#: main.c:807
+#: main.c:827
msgid "\t-O\t\t\t--optimize\n"
msgstr "\t-O\t\t\t--optimize\n"
-#: main.c:808
+#: main.c:828
msgid "\t-p[file]\t\t--profile[=file]\n"
msgstr "\t-p[bestand]\t\t--profile[=bestand]\n"
-#: main.c:809
+#: main.c:829
msgid "\t-P\t\t\t--posix\n"
msgstr "\t-P\t\t\t--posix\n"
-#: main.c:810
+#: main.c:830
msgid "\t-r\t\t\t--re-interval\n"
msgstr "\t-r\t\t\t--re-interval\n"
-#: main.c:811
+#: main.c:831
msgid "\t-S\t\t\t--sandbox\n"
msgstr "\t-S\t\t\t--sandbox\n"
-#: main.c:812
+#: main.c:832
msgid "\t-t\t\t\t--lint-old\n"
msgstr "\t-t\t\t\t--lint-old\n"
-#: main.c:813
+#: main.c:833
msgid "\t-V\t\t\t--version\n"
msgstr "\t-V\t\t\t--version\n"
-#: main.c:815
+#: main.c:835
msgid "\t-W nostalgia\t\t--nostalgia\n"
msgstr "\t-W nostalgia\t\t\t--nostalgia\n"
-#: main.c:818
+#: main.c:838
msgid "\t-Y\t\t--parsedebug\n"
msgstr "\t-Y\t\t\t--parsedebug\n"
@@ -3069,7 +3129,7 @@ msgstr "\t-Y\t\t\t--parsedebug\n"
#. for this application. Please add _another line_ with the
#. address for translation bugs.
#. no-wrap
-#: main.c:827
+#: main.c:847
msgid ""
"\n"
"To report bugs, see node `Bugs' in `gawk.info', which is\n"
@@ -3082,7 +3142,7 @@ msgstr ""
"Meld fouten in de vertaling aan <vertaling@vrijschrift.org>.\n"
"\n"
-#: main.c:831
+#: main.c:851
msgid ""
"gawk is a pattern scanning and processing language.\n"
"By default it reads standard input and writes standard output.\n"
@@ -3092,7 +3152,7 @@ msgstr ""
"Standaard leest het van standaardinvoer en schrijft naar standaarduitvoer.\n"
"\n"
-#: main.c:835
+#: main.c:855
msgid ""
"Examples:\n"
"\tgawk '{ sum += $1 }; END { print sum }' file\n"
@@ -3102,7 +3162,7 @@ msgstr ""
"\tgawk '{ som += $1 }; END { print som }' bestand\n"
"\tgawk -F: '{ print $1 }' /etc/passwd\n"
-#: main.c:855
+#: main.c:880
#, c-format
msgid ""
"Copyright (C) 1989, 1991-%d Free Software Foundation.\n"
@@ -3120,7 +3180,7 @@ msgstr ""
"uitgegeven door de Free Software Foundation, naar keuze ofwel onder\n"
"versie 3 of onder een nieuwere versie van die licentie.\n"
-#: main.c:863
+#: main.c:888
msgid ""
"This program is distributed in the hope that it will be useful,\n"
"but WITHOUT ANY WARRANTY; without even the implied warranty of\n"
@@ -3134,7 +3194,7 @@ msgstr ""
"Zie de GNU General Public License voor meer details.\n"
"\n"
-#: main.c:869
+#: main.c:894
msgid ""
"You should have received a copy of the GNU General Public License\n"
"along with this program. If not, see http://www.gnu.org/licenses/.\n"
@@ -3143,16 +3203,16 @@ msgstr ""
"ontvangen te hebben; is dit niet het geval, dan kunt u deze licentie\n"
"ook vinden op http://www.gnu.org/licenses/.\n"
-#: main.c:904
+#: main.c:931
msgid "-Ft does not set FS to tab in POSIX awk"
msgstr "-Ft maakt van FS geen tab in POSIX-awk"
-#: main.c:1181
+#: main.c:1208
#, c-format
msgid "unknown value for field spec: %d\n"
msgstr "onbekende waarde voor veldspecificatie: %d\n"
-#: main.c:1279
+#: main.c:1306
#, c-format
msgid ""
"%s: `%s' argument to `-v' not in `var=value' form\n"
@@ -3161,48 +3221,48 @@ msgstr ""
"%s: argument '%s' van '-v' is niet van de vorm 'var=waarde'\n"
"\n"
-#: main.c:1305
+#: main.c:1332
#, c-format
msgid "`%s' is not a legal variable name"
msgstr "'%s' is geen geldige variabelenaam"
-#: main.c:1308
+#: main.c:1335
#, 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:1312
+#: main.c:1339
#, c-format
msgid "cannot use gawk builtin `%s' as variable name"
msgstr "kan in gawk ingebouwde '%s' niet als variabelenaam gebruiken"
-#: main.c:1317
+#: main.c:1344
#, c-format
msgid "cannot use function `%s' as variable name"
msgstr "kan functie '%s' niet als variabelenaam gebruiken"
-#: main.c:1370
+#: main.c:1397
msgid "floating point exception"
msgstr "drijvendekomma-berekeningsfout"
-#: main.c:1377
+#: main.c:1404
msgid "fatal error: internal error"
msgstr "fatale fout: **interne fout**"
-#: main.c:1392
+#: main.c:1419
msgid "fatal error: internal error: segfault"
msgstr "fatale fout: **interne fout**: segmentatiefout"
-#: main.c:1404
+#: main.c:1431
msgid "fatal error: internal error: stack overflow"
msgstr "fatale fout: **interne fout**: stack is vol"
-#: main.c:1463
+#: main.c:1490
#, c-format
msgid "no pre-opened fd %d"
msgstr "geen reeds-geopende bestandsdescriptor %d"
-#: main.c:1470
+#: main.c:1497
#, c-format
msgid "could not pre-open /dev/null for fd %d"
msgstr "kan /dev/null niet openen voor bestandsdescriptor %d"
@@ -3242,7 +3302,7 @@ msgstr "%s: niet-numeriek argument #%d ontvangen"
#: mpfr.c:845
msgid "%s: argument #%d has invalid value %Rg, using 0"
-msgstr ""
+msgstr "%s: argument #%d heeft ongeldige waarde %Rg; 0 wordt gebruikt"
#: mpfr.c:857
msgid "%s: argument #%d negative value %Rg will give strange results"
@@ -3258,7 +3318,7 @@ msgstr ""
msgid "%s: argument #%d negative value %Zd will give strange results"
msgstr "%1$s: negatieve waarde %3$Zd van argument #%2$d geeft rare resultaten"
-#: msg.c:61
+#: msg.c:68
#, c-format
msgid "cmd. line:"
msgstr "commandoregel:"
@@ -3314,16 +3374,16 @@ msgstr ""
msgid "%s %s `%s': could not set close-on-exec: (fcntl F_SETFD: %s)"
msgstr "%s %s '%s': kan 'close-on-exec' niet activeren: (fcntl F_SETFD: %s)"
-#: profile.c:70
+#: profile.c:71
#, c-format
msgid "could not open `%s' for writing: %s"
msgstr "kan '%s' niet openen om te schrijven: %s"
-#: profile.c:72
+#: profile.c:73
msgid "sending profile to standard error"
msgstr "profiel gaat naar standaardfoutuitvoer"
-#: profile.c:188
+#: profile.c:193
#, c-format
msgid ""
"\t# %s block(s)\n"
@@ -3332,7 +3392,7 @@ msgstr ""
"\t# %s-blok(ken)\n"
"\n"
-#: profile.c:193
+#: profile.c:198
#, c-format
msgid ""
"\t# Rule(s)\n"
@@ -3341,28 +3401,30 @@ msgstr ""
"\t# Regel(s)\n"
"\n"
-#: profile.c:267
+#: profile.c:272
#, c-format
msgid "internal error: %s with null vname"
msgstr "**interne fout**: %s met lege 'vname'"
-#: profile.c:530
+#: profile.c:537
msgid "internal error: builtin with null fname"
msgstr "**interne fout**: ingebouwde functie met lege 'fname'"
-#: profile.c:942
+#: profile.c:949
#, c-format
msgid ""
"\t# Loaded extensions (-l and/or @load)\n"
"\n"
msgstr ""
+"\t# Geladen uitbreidingen ('-l' en/of '@load')\n"
+"\n"
-#: profile.c:965
+#: profile.c:972
#, c-format
msgid "\t# gawk profile, created %s\n"
msgstr "\t# gawk-profiel, gemaakt op %s\n"
-#: profile.c:1351
+#: profile.c:1475
#, c-format
msgid ""
"\n"
@@ -3371,19 +3433,12 @@ msgstr ""
"\n"
"\t# Functies, alfabetisch geordend\n"
-#: profile.c:1389
+#: profile.c:1513
#, c-format
msgid "redir2str: unknown redirection type %d"
msgstr "redir2str(): onbekend omleidingstype %d"
-#: re.c:583
-#, c-format
-msgid "range of the form `[%c-%c]' is locale dependent"
-msgstr ""
-"de betekenis van een bereik van de vorm '[%c-%c]' is afhankelijk van de "
-"taalregio"
-
-#: re.c:610
+#: re.c:607
#, c-format
msgid "regexp component `%.*s' should probably be `[%.*s]'"
msgstr ""
@@ -3453,9 +3508,14 @@ msgstr "Ongepaarde ) of \\)"
msgid "No previous regular expression"
msgstr "Geen eerdere reguliere expressie"
-#: symbol.c:740
+#: symbol.c:741
msgid "can not pop main context"
-msgstr ""
+msgstr "kan hoofdcontext niet poppen"
+
+#~ msgid "range of the form `[%c-%c]' is locale dependent"
+#~ msgstr ""
+#~ "de betekenis van een bereik van de vorm '[%c-%c]' is afhankelijk van de "
+#~ "taalregio"
#~ msgid "attempt to use function `%s' as an array"
#~ msgstr "functie '%s' wordt gebruikt als array"
@@ -3642,15 +3702,6 @@ msgstr ""
#~ msgid "\t-m[fr] val\n"
#~ msgstr "\t-m[fr] waarde\n"
-#~ msgid "\t-W compat\t\t--compat\n"
-#~ msgstr "\t-W compat\t\t\t--compat\n"
-
-#~ msgid "\t-W copyleft\t\t--copyleft\n"
-#~ msgstr "\t-W copyleft\t\t\t--copyleft\n"
-
-#~ msgid "\t-W usage\t\t--usage\n"
-#~ msgstr "\t-W usage\t\t\t--usage\n"
-
#~ msgid "can't convert string to float"
#~ msgstr "kan string niet converteren naar drijvende-komma-getal"
diff --git a/po/pl.gmo b/po/pl.gmo
index 0683f658..b2c8e5fa 100644
--- a/po/pl.gmo
+++ b/po/pl.gmo
Binary files differ
diff --git a/po/pl.po b/po/pl.po
index 6d647581..95ddbec2 100644
--- a/po/pl.po
+++ b/po/pl.po
@@ -1,16 +1,16 @@
# Polish translations for GNU AWK package.
-# Copyright (C) 2003, 2004, 2005, 2007, 2008, 2009, 2010, 2011, 2012, 2013 Free Software Foundation, Inc.
+# Copyright (C) 2003, 2004, 2005, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 Free Software Foundation, Inc.
# This file is distributed under the same license as the gawk package.
#
-# Wojciech Polak <polak@gnu.org>, 2003, 2004, 2005, 2007, 2008, 2009, 2010, 2011, 2012, 2013.
+# Wojciech Polak <polak@gnu.org>, 2003, 2004, 2005, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014.
# additional help by Sergey Poznyakoff <gray@gnu.org>, 2003.
#
msgid ""
msgstr ""
-"Project-Id-Version: gawk 4.0.75\n"
+"Project-Id-Version: gawk 4.1.0b\n"
"Report-Msgid-Bugs-To: arnold@skeeve.com\n"
-"POT-Creation-Date: 2013-05-09 16:05+0300\n"
-"PO-Revision-Date: 2013-05-05 18:29+0200\n"
+"POT-Creation-Date: 2014-04-08 19:23+0300\n"
+"PO-Revision-Date: 2014-03-22 17:49+0100\n"
"Last-Translator: Wojciech Polak <polak@gnu.org>\n"
"Language-Team: Polish <translation-team-pl@lists.sourceforge.net>\n"
"Language: pl\n"
@@ -20,88 +20,88 @@ msgstr ""
"Plural-Forms: nplurals=3; plural=(n==1 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 "
"|| n%100>=20) ? 1 : 2);\n"
-#: array.c:254
+#: array.c:256
#, c-format
msgid "from %s"
msgstr "od %s"
-#: array.c:354
+#: array.c:357
msgid "attempt to use a scalar value as array"
msgstr "próba użycia wartości skalarnej jako tablicy"
-#: array.c:356
+#: array.c:359
#, c-format
msgid "attempt to use scalar parameter `%s' as an array"
msgstr "próba użycia parametru `%s' skalaru jako tablicy"
-#: array.c:359
+#: array.c:362
#, c-format
msgid "attempt to use scalar `%s' as an array"
msgstr "próba użycia skalaru `%s' jako tablicy"
-#: array.c:406 array.c:573 builtin.c:85 builtin.c:1591 builtin.c:1637
-#: builtin.c:1650 builtin.c:2078 builtin.c:2092 eval.c:1121 eval.c:1125
-#: eval.c:1524
+#: array.c:409 array.c:576 builtin.c:85 builtin.c:1615 builtin.c:1661
+#: builtin.c:1674 builtin.c:2102 builtin.c:2116 eval.c:1122 eval.c:1126
+#: eval.c:1531
#, c-format
msgid "attempt to use array `%s' in a scalar context"
msgstr "próba użycia tablicy `%s' w kontekście skalaru"
-#: array.c:580
+#: array.c:583
#, c-format
msgid "delete: index `%s' not in array `%s'"
msgstr "delete: indeks `%s' nie jest w tablicy `%s'"
-#: array.c:594
+#: array.c:597
#, c-format
msgid "attempt to use scalar `%s[\"%.*s\"]' as an array"
msgstr "próba użycia skalaru `%s[\"%.*s\"]' jako tablicy"
-#: array.c:773
+#: array.c:776
msgid "adump: first argument not an array"
msgstr "adump: pierwszy argument nie jest tablicÄ…"
-#: array.c:812
+#: array.c:815
msgid "asort: second argument not an array"
msgstr "asort: drugi argument nie jest tablicÄ…"
-#: array.c:813
+#: array.c:816
msgid "asorti: second argument not an array"
msgstr "asorti: drugi argument nie jest tablicÄ…"
-#: array.c:820
+#: array.c:823
msgid "asort: first argument not an array"
msgstr "asort: pierwszy argument nie jest tablicÄ…"
-#: array.c:821
+#: array.c:824
msgid "asorti: first argument not an array"
msgstr "asorti: pierwszy argument nie jest tablicÄ…"
-#: array.c:828
+#: array.c:831
msgid "asort: cannot use a subarray of first arg for second arg"
msgstr ""
"asort: nie można użyć podtablicy pierwszego argumentu dla drugiego argumentu"
-#: array.c:829
+#: array.c:832
msgid "asorti: cannot use a subarray of first arg for second arg"
msgstr ""
"asorti: nie można użyć podtablicy pierwszego argumentu dla drugiego argumentu"
-#: array.c:834
+#: array.c:837
msgid "asort: cannot use a subarray of second arg for first arg"
msgstr ""
"asort: nie można użyć podtablicy drugiego argumentu dla pierwszego argumentu"
-#: array.c:835
+#: array.c:838
msgid "asorti: cannot use a subarray of second arg for first arg"
msgstr ""
"asorti: nie można użyć podtablicy drugiego argumentu dla pierwszego argumentu"
-#: array.c:1309
+#: array.c:1314
#, c-format
msgid "`%s' is invalid as a function name"
msgstr "nieprawidłowa nazwa funkcji `%s'"
-#: array.c:1313
+#: array.c:1318
#, c-format
msgid "sort comparison function `%s' is not defined"
msgstr "funkcja porównująca w sortowaniu `%s' nie została zdefiniowna"
@@ -145,11 +145,11 @@ msgstr "powielone wartości case w ciele switch: %s"
msgid "duplicate `default' detected in switch body"
msgstr "wykryto powielony `default' w ciele switch"
-#: awkgram.y:796 awkgram.y:3699
+#: awkgram.y:796 awkgram.y:3723
msgid "`break' is not allowed outside a loop or switch"
msgstr "instrukcja `break' poza pętlą lub switch'em jest niedozwolona"
-#: awkgram.y:805 awkgram.y:3691
+#: awkgram.y:805 awkgram.y:3715
msgid "`continue' is not allowed outside a loop"
msgstr "instrukcja `continue' poza pętlą jest niedozwolona"
@@ -243,271 +243,270 @@ msgstr ""
msgid "invalid subscript expression"
msgstr "nieprawidłowe wyrażenie indeksowe"
-#: awkgram.y:2024 awkgram.y:2044 gawkapi.c:206 gawkapi.c:224 msg.c:119
+#: awkgram.y:2048 awkgram.y:2068 gawkapi.c:206 gawkapi.c:224 msg.c:126
msgid "warning: "
msgstr "ostrzeżenie: "
-#: awkgram.y:2042 gawkapi.c:192 gawkapi.c:221 msg.c:151
+#: awkgram.y:2066 gawkapi.c:192 gawkapi.c:221 msg.c:158
msgid "fatal: "
msgstr "fatalny błąd: "
-#: awkgram.y:2092
+#: awkgram.y:2116
msgid "unexpected newline or end of string"
msgstr "niespodziewany znak nowego wiersza lub końca łańcucha"
-#: awkgram.y:2359 awkgram.y:2435 awkgram.y:2658 debug.c:517 debug.c:533
-#: debug.c:2792 debug.c:5040
+#: awkgram.y:2383 awkgram.y:2459 awkgram.y:2682 debug.c:523 debug.c:539
+#: debug.c:2812 debug.c:5055
#, c-format
msgid "can't open source file `%s' for reading (%s)"
msgstr "nie można otworzyć pliku źródłowego `%s' do czytania (%s)"
-#: awkgram.y:2360 awkgram.y:2485
+#: awkgram.y:2384 awkgram.y:2509
#, c-format
msgid "can't open shared library `%s' for reading (%s)"
msgstr "nie można otworzyć współdzielonej biblioteki `%s' do czytania (%s)"
-#: awkgram.y:2362 awkgram.y:2436 awkgram.y:2486 builtin.c:130 debug.c:5191
+#: awkgram.y:2386 awkgram.y:2460 awkgram.y:2510 builtin.c:135 debug.c:5206
msgid "reason unknown"
msgstr "nieznany powód"
-#: awkgram.y:2371 awkgram.y:2395
+#: awkgram.y:2395 awkgram.y:2419
#, c-format
msgid "can't include `%s' and use it as a program file"
msgstr "nie można dołączyć `%s' i używać go jako pliku programu"
-#: awkgram.y:2384
+#: awkgram.y:2408
#, c-format
msgid "already included source file `%s'"
msgstr "plik źródłowy `%s' jest już załączony"
-#: awkgram.y:2385
+#: awkgram.y:2409
#, c-format
msgid "already loaded shared library `%s'"
msgstr "biblioteka współdzielona jest już załadowana `%s'"
-#: awkgram.y:2420
+#: awkgram.y:2444
msgid "@include is a gawk extension"
msgstr "@include jest rozszerzeniem gawk"
-#: awkgram.y:2426
+#: awkgram.y:2450
msgid "empty filename after @include"
msgstr "pusta nazwa pliku po @include"
-#: awkgram.y:2470
+#: awkgram.y:2494
msgid "@load is a gawk extension"
msgstr "@load jest rozszerzeniem gawk"
-#: awkgram.y:2476
+#: awkgram.y:2500
msgid "empty filename after @load"
msgstr "pusta nazwa pliku po @load"
-#: awkgram.y:2610
+#: awkgram.y:2634
msgid "empty program text on command line"
msgstr "pusty tekst programu w linii poleceń"
-#: awkgram.y:2725
+#: awkgram.y:2749
#, c-format
msgid "can't read sourcefile `%s' (%s)"
msgstr "nie można otworzyć pliku źródłowego `%s' (%s)"
-#: awkgram.y:2736
+#: awkgram.y:2760
#, c-format
msgid "source file `%s' is empty"
msgstr "plik źródłowy `%s' jest pusty"
-#: awkgram.y:2913
+#: awkgram.y:2937
msgid "source file does not end in newline"
msgstr "plik źródłowy nie posiada na końcu znaku nowego wiersza"
-#: awkgram.y:3018
+#: awkgram.y:3042
msgid "unterminated regexp ends with `\\' at end of file"
msgstr ""
"niezakończone prawidłowo wyrażenie regularne kończy się znakiem `\\' na "
"końcu pliku"
-#: awkgram.y:3042
+#: awkgram.y:3066
#, c-format
msgid "%s: %d: tawk regex modifier `/.../%c' doesn't work in gawk"
msgstr ""
"%s: %d: modyfikator wyrażenia regularnego `/.../%c' tawk nie działa w gawk"
-#: awkgram.y:3046
+#: awkgram.y:3070
#, c-format
msgid "tawk regex modifier `/.../%c' doesn't work in gawk"
msgstr "modyfikator wyrażenia regularnego `/.../%c' tawk nie działa w gawk"
-#: awkgram.y:3053
+#: awkgram.y:3077
msgid "unterminated regexp"
msgstr "niezakończone wyrażenie regularne"
-#: awkgram.y:3057
+#: awkgram.y:3081
msgid "unterminated regexp at end of file"
msgstr "niezakończone wyrażenie regularne na końcu pliku"
-#: awkgram.y:3116
+#: awkgram.y:3140
msgid "use of `\\ #...' line continuation is not portable"
msgstr "użycie `\\ #...' kontynuacji linii nie jest przenośne"
-#: awkgram.y:3132
+#: awkgram.y:3156
msgid "backslash not last character on line"
msgstr "backslash nie jest ostatnim znakiem w wierszu"
-#: awkgram.y:3193
+#: awkgram.y:3217
msgid "POSIX does not allow operator `**='"
msgstr "POSIX nie zezwala na operator `**='"
-#: awkgram.y:3195
+#: awkgram.y:3219
msgid "old awk does not support operator `**='"
msgstr "stary awk nie wspiera operatora `**='"
-#: awkgram.y:3204
+#: awkgram.y:3228
msgid "POSIX does not allow operator `**'"
msgstr "POSIX nie zezwala na operator `**'"
-#: awkgram.y:3206
+#: awkgram.y:3230
msgid "old awk does not support operator `**'"
msgstr "stary awk nie wspiera operatora `**'"
-#: awkgram.y:3241
+#: awkgram.y:3265
msgid "operator `^=' is not supported in old awk"
msgstr "operator `^=' nie jest wspierany w starym awk"
-#: awkgram.y:3249
+#: awkgram.y:3273
msgid "operator `^' is not supported in old awk"
msgstr "operator `^' nie jest wspierany w starym awk"
-#: awkgram.y:3342 awkgram.y:3358 command.y:1178
+#: awkgram.y:3366 awkgram.y:3382 command.y:1178
msgid "unterminated string"
msgstr "niezakończony łańcuch"
-#: awkgram.y:3579
+#: awkgram.y:3603
#, c-format
msgid "invalid char '%c' in expression"
msgstr "nieprawidłowy znak '%c' w wyrażeniu"
-#: awkgram.y:3626
+#: awkgram.y:3650
#, c-format
msgid "`%s' is a gawk extension"
msgstr "`%s' jest rozszerzeniem gawk"
-#: awkgram.y:3631
+#: awkgram.y:3655
#, c-format
msgid "POSIX does not allow `%s'"
msgstr "POSIX nie zezwala na `%s'"
-#: awkgram.y:3639
+#: awkgram.y:3663
#, c-format
msgid "`%s' is not supported in old awk"
msgstr "`%s' nie jest wspierany w starym awk"
-#: awkgram.y:3729
+#: awkgram.y:3753
msgid "`goto' considered harmful!\n"
msgstr "`goto' uważane za szkodliwe!\n"
-#: awkgram.y:3763
+#: awkgram.y:3787
#, c-format
msgid "%d is invalid as number of arguments for %s"
msgstr "%d jest nieprawidłowe jako liczba argumentów dla %s"
-#: awkgram.y:3798
+#: awkgram.y:3822
#, c-format
msgid "%s: string literal as last arg of substitute has no effect"
msgstr ""
"%s: literał łańcuchowy jako ostatni argument podstawienia nie ma żadnego "
"efektu"
-#: awkgram.y:3803
+#: awkgram.y:3827
#, c-format
msgid "%s third parameter is not a changeable object"
msgstr "%s trzeci parametr nie jest zmiennym obiektem"
-#: awkgram.y:3886 awkgram.y:3889
+#: awkgram.y:3910 awkgram.y:3913
msgid "match: third argument is a gawk extension"
msgstr "match: trzeci argument jest rozszerzeniem gawk"
-#: awkgram.y:3943 awkgram.y:3946
+#: awkgram.y:3967 awkgram.y:3970
msgid "close: second argument is a gawk extension"
msgstr "close: drugi argument jest rozszerzeniem gawk"
-#: awkgram.y:3958
+#: awkgram.y:3982
msgid "use of dcgettext(_\"...\") is incorrect: remove leading underscore"
msgstr "nieprawidłowe użycie dcgettext(_\"...\"): usuń znak podkreślenia"
-#: awkgram.y:3973
+#: awkgram.y:3997
msgid "use of dcngettext(_\"...\") is incorrect: remove leading underscore"
msgstr "nieprawidłowe użycie dcngettext(_\"...\"): usuń znak podkreślenia"
-#: awkgram.y:3992
-#, fuzzy
+#: awkgram.y:4016
msgid "index: regexp constant as second argument is not allowed"
-msgstr "index: otrzymano drugi argument, który nie jest łańcuchem"
+msgstr "index: stały regexp jako drugi argument nie jest dozwolony"
-#: awkgram.y:4045
+#: awkgram.y:4069
#, c-format
msgid "function `%s': parameter `%s' shadows global variable"
msgstr "funkcja `%s': parametr `%s' zasłania globalną zmienną"
-#: awkgram.y:4102 debug.c:4021 debug.c:4064 debug.c:5189
+#: awkgram.y:4126 debug.c:4041 debug.c:4084 debug.c:5204
#, c-format
msgid "could not open `%s' for writing (%s)"
msgstr "nie można otworzyć `%s' do zapisu (%s)"
-#: awkgram.y:4103
+#: awkgram.y:4127
msgid "sending variable list to standard error"
msgstr "wysyłanie listy zmiennych na standardowe wyjście diagnostyczne"
-#: awkgram.y:4111
+#: awkgram.y:4135
#, c-format
msgid "%s: close failed (%s)"
msgstr "%s: zamknięcie nie powiodło się (%s)"
-#: awkgram.y:4136
+#: awkgram.y:4160
msgid "shadow_funcs() called twice!"
msgstr "shadow_funcs() wywołana podwójnie!"
-#: awkgram.y:4144
+#: awkgram.y:4168
msgid "there were shadowed variables."
msgstr "wystąpiły przykryte zmienne."
-#: awkgram.y:4215
+#: awkgram.y:4239
#, c-format
msgid "function name `%s' previously defined"
msgstr "nazwa funkcji `%s' została zdefiniowana poprzednio"
-#: awkgram.y:4261
+#: awkgram.y:4285
#, c-format
msgid "function `%s': can't use function name as parameter name"
msgstr "funkcja `%s': nie można użyć nazwy funkcji jako nazwy parametru"
-#: awkgram.y:4264
+#: awkgram.y:4288
#, c-format
msgid "function `%s': can't use special variable `%s' as a function parameter"
msgstr ""
"funkcja `%s': nie można użyć specjalnej zmiennej `%s' jako parametru funkcji"
-#: awkgram.y:4272
+#: awkgram.y:4296
#, c-format
msgid "function `%s': parameter #%d, `%s', duplicates parameter #%d"
msgstr "funkcja `%s': parametr #%d, `%s', powiela parametr #%d"
-#: awkgram.y:4366 awkgram.y:4372
+#: awkgram.y:4383 awkgram.y:4389
#, c-format
msgid "function `%s' called but never defined"
msgstr "funkcja `%s' została wywołana, ale nigdy nie została zdefiniowana"
-#: awkgram.y:4376
+#: awkgram.y:4393
#, c-format
msgid "function `%s' defined but never called directly"
msgstr ""
"funkcja `%s' została zdefiniowana, ale nigdy nie została wywołana "
"bezpośrednio"
-#: awkgram.y:4408
+#: awkgram.y:4425
#, c-format
msgid "regexp constant for parameter #%d yields boolean value"
msgstr "stałe wyrażenie regularne dla parametru #%d daje wartość logiczną"
-#: awkgram.y:4467
+#: awkgram.y:4484
#, c-format
msgid ""
"function `%s' called with space between name and `(',\n"
@@ -517,237 +516,247 @@ msgstr ""
"`(',\n"
"lub użyta jako zmienna lub jako tablica"
-#: awkgram.y:4703
+#: awkgram.y:4720
msgid "division by zero attempted"
msgstr "próba dzielenia przez zero"
-#: awkgram.y:4712
+#: awkgram.y:4729
#, c-format
msgid "division by zero attempted in `%%'"
msgstr "próba dzielenia przez zero w `%%'"
-#: builtin.c:128
+#: awkgram.y:5049
+msgid ""
+"cannot assign a value to the result of a field post-increment expression"
+msgstr "nie można przypisać wartości do wyniku tego wyrażenia"
+
+#: awkgram.y:5052
+#, c-format
+msgid "invalid target of assignment (opcode %s)"
+msgstr "nieprawidłowy cel przypisania (opcode %s)"
+
+#: builtin.c:133
#, c-format
msgid "%s to \"%s\" failed (%s)"
msgstr "%s do \"%s\" nie powiódł się (%s)"
-#: builtin.c:129
+#: builtin.c:134
msgid "standard output"
msgstr "standardowe wyjście"
-#: builtin.c:143
+#: builtin.c:148
msgid "exp: received non-numeric argument"
msgstr "exp: otrzymano argument nie będący liczbą"
-#: builtin.c:149
+#: builtin.c:154
#, c-format
msgid "exp: argument %g is out of range"
msgstr "exp: argument %g jest poza zasięgiem"
-#: builtin.c:224
+#: builtin.c:229
#, c-format
msgid "fflush: cannot flush: pipe `%s' opened for reading, not writing"
msgstr ""
"fflush: nie można opróżnić: potok `%s' otwarty do czytania, a nie do zapisu"
-#: builtin.c:227
+#: builtin.c:232
#, c-format
msgid "fflush: cannot flush: file `%s' opened for reading, not writing"
msgstr ""
"fflush: nie można opróżnić: plik `%s' otwarty do czytania, a nie do zapisu"
-#: builtin.c:239
+#: builtin.c:244
#, c-format
msgid "fflush: `%s' is not an open file, pipe or co-process"
msgstr "fflush: `%s' nie jest ani otwartym plikiem, ani potokiem, ani procesem"
-#: builtin.c:357
+#: builtin.c:362
msgid "index: received non-string first argument"
msgstr "index: otrzymano pierwszy argument, który nie jest łańcuchem"
-#: builtin.c:359
+#: builtin.c:364
msgid "index: received non-string second argument"
msgstr "index: otrzymano drugi argument, który nie jest łańcuchem"
-#: builtin.c:483 mpfr.c:757
+#: builtin.c:488 mpfr.c:757
msgid "int: received non-numeric argument"
msgstr "int: otrzymano argument, który nie jest liczbą"
-#: builtin.c:520
+#: builtin.c:525
msgid "length: received array argument"
msgstr "length: otrzymano argument, który jest tablicą"
-#: builtin.c:523
+#: builtin.c:528
msgid "`length(array)' is a gawk extension"
msgstr "`length(tablica)' jest rozszerzeniem gawk"
-#: builtin.c:539
+#: builtin.c:544
msgid "length: received non-string argument"
msgstr "length: otrzymano argument, który nie jest łańcuchem"
-#: builtin.c:570
+#: builtin.c:575
msgid "log: received non-numeric argument"
msgstr "log: otrzymano argument, który nie jest liczbą"
-#: builtin.c:573
+#: builtin.c:578
#, c-format
msgid "log: received negative argument %g"
msgstr "log: otrzymano ujemny argument %g"
-#: builtin.c:771 builtin.c:776
+#: builtin.c:776 builtin.c:781
msgid "fatal: must use `count$' on all formats or none"
msgstr "fatal: należy użyć `count$' we wszystkich formatach lub nic"
-#: builtin.c:846
+#: builtin.c:851
#, c-format
msgid "field width is ignored for `%%' specifier"
msgstr "szerokość pola jest ignorowana dla specyfikatora `%%'"
-#: builtin.c:848
+#: builtin.c:853
#, c-format
msgid "precision is ignored for `%%' specifier"
msgstr "precyzja jest ignorowana dla specyfikatora `%%'"
-#: builtin.c:850
+#: builtin.c:855
#, c-format
msgid "field width and precision are ignored for `%%' specifier"
msgstr "szerokość pola i precyzja są ignorowane dla specyfikatora `%%'"
-#: builtin.c:901
+#: builtin.c:906
msgid "fatal: `$' is not permitted in awk formats"
msgstr "fatal: `$' jest niedozwolony w formatach awk"
-#: builtin.c:910
+#: builtin.c:915
msgid "fatal: arg count with `$' must be > 0"
msgstr "fatal: argument count z `$' musi być > 0"
-#: builtin.c:914
+#: builtin.c:919
#, c-format
msgid "fatal: arg count %ld greater than total number of supplied arguments"
msgstr ""
"fatal: argument count %ld większy niż całkowita suma argumentów dostarczonych"
-#: builtin.c:918
+#: builtin.c:923
msgid "fatal: `$' not permitted after period in format"
msgstr "fatal: `$' jest niedozwolony po kropce w formacie"
-#: builtin.c:934
+#: builtin.c:939
msgid "fatal: no `$' supplied for positional field width or precision"
msgstr "fatal: brak `$' dla pozycyjnej szerokości pola lub precyzji"
-#: builtin.c:1006
+#: builtin.c:1009
msgid "`l' is meaningless in awk formats; ignored"
msgstr "`l' jest bezsensowny w formatach awk; zignorowany"
-#: builtin.c:1010
+#: builtin.c:1013
msgid "fatal: `l' is not permitted in POSIX awk formats"
msgstr "fatal: `l' jest niedozwolony w formatach POSIX awk"
-#: builtin.c:1023
+#: builtin.c:1026
msgid "`L' is meaningless in awk formats; ignored"
msgstr "`L' jest bezsensowny w formatach awk; zignorowany"
-#: builtin.c:1027
+#: builtin.c:1030
msgid "fatal: `L' is not permitted in POSIX awk formats"
msgstr "fatal: `L' jest niedozwolony w formatach POSIX awk"
-#: builtin.c:1040
+#: builtin.c:1043
msgid "`h' is meaningless in awk formats; ignored"
msgstr "`h' jest bezsensowny w formatach awk; zignorowany"
-#: builtin.c:1044
+#: builtin.c:1047
msgid "fatal: `h' is not permitted in POSIX awk formats"
msgstr "fatal: `h' jest niedozwolony w formatach POSIX awk"
-#: builtin.c:1439
+#: builtin.c:1463
#, c-format
msgid "[s]printf: value %g is out of range for `%%%c' format"
msgstr "[s]printf: wartość %g jest poza zasięgiem dla formatu `%%%c'"
-#: builtin.c:1537
+#: builtin.c:1561
#, c-format
msgid "ignoring unknown format specifier character `%c': no argument converted"
msgstr ""
"pominięcie nieznanego formatu specyfikatora znaku `%c': nie skonwertowano "
"argumentu"
-#: builtin.c:1542
+#: builtin.c:1566
msgid "fatal: not enough arguments to satisfy format string"
msgstr ""
"fatal: brak wystarczającej liczby argumentów, aby zaspokoić łańcuch "
"formatujÄ…cy"
-#: builtin.c:1544
+#: builtin.c:1568
msgid "^ ran out for this one"
msgstr "zabrakło ^"
-#: builtin.c:1551
+#: builtin.c:1575
msgid "[s]printf: format specifier does not have control letter"
msgstr "[s]printf: specyfikator formatu nie posiada kontrolnej litery"
-#: builtin.c:1554
+#: builtin.c:1578
msgid "too many arguments supplied for format string"
msgstr "zbyt dużo podanych argumentów w łańcuchu formatującym"
-#: builtin.c:1610
+#: builtin.c:1634
msgid "sprintf: no arguments"
msgstr "sprintf: brak argumentów"
-#: builtin.c:1633 builtin.c:1644
+#: builtin.c:1657 builtin.c:1668
msgid "printf: no arguments"
msgstr "printf: brak argumentów"
-#: builtin.c:1687
+#: builtin.c:1711
msgid "sqrt: received non-numeric argument"
msgstr "sqrt: otrzymano argument, który nie jest liczbą"
-#: builtin.c:1691
+#: builtin.c:1715
#, c-format
msgid "sqrt: called with negative argument %g"
msgstr "sqrt: wywołana z ujemnym argumentem %g"
-#: builtin.c:1722
+#: builtin.c:1746
#, c-format
msgid "substr: length %g is not >= 1"
msgstr "substr: długość %g nie jest >= 1"
-#: builtin.c:1724
+#: builtin.c:1748
#, c-format
msgid "substr: length %g is not >= 0"
msgstr "substr: długość %g nie jest >= 0"
-#: builtin.c:1731
+#: builtin.c:1755
#, c-format
msgid "substr: non-integer length %g will be truncated"
msgstr "substr: długość %g, która nie jest liczbą całkowitą, zostanie obcięta"
-#: builtin.c:1736
+#: builtin.c:1760
#, c-format
msgid "substr: length %g too big for string indexing, truncating to %g"
msgstr "substr: długość %g zbyt duża dla indeksu łańcucha, obcinanie do %g"
-#: builtin.c:1748
+#: builtin.c:1772
#, c-format
msgid "substr: start index %g is invalid, using 1"
msgstr "substr: początkowy indeks %g jest nieprawidłowy, nastąpi użycie 1"
-#: builtin.c:1753
+#: builtin.c:1777
#, c-format
msgid "substr: non-integer start index %g will be truncated"
msgstr ""
"substr: początkowy indeks %g, który nie jest liczbą całkowitą, zostanie "
"obcięty"
-#: builtin.c:1778
+#: builtin.c:1802
msgid "substr: source string is zero length"
msgstr "substr: łańcuch źródłowy ma zerową długość"
-#: builtin.c:1794
+#: builtin.c:1818
#, c-format
msgid "substr: start index %g is past end of string"
msgstr "substr: początkowy indeks %g leży poza końcem łańcucha"
-#: builtin.c:1802
+#: builtin.c:1826
#, c-format
msgid ""
"substr: length %g at start index %g exceeds length of first argument (%lu)"
@@ -755,187 +764,187 @@ msgstr ""
"substr: długość %g zaczynając od %g przekracza długość pierwszego argumentu "
"(%lu)"
-#: builtin.c:1876
+#: builtin.c:1900
msgid "strftime: format value in PROCINFO[\"strftime\"] has numeric type"
msgstr ""
"strftime: wartość formatu w PROCINFO[\"strftime\"] posiada typ numeryczny"
-#: builtin.c:1899
+#: builtin.c:1923
msgid "strftime: received non-numeric second argument"
msgstr "strftime: otrzymano drugi argument, który nie jest liczbą"
-#: builtin.c:1903
+#: builtin.c:1927
msgid "strftime: second argument less than 0 or too big for time_t"
msgstr "strftime: drugi argument mniejszy od 0 lub zbyt duży dla time_t"
-#: builtin.c:1910
+#: builtin.c:1934
msgid "strftime: received non-string first argument"
msgstr "strftime: otrzymano pierwszy argument, który nie jest łańcuchem"
-#: builtin.c:1917
+#: builtin.c:1941
msgid "strftime: received empty format string"
msgstr "strftime: otrzymano pusty łańcuch formatujący"
-#: builtin.c:1983
+#: builtin.c:2007
msgid "mktime: received non-string argument"
msgstr "mktime: otrzymano argument, który nie jest łańcuchem"
-#: builtin.c:2000
+#: builtin.c:2024
msgid "mktime: at least one of the values is out of the default range"
msgstr "mktime: przynajmniej jedna z wartości jest poza domyślnym zakresem"
-#: builtin.c:2035
+#: builtin.c:2059
msgid "'system' function not allowed in sandbox mode"
msgstr "funkcja 'system' nie jest dozwolona w trybie piaskownicy"
-#: builtin.c:2040
+#: builtin.c:2064
msgid "system: received non-string argument"
msgstr "system: otrzymano argument, który nie jest łańcuchem"
-#: builtin.c:2160
+#: builtin.c:2184
#, c-format
msgid "reference to uninitialized field `$%d'"
msgstr "odwołanie do niezainicjowanego pola `$%d'"
-#: builtin.c:2247
+#: builtin.c:2271
msgid "tolower: received non-string argument"
msgstr "tolower: otrzymano argument, który nie jest łańcuchem"
-#: builtin.c:2281
+#: builtin.c:2305
msgid "toupper: received non-string argument"
msgstr "toupper: otrzymano argument, który nie jest łańcuchem"
-#: builtin.c:2317 mpfr.c:672
+#: builtin.c:2341 mpfr.c:672
msgid "atan2: received non-numeric first argument"
msgstr "atan2: otrzymano pierwszy argument, który nie jest liczbą"
-#: builtin.c:2319 mpfr.c:674
+#: builtin.c:2343 mpfr.c:674
msgid "atan2: received non-numeric second argument"
msgstr "atan2: otrzymano drugi argument, który nie jest liczbą"
-#: builtin.c:2338
+#: builtin.c:2362
msgid "sin: received non-numeric argument"
msgstr "sin: otrzymano argument, który nie jest liczbą"
-#: builtin.c:2354
+#: builtin.c:2378
msgid "cos: received non-numeric argument"
msgstr "cos: otrzymano argument, który nie jest liczbą"
-#: builtin.c:2407 mpfr.c:1156
+#: builtin.c:2431 mpfr.c:1156
msgid "srand: received non-numeric argument"
msgstr "srand: otrzymano argument, który nie jest liczbą"
-#: builtin.c:2438
+#: builtin.c:2462
msgid "match: third argument is not an array"
msgstr "match: otrzymano trzeci argument, który nie jest tablicą"
-#: builtin.c:2710
+#: builtin.c:2734
msgid "gensub: third argument of 0 treated as 1"
msgstr "gensub: trzeci argument 0 potraktowany jako 1"
-#: builtin.c:3003
+#: builtin.c:3030
msgid "lshift: received non-numeric first argument"
msgstr "lshift: otrzymano pierwszy argument, który nie jest liczbą"
-#: builtin.c:3005
+#: builtin.c:3032
msgid "lshift: received non-numeric second argument"
msgstr "lshift: otrzymano drugi argument, który nie jest liczbą"
-#: builtin.c:3011
+#: builtin.c:3038
#, c-format
msgid "lshift(%f, %f): negative values will give strange results"
msgstr "lshift(%f, %f): ujemne wartości spowodują dziwne wyniki"
-#: builtin.c:3013
+#: builtin.c:3040
#, c-format
msgid "lshift(%f, %f): fractional values will be truncated"
msgstr "lshift(%f, %f): ułamkowe wartości zostaną obcięte"
-#: builtin.c:3015
+#: builtin.c:3042
#, c-format
msgid "lshift(%f, %f): too large shift value will give strange results"
msgstr "lshift(%f, %f): zbyt duża wartość przesunięcia spowoduje dziwne wyniki"
-#: builtin.c:3040
+#: builtin.c:3067
msgid "rshift: received non-numeric first argument"
msgstr "rshift: otrzymano pierwszy argument, który nie jest liczbą"
-#: builtin.c:3042
+#: builtin.c:3069
msgid "rshift: received non-numeric second argument"
msgstr "rshift: otrzymano drugi argument, który nie jest liczbą"
-#: builtin.c:3048
+#: builtin.c:3075
#, c-format
msgid "rshift(%f, %f): negative values will give strange results"
msgstr "rshift(%f, %f): ujemne wartości spowodują dziwne wyniki"
-#: builtin.c:3050
+#: builtin.c:3077
#, c-format
msgid "rshift(%f, %f): fractional values will be truncated"
msgstr "rshift(%f, %f): ułamkowe wartości zostaną obcięte"
-#: builtin.c:3052
+#: builtin.c:3079
#, c-format
msgid "rshift(%f, %f): too large shift value will give strange results"
msgstr "rshift(%f, %f): zbyt duża wartość przesunięcia spowoduje dziwne wyniki"
-#: builtin.c:3077 mpfr.c:968
+#: builtin.c:3104 mpfr.c:968
msgid "and: called with less than two arguments"
msgstr "and: wywołano z mniej niż dwoma argumentami"
-#: builtin.c:3082
+#: builtin.c:3109
#, c-format
msgid "and: argument %d is non-numeric"
msgstr "and: argument %d nie jest liczbÄ…"
-#: builtin.c:3086
+#: builtin.c:3113
#, c-format
msgid "and: argument %d negative value %g will give strange results"
msgstr "and: argument %d ujemna wartość %g spowoduje dziwne wyniki"
-#: builtin.c:3109 mpfr.c:1000
+#: builtin.c:3136 mpfr.c:1000
msgid "or: called with less than two arguments"
msgstr "or: wywołano z mniej niż dwoma argumentami"
-#: builtin.c:3114
+#: builtin.c:3141
#, c-format
msgid "or: argument %d is non-numeric"
msgstr "or: argument %d nie jest liczbÄ…"
-#: builtin.c:3118
+#: builtin.c:3145
#, c-format
msgid "or: argument %d negative value %g will give strange results"
msgstr "or: argument %d ujemna wartość %g spowoduje dziwne wyniki"
-#: builtin.c:3140 mpfr.c:1031
+#: builtin.c:3167 mpfr.c:1031
msgid "xor: called with less than two arguments"
msgstr "xor: wywołano z mniej niż dwoma argumentami"
-#: builtin.c:3146
+#: builtin.c:3173
#, c-format
msgid "xor: argument %d is non-numeric"
msgstr "xor: argument %d nie jest liczbÄ…"
-#: builtin.c:3150
+#: builtin.c:3177
#, c-format
msgid "xor: argument %d negative value %g will give strange results"
msgstr "xor: argument %d ujemna wartość %g spowoduje dziwne wyniki"
-#: builtin.c:3175 mpfr.c:787
+#: builtin.c:3202 mpfr.c:787
msgid "compl: received non-numeric argument"
msgstr "compl: otrzymano argument, który nie jest liczbą"
-#: builtin.c:3181
+#: builtin.c:3208
#, c-format
msgid "compl(%f): negative value will give strange results"
msgstr "compl(%f): ujemne wartości spowodują dziwne wyniki"
-#: builtin.c:3183
+#: builtin.c:3210
#, c-format
msgid "compl(%f): fractional value will be truncated"
msgstr "compl(%f): ułamkowe wartości zostaną obcięte"
-#: builtin.c:3352
+#: builtin.c:3379
#, c-format
msgid "dcgettext: `%s' is not a valid locale category"
msgstr "dcgettext: `%s' nie jest prawidłową kategorią lokalizacji"
@@ -1057,8 +1066,8 @@ msgstr ""
#: command.y:823
msgid ""
-"commands [num] - starts a list of commands to be executed at a breakpoint"
-"(watchpoint) hit."
+"commands [num] - starts a list of commands to be executed at a "
+"breakpoint(watchpoint) hit."
msgstr ""
#: command.y:825
@@ -1215,7 +1224,7 @@ msgstr ""
msgid "watch var - set a watchpoint for a variable."
msgstr ""
-#: command.y:1011 debug.c:395 msg.c:128
+#: command.y:1011 debug.c:401 msg.c:135
#, c-format
msgid "error: "
msgstr "błąd: "
@@ -1253,93 +1262,93 @@ msgstr "nieprawidłowy znak"
msgid "undefined command: %s\n"
msgstr "niezdefiniowana komenda: %s\n"
-#: debug.c:246
+#: debug.c:252
msgid "set or show the number of lines to keep in history file."
msgstr ""
-#: debug.c:248
+#: debug.c:254
msgid "set or show the list command window size."
msgstr ""
-#: debug.c:250
+#: debug.c:256
msgid "set or show gawk output file."
msgstr ""
-#: debug.c:252
+#: debug.c:258
msgid "set or show debugger prompt."
msgstr ""
-#: debug.c:254
+#: debug.c:260
msgid "(un)set or show saving of command history (value=on|off)."
msgstr ""
-#: debug.c:256
+#: debug.c:262
msgid "(un)set or show saving of options (value=on|off)."
msgstr ""
-#: debug.c:258
+#: debug.c:264
msgid "(un)set or show instruction tracing (value=on|off)."
msgstr ""
-#: debug.c:339
+#: debug.c:345
msgid "program not running."
msgstr ""
-#: debug.c:442 debug.c:597
+#: debug.c:448 debug.c:606
#, c-format
msgid "can't read source file `%s' (%s)"
msgstr "nie można odczytać pliku źródłowego `%s' (%s)"
-#: debug.c:447
+#: debug.c:453
#, c-format
msgid "source file `%s' is empty.\n"
msgstr "plik źródłowy `%s' jest pusty.\n"
-#: debug.c:474
+#: debug.c:480
msgid "no current source file."
msgstr "brak aktualnego pliku źródłowego."
-#: debug.c:499
+#: debug.c:505
#, c-format
msgid "cannot find source file named `%s' (%s)"
msgstr "nie można znaleźć pliku źródłowego `%s' (%s)"
-#: debug.c:523
+#: debug.c:529
#, c-format
msgid "WARNING: source file `%s' modified since program compilation.\n"
msgstr "UWAGA: plik źródłowy `%s' uległ zmianie od kompilacji programu.\n"
-#: debug.c:542
+#: debug.c:551
#, c-format
msgid "line number %d out of range; `%s' has %d lines"
msgstr ""
-#: debug.c:602
+#: debug.c:611
#, c-format
msgid "unexpected eof while reading file `%s', line %d"
msgstr "niespodziewany koniec pliku podczas czytania `%s', linia %d"
-#: debug.c:611
+#: debug.c:620
#, c-format
msgid "source file `%s' modified since start of program execution"
msgstr "plik źródłowy `%s' uległ zmianie od rozpoczęcia działania programu"
-#: debug.c:723
+#: debug.c:732
#, c-format
msgid "Current source file: %s\n"
msgstr "Aktualny plik źródłowy: %s\n"
-#: debug.c:724
+#: debug.c:733
#, c-format
msgid "Number of lines: %d\n"
msgstr "Ilość linii: %d\n"
-#: debug.c:731
+#: debug.c:740
#, c-format
msgid "Source file (lines): %s (%d)\n"
msgstr "Plik źródłowy (linie): %s (%d)\n"
-#: debug.c:745
+#: debug.c:754
msgid ""
"Number Disp Enabled Location\n"
"\n"
@@ -1347,54 +1356,54 @@ msgstr ""
"Numer Disp Enabled Lokacja\n"
"\n"
-#: debug.c:756
+#: debug.c:765
#, c-format
msgid "\tno of hits = %ld\n"
msgstr ""
-#: debug.c:758
+#: debug.c:767
#, c-format
msgid "\tignore next %ld hit(s)\n"
msgstr ""
-#: debug.c:760 debug.c:900
+#: debug.c:769 debug.c:909
#, c-format
msgid "\tstop condition: %s\n"
msgstr "\tkoniec warunku: %s\n"
-#: debug.c:762 debug.c:902
+#: debug.c:771 debug.c:911
msgid "\tcommands:\n"
msgstr "\tkomendy:\n"
-#: debug.c:784
+#: debug.c:793
#, c-format
msgid "Current frame: "
msgstr "Aktualna ramka: "
-#: debug.c:787
+#: debug.c:796
#, c-format
msgid "Called by frame: "
msgstr ""
-#: debug.c:791
+#: debug.c:800
#, c-format
msgid "Caller of frame: "
msgstr ""
-#: debug.c:809
+#: debug.c:818
#, c-format
msgid "None in main().\n"
msgstr ""
-#: debug.c:839
+#: debug.c:848
msgid "No arguments.\n"
msgstr "Brak argumentów.\n"
-#: debug.c:840
+#: debug.c:849
msgid "No locals.\n"
msgstr ""
-#: debug.c:848
+#: debug.c:857
msgid ""
"All defined variables:\n"
"\n"
@@ -1402,7 +1411,7 @@ msgstr ""
"Wszystkie zdefiniowane zmienne:\n"
"\n"
-#: debug.c:858
+#: debug.c:867
msgid ""
"All defined functions:\n"
"\n"
@@ -1410,13 +1419,13 @@ msgstr ""
"Wszystkie zdefiniowane funkcje:\n"
"\n"
-#: debug.c:877
+#: debug.c:886
msgid ""
"Auto-display variables:\n"
"\n"
msgstr ""
-#: debug.c:880
+#: debug.c:889
msgid ""
"Watch variables:\n"
"\n"
@@ -1424,390 +1433,390 @@ msgstr ""
"Obserwowane zmienne:\n"
"\n"
-#: debug.c:1020
+#: debug.c:1029
#, c-format
msgid "no symbol `%s' in current context\n"
msgstr "brak symbolu `%s' w bieżącym kontekście\n"
-#: debug.c:1032 debug.c:1418
+#: debug.c:1041 debug.c:1427
#, c-format
msgid "`%s' is not an array\n"
msgstr "`%s' nie jest tablicÄ…\n"
-#: debug.c:1046
+#: debug.c:1055
#, c-format
msgid "$%ld = uninitialized field\n"
msgstr "$%ld = niezainicjowane pole\n"
-#: debug.c:1067
+#: debug.c:1076
#, c-format
msgid "array `%s' is empty\n"
msgstr "tablica `%s' jest pusta\n"
-#: debug.c:1110 debug.c:1162
+#: debug.c:1119 debug.c:1171
#, c-format
msgid "[\"%s\"] not in array `%s'\n"
msgstr "[\"%s\"] nie ma w tablicy `%s'\n"
-#: debug.c:1166
+#: debug.c:1175
#, c-format
msgid "`%s[\"%s\"]' is not an array\n"
msgstr "`%s[\"%s\"]' nie jest tablicÄ…\n"
-#: debug.c:1227 debug.c:4949
+#: debug.c:1236 debug.c:4964
#, c-format
msgid "`%s' is not a scalar variable"
msgstr "`%s' nie jest zmiennÄ… skalarnÄ…"
-#: debug.c:1249 debug.c:4979
+#: debug.c:1258 debug.c:4994
#, c-format
msgid "attempt to use array `%s[\"%s\"]' in a scalar context"
msgstr "próba użycia tablicy `%s[\"%s\"]' w kontekście skalaru"
-#: debug.c:1271 debug.c:4990
+#: debug.c:1280 debug.c:5005
#, c-format
msgid "attempt to use scalar `%s[\"%s\"]' as array"
msgstr "próba użycia skalaru `%s[\"%s\"]' jako tablicy"
-#: debug.c:1414
+#: debug.c:1423
#, c-format
msgid "`%s' is a function"
msgstr "`%s' jest funkcjÄ…"
-#: debug.c:1456
+#: debug.c:1465
#, c-format
msgid "watchpoint %d is unconditional\n"
msgstr ""
-#: debug.c:1490
+#: debug.c:1499
#, c-format
msgid "No display item numbered %ld"
msgstr ""
-#: debug.c:1493
+#: debug.c:1502
#, c-format
msgid "No watch item numbered %ld"
msgstr ""
-#: debug.c:1519
+#: debug.c:1528
#, c-format
msgid "%d: [\"%s\"] not in array `%s'\n"
msgstr "%d: [\"%s\"] nie ma w tablicy `%s'\n"
-#: debug.c:1758
+#: debug.c:1767
msgid "attempt to use scalar value as array"
msgstr "próba użycia wartości skalarnej jako tablicy"
-#: debug.c:1847
+#: debug.c:1856
#, c-format
msgid "Watchpoint %d deleted because parameter is out of scope.\n"
msgstr ""
-#: debug.c:1858
+#: debug.c:1867
#, c-format
msgid "Display %d deleted because parameter is out of scope.\n"
msgstr ""
-#: debug.c:1891
+#: debug.c:1900
#, c-format
msgid " in file `%s', line %d\n"
msgstr " w pliku `%s', linia %d\n"
-#: debug.c:1912
+#: debug.c:1921
#, c-format
msgid " at `%s':%d"
msgstr " w `%s':%d"
-#: debug.c:1928 debug.c:1991
+#: debug.c:1937 debug.c:2000
#, c-format
msgid "#%ld\tin "
msgstr "#%ld\tw "
-#: debug.c:1965
+#: debug.c:1974
#, c-format
msgid "More stack frames follow ...\n"
msgstr ""
-#: debug.c:2008
+#: debug.c:2017
msgid "invalid frame number"
msgstr "nieprawidłowy numer ramki"
-#: debug.c:2180
+#: debug.c:2200
#, c-format
msgid "Note: breakpoint %d (enabled, ignore next %ld hits), also set at %s:%d"
msgstr ""
-#: debug.c:2187
+#: debug.c:2207
#, c-format
msgid "Note: breakpoint %d (enabled), also set at %s:%d"
msgstr ""
-#: debug.c:2194
+#: debug.c:2214
#, c-format
msgid "Note: breakpoint %d (disabled, ignore next %ld hits), also set at %s:%d"
msgstr ""
-#: debug.c:2201
+#: debug.c:2221
#, c-format
msgid "Note: breakpoint %d (disabled), also set at %s:%d"
msgstr ""
-#: debug.c:2218
+#: debug.c:2238
#, c-format
msgid "Breakpoint %d set at file `%s', line %d\n"
msgstr "Breakpoint %d ustawiony w pliku `%s', linia %d\n"
-#: debug.c:2320
+#: debug.c:2340
#, c-format
msgid "Can't set breakpoint in file `%s'\n"
msgstr ""
-#: debug.c:2349 debug.c:2472 debug.c:3330
+#: debug.c:2369 debug.c:2492 debug.c:3350
#, c-format
msgid "line number %d in file `%s' out of range"
msgstr "numer linii %d w pliku `%s' jest poza zasięgiem"
-#: debug.c:2353
+#: debug.c:2373
#, c-format
msgid "Can't find rule!!!\n"
msgstr "Nie można znaleźć reguły!!!\n"
-#: debug.c:2355
+#: debug.c:2375
#, c-format
msgid "Can't set breakpoint at `%s':%d\n"
msgstr ""
-#: debug.c:2367
+#: debug.c:2387
#, c-format
msgid "Can't set breakpoint in function `%s'\n"
msgstr ""
-#: debug.c:2383
+#: debug.c:2403
#, c-format
msgid "breakpoint %d set at file `%s', line %d is unconditional\n"
msgstr ""
-#: debug.c:2488 debug.c:2510
+#: debug.c:2508 debug.c:2530
#, c-format
msgid "Deleted breakpoint %d"
msgstr "Skasowany breakpoint %d"
-#: debug.c:2494
+#: debug.c:2514
#, c-format
msgid "No breakpoint(s) at entry to function `%s'\n"
msgstr ""
-#: debug.c:2521
+#: debug.c:2541
#, c-format
msgid "No breakpoint at file `%s', line #%d\n"
msgstr "Brak breakpointa w pliku `%s', linii #%d\n"
-#: debug.c:2576 debug.c:2617 debug.c:2637 debug.c:2680
+#: debug.c:2596 debug.c:2637 debug.c:2657 debug.c:2700
msgid "invalid breakpoint number"
msgstr ""
-#: debug.c:2592
+#: debug.c:2612
msgid "Delete all breakpoints? (y or n) "
msgstr "Czy skasować wszystkie breakpointy? (y lub n) "
-#: debug.c:2593 debug.c:2903 debug.c:2956
+#: debug.c:2613 debug.c:2923 debug.c:2976
msgid "y"
msgstr "t"
-#: debug.c:2642
+#: debug.c:2662
#, c-format
msgid "Will ignore next %ld crossing(s) of breakpoint %d.\n"
msgstr ""
-#: debug.c:2646
+#: debug.c:2666
#, c-format
msgid "Will stop next time breakpoint %d is reached.\n"
msgstr ""
-#: debug.c:2763
+#: debug.c:2783
#, c-format
msgid "Can only debug programs provided with the `-f' option.\n"
msgstr ""
-#: debug.c:2888
+#: debug.c:2908
#, c-format
msgid "Failed to restart debugger"
msgstr ""
-#: debug.c:2902
+#: debug.c:2922
msgid "Program already running. Restart from beginning (y/n)? "
msgstr ""
-#: debug.c:2906
+#: debug.c:2926
#, c-format
msgid "Program not restarted\n"
msgstr ""
-#: debug.c:2916
+#: debug.c:2936
#, c-format
msgid "error: cannot restart, operation not allowed\n"
msgstr ""
-#: debug.c:2922
+#: debug.c:2942
#, c-format
msgid "error (%s): cannot restart, ignoring rest of the commands\n"
msgstr ""
-#: debug.c:2930
+#: debug.c:2950
#, c-format
msgid "Starting program: \n"
msgstr "Uruchamianie programu: \n"
-#: debug.c:2939
+#: debug.c:2959
#, c-format
msgid "Program exited %s with exit value: %d\n"
msgstr ""
-#: debug.c:2955
+#: debug.c:2975
msgid "The program is running. Exit anyway (y/n)? "
msgstr ""
-#: debug.c:2990
+#: debug.c:3010
#, c-format
msgid "Not stopped at any breakpoint; argument ignored.\n"
msgstr ""
-#: debug.c:2995
+#: debug.c:3015
#, c-format
msgid "invalid breakpoint number %d."
msgstr ""
-#: debug.c:3000
+#: debug.c:3020
#, c-format
msgid "Will ignore next %ld crossings of breakpoint %d.\n"
msgstr ""
-#: debug.c:3187
+#: debug.c:3207
#, c-format
msgid "'finish' not meaningful in the outermost frame main()\n"
msgstr ""
-#: debug.c:3192
+#: debug.c:3212
#, c-format
msgid "Run till return from "
msgstr ""
-#: debug.c:3235
+#: debug.c:3255
#, c-format
msgid "'return' not meaningful in the outermost frame main()\n"
msgstr ""
-#: debug.c:3349
+#: debug.c:3369
#, c-format
msgid "Can't find specified location in function `%s'\n"
msgstr ""
-#: debug.c:3357
+#: debug.c:3377
#, c-format
msgid "invalid source line %d in file `%s'"
msgstr "nieprawidłowa linia źródłowa %d w pliku `%s'"
-#: debug.c:3372
+#: debug.c:3392
#, c-format
msgid "Can't find specified location %d in file `%s'\n"
msgstr ""
-#: debug.c:3404
+#: debug.c:3424
#, c-format
msgid "element not in array\n"
msgstr "brak elementu w tablicy\n"
-#: debug.c:3404
+#: debug.c:3424
#, c-format
msgid "untyped variable\n"
msgstr "zmienna bez typu\n"
-#: debug.c:3446
+#: debug.c:3466
#, c-format
msgid "Stopping in %s ...\n"
msgstr ""
-#: debug.c:3523
+#: debug.c:3543
#, c-format
msgid "'finish' not meaningful with non-local jump '%s'\n"
msgstr ""
-#: debug.c:3530
+#: debug.c:3550
#, c-format
msgid "'until' not meaningful with non-local jump '%s'\n"
msgstr ""
-#: debug.c:4165
+#: debug.c:4185
msgid "\t------[Enter] to continue or q [Enter] to quit------"
msgstr ""
-#: debug.c:4166
+#: debug.c:4186
msgid "q"
msgstr "q"
-#: debug.c:4986
+#: debug.c:5001
#, c-format
msgid "[\"%s\"] not in array `%s'"
msgstr "[\"%s\"] nie ma w tablicy `%s'"
-#: debug.c:5192
+#: debug.c:5207
#, c-format
msgid "sending output to stdout\n"
msgstr "wysyłanie wyjścia na stdout\n"
-#: debug.c:5232
+#: debug.c:5247
msgid "invalid number"
msgstr "nieprawidłowa liczba"
-#: debug.c:5366
+#: debug.c:5381
#, c-format
msgid "`%s' not allowed in current context; statement ignored"
msgstr "polecenie `%s' nie może być wywołane w tym kontekście; zignorowano"
-#: debug.c:5374
+#: debug.c:5389
msgid "`return' not allowed in current context; statement ignored"
msgstr ""
"instrukcja `return' nie może być wywołana w tym kontekście; zignorowano"
-#: debug.c:5575
+#: debug.c:5590
#, c-format
msgid "No symbol `%s' in current context"
msgstr "Brak symbolu `%s' w bieżącym kontekście"
-#: dfa.c:998 dfa.c:1001 dfa.c:1021 dfa.c:1031 dfa.c:1043 dfa.c:1094 dfa.c:1103
-#: dfa.c:1106 dfa.c:1111 dfa.c:1124 dfa.c:1192
+#: dfa.c:1118 dfa.c:1121 dfa.c:1142 dfa.c:1150 dfa.c:1162 dfa.c:1197
+#: dfa.c:1206 dfa.c:1209 dfa.c:1214 dfa.c:1228 dfa.c:1275
msgid "unbalanced ["
msgstr "[ nie do pary"
-#: dfa.c:1052
+#: dfa.c:1174
msgid "invalid character class"
msgstr "nieprawidłowa klasa znaku"
-#: dfa.c:1229
+#: dfa.c:1316
msgid "character class syntax is [[:space:]], not [:space:]"
msgstr "składnia klasy znaku to [[:space:]], a nie [:space:]"
-#: dfa.c:1281
+#: dfa.c:1366
msgid "unfinished \\ escape"
msgstr "niedokończona sekwencja ucieczki \\"
-#: dfa.c:1428 regcomp.c:161
+#: dfa.c:1513 regcomp.c:161
msgid "Invalid content of \\{\\}"
msgstr "Nieprawidłowa zawartość \\{\\}"
-#: dfa.c:1431 regcomp.c:176
+#: dfa.c:1516 regcomp.c:176
msgid "Regular expression too big"
msgstr "Wyrażenie regularne jest zbyt duże"
-#: dfa.c:1816
+#: dfa.c:1936
msgid "unbalanced ("
msgstr "( nie do pary"
-#: dfa.c:1943
+#: dfa.c:2062
msgid "no syntax specified"
msgstr "nie podano składni"
-#: dfa.c:1951
+#: dfa.c:2070
msgid "unbalanced )"
msgstr ") nie do pary"
@@ -1826,11 +1835,11 @@ msgstr "nieznany opcode %d"
msgid "opcode %s not an operator or keyword"
msgstr "opcode %s nie jest operatorem ani słowem kluczowym"
-#: eval.c:471
+#: eval.c:472
msgid "buffer overflow in genflags2str"
msgstr "przepełnienie bufora w genflags2str"
-#: eval.c:674
+#: eval.c:675
#, c-format
msgid ""
"\n"
@@ -1841,73 +1850,73 @@ msgstr ""
"\t# Stos Wywoławczy Funkcji:\n"
"\n"
-#: eval.c:703
+#: eval.c:704
msgid "`IGNORECASE' is a gawk extension"
msgstr "`IGNORECASE' jest rozszerzeniem gawk"
-#: eval.c:735
+#: eval.c:736
msgid "`BINMODE' is a gawk extension"
msgstr "`BINMODE' jest rozszerzeniem gawk"
-#: eval.c:793
+#: eval.c:794
#, c-format
msgid "BINMODE value `%s' is invalid, treated as 3"
msgstr "wartość BINMODE `%s' jest nieprawidłowa, przyjęto ją jako 3"
-#: eval.c:884
+#: eval.c:885
#, c-format
msgid "bad `%sFMT' specification `%s'"
msgstr "zła specyfikacja `%sFMT' `%s'"
-#: eval.c:968
+#: eval.c:969
msgid "turning off `--lint' due to assignment to `LINT'"
msgstr "wyłączenie `--lint' z powodu przypisania do `LINT'"
-#: eval.c:1146
+#: eval.c:1147
#, c-format
msgid "reference to uninitialized argument `%s'"
msgstr "odwołanie do niezainicjowanego argumentu `%s'"
-#: eval.c:1147
+#: eval.c:1148
#, c-format
msgid "reference to uninitialized variable `%s'"
msgstr "odwołanie do niezainicjowanej zmiennej `%s'"
-#: eval.c:1165
+#: eval.c:1166
msgid "attempt to field reference from non-numeric value"
msgstr "próba odwołania do pola poprzez nienumeryczną wartość"
-#: eval.c:1167
+#: eval.c:1168
msgid "attempt to field reference from null string"
msgstr "próba odwołania z zerowego łańcucha"
-#: eval.c:1175
+#: eval.c:1176
#, c-format
msgid "attempt to access field %ld"
msgstr "próba dostępu do pola %ld"
-#: eval.c:1184
+#: eval.c:1185
#, c-format
msgid "reference to uninitialized field `$%ld'"
msgstr "odwołanie do niezainicjowanego pola `$%ld'"
-#: eval.c:1271
+#: eval.c:1272
#, c-format
msgid "function `%s' called with more arguments than declared"
msgstr ""
"funkcja `%s' została wywołana z większą ilością argumentów niż zostało to "
"zadeklarowane"
-#: eval.c:1466
+#: eval.c:1473
#, c-format
msgid "unwind_stack: unexpected type `%s'"
msgstr "unwind_stack: niespodziewany typ `%s'"
-#: eval.c:1562
+#: eval.c:1569
msgid "division by zero attempted in `/='"
msgstr "próba dzielenia przez zero w `/='"
-#: eval.c:1569
+#: eval.c:1576
#, c-format
msgid "division by zero attempted in `%%='"
msgstr "próba dzielenia przez zero w `%%='"
@@ -1920,7 +1929,7 @@ msgstr "rozszerzenia nie sÄ… dozwolone w trybie piaskownicy"
msgid "-l / @load are gawk extensions"
msgstr "-l / @load sÄ… rozszerzeniami gawk"
-#: ext.c:95 ext.c:177
+#: ext.c:95
msgid "load_ext: received NULL lib_name"
msgstr "load_ext: otrzymano NULL lib_name"
@@ -1951,6 +1960,10 @@ msgstr ""
msgid "`extension' is a gawk extension"
msgstr "`extension' jest rozszerzeniem gawk"
+#: ext.c:177
+msgid "extension: received NULL lib_name"
+msgstr "extension: otrzymano NULL lib_name"
+
#: ext.c:180
#, c-format
msgid "extension: cannot open library `%s' (%s)"
@@ -1972,36 +1985,36 @@ msgstr "extension: biblioteka `%s': nie można wywołać funkcji `%s' (%s)"
msgid "make_builtin: missing function name"
msgstr "make_builtin: brakujÄ…ca nazwa funkcji"
-#: ext.c:238
+#: ext.c:236
#, c-format
msgid "make_builtin: can't redefine function `%s'"
msgstr "make_builtin: nie można zredefiniować funkcji `%s'"
-#: ext.c:242
+#: ext.c:240
#, c-format
msgid "make_builtin: function `%s' already defined"
msgstr "make_builtin: funkcja `%s' została już zdefiniowana"
-#: ext.c:246
+#: ext.c:244
#, c-format
msgid "make_builtin: function name `%s' previously defined"
msgstr "make_builtin: nazwa funkcji `%s' została zdefiniowana wcześniej"
-#: ext.c:248
+#: ext.c:246
#, c-format
msgid "make_builtin: can't use gawk built-in `%s' as function name"
msgstr "make_builtin: nie można użyć wbudowanej w gawk `%s' jako nazwy funkcji"
-#: ext.c:251 ext.c:304
+#: ext.c:249 ext.c:304
#, c-format
msgid "make_builtin: negative argument count for function `%s'"
msgstr "make_builtin: ujemny licznik argumentów dla funkcji `%s'"
-#: ext.c:278
+#: ext.c:276
msgid "extension: missing function name"
msgstr "extension: brakujÄ…ca nazwa funkcji"
-#: ext.c:283
+#: ext.c:279 ext.c:283
#, c-format
msgid "extension: illegal character `%c' in function name `%s'"
msgstr "extension: nieprawidłowy znak `%c' w nazwie funkcji `%s'"
@@ -2026,139 +2039,143 @@ msgstr "extension: nazwa funkcji `%s' została zdefiniowana wcześniej"
msgid "extension: can't use gawk built-in `%s' as function name"
msgstr "extension: nie można użyć wbudowanej w gawk `%s' jako nazwy funkcji"
-#: ext.c:374
+#: ext.c:375
#, c-format
msgid "function `%s' defined to take no more than %d argument(s)"
msgstr "funkcja `%s' zdefiniowana aby pobrać nie więcej niż %d argument(ów)"
-#: ext.c:377
+#: ext.c:378
#, c-format
msgid "function `%s': missing argument #%d"
msgstr "funkcja `%s': brakuje #%d argumentu"
-#: ext.c:394
+#: ext.c:395
#, c-format
msgid "function `%s': argument #%d: attempt to use scalar as an array"
msgstr "funkcja `%s': argument #%d: próba użycia skalaru jako tablicy"
-#: ext.c:398
+#: ext.c:399
#, c-format
msgid "function `%s': argument #%d: attempt to use array as a scalar"
msgstr "funkcja `%s': argument #%d: próba użycia tablicy jako skalaru"
-#: ext.c:412
+#: ext.c:413
msgid "dynamic loading of library not supported"
msgstr "dynamiczne Å‚adowanie biblioteki nie jest wspierane"
-#: extension/filefuncs.c:97
+#: extension/filefuncs.c:159
msgid "chdir: called with incorrect number of arguments, expecting 1"
msgstr "chdir: wywołano z nieprawidłową ilością argumentów, spodziewano się 1"
-#: extension/filefuncs.c:343
+#: extension/filefuncs.c:439
#, c-format
msgid "stat: unable to read symbolic link `%s'"
msgstr "stat: nie można odczytać dowiązania symbolicznego `%s'"
-#: extension/filefuncs.c:376
+#: extension/filefuncs.c:472
msgid "stat: called with wrong number of arguments"
msgstr "stat: wywołano z nieprawidłową ilością argumentów"
-#: extension/filefuncs.c:383
+#: extension/filefuncs.c:479
msgid "stat: bad parameters"
msgstr "stat: złe parametry"
-#: extension/filefuncs.c:437
+#: extension/filefuncs.c:533
#, c-format
msgid "fts init: could not create variable %s"
msgstr "fts init: nie można utworzyć zmiennej %s"
-#: extension/filefuncs.c:460
+#: extension/filefuncs.c:554
+msgid "fts is not supported on this system"
+msgstr "funkcja fts nie jest wspierana w tym systemie"
+
+#: extension/filefuncs.c:573
msgid "fill_stat_element: could not create array"
msgstr "fill_stat_element: nie można utworzyć tablicy"
-#: extension/filefuncs.c:469
+#: extension/filefuncs.c:582
msgid "fill_stat_element: could not set element"
msgstr "fill_stat_element: nie można ustawić elementu"
-#: extension/filefuncs.c:484
+#: extension/filefuncs.c:597
msgid "fill_path_element: could not set element"
msgstr "fill_path_element: nie można ustawić elementu"
-#: extension/filefuncs.c:500
+#: extension/filefuncs.c:613
msgid "fill_error_element: could not set element"
msgstr "fill_error_element: nie można ustawić elementu"
-#: extension/filefuncs.c:547 extension/filefuncs.c:594
+#: extension/filefuncs.c:660 extension/filefuncs.c:707
msgid "fts-process: could not create array"
msgstr "fts-process: nie można utworzyć tablicy"
-#: extension/filefuncs.c:557 extension/filefuncs.c:604
-#: extension/filefuncs.c:622
+#: extension/filefuncs.c:670 extension/filefuncs.c:717
+#: extension/filefuncs.c:735
msgid "fts-process: could not set element"
msgstr "fts-process: nie można ustawić elementu"
-#: extension/filefuncs.c:671
+#: extension/filefuncs.c:784
msgid "fts: called with incorrect number of arguments, expecting 3"
msgstr "fts: wywołano z nieprawidłową ilością argumentów, powinny być 3"
-#: extension/filefuncs.c:674
+#: extension/filefuncs.c:787
msgid "fts: bad first parameter"
msgstr "fts: nieprawidłowy pierwszy parametr"
-#: extension/filefuncs.c:680
+#: extension/filefuncs.c:793
msgid "fts: bad second parameter"
msgstr "fts: nieprawidłowy drugi parametr"
-#: extension/filefuncs.c:686
+#: extension/filefuncs.c:799
msgid "fts: bad third parameter"
msgstr "fts: nieprawidłowy trzeci parametr"
-#: extension/filefuncs.c:693
+#: extension/filefuncs.c:806
msgid "fts: could not flatten array\n"
msgstr "fts: nie można spłaszczyć tablicy\n"
-#: extension/filefuncs.c:711
+#: extension/filefuncs.c:824
msgid "fts: ignoring sneaky FTS_NOSTAT flag. nyah, nyah, nyah."
msgstr "fts: zignorowano flagÄ™ FTS_NOSTAT. nyah, nyah, nyah."
-#: extension/filefuncs.c:728
+#: extension/filefuncs.c:841
msgid "fts: clear_array() failed\n"
msgstr "fts: clear_array() nie powiodła się\n"
-#: extension/fnmatch.c:98
+#: extension/fnmatch.c:112
msgid "fnmatch: called with less than three arguments"
msgstr "fnmatch: wywołano z mniej niż trzema argumentami"
-#: extension/fnmatch.c:101
+#: extension/fnmatch.c:115
msgid "fnmatch: called with more than three arguments"
msgstr "fnmatch: wywołano z więcej niż trzema argumentami"
-#: extension/fnmatch.c:104
+#: extension/fnmatch.c:118
msgid "fnmatch: could not get first argument"
msgstr "fnmatch: nie można pobrać pierwszego argumentu"
-#: extension/fnmatch.c:109
+#: extension/fnmatch.c:123
msgid "fnmatch: could not get second argument"
msgstr "fnmatch: nie można pobrać drugiego argumentu"
-#: extension/fnmatch.c:114
+#: extension/fnmatch.c:128
msgid "fnmatch: could not get third argument"
msgstr "fnmatch: nie można pobrać trzeciego argumentu"
-#: extension/fnmatch.c:127
+#: extension/fnmatch.c:141
msgid "fnmatch is not implemented on this system\n"
msgstr "funkcja fnmatch nie została zaimplementowana w tym systemie\n"
-#: extension/fnmatch.c:159
+#: extension/fnmatch.c:173
msgid "fnmatch init: could not add FNM_NOMATCH variable"
msgstr "fnmatch init: nie można było dodać zmiennej FNM_NOMATCH"
-#: extension/fnmatch.c:169
+#: extension/fnmatch.c:183
#, c-format
msgid "fnmatch init: could not set array element %s"
msgstr "fnmatch init: nie można było ustawić elementu tablicy %s"
-#: extension/fnmatch.c:179
+#: extension/fnmatch.c:193
msgid "fnmatch init: could not install FNM array"
msgstr "fnmatch init: nie można było zainstalować tablicy FNM"
@@ -2182,90 +2199,90 @@ msgstr "wait: wywołano bez argumentów"
msgid "wait: called with too many arguments"
msgstr "wait: wywołana ze zbyt dużą ilością argumentów"
-#: extension/inplace.c:110
+#: extension/inplace.c:130
msgid "inplace_begin: in-place editing already active"
msgstr "inplace_begin: edycja w miejscu jest już aktywna"
-#: extension/inplace.c:113 extension/inplace.c:187
+#: extension/inplace.c:133 extension/inplace.c:207
#, c-format
msgid "inplace_begin: expects 2 arguments but called with %d"
msgstr "inplace_begin: spodziewano się 2 argumentów, a otrzymano %d"
-#: extension/inplace.c:116
+#: extension/inplace.c:136
msgid "inplace_begin: cannot retrieve 1st argument as a string filename"
msgstr "inplace_begin: nie można pobrać pierwszego argumentu jako nazwy pliku"
-#: extension/inplace.c:124
+#: extension/inplace.c:144
#, c-format
msgid "inplace_begin: disabling in-place editing for invalid FILENAME `%s'"
msgstr ""
"inplace_begin: wyłączenie edycji w miejscu dla nieprawidłowej nazwy pliku `"
"%s'"
-#: extension/inplace.c:131
+#: extension/inplace.c:151
#, c-format
msgid "inplace_begin: Cannot stat `%s' (%s)"
msgstr "inplace_begin: nie można sprawdzić `%s' (%s)"
-#: extension/inplace.c:138
+#: extension/inplace.c:158
#, c-format
msgid "inplace_begin: `%s' is not a regular file"
msgstr "inplace_begin: `%s' nie jest zwykłym plikiem"
-#: extension/inplace.c:149
+#: extension/inplace.c:169
#, c-format
msgid "inplace_begin: mkstemp(`%s') failed (%s)"
msgstr "inplace_begin: wywołanie mkstemp(`%s') nie powiodło się (%s)"
-#: extension/inplace.c:158
+#: extension/inplace.c:178
#, c-format
msgid "inplace_begin: chmod failed (%s)"
msgstr "inplace_begin: funkcja chmod nie powiodła się (%s)"
-#: extension/inplace.c:165
+#: extension/inplace.c:185
#, c-format
msgid "inplace_begin: dup(stdout) failed (%s)"
msgstr "inplace_begin: wywołanie dup(stdout) nie powiodło się (%s)"
-#: extension/inplace.c:168
+#: extension/inplace.c:188
#, c-format
msgid "inplace_begin: dup2(%d, stdout) failed (%s)"
msgstr "inplace_begin: wywołanie dup2(%d, stdout) nie powiodło się (%s)"
-#: extension/inplace.c:171
+#: extension/inplace.c:191
#, c-format
msgid "inplace_begin: close(%d) failed (%s)"
msgstr "inplace_begin: wywołanie close(%d) nie powiodło się (%s)"
-#: extension/inplace.c:190
+#: extension/inplace.c:210
msgid "inplace_end: cannot retrieve 1st argument as a string filename"
msgstr "inplace_end: nie można pobrać pierwszego argumentu jako nazwy pliku"
-#: extension/inplace.c:197
+#: extension/inplace.c:217
msgid "inplace_end: in-place editing not active"
msgstr "inplace_end: edycja w miejscu nie jest aktywna"
-#: extension/inplace.c:203
+#: extension/inplace.c:223
#, c-format
msgid "inplace_end: dup2(%d, stdout) failed (%s)"
msgstr "inplace_end: wywołanie dup2(%d, stdout) nie powiodło się (%s)"
-#: extension/inplace.c:206
+#: extension/inplace.c:226
#, c-format
msgid "inplace_end: close(%d) failed (%s)"
msgstr "inplace_end: wywołanie close(%d) nie powiodło się (%s)"
-#: extension/inplace.c:210
+#: extension/inplace.c:230
#, c-format
msgid "inplace_end: fsetpos(stdout) failed (%s)"
msgstr "inplace_end: wywołanie fsetpos(stdout) nie powiodło się (%s)"
-#: extension/inplace.c:223
+#: extension/inplace.c:243
#, c-format
msgid "inplace_end: link(`%s', `%s') failed (%s)"
msgstr "inplace_end: wywołanie link(`%s', `%s') nie powiodło się (%s)"
-#: extension/inplace.c:229
+#: extension/inplace.c:253
#, c-format
msgid "inplace_end: rename(`%s', `%s') failed (%s)"
msgstr "inplace_end: wywołanie rename(`%s', `%s') nie powiodło się (%s)"
@@ -2294,173 +2311,173 @@ msgstr "chr: wywołano bez argumentów"
msgid "chr: called with inappropriate argument(s)"
msgstr "chr: wywołano z nieprawidłowymi argumentami"
-#: extension/readdir.c:203
+#: extension/readdir.c:281
#, c-format
msgid "dir_take_control_of: opendir/fdopendir failed: %s"
msgstr "dir_take_control_of: wywołanie opendir/fdopendir nie powiodło się: %s"
-#: extension/readfile.c:84
+#: extension/readfile.c:113
msgid "readfile: called with too many arguments"
msgstr "readfile: wywołana ze zbyt dużą ilością argumentów"
-#: extension/readfile.c:118
+#: extension/readfile.c:137
msgid "readfile: called with no arguments"
msgstr "readfile: wywołano bez argumentów"
-#: extension/rwarray.c:120
+#: extension/rwarray.c:124
msgid "writea: called with too many arguments"
msgstr "writea: wywołana ze zbyt dużą ilością argumentów"
-#: extension/rwarray.c:127
+#: extension/rwarray.c:131
#, c-format
msgid "do_writea: argument 0 is not a string\n"
msgstr "do_writea: argument 0 nie jest tekstem\n"
-#: extension/rwarray.c:133
+#: extension/rwarray.c:137
#, c-format
msgid "do_writea: argument 1 is not an array\n"
msgstr "do_writea: argument 1 nie jest tablicÄ…\n"
-#: extension/rwarray.c:180
+#: extension/rwarray.c:184
#, c-format
msgid "write_array: could not flatten array\n"
msgstr "write_array: nie można spłaszczyć tablicy\n"
-#: extension/rwarray.c:194
+#: extension/rwarray.c:198
#, c-format
msgid "write_array: could not release flattened array\n"
msgstr "write_array: nie można było zwolnić spłaszczonej tablicy\n"
-#: extension/rwarray.c:276
+#: extension/rwarray.c:280
msgid "reada: called with too many arguments"
msgstr "reada: wywołana ze zbyt dużą ilością argumentów"
-#: extension/rwarray.c:283
+#: extension/rwarray.c:287
#, c-format
msgid "do_reada: argument 0 is not a string\n"
msgstr "do_reada: argument 0 nie jest tekstem\n"
-#: extension/rwarray.c:289
+#: extension/rwarray.c:293
#, c-format
msgid "do_reada: argument 1 is not an array\n"
msgstr "do_reada: argument 1 nie jest tablicÄ…\n"
-#: extension/rwarray.c:333
+#: extension/rwarray.c:337
#, c-format
msgid "do_reada: clear_array failed\n"
msgstr "do_reada: clear_array nie powiodła się\n"
-#: extension/rwarray.c:370
+#: extension/rwarray.c:374
#, c-format
msgid "read_array: set_array_element failed\n"
msgstr "read_array: set_array_element nie powiodła się\n"
-#: extension/time.c:81
+#: extension/time.c:113
msgid "gettimeofday: ignoring arguments"
msgstr "gettimeofday: zignorowano argumenty"
-#: extension/time.c:112
+#: extension/time.c:144
msgid "gettimeofday: not supported on this platform"
msgstr "gettimeofday: funkcja nie jest wspierana na tej platformie"
-#: extension/time.c:133
+#: extension/time.c:165
msgid "sleep: called with too many arguments"
msgstr "sleep: wywołana ze zbyt dużą ilością argumentów"
-#: extension/time.c:136
+#: extension/time.c:168
msgid "sleep: missing required numeric argument"
msgstr "sleep: brakuje wymaganego argumentu numerycznego"
-#: extension/time.c:142
+#: extension/time.c:174
msgid "sleep: argument is negative"
msgstr "sleep: argument jest ujemny"
-#: extension/time.c:176
+#: extension/time.c:208
msgid "sleep: not supported on this platform"
msgstr "sleep: funkcja nie jest wspierana na tej platformie"
-#: field.c:339
+#: field.c:345
msgid "NF set to negative value"
msgstr "NF ustawiony na wartość ujemną"
-#: field.c:964 field.c:971 field.c:975
+#: field.c:971 field.c:978 field.c:982
msgid "split: fourth argument is a gawk extension"
msgstr "split: czwarty argument jest rozszerzeniem gawk"
-#: field.c:968
+#: field.c:975
msgid "split: fourth argument is not an array"
msgstr "split: czwarty argument nie jest tablicÄ…"
-#: field.c:982
+#: field.c:989
msgid "split: second argument is not an array"
msgstr "split: drugi argument nie jest tablicÄ…"
-#: field.c:986
+#: field.c:993
msgid "split: cannot use the same array for second and fourth args"
msgstr ""
"split: nie można użyć tej samej tablicy dla drugiego i czwartego argumentu"
-#: field.c:991
+#: field.c:998
msgid "split: cannot use a subarray of second arg for fourth arg"
msgstr ""
"split: nie można użyć podtablicy drugiego argumentu dla czwartego argumentu"
-#: field.c:994
+#: field.c:1001
msgid "split: cannot use a subarray of fourth arg for second arg"
msgstr ""
"split: nie można użyć podtablicy czwartego argumentu dla drugiego argumentu"
-#: field.c:1023
+#: field.c:1032
msgid "split: null string for third arg is a gawk extension"
msgstr "split: zerowy łańcuch dla trzeciego argumentu jest rozszerzeniem gawk"
-#: field.c:1063
+#: field.c:1072
msgid "patsplit: fourth argument is not an array"
msgstr "patsplit: czwarty argument nie jest tablicÄ…"
-#: field.c:1068
+#: field.c:1077
msgid "patsplit: second argument is not an array"
msgstr "patsplit: drugi argument nie jest tablicÄ…"
-#: field.c:1074
+#: field.c:1083
msgid "patsplit: third argument must be non-null"
msgstr "patsplit: trzeci argument nie może być pusty"
-#: field.c:1078
+#: field.c:1087
msgid "patsplit: cannot use the same array for second and fourth args"
msgstr ""
"patsplit: nie można użyć tej samej tablicy dla drugiego i czwartego argumentu"
-#: field.c:1083
+#: field.c:1092
msgid "patsplit: cannot use a subarray of second arg for fourth arg"
msgstr ""
"patsplit: nie można użyć podtablicy drugiego argumentu dla czwartego "
"argumentu"
-#: field.c:1086
+#: field.c:1095
msgid "patsplit: cannot use a subarray of fourth arg for second arg"
msgstr ""
"patsplit: nie można użyć podtablicy czwartego argumentu dla drugiego "
"argumentu"
-#: field.c:1124
+#: field.c:1133
msgid "`FIELDWIDTHS' is a gawk extension"
msgstr "`FIELDWIDTHS' jest rozszerzeniem gawk"
-#: field.c:1188
+#: field.c:1197
#, c-format
msgid "invalid FIELDWIDTHS value, near `%s'"
msgstr "nieprawidłowa wartość FIELDWIDTHS, w pobliżu `%s'"
-#: field.c:1261
+#: field.c:1270
msgid "null string for `FS' is a gawk extension"
msgstr "zerowy łańcuch dla `FS' jest rozszerzeniem gawk"
-#: field.c:1265
+#: field.c:1274
msgid "old awk does not support regexps as value of `FS'"
msgstr "stary awk nie wspiera wyrażeń regularnych jako wartości `FS'"
-#: field.c:1384
+#: field.c:1393
msgid "`FPAT' is a gawk extension"
msgstr "`FPAT' jest rozszerzeniem gawk"
@@ -2476,391 +2493,391 @@ msgstr "node_to_awk_value: otrzymano null node"
msgid "node_to_awk_value: received null val"
msgstr "node_to_awk_value: otrzymano null val"
-#: gawkapi.c:808
+#: gawkapi.c:807
msgid "remove_element: received null array"
msgstr "remove_element: otrzymano tablicÄ™ null"
-#: gawkapi.c:811
+#: gawkapi.c:810
msgid "remove_element: received null subscript"
msgstr "remove_element: otrzymano null subscript"
-#: gawkapi.c:943
+#: gawkapi.c:947
#, c-format
msgid "api_flatten_array: could not convert index %d\n"
msgstr "api_flatten_array: nie można było skonwertować indeksu %d\n"
-#: gawkapi.c:948
+#: gawkapi.c:952
#, c-format
msgid "api_flatten_array: could not convert value %d\n"
msgstr "api_flatten_array: nie można było skonwertować wartości %d\n"
-#: getopt.c:603 getopt.c:632
+#: getopt.c:604 getopt.c:633
#, c-format
msgid "%s: option '%s' is ambiguous; possibilities:"
msgstr "%s: opcja '%s' jest niejednoznaczna; możliwości:"
-#: getopt.c:678 getopt.c:682
+#: getopt.c:679 getopt.c:683
#, c-format
msgid "%s: option '--%s' doesn't allow an argument\n"
msgstr "%s: opcja '--%s' nie może mieć argumentów\n"
-#: getopt.c:691 getopt.c:696
+#: getopt.c:692 getopt.c:697
#, c-format
msgid "%s: option '%c%s' doesn't allow an argument\n"
msgstr "%s: opcja '%c%s' nie może mieć argumentów\n"
-#: getopt.c:739 getopt.c:758
+#: getopt.c:740 getopt.c:759
#, c-format
msgid "%s: option '--%s' requires an argument\n"
msgstr "%s: opcja '--%s' wymaga argumentu\n"
-#: getopt.c:796 getopt.c:799
+#: getopt.c:797 getopt.c:800
#, c-format
msgid "%s: unrecognized option '--%s'\n"
msgstr "%s: nieznana opcja '--%s'\n"
-#: getopt.c:807 getopt.c:810
+#: getopt.c:808 getopt.c:811
#, c-format
msgid "%s: unrecognized option '%c%s'\n"
msgstr "%s: nieznana opcja '%c%s'\n"
-#: getopt.c:859 getopt.c:862
+#: getopt.c:860 getopt.c:863
#, c-format
msgid "%s: invalid option -- '%c'\n"
msgstr "%s: błędna opcja -- '%c'\n"
-#: getopt.c:915 getopt.c:932 getopt.c:1142 getopt.c:1160
+#: getopt.c:916 getopt.c:933 getopt.c:1143 getopt.c:1161
#, c-format
msgid "%s: option requires an argument -- '%c'\n"
msgstr "%s: opcja wymaga argumentu -- '%c'\n"
-#: getopt.c:988 getopt.c:1004
+#: getopt.c:989 getopt.c:1005
#, c-format
msgid "%s: option '-W %s' is ambiguous\n"
msgstr "%s: opcja '-W %s' jest niejednoznaczna\n"
-#: getopt.c:1028 getopt.c:1046
+#: getopt.c:1029 getopt.c:1047
#, c-format
msgid "%s: option '-W %s' doesn't allow an argument\n"
msgstr "%s: opcja '-W %s' nie może mieć argumentów\n"
-#: getopt.c:1067 getopt.c:1085
+#: getopt.c:1068 getopt.c:1086
#, c-format
msgid "%s: option '-W %s' requires an argument\n"
msgstr "%s: opcja '-W %s' wymaga argumentu\n"
-#: io.c:347
+#: io.c:392
#, c-format
msgid "command line argument `%s' is a directory: skipped"
msgstr "argument linii poleceń `%s' jest katalogiem: pominięto"
-#: io.c:350 io.c:463
+#: io.c:395 io.c:513
#, c-format
msgid "cannot open file `%s' for reading (%s)"
msgstr "nie można otworzyć pliku `%s' do czytania (%s)"
-#: io.c:590
+#: io.c:640
#, c-format
msgid "close of fd %d (`%s') failed (%s)"
msgstr "zamknięcie fd %d (`%s') nie powiodło się (%s)"
-#: io.c:666
+#: io.c:716
msgid "redirection not allowed in sandbox mode"
msgstr "przekierowanie nie jest dozwolone w trybie piaskownicy"
-#: io.c:700
+#: io.c:750
#, c-format
msgid "expression in `%s' redirection only has numeric value"
msgstr "wyrażenie w przekierowaniu `%s' ma tylko wartość numeryczną"
-#: io.c:706
+#: io.c:756
#, c-format
msgid "expression for `%s' redirection has null string value"
msgstr "wyrażenie dla przekierowania `%s' ma zerową wartość łańcucha"
-#: io.c:711
+#: io.c:761
#, c-format
msgid "filename `%s' for `%s' redirection may be result of logical expression"
msgstr ""
"nazwa pliku `%s' dla przekierowania `%s' może być rezultatem logicznego "
"wyrażenia"
-#: io.c:754
+#: io.c:809
#, c-format
msgid "unnecessary mixing of `>' and `>>' for file `%.*s'"
msgstr "niepotrzebne mieszanie `>' i `>>' dla pliku `%.*s'"
-#: io.c:808
+#: io.c:863
#, c-format
msgid "can't open pipe `%s' for output (%s)"
msgstr "nie można otworzyć potoku `%s' jako wyjścia (%s)"
-#: io.c:818
+#: io.c:873
#, c-format
msgid "can't open pipe `%s' for input (%s)"
msgstr "nie można otworzyć potoku `%s' jako wejścia (%s)"
-#: io.c:849
+#: io.c:904
#, c-format
msgid "can't open two way pipe `%s' for input/output (%s)"
msgstr ""
"nie można otworzyć dwukierunkowego potoku `%s' jako wejścia/wyjścia (%s)"
-#: io.c:928
+#: io.c:986
#, c-format
msgid "can't redirect from `%s' (%s)"
msgstr "nie można przekierować z `%s' (%s)"
-#: io.c:931
+#: io.c:989
#, c-format
msgid "can't redirect to `%s' (%s)"
msgstr "nie można przekierować do `%s' (%s)"
-#: io.c:982
+#: io.c:1040
msgid ""
"reached system limit for open files: starting to multiplex file descriptors"
msgstr ""
"osiągnięto systemowy limit otwartych plików: rozpoczęcie multipleksowania "
"deskryptorów plików"
-#: io.c:998
+#: io.c:1056
#, c-format
msgid "close of `%s' failed (%s)."
msgstr "zamknięcie `%s' nie powiodło się (%s)."
-#: io.c:1006
+#: io.c:1064
msgid "too many pipes or input files open"
msgstr "zbyt dużo otwartych potoków lub plików wejściowych"
-#: io.c:1028
+#: io.c:1086
msgid "close: second argument must be `to' or `from'"
msgstr "close: drugim argumentem musi być `to' lub `from'"
-#: io.c:1045
+#: io.c:1103
#, c-format
msgid "close: `%.*s' is not an open file, pipe or co-process"
msgstr ""
"close: `%.*s' nie jest ani otwartym plikiem, ani potokiem, ani procesem"
-#: io.c:1050
+#: io.c:1108
msgid "close of redirection that was never opened"
msgstr "zamknięcie przekierowania, które nigdy nie zostało otwarte"
-#: io.c:1147
+#: io.c:1205
#, c-format
msgid "close: redirection `%s' not opened with `|&', second argument ignored"
msgstr ""
"close: przekierowanie `%s' nie zostało otwarte z `|&', drugi argument "
"zignorowany"
-#: io.c:1164
+#: io.c:1222
#, c-format
msgid "failure status (%d) on pipe close of `%s' (%s)"
msgstr "status awarii (%d) podczas zamykania potoku `%s' (%s)"
-#: io.c:1167
+#: io.c:1225
#, c-format
msgid "failure status (%d) on file close of `%s' (%s)"
msgstr "status awarii (%d) podczas zamykania pliku `%s' (%s)"
-#: io.c:1187
+#: io.c:1245
#, c-format
msgid "no explicit close of socket `%s' provided"
msgstr "brak jawnego zamknięcia gniazdka `%s'"
-#: io.c:1190
+#: io.c:1248
#, c-format
msgid "no explicit close of co-process `%s' provided"
msgstr "brak jawnego zamknięcia procesu pomocniczego `%s'"
-#: io.c:1193
+#: io.c:1251
#, c-format
msgid "no explicit close of pipe `%s' provided"
msgstr "brak jawnego zamknięcia potoku `%s'"
-#: io.c:1196
+#: io.c:1254
#, c-format
msgid "no explicit close of file `%s' provided"
msgstr "brak jawnego zamknięcia pliku `%s'"
-#: io.c:1224 io.c:1279 main.c:842 main.c:879
+#: io.c:1284 io.c:1342 main.c:864 main.c:906
#, c-format
msgid "error writing standard output (%s)"
msgstr "błąd podczas zapisu na standardowe wyjście (%s)"
-#: io.c:1228 io.c:1284
+#: io.c:1289 io.c:1348 main.c:866
#, c-format
msgid "error writing standard error (%s)"
msgstr "błąd podczas zapisu na standardowe wyjście diagnostyczne (%s)"
-#: io.c:1236
+#: io.c:1297
#, c-format
msgid "pipe flush of `%s' failed (%s)."
msgstr "opróżnienie potoku `%s' nie powiodło się (%s)."
-#: io.c:1239
+#: io.c:1300
#, c-format
msgid "co-process flush of pipe to `%s' failed (%s)."
msgstr ""
"opróżnienie potoku do `%s' przez proces pomocniczy nie powiodło się (%s)."
-#: io.c:1242
+#: io.c:1303
#, c-format
msgid "file flush of `%s' failed (%s)."
msgstr "opróżnienie pliku `%s' nie powiodło się (%s)."
-#: io.c:1356
+#: io.c:1420
#, c-format
msgid "local port %s invalid in `/inet'"
msgstr "nieprawidłowy lokalny port %s w `/inet'"
-#: io.c:1374
+#: io.c:1438
#, c-format
msgid "remote host and port information (%s, %s) invalid"
msgstr "informacje o zdalnym hoście i porcie są nieprawidłowe (%s, %s)"
-#: io.c:1526
+#: io.c:1590
#, c-format
msgid "no (known) protocol supplied in special filename `%s'"
msgstr "nie dostarczono (znanego) protokołu w specjalnym pliku `%s'"
-#: io.c:1540
+#: io.c:1604
#, c-format
msgid "special file name `%s' is incomplete"
msgstr "specjalna nazwa pliku `%s' jest niekompletna"
-#: io.c:1557
+#: io.c:1621
msgid "must supply a remote hostname to `/inet'"
msgstr "należy dostarczyć nazwę zdalnego hosta do `/inet'"
-#: io.c:1575
+#: io.c:1639
msgid "must supply a remote port to `/inet'"
msgstr "należy dostarczyć numer zdalnego portu do `/inet'"
-#: io.c:1621
+#: io.c:1685
msgid "TCP/IP communications are not supported"
msgstr "Komunikacja TCP/IP nie jest wspierana"
-#: io.c:1796
+#: io.c:1867
#, c-format
msgid "could not open `%s', mode `%s'"
msgstr "nie można otworzyć `%s', tryb `%s'"
-#: io.c:1846
+#: io.c:1917
#, c-format
msgid "close of master pty failed (%s)"
msgstr "zamknięcie nadrzędnego pty nie powiodło się (%s)"
-#: io.c:1848 io.c:2024 io.c:2194
+#: io.c:1919 io.c:2105 io.c:2305
#, c-format
msgid "close of stdout in child failed (%s)"
msgstr ""
"zamknięcie standardowego wyjścia w procesie potomnym nie powiodło się (%s)"
-#: io.c:1851
+#: io.c:1922
#, c-format
msgid "moving slave pty to stdout in child failed (dup: %s)"
msgstr ""
"przesunięcie podległego pty na standardowe wyjście w procesie potomnym nie "
"powiodło się (dup: %s)"
-#: io.c:1853 io.c:2029
+#: io.c:1924 io.c:2110
#, c-format
msgid "close of stdin in child failed (%s)"
msgstr ""
"zamknięcie standardowego wejścia w procesie potomnym nie powiodło się (%s)"
-#: io.c:1856
+#: io.c:1927
#, c-format
msgid "moving slave pty to stdin in child failed (dup: %s)"
msgstr ""
"przesunięcie podległego pty na standardowe wejście w procesie potomnym nie "
"powiodło się (dup: %s)"
-#: io.c:1858 io.c:1879
+#: io.c:1929 io.c:1951
#, c-format
msgid "close of slave pty failed (%s)"
msgstr "zamknięcie podległego pty nie powiodło się (%s)"
-#: io.c:1965 io.c:2027 io.c:2171 io.c:2197
+#: io.c:2040 io.c:2108 io.c:2276 io.c:2308
#, c-format
msgid "moving pipe to stdout in child failed (dup: %s)"
msgstr ""
"przesunięcie potoku na standardowe wyjście w procesie potomnym nie powiodło "
"siÄ™ (dup: %s)"
-#: io.c:1972 io.c:2032
+#: io.c:2047 io.c:2113
#, c-format
msgid "moving pipe to stdin in child failed (dup: %s)"
msgstr ""
"przesunięcie potoku na standardowe wejście w procesie potomnym nie powiodło "
"siÄ™ (dup: %s)"
-#: io.c:1992 io.c:2187
+#: io.c:2073 io.c:2298
msgid "restoring stdout in parent process failed\n"
msgstr ""
"odzyskanie standardowego wyjścia w procesie potomnym nie powiodło się\n"
-#: io.c:2000
+#: io.c:2081
msgid "restoring stdin in parent process failed\n"
msgstr ""
"odzyskanie standardowego wejścia w procesie potomnym nie powiodło się\n"
-#: io.c:2035 io.c:2199 io.c:2213
+#: io.c:2116 io.c:2310 io.c:2324
#, c-format
msgid "close of pipe failed (%s)"
msgstr "zamknięcie potoku nie powiodło się (%s)"
-#: io.c:2089
+#: io.c:2174
msgid "`|&' not supported"
msgstr "`|&' nie jest wspierany"
-#: io.c:2156
+#: io.c:2261
#, c-format
msgid "cannot open pipe `%s' (%s)"
msgstr "nie można otworzyć potoku `%s' (%s)"
-#: io.c:2207
+#: io.c:2318
#, c-format
msgid "cannot create child process for `%s' (fork: %s)"
msgstr "nie można utworzyć procesu potomnego dla `%s' (fork: %s)"
-#: io.c:2667
+#: io.c:2790
msgid "register_input_parser: received NULL pointer"
msgstr "register_input_parser: otrzymano wskaźnik NULL"
-#: io.c:2695
+#: io.c:2818
#, c-format
msgid "input parser `%s' conflicts with previously installed input parser `%s'"
msgstr ""
"parser wejścia `%s' konfliktuje z poprzednio zainstalowanym parserem `%s'"
-#: io.c:2702
+#: io.c:2825
#, c-format
msgid "input parser `%s' failed to open `%s'"
msgstr "parser wejścia `%s': nie powiodło się otwarcie `%s'"
-#: io.c:2722
+#: io.c:2845
msgid "register_output_wrapper: received NULL pointer"
msgstr "register_output_wrapper: otrzymano wskaźnik NULL"
-#: io.c:2750
+#: io.c:2873
#, c-format
msgid ""
"output wrapper `%s' conflicts with previously installed output wrapper `%s'"
msgstr ""
"otoczka wyjścia `%s' konfliktuje z poprzednio zainstalowaną otoczką `%s'"
-#: io.c:2757
+#: io.c:2880
#, c-format
msgid "output wrapper `%s' failed to open `%s'"
msgstr "otoczka wyjścia `%s': nie powiodło się otwarcie `%s'"
-#: io.c:2778
+#: io.c:2901
msgid "register_output_processor: received NULL pointer"
msgstr "register_output_processor: otrzymano wskaźnik NULL"
-#: io.c:2807
+#: io.c:2930
#, c-format
msgid ""
"two-way processor `%s' conflicts with previously installed two-way processor "
@@ -2869,212 +2886,212 @@ msgstr ""
"dwukierunkowy procesor `%s' konfliktuje z poprzednio zainstalowanym "
"procesorem `%s'"
-#: io.c:2816
+#: io.c:2939
#, c-format
msgid "two way processor `%s' failed to open `%s'"
msgstr "dwukierunkowy procesor `%s' zawiódł w otwarciu `%s'"
-#: io.c:2923
+#: io.c:3064
#, c-format
msgid "data file `%s' is empty"
msgstr "plik danych `%s' jest pusty"
-#: io.c:2965 io.c:2973
+#: io.c:3106 io.c:3114
msgid "could not allocate more input memory"
msgstr "nie można zarezerwować więcej pamięci wejściowej"
-#: io.c:3539
+#: io.c:3682
msgid "multicharacter value of `RS' is a gawk extension"
msgstr "wieloznakowa wartość `RS' jest rozszerzeniem gawk"
-#: io.c:3628
+#: io.c:3771
msgid "IPv6 communication is not supported"
msgstr "Komunikacja IPv6 nie jest wspierana"
-#: main.c:388
+#: main.c:405
msgid "empty argument to `-e/--source' ignored"
msgstr "pusty argument dla opcji `-e/--source' został zignorowany"
-#: main.c:478
+#: main.c:495
#, c-format
msgid "%s: option `-W %s' unrecognized, ignored\n"
msgstr "%s: opcja `-W %s' nierozpoznana i zignorowana\n"
-#: main.c:524
+#: main.c:541
#, c-format
msgid "%s: option requires an argument -- %c\n"
msgstr "%s: opcja musi mieć argument -- %c\n"
-#: main.c:545
+#: main.c:562
msgid "environment variable `POSIXLY_CORRECT' set: turning on `--posix'"
msgstr ""
"zmienna środowiskowa `POSIXLY_CORRECT' ustawiona: `--posix' został włączony"
-#: main.c:551
+#: main.c:568
msgid "`--posix' overrides `--traditional'"
msgstr "opcja `--posix' zostanie użyta nad `--traditional'"
-#: main.c:562
+#: main.c:579
msgid "`--posix'/`--traditional' overrides `--non-decimal-data'"
msgstr "`--posix'/`--traditional' użyte nad opcją `--non-decimal-data'"
-#: main.c:566
+#: main.c:583
#, c-format
msgid "running %s setuid root may be a security problem"
msgstr ""
"uruchamianie %s setuid root może być problemem pod względem bezpieczeństwa"
-#: main.c:571
+#: main.c:588
msgid "`--posix' overrides `--characters-as-bytes'"
msgstr "opcja `--posix' zostanie użyta nad `--characters-as-bytes'"
-#: main.c:630
+#: main.c:647
#, c-format
msgid "can't set binary mode on stdin (%s)"
msgstr "nie można ustawić trybu binarnego na standardowym wejściu (%s)"
-#: main.c:633
+#: main.c:650
#, c-format
msgid "can't set binary mode on stdout (%s)"
msgstr "nie można ustawić trybu binarnego na standardowym wyjściu (%s)"
-#: main.c:635
+#: main.c:652
#, c-format
msgid "can't set binary mode on stderr (%s)"
msgstr "nie można ustawić trybu binarnego na wyjściu diagnostycznym (%s)"
-#: main.c:693
+#: main.c:710
msgid "no program text at all!"
msgstr "brak tekstu programu!"
-#: main.c:779
+#: main.c:799
#, c-format
msgid "Usage: %s [POSIX or GNU style options] -f progfile [--] file ...\n"
msgstr ""
"Użycie: %s [styl opcji POSIX lub GNU] -f plik_z_programem [--] plik ...\n"
-#: main.c:781
+#: main.c:801
#, c-format
msgid "Usage: %s [POSIX or GNU style options] [--] %cprogram%c file ...\n"
msgstr "Użycie: %s [styl opcji POSIX lub GNU] [--] %cprogram%c plik ...\n"
-#: main.c:786
+#: main.c:806
msgid "POSIX options:\t\tGNU long options: (standard)\n"
msgstr "Opcje POSIX:\t\tDÅ‚ugie opcje GNU (standard):\n"
-#: main.c:787
+#: main.c:807
msgid "\t-f progfile\t\t--file=progfile\n"
msgstr "\t-f program\t\t--file=program\n"
-#: main.c:788
+#: main.c:808
msgid "\t-F fs\t\t\t--field-separator=fs\n"
msgstr "\t-F fs\t\t\t--field-separator=fs\n"
-#: main.c:789
+#: main.c:809
msgid "\t-v var=val\t\t--assign=var=val\n"
msgstr "\t-v zmienna=wartość\t--assign=zmienna=wartość\n"
-#: main.c:790
+#: main.c:810
msgid "Short options:\t\tGNU long options: (extensions)\n"
msgstr "Krótkie opcje:\t\tDługie opcje GNU: (rozszerzenia)\n"
-#: main.c:791
+#: main.c:811
msgid "\t-b\t\t\t--characters-as-bytes\n"
msgstr "\t-b\t\t\t--characters-as-bytes\n"
-#: main.c:792
+#: main.c:812
msgid "\t-c\t\t\t--traditional\n"
msgstr "\t-c\t\t\t--traditional\n"
-#: main.c:793
+#: main.c:813
msgid "\t-C\t\t\t--copyright\n"
msgstr "\t-C\t\t\t--copyright\n"
-#: main.c:794
+#: main.c:814
msgid "\t-d[file]\t\t--dump-variables[=file]\n"
msgstr "\t-d[plik]\t\t--dump-variables[=plik]\n"
-#: main.c:795
+#: main.c:815
msgid "\t-D[file]\t\t--debug[=file]\n"
msgstr "\t-D[plik]\t\t--debug[=plik]\n"
-#: main.c:796
+#: main.c:816
msgid "\t-e 'program-text'\t--source='program-text'\n"
msgstr "\t-e 'tekst-programu'\t--source='tekst-programu'\n"
-#: main.c:797
+#: main.c:817
msgid "\t-E file\t\t\t--exec=file\n"
msgstr "\t-E plik\t\t\t--exec=plik\n"
-#: main.c:798
+#: main.c:818
msgid "\t-g\t\t\t--gen-pot\n"
msgstr "\t-g\t\t\t--gen-pot\n"
-#: main.c:799
+#: main.c:819
msgid "\t-h\t\t\t--help\n"
msgstr "\t-h\t\t\t--help\n"
-#: main.c:800
+#: main.c:820
msgid "\t-i includefile\t\t--include=includefile\n"
msgstr "\t-i plikinclude\t\t--include=plikinclude\n"
-#: main.c:801
+#: main.c:821
msgid "\t-l library\t\t--load=library\n"
msgstr "\t-l biblioteka\t\t--load=biblioteka\n"
-#: main.c:802
+#: main.c:822
msgid "\t-L [fatal]\t\t--lint[=fatal]\n"
msgstr "\t-L [fatal]\t\t--lint[=fatal]\n"
-#: main.c:803
+#: main.c:823
msgid "\t-n\t\t\t--non-decimal-data\n"
msgstr "\t-n\t\t\t--non-decimal-data\n"
-#: main.c:804
+#: main.c:824
msgid "\t-M\t\t\t--bignum\n"
msgstr "\t-M\t\t\t--bignum\n"
-#: main.c:805
+#: main.c:825
msgid "\t-N\t\t\t--use-lc-numeric\n"
msgstr "\t-N\t\t\t--use-lc-numeric\n"
-#: main.c:806
+#: main.c:826
msgid "\t-o[file]\t\t--pretty-print[=file]\n"
msgstr "\t-o[plik]\t\t--pretty-print[=plik]\n"
-#: main.c:807
+#: main.c:827
msgid "\t-O\t\t\t--optimize\n"
msgstr "\t-O\t\t\t--optimize\n"
-#: main.c:808
+#: main.c:828
msgid "\t-p[file]\t\t--profile[=file]\n"
msgstr "\t-p[plik]\t\t--profile[=plik]\n"
-#: main.c:809
+#: main.c:829
msgid "\t-P\t\t\t--posix\n"
msgstr "\t-P\t\t\t--posix\n"
-#: main.c:810
+#: main.c:830
msgid "\t-r\t\t\t--re-interval\n"
msgstr "\t-r\t\t\t--re-interval\n"
-#: main.c:811
+#: main.c:831
msgid "\t-S\t\t\t--sandbox\n"
msgstr "\t-S\t\t\t--sandbox\n"
-#: main.c:812
+#: main.c:832
msgid "\t-t\t\t\t--lint-old\n"
msgstr "\t-t\t\t\t--lint-old\n"
-#: main.c:813
+#: main.c:833
msgid "\t-V\t\t\t--version\n"
msgstr "\t-V\t\t\t--version\n"
-#: main.c:815
+#: main.c:835
msgid "\t-W nostalgia\t\t--nostalgia\n"
msgstr "\t-W nostalgia\t\t--nostalgia\n"
-#: main.c:818
+#: main.c:838
msgid "\t-Y\t\t--parsedebug\n"
msgstr "\t-Y\t\t--parsedebug\n"
@@ -3083,7 +3100,7 @@ msgstr "\t-Y\t\t--parsedebug\n"
#. for this application. Please add _another line_ with the
#. address for translation bugs.
#. no-wrap
-#: main.c:827
+#: main.c:847
msgid ""
"\n"
"To report bugs, see node `Bugs' in `gawk.info', which is\n"
@@ -3096,7 +3113,7 @@ msgstr ""
"dokumentacji.\n"
"\n"
-#: main.c:831
+#: main.c:851
msgid ""
"gawk is a pattern scanning and processing language.\n"
"By default it reads standard input and writes standard output.\n"
@@ -3106,7 +3123,7 @@ msgstr ""
"Program domyślnie czyta standardowe wejście i zapisuje standardowe wyjście.\n"
"\n"
-#: main.c:835
+#: main.c:855
msgid ""
"Examples:\n"
"\tgawk '{ sum += $1 }; END { print sum }' file\n"
@@ -3116,7 +3133,7 @@ msgstr ""
"\tgawk '{ suma += $1 }; END { print suma }' plik\n"
"\tgawk -F: '{ print $1 }' /etc/passwd\n"
-#: main.c:855
+#: main.c:880
#, c-format
msgid ""
"Copyright (C) 1989, 1991-%d Free Software Foundation.\n"
@@ -3135,7 +3152,7 @@ msgstr ""
"tej Licencji lub którejś z późniejszych wersji.\n"
"\n"
-#: main.c:863
+#: main.c:888
msgid ""
"This program is distributed in the hope that it will be useful,\n"
"but WITHOUT ANY WARRANTY; without even the implied warranty of\n"
@@ -3150,7 +3167,7 @@ msgstr ""
"PowszechnÄ… LicencjÄ™ PublicznÄ… GNU.\n"
"\n"
-#: main.c:869
+#: main.c:894
msgid ""
"You should have received a copy of the GNU General Public License\n"
"along with this program. If not, see http://www.gnu.org/licenses/.\n"
@@ -3159,16 +3176,16 @@ msgstr ""
"Powszechnej Licencji Publicznej GNU (GNU General Public License);\n"
"jeśli zaś nie - odwiedź stronę http://www.gnu.org/licenses/.\n"
-#: main.c:904
+#: main.c:931
msgid "-Ft does not set FS to tab in POSIX awk"
msgstr "-Ft nie ustawia FS na znak tabulatora w POSIX awk"
-#: main.c:1181
+#: main.c:1208
#, c-format
msgid "unknown value for field spec: %d\n"
msgstr "nieznana wartość dla specyfikacji pola: %d\n"
-#: main.c:1279
+#: main.c:1306
#, c-format
msgid ""
"%s: `%s' argument to `-v' not in `var=value' form\n"
@@ -3177,48 +3194,48 @@ msgstr ""
"%s: argument `%s' dla `-v' nie jest zgodny ze składnią `zmienna=wartość'\n"
"\n"
-#: main.c:1305
+#: main.c:1332
#, c-format
msgid "`%s' is not a legal variable name"
msgstr "`%s' nie jest dozwolonÄ… nazwÄ… zmiennej"
-#: main.c:1308
+#: main.c:1335
#, c-format
msgid "`%s' is not a variable name, looking for file `%s=%s'"
msgstr "`%s' nie jest nazwÄ… zmiennej, szukanie pliku `%s=%s'"
-#: main.c:1312
+#: main.c:1339
#, c-format
msgid "cannot use gawk builtin `%s' as variable name"
msgstr "nie można użyć wbudowanej w gawk `%s' jako nazwy zmiennej"
-#: main.c:1317
+#: main.c:1344
#, c-format
msgid "cannot use function `%s' as variable name"
msgstr "nie można użyć funkcji `%s' jako nazwy zmiennej"
-#: main.c:1370
+#: main.c:1397
msgid "floating point exception"
msgstr "wyjÄ…tek zmiennopozycyjny"
-#: main.c:1377
+#: main.c:1404
msgid "fatal error: internal error"
msgstr "fatalny błąd: wewnętrzny błąd"
-#: main.c:1392
+#: main.c:1419
msgid "fatal error: internal error: segfault"
msgstr "fatalny błąd: wewnętrzny błąd: błąd segmentacji"
-#: main.c:1404
+#: main.c:1431
msgid "fatal error: internal error: stack overflow"
msgstr "fatalny błąd: wewnętrzny błąd: przepełnienie stosu"
-#: main.c:1463
+#: main.c:1490
#, c-format
msgid "no pre-opened fd %d"
msgstr "brak już otwartego fd %d"
-#: main.c:1470
+#: main.c:1497
#, c-format
msgid "could not pre-open /dev/null for fd %d"
msgstr "nie można otworzyć zawczasu /dev/null dla fd %d"
@@ -3273,7 +3290,7 @@ msgstr "%s: argument #%d ułamkowa wartość %Rg zostanie obcięta"
msgid "%s: argument #%d negative value %Zd will give strange results"
msgstr "%s: argument #%d ujemna wartość %Zd spowoduje dziwne wyniki"
-#: msg.c:61
+#: msg.c:68
#, c-format
msgid "cmd. line:"
msgstr "linia poleceń:"
@@ -3327,16 +3344,16 @@ msgstr "%s %s `%s': nie można uzyskać flag fd: (fcntl F_GETFD: %s)"
msgid "%s %s `%s': could not set close-on-exec: (fcntl F_SETFD: %s)"
msgstr "%s %s `%s': nie można ustawić close-on-exec: (fcntl F_SETFD: %s)"
-#: profile.c:70
+#: profile.c:71
#, c-format
msgid "could not open `%s' for writing: %s"
msgstr "nie można otworzyć `%s' do zapisu: %s"
-#: profile.c:72
+#: profile.c:73
msgid "sending profile to standard error"
msgstr "wysyłanie profilu na standardowe wyjście diagnostyczne"
-#: profile.c:188
+#: profile.c:193
#, c-format
msgid ""
"\t# %s block(s)\n"
@@ -3345,7 +3362,7 @@ msgstr ""
"\t# %s blok(i)\n"
"\n"
-#: profile.c:193
+#: profile.c:198
#, c-format
msgid ""
"\t# Rule(s)\n"
@@ -3354,16 +3371,16 @@ msgstr ""
"\t# Reguła(i)\n"
"\n"
-#: profile.c:267
+#: profile.c:272
#, c-format
msgid "internal error: %s with null vname"
msgstr "wewnętrzny błąd: %s z zerowym vname"
-#: profile.c:530
+#: profile.c:537
msgid "internal error: builtin with null fname"
msgstr "wewnętrzny błąd: builtin z fname null"
-#: profile.c:942
+#: profile.c:949
#, c-format
msgid ""
"\t# Loaded extensions (-l and/or @load)\n"
@@ -3372,12 +3389,12 @@ msgstr ""
"\t# Załadowane rozszerzenia (-l i/lub @load)\n"
"\n"
-#: profile.c:965
+#: profile.c:972
#, c-format
msgid "\t# gawk profile, created %s\n"
msgstr "\t# profil programu gawk, utworzony %s\n"
-#: profile.c:1351
+#: profile.c:1475
#, c-format
msgid ""
"\n"
@@ -3386,17 +3403,12 @@ msgstr ""
"\n"
"\t# Funkcje, spis alfabetyczny\n"
-#: profile.c:1389
+#: profile.c:1513
#, c-format
msgid "redir2str: unknown redirection type %d"
msgstr "redir2str: nieznany typ przekierowania %d"
-#: re.c:583
-#, c-format
-msgid "range of the form `[%c-%c]' is locale dependent"
-msgstr "zasięg formy `[%c-%c]' jest zależny od lokalizacji"
-
-#: re.c:610
+#: re.c:607
#, c-format
msgid "regexp component `%.*s' should probably be `[%.*s]'"
msgstr "komponent regexp `%.*s' powinien być prawdopodobnie `[%.*s]'"
@@ -3465,10 +3477,13 @@ msgstr "Niedopasowany znak ) lub \\)"
msgid "No previous regular expression"
msgstr "Brak poprzedniego wyrażenia regularnego"
-#: symbol.c:740
+#: symbol.c:741
msgid "can not pop main context"
msgstr "nie można zdjąć głównego kontekstu"
+#~ msgid "range of the form `[%c-%c]' is locale dependent"
+#~ msgstr "zasięg formy `[%c-%c]' jest zależny od lokalizacji"
+
#~ msgid "attempt to use function `%s' as an array"
#~ msgstr "próba użycia funkcji `%s' jako tablicy"
diff --git a/po/sv.gmo b/po/sv.gmo
index a805642a..11006e58 100644
--- a/po/sv.gmo
+++ b/po/sv.gmo
Binary files differ
diff --git a/po/sv.po b/po/sv.po
index 7168507f..79b0bca8 100644
--- a/po/sv.po
+++ b/po/sv.po
@@ -1,17 +1,17 @@
# Swedish translation of gawk
-# Copyright © 2003, 2011, 2012, 2013 Free Software Foundation, Inc.
+# Copyright © 2003, 2011, 2012, 2013, 2014 Free Software Foundation, Inc.
# This file is distributed under the same license as the gawk package.
# Martin Sjögren <md9ms@mdstud.chalmers.se>, 2001-2002.
# Christer Andersson <klamm@comhem.se>, 2007.
-# Göran Uddeborg <goeran@uddeborg.se>, 2011, 2012, 2013.
+# Göran Uddeborg <goeran@uddeborg.se>, 2011, 2012, 2013, 2014.
#
-# $Revision: 1.12 $
+# $Revision: 1.14 $
msgid ""
msgstr ""
-"Project-Id-Version: gawk 4.0.75\n"
+"Project-Id-Version: gawk 4.1.0b\n"
"Report-Msgid-Bugs-To: arnold@skeeve.com\n"
-"POT-Creation-Date: 2013-05-09 16:05+0300\n"
-"PO-Revision-Date: 2013-04-18 22:46+0200\n"
+"POT-Creation-Date: 2014-04-08 19:23+0300\n"
+"PO-Revision-Date: 2014-01-21 17:40+0100\n"
"Last-Translator: Göran Uddeborg <goeran@uddeborg.se>\n"
"Language-Team: Swedish <tp-sv@listor.tp-sv.se>\n"
"Language: sv\n"
@@ -19,92 +19,92 @@ msgstr ""
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-#: array.c:254
+#: array.c:256
#, c-format
msgid "from %s"
msgstr "från %s"
-#: array.c:354
+#: array.c:357
msgid "attempt to use a scalar value as array"
msgstr "försök att använda ett skalärt värde som vektor"
-#: array.c:356
+#: array.c:359
#, c-format
msgid "attempt to use scalar parameter `%s' as an array"
msgstr "försök att använda skalärparametern â€%s†som en vektor"
-#: array.c:359
+#: array.c:362
#, c-format
msgid "attempt to use scalar `%s' as an array"
msgstr "försök att använda skalären â€%s†som en vektor"
-#: array.c:406 array.c:573 builtin.c:85 builtin.c:1591 builtin.c:1637
-#: builtin.c:1650 builtin.c:2078 builtin.c:2092 eval.c:1121 eval.c:1125
-#: eval.c:1524
+#: array.c:409 array.c:576 builtin.c:85 builtin.c:1615 builtin.c:1661
+#: builtin.c:1674 builtin.c:2102 builtin.c:2116 eval.c:1122 eval.c:1126
+#: eval.c:1531
#, c-format
msgid "attempt to use array `%s' in a scalar context"
msgstr "försök att använda vektorn â€%s†i skalärsammanhang"
-#: array.c:580
+#: array.c:583
#, c-format
msgid "delete: index `%s' not in array `%s'"
msgstr "delete: index â€%s†finns inte i vektorn â€%sâ€"
-#: array.c:594
+#: array.c:597
#, 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"
-#: array.c:773
+#: array.c:776
msgid "adump: first argument not an array"
msgstr "adump: första argumentet är inte en vektor"
-#: array.c:812
+#: array.c:815
msgid "asort: second argument not an array"
msgstr "asort: andra argumentet är inte en vektor"
-#: array.c:813
+#: array.c:816
msgid "asorti: second argument not an array"
msgstr "asorti: andra argumentet är inte en vektor"
-#: array.c:820
+#: array.c:823
msgid "asort: first argument not an array"
msgstr "asort: första argumentet är inte en vektor"
-#: array.c:821
+#: array.c:824
msgid "asorti: first argument not an array"
msgstr "asorti: första argumentet är inte en vektor"
-#: array.c:828
+#: array.c:831
msgid "asort: cannot use a subarray of first arg for second arg"
msgstr ""
"asort: det går inte att använda en delvektor av första argumentet som andra "
"argument"
-#: array.c:829
+#: array.c:832
msgid "asorti: cannot use a subarray of first arg for second arg"
msgstr ""
"asorti: det går inte att använda en delvektor av första argumentet som andra "
"argument"
-#: array.c:834
+#: array.c:837
msgid "asort: cannot use a subarray of second arg for first arg"
msgstr ""
"asort: det går inte att använda en delvektor av andra argumentet som första "
"argument"
-#: array.c:835
+#: array.c:838
msgid "asorti: cannot use a subarray of second arg for first arg"
msgstr ""
"asorti: det går inte att använda en delvektor av andra argumentet som första "
"argument"
-#: array.c:1309
+#: array.c:1314
#, c-format
msgid "`%s' is invalid as a function name"
msgstr "â€%s†är ogiltigt som ett funktionsnamn"
-#: array.c:1313
+#: array.c:1318
#, c-format
msgid "sort comparison function `%s' is not defined"
msgstr "jämförelsefunktionen â€%s†för sortering är inte definierad"
@@ -145,11 +145,11 @@ msgstr "upprepade case-värden i switch-sats: %s"
msgid "duplicate `default' detected in switch body"
msgstr "flera \"default\" upptäcktes i switch-sats"
-#: awkgram.y:796 awkgram.y:3699
+#: awkgram.y:796 awkgram.y:3723
msgid "`break' is not allowed outside a loop or switch"
msgstr "\"break\" är inte tillåtet utanför en slinga eller switch"
-#: awkgram.y:805 awkgram.y:3691
+#: awkgram.y:805 awkgram.y:3715
msgid "`continue' is not allowed outside a loop"
msgstr "\"continue\" är inte tillåtet utanför en slinga"
@@ -240,273 +240,272 @@ msgstr ""
msgid "invalid subscript expression"
msgstr "ogiltig indexuttryck"
-#: awkgram.y:2024 awkgram.y:2044 gawkapi.c:206 gawkapi.c:224 msg.c:119
+#: awkgram.y:2048 awkgram.y:2068 gawkapi.c:206 gawkapi.c:224 msg.c:126
msgid "warning: "
msgstr "varning: "
-#: awkgram.y:2042 gawkapi.c:192 gawkapi.c:221 msg.c:151
+#: awkgram.y:2066 gawkapi.c:192 gawkapi.c:221 msg.c:158
msgid "fatal: "
msgstr "ödesdigert: "
-#: awkgram.y:2092
+#: awkgram.y:2116
msgid "unexpected newline or end of string"
msgstr "oväntat nyradstecken eller slut på strängen"
-#: awkgram.y:2359 awkgram.y:2435 awkgram.y:2658 debug.c:517 debug.c:533
-#: debug.c:2792 debug.c:5040
+#: awkgram.y:2383 awkgram.y:2459 awkgram.y:2682 debug.c:523 debug.c:539
+#: debug.c:2812 debug.c:5055
#, c-format
msgid "can't open source file `%s' for reading (%s)"
msgstr "kan inte öppna källfilen \"%s\" för läsning (%s)"
-#: awkgram.y:2360 awkgram.y:2485
+#: awkgram.y:2384 awkgram.y:2509
#, c-format
msgid "can't open shared library `%s' for reading (%s)"
msgstr "kan inte öppna det delade biblioteket â€%s†för läsning (%s)"
-#: awkgram.y:2362 awkgram.y:2436 awkgram.y:2486 builtin.c:130 debug.c:5191
+#: awkgram.y:2386 awkgram.y:2460 awkgram.y:2510 builtin.c:135 debug.c:5206
msgid "reason unknown"
msgstr "okänd anledning"
-#: awkgram.y:2371 awkgram.y:2395
+#: awkgram.y:2395 awkgram.y:2419
#, c-format
msgid "can't include `%s' and use it as a program file"
msgstr "kan inte inkludera â€%s†och använda den som en programfil"
-#: awkgram.y:2384
+#: awkgram.y:2408
#, c-format
msgid "already included source file `%s'"
msgstr "inkluderade redan källfilen \"%s\""
-#: awkgram.y:2385
+#: awkgram.y:2409
#, c-format
msgid "already loaded shared library `%s'"
msgstr "inkluderade redan det delade biblioteket â€%sâ€"
-#: awkgram.y:2420
+#: awkgram.y:2444
msgid "@include is a gawk extension"
msgstr "@include är en gawk-utökning"
-#: awkgram.y:2426
+#: awkgram.y:2450
msgid "empty filename after @include"
msgstr "tomt filnamn efter @include"
-#: awkgram.y:2470
+#: awkgram.y:2494
msgid "@load is a gawk extension"
msgstr "@load är en gawk-utökning"
-#: awkgram.y:2476
+#: awkgram.y:2500
msgid "empty filename after @load"
msgstr "tomt filnamn efter @load"
-#: awkgram.y:2610
+#: awkgram.y:2634
msgid "empty program text on command line"
msgstr "tom programtext på kommandoraden"
-#: awkgram.y:2725
+#: awkgram.y:2749
#, c-format
msgid "can't read sourcefile `%s' (%s)"
msgstr "kan inte läsa källfilen \"%s\" (%s)"
-#: awkgram.y:2736
+#: awkgram.y:2760
#, c-format
msgid "source file `%s' is empty"
msgstr "källfilen \"%s\" är tom"
-#: awkgram.y:2913
+#: awkgram.y:2937
msgid "source file does not end in newline"
msgstr "källfilen slutar inte med en ny rad"
-#: awkgram.y:3018
+#: awkgram.y:3042
msgid "unterminated regexp ends with `\\' at end of file"
msgstr "oavslutat reguljärt uttryck slutar med \"\\\" i slutet av filen"
-#: awkgram.y:3042
+#: awkgram.y:3066
#, c-format
msgid "%s: %d: tawk regex modifier `/.../%c' doesn't work in gawk"
msgstr ""
"%s: %d: tawk-modifierare för reguljära uttryck \"/.../%c\" fungerar inte i "
"gawk"
-#: awkgram.y:3046
+#: awkgram.y:3070
#, c-format
msgid "tawk regex modifier `/.../%c' doesn't work in gawk"
msgstr ""
"tawk-modifierare för reguljära uttryck \"/.../%c\" fungerar inte i gawk"
-#: awkgram.y:3053
+#: awkgram.y:3077
msgid "unterminated regexp"
msgstr "oavslutat reguljärt uttryck"
-#: awkgram.y:3057
+#: awkgram.y:3081
msgid "unterminated regexp at end of file"
msgstr "oavslutat reguljärt uttryck i slutet av filen"
-#: awkgram.y:3116
+#: awkgram.y:3140
msgid "use of `\\ #...' line continuation is not portable"
msgstr "Användning av \"\\ #...\" för radfortsättning är inte portabelt"
-#: awkgram.y:3132
+#: awkgram.y:3156
msgid "backslash not last character on line"
msgstr "sista tecknet på raden är inte ett omvänt snedstreck"
-#: awkgram.y:3193
+#: awkgram.y:3217
msgid "POSIX does not allow operator `**='"
msgstr "POSIX tillåter inte operatorn \"**=\""
-#: awkgram.y:3195
+#: awkgram.y:3219
msgid "old awk does not support operator `**='"
msgstr "gamla awk stöder inte operatorn \"**=\""
-#: awkgram.y:3204
+#: awkgram.y:3228
msgid "POSIX does not allow operator `**'"
msgstr "POSIX tillåter inte operatorn \"**\""
-#: awkgram.y:3206
+#: awkgram.y:3230
msgid "old awk does not support operator `**'"
msgstr "gamla awk stöder inte operatorn \"**\""
-#: awkgram.y:3241
+#: awkgram.y:3265
msgid "operator `^=' is not supported in old awk"
msgstr "operatorn \"^=\" stöds inte i gamla awk"
-#: awkgram.y:3249
+#: awkgram.y:3273
msgid "operator `^' is not supported in old awk"
msgstr "operatorn \"^\" stöds inte i gamla awk"
-#: awkgram.y:3342 awkgram.y:3358 command.y:1178
+#: awkgram.y:3366 awkgram.y:3382 command.y:1178
msgid "unterminated string"
msgstr "oavslutad sträng"
-#: awkgram.y:3579
+#: awkgram.y:3603
#, c-format
msgid "invalid char '%c' in expression"
msgstr "ogiltigt tecken \"%c\" i uttryck"
-#: awkgram.y:3626
+#: awkgram.y:3650
#, c-format
msgid "`%s' is a gawk extension"
msgstr "\"%s\" är en gawk-utökning"
-#: awkgram.y:3631
+#: awkgram.y:3655
#, c-format
msgid "POSIX does not allow `%s'"
msgstr "POSIX tillåter inte \"%s\""
-#: awkgram.y:3639
+#: awkgram.y:3663
#, c-format
msgid "`%s' is not supported in old awk"
msgstr "\"%s\" stöds inte i gamla awk"
-#: awkgram.y:3729
+#: awkgram.y:3753
msgid "`goto' considered harmful!\n"
msgstr "\"goto\" anses skadlig!\n"
-#: awkgram.y:3763
+#: awkgram.y:3787
#, c-format
msgid "%d is invalid as number of arguments for %s"
msgstr "%d är ett ogiltigt antal argument för %s"
-#: awkgram.y:3798
+#: awkgram.y:3822
#, c-format
msgid "%s: string literal as last arg of substitute has no effect"
msgstr ""
"%s: bokstavlig sträng som sista argument till ersättning har ingen effekt"
-#: awkgram.y:3803
+#: awkgram.y:3827
#, c-format
msgid "%s third parameter is not a changeable object"
msgstr "%s: tredje argumentet är inte ett ändringsbart objekt"
-#: awkgram.y:3886 awkgram.y:3889
+#: awkgram.y:3910 awkgram.y:3913
msgid "match: third argument is a gawk extension"
msgstr "match: tredje argumentet är en gawk-utökning"
-#: awkgram.y:3943 awkgram.y:3946
+#: awkgram.y:3967 awkgram.y:3970
msgid "close: second argument is a gawk extension"
msgstr "close: andra argumentet är en gawk-utökning"
-#: awkgram.y:3958
+#: awkgram.y:3982
msgid "use of dcgettext(_\"...\") is incorrect: remove leading underscore"
msgstr ""
"användandet av dcgettext(_\"...\") är felaktigt: ta bort det inledande "
"understrykningstecknet"
-#: awkgram.y:3973
+#: awkgram.y:3997
msgid "use of dcngettext(_\"...\") is incorrect: remove leading underscore"
msgstr ""
"användandet av dcngettext(_\"...\") är felaktigt: ta bort det inledande "
"understrykningstecknet"
-#: awkgram.y:3992
-#, fuzzy
+#: awkgram.y:4016
msgid "index: regexp constant as second argument is not allowed"
-msgstr "index: andra argumentet är inte en sträng"
+msgstr "index: reguljäruttryck som andra argumentet är inte tillåtet"
-#: awkgram.y:4045
+#: awkgram.y:4069
#, c-format
msgid "function `%s': parameter `%s' shadows global variable"
msgstr "funktionen \"%s\": parametern \"%s\" överskuggar en global variabel"
-#: awkgram.y:4102 debug.c:4021 debug.c:4064 debug.c:5189
+#: awkgram.y:4126 debug.c:4041 debug.c:4084 debug.c:5204
#, c-format
msgid "could not open `%s' for writing (%s)"
msgstr "kunde inte öppna \"%s\" för skrivning (%s)"
-#: awkgram.y:4103
+#: awkgram.y:4127
msgid "sending variable list to standard error"
msgstr "skickar variabellista till standard fel"
-#: awkgram.y:4111
+#: awkgram.y:4135
#, c-format
msgid "%s: close failed (%s)"
msgstr "%s: misslyckades att stänga (%s)"
-#: awkgram.y:4136
+#: awkgram.y:4160
msgid "shadow_funcs() called twice!"
msgstr "shadow_funcs() anropad två gånger!"
-#: awkgram.y:4144
+#: awkgram.y:4168
msgid "there were shadowed variables."
msgstr "det fanns överskuggade variabler."
-#: awkgram.y:4215
+#: awkgram.y:4239
#, c-format
msgid "function name `%s' previously defined"
msgstr "funktionsnamnet \"%s\" är definierat sedan tidigare"
-#: awkgram.y:4261
+#: awkgram.y:4285
#, c-format
msgid "function `%s': can't use function name as parameter name"
msgstr "funktionen \"%s\": kan inte använda funktionsnamn som parameternamn"
-#: awkgram.y:4264
+#: awkgram.y:4288
#, c-format
msgid "function `%s': can't use special variable `%s' as a function parameter"
msgstr ""
"funktionen \"%s\": det går inte att använda specialvariabeln \"%s\" som en "
"funktionsparameter"
-#: awkgram.y:4272
+#: awkgram.y:4296
#, c-format
msgid "function `%s': parameter #%d, `%s', duplicates parameter #%d"
msgstr "funktionen \"%s\": parameter %d, \"%s\", är samma som parameter %d"
-#: awkgram.y:4366 awkgram.y:4372
+#: awkgram.y:4383 awkgram.y:4389
#, c-format
msgid "function `%s' called but never defined"
msgstr "funktionen \"%s\" anropad men aldrig definierad"
-#: awkgram.y:4376
+#: awkgram.y:4393
#, c-format
msgid "function `%s' defined but never called directly"
msgstr "funktionen \"%s\" definierad men aldrig anropad direkt"
-#: awkgram.y:4408
+#: awkgram.y:4425
#, c-format
msgid "regexp constant for parameter #%d yields boolean value"
msgstr "konstant reguljärt uttryck för parameter %d ger ett booleskt värde"
-#: awkgram.y:4467
+#: awkgram.y:4484
#, c-format
msgid ""
"function `%s' called with space between name and `(',\n"
@@ -515,233 +514,245 @@ msgstr ""
"funktionen \"%s\" anropad med blanktecken mellan namnet och \"(\",\n"
"eller använd som variabel eller vektor"
-#: awkgram.y:4703
+#: awkgram.y:4720
msgid "division by zero attempted"
msgstr "försökte dividera med noll"
-#: awkgram.y:4712
+#: awkgram.y:4729
#, c-format
msgid "division by zero attempted in `%%'"
msgstr "försökte dividera med noll i \"%%\""
-#: builtin.c:128
+#: awkgram.y:5049
+msgid ""
+"cannot assign a value to the result of a field post-increment expression"
+msgstr ""
+"kan inte tilldela ett värde till uttryck som är en efterinkrementering av "
+"ett fält"
+
+#: awkgram.y:5052
+#, c-format
+msgid "invalid target of assignment (opcode %s)"
+msgstr "ogiltigt mål för tilldelning (op-kod %s)"
+
+#: builtin.c:133
#, c-format
msgid "%s to \"%s\" failed (%s)"
msgstr "%s till \"%s\" misslyckades (%s)"
-#: builtin.c:129
+#: builtin.c:134
msgid "standard output"
msgstr "standard ut"
-#: builtin.c:143
+#: builtin.c:148
msgid "exp: received non-numeric argument"
msgstr "exp: fick ett ickenumeriskt argument"
-#: builtin.c:149
+#: builtin.c:154
#, c-format
msgid "exp: argument %g is out of range"
msgstr "exp: argumentet %g är inte inom tillåten gräns"
-#: builtin.c:224
+#: builtin.c:229
#, c-format
msgid "fflush: cannot flush: pipe `%s' opened for reading, not writing"
msgstr ""
"fflush: kan inte spola: röret \"%s\" öppnat för läsning, inte skrivning"
-#: builtin.c:227
+#: builtin.c:232
#, c-format
msgid "fflush: cannot flush: file `%s' opened for reading, not writing"
msgstr ""
"fflush: kan inte spola: filen \"%s\" öppnad för läsning, inte skrivning"
-#: builtin.c:239
+#: builtin.c:244
#, 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:357
+#: builtin.c:362
msgid "index: received non-string first argument"
msgstr "index: första argumentet är inte en sträng"
-#: builtin.c:359
+#: builtin.c:364
msgid "index: received non-string second argument"
msgstr "index: andra argumentet är inte en sträng"
-#: builtin.c:483 mpfr.c:757
+#: builtin.c:488 mpfr.c:757
msgid "int: received non-numeric argument"
msgstr "int: fick ett ickenumeriskt argument"
-#: builtin.c:520
+#: builtin.c:525
msgid "length: received array argument"
msgstr "length: fick ett vektorargument"
-#: builtin.c:523
+#: builtin.c:528
msgid "`length(array)' is a gawk extension"
msgstr "\"length(array)\" är en gawk-utökning"
-#: builtin.c:539
+#: builtin.c:544
msgid "length: received non-string argument"
msgstr "length: fick ett argument som inte är en sträng"
-#: builtin.c:570
+#: builtin.c:575
msgid "log: received non-numeric argument"
msgstr "log: fick ett ickenumeriskt argument"
-#: builtin.c:573
+#: builtin.c:578
#, c-format
msgid "log: received negative argument %g"
msgstr "log: fick ett negativt argumentet %g"
-#: builtin.c:771 builtin.c:776
+#: builtin.c:776 builtin.c:781
msgid "fatal: must use `count$' on all formats or none"
msgstr "ödesdigert: måste använda \"count$\" på alla eller inga format"
-#: builtin.c:846
+#: builtin.c:851
#, c-format
msgid "field width is ignored for `%%' specifier"
msgstr "fältbredd ignoreras för \"%%\"-specificerare"
-#: builtin.c:848
+#: builtin.c:853
#, c-format
msgid "precision is ignored for `%%' specifier"
msgstr "precision ignoreras för \"%%\"-specificerare"
-#: builtin.c:850
+#: builtin.c:855
#, c-format
msgid "field width and precision are ignored for `%%' specifier"
msgstr "fältbredd och precision ignoreras för \"%%\"-specificerare"
-#: builtin.c:901
+#: builtin.c:906
msgid "fatal: `$' is not permitted in awk formats"
msgstr "ödesdigert: \"$\" tillåts inte i awk-format"
-#: builtin.c:910
+#: builtin.c:915
msgid "fatal: arg count with `$' must be > 0"
msgstr "ödesdigert: argumentantalet med \"$\" måste vara > 0"
-#: builtin.c:914
+#: builtin.c:919
#, 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:918
+#: builtin.c:923
msgid "fatal: `$' not permitted after period in format"
msgstr "ödesdigert: \"$\" tillåts inte efter en punkt i formatet"
-#: builtin.c:934
+#: builtin.c:939
msgid "fatal: no `$' supplied for positional field width or precision"
msgstr ""
"ödesdigert: inget \"$\" bifogat för positionsangiven fältbredd eller "
"precision"
-#: builtin.c:1006
+#: builtin.c:1009
msgid "`l' is meaningless in awk formats; ignored"
msgstr "\"l\" är meningslös i awk-format, ignorerad"
-#: builtin.c:1010
+#: builtin.c:1013
msgid "fatal: `l' is not permitted in POSIX awk formats"
msgstr "ödesdigert: \"l\" tillåts inte i POSIX awk-format"
-#: builtin.c:1023
+#: builtin.c:1026
msgid "`L' is meaningless in awk formats; ignored"
msgstr "\"L\" är meningslös i awk-format, ignorerad"
-#: builtin.c:1027
+#: builtin.c:1030
msgid "fatal: `L' is not permitted in POSIX awk formats"
msgstr "ödesdigert: \"L\" tillåts inte i POSIX awk-format"
-#: builtin.c:1040
+#: builtin.c:1043
msgid "`h' is meaningless in awk formats; ignored"
msgstr "\"h\" är meningslös i awk-format, ignorerad"
-#: builtin.c:1044
+#: builtin.c:1047
msgid "fatal: `h' is not permitted in POSIX awk formats"
msgstr "ödesdigert: \"h\" tillåts inte i POSIX awk-format"
-#: builtin.c:1439
+#: builtin.c:1463
#, c-format
msgid "[s]printf: value %g is out of range for `%%%c' format"
msgstr "[s]printf: värdet %g är utanför \"%%%c\"-formatets giltiga intervall"
-#: builtin.c:1537
+#: builtin.c:1561
#, c-format
msgid "ignoring unknown format specifier character `%c': no argument converted"
msgstr ""
"ignorerar okänt formatspecifikationstecken \"%c\": inget argument konverterat"
-#: builtin.c:1542
+#: builtin.c:1566
msgid "fatal: not enough arguments to satisfy format string"
msgstr "ödesdigert: för få argument för formatsträngen"
-#: builtin.c:1544
+#: builtin.c:1568
msgid "^ ran out for this one"
msgstr "^ tog slut här"
-#: builtin.c:1551
+#: builtin.c:1575
msgid "[s]printf: format specifier does not have control letter"
msgstr "[s]printf: formatspecifieraren har ingen kommandobokstav"
-#: builtin.c:1554
+#: builtin.c:1578
msgid "too many arguments supplied for format string"
msgstr "för många argument för formatsträngen"
-#: builtin.c:1610
+#: builtin.c:1634
msgid "sprintf: no arguments"
msgstr "sprintf: inga argument"
-#: builtin.c:1633 builtin.c:1644
+#: builtin.c:1657 builtin.c:1668
msgid "printf: no arguments"
msgstr "printf: inga argument"
-#: builtin.c:1687
+#: builtin.c:1711
msgid "sqrt: received non-numeric argument"
msgstr "sqrt: fick ickenumeriskt argument"
-#: builtin.c:1691
+#: builtin.c:1715
#, c-format
msgid "sqrt: called with negative argument %g"
msgstr "sqrt: anropad med negativt argument %g"
-#: builtin.c:1722
+#: builtin.c:1746
#, c-format
msgid "substr: length %g is not >= 1"
msgstr "substr: längden %g är inte >= 1"
-#: builtin.c:1724
+#: builtin.c:1748
#, c-format
msgid "substr: length %g is not >= 0"
msgstr "substr: längden %g är inte >= 0"
-#: builtin.c:1731
+#: builtin.c:1755
#, c-format
msgid "substr: non-integer length %g will be truncated"
msgstr "substr: längden %g som inte är ett heltal kommer huggas av"
-#: builtin.c:1736
+#: builtin.c:1760
#, c-format
msgid "substr: length %g too big for string indexing, truncating to %g"
msgstr "substr: längden %g är för stor för strängindexering, huggas av till %g"
-#: builtin.c:1748
+#: builtin.c:1772
#, c-format
msgid "substr: start index %g is invalid, using 1"
msgstr "substr: startindex %g är ogiltigt, använder 1"
-#: builtin.c:1753
+#: builtin.c:1777
#, c-format
msgid "substr: non-integer start index %g will be truncated"
msgstr "substr: startindex %g som inte är ett heltal kommer huggas av"
-#: builtin.c:1778
+#: builtin.c:1802
msgid "substr: source string is zero length"
msgstr "substr: källsträngen är tom"
-#: builtin.c:1794
+#: builtin.c:1818
#, c-format
msgid "substr: start index %g is past end of string"
msgstr "substr: startindex %g är bortom strängens slut"
-#: builtin.c:1802
+#: builtin.c:1826
#, c-format
msgid ""
"substr: length %g at start index %g exceeds length of first argument (%lu)"
@@ -749,186 +760,186 @@ msgstr ""
"substr: längden %g vid startindex %g överskrider det första argumentets "
"längd (%lu)"
-#: builtin.c:1876
+#: builtin.c:1900
msgid "strftime: format value in PROCINFO[\"strftime\"] has numeric type"
msgstr "strftime: formatvärde i PROCINFO[\"strftime\"] har numerisk typ"
-#: builtin.c:1899
+#: builtin.c:1923
msgid "strftime: received non-numeric second argument"
msgstr "strftime: fick ett ickenumeriskt andra argument"
-#: builtin.c:1903
+#: builtin.c:1927
msgid "strftime: second argument less than 0 or too big for time_t"
msgstr "strftime: andra argimentet mindre än 0 eller för stort för time_t"
-#: builtin.c:1910
+#: builtin.c:1934
msgid "strftime: received non-string first argument"
msgstr "strftime: fick ett första argument som inte är en sträng"
-#: builtin.c:1917
+#: builtin.c:1941
msgid "strftime: received empty format string"
msgstr "strftime: fick en tom formatsträng"
-#: builtin.c:1983
+#: builtin.c:2007
msgid "mktime: received non-string argument"
msgstr "mktime: fick ett argument som inte är en sträng"
-#: builtin.c:2000
+#: builtin.c:2024
msgid "mktime: at least one of the values is out of the default range"
msgstr "mktime: åtminstone ett av värdena är utanför standardintervallet"
-#: builtin.c:2035
+#: builtin.c:2059
msgid "'system' function not allowed in sandbox mode"
msgstr "funktionen \"system\" är inte tillåten i sandlådeläge"
-#: builtin.c:2040
+#: builtin.c:2064
msgid "system: received non-string argument"
msgstr "system: fick ett argument som inte är en sträng"
-#: builtin.c:2160
+#: builtin.c:2184
#, c-format
msgid "reference to uninitialized field `$%d'"
msgstr "referens till icke initierat fält \"$%d\""
-#: builtin.c:2247
+#: builtin.c:2271
msgid "tolower: received non-string argument"
msgstr "tolower: fick ett argument som inte är en sträng"
-#: builtin.c:2281
+#: builtin.c:2305
msgid "toupper: received non-string argument"
msgstr "toupper: fick ett argument som inte är en sträng"
-#: builtin.c:2317 mpfr.c:672
+#: builtin.c:2341 mpfr.c:672
msgid "atan2: received non-numeric first argument"
msgstr "atan2: fick ett ickenumeriskt första argument"
-#: builtin.c:2319 mpfr.c:674
+#: builtin.c:2343 mpfr.c:674
msgid "atan2: received non-numeric second argument"
msgstr "atan2: fick ett ickenumeriskt andra argument"
-#: builtin.c:2338
+#: builtin.c:2362
msgid "sin: received non-numeric argument"
msgstr "sin: fick ett ickenumeriskt argument"
-#: builtin.c:2354
+#: builtin.c:2378
msgid "cos: received non-numeric argument"
msgstr "cos: fick ett ickenumeriskt argument"
-#: builtin.c:2407 mpfr.c:1156
+#: builtin.c:2431 mpfr.c:1156
msgid "srand: received non-numeric argument"
msgstr "srand: fick ett ickenumeriskt argument"
-#: builtin.c:2438
+#: builtin.c:2462
msgid "match: third argument is not an array"
msgstr "match: tredje argumentet är inte en vektor"
-#: builtin.c:2710
+#: builtin.c:2734
msgid "gensub: third argument of 0 treated as 1"
msgstr "gensub: nollan i tredje argumentet behandlad som en etta"
-#: builtin.c:3003
+#: builtin.c:3030
msgid "lshift: received non-numeric first argument"
msgstr "lshift: fick ett ickenumeriskt första argument"
-#: builtin.c:3005
+#: builtin.c:3032
msgid "lshift: received non-numeric second argument"
msgstr "lshift: fick ett ickenumeriskt andra argument"
-#: builtin.c:3011
+#: builtin.c:3038
#, c-format
msgid "lshift(%f, %f): negative values will give strange results"
msgstr "lshift(%f, %f): negativa värden kommer ge konstiga resultat"
-#: builtin.c:3013
+#: builtin.c:3040
#, c-format
msgid "lshift(%f, %f): fractional values will be truncated"
msgstr "lshift(%f, %f): flyttalsvärden kommer huggas av"
-#: builtin.c:3015
+#: builtin.c:3042
#, c-format
msgid "lshift(%f, %f): too large shift value will give strange results"
msgstr "lshift(%f, %f): för stort skiftvärde kommer ge konstiga resultat"
-#: builtin.c:3040
+#: builtin.c:3067
msgid "rshift: received non-numeric first argument"
msgstr "rshift: fick ett ickenumeriskt första argument"
-#: builtin.c:3042
+#: builtin.c:3069
msgid "rshift: received non-numeric second argument"
msgstr "rshift: fick ett ickenumeriskt andra argument"
-#: builtin.c:3048
+#: builtin.c:3075
#, c-format
msgid "rshift(%f, %f): negative values will give strange results"
msgstr "rshift(%f, %f): negativa värden kommer ge konstiga resultat"
-#: builtin.c:3050
+#: builtin.c:3077
#, c-format
msgid "rshift(%f, %f): fractional values will be truncated"
msgstr "rshift(%f, %f): flyttalsvärden kommer huggas av"
-#: builtin.c:3052
+#: builtin.c:3079
#, c-format
msgid "rshift(%f, %f): too large shift value will give strange results"
msgstr "rshift(%f, %f): för stor skiftvärde kommer ge konstiga resultat"
-#: builtin.c:3077 mpfr.c:968
+#: builtin.c:3104 mpfr.c:968
msgid "and: called with less than two arguments"
msgstr "and: anropad med mindre än två argument"
-#: builtin.c:3082
+#: builtin.c:3109
#, c-format
msgid "and: argument %d is non-numeric"
msgstr "and: argument %d är inte numeriskt"
-#: builtin.c:3086
+#: builtin.c:3113
#, c-format
msgid "and: argument %d negative value %g will give strange results"
msgstr "and: argument %d med negativt värde %g kommer ge konstiga resultat"
-#: builtin.c:3109 mpfr.c:1000
+#: builtin.c:3136 mpfr.c:1000
msgid "or: called with less than two arguments"
msgstr "or: anropad med färre än två argmuent"
-#: builtin.c:3114
+#: builtin.c:3141
#, c-format
msgid "or: argument %d is non-numeric"
msgstr "or: argument %d är inte numeriskt"
-#: builtin.c:3118
+#: builtin.c:3145
#, c-format
msgid "or: argument %d negative value %g will give strange results"
msgstr "or: argument %d med negativt värde %g kommer ge konstiga resultat"
-#: builtin.c:3140 mpfr.c:1031
+#: builtin.c:3167 mpfr.c:1031
msgid "xor: called with less than two arguments"
msgstr "xor: anropad med färre än två argument"
-#: builtin.c:3146
+#: builtin.c:3173
#, c-format
msgid "xor: argument %d is non-numeric"
msgstr "xor: argument %d är inte numeriskt"
-#: builtin.c:3150
+#: builtin.c:3177
#, c-format
msgid "xor: argument %d negative value %g will give strange results"
msgstr "xor: argument %d med negativt värde %g kommer ge konstiga resultat"
-#: builtin.c:3175 mpfr.c:787
+#: builtin.c:3202 mpfr.c:787
msgid "compl: received non-numeric argument"
msgstr "compl: fick ett ickenumeriskt argument"
-#: builtin.c:3181
+#: builtin.c:3208
#, c-format
msgid "compl(%f): negative value will give strange results"
msgstr "compl(%f): negativt värde kommer ge konstiga resultat"
-#: builtin.c:3183
+#: builtin.c:3210
#, c-format
msgid "compl(%f): fractional value will be truncated"
msgstr "compl(%f): flyttalsvärde kommer huggas av"
-#: builtin.c:3352
+#: builtin.c:3379
#, c-format
msgid "dcgettext: `%s' is not a valid locale category"
msgstr "dcgettext: \"%s\" är inte en giltig lokalkategori"
@@ -1054,11 +1065,11 @@ msgstr "clear [[filnamn:]N|funktion] - radera tidigare satta brytpunkter."
#: command.y:823
msgid ""
-"commands [num] - starts a list of commands to be executed at a breakpoint"
-"(watchpoint) hit."
+"commands [num] - starts a list of commands to be executed at a "
+"breakpoint(watchpoint) hit."
msgstr ""
-"commands [num] - startar en lista av kommandon att köra när en brytpunkt"
-"(observationspunkt) träffas."
+"commands [num] - startar en lista av kommandon att köra när en "
+"brytpunkt(observationspunkt) träffas."
#: command.y:825
msgid "condition num [expr] - set or clear breakpoint or watchpoint condition."
@@ -1226,7 +1237,7 @@ msgstr "up [N] - flytta N ramar uppåt i stacken."
msgid "watch var - set a watchpoint for a variable."
msgstr "watch var - sätt en observationspunkt för en variabel."
-#: command.y:1011 debug.c:395 msg.c:128
+#: command.y:1011 debug.c:401 msg.c:135
#, c-format
msgid "error: "
msgstr "fel: "
@@ -1264,93 +1275,93 @@ msgstr "ogiltigt tecken"
msgid "undefined command: %s\n"
msgstr "odefinierat kommando: %s\n"
-#: debug.c:246
+#: debug.c:252
msgid "set or show the number of lines to keep in history file."
msgstr "sätt eller visa antalet rader att behålla i historiefilen."
-#: debug.c:248
+#: debug.c:254
msgid "set or show the list command window size."
msgstr "sätt eller visa fönsterstorleken för listkommandot."
-#: debug.c:250
+#: debug.c:256
msgid "set or show gawk output file."
msgstr "sätt eller visa gawks utmatningsfil."
-#: debug.c:252
+#: debug.c:258
msgid "set or show debugger prompt."
msgstr "sätt eller visa felsökningsprompten."
-#: debug.c:254
+#: debug.c:260
msgid "(un)set or show saving of command history (value=on|off)."
msgstr "slå av/på eller visa sparandet av kommandohisterik (värde=on|off)."
-#: debug.c:256
+#: debug.c:262
msgid "(un)set or show saving of options (value=on|off)."
msgstr "slå av/på eller visa sparandet av flaggor (värde=on|off)."
-#: debug.c:258
+#: debug.c:264
msgid "(un)set or show instruction tracing (value=on|off)."
msgstr "slå av/på eller visa instruktionsspårande (värde=on|off)."
-#: debug.c:339
+#: debug.c:345
msgid "program not running."
msgstr "programmet kör inte."
-#: debug.c:442 debug.c:597
+#: debug.c:448 debug.c:606
#, c-format
msgid "can't read source file `%s' (%s)"
msgstr "kan inte läsa källfilen â€%s†(%s)"
-#: debug.c:447
+#: debug.c:453
#, c-format
msgid "source file `%s' is empty.\n"
msgstr "källfilen â€%s†är tom.\n"
-#: debug.c:474
+#: debug.c:480
msgid "no current source file."
msgstr "ingen aktuell källkodsfil."
-#: debug.c:499
+#: debug.c:505
#, c-format
msgid "cannot find source file named `%s' (%s)"
msgstr "kan inte hitta nÃ¥gon källfil med namnet â€%s†(%s)"
-#: debug.c:523
+#: debug.c:529
#, c-format
msgid "WARNING: source file `%s' modified since program compilation.\n"
msgstr "VARNING: källfilen â€%s†ändrad sedan programmet kompilerades.\n"
-#: debug.c:542
+#: debug.c:551
#, c-format
msgid "line number %d out of range; `%s' has %d lines"
msgstr "radnummer %d utanför intervallet; â€%s†har %d rader"
-#: debug.c:602
+#: debug.c:611
#, c-format
msgid "unexpected eof while reading file `%s', line %d"
msgstr "oväntat filslut när filen â€%s†lästes, rad %d"
-#: debug.c:611
+#: debug.c:620
#, c-format
msgid "source file `%s' modified since start of program execution"
msgstr "källfilen â€%s†ändrad sedan början av programkörningen"
-#: debug.c:723
+#: debug.c:732
#, c-format
msgid "Current source file: %s\n"
msgstr "Aktuell källfil: %s\n"
-#: debug.c:724
+#: debug.c:733
#, c-format
msgid "Number of lines: %d\n"
msgstr "Antalet rader: %d\n"
-#: debug.c:731
+#: debug.c:740
#, c-format
msgid "Source file (lines): %s (%d)\n"
msgstr "Källfilen (rader): %s (%d)\n"
-#: debug.c:745
+#: debug.c:754
msgid ""
"Number Disp Enabled Location\n"
"\n"
@@ -1358,54 +1369,54 @@ msgstr ""
"Nummer Visa Aktiv Plats\n"
"\n"
-#: debug.c:756
+#: debug.c:765
#, c-format
msgid "\tno of hits = %ld\n"
msgstr "\tantal träffar = %ld\n"
-#: debug.c:758
+#: debug.c:767
#, c-format
msgid "\tignore next %ld hit(s)\n"
msgstr "\tignorera nästa %ld träffar\n"
-#: debug.c:760 debug.c:900
+#: debug.c:769 debug.c:909
#, c-format
msgid "\tstop condition: %s\n"
msgstr "\tstoppvillkor: %s\n"
-#: debug.c:762 debug.c:902
+#: debug.c:771 debug.c:911
msgid "\tcommands:\n"
msgstr "\tkommandon:\n"
-#: debug.c:784
+#: debug.c:793
#, c-format
msgid "Current frame: "
msgstr "Aktuell ram: "
-#: debug.c:787
+#: debug.c:796
#, c-format
msgid "Called by frame: "
msgstr "Anropad av ramen: "
-#: debug.c:791
+#: debug.c:800
#, c-format
msgid "Caller of frame: "
msgstr "Anropare av ramen: "
-#: debug.c:809
+#: debug.c:818
#, c-format
msgid "None in main().\n"
msgstr "Ingen i main().\n"
-#: debug.c:839
+#: debug.c:848
msgid "No arguments.\n"
msgstr "Inga argument.\n"
-#: debug.c:840
+#: debug.c:849
msgid "No locals.\n"
msgstr "Inga lokala.\n"
-#: debug.c:848
+#: debug.c:857
msgid ""
"All defined variables:\n"
"\n"
@@ -1413,7 +1424,7 @@ msgstr ""
"Alla definierade variabler:\n"
"\n"
-#: debug.c:858
+#: debug.c:867
msgid ""
"All defined functions:\n"
"\n"
@@ -1421,7 +1432,7 @@ msgstr ""
"Alla definierade funktioner:\n"
"\n"
-#: debug.c:877
+#: debug.c:886
msgid ""
"Auto-display variables:\n"
"\n"
@@ -1429,7 +1440,7 @@ msgstr ""
"Automatvisade variabler:\n"
"\n"
-#: debug.c:880
+#: debug.c:889
msgid ""
"Watch variables:\n"
"\n"
@@ -1437,396 +1448,396 @@ msgstr ""
"Observerade variabler:\n"
"\n"
-#: debug.c:1020
+#: debug.c:1029
#, c-format
msgid "no symbol `%s' in current context\n"
msgstr "ingen symbol â€%s†i aktuellt sammanhang\n"
-#: debug.c:1032 debug.c:1418
+#: debug.c:1041 debug.c:1427
#, c-format
msgid "`%s' is not an array\n"
msgstr "â€%s†är inte en vektor\n"
-#: debug.c:1046
+#: debug.c:1055
#, c-format
msgid "$%ld = uninitialized field\n"
msgstr "$%ld = oinitierat fält\n"
-#: debug.c:1067
+#: debug.c:1076
#, c-format
msgid "array `%s' is empty\n"
msgstr "vektorn â€%s†är tom\n"
-#: debug.c:1110 debug.c:1162
+#: debug.c:1119 debug.c:1171
#, c-format
msgid "[\"%s\"] not in array `%s'\n"
msgstr "[\"%s\"] finns inte i vektorn â€%sâ€\n"
-#: debug.c:1166
+#: debug.c:1175
#, c-format
msgid "`%s[\"%s\"]' is not an array\n"
msgstr "â€%s[\"%s\"]†är inte en vektor\n"
-#: debug.c:1227 debug.c:4949
+#: debug.c:1236 debug.c:4964
#, c-format
msgid "`%s' is not a scalar variable"
msgstr "â€%s†är inte en skalär variabel"
-#: debug.c:1249 debug.c:4979
+#: debug.c:1258 debug.c:4994
#, c-format
msgid "attempt to use array `%s[\"%s\"]' in a scalar context"
msgstr "försök att använda vektorn â€%s[\"%s\"]†i skalärt sammanhang"
-#: debug.c:1271 debug.c:4990
+#: debug.c:1280 debug.c:5005
#, c-format
msgid "attempt to use scalar `%s[\"%s\"]' as array"
msgstr "försök att använda skalären â€%s[\"%s\"]†som en vektor"
-#: debug.c:1414
+#: debug.c:1423
#, c-format
msgid "`%s' is a function"
msgstr "â€%s†är en funktion"
-#: debug.c:1456
+#: debug.c:1465
#, c-format
msgid "watchpoint %d is unconditional\n"
msgstr "observationspunkt %d är ovillkorlig\n"
-#: debug.c:1490
+#: debug.c:1499
#, c-format
msgid "No display item numbered %ld"
msgstr "Ingen visningspost med numret %ld"
-#: debug.c:1493
+#: debug.c:1502
#, c-format
msgid "No watch item numbered %ld"
msgstr "Ingen observationspost med numret %ld"
-#: debug.c:1519
+#: debug.c:1528
#, c-format
msgid "%d: [\"%s\"] not in array `%s'\n"
msgstr "%d: [\"%s\"] finns inte i vektorn â€%sâ€\n"
-#: debug.c:1758
+#: debug.c:1767
msgid "attempt to use scalar value as array"
msgstr "försök att använda ett skalärt värde som vektor"
-#: debug.c:1847
+#: debug.c:1856
#, c-format
msgid "Watchpoint %d deleted because parameter is out of scope.\n"
msgstr ""
"Observationspunkt %d raderad för att parametern är utanför sin räckvidd.\n"
-#: debug.c:1858
+#: debug.c:1867
#, c-format
msgid "Display %d deleted because parameter is out of scope.\n"
msgstr "Visning %d raderad för att parametern är utanför sin räckvidd.\n"
-#: debug.c:1891
+#: debug.c:1900
#, c-format
msgid " in file `%s', line %d\n"
msgstr " i filen â€%sâ€, rad %d\n"
-#: debug.c:1912
+#: debug.c:1921
#, c-format
msgid " at `%s':%d"
msgstr " vid â€%sâ€:%d"
-#: debug.c:1928 debug.c:1991
+#: debug.c:1937 debug.c:2000
#, c-format
msgid "#%ld\tin "
msgstr "#%ld\ti "
-#: debug.c:1965
+#: debug.c:1974
#, c-format
msgid "More stack frames follow ...\n"
msgstr "Fler stackramar följer …\n"
-#: debug.c:2008
+#: debug.c:2017
msgid "invalid frame number"
msgstr "Ogiltigt ramnummer"
-#: debug.c:2180
+#: debug.c:2200
#, c-format
msgid "Note: breakpoint %d (enabled, ignore next %ld hits), also set at %s:%d"
msgstr ""
"Observera: brytpunkt %d (aktiverad, ingorera följande %ld träffar), är också "
"satt vid %s:%d"
-#: debug.c:2187
+#: debug.c:2207
#, c-format
msgid "Note: breakpoint %d (enabled), also set at %s:%d"
msgstr "Observera: brytpunkt %d (aktiverad), är också satt vid %s:%d"
-#: debug.c:2194
+#: debug.c:2214
#, c-format
msgid "Note: breakpoint %d (disabled, ignore next %ld hits), also set at %s:%d"
msgstr ""
"Observera: brytpunkt %d (avaktiverad, intorera följande %ld träffar), är "
"också satt vid %s:%d"
-#: debug.c:2201
+#: debug.c:2221
#, c-format
msgid "Note: breakpoint %d (disabled), also set at %s:%d"
msgstr "Observera: brytpunkt %d (avaktiverad), är också satt vid %s:%d"
-#: debug.c:2218
+#: debug.c:2238
#, c-format
msgid "Breakpoint %d set at file `%s', line %d\n"
msgstr "Brytpunkt %d satt vid filen â€%sâ€, rad %d\n"
-#: debug.c:2320
+#: debug.c:2340
#, c-format
msgid "Can't set breakpoint in file `%s'\n"
msgstr "Kan inte sätta en brytpunkt i filen â€%sâ€\n"
-#: debug.c:2349 debug.c:2472 debug.c:3330
+#: debug.c:2369 debug.c:2492 debug.c:3350
#, c-format
msgid "line number %d in file `%s' out of range"
msgstr "radnummer %d i filen â€%s†är utanför tillÃ¥tet intervall"
-#: debug.c:2353
+#: debug.c:2373
#, c-format
msgid "Can't find rule!!!\n"
msgstr "Kan inte hitta regeln!!!\n"
-#: debug.c:2355
+#: debug.c:2375
#, c-format
msgid "Can't set breakpoint at `%s':%d\n"
msgstr "Kan inte sätta än brytpunkt vid â€%sâ€:%d\n"
-#: debug.c:2367
+#: debug.c:2387
#, c-format
msgid "Can't set breakpoint in function `%s'\n"
msgstr "Kan inte sätta en brytpunkt i funktionen â€%sâ€\n"
-#: debug.c:2383
+#: debug.c:2403
#, c-format
msgid "breakpoint %d set at file `%s', line %d is unconditional\n"
msgstr "brytpunkt %d satt i filen â€%sâ€, rad %d är ovillkorlig\n"
-#: debug.c:2488 debug.c:2510
+#: debug.c:2508 debug.c:2530
#, c-format
msgid "Deleted breakpoint %d"
msgstr "Raderade brytpunkt %d"
-#: debug.c:2494
+#: debug.c:2514
#, c-format
msgid "No breakpoint(s) at entry to function `%s'\n"
msgstr "Inga brytpunkter vid ingÃ¥ngen till funktionen â€%sâ€\n"
-#: debug.c:2521
+#: debug.c:2541
#, c-format
msgid "No breakpoint at file `%s', line #%d\n"
msgstr "Ingen brytpunkt i filen â€%sâ€, rad nr. %d\n"
-#: debug.c:2576 debug.c:2617 debug.c:2637 debug.c:2680
+#: debug.c:2596 debug.c:2637 debug.c:2657 debug.c:2700
msgid "invalid breakpoint number"
msgstr "ogiltigt brytpunktsnummer"
-#: debug.c:2592
+#: debug.c:2612
msgid "Delete all breakpoints? (y or n) "
msgstr "Radera alla brytpunkter? (j eller n)"
-#: debug.c:2593 debug.c:2903 debug.c:2956
+#: debug.c:2613 debug.c:2923 debug.c:2976
msgid "y"
msgstr "j"
-#: debug.c:2642
+#: debug.c:2662
#, c-format
msgid "Will ignore next %ld crossing(s) of breakpoint %d.\n"
msgstr "Kommer ignorera följande %ld passager av brytpunkt %d.\n"
-#: debug.c:2646
+#: debug.c:2666
#, c-format
msgid "Will stop next time breakpoint %d is reached.\n"
msgstr "Kommer stanna nästa gång brytpunkt %d nås.\n"
-#: debug.c:2763
+#: debug.c:2783
#, c-format
msgid "Can only debug programs provided with the `-f' option.\n"
msgstr "Kan bara felsöka program som getts flaggan â€-fâ€.\n"
-#: debug.c:2888
+#: debug.c:2908
#, c-format
msgid "Failed to restart debugger"
msgstr "Misslyckades att starta om felsökaren"
-#: debug.c:2902
+#: debug.c:2922
msgid "Program already running. Restart from beginning (y/n)? "
msgstr "Programmet kör redan. Starta om från början (j/n)? "
-#: debug.c:2906
+#: debug.c:2926
#, c-format
msgid "Program not restarted\n"
msgstr "Programmet inte omstartat\n"
-#: debug.c:2916
+#: debug.c:2936
#, c-format
msgid "error: cannot restart, operation not allowed\n"
msgstr "fel: kan inte starta om, åtgärden är inte tillåten\n"
-#: debug.c:2922
+#: debug.c:2942
#, c-format
msgid "error (%s): cannot restart, ignoring rest of the commands\n"
msgstr "fel (%s): kan inte starta om, ingorerar resten av kommandona\n"
-#: debug.c:2930
+#: debug.c:2950
#, c-format
msgid "Starting program: \n"
msgstr "Startar programmet: \n"
-#: debug.c:2939
+#: debug.c:2959
#, c-format
msgid "Program exited %s with exit value: %d\n"
msgstr "Programmet avslutade %s med slutvärde: %d\n"
-#: debug.c:2955
+#: debug.c:2975
msgid "The program is running. Exit anyway (y/n)? "
msgstr "Programmet kör. Avsluta ändå (j/n)? "
-#: debug.c:2990
+#: debug.c:3010
#, c-format
msgid "Not stopped at any breakpoint; argument ignored.\n"
msgstr "Inte stoppad vid någon brytpunkt, argumentet ignoreras.\n"
-#: debug.c:2995
+#: debug.c:3015
#, c-format
msgid "invalid breakpoint number %d."
msgstr "ogiltigt brytpunktsnummer %d."
-#: debug.c:3000
+#: debug.c:3020
#, c-format
msgid "Will ignore next %ld crossings of breakpoint %d.\n"
msgstr "Kommer ignorera de nästa %ld passagerna av brytpunkt %d.\n"
-#: debug.c:3187
+#: debug.c:3207
#, c-format
msgid "'finish' not meaningful in the outermost frame main()\n"
msgstr "â€finish†är inte meningsfullt i den yttersta ramen main()\n"
-#: debug.c:3192
+#: debug.c:3212
#, c-format
msgid "Run till return from "
msgstr "Kör till retur från "
-#: debug.c:3235
+#: debug.c:3255
#, c-format
msgid "'return' not meaningful in the outermost frame main()\n"
msgstr "â€return†är inte meningsfullt i den yttersta ramen main()\n"
-#: debug.c:3349
+#: debug.c:3369
#, c-format
msgid "Can't find specified location in function `%s'\n"
msgstr "Kan inte hitta angiven plats i funktionen â€%sâ€\n"
-#: debug.c:3357
+#: debug.c:3377
#, c-format
msgid "invalid source line %d in file `%s'"
msgstr "ogiltig källrad %d i filen â€%sâ€"
-#: debug.c:3372
+#: debug.c:3392
#, c-format
msgid "Can't find specified location %d in file `%s'\n"
msgstr "Kan inte hitta angiven plats %d i filen â€%sâ€\n"
-#: debug.c:3404
+#: debug.c:3424
#, c-format
msgid "element not in array\n"
msgstr "elementet finns inte i vektorn\n"
-#: debug.c:3404
+#: debug.c:3424
#, c-format
msgid "untyped variable\n"
msgstr "otypad variabel\n"
-#: debug.c:3446
+#: debug.c:3466
#, c-format
msgid "Stopping in %s ...\n"
msgstr "Stannar i %s …\n"
-#: debug.c:3523
+#: debug.c:3543
#, c-format
msgid "'finish' not meaningful with non-local jump '%s'\n"
msgstr "â€finish†är inte meningsfullt med icke lokalt hopp â€%sâ€\n"
-#: debug.c:3530
+#: debug.c:3550
#, c-format
msgid "'until' not meaningful with non-local jump '%s'\n"
msgstr "â€until†är inte meningsfullt med icke lokalt hopp â€%sâ€\n"
-#: debug.c:4165
+#: debug.c:4185
msgid "\t------[Enter] to continue or q [Enter] to quit------"
msgstr ""
"\t------[Retur] för att fortsätta eller a [Retur] för att avsluta------"
-#: debug.c:4166
+#: debug.c:4186
msgid "q"
msgstr "a"
-#: debug.c:4986
+#: debug.c:5001
#, c-format
msgid "[\"%s\"] not in array `%s'"
msgstr "[\"%s\"] finns inte i vektorn â€%sâ€"
-#: debug.c:5192
+#: debug.c:5207
#, c-format
msgid "sending output to stdout\n"
msgstr "skickar utdata till standard ut\n"
-#: debug.c:5232
+#: debug.c:5247
msgid "invalid number"
msgstr "ogiltigt tal"
-#: debug.c:5366
+#: debug.c:5381
#, c-format
msgid "`%s' not allowed in current context; statement ignored"
msgstr "â€%s†är inte tillÃ¥tet i det aktuella sammanhanget; satsen ignoreras"
-#: debug.c:5374
+#: debug.c:5389
msgid "`return' not allowed in current context; statement ignored"
msgstr ""
"â€return†är inte tillÃ¥tet i det aktuella sammanhanget; satsen ignoreras"
-#: debug.c:5575
+#: debug.c:5590
#, c-format
msgid "No symbol `%s' in current context"
msgstr "Ingen symbol â€%s†i aktuell omgivning"
-#: dfa.c:998 dfa.c:1001 dfa.c:1021 dfa.c:1031 dfa.c:1043 dfa.c:1094 dfa.c:1103
-#: dfa.c:1106 dfa.c:1111 dfa.c:1124 dfa.c:1192
+#: dfa.c:1118 dfa.c:1121 dfa.c:1142 dfa.c:1150 dfa.c:1162 dfa.c:1197
+#: dfa.c:1206 dfa.c:1209 dfa.c:1214 dfa.c:1228 dfa.c:1275
msgid "unbalanced ["
msgstr "obalanserad ["
-#: dfa.c:1052
+#: dfa.c:1174
msgid "invalid character class"
msgstr "ogiltig teckenklass"
-#: dfa.c:1229
+#: dfa.c:1316
msgid "character class syntax is [[:space:]], not [:space:]"
msgstr "syntaxen för teckenklass är [[:space:]], inte [:space:]"
-#: dfa.c:1281
+#: dfa.c:1366
msgid "unfinished \\ escape"
msgstr "oavslutad \\-följd"
-#: dfa.c:1428 regcomp.c:161
+#: dfa.c:1513 regcomp.c:161
msgid "Invalid content of \\{\\}"
msgstr "Ogiltigt innehåll i \\{\\}"
-#: dfa.c:1431 regcomp.c:176
+#: dfa.c:1516 regcomp.c:176
msgid "Regular expression too big"
msgstr "Reguljärt uttryck för stort"
-#: dfa.c:1816
+#: dfa.c:1936
msgid "unbalanced ("
msgstr "obalanserad ("
-#: dfa.c:1943
+#: dfa.c:2062
msgid "no syntax specified"
msgstr "ingen syntax angiven"
-#: dfa.c:1951
+#: dfa.c:2070
msgid "unbalanced )"
msgstr "obalanserad )"
@@ -1845,11 +1856,11 @@ msgstr "okänd op-kod %d"
msgid "opcode %s not an operator or keyword"
msgstr "op-kod %s är inte en operator eller ett nyckelord"
-#: eval.c:471
+#: eval.c:472
msgid "buffer overflow in genflags2str"
msgstr "buffertöverflöd i genflags2str"
-#: eval.c:674
+#: eval.c:675
#, c-format
msgid ""
"\n"
@@ -1860,71 +1871,71 @@ msgstr ""
"\t# Funktionsanropsstack:\n"
"\n"
-#: eval.c:703
+#: eval.c:704
msgid "`IGNORECASE' is a gawk extension"
msgstr "\"IGNORECASE\" är en gawk-utökning"
-#: eval.c:735
+#: eval.c:736
msgid "`BINMODE' is a gawk extension"
msgstr "\"BINMODE\" är en gawk-utökning"
-#: eval.c:793
+#: eval.c:794
#, c-format
msgid "BINMODE value `%s' is invalid, treated as 3"
msgstr "BINMODE-värde \"%s\" är ogiltigt, behandlas som 3"
-#: eval.c:884
+#: eval.c:885
#, c-format
msgid "bad `%sFMT' specification `%s'"
msgstr "felaktig \"%sFMT\"-specifikation \"%s\""
-#: eval.c:968
+#: eval.c:969
msgid "turning off `--lint' due to assignment to `LINT'"
msgstr "slår av \"--lint\" på grund av en tilldelning till \"LINT\""
-#: eval.c:1146
+#: eval.c:1147
#, c-format
msgid "reference to uninitialized argument `%s'"
msgstr "referens till icke initierat argument \"%s\""
-#: eval.c:1147
+#: eval.c:1148
#, c-format
msgid "reference to uninitialized variable `%s'"
msgstr "referens till icke initierad variabel \"%s\""
-#: eval.c:1165
+#: eval.c:1166
msgid "attempt to field reference from non-numeric value"
msgstr "försök att fältreferera från ickenumeriskt värde"
-#: eval.c:1167
+#: eval.c:1168
msgid "attempt to field reference from null string"
msgstr "försök till fältreferens från en tom sträng"
-#: eval.c:1175
+#: eval.c:1176
#, c-format
msgid "attempt to access field %ld"
msgstr "försök att komma åt fält nummer %ld"
-#: eval.c:1184
+#: eval.c:1185
#, c-format
msgid "reference to uninitialized field `$%ld'"
msgstr "referens till icke initierat fält \"$%ld\""
-#: eval.c:1271
+#: eval.c:1272
#, c-format
msgid "function `%s' called with more arguments than declared"
msgstr "funktionen \"%s\" anropad med fler argument än vad som deklarerats"
-#: eval.c:1466
+#: eval.c:1473
#, c-format
msgid "unwind_stack: unexpected type `%s'"
msgstr "unwind_stack: oväntad typ \"%s\""
-#: eval.c:1562
+#: eval.c:1569
msgid "division by zero attempted in `/='"
msgstr "försökte dividera med noll i \"/=\""
-#: eval.c:1569
+#: eval.c:1576
#, c-format
msgid "division by zero attempted in `%%='"
msgstr "försökte dividera med noll i \"%%=\""
@@ -1937,7 +1948,7 @@ msgstr "utökningar är inte tillåtna i sandlådeläge"
msgid "-l / @load are gawk extensions"
msgstr "-l / @load är gawk-utökningar"
-#: ext.c:95 ext.c:177
+#: ext.c:95
msgid "load_ext: received NULL lib_name"
msgstr "load_ext: mottog NULL-lib_name"
@@ -1968,6 +1979,10 @@ msgstr ""
msgid "`extension' is a gawk extension"
msgstr "\"extension\" är en gawk-utökning"
+#: ext.c:177
+msgid "extension: received NULL lib_name"
+msgstr "utökning: mottog NULL-lib_name"
+
#: ext.c:180
#, c-format
msgid "extension: cannot open library `%s' (%s)"
@@ -1989,37 +2004,37 @@ msgstr "extension: biblioteket â€%sâ€: kan inte anropa funktionen â€%s†(%s
msgid "make_builtin: missing function name"
msgstr "make_builtin: funktionsnamn saknas"
-#: ext.c:238
+#: ext.c:236
#, c-format
msgid "make_builtin: can't redefine function `%s'"
msgstr "make_builtin: det gÃ¥r inte att definiera om funktionen â€%sâ€"
-#: ext.c:242
+#: ext.c:240
#, c-format
msgid "make_builtin: function `%s' already defined"
msgstr "make_builtin: funktionen â€%s†är redan definierad"
-#: ext.c:246
+#: ext.c:244
#, c-format
msgid "make_builtin: function name `%s' previously defined"
msgstr "make_builtin: funktionsnamnet â€%s†är definierat sedan tidigare"
-#: ext.c:248
+#: ext.c:246
#, c-format
msgid "make_builtin: can't use gawk built-in `%s' as function name"
msgstr ""
"make_builtin: kan inte använda gawks inbyggda â€%s†som ett funktionsnamn"
-#: ext.c:251 ext.c:304
+#: ext.c:249 ext.c:304
#, c-format
msgid "make_builtin: negative argument count for function `%s'"
msgstr "make_builtin: negativt argumentantal för funktionen \"%s\""
-#: ext.c:278
+#: ext.c:276
msgid "extension: missing function name"
msgstr "extension: saknar funktionsnamn"
-#: ext.c:283
+#: ext.c:279 ext.c:283
#, c-format
msgid "extension: illegal character `%c' in function name `%s'"
msgstr "extension: ogiltigt tecken \"%c\" i funktionsnamnet \"%s\""
@@ -2045,139 +2060,143 @@ msgid "extension: can't use gawk built-in `%s' as function name"
msgstr ""
"extension: kan inte använda gawks inbyggda \"%s\" som ett funktionsnamn"
-#: ext.c:374
+#: ext.c:375
#, 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:377
+#: ext.c:378
#, c-format
msgid "function `%s': missing argument #%d"
msgstr "funktionen \"%s\": argument %d saknas"
-#: ext.c:394
+#: ext.c:395
#, 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:398
+#: ext.c:399
#, 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:412
+#: ext.c:413
msgid "dynamic loading of library not supported"
msgstr "dynamisk laddning av bibliotek stödjs inte"
-#: extension/filefuncs.c:97
+#: extension/filefuncs.c:159
msgid "chdir: called with incorrect number of arguments, expecting 1"
msgstr "chdir: anropad med felaktigt antal argument, förväntade 1"
-#: extension/filefuncs.c:343
+#: extension/filefuncs.c:439
#, c-format
msgid "stat: unable to read symbolic link `%s'"
msgstr "stat: kan inte läsa den symboliska länken â€%sâ€"
-#: extension/filefuncs.c:376
+#: extension/filefuncs.c:472
msgid "stat: called with wrong number of arguments"
msgstr "stat: anropad med fel antal argument"
-#: extension/filefuncs.c:383
+#: extension/filefuncs.c:479
msgid "stat: bad parameters"
msgstr "stat: felaktiga parametrar"
-#: extension/filefuncs.c:437
+#: extension/filefuncs.c:533
#, c-format
msgid "fts init: could not create variable %s"
msgstr "fts init: kunde inte skapa variabeln %s"
-#: extension/filefuncs.c:460
+#: extension/filefuncs.c:554
+msgid "fts is not supported on this system"
+msgstr "fts stödjs inte på detta system"
+
+#: extension/filefuncs.c:573
msgid "fill_stat_element: could not create array"
msgstr "fill_stat_element: kunde inte skapa en vektor"
-#: extension/filefuncs.c:469
+#: extension/filefuncs.c:582
msgid "fill_stat_element: could not set element"
msgstr "fill_stat_element: kunde inte sätta ett element"
-#: extension/filefuncs.c:484
+#: extension/filefuncs.c:597
msgid "fill_path_element: could not set element"
msgstr "fill_path_element: kunde inte sätta ett element"
-#: extension/filefuncs.c:500
+#: extension/filefuncs.c:613
msgid "fill_error_element: could not set element"
msgstr "fill_error_element: kunde inte sätta ett element"
-#: extension/filefuncs.c:547 extension/filefuncs.c:594
+#: extension/filefuncs.c:660 extension/filefuncs.c:707
msgid "fts-process: could not create array"
msgstr "fts-process: kunde inte skapa en vektor"
-#: extension/filefuncs.c:557 extension/filefuncs.c:604
-#: extension/filefuncs.c:622
+#: extension/filefuncs.c:670 extension/filefuncs.c:717
+#: extension/filefuncs.c:735
msgid "fts-process: could not set element"
msgstr "fts-process: kunde inte sätta ett element"
-#: extension/filefuncs.c:671
+#: extension/filefuncs.c:784
msgid "fts: called with incorrect number of arguments, expecting 3"
msgstr "fts: anropad med felaktigt antal argument, förväntade 3"
-#: extension/filefuncs.c:674
+#: extension/filefuncs.c:787
msgid "fts: bad first parameter"
msgstr "fts: felaktig första parameter"
-#: extension/filefuncs.c:680
+#: extension/filefuncs.c:793
msgid "fts: bad second parameter"
msgstr "fts: felaktig andra parameter"
-#: extension/filefuncs.c:686
+#: extension/filefuncs.c:799
msgid "fts: bad third parameter"
msgstr "fts: felaktig tredje parameter"
-#: extension/filefuncs.c:693
+#: extension/filefuncs.c:806
msgid "fts: could not flatten array\n"
msgstr "fts: kunde inte platta till en vektor\n"
-#: extension/filefuncs.c:711
+#: extension/filefuncs.c:824
msgid "fts: ignoring sneaky FTS_NOSTAT flag. nyah, nyah, nyah."
msgstr "fts: ignorerar lömsk FTS_NOSTAT-flagga, nä, nä, nä."
-#: extension/filefuncs.c:728
+#: extension/filefuncs.c:841
msgid "fts: clear_array() failed\n"
msgstr "fts: clear_array() misslyckades\n"
-#: extension/fnmatch.c:98
+#: extension/fnmatch.c:112
msgid "fnmatch: called with less than three arguments"
msgstr "fnmatch: anropad färre an tre argument"
-#: extension/fnmatch.c:101
+#: extension/fnmatch.c:115
msgid "fnmatch: called with more than three arguments"
msgstr "fnmatch: anropad med mer än tre argument"
-#: extension/fnmatch.c:104
+#: extension/fnmatch.c:118
msgid "fnmatch: could not get first argument"
msgstr "fnmatch: kunde inte hämta första argumentet"
-#: extension/fnmatch.c:109
+#: extension/fnmatch.c:123
msgid "fnmatch: could not get second argument"
msgstr "fnmatch: kunde inte hämta andra argumentet"
-#: extension/fnmatch.c:114
+#: extension/fnmatch.c:128
msgid "fnmatch: could not get third argument"
msgstr "fnmatch: kunde inte hämta ett tredje argument"
-#: extension/fnmatch.c:127
+#: extension/fnmatch.c:141
msgid "fnmatch is not implemented on this system\n"
msgstr "fnmatch är inte implementerat på detta system\n"
-#: extension/fnmatch.c:159
+#: extension/fnmatch.c:173
msgid "fnmatch init: could not add FNM_NOMATCH variable"
msgstr "fnmatch init: kunde inte lägga till en FNM_NOMATCH-variabel"
-#: extension/fnmatch.c:169
+#: extension/fnmatch.c:183
#, c-format
msgid "fnmatch init: could not set array element %s"
msgstr "fnmatch init: kunde inte sätta vektorelement %s"
-#: extension/fnmatch.c:179
+#: extension/fnmatch.c:193
msgid "fnmatch init: could not install FNM array"
msgstr "fnmatch init: kunde inte installera en FNM-vektor"
@@ -2201,89 +2220,89 @@ msgstr "wait: anropad utan argument"
msgid "wait: called with too many arguments"
msgstr "wait: anropad med för många argument"
-#: extension/inplace.c:110
+#: extension/inplace.c:130
msgid "inplace_begin: in-place editing already active"
msgstr "inplace_begin: redigering på plats är redan aktivt"
-#: extension/inplace.c:113 extension/inplace.c:187
+#: extension/inplace.c:133 extension/inplace.c:207
#, c-format
msgid "inplace_begin: expects 2 arguments but called with %d"
msgstr "inplace_begin: förväntar sig 2 argument men anropad med %d"
-#: extension/inplace.c:116
+#: extension/inplace.c:136
msgid "inplace_begin: cannot retrieve 1st argument as a string filename"
msgstr "inplace_begin: kan inte hämta 1:a argumentet som en filnamnssträng"
-#: extension/inplace.c:124
+#: extension/inplace.c:144
#, c-format
msgid "inplace_begin: disabling in-place editing for invalid FILENAME `%s'"
msgstr ""
"inplace_begin: avaktiverar redigering pÃ¥ plats för ogiltigt FILNAMN â€%sâ€"
-#: extension/inplace.c:131
+#: extension/inplace.c:151
#, c-format
msgid "inplace_begin: Cannot stat `%s' (%s)"
msgstr "inplace_begin: kan inte ta status pÃ¥ â€%s†(%s)"
-#: extension/inplace.c:138
+#: extension/inplace.c:158
#, c-format
msgid "inplace_begin: `%s' is not a regular file"
msgstr "inplace_begin: â€%s†är inte en vanlig fil"
-#: extension/inplace.c:149
+#: extension/inplace.c:169
#, c-format
msgid "inplace_begin: mkstemp(`%s') failed (%s)"
msgstr "inplace_begin: mkstemp(â€%sâ€) misslyckades (%s)"
-#: extension/inplace.c:158
+#: extension/inplace.c:178
#, c-format
msgid "inplace_begin: chmod failed (%s)"
msgstr "inplace_begin: chmod misslyckades (%s)"
-#: extension/inplace.c:165
+#: extension/inplace.c:185
#, c-format
msgid "inplace_begin: dup(stdout) failed (%s)"
msgstr "inplace_begin: dup(standard ut) misslyckades (%s)"
-#: extension/inplace.c:168
+#: extension/inplace.c:188
#, c-format
msgid "inplace_begin: dup2(%d, stdout) failed (%s)"
msgstr "inplace_begin: dup2(%d, standard ut) misslyckades (%s)"
-#: extension/inplace.c:171
+#: extension/inplace.c:191
#, c-format
msgid "inplace_begin: close(%d) failed (%s)"
msgstr "inplace_begin: close(%d) misslyckades (%s)"
-#: extension/inplace.c:190
+#: extension/inplace.c:210
msgid "inplace_end: cannot retrieve 1st argument as a string filename"
msgstr "inplace_end: kan inte hämta 1:a argumentet som en filnamnssträng"
-#: extension/inplace.c:197
+#: extension/inplace.c:217
msgid "inplace_end: in-place editing not active"
msgstr "inplace_end: redigering på plats är inte aktivt"
-#: extension/inplace.c:203
+#: extension/inplace.c:223
#, c-format
msgid "inplace_end: dup2(%d, stdout) failed (%s)"
msgstr "inplace_end: dup2(%d, standard ut) misslyckades (%s)"
-#: extension/inplace.c:206
+#: extension/inplace.c:226
#, c-format
msgid "inplace_end: close(%d) failed (%s)"
msgstr "inplace_end: close(%d) misslyckades (%s)"
-#: extension/inplace.c:210
+#: extension/inplace.c:230
#, c-format
msgid "inplace_end: fsetpos(stdout) failed (%s)"
msgstr "inplace_end: fsetpos(standard ut) misslyckades (%s)"
-#: extension/inplace.c:223
+#: extension/inplace.c:243
#, c-format
msgid "inplace_end: link(`%s', `%s') failed (%s)"
msgstr "inplace_end: link(â€%sâ€, â€%sâ€) misslyckades (%s)"
-#: extension/inplace.c:229
+#: extension/inplace.c:253
#, c-format
msgid "inplace_end: rename(`%s', `%s') failed (%s)"
msgstr "inplace_end: rename(â€%sâ€, â€%sâ€) misslyckades (%s)"
@@ -2312,175 +2331,175 @@ msgstr "chr: anropad utan argument"
msgid "chr: called with inappropriate argument(s)"
msgstr "chr: anropad med felaktiga argument"
-#: extension/readdir.c:203
+#: extension/readdir.c:281
#, c-format
msgid "dir_take_control_of: opendir/fdopendir failed: %s"
msgstr "dir_take_control_of: opendir/fdopendir misslyckades: %s"
-#: extension/readfile.c:84
+#: extension/readfile.c:113
msgid "readfile: called with too many arguments"
msgstr "readfile: anropad med för många argument"
-#: extension/readfile.c:118
+#: extension/readfile.c:137
msgid "readfile: called with no arguments"
msgstr "readfile: anropad utan argument"
-#: extension/rwarray.c:120
+#: extension/rwarray.c:124
msgid "writea: called with too many arguments"
msgstr "writea: anropad med för många argument"
-#: extension/rwarray.c:127
+#: extension/rwarray.c:131
#, c-format
msgid "do_writea: argument 0 is not a string\n"
msgstr "do_writea: argument 0 är inte en sträng\n"
-#: extension/rwarray.c:133
+#: extension/rwarray.c:137
#, c-format
msgid "do_writea: argument 1 is not an array\n"
msgstr "do_writea: argument 1 är inte en vektor\n"
-#: extension/rwarray.c:180
+#: extension/rwarray.c:184
#, c-format
msgid "write_array: could not flatten array\n"
msgstr "write_array: kunde inte platta till vektor\n"
-#: extension/rwarray.c:194
+#: extension/rwarray.c:198
#, c-format
msgid "write_array: could not release flattened array\n"
msgstr "write_array: kunde inte släppa en tillplattad vektor\n"
-#: extension/rwarray.c:276
+#: extension/rwarray.c:280
msgid "reada: called with too many arguments"
msgstr "reada: anropad med för många argument"
-#: extension/rwarray.c:283
+#: extension/rwarray.c:287
#, c-format
msgid "do_reada: argument 0 is not a string\n"
msgstr "do_reada: argument 0 är inte en sträng\n"
-#: extension/rwarray.c:289
+#: extension/rwarray.c:293
#, c-format
msgid "do_reada: argument 1 is not an array\n"
msgstr "do_reada: argument 1 är inte en vektor\n"
-#: extension/rwarray.c:333
+#: extension/rwarray.c:337
#, c-format
msgid "do_reada: clear_array failed\n"
msgstr "do_reada: clear_array misslyckades\n"
-#: extension/rwarray.c:370
+#: extension/rwarray.c:374
#, c-format
msgid "read_array: set_array_element failed\n"
msgstr "read_array: set_array_element misslyckades\n"
-#: extension/time.c:81
+#: extension/time.c:113
msgid "gettimeofday: ignoring arguments"
msgstr "gettimeofday: ignorerar argumenten"
-#: extension/time.c:112
+#: extension/time.c:144
msgid "gettimeofday: not supported on this platform"
msgstr "gettimeofday: stödjs inte på denna plattform"
-#: extension/time.c:133
+#: extension/time.c:165
msgid "sleep: called with too many arguments"
msgstr "sleep: anropad med för många argument"
-#: extension/time.c:136
+#: extension/time.c:168
msgid "sleep: missing required numeric argument"
msgstr "sleep: nödvändigt numeriskt argument saknas"
-#: extension/time.c:142
+#: extension/time.c:174
msgid "sleep: argument is negative"
msgstr "sleep: argumentet är negativt"
-#: extension/time.c:176
+#: extension/time.c:208
msgid "sleep: not supported on this platform"
msgstr "sleep: stödjs inte på denna plattform"
-#: field.c:339
+#: field.c:345
msgid "NF set to negative value"
msgstr "NF satt till ett negativt värde"
-#: field.c:964 field.c:971 field.c:975
+#: field.c:971 field.c:978 field.c:982
msgid "split: fourth argument is a gawk extension"
msgstr "split: fjärde argumentet är en gawk-utökning"
-#: field.c:968
+#: field.c:975
msgid "split: fourth argument is not an array"
msgstr "split: fjärde argumentet är inte en vektor"
-#: field.c:982
+#: field.c:989
msgid "split: second argument is not an array"
msgstr "split: andra argumentet är inte en vektor"
-#: field.c:986
+#: field.c:993
msgid "split: cannot use the same array for second and fourth args"
msgstr ""
"split: det går inte att använda samma vektor som andra och fjärde argument"
-#: field.c:991
+#: field.c:998
msgid "split: cannot use a subarray of second arg for fourth arg"
msgstr ""
"split: det går inte att använda en delvektor av andra argumentet som fjärde "
"argument"
-#: field.c:994
+#: field.c:1001
msgid "split: cannot use a subarray of fourth arg for second arg"
msgstr ""
"split: det går inte att använda en delvektor av fjärde argumentet som andra "
"argument"
-#: field.c:1023
+#: field.c:1032
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:1063
+#: field.c:1072
msgid "patsplit: fourth argument is not an array"
msgstr "patsplit: fjärde argumentet är inte en vektor"
-#: field.c:1068
+#: field.c:1077
msgid "patsplit: second argument is not an array"
msgstr "patsplit: andra argumentet är inte en vektor"
-#: field.c:1074
+#: field.c:1083
msgid "patsplit: third argument must be non-null"
msgstr "patsplit: tredje argumentet får inte vara tomt"
-#: field.c:1078
+#: field.c:1087
msgid "patsplit: cannot use the same array for second and fourth args"
msgstr ""
"patsplit: det går inte att använda samma vektor som andra och fjärde argument"
-#: field.c:1083
+#: field.c:1092
msgid "patsplit: cannot use a subarray of second arg for fourth arg"
msgstr ""
"patsplit: det går inte att använda en delvektor av andra argumentet som "
"fjärde argument"
-#: field.c:1086
+#: field.c:1095
msgid "patsplit: cannot use a subarray of fourth arg for second arg"
msgstr ""
"patsplit: det går inte att använda en delvektor av fjärde argumentet som "
"andra argument"
-#: field.c:1124
+#: field.c:1133
msgid "`FIELDWIDTHS' is a gawk extension"
msgstr "\"FIELDWIDTHS\" är en gawk-utökning"
-#: field.c:1188
+#: field.c:1197
#, c-format
msgid "invalid FIELDWIDTHS value, near `%s'"
msgstr "ogiltigt FIELDWITHS-värde i närheten av \"%s\""
-#: field.c:1261
+#: field.c:1270
msgid "null string for `FS' is a gawk extension"
msgstr "tom sträng som \"FS\" är en gawk-utökning"
-#: field.c:1265
+#: field.c:1274
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:1384
+#: field.c:1393
msgid "`FPAT' is a gawk extension"
msgstr "\"FPAT\" är en gawk-utökning"
@@ -2496,361 +2515,361 @@ msgstr "node_to_awk_value: mottog null-nod"
msgid "node_to_awk_value: received null val"
msgstr "node_to_awk_value: mottog null-värde"
-#: gawkapi.c:808
+#: gawkapi.c:807
msgid "remove_element: received null array"
msgstr "remove_element: fick en null-vektor"
-#: gawkapi.c:811
+#: gawkapi.c:810
msgid "remove_element: received null subscript"
msgstr "remove_element: mottog null-index"
-#: gawkapi.c:943
+#: gawkapi.c:947
#, c-format
msgid "api_flatten_array: could not convert index %d\n"
msgstr "api_flatten_array: kunde inte konvertera index %d\n"
-#: gawkapi.c:948
+#: gawkapi.c:952
#, c-format
msgid "api_flatten_array: could not convert value %d\n"
msgstr "api_flatten_array: kunde inte konvertera värdet %d\n"
-#: getopt.c:603 getopt.c:632
+#: getopt.c:604 getopt.c:633
#, c-format
msgid "%s: option '%s' is ambiguous; possibilities:"
msgstr "%s: flaggan â€%s†är tvetydig; möjligheter:"
-#: getopt.c:678 getopt.c:682
+#: getopt.c:679 getopt.c:683
#, c-format
msgid "%s: option '--%s' doesn't allow an argument\n"
msgstr "%s: flaggan \"--%s\" tillåter inte något argument\n"
-#: getopt.c:691 getopt.c:696
+#: getopt.c:692 getopt.c:697
#, c-format
msgid "%s: option '%c%s' doesn't allow an argument\n"
msgstr "%s: flaggan \"%c%s\" tillåter inte något argument\n"
-#: getopt.c:739 getopt.c:758
+#: getopt.c:740 getopt.c:759
#, c-format
msgid "%s: option '--%s' requires an argument\n"
msgstr "%s: flaggan \"%s\" kräver ett argument\n"
-#: getopt.c:796 getopt.c:799
+#: getopt.c:797 getopt.c:800
#, c-format
msgid "%s: unrecognized option '--%s'\n"
msgstr "%s: okänd flagga \"--%s\"\n"
-#: getopt.c:807 getopt.c:810
+#: getopt.c:808 getopt.c:811
#, c-format
msgid "%s: unrecognized option '%c%s'\n"
msgstr "%s: okänd flagga \"%c%s\"\n"
-#: getopt.c:859 getopt.c:862
+#: getopt.c:860 getopt.c:863
#, c-format
msgid "%s: invalid option -- '%c'\n"
msgstr "%s: ogiltig flagga -- \"%c\"\n"
-#: getopt.c:915 getopt.c:932 getopt.c:1142 getopt.c:1160
+#: getopt.c:916 getopt.c:933 getopt.c:1143 getopt.c:1161
#, c-format
msgid "%s: option requires an argument -- '%c'\n"
msgstr "%s: flaggan kräver ett argument -- \"%c\"\n"
-#: getopt.c:988 getopt.c:1004
+#: getopt.c:989 getopt.c:1005
#, c-format
msgid "%s: option '-W %s' is ambiguous\n"
msgstr "%s: flaggan \"-W %s\" är tvetydig\n"
-#: getopt.c:1028 getopt.c:1046
+#: getopt.c:1029 getopt.c:1047
#, c-format
msgid "%s: option '-W %s' doesn't allow an argument\n"
msgstr "%s: flaggan \"-W %s\" tillåter inte något argument\n"
-#: getopt.c:1067 getopt.c:1085
+#: getopt.c:1068 getopt.c:1086
#, c-format
msgid "%s: option '-W %s' requires an argument\n"
msgstr "%s: flaggan \"-W %s\" kräver ett argument\n"
-#: io.c:347
+#: io.c:392
#, c-format
msgid "command line argument `%s' is a directory: skipped"
msgstr "kommandoradsargumentet \"%s\" är en katalog: hoppas över"
-#: io.c:350 io.c:463
+#: io.c:395 io.c:513
#, c-format
msgid "cannot open file `%s' for reading (%s)"
msgstr "kan inte öppna filen \"%s\" för läsning (%s)"
-#: io.c:590
+#: io.c:640
#, c-format
msgid "close of fd %d (`%s') failed (%s)"
msgstr "stängning av fd %d (\"%s\") misslyckades (%s)"
-#: io.c:666
+#: io.c:716
msgid "redirection not allowed in sandbox mode"
msgstr "omdirigering är inte tillåten i sandlådeläge"
-#: io.c:700
+#: io.c:750
#, c-format
msgid "expression in `%s' redirection only has numeric value"
msgstr "uttrycket i \"%s\"-omdirigering har bara numeriskt värde"
-#: io.c:706
+#: io.c:756
#, c-format
msgid "expression for `%s' redirection has null string value"
msgstr "uttrycket för \"%s\"-omdirigering har en tom sträng som värde"
-#: io.c:711
+#: io.c:761
#, c-format
msgid "filename `%s' for `%s' redirection may be result of logical expression"
msgstr ""
"filnamnet \"%s\" för \"%s\"-omdirigering kan vara resultatet av ett logiskt "
"uttryck"
-#: io.c:754
+#: io.c:809
#, c-format
msgid "unnecessary mixing of `>' and `>>' for file `%.*s'"
msgstr "onödig blandning av \">\" och \">>\" för filen \"%.*s\""
-#: io.c:808
+#: io.c:863
#, c-format
msgid "can't open pipe `%s' for output (%s)"
msgstr "kan inte öppna röret \"%s\" för utmatning (%s)"
-#: io.c:818
+#: io.c:873
#, c-format
msgid "can't open pipe `%s' for input (%s)"
msgstr "kan inte öppna röret \"%s\" för inmatning (%s)"
-#: io.c:849
+#: io.c:904
#, c-format
msgid "can't open two way pipe `%s' for input/output (%s)"
msgstr "kan inte öppna tvåvägsröret \"%s\" för in-/utmatning (%s)"
-#: io.c:928
+#: io.c:986
#, c-format
msgid "can't redirect from `%s' (%s)"
msgstr "kan inte dirigera om från \"%s\" (%s)"
-#: io.c:931
+#: io.c:989
#, c-format
msgid "can't redirect to `%s' (%s)"
msgstr "kan inte dirigera om till \"%s\" (%s)"
-#: io.c:982
+#: io.c:1040
msgid ""
"reached system limit for open files: starting to multiplex file descriptors"
msgstr ""
"nådde systembegränsningen för öppna filer: börjar multiplexa fildeskriptorer"
-#: io.c:998
+#: io.c:1056
#, c-format
msgid "close of `%s' failed (%s)."
msgstr "stängning av \"%s\" misslyckades (%s)"
-#: io.c:1006
+#: io.c:1064
msgid "too many pipes or input files open"
msgstr "för många rör eller indatafiler öppna"
-#: io.c:1028
+#: io.c:1086
msgid "close: second argument must be `to' or `from'"
msgstr "close: andra argumentet måste vara \"to\" eller \"from\""
-#: io.c:1045
+#: io.c:1103
#, c-format
msgid "close: `%.*s' is not an open file, pipe or co-process"
msgstr "close: \"%.*s\" är inte en öppen fil, rör eller koprocess"
-#: io.c:1050
+#: io.c:1108
msgid "close of redirection that was never opened"
msgstr "stängning av omdirigering som aldrig öppnades"
-#: io.c:1147
+#: io.c:1205
#, c-format
msgid "close: redirection `%s' not opened with `|&', second argument ignored"
msgstr ""
"close: omdirigeringen \"%s\" öppnades inte med \"|&\", andra argumentet "
"ignorerat"
-#: io.c:1164
+#: io.c:1222
#, c-format
msgid "failure status (%d) on pipe close of `%s' (%s)"
msgstr "felstatus (%d) från rörstängning av \"%s\" (%s)"
-#: io.c:1167
+#: io.c:1225
#, c-format
msgid "failure status (%d) on file close of `%s' (%s)"
msgstr "felstatus (%d) från filstängning av \"%s\" (%s)"
-#: io.c:1187
+#: io.c:1245
#, c-format
msgid "no explicit close of socket `%s' provided"
msgstr "ingen explicit stängning av uttaget \"%s\" tillhandahållen"
-#: io.c:1190
+#: io.c:1248
#, c-format
msgid "no explicit close of co-process `%s' provided"
msgstr "ingen explicit stängning av koprocessen \"%s\" tillhandahållen"
-#: io.c:1193
+#: io.c:1251
#, c-format
msgid "no explicit close of pipe `%s' provided"
msgstr "ingen explicit stängning av röret \"%s\" tillhandahållen"
-#: io.c:1196
+#: io.c:1254
#, c-format
msgid "no explicit close of file `%s' provided"
msgstr "ingen explicit stängning av filen \"%s\" tillhandahållen"
-#: io.c:1224 io.c:1279 main.c:842 main.c:879
+#: io.c:1284 io.c:1342 main.c:864 main.c:906
#, c-format
msgid "error writing standard output (%s)"
msgstr "fel vid skrivning till standard ut (%s)"
-#: io.c:1228 io.c:1284
+#: io.c:1289 io.c:1348 main.c:866
#, c-format
msgid "error writing standard error (%s)"
msgstr "fel vid skrivning till standard fel (%s)"
-#: io.c:1236
+#: io.c:1297
#, c-format
msgid "pipe flush of `%s' failed (%s)."
msgstr "rörspolning av \"%s\" misslyckades (%s)"
-#: io.c:1239
+#: io.c:1300
#, c-format
msgid "co-process flush of pipe to `%s' failed (%s)."
msgstr "koprocesspolning av röret till \"%s\" misslyckades (%s)"
-#: io.c:1242
+#: io.c:1303
#, c-format
msgid "file flush of `%s' failed (%s)."
msgstr "filspolning av \"%s\" misslyckades (%s)"
-#: io.c:1356
+#: io.c:1420
#, c-format
msgid "local port %s invalid in `/inet'"
msgstr "lokal port %s ogiltig i \"/inet\""
-#: io.c:1374
+#: io.c:1438
#, c-format
msgid "remote host and port information (%s, %s) invalid"
msgstr "ogiltig information (%s, %s) för fjärrvärd och fjärrport"
-#: io.c:1526
+#: io.c:1590
#, c-format
msgid "no (known) protocol supplied in special filename `%s'"
msgstr ""
"inget (känt) protokoll tillhandahållet i det speciella filnamnet \"%s\""
-#: io.c:1540
+#: io.c:1604
#, c-format
msgid "special file name `%s' is incomplete"
msgstr "speciellt filnamn \"%s\" är ofullständigt"
-#: io.c:1557
+#: io.c:1621
msgid "must supply a remote hostname to `/inet'"
msgstr "måste tillhandahålla ett fjärrdatornamn till \"/inet\""
-#: io.c:1575
+#: io.c:1639
msgid "must supply a remote port to `/inet'"
msgstr "måste tillhandahålla en fjärrport till \"/inet\""
-#: io.c:1621
+#: io.c:1685
msgid "TCP/IP communications are not supported"
msgstr "TCP/IP-kommunikation stöds inte"
-#: io.c:1796
+#: io.c:1867
#, c-format
msgid "could not open `%s', mode `%s'"
msgstr "kunde inte öppna \"%s\", läge \"%s\""
-#: io.c:1846
+#: io.c:1917
#, c-format
msgid "close of master pty failed (%s)"
msgstr "stängning av huvudpty misslyckades (%s)"
-#: io.c:1848 io.c:2024 io.c:2194
+#: io.c:1919 io.c:2105 io.c:2305
#, c-format
msgid "close of stdout in child failed (%s)"
msgstr "stängning av standard ut i barnet misslyckades (%s)"
-#: io.c:1851
+#: io.c:1922
#, 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:1853 io.c:2029
+#: io.c:1924 io.c:2110
#, c-format
msgid "close of stdin in child failed (%s)"
msgstr "stängning av standard in i barnet misslyckades (%s)"
-#: io.c:1856
+#: io.c:1927
#, 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:1858 io.c:1879
+#: io.c:1929 io.c:1951
#, c-format
msgid "close of slave pty failed (%s)"
msgstr "stängning av slavpty misslyckades (%s)"
-#: io.c:1965 io.c:2027 io.c:2171 io.c:2197
+#: io.c:2040 io.c:2108 io.c:2276 io.c:2308
#, c-format
msgid "moving pipe to stdout in child failed (dup: %s)"
msgstr "flyttande av rör till standard ut i barnet misslyckades (dup: %s)"
-#: io.c:1972 io.c:2032
+#: io.c:2047 io.c:2113
#, c-format
msgid "moving pipe to stdin in child failed (dup: %s)"
msgstr "flyttande av rör till standard in i barnet misslyckades (dup: %s)"
-#: io.c:1992 io.c:2187
+#: io.c:2073 io.c:2298
msgid "restoring stdout in parent process failed\n"
msgstr "återställande av standard ut i förälderprocessen misslyckades\n"
-#: io.c:2000
+#: io.c:2081
msgid "restoring stdin in parent process failed\n"
msgstr "återställande av standard in i förälderprocessen misslyckades\n"
-#: io.c:2035 io.c:2199 io.c:2213
+#: io.c:2116 io.c:2310 io.c:2324
#, c-format
msgid "close of pipe failed (%s)"
msgstr "stängning av röret misslyckades (%s)"
-#: io.c:2089
+#: io.c:2174
msgid "`|&' not supported"
msgstr "\"|&\" stöds inte"
-#: io.c:2156
+#: io.c:2261
#, c-format
msgid "cannot open pipe `%s' (%s)"
msgstr "kan inte öppna röret \"%s\" (%s)"
-#: io.c:2207
+#: io.c:2318
#, c-format
msgid "cannot create child process for `%s' (fork: %s)"
msgstr "kan inte skapa barnprocess för \"%s\" (fork: %s)"
-#: io.c:2667
+#: io.c:2790
msgid "register_input_parser: received NULL pointer"
msgstr "register_input_parser: mottog NULL-pekare"
-#: io.c:2695
+#: io.c:2818
#, c-format
msgid "input parser `%s' conflicts with previously installed input parser `%s'"
msgstr ""
"inmatningstolken â€%s†stÃ¥r i konflikt med tidigare installerad "
"inmatningstolk â€%sâ€"
-#: io.c:2702
+#: io.c:2825
#, c-format
msgid "input parser `%s' failed to open `%s'"
msgstr "inmatningstolken â€%s†misslyckades att öppna â€%sâ€"
-#: io.c:2722
+#: io.c:2845
msgid "register_output_wrapper: received NULL pointer"
msgstr "register_output_wrapper: mottog NULL-pekare"
-#: io.c:2750
+#: io.c:2873
#, c-format
msgid ""
"output wrapper `%s' conflicts with previously installed output wrapper `%s'"
@@ -2858,16 +2877,16 @@ msgstr ""
"utmatningsomslag â€%s†stÃ¥r i konflikt med tidigare installerat "
"utmatningsomslag â€%sâ€"
-#: io.c:2757
+#: io.c:2880
#, c-format
msgid "output wrapper `%s' failed to open `%s'"
msgstr "utmatningsomslag â€%s†misslyckades att öpnna â€%sâ€"
-#: io.c:2778
+#: io.c:2901
msgid "register_output_processor: received NULL pointer"
msgstr "register_output_processor: mottog NULL-pekare"
-#: io.c:2807
+#: io.c:2930
#, c-format
msgid ""
"two-way processor `%s' conflicts with previously installed two-way processor "
@@ -2876,210 +2895,210 @@ msgstr ""
"tvÃ¥vägsprocessorn â€%s†stÃ¥r i konflikt med tidigare installerad "
"tvÃ¥vägsprocessor â€%sâ€"
-#: io.c:2816
+#: io.c:2939
#, c-format
msgid "two way processor `%s' failed to open `%s'"
msgstr "tvÃ¥vägsprocessorn â€%s†misslyckades att öppna â€%sâ€"
-#: io.c:2923
+#: io.c:3064
#, c-format
msgid "data file `%s' is empty"
msgstr "datafilen \"%s\" är tom"
-#: io.c:2965 io.c:2973
+#: io.c:3106 io.c:3114
msgid "could not allocate more input memory"
msgstr "kunde inte allokera mer indataminne"
-#: io.c:3539
+#: io.c:3682
msgid "multicharacter value of `RS' is a gawk extension"
msgstr "flerteckensvärdet av \"RS\" är en gawk-utökning"
-#: io.c:3628
+#: io.c:3771
msgid "IPv6 communication is not supported"
msgstr "IPv6-kommunikation stöds inte"
-#: main.c:388
+#: main.c:405
msgid "empty argument to `-e/--source' ignored"
msgstr "tomt argument till \"-e/--source\" ignorerat"
-#: main.c:478
+#: main.c:495
#, c-format
msgid "%s: option `-W %s' unrecognized, ignored\n"
msgstr "%s: flaggan \"-W %s\" okänd, ignorerad\n"
-#: main.c:524
+#: main.c:541
#, c-format
msgid "%s: option requires an argument -- %c\n"
msgstr "%s: flaggan kräver ett argument -- %c\n"
-#: main.c:545
+#: main.c:562
msgid "environment variable `POSIXLY_CORRECT' set: turning on `--posix'"
msgstr "miljövariabeln \"POSIXLY_CORRECT\" satt: slår på \"--posix\""
-#: main.c:551
+#: main.c:568
msgid "`--posix' overrides `--traditional'"
msgstr "\"--posix\" åsidosätter \"--traditional\""
-#: main.c:562
+#: main.c:579
msgid "`--posix'/`--traditional' overrides `--non-decimal-data'"
msgstr "\"--posix\"/\"--traditional\" åsidosätter \"--non-decimal-data\""
-#: main.c:566
+#: main.c:583
#, c-format
msgid "running %s setuid root may be a security problem"
msgstr "att köra %s setuid root kan vara ett säkerhetsproblem"
-#: main.c:571
+#: main.c:588
msgid "`--posix' overrides `--characters-as-bytes'"
msgstr "â€--posix†åsidosätter â€--character-as-bytesâ€"
-#: main.c:630
+#: main.c:647
#, c-format
msgid "can't set binary mode on stdin (%s)"
msgstr "kan inte sätta binärläge på standard in (%s)"
-#: main.c:633
+#: main.c:650
#, c-format
msgid "can't set binary mode on stdout (%s)"
msgstr "kan inte sätta binärläge på standard ut (%s)"
-#: main.c:635
+#: main.c:652
#, c-format
msgid "can't set binary mode on stderr (%s)"
msgstr "kan inte sätta binärläge på standard fel (%s)"
-#: main.c:693
+#: main.c:710
msgid "no program text at all!"
msgstr "ingen programtext alls!"
-#: main.c:779
+#: main.c:799
#, c-format
msgid "Usage: %s [POSIX or GNU style options] -f progfile [--] file ...\n"
msgstr ""
"Användning: %s [POSIX- eller GNU-stilsflaggor] -f progfil [--] fil ...\n"
-#: main.c:781
+#: main.c:801
#, 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:786
+#: main.c:806
msgid "POSIX options:\t\tGNU long options: (standard)\n"
msgstr "POSIX-flaggor:\t\tGNU långa flaggor: (standard)\n"
-#: main.c:787
+#: main.c:807
msgid "\t-f progfile\t\t--file=progfile\n"
msgstr "\t-f progfil\t\t--file=progfil\n"
-#: main.c:788
+#: main.c:808
msgid "\t-F fs\t\t\t--field-separator=fs\n"
msgstr "\t-F fs\t\t\t--field-separator=fs\n"
-#: main.c:789
+#: main.c:809
msgid "\t-v var=val\t\t--assign=var=val\n"
msgstr "\t-v var=värde\t\t--assign=var=värde\n"
-#: main.c:790
+#: main.c:810
msgid "Short options:\t\tGNU long options: (extensions)\n"
msgstr "Korta flaggor:\t\tGNU långa flaggor: (utökningar)\n"
-#: main.c:791
+#: main.c:811
msgid "\t-b\t\t\t--characters-as-bytes\n"
msgstr "\t-b\t\t\t--characters-as-bytes\n"
-#: main.c:792
+#: main.c:812
msgid "\t-c\t\t\t--traditional\n"
msgstr "\t-c\t\t\t--traditional\n"
-#: main.c:793
+#: main.c:813
msgid "\t-C\t\t\t--copyright\n"
msgstr "\t-C\t\t\t--copyright\n"
-#: main.c:794
+#: main.c:814
msgid "\t-d[file]\t\t--dump-variables[=file]\n"
msgstr "\t-d[fil]\t\t\t--dump-variables[=fil]\n"
-#: main.c:795
+#: main.c:815
msgid "\t-D[file]\t\t--debug[=file]\n"
msgstr "\t-D[fil]\t\t\t--debug[=fil]\n"
-#: main.c:796
+#: main.c:816
msgid "\t-e 'program-text'\t--source='program-text'\n"
msgstr "\t-e 'programtext'\t--source='programtext'\n"
-#: main.c:797
+#: main.c:817
msgid "\t-E file\t\t\t--exec=file\n"
msgstr "\t-E fil\t\t\t--exec=fil\n"
-#: main.c:798
+#: main.c:818
msgid "\t-g\t\t\t--gen-pot\n"
msgstr "\t-g\t\t\t--gen-pot\n"
-#: main.c:799
+#: main.c:819
msgid "\t-h\t\t\t--help\n"
msgstr "\t-h\t\t\t--help\n"
-#: main.c:800
+#: main.c:820
msgid "\t-i includefile\t\t--include=includefile\n"
msgstr "\t-i inkluderingsfil\t--include=inkluderingsfil\n"
-#: main.c:801
+#: main.c:821
msgid "\t-l library\t\t--load=library\n"
msgstr "\t-l bibliotek\t\t--load=bibliotek\n"
-#: main.c:802
+#: main.c:822
msgid "\t-L [fatal]\t\t--lint[=fatal]\n"
msgstr "\t-L [fatal]\t\t--lint[=fatal]\n"
-#: main.c:803
+#: main.c:823
msgid "\t-n\t\t\t--non-decimal-data\n"
msgstr "\t-n\t\t\t--non-decimal-data\n"
-#: main.c:804
+#: main.c:824
msgid "\t-M\t\t\t--bignum\n"
msgstr "\t-M\t\t\t--bignum\n"
-#: main.c:805
+#: main.c:825
msgid "\t-N\t\t\t--use-lc-numeric\n"
msgstr "\t-N\t\t\t--use-lc-numeric\n"
-#: main.c:806
+#: main.c:826
msgid "\t-o[file]\t\t--pretty-print[=file]\n"
msgstr "\t-o[fil]\t\t\t--pretty-print[=fil]\n"
-#: main.c:807
+#: main.c:827
msgid "\t-O\t\t\t--optimize\n"
msgstr "\t-O\t\t\t--optimize\n"
-#: main.c:808
+#: main.c:828
msgid "\t-p[file]\t\t--profile[=file]\n"
msgstr "\t-p[fil]\t\t\t--profile[=fil]\n"
-#: main.c:809
+#: main.c:829
msgid "\t-P\t\t\t--posix\n"
msgstr "\t-P\t\t\t--posix\n"
-#: main.c:810
+#: main.c:830
msgid "\t-r\t\t\t--re-interval\n"
msgstr "\t-r\t\t\t--re-interval\n"
-#: main.c:811
+#: main.c:831
msgid "\t-S\t\t\t--sandbox\n"
msgstr "\t-S\t\t\t--sandbox\n"
-#: main.c:812
+#: main.c:832
msgid "\t-t\t\t\t--lint-old\n"
msgstr "\t-t\t\t\t--lint-old\n"
-#: main.c:813
+#: main.c:833
msgid "\t-V\t\t\t--version\n"
msgstr "\t-V\t\t\t--version\n"
-#: main.c:815
+#: main.c:835
msgid "\t-W nostalgia\t\t--nostalgia\n"
msgstr "\t-W nostalgia\t\t--nostalgia\n"
-#: main.c:818
+#: main.c:838
msgid "\t-Y\t\t--parsedebug\n"
msgstr "\t-Y\t\t--parsedebug\n"
@@ -3088,7 +3107,7 @@ msgstr "\t-Y\t\t--parsedebug\n"
#. for this application. Please add _another line_ with the
#. address for translation bugs.
#. no-wrap
-#: main.c:827
+#: main.c:847
msgid ""
"\n"
"To report bugs, see node `Bugs' in `gawk.info', which is\n"
@@ -3102,7 +3121,7 @@ msgstr ""
"Rapportera synpunkter på översättningen till <tp-sv@listor.tp-sv.se>.\n"
"\n"
-#: main.c:831
+#: main.c:851
msgid ""
"gawk is a pattern scanning and processing language.\n"
"By default it reads standard input and writes standard output.\n"
@@ -3112,7 +3131,7 @@ msgstr ""
"Normalt läser det från standard in och skriver till standard ut.\n"
"\n"
-#: main.c:835
+#: main.c:855
msgid ""
"Examples:\n"
"\tgawk '{ sum += $1 }; END { print sum }' file\n"
@@ -3122,7 +3141,7 @@ msgstr ""
"\tgawk '{ sum += $1 }; END { print sum }' fil\n"
"\tgawk -F: '{ print $1 }' /etc/passwd\n"
-#: main.c:855
+#: main.c:880
#, c-format
msgid ""
"Copyright (C) 1989, 1991-%d Free Software Foundation.\n"
@@ -3141,7 +3160,7 @@ msgstr ""
"någon senare version.\n"
"\n"
-#: main.c:863
+#: main.c:888
msgid ""
"This program is distributed in the hope that it will be useful,\n"
"but WITHOUT ANY WARRANTY; without even the implied warranty of\n"
@@ -3155,7 +3174,7 @@ msgstr ""
"General Public License för ytterligare information.\n"
"\n"
-#: main.c:869
+#: main.c:894
msgid ""
"You should have received a copy of the GNU General Public License\n"
"along with this program. If not, see http://www.gnu.org/licenses/.\n"
@@ -3163,64 +3182,64 @@ msgstr ""
"Du bör ha fått en kopia av GNU General Public License tillsammans\n"
"med detta program. Om inte, se http//www.gnu.org/liceences/.\n"
-#: main.c:904
+#: main.c:931
msgid "-Ft does not set FS to tab in POSIX awk"
msgstr "-Ft sätter inte FS till tab i POSIX-awk"
-#: main.c:1181
+#: main.c:1208
#, c-format
msgid "unknown value for field spec: %d\n"
msgstr "okänt värde till fältspecifikation: %d\n"
-#: main.c:1279
+#: main.c:1306
#, 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:1305
+#: main.c:1332
#, c-format
msgid "`%s' is not a legal variable name"
msgstr "\"%s\" är inte ett giltigt variabelnamn"
-#: main.c:1308
+#: main.c:1335
#, 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:1312
+#: main.c:1339
#, c-format
msgid "cannot use gawk builtin `%s' as variable name"
msgstr "kan inte använda gawks inbyggda \"%s\" som ett funktionsnamn"
-#: main.c:1317
+#: main.c:1344
#, c-format
msgid "cannot use function `%s' as variable name"
msgstr "kan inte använda funktionen \"%s\" som variabelnamn"
-#: main.c:1370
+#: main.c:1397
msgid "floating point exception"
msgstr "flyttalsundantag"
-#: main.c:1377
+#: main.c:1404
msgid "fatal error: internal error"
msgstr "ödesdigert fel: internt fel"
-#: main.c:1392
+#: main.c:1419
msgid "fatal error: internal error: segfault"
msgstr "ödesdigert fel: internt fel: segmenteringsfel"
-#: main.c:1404
+#: main.c:1431
msgid "fatal error: internal error: stack overflow"
msgstr "ödesdigert fel: internt fel: stackspill"
-#: main.c:1463
+#: main.c:1490
#, c-format
msgid "no pre-opened fd %d"
msgstr "ingen föröppnad fd %d"
-#: main.c:1470
+#: main.c:1497
#, c-format
msgid "could not pre-open /dev/null for fd %d"
msgstr "kunde inte föröppna /dev/null för fd %d"
@@ -3275,7 +3294,7 @@ msgstr "%s: argument nr. %d flyttalsvärde %Rg kommer huggas av"
msgid "%s: argument #%d negative value %Zd will give strange results"
msgstr "%s: argument nr. %d negativa värde %Zd kommer ge konstiga resultat"
-#: msg.c:61
+#: msg.c:68
#, c-format
msgid "cmd. line:"
msgstr "kommandorad:"
@@ -3329,16 +3348,16 @@ msgstr "%s %s \"%s\": kunde inte hämta fb-flaggor: (fcntl F_GETFD: %s)"
msgid "%s %s `%s': could not set close-on-exec: (fcntl F_SETFD: %s)"
msgstr "%s %s \"%s\": kunde inte sätta stäng-vid-exec (fcntl F_SETFD: %s)"
-#: profile.c:70
+#: profile.c:71
#, c-format
msgid "could not open `%s' for writing: %s"
msgstr "kunde inte öppna \"%s\" för skrivning: %s"
-#: profile.c:72
+#: profile.c:73
msgid "sending profile to standard error"
msgstr "skickar profilen till standard fel"
-#: profile.c:188
+#: profile.c:193
#, c-format
msgid ""
"\t# %s block(s)\n"
@@ -3347,7 +3366,7 @@ msgstr ""
"\t# %s-block\n"
"\n"
-#: profile.c:193
+#: profile.c:198
#, c-format
msgid ""
"\t# Rule(s)\n"
@@ -3356,16 +3375,16 @@ msgstr ""
"\t# Regel/regler\n"
"\n"
-#: profile.c:267
+#: profile.c:272
#, c-format
msgid "internal error: %s with null vname"
msgstr "internt fel: %s med null vname"
-#: profile.c:530
+#: profile.c:537
msgid "internal error: builtin with null fname"
msgstr "internt fel: inbyggd med tomt fname"
-#: profile.c:942
+#: profile.c:949
#, c-format
msgid ""
"\t# Loaded extensions (-l and/or @load)\n"
@@ -3374,12 +3393,12 @@ msgstr ""
"\t# Laddade utvidgningar (-l och/eller @load)\n"
"\n"
-#: profile.c:965
+#: profile.c:972
#, c-format
msgid "\t# gawk profile, created %s\n"
msgstr "\t# gawkprofil, skapad %s\n"
-#: profile.c:1351
+#: profile.c:1475
#, c-format
msgid ""
"\n"
@@ -3388,17 +3407,12 @@ msgstr ""
"\n"
"\t# Funktioner, listade alfabetiskt\n"
-#: profile.c:1389
+#: profile.c:1513
#, c-format
msgid "redir2str: unknown redirection type %d"
msgstr "redir2str: okänd omdirigeringstyp %d"
-#: re.c:583
-#, c-format
-msgid "range of the form `[%c-%c]' is locale dependent"
-msgstr "intervall på formen \"[%c-%c]\" är lokalberoende"
-
-#: re.c:610
+#: re.c:607
#, c-format
msgid "regexp component `%.*s' should probably be `[%.*s]'"
msgstr ""
@@ -3468,6 +3482,6 @@ msgstr "Obalanserad ) eller \\)"
msgid "No previous regular expression"
msgstr "Inget föregående reguljärt uttryck"
-#: symbol.c:740
+#: symbol.c:741
msgid "can not pop main context"
msgstr "kan inte poppa huvudsammanhang"
diff --git a/po/vi.gmo b/po/vi.gmo
index debb0899..10c710dc 100644
--- a/po/vi.gmo
+++ b/po/vi.gmo
Binary files differ
diff --git a/po/vi.po b/po/vi.po
index 400477b8..faa458a1 100644
--- a/po/vi.po
+++ b/po/vi.po
@@ -1,15 +1,16 @@
# Vietnamese translation for Gawk.
-# Copyright © 2013 Free Software Foundation, Inc.
+# Bản dịch Tiếng Việt dành cho Gawk.
+# Copyright © 2014 Free Software Foundation, Inc.
# This file is distributed under the same license as the gawk package.
# Clytie Siddall <clytie@riverland.net.au>, 2005-2010.
-# Trần Ngá»c Quân <vnwildman@gmail.com>, 2012-2013.
+# Trần Ngá»c Quân <vnwildman@gmail.com>, 2012-2014.
#
msgid ""
msgstr ""
-"Project-Id-Version: gawk-4.0.75\n"
+"Project-Id-Version: gawk-4.1.0b\n"
"Report-Msgid-Bugs-To: arnold@skeeve.com\n"
-"POT-Creation-Date: 2013-05-09 16:05+0300\n"
-"PO-Revision-Date: 2013-04-24 08:11+0700\n"
+"POT-Creation-Date: 2014-04-08 19:23+0300\n"
+"PO-Revision-Date: 2014-01-16 14:52+0700\n"
"Last-Translator: Trần Ngá»c Quân <vnwildman@gmail.com>\n"
"Language-Team: Vietnamese <translation-team-vi@lists.sourceforge.net>\n"
"Language: vi\n"
@@ -20,92 +21,92 @@ msgstr ""
"X-Generator: Poedit 1.5.5\n"
"X-Poedit-SourceCharset: UTF-8\n"
-#: array.c:254
+#: array.c:256
#, c-format
msgid "from %s"
msgstr "từ %s"
-#: array.c:354
+#: array.c:357
msgid "attempt to use a scalar value as array"
msgstr "cố dùng giá trị vô hướng như là một mảng"
-#: array.c:356
+#: array.c:359
#, c-format
msgid "attempt to use scalar parameter `%s' as an array"
msgstr "cố dùng tham số vô hướng “%s†như là mảng"
-#: array.c:359
+#: array.c:362
#, c-format
msgid "attempt to use scalar `%s' as an array"
msgstr "cố dùng “%s†vô hướng như là mảng"
-#: array.c:406 array.c:573 builtin.c:85 builtin.c:1591 builtin.c:1637
-#: builtin.c:1650 builtin.c:2078 builtin.c:2092 eval.c:1121 eval.c:1125
-#: eval.c:1524
+#: array.c:409 array.c:576 builtin.c:85 builtin.c:1615 builtin.c:1661
+#: builtin.c:1674 builtin.c:2102 builtin.c:2116 eval.c:1122 eval.c:1126
+#: eval.c:1531
#, c-format
msgid "attempt to use array `%s' in a scalar context"
msgstr "cố gắng dùng mảng “%s†trong một ngữ cảnh vô hướng"
-#: array.c:580
+#: array.c:583
#, c-format
msgid "delete: index `%s' not in array `%s'"
msgstr "delete: (xoá) chỉ số “%s†không nằm trong mảng “%sâ€"
-#: array.c:594
+#: array.c:597
#, c-format
msgid "attempt to use scalar `%s[\"%.*s\"]' as an array"
-msgstr "cố dùng “%s[â€%.*sâ€]†vô hÆ°á»›ng nhÆ° là mảng"
+msgstr "cố dùng “%s[\"%.*s\"]†vô hướng như là mảng"
-#: array.c:773
+#: array.c:776
msgid "adump: first argument not an array"
msgstr "adump: đối số thứ nhất không phải là một mảng"
-#: array.c:812
+#: array.c:815
msgid "asort: second argument not an array"
msgstr "asort: đối số thứ hai không phải là một mảng"
-#: array.c:813
+#: array.c:816
msgid "asorti: second argument not an array"
msgstr "asorti: đối số thứ hai không phải là một mảng"
-#: array.c:820
+#: array.c:823
msgid "asort: first argument not an array"
msgstr "asort: đối số thứ nhất không phải là một mảng"
-#: array.c:821
+#: array.c:824
msgid "asorti: first argument not an array"
msgstr "asorti: đối số thứ nhất không phải là một mảng"
-#: array.c:828
+#: array.c:831
msgid "asort: cannot use a subarray of first arg for second arg"
msgstr ""
-"asort (một chương trính xắp xếp thứ tự): không thể sử dụng mảng con của tham "
+"asort (một chương trình xắp xếp thứ tự): không thể sử dụng mảng con của tham "
"số thứ nhất cho tham số thứ hai"
-#: array.c:829
+#: array.c:832
msgid "asorti: cannot use a subarray of first arg for second arg"
msgstr ""
-"asorti (một chương trính xắp xếp thứ tự): không thể sử dụng mảng con của "
+"asorti (một chương trình xắp xếp thứ tự): không thể sử dụng mảng con của "
"tham số thứ nhất cho tham số thứ hai"
-#: array.c:834
+#: array.c:837
msgid "asort: cannot use a subarray of second arg for first arg"
msgstr ""
-"asort (một chương trính xắp xếp thứ tự): không thể sử dụng mảng con của tham "
+"asort (một chương trình xắp xếp thứ tự): không thể sử dụng mảng con của tham "
"số thứ hai cho tham số thứ nhất"
-#: array.c:835
+#: array.c:838
msgid "asorti: cannot use a subarray of second arg for first arg"
msgstr ""
-"asorti (một chương trính xắp xếp thứ tự): không thể sử dụng mảng con của "
+"asorti (một chương trình xắp xếp thứ tự): không thể sử dụng mảng con của "
"tham số thứ hai cho tham số thứ nhất"
-#: array.c:1309
+#: array.c:1314
#, c-format
msgid "`%s' is invalid as a function name"
msgstr "“%s†không phải là tên hàm hợp lệ"
-#: array.c:1313
+#: array.c:1318
#, c-format
msgid "sort comparison function `%s' is not defined"
msgstr "chÆ°a định nghÄ©a hàm so sánh xắp xếp “%sâ€"
@@ -152,12 +153,12 @@ msgid "duplicate `default' detected in switch body"
msgstr ""
"đã phát hiện trùng “default†trong thân cấu trúc Ä‘iá»u khiển chá»n lá»±a (switch)"
-#: awkgram.y:796 awkgram.y:3699
+#: awkgram.y:796 awkgram.y:3723
msgid "`break' is not allowed outside a loop or switch"
msgstr ""
"không cho phép “break†(ngắt) nằm ở ngoại vòng lặp hay cấu trúc chá»n lá»±a"
-#: awkgram.y:805 awkgram.y:3691
+#: awkgram.y:805 awkgram.y:3715
msgid "`continue' is not allowed outside a loop"
msgstr "không cho phép “continue†(tiếp tục) ở ngoài một vòng lặp"
@@ -169,7 +170,7 @@ msgstr "“next†(kế tiếp) được dùng trong hành động %s"
#: awkgram.y:824
#, c-format
msgid "`nextfile' used in %s action"
-msgstr "“nextfile†(tệp tin kế tiếp) được dùng trong hành động %s"
+msgstr "“nextfile†(tập tin kế tiếp) được dùng trong hành động %s"
#: awkgram.y:848
msgid "`return' used outside function context"
@@ -227,7 +228,7 @@ msgstr "“getline†không hợp lệ trong quy tắc “%sâ€"
msgid "non-redirected `getline' undefined inside END action"
msgstr ""
"trong hành động “END†(kết thúc) có “getline†(lấy dòng) không được chuyển "
-"hướng lại và chưa được xác định."
+"hướng lại và chưa được định nghĩa."
#: awkgram.y:1444
msgid "old awk does not support multidimensional arrays"
@@ -252,270 +253,270 @@ msgstr "không thể dùng biến đặc biệt “%s†cho cú gá»i hàm giá
msgid "invalid subscript expression"
msgstr "biểu thức in thấp không hợp lệ"
-#: awkgram.y:2024 awkgram.y:2044 gawkapi.c:206 gawkapi.c:224 msg.c:119
+#: awkgram.y:2048 awkgram.y:2068 gawkapi.c:206 gawkapi.c:224 msg.c:126
msgid "warning: "
msgstr "cảnh báo: "
-#: awkgram.y:2042 gawkapi.c:192 gawkapi.c:221 msg.c:151
+#: awkgram.y:2066 gawkapi.c:192 gawkapi.c:221 msg.c:158
msgid "fatal: "
-msgstr "nghiêm trá»ng: "
+msgstr "lá»—i nghiêm trá»ng: "
-#: awkgram.y:2092
+#: awkgram.y:2116
msgid "unexpected newline or end of string"
-msgstr "gặp dòng mới bất ngỠhay kết thúc của chuỗi"
+msgstr "gặp dòng má»›i hay kết thúc chuá»—i bất ngá»"
-#: awkgram.y:2359 awkgram.y:2435 awkgram.y:2658 debug.c:517 debug.c:533
-#: debug.c:2792 debug.c:5040
+#: awkgram.y:2383 awkgram.y:2459 awkgram.y:2682 debug.c:523 debug.c:539
+#: debug.c:2812 debug.c:5055
#, c-format
msgid "can't open source file `%s' for reading (%s)"
msgstr "không thể mở tập tin nguồn “%s†để Ä‘á»c (%s)"
-#: awkgram.y:2360 awkgram.y:2485
+#: awkgram.y:2384 awkgram.y:2509
#, c-format
msgid "can't open shared library `%s' for reading (%s)"
msgstr "không thể mở tập thÆ° viện chia sẻ “%s†để Ä‘á»c (%s)"
-#: awkgram.y:2362 awkgram.y:2436 awkgram.y:2486 builtin.c:130 debug.c:5191
+#: awkgram.y:2386 awkgram.y:2460 awkgram.y:2510 builtin.c:135 debug.c:5206
msgid "reason unknown"
-msgstr "không biết sao"
+msgstr "không rõ lý do"
-#: awkgram.y:2371 awkgram.y:2395
+#: awkgram.y:2395 awkgram.y:2419
#, c-format
msgid "can't include `%s' and use it as a program file"
msgstr "không thể bao gồm “%s†và dùng nó như là tập tin chương trình"
-#: awkgram.y:2384
+#: awkgram.y:2408
#, c-format
msgid "already included source file `%s'"
msgstr "đã sẵn bao gồm tập tin nguồn “%sâ€"
-#: awkgram.y:2385
+#: awkgram.y:2409
#, c-format
msgid "already loaded shared library `%s'"
-msgstr "thư viện dùng chung “%s†đã được sẵn được tải rồi "
+msgstr "thư viện dùng chung “%s†đã được sẵn được tải rồi"
-#: awkgram.y:2420
+#: awkgram.y:2444
msgid "@include is a gawk extension"
msgstr "@include là phần mở rộng của gawk"
-#: awkgram.y:2426
+#: awkgram.y:2450
msgid "empty filename after @include"
-msgstr "tệp tin trống sau @include"
+msgstr "tập tin trống sau @include"
-#: awkgram.y:2470
+#: awkgram.y:2494
msgid "@load is a gawk extension"
msgstr "@load là một phần mở rộng gawk"
-#: awkgram.y:2476
+#: awkgram.y:2500
msgid "empty filename after @load"
-msgstr "tên tệp tin trống sau @load"
+msgstr "tên tập tin trống sau @load"
-#: awkgram.y:2610
+#: awkgram.y:2634
msgid "empty program text on command line"
msgstr "gặp đoạn chữ chương trình rỗng nằm trên dòng lệnh"
-#: awkgram.y:2725
+#: awkgram.y:2749
#, c-format
msgid "can't read sourcefile `%s' (%s)"
msgstr "không thể Ä‘á»c tập tin nguồn “%s†(%s)"
-#: awkgram.y:2736
+#: awkgram.y:2760
#, c-format
msgid "source file `%s' is empty"
msgstr "tập tin nguồn “%s†là rỗng"
-#: awkgram.y:2913
+#: awkgram.y:2937
msgid "source file does not end in newline"
msgstr "tập tin nguồn không kết thúc với một dòng mới"
-#: awkgram.y:3018
+#: awkgram.y:3042
msgid "unterminated regexp ends with `\\' at end of file"
msgstr ""
"biểu thức chính quy chưa được chấm dứt kết thúc với “\\†tại kết thúc của "
"tập tin"
-#: awkgram.y:3042
+#: awkgram.y:3066
#, c-format
msgid "%s: %d: tawk regex modifier `/.../%c' doesn't work in gawk"
msgstr ""
"%s: %d: bộ sửa đổi biểu thức chính quy tawk “/.../%c†không hoạt động được "
"trong gawk"
-#: awkgram.y:3046
+#: awkgram.y:3070
#, c-format
msgid "tawk regex modifier `/.../%c' doesn't work in gawk"
msgstr ""
"bộ sửa đổi biểu thức chính quy tawk “/.../%c†không hoạt động được trong gawk"
-#: awkgram.y:3053
+#: awkgram.y:3077
msgid "unterminated regexp"
msgstr "biểu thức chính quy chưa được chấm dứt"
-#: awkgram.y:3057
+#: awkgram.y:3081
msgid "unterminated regexp at end of file"
msgstr "biểu thức chính quy chưa được chấm dứt nằm tại kết thúc của tập tin"
-#: awkgram.y:3116
+#: awkgram.y:3140
msgid "use of `\\ #...' line continuation is not portable"
msgstr "không thể mang khả năng dùng “\\#...†để tiếp tục dòng"
-#: awkgram.y:3132
+#: awkgram.y:3156
msgid "backslash not last character on line"
-msgstr "xuyệc ngược không phải là ký tự cuối cùng nằm trên dòng"
+msgstr "dấu gạch ngược không phải là ký tự cuối cùng nằm trên dòng"
-#: awkgram.y:3193
+#: awkgram.y:3217
msgid "POSIX does not allow operator `**='"
msgstr "POSIX không cho phép toán tá»­ “**=â€"
-#: awkgram.y:3195
+#: awkgram.y:3219
msgid "old awk does not support operator `**='"
msgstr "awk cÅ© không há»— trợ toán tá»­ “**=â€"
-#: awkgram.y:3204
+#: awkgram.y:3228
msgid "POSIX does not allow operator `**'"
msgstr "POSIX không cho phép toán tá»­ “**â€"
-#: awkgram.y:3206
+#: awkgram.y:3230
msgid "old awk does not support operator `**'"
msgstr "awk cÅ© không há»— trợ toán tá»­ “**â€"
-#: awkgram.y:3241
+#: awkgram.y:3265
msgid "operator `^=' is not supported in old awk"
msgstr "awk cÅ© không há»— trợ toán tá»­ “^=â€"
-#: awkgram.y:3249
+#: awkgram.y:3273
msgid "operator `^' is not supported in old awk"
msgstr "awk cÅ© không há»— trợ toán tá»­ “^â€"
-#: awkgram.y:3342 awkgram.y:3358 command.y:1178
+#: awkgram.y:3366 awkgram.y:3382 command.y:1178
msgid "unterminated string"
msgstr "chuỗi không được chấm dứt"
-#: awkgram.y:3579
+#: awkgram.y:3603
#, c-format
msgid "invalid char '%c' in expression"
msgstr "có ký tự không hợp lệ “%c†nằm trong biểu thức"
-#: awkgram.y:3626
+#: awkgram.y:3650
#, c-format
msgid "`%s' is a gawk extension"
msgstr "“%s†là một phần mở rộng gawk"
-#: awkgram.y:3631
+#: awkgram.y:3655
#, c-format
msgid "POSIX does not allow `%s'"
msgstr "POSIX không cho phép “%sâ€"
-#: awkgram.y:3639
+#: awkgram.y:3663
#, c-format
msgid "`%s' is not supported in old awk"
msgstr "awk kiểu cÅ© không há»— trợ “%sâ€"
-#: awkgram.y:3729
+#: awkgram.y:3753
msgid "`goto' considered harmful!\n"
msgstr "“goto†được xem là có hại!\n"
-#: awkgram.y:3763
+#: awkgram.y:3787
#, c-format
msgid "%d is invalid as number of arguments for %s"
msgstr "“%d†không hợp lệ khi là số đối số cho “%sâ€"
-#: awkgram.y:3798
+#: awkgram.y:3822
#, c-format
msgid "%s: string literal as last arg of substitute has no effect"
msgstr ""
"%s: khi đối số cuối cùng của sự thay thế, hằng mã nguồn chuỗi không có tác "
"dụng"
-#: awkgram.y:3803
+#: awkgram.y:3827
#, c-format
msgid "%s third parameter is not a changeable object"
msgstr "tham số thứ ba %s không phải là một đối tượng có thể thay đổi"
-#: awkgram.y:3886 awkgram.y:3889
+#: awkgram.y:3910 awkgram.y:3913
msgid "match: third argument is a gawk extension"
msgstr "match: (khớp) đối số thứ ba là phần mở rộng gawk"
-#: awkgram.y:3943 awkgram.y:3946
+#: awkgram.y:3967 awkgram.y:3970
msgid "close: second argument is a gawk extension"
msgstr "close: (đóng) đối số thứ hai là phần mở rộng gawk"
-#: awkgram.y:3958
+#: awkgram.y:3982
msgid "use of dcgettext(_\"...\") is incorrect: remove leading underscore"
msgstr "dùng “dcgettext(_\"...\")†không đúng: hãy gỡ bỠgạch dưới nằm trước"
-#: awkgram.y:3973
+#: awkgram.y:3997
msgid "use of dcngettext(_\"...\") is incorrect: remove leading underscore"
msgstr "dùng “dcgettext(_\"...\")†không đúng: hãy gỡ bỠgạch dưới nằm trước"
-#: awkgram.y:3992
-#, fuzzy
+#: awkgram.y:4016
msgid "index: regexp constant as second argument is not allowed"
-msgstr "index: (chỉ mục) đã nhận đối số thứ hai không phải là chuỗi"
+msgstr ""
+"index: (chỉ mục) không cho phép hằng biểu thức chính quy làm đối số thứ hai"
-#: awkgram.y:4045
+#: awkgram.y:4069
#, c-format
msgid "function `%s': parameter `%s' shadows global variable"
msgstr "hàm “%sâ€: tham số “%s†che biến toàn cục"
-#: awkgram.y:4102 debug.c:4021 debug.c:4064 debug.c:5189
+#: awkgram.y:4126 debug.c:4041 debug.c:4084 debug.c:5204
#, c-format
msgid "could not open `%s' for writing (%s)"
msgstr "không mở được “%s†để ghi (%s)"
-#: awkgram.y:4103
+#: awkgram.y:4127
msgid "sending variable list to standard error"
msgstr "đang gởi danh sách biến tới thiết bị lỗi chuẩn"
-#: awkgram.y:4111
+#: awkgram.y:4135
#, c-format
msgid "%s: close failed (%s)"
-msgstr "%s: lỗi đóng (%s)"
+msgstr "%s: gặp lỗi khi đóng (%s)"
-#: awkgram.y:4136
+#: awkgram.y:4160
msgid "shadow_funcs() called twice!"
msgstr "shadow_funcs() (hàm bóng) được gá»i hai lần!"
-#: awkgram.y:4144
+#: awkgram.y:4168
msgid "there were shadowed variables."
msgstr "có biến bị bóng."
-#: awkgram.y:4215
+#: awkgram.y:4239
#, c-format
msgid "function name `%s' previously defined"
msgstr "tên hàm “%s†trước đây đã được định nghĩa rồi"
-#: awkgram.y:4261
+#: awkgram.y:4285
#, c-format
msgid "function `%s': can't use function name as parameter name"
msgstr "hàm “%sâ€: không thể dùng tên hàm nhÆ° là tên tham số"
-#: awkgram.y:4264
+#: awkgram.y:4288
#, c-format
msgid "function `%s': can't use special variable `%s' as a function parameter"
msgstr "hàm “%sâ€: không thể dùng biến đặc biệt “%s†nhÆ° là tham số hàm"
-#: awkgram.y:4272
+#: awkgram.y:4296
#, c-format
msgid "function `%s': parameter #%d, `%s', duplicates parameter #%d"
msgstr "hàm “%sâ€: tham số “#%dâ€, “%sâ€, nhân đôi tham số “#%dâ€"
-#: awkgram.y:4366 awkgram.y:4372
+#: awkgram.y:4383 awkgram.y:4389
#, c-format
msgid "function `%s' called but never defined"
-msgstr "hàm “%s†được gá»i nhÆ°ng mà chÆ°a xác định"
+msgstr "hàm “%s†được gá»i nhÆ°ng mà chÆ°a định nghÄ©a"
-#: awkgram.y:4376
+#: awkgram.y:4393
#, c-format
msgid "function `%s' defined but never called directly"
msgstr "hàm “%s†được định nghÄ©a nhÆ°ng mà chÆ°a được gá»i trá»±c tiếp bao giá»"
-#: awkgram.y:4408
+#: awkgram.y:4425
#, c-format
msgid "regexp constant for parameter #%d yields boolean value"
msgstr "hằng biểu thức chính quy cho tham số “#%d†làm giá trị luận lý (bun)"
-#: awkgram.y:4467
+#: awkgram.y:4484
#, c-format
msgid ""
"function `%s' called with space between name and `(',\n"
@@ -524,428 +525,443 @@ msgstr ""
"hàm “%s†được gá»i vá»›i dấu cách nằm giữa tên và “(â€\n"
"hoặc được dùng như là biến hay mảng"
-#: awkgram.y:4703
+#: awkgram.y:4720
msgid "division by zero attempted"
-msgstr "cố gắng chia cho số không"
+msgstr "gặp phép chia cho số không"
-#: awkgram.y:4712
+#: awkgram.y:4729
#, c-format
msgid "division by zero attempted in `%%'"
-msgstr "thá»­ chia cho không trong “%%â€"
+msgstr "gặp phép chia cho số không trong “%%â€"
+
+#: awkgram.y:5049
+msgid ""
+"cannot assign a value to the result of a field post-increment expression"
+msgstr "không thể gán giá trị cho kết quả của biểu thức trÆ°á»ng tăng-trÆ°á»›c"
+
+#: awkgram.y:5052
+#, c-format
+msgid "invalid target of assignment (opcode %s)"
+msgstr "gán Ä‘ich không hợp lệ (mã thi hành “%sâ€)"
-#: builtin.c:128
+#: builtin.c:133
#, c-format
msgid "%s to \"%s\" failed (%s)"
msgstr "%s tới “%s†gặp lỗi (%s)"
-#: builtin.c:129
+#: builtin.c:134
msgid "standard output"
msgstr "đầu ra tiêu chuẩn"
-#: builtin.c:143
+#: builtin.c:148
msgid "exp: received non-numeric argument"
msgstr "exp: đã nhận đối số không phải thuộc số"
-#: builtin.c:149
+#: builtin.c:154
#, c-format
msgid "exp: argument %g is out of range"
msgstr "exp: đối số “%g†nằm ngoài phạm vi"
-#: builtin.c:224
+#: builtin.c:229
#, c-format
msgid "fflush: cannot flush: pipe `%s' opened for reading, not writing"
msgstr ""
"fflush: không thể flush (đẩy dữ liệu lên Ä‘Ä©a): ống dẫn “%s†được mở để Ä‘á»c, "
"không phải để ghi"
-#: builtin.c:227
+#: builtin.c:232
#, c-format
msgid "fflush: cannot flush: file `%s' opened for reading, not writing"
msgstr ""
"fflush: không thể flush (đẩy dữ liệu vào Ä‘Ä©a): tập tin “%s†được mở để Ä‘á»c, "
"không phải để ghi"
-#: builtin.c:239
+#: builtin.c:244
#, c-format
msgid "fflush: `%s' is not an open file, pipe or co-process"
msgstr ""
"fflush: “%s†không phải là tập tin, ống dẫn hay đồng tiến trình được mở"
-#: builtin.c:357
+#: builtin.c:362
msgid "index: received non-string first argument"
msgstr "index: (chỉ số) đã nhận đối số thứ nhất không phải là chuỗi"
-#: builtin.c:359
+#: builtin.c:364
msgid "index: received non-string second argument"
-msgstr "index: (chỉ mục) đã nhận đối số thứ hai không phải là chuỗi"
+msgstr "index: (chỉ số) đã nhận đối số thứ hai không phải là chuỗi"
-#: builtin.c:483 mpfr.c:757
+#: builtin.c:488 mpfr.c:757
msgid "int: received non-numeric argument"
msgstr "int: (số nguyên?) đã nhận đối số không phải thuộc số"
-#: builtin.c:520
+#: builtin.c:525
msgid "length: received array argument"
msgstr "length: (chiá»u dài) đã nhận mảng đối số"
-#: builtin.c:523
+#: builtin.c:528
msgid "`length(array)' is a gawk extension"
msgstr "“length(array)†(độ dài mảng) là một phần mở rộng gawk"
-#: builtin.c:539
+#: builtin.c:544
msgid "length: received non-string argument"
msgstr "length: (chiá»u dài) đã nhận đối số không phải chuá»—i"
-#: builtin.c:570
+#: builtin.c:575
msgid "log: received non-numeric argument"
-msgstr "log: (bản ghi) đã nhận đối số không phải thuộc số"
+msgstr "log: (nhật ký) đã nhận đối số không phải thuộc số"
-#: builtin.c:573
+#: builtin.c:578
#, c-format
msgid "log: received negative argument %g"
-msgstr "log: (bản ghi) đã nhận đối số âm “%gâ€"
+msgstr "log: (nhật ký) đã nhận đối số âm “%gâ€"
-#: builtin.c:771 builtin.c:776
+#: builtin.c:776 builtin.c:781
msgid "fatal: must use `count$' on all formats or none"
-msgstr "nghiêm trá»ng: phải dùng “count$†vá»›i má»i dạng thức hay không gì cả"
+msgstr "lá»—i nghiêm trá»ng: phải dùng “count$†vá»›i má»i dạng thức hay không gì cả"
-#: builtin.c:846
+#: builtin.c:851
#, c-format
msgid "field width is ignored for `%%' specifier"
msgstr "chiá»u rá»™ng trÆ°á»ng bị bá» qua đối vá»›i bá»™ chỉ định “%%â€"
-#: builtin.c:848
+#: builtin.c:853
#, c-format
msgid "precision is ignored for `%%' specifier"
msgstr "Ä‘á»™ chính xác bị bá» qua đối vá»›i bá»™ chỉ định “%%â€"
-#: builtin.c:850
+#: builtin.c:855
#, c-format
msgid "field width and precision are ignored for `%%' specifier"
msgstr "chiá»u rá»™ng trÆ°á»ng và Ä‘á»™ chính xác bị bá» qua đối vá»›i bá»™ chỉ định “%%â€"
-#: builtin.c:901
+#: builtin.c:906
msgid "fatal: `$' is not permitted in awk formats"
-msgstr "nghiêm trá»ng: không cho phép “$†trong định dạng awk"
+msgstr "lá»—i nghiêm trá»ng: không cho phép “$†trong định dạng awk"
-#: builtin.c:910
+#: builtin.c:915
msgid "fatal: arg count with `$' must be > 0"
-msgstr "nghiêm trá»ng: số lượng đối số vá»›i “$†phải >0"
+msgstr "lá»—i nghiêm trá»ng: số lượng đối số vá»›i “$†phải >0"
-#: builtin.c:914
+#: builtin.c:919
#, c-format
msgid "fatal: arg count %ld greater than total number of supplied arguments"
-msgstr "nghiêm trá»ng: số lượng đối số %ld lá»›n hÆ¡n tổng số đối số được cung cấp"
+msgstr ""
+"lá»—i nghiêm trá»ng: số lượng đối số %ld lá»›n hÆ¡n tổng số đối số được cung cấp"
-#: builtin.c:918
+#: builtin.c:923
msgid "fatal: `$' not permitted after period in format"
-msgstr "nghiêm trá»ng: không cho phép “$†nằm sau dấu chấm trong định dạng"
+msgstr "lá»—i nghiêm trá»ng: không cho phép “$†nằm sau dấu chấm trong định dạng"
-#: builtin.c:934
+#: builtin.c:939
msgid "fatal: no `$' supplied for positional field width or precision"
msgstr ""
-"nghiêm trá»ng: chÆ°a cung cấp “$†cho Ä‘á»™ rá»™ng trÆ°á»ng thuá»™c vị trí hay cho Ä‘á»™ "
-"chính xác"
+"lá»—i nghiêm trá»ng: chÆ°a cung cấp “$†cho Ä‘á»™ rá»™ng trÆ°á»ng thuá»™c vị trí hay cho "
+"độ chính xác"
-#: builtin.c:1006
+#: builtin.c:1009
msgid "`l' is meaningless in awk formats; ignored"
msgstr "chữ “l†không có nghĩa trong định dạng awk nên bị bỠqua"
-#: builtin.c:1010
+#: builtin.c:1013
msgid "fatal: `l' is not permitted in POSIX awk formats"
-msgstr "nghiêm trá»ng: không cho phép chữ “l†nằm trong định dạng awk POSIX"
+msgstr "lá»—i nghiêm trá»ng: không cho phép chữ “l†nằm trong định dạng awk POSIX"
-#: builtin.c:1023
+#: builtin.c:1026
msgid "`L' is meaningless in awk formats; ignored"
msgstr "chữ “L†không có nghĩa trong định dạng awk nên bị bỠqua"
-#: builtin.c:1027
+#: builtin.c:1030
msgid "fatal: `L' is not permitted in POSIX awk formats"
-msgstr "nghiêm trá»ng: không cho phép chữ “L†nằm trong định dạng awk POSIX"
+msgstr "lá»—i nghiêm trá»ng: không cho phép chữ “L†nằm trong định dạng awk POSIX"
-#: builtin.c:1040
+#: builtin.c:1043
msgid "`h' is meaningless in awk formats; ignored"
msgstr "chữ “h†không có nghĩa trong định dạng awk nên bị bỠqua"
-#: builtin.c:1044
+#: builtin.c:1047
msgid "fatal: `h' is not permitted in POSIX awk formats"
-msgstr "nghiêm trá»ng: không cho phép chữ “h†nằm trong định dạng awk POSIX"
+msgstr "lá»—i nghiêm trá»ng: không cho phép chữ “h†nằm trong định dạng awk POSIX"
-#: builtin.c:1439
+#: builtin.c:1463
#, c-format
msgid "[s]printf: value %g is out of range for `%%%c' format"
-msgstr "[s]printf: giá trị %g ở ngoại phạm vị cho dạng thức “%%%câ€"
+msgstr "[s]printf: giá trị %g ở ngoại phạm vi cho dạng thức “%%%câ€"
-#: builtin.c:1537
+#: builtin.c:1561
#, c-format
msgid "ignoring unknown format specifier character `%c': no argument converted"
msgstr ""
"Ä‘ang bá» qua ký tá»± ghi rõ định dạng không rõ “%câ€: không có đối số được "
"chuyển đổi"
-#: builtin.c:1542
+#: builtin.c:1566
msgid "fatal: not enough arguments to satisfy format string"
-msgstr "nghiêm trá»ng: chÆ°a có đủ đối số để đáp ứng chuá»—i định dạng"
+msgstr "lá»—i nghiêm trá»ng: chÆ°a có đủ đối số để đáp ứng chuá»—i định dạng"
-#: builtin.c:1544
+#: builtin.c:1568
msgid "^ ran out for this one"
msgstr "bị hết “^†cho cái này"
-#: builtin.c:1551
+#: builtin.c:1575
msgid "[s]printf: format specifier does not have control letter"
msgstr "[s]printf: chỉ định định dạng không có ký hiệu Ä‘iá»u khiển"
-#: builtin.c:1554
+#: builtin.c:1578
msgid "too many arguments supplied for format string"
msgstr "quá nhiá»u đối số được cung cấp cho chuá»—i định dạng"
-#: builtin.c:1610
+#: builtin.c:1634
msgid "sprintf: no arguments"
msgstr "sprintf: không có đối số"
-#: builtin.c:1633 builtin.c:1644
+#: builtin.c:1657 builtin.c:1668
msgid "printf: no arguments"
msgstr "printf: không có đối số"
-#: builtin.c:1687
+#: builtin.c:1711
msgid "sqrt: received non-numeric argument"
msgstr "sqrt: (căn bậc hai) đã nhận đối số không phải thuộc số"
-#: builtin.c:1691
+#: builtin.c:1715
#, c-format
msgid "sqrt: called with negative argument %g"
msgstr "sqrt: (căn bậc hai) đã gá»i vá»›i đối số âm “%gâ€"
-#: builtin.c:1722
+#: builtin.c:1746
#, c-format
msgid "substr: length %g is not >= 1"
-msgstr "substr: (chuỗi phụ) độ dài %g không phải ≥1"
+msgstr "substr: (chuỗi con) độ dài %g không phải ≥1"
-#: builtin.c:1724
+#: builtin.c:1748
#, c-format
msgid "substr: length %g is not >= 0"
-msgstr "substr: (chuỗi phụ) độ dài %g không phải ≥0"
+msgstr "substr: (chuỗi con) độ dài %g không phải ≥0"
-#: builtin.c:1731
+#: builtin.c:1755
#, c-format
msgid "substr: non-integer length %g will be truncated"
-msgstr "substr: (chuá»—i phụ) sẽ cắt xén Ä‘á»™ dài không phải số nguyên “%gâ€"
+msgstr "substr: (chuá»—i con) sẽ cắt xén Ä‘á»™ dài không phải số nguyên “%gâ€"
-#: builtin.c:1736
+#: builtin.c:1760
#, c-format
msgid "substr: length %g too big for string indexing, truncating to %g"
-msgstr "substr: độ dài %g quá lớn để chỉ mục chuỗi nên xén ngắn thành %g"
+msgstr ""
+"substr: (chuỗi con) độ dài %g là quá lớn cho chỉ số chuỗi, nên xén ngắn "
+"thành %g"
-#: builtin.c:1748
+#: builtin.c:1772
#, c-format
msgid "substr: start index %g is invalid, using 1"
-msgstr "substr: (chuỗi phụ) số chỉ mục đầu “%g†không hợp lệ nên dùng 1"
+msgstr "substr: (chuỗi con) chỉ số đầu “%g†không hợp lệ nên dùng 1"
-#: builtin.c:1753
+#: builtin.c:1777
#, c-format
msgid "substr: non-integer start index %g will be truncated"
msgstr ""
-"substr: (chuỗi phụ) số chỉ mục đầu không phải số nguyên “%g†sẽ bị cắt ngắn"
+"substr: (chuỗi con) chỉ số đầu không phải số nguyên “%g†sẽ bị cắt ngắn"
-#: builtin.c:1778
+#: builtin.c:1802
msgid "substr: source string is zero length"
msgstr "substr: (chuỗi con) chuỗi nguồn có độ dài số không"
-#: builtin.c:1794
+#: builtin.c:1818
#, c-format
msgid "substr: start index %g is past end of string"
-msgstr "substr: (chuỗi phụ) số chỉ mục đầu %g nằm sau kết thúc của chuỗi"
+msgstr "substr: (chuỗi con) chỉ số đầu %g nằm sau kết thúc của chuỗi"
-#: builtin.c:1802
+#: builtin.c:1826
#, c-format
msgid ""
"substr: length %g at start index %g exceeds length of first argument (%lu)"
msgstr ""
-"substr: (chuỗi phụ) độ dài %g tại số chỉ mục đầu %g vượt quá độ dài của đối "
-"số đầu (%lu)"
+"substr: (chuỗi con) độ dài %g chỉ số đầu %g vượt quá độ dài của đối số đầu "
+"(%lu)"
-#: builtin.c:1876
+#: builtin.c:1900
msgid "strftime: format value in PROCINFO[\"strftime\"] has numeric type"
msgstr ""
"strftime: giá trị định dạng trong PROCINFO[â€strftimeâ€] phải thuá»™c kiểu số"
-#: builtin.c:1899
+#: builtin.c:1923
msgid "strftime: received non-numeric second argument"
msgstr "strftime: đã nhận đối số thứ hai khác thuộc số"
-#: builtin.c:1903
+#: builtin.c:1927
msgid "strftime: second argument less than 0 or too big for time_t"
msgstr "strftime: tham số thứ hai nhỠhơn 0 hay quá lớn dành cho time_t"
-#: builtin.c:1910
+#: builtin.c:1934
msgid "strftime: received non-string first argument"
msgstr "strftime: đã nhận đối số thứ nhất khác chuỗi"
-#: builtin.c:1917
+#: builtin.c:1941
msgid "strftime: received empty format string"
msgstr "strftime: đã nhận chuỗi định dạng rỗng"
-#: builtin.c:1983
+#: builtin.c:2007
msgid "mktime: received non-string argument"
msgstr "mktime: đã nhận đối số khác chuỗi"
-#: builtin.c:2000
+#: builtin.c:2024
msgid "mktime: at least one of the values is out of the default range"
msgstr "mktime: ít nhất một của những giá trị nằm ở ngoại phạm vi mặc định"
-#: builtin.c:2035
+#: builtin.c:2059
msgid "'system' function not allowed in sandbox mode"
msgstr "hàm “system†không cho phép ở chế độ khuôn đúc"
-#: builtin.c:2040
+#: builtin.c:2064
msgid "system: received non-string argument"
msgstr "system: (hệ thống) đã nhận đối số khác chuỗi"
-#: builtin.c:2160
+#: builtin.c:2184
#, c-format
msgid "reference to uninitialized field `$%d'"
-msgstr "gặp tham chiếu đến trÆ°á»ng chÆ°a được sở khởi “$%dâ€"
+msgstr "gặp tham chiếu đến trÆ°á»ng chÆ°a được khởi tạo “$%dâ€"
-#: builtin.c:2247
+#: builtin.c:2271
msgid "tolower: received non-string argument"
msgstr "tolower: (đến thấp hơn) đã nhận đối số khác chuỗi"
-#: builtin.c:2281
+#: builtin.c:2305
msgid "toupper: received non-string argument"
msgstr "toupper: (đến cao hơn) đã nhận đối số khác chuỗi"
-#: builtin.c:2317 mpfr.c:672
+#: builtin.c:2341 mpfr.c:672
msgid "atan2: received non-numeric first argument"
msgstr "atan2: đã nhận đối số thứ nhất khác thuộc số"
-#: builtin.c:2319 mpfr.c:674
+#: builtin.c:2343 mpfr.c:674
msgid "atan2: received non-numeric second argument"
msgstr "atan2: đã nhận đối số thứ hai khác thuộc số"
-#: builtin.c:2338
+#: builtin.c:2362
msgid "sin: received non-numeric argument"
msgstr "sin: đã nhận đối số không phải thuộc số"
-#: builtin.c:2354
+#: builtin.c:2378
msgid "cos: received non-numeric argument"
msgstr "cos: đã nhận đối số không phải thuộc số"
-#: builtin.c:2407 mpfr.c:1156
+#: builtin.c:2431 mpfr.c:1156
msgid "srand: received non-numeric argument"
msgstr "srand: đã nhận đối số không phải thuộc số"
-#: builtin.c:2438
+#: builtin.c:2462
msgid "match: third argument is not an array"
msgstr "match: (khớp) đối số thứ ba không phải là mảng"
-#: builtin.c:2710
+#: builtin.c:2734
msgid "gensub: third argument of 0 treated as 1"
msgstr "gensub: đối số thứ ba của 0 được xử lý như 1"
-#: builtin.c:3003
+#: builtin.c:3030
msgid "lshift: received non-numeric first argument"
msgstr "lshift: đã nhận đối số đầu không phải thuộc số"
-#: builtin.c:3005
+#: builtin.c:3032
msgid "lshift: received non-numeric second argument"
msgstr "lshift: (dịch bên trái) đã nhận đối số thứ hai khác thuộc số"
-#: builtin.c:3011
+#: builtin.c:3038
#, c-format
msgid "lshift(%f, %f): negative values will give strange results"
msgstr "lshift(%f, %f): giá trị âm sẽ gây ra kết quả không như mong muốn"
-#: builtin.c:3013
+#: builtin.c:3040
#, c-format
msgid "lshift(%f, %f): fractional values will be truncated"
msgstr "lshift(%f, %f): giá trị thuộc phân số sẽ bị cắt ngắn"
-#: builtin.c:3015
+#: builtin.c:3042
#, c-format
msgid "lshift(%f, %f): too large shift value will give strange results"
msgstr ""
"lshift(%f, %f): giá trị dịch quá lớn sẽ gây ra kết quả không như mong muốn"
-#: builtin.c:3040
+#: builtin.c:3067
msgid "rshift: received non-numeric first argument"
msgstr "rshift: đã nhận đối số thứ nhất khác thuộc số"
-#: builtin.c:3042
+#: builtin.c:3069
msgid "rshift: received non-numeric second argument"
-msgstr "rshift: (dịch bên phải) đã nhận đối số thứ hai khác thuộc số"
+msgstr "rshift: (dịch phải) đã nhận đối số thứ hai khác thuộc số"
-#: builtin.c:3048
+#: builtin.c:3075
#, c-format
msgid "rshift(%f, %f): negative values will give strange results"
msgstr "rshift(%f, %f): giá trị âm sẽ gây ra kết quả không như mong muốn"
-#: builtin.c:3050
+#: builtin.c:3077
#, c-format
msgid "rshift(%f, %f): fractional values will be truncated"
msgstr "rshift(%f, %f): giá trị thuộc kiểu phân số sẽ bị xén ngắn"
-#: builtin.c:3052
+#: builtin.c:3079
#, c-format
msgid "rshift(%f, %f): too large shift value will give strange results"
msgstr ""
"rshift(%f, %f): giá trị dịch quá lớn sẽ gây ra kết quả không như mong muốn"
-#: builtin.c:3077 mpfr.c:968
+#: builtin.c:3104 mpfr.c:968
msgid "and: called with less than two arguments"
msgstr "and: được gá»i vá»›i ít hÆ¡n hai đối số"
-#: builtin.c:3082
+#: builtin.c:3109
#, c-format
msgid "and: argument %d is non-numeric"
msgstr "and: đối số %d không phải thuộc số"
-#: builtin.c:3086
+#: builtin.c:3113
#, c-format
msgid "and: argument %d negative value %g will give strange results"
-msgstr "and: đối số %d giá trị âm %g sẽ đưa lại kết quả không như mong muốn"
+msgstr ""
+"and: (và) đối số %d giá trị âm %g sẽ đưa lại kết quả không như mong muốn"
-#: builtin.c:3109 mpfr.c:1000
+#: builtin.c:3136 mpfr.c:1000
msgid "or: called with less than two arguments"
-msgstr "or: được gá»i vá»›i ít hÆ¡n hai đối số"
+msgstr "or: (hoặc) được gá»i vá»›i ít hÆ¡n hai đối số"
-#: builtin.c:3114
+#: builtin.c:3141
#, c-format
msgid "or: argument %d is non-numeric"
-msgstr "or: đối số %d không thuộc kiểu số"
+msgstr "or: (hoặc) đối số %d không thuộc kiểu số"
-#: builtin.c:3118
+#: builtin.c:3145
#, c-format
msgid "or: argument %d negative value %g will give strange results"
-msgstr "or: đối số %d giá trị âm %g sẽ đưa lại kết quả không như mong muốn"
+msgstr ""
+"or: (hoặc) đối số %d giá trị âm %g sẽ đưa lại kết quả không như mong muốn"
-#: builtin.c:3140 mpfr.c:1031
+#: builtin.c:3167 mpfr.c:1031
msgid "xor: called with less than two arguments"
msgstr "xor: được gá»i vá»›i ít hÆ¡n hai đối số"
-#: builtin.c:3146
+#: builtin.c:3173
#, c-format
msgid "xor: argument %d is non-numeric"
msgstr "xor: đối số %d không thuộc kiểu số"
-#: builtin.c:3150
+#: builtin.c:3177
#, c-format
msgid "xor: argument %d negative value %g will give strange results"
msgstr "xor: đối số %d giá trị âm %g sẽ đưa lại kết quả không như mong muốn"
-#: builtin.c:3175 mpfr.c:787
+#: builtin.c:3202 mpfr.c:787
msgid "compl: received non-numeric argument"
-msgstr "compl: (biên dịch) đã nhận đối số khác thuộc số"
+msgstr "compl: (biên dịch) đã nhận được đối số không-phải-số"
-#: builtin.c:3181
+#: builtin.c:3208
#, c-format
msgid "compl(%f): negative value will give strange results"
msgstr "compl(%f): giá trị âm sẽ gây ra kết quả không như mong đợi"
-#: builtin.c:3183
+#: builtin.c:3210
#, c-format
msgid "compl(%f): fractional value will be truncated"
msgstr "compl(%f): giá trị thuộc phân số sẽ bị cắt ngắn"
-#: builtin.c:3352
+#: builtin.c:3379
#, c-format
msgid "dcgettext: `%s' is not a valid locale category"
msgstr "dcgettext: “%s†không phải là má»™t phân loại miá»n địa phÆ°Æ¡ng hợp lệ"
@@ -973,7 +989,7 @@ msgstr "nguồn “%sâ€: đã sẵn có trong nguồn rồi."
#: command.y:326
#, c-format
msgid "save \"%s\": command not permitted."
-msgstr "ghi “%sâ€: không đủ thẩm quyá»n."
+msgstr "ghi “%sâ€: lệnh không đủ thẩm quyá»n."
#: command.y:339
msgid "Can't use command `commands' for breakpoint/watchpoint commands"
@@ -1012,7 +1028,7 @@ msgstr "trace: tùy chá»n không hợp lệ - “%sâ€"
#: command.y:387
msgid "condition: invalid breakpoint/watchpoint number"
-msgstr "Ä‘iá»u kiện: số hiệu Ä‘iểm ngắt hay Ä‘iểm theo dõi không hợp lệ"
+msgstr "condition: Ä‘iá»u kiện: số hiệu Ä‘iểm ngắt hay Ä‘iểm theo dõi không hợp lệ"
#: command.y:449
msgid "argument not a string"
@@ -1061,16 +1077,17 @@ msgstr ""
#: command.y:819
msgid ""
"break [[filename:]N|function] - set breakpoint at the specified location."
-msgstr "break [[TẬP-TIN:]N|hàm] - đặt điểm ngắt tại vị trí đã cho."
+msgstr "break [[tên_tập_tin:]N|hàm] - đặt điểm ngắt tại vị trí đã cho."
#: command.y:821
msgid "clear [[filename:]N|function] - delete breakpoints previously set."
-msgstr "clear [[filename:]N|function] - xóa các điểm ngắt được đặt trước đây."
+msgstr ""
+"clear [[tên_tập_tin:]N|function] - xóa các điểm ngắt được đặt trước đây."
#: command.y:823
msgid ""
-"commands [num] - starts a list of commands to be executed at a breakpoint"
-"(watchpoint) hit."
+"commands [num] - starts a list of commands to be executed at a "
+"breakpoint(watchpoint) hit."
msgstr ""
"commands [số] - chạy một danh sách các câu lệnh được thực thi tại điểm ngắt "
"(hay điểm theo dõi) tìm được."
@@ -1086,11 +1103,11 @@ msgstr "continue [Sá»_LƯỢNG] - tiếp tục chÆ°Æ¡ng trình Ä‘ang được g
#: command.y:829
msgid "delete [breakpoints] [range] - delete specified breakpoints."
-msgstr "delete [điểm ngắt] [vùng] - xóa các điểm ngắt đã chỉ ra."
+msgstr "delete [điểm_ngắt] [vùng] - xóa các điểm ngắt đã chỉ ra."
#: command.y:831
msgid "disable [breakpoints] [range] - disable specified breakpoints."
-msgstr "disable [điểm ngắt] [vùng] - tắt các điểm ngắt đã chỉ định."
+msgstr "disable [điểm_ngắt] [vùng] - tắt các điểm ngắt đã chỉ định."
#: command.y:833
msgid "display [var] - print value of variable each time the program stops."
@@ -1103,11 +1120,11 @@ msgstr "down [N] - chuyển xuống N khung stack."
#: command.y:837
msgid "dump [filename] - dump instructions to file or stdout."
msgstr ""
-"dump [tên-tập-tin] - dump các chỉ lệnh ra tập tin hay đầu ra tiêu chuẩn."
+"dump [tên_tập_tin] - dump các chỉ lệnh ra tập tin hay đầu ra tiêu chuẩn."
#: command.y:839
msgid "enable [once|del] [breakpoints] [range] - enable specified breakpoints."
-msgstr "enable [once|del] [breakpoints] [range] - bật các điểm ngắt đã chỉ ra."
+msgstr "enable [once|del] [điểm_ngắt] [range] - bật các điểm ngắt đã chỉ ra."
#: command.y:841
msgid "end - end a list of commands or awk statements."
@@ -1131,7 +1148,7 @@ msgstr "help [lệnh] - hiển thị danh sách các lệnh hay giải thích cÃ
#: command.y:851
msgid "ignore N COUNT - set ignore-count of breakpoint number N to COUNT."
-msgstr "ignore N SÔ-LƯỢNG - đặt số lượng điểm ngắt bị bỠqua."
+msgstr "ignore N Sá»-LƯỢNG - đặt số lượng Ä‘iểm ngắt bị bá» qua."
#: command.y:853
msgid ""
@@ -1142,7 +1159,7 @@ msgstr ""
#: command.y:855
msgid "list [-|+|[filename:]lineno|function|range] - list specified line(s)."
-msgstr "list [-|+|[TẬP-TIN:]số_dòng|hàm|vùng] - liệt kê các dòng đã chỉ định."
+msgstr "list [-|+|[tập_tin:]số_dòng|hàm|vùng] - liệt kê các dòng đã chỉ định."
#: command.y:857
msgid "next [COUNT] - step program, proceeding through subroutine calls."
@@ -1154,7 +1171,7 @@ msgstr ""
msgid ""
"nexti [COUNT] - step one instruction, but proceed through subroutine calls."
msgstr ""
-"nexti [Sá»_LƯỢNG] - nhảy từng chỉ lệnh, nhÆ°ng được xá»­ lý thông qua gá»i thủ "
+"nexti [Sá»_LƯỢNG] - nhảy từng chỉ lệnh, nhÆ°ng được xá»­ lý thông qua gá»i thủ "
"tục con."
#: command.y:861
@@ -1189,7 +1206,7 @@ msgstr "save tên_tập_tin - ghi các câu lệnh từ phiên làm việc vào
#: command.y:877
msgid "set var = value - assign value to a scalar variable."
-msgstr "set biến = giá_trị - gán giá trị cho một biến scalar."
+msgstr "set biến = giá_trị - gán giá trị cho một biến vô hướng."
#: command.y:879
msgid ""
@@ -1214,7 +1231,7 @@ msgstr "stepi [Sá»_LƯỢNG] - chạy từng lệnh má»™t."
#: command.y:887
msgid "tbreak [[filename:]N|function] - set a temporary breakpoint."
-msgstr "tbreak [[TẬP-TIN:]N|hàm] - đặt Ä‘iểm ngắt tạm thá»i."
+msgstr "tbreak [[tên_tập_tin:]N|hàm] - đặt Ä‘iểm ngắt tạm thá»i."
#: command.y:889
msgid "trace on|off - print instruction before executing."
@@ -1229,8 +1246,8 @@ msgid ""
"until [[filename:]N|function] - execute until program reaches a different "
"line or line N within current frame."
msgstr ""
-"until [[TẬP-TIN:]N|hàm] - thực hiện cho đến khi chương trình đạt đến dòng "
-"khác hay dòng N trong khung hiện tại."
+"until [[tên_tập_tin:]N|hàm] - thực hiện cho đến khi chương trình đạt đến "
+"dòng khác hay dòng N trong khung hiện tại."
#: command.y:895
msgid "unwatch [N] - remove variable(s) from watch list."
@@ -1244,7 +1261,7 @@ msgstr "up [N] - chuyển xuống N khung stack."
msgid "watch var - set a watchpoint for a variable."
msgstr "watch var - đặt điểm theo dõi cho một biến."
-#: command.y:1011 debug.c:395 msg.c:128
+#: command.y:1011 debug.c:401 msg.c:135
#, c-format
msgid "error: "
msgstr "lá»—i: "
@@ -1282,148 +1299,148 @@ msgstr "ký tự không hợp lệ"
msgid "undefined command: %s\n"
msgstr "lệnh chưa định nghĩa: %s\n"
-#: debug.c:246
+#: debug.c:252
msgid "set or show the number of lines to keep in history file."
msgstr "đặt hay hiển thị số dòng được lưu giữ trong tập tin lịch sử."
-#: debug.c:248
+#: debug.c:254
msgid "set or show the list command window size."
msgstr "đặt hay hiển thị kích thước cửa sổ danh sách lệnh."
-#: debug.c:250
+#: debug.c:256
msgid "set or show gawk output file."
msgstr "đặt hay hiển thị tập tin kết xuất gawk."
-#: debug.c:252
+#: debug.c:258
msgid "set or show debugger prompt."
msgstr "đặt hay hiển thị dấu nhắc gỡ lỗi."
-#: debug.c:254
+#: debug.c:260
msgid "(un)set or show saving of command history (value=on|off)."
msgstr "(bá») đặt hay ghi lại lịch sá»­ lệnh (giá trị=on|off)."
-#: debug.c:256
+#: debug.c:262
msgid "(un)set or show saving of options (value=on|off)."
msgstr "đặt/bỠđặt hay hiển thị các tùy chá»n được ghi lại (giá_trị=on|off)."
-#: debug.c:258
+#: debug.c:264
msgid "(un)set or show instruction tracing (value=on|off)."
msgstr "(bá») đặt hay hiển thị việc theo vết chỉ lệnh (giá trị=on|off)."
-#: debug.c:339
+#: debug.c:345
msgid "program not running."
msgstr "chương trình không chạy."
-#: debug.c:442 debug.c:597
+#: debug.c:448 debug.c:606
#, c-format
msgid "can't read source file `%s' (%s)"
msgstr "không thể Ä‘á»c tập tin nguồn “%s†(%s)"
-#: debug.c:447
+#: debug.c:453
#, c-format
msgid "source file `%s' is empty.\n"
msgstr "tập tin nguồn “%s†bị trống rỗng.\n"
-#: debug.c:474
+#: debug.c:480
msgid "no current source file."
msgstr "không có tập tin nguồn hiện tại."
-#: debug.c:499
+#: debug.c:505
#, c-format
msgid "cannot find source file named `%s' (%s)"
msgstr "không thể tìm thấy tập tin nguồn có tên “%s†(%s)"
-#: debug.c:523
+#: debug.c:529
#, c-format
msgid "WARNING: source file `%s' modified since program compilation.\n"
msgstr "CẢNH BÃO: tập tin nguồn “%s†bị sá»­a đổi kể từ lúc nó được dịch.\n"
-#: debug.c:542
+#: debug.c:551
#, c-format
msgid "line number %d out of range; `%s' has %d lines"
msgstr "số dòng %d nằm ngoài phạm vi; “%s†có %d dòng"
-#: debug.c:602
+#: debug.c:611
#, c-format
msgid "unexpected eof while reading file `%s', line %d"
msgstr "gặp kết thúc tập tin bất ngá» khi Ä‘ang Ä‘á»c tập tin “%sâ€, dòng %d"
-#: debug.c:611
+#: debug.c:620
#, c-format
msgid "source file `%s' modified since start of program execution"
msgstr "tập tin nguồn “%s†đã bị sửa đổi kể từ lúc chưong trình được khởi chạy"
-#: debug.c:723
+#: debug.c:732
#, c-format
msgid "Current source file: %s\n"
msgstr "Tập tin nguồn hiện tại: %s\n"
-#: debug.c:724
+#: debug.c:733
#, c-format
msgid "Number of lines: %d\n"
msgstr "Số dòng: %d\n"
-#: debug.c:731
+#: debug.c:740
#, c-format
msgid "Source file (lines): %s (%d)\n"
msgstr "Tập tin nguồn (dòng): %s (%d)\n"
-#: debug.c:745
+#: debug.c:754
msgid ""
"Number Disp Enabled Location\n"
"\n"
msgstr ""
-"Số Hiển thị Bật Vị trí\n"
+"Số Hthị Bật Vị trí\n"
"\n"
-#: debug.c:756
+#: debug.c:765
#, c-format
msgid "\tno of hits = %ld\n"
msgstr "\tkhông gợi ý = %ld\n"
-#: debug.c:758
+#: debug.c:767
#, c-format
msgid "\tignore next %ld hit(s)\n"
msgstr "\tbỠqua %ld gợi ý tiếp\n"
-#: debug.c:760 debug.c:900
+#: debug.c:769 debug.c:909
#, c-format
msgid "\tstop condition: %s\n"
msgstr "\tdừng Ä‘iá»u kiện: %s\n"
-#: debug.c:762 debug.c:902
+#: debug.c:771 debug.c:911
msgid "\tcommands:\n"
msgstr "\tlệnh:\n"
-#: debug.c:784
+#: debug.c:793
#, c-format
msgid "Current frame: "
msgstr "Khung hiện tại:"
-#: debug.c:787
+#: debug.c:796
#, c-format
msgid "Called by frame: "
msgstr "Äược gá»i bởi khung:"
-#: debug.c:791
+#: debug.c:800
#, c-format
msgid "Caller of frame: "
msgstr "Bá»™ gá»i của khung:"
-#: debug.c:809
+#: debug.c:818
#, c-format
msgid "None in main().\n"
msgstr "Không có gì trong main().\n"
-#: debug.c:839
+#: debug.c:848
msgid "No arguments.\n"
msgstr "Không có đối số nào.\n"
-#: debug.c:840
+#: debug.c:849
msgid "No locals.\n"
msgstr "Không có nội bộ.\n"
-#: debug.c:848
+#: debug.c:857
msgid ""
"All defined variables:\n"
"\n"
@@ -1431,7 +1448,7 @@ msgstr ""
"Tất cả các biến đã định nghĩa:\n"
"\n"
-#: debug.c:858
+#: debug.c:867
msgid ""
"All defined functions:\n"
"\n"
@@ -1439,7 +1456,7 @@ msgstr ""
"Tất cả các hàm đã định nghĩa:\n"
"\n"
-#: debug.c:877
+#: debug.c:886
msgid ""
"Auto-display variables:\n"
"\n"
@@ -1447,7 +1464,7 @@ msgstr ""
"Các biến hiển thị tự động:\n"
"\n"
-#: debug.c:880
+#: debug.c:889
msgid ""
"Watch variables:\n"
"\n"
@@ -1455,396 +1472,396 @@ msgstr ""
"Các biến theo dõi:\n"
"\n"
-#: debug.c:1020
+#: debug.c:1029
#, c-format
msgid "no symbol `%s' in current context\n"
msgstr "không có ký hiệu “%s†trong ngữ cảnh hiện tại\n"
-#: debug.c:1032 debug.c:1418
+#: debug.c:1041 debug.c:1427
#, c-format
msgid "`%s' is not an array\n"
msgstr "“%s†không phải là một mảng\n"
-#: debug.c:1046
+#: debug.c:1055
#, c-format
msgid "$%ld = uninitialized field\n"
msgstr "$%ld = trÆ°á»ng chÆ°a được khởi tạo\n"
-#: debug.c:1067
+#: debug.c:1076
#, c-format
msgid "array `%s' is empty\n"
msgstr "mảng “%s†trống rỗng\n"
-#: debug.c:1110 debug.c:1162
+#: debug.c:1119 debug.c:1171
#, c-format
msgid "[\"%s\"] not in array `%s'\n"
msgstr "[â€%sâ€] không nằm trong mảng “%sâ€\n"
-#: debug.c:1166
+#: debug.c:1175
#, c-format
msgid "`%s[\"%s\"]' is not an array\n"
msgstr "“%s[â€%sâ€]†không phải là má»™t mảng\n"
-#: debug.c:1227 debug.c:4949
+#: debug.c:1236 debug.c:4964
#, c-format
msgid "`%s' is not a scalar variable"
msgstr "“%s†không phải là biến scalar"
-#: debug.c:1249 debug.c:4979
+#: debug.c:1258 debug.c:4994
#, c-format
msgid "attempt to use array `%s[\"%s\"]' in a scalar context"
msgstr "cố dùng mảng “%s[â€%sâ€]†trong má»™t ngữ cảnh vô hÆ°á»›ng"
-#: debug.c:1271 debug.c:4990
+#: debug.c:1280 debug.c:5005
#, c-format
msgid "attempt to use scalar `%s[\"%s\"]' as array"
msgstr "cố dùng kiểu vô hÆ°á»›ng “%s[â€%sâ€]†nhÆ° là mảng"
-#: debug.c:1414
+#: debug.c:1423
#, c-format
msgid "`%s' is a function"
msgstr "“%s†là một hàm"
-#: debug.c:1456
+#: debug.c:1465
#, c-format
msgid "watchpoint %d is unconditional\n"
msgstr "Ä‘iểm kiểm tra %d là vô Ä‘iá»u kiện\n"
-#: debug.c:1490
+#: debug.c:1499
#, c-format
msgid "No display item numbered %ld"
msgstr "Không có mục tin hiển thị nào đánh số %ld"
-#: debug.c:1493
+#: debug.c:1502
#, c-format
msgid "No watch item numbered %ld"
msgstr "Không có mục tin theo dõi nào đánh số %ld"
-#: debug.c:1519
+#: debug.c:1528
#, c-format
msgid "%d: [\"%s\"] not in array `%s'\n"
msgstr "%d: [â€%sâ€] không trong mảng “%sâ€\n"
-#: debug.c:1758
+#: debug.c:1767
msgid "attempt to use scalar value as array"
msgstr "cố dùng biến vô hướng như là một mảng"
-#: debug.c:1847
+#: debug.c:1856
#, c-format
msgid "Watchpoint %d deleted because parameter is out of scope.\n"
msgstr "Äiểm theo dõi %d bị xóa bởi vì đối số nằm ngoài phạm vi\n"
-#: debug.c:1858
+#: debug.c:1867
#, c-format
msgid "Display %d deleted because parameter is out of scope.\n"
msgstr "Trình bày %d bị xóa bởi vì đối số nằm ngoài phạm vi\n"
-#: debug.c:1891
+#: debug.c:1900
#, c-format
msgid " in file `%s', line %d\n"
msgstr " tại tập tin “%sâ€, dòng %d\n"
-#: debug.c:1912
+#: debug.c:1921
#, c-format
msgid " at `%s':%d"
msgstr " tại “%sâ€:%d"
-#: debug.c:1928 debug.c:1991
+#: debug.c:1937 debug.c:2000
#, c-format
msgid "#%ld\tin "
msgstr "#%ld\ttrong "
-#: debug.c:1965
+#: debug.c:1974
#, c-format
msgid "More stack frames follow ...\n"
-msgstr "Nhiá»u khung stack theo sau...\n"
+msgstr "Nhiá»u khung ngăn xếp theo sau...\n"
-#: debug.c:2008
+#: debug.c:2017
msgid "invalid frame number"
msgstr "số khung không hợp lệ"
-#: debug.c:2180
+#: debug.c:2200
#, c-format
msgid "Note: breakpoint %d (enabled, ignore next %ld hits), also set at %s:%d"
msgstr ""
"Chú ý: Ä‘iểm ngắt %d (được bật, bá» qua %ld gợi ý tiếp), đồng thá»i được đặt "
"tại %s:%d"
-#: debug.c:2187
+#: debug.c:2207
#, c-format
msgid "Note: breakpoint %d (enabled), also set at %s:%d"
msgstr "Chú ý: Ä‘iểm ngắt %d (được bật), đồng thá»i được đặt tại %s:%d"
-#: debug.c:2194
+#: debug.c:2214
#, c-format
msgid "Note: breakpoint %d (disabled, ignore next %ld hits), also set at %s:%d"
msgstr ""
"Chú ý: Ä‘iểm ngắt %d (bị tắt, bá» qua %ld gợi ý tiếp), đồng thá»i được đặt tại "
"%s:%d"
-#: debug.c:2201
+#: debug.c:2221
#, c-format
msgid "Note: breakpoint %d (disabled), also set at %s:%d"
msgstr "Chú ý: Ä‘iểm ngắt %d (bị tắt), đồng thá»i được đặt tại %s:%d"
-#: debug.c:2218
+#: debug.c:2238
#, c-format
msgid "Breakpoint %d set at file `%s', line %d\n"
msgstr "Äiểm ngắt %d đặt tại tập tin “%sâ€, dòng %d\n"
-#: debug.c:2320
+#: debug.c:2340
#, c-format
msgid "Can't set breakpoint in file `%s'\n"
msgstr "Không thể đặt Ä‘iểm ngắt trong tập tin “%sâ€\n"
-#: debug.c:2349 debug.c:2472 debug.c:3330
+#: debug.c:2369 debug.c:2492 debug.c:3350
#, c-format
msgid "line number %d in file `%s' out of range"
msgstr "số dòng %d trong tập tin “%s†nằm ngoài phạm vi"
-#: debug.c:2353
+#: debug.c:2373
#, c-format
msgid "Can't find rule!!!\n"
msgstr "Không tìm thấy quy tắc!!!\n"
-#: debug.c:2355
+#: debug.c:2375
#, c-format
msgid "Can't set breakpoint at `%s':%d\n"
msgstr "Không thể đặt Ä‘iểm ngắt tại “%sâ€:%d\n"
-#: debug.c:2367
+#: debug.c:2387
#, c-format
msgid "Can't set breakpoint in function `%s'\n"
msgstr "Không thể đặt Ä‘iểm ngắt trong hàm “%sâ€\n"
-#: debug.c:2383
+#: debug.c:2403
#, c-format
msgid "breakpoint %d set at file `%s', line %d is unconditional\n"
msgstr "Ä‘iểm ngắt %d đặt tại tập tin “%sâ€, dòng %d là vô Ä‘iá»u kiện\n"
-#: debug.c:2488 debug.c:2510
+#: debug.c:2508 debug.c:2530
#, c-format
msgid "Deleted breakpoint %d"
msgstr "Xóa điểm dừng %d"
-#: debug.c:2494
+#: debug.c:2514
#, c-format
msgid "No breakpoint(s) at entry to function `%s'\n"
msgstr "Không có Ä‘iểm ngắt tại Ä‘iểm vào của hàm “%sâ€\n"
-#: debug.c:2521
+#: debug.c:2541
#, c-format
msgid "No breakpoint at file `%s', line #%d\n"
msgstr "Không có Ä‘iểm ngắt tại tập tin “%sâ€, dòng #%d\n"
-#: debug.c:2576 debug.c:2617 debug.c:2637 debug.c:2680
+#: debug.c:2596 debug.c:2637 debug.c:2657 debug.c:2700
msgid "invalid breakpoint number"
msgstr "số điểm ngắt không hợp lệ"
-#: debug.c:2592
+#: debug.c:2612
msgid "Delete all breakpoints? (y or n) "
msgstr "Xóa tất cả các điểm ngắt? (c hay k) "
-#: debug.c:2593 debug.c:2903 debug.c:2956
+#: debug.c:2613 debug.c:2923 debug.c:2976
msgid "y"
msgstr "c"
-#: debug.c:2642
+#: debug.c:2662
#, c-format
msgid "Will ignore next %ld crossing(s) of breakpoint %d.\n"
msgstr "Sẽ bỠqua %ld điểm giao chéo của điểm ngắt %d.\n"
-#: debug.c:2646
+#: debug.c:2666
#, c-format
msgid "Will stop next time breakpoint %d is reached.\n"
msgstr "Sẽ dừng lần gặp điểm ngắt %d tiếp theo.\n"
-#: debug.c:2763
+#: debug.c:2783
#, c-format
msgid "Can only debug programs provided with the `-f' option.\n"
msgstr ""
"Chỉ có thể gỡ lá»—i các chÆ°Æ¡ng trình được cung cấp cùng vá»›i tùy chá»n “-fâ€.\n"
-#: debug.c:2888
+#: debug.c:2908
#, c-format
msgid "Failed to restart debugger"
msgstr "Gặp lỗi khi khởi động lại bộ gỡ lỗi"
-#: debug.c:2902
+#: debug.c:2922
msgid "Program already running. Restart from beginning (y/n)? "
msgstr "Chương trình đang chạy. Khởi động từ đầu (c/không)?"
-#: debug.c:2906
+#: debug.c:2926
#, c-format
msgid "Program not restarted\n"
msgstr "Chương trình không khởi động lại\n"
-#: debug.c:2916
+#: debug.c:2936
#, c-format
msgid "error: cannot restart, operation not allowed\n"
msgstr "lỗi: không thể khởi động lại, thao tác không được cho phép\n"
-#: debug.c:2922
+#: debug.c:2942
#, c-format
msgid "error (%s): cannot restart, ignoring rest of the commands\n"
msgstr "lỗi (%s): không thể khởi động lại, bỠqua các lệnh còn lại\n"
-#: debug.c:2930
+#: debug.c:2950
#, c-format
msgid "Starting program: \n"
msgstr "Äang khởi Ä‘á»™ng chÆ°Æ¡ng trình:\n"
-#: debug.c:2939
+#: debug.c:2959
#, c-format
msgid "Program exited %s with exit value: %d\n"
msgstr "Chương trình %s được thoát ra với mã thoát là: %d\n"
-#: debug.c:2955
+#: debug.c:2975
msgid "The program is running. Exit anyway (y/n)? "
msgstr "Chương trình này đang chạy. Vẫn thoát (c/không)?"
-#: debug.c:2990
+#: debug.c:3010
#, c-format
msgid "Not stopped at any breakpoint; argument ignored.\n"
msgstr "Không dừng tại bất ký điểm ngắt nào; đối số bị bỠqua.\n"
-#: debug.c:2995
+#: debug.c:3015
#, c-format
msgid "invalid breakpoint number %d."
msgstr "số điểm ngắt không hợp lệ %d."
-#: debug.c:3000
+#: debug.c:3020
#, c-format
msgid "Will ignore next %ld crossings of breakpoint %d.\n"
msgstr "Sẽ bỠqua %ld điểm ngắt xuyên chéo %d kế tiếp.\n"
-#: debug.c:3187
+#: debug.c:3207
#, c-format
msgid "'finish' not meaningful in the outermost frame main()\n"
msgstr "“finish†không có nghĩa trong khung ngoài cùng nhất main()\n"
-#: debug.c:3192
+#: debug.c:3212
#, c-format
msgid "Run till return from "
msgstr "Chạy cho đến khi có trả vỠtừ đó"
-#: debug.c:3235
+#: debug.c:3255
#, c-format
msgid "'return' not meaningful in the outermost frame main()\n"
msgstr "“return†không có nghĩa trong khung ngoài cùng nhất main()\n"
-#: debug.c:3349
+#: debug.c:3369
#, c-format
msgid "Can't find specified location in function `%s'\n"
msgstr "Không tìm thấy vị trí đã cho trong hàm “%sâ€\n"
-#: debug.c:3357
+#: debug.c:3377
#, c-format
msgid "invalid source line %d in file `%s'"
msgstr "dòng nguồn không hợp lệ %d trong tập tin “%sâ€"
-#: debug.c:3372
+#: debug.c:3392
#, c-format
msgid "Can't find specified location %d in file `%s'\n"
msgstr "Không thể tìm thấy vị trí %d được chỉ ra trong tập tin “%sâ€\n"
-#: debug.c:3404
+#: debug.c:3424
#, c-format
msgid "element not in array\n"
msgstr "phần tử không trong mảng\n"
-#: debug.c:3404
+#: debug.c:3424
#, c-format
msgid "untyped variable\n"
msgstr "biến chưa định kiểu\n"
-#: debug.c:3446
+#: debug.c:3466
#, c-format
msgid "Stopping in %s ...\n"
msgstr "Dừng trong %s ...\n"
-#: debug.c:3523
+#: debug.c:3543
#, c-format
msgid "'finish' not meaningful with non-local jump '%s'\n"
msgstr "“finish†không có nghÄ©a vá»›i lệnh nhảy non-local “%sâ€\n"
-#: debug.c:3530
+#: debug.c:3550
#, c-format
msgid "'until' not meaningful with non-local jump '%s'\n"
msgstr "“until†không có nghÄ©a vá»›i cú nhảy non-local “%sâ€\n"
-#: debug.c:4165
+#: debug.c:4185
msgid "\t------[Enter] to continue or q [Enter] to quit------"
-msgstr "\t------Nhấn [Enter] để tiếp tục hay “q†[Enter] để thoát------"
+msgstr "\t-Nhấn [Enter] để tiếp tục hay “q†[Enter] để thoát------"
-#: debug.c:4166
+#: debug.c:4186
msgid "q"
msgstr "t"
-#: debug.c:4986
+#: debug.c:5001
#, c-format
msgid "[\"%s\"] not in array `%s'"
-msgstr "[â€%sâ€] không trong mảng “%sâ€"
+msgstr "[\"%s\"] không trong mảng “%sâ€"
-#: debug.c:5192
+#: debug.c:5207
#, c-format
msgid "sending output to stdout\n"
msgstr "gửi kết xuất ra stdout\n"
-#: debug.c:5232
+#: debug.c:5247
msgid "invalid number"
msgstr "số không hợp lệ"
-#: debug.c:5366
+#: debug.c:5381
#, c-format
msgid "`%s' not allowed in current context; statement ignored"
msgstr "“%s†không được phép trong ngữ cảnh hiện hành; câu lệnh bị bỠqua"
-#: debug.c:5374
+#: debug.c:5389
msgid "`return' not allowed in current context; statement ignored"
msgstr "“return†không được phép trong ngữ cảnh hiện hành; câu lệnh bị bỠqua"
-#: debug.c:5575
+#: debug.c:5590
#, c-format
msgid "No symbol `%s' in current context"
msgstr "Không có ký hiệu “%s†trong ngữ cảnh hiện thá»i"
-#: dfa.c:998 dfa.c:1001 dfa.c:1021 dfa.c:1031 dfa.c:1043 dfa.c:1094 dfa.c:1103
-#: dfa.c:1106 dfa.c:1111 dfa.c:1124 dfa.c:1192
+#: dfa.c:1118 dfa.c:1121 dfa.c:1142 dfa.c:1150 dfa.c:1162 dfa.c:1197
+#: dfa.c:1206 dfa.c:1209 dfa.c:1214 dfa.c:1228 dfa.c:1275
msgid "unbalanced ["
msgstr "thiếu dấu ngoặc vuông mở ["
-#: dfa.c:1052
+#: dfa.c:1174
msgid "invalid character class"
msgstr "sai lớp ký tự"
-#: dfa.c:1229
+#: dfa.c:1316
msgid "character class syntax is [[:space:]], not [:space:]"
msgstr "cú pháp lớp ký tự là [[:dấu_cách:]], không phải [:dấu_cách:]"
-#: dfa.c:1281
+#: dfa.c:1366
msgid "unfinished \\ escape"
msgstr "chưa kết thúc dãy thoát \\"
-#: dfa.c:1428 regcomp.c:161
+#: dfa.c:1513 regcomp.c:161
msgid "Invalid content of \\{\\}"
-msgstr "Nội dụng “\\{\\}†không hợp lệ"
+msgstr "Nội dung của “\\{\\}†không hợp lệ"
-#: dfa.c:1431 regcomp.c:176
+#: dfa.c:1516 regcomp.c:176
msgid "Regular expression too big"
msgstr "Biểu thức chính quy quá lớn"
-#: dfa.c:1816
+#: dfa.c:1936
msgid "unbalanced ("
-msgstr "mất cân xứng ("
+msgstr "thiếu dấu ("
-#: dfa.c:1943
+#: dfa.c:2062
msgid "no syntax specified"
msgstr "chưa chỉ rõ cú pháp"
-#: dfa.c:1951
+#: dfa.c:2070
msgid "unbalanced )"
-msgstr "mất cân xứng )"
+msgstr "thiếu dấu )"
#: eval.c:394
#, c-format
@@ -1861,11 +1878,11 @@ msgstr "gặp opcode (mã thao tác) không rõ %d"
msgid "opcode %s not an operator or keyword"
msgstr "mã lệnh %s không phải là một toán tử hoặc từ khoá"
-#: eval.c:471
+#: eval.c:472
msgid "buffer overflow in genflags2str"
msgstr "tràn bộ đệm trong “genflags2str†(tạo ra cỠđến chuỗi)"
-#: eval.c:674
+#: eval.c:675
#, c-format
msgid ""
"\n"
@@ -1873,77 +1890,77 @@ msgid ""
"\n"
msgstr ""
"\n"
-"\t# Äống gá»i hàm:\n"
+"\t# Ngăn xếp gá»i hàm:\n"
"\n"
-#: eval.c:703
+#: eval.c:704
msgid "`IGNORECASE' is a gawk extension"
-msgstr "“IGNORECASE†(bá» qua chữ hoa/thÆ°á»ng) là phần mở rá»™ng gawk"
+msgstr "“IGNORECASE†(bá» qua chữ HOA/thÆ°á»ng) là phần mở rá»™ng gawk"
-#: eval.c:735
+#: eval.c:736
msgid "`BINMODE' is a gawk extension"
msgstr "“BINMODE†(chế độ nhị phân) là phần mở rộng gawk"
-#: eval.c:793
+#: eval.c:794
#, c-format
msgid "BINMODE value `%s' is invalid, treated as 3"
-msgstr "Giá trị BINMODE (chế độ nhị phân) “%s†không hợp lệ nên thấy là 3"
+msgstr "Giá trị BINMODE (chế độ nhị phân) “%s†không hợp lệ nên đã coi là 3"
-#: eval.c:884
+#: eval.c:885
#, c-format
msgid "bad `%sFMT' specification `%s'"
msgstr "đặc tả “%sFMT†sai “%sâ€"
-#: eval.c:968
+#: eval.c:969
msgid "turning off `--lint' due to assignment to `LINT'"
msgstr "Ä‘ang tắt “--lint†do việc gán cho “LINTâ€"
-#: eval.c:1146
+#: eval.c:1147
#, c-format
msgid "reference to uninitialized argument `%s'"
-msgstr "gặp tham chiếu đến đối số chÆ°a được sở khởi “%sâ€"
+msgstr "gặp tham chiếu đến đối số chÆ°a được khởi tạo “%sâ€"
-#: eval.c:1147
+#: eval.c:1148
#, c-format
msgid "reference to uninitialized variable `%s'"
-msgstr "gặp tham chiếu đến biến chÆ°a được sở khởi “%sâ€"
+msgstr "gặp tham chiếu đến biến chÆ°a được khởi tạo “%sâ€"
-#: eval.c:1165
+#: eval.c:1166
msgid "attempt to field reference from non-numeric value"
msgstr "cố gắng tham chiếu trÆ°á»ng từ giá trị khác thuá»™c số"
-#: eval.c:1167
+#: eval.c:1168
msgid "attempt to field reference from null string"
-msgstr "cố gắng tham chiếu trÆ°á»ng từ chá»—i trống rá»—ng"
+msgstr "cố gắng tham chiếu trÆ°á»ng từ chuá»—i trống rá»—ng"
-#: eval.c:1175
+#: eval.c:1176
#, c-format
msgid "attempt to access field %ld"
msgstr "cố gắng để truy cập trÆ°á»ng %ld"
-#: eval.c:1184
+#: eval.c:1185
#, c-format
msgid "reference to uninitialized field `$%ld'"
msgstr "tham chiếu đến trÆ°á»ng chÆ°a được khởi tạo “$%ldâ€"
-#: eval.c:1271
+#: eval.c:1272
#, c-format
msgid "function `%s' called with more arguments than declared"
-msgstr "hàm “%s†được gá»i vá»›i số đối số hÆ¡n số được tuyên bố"
+msgstr "hàm “%s†được gá»i vá»›i nhiá»u số đối số hÆ¡n số được khai báo"
-#: eval.c:1466
+#: eval.c:1473
#, c-format
msgid "unwind_stack: unexpected type `%s'"
-msgstr "unwind_stack: không mong đợi kiểu “%sâ€"
+msgstr "unwind_stack: không cần kiểu “%sâ€"
-#: eval.c:1562
+#: eval.c:1569
msgid "division by zero attempted in `/='"
-msgstr "cố gắng chia cho số không trong “/=â€"
+msgstr "gặp phép chia cho số không trong “/=â€"
-#: eval.c:1569
+#: eval.c:1576
#, c-format
msgid "division by zero attempted in `%%='"
-msgstr "cố gắng chia cho số không trong “%%=â€"
+msgstr "gặp phép chia cho số không trong “%%=â€"
#: ext.c:89 ext.c:171
msgid "extensions are not allowed in sandbox mode"
@@ -1953,7 +1970,7 @@ msgstr "phần mở rộng không cho phép ở chế độ khuôn đúc"
msgid "-l / @load are gawk extensions"
msgstr "-l / @load là một phần mở rộng gawk"
-#: ext.c:95 ext.c:177
+#: ext.c:95
msgid "load_ext: received NULL lib_name"
msgstr "load_ext: nhận được NULL lib_name"
@@ -1983,6 +2000,10 @@ msgstr "load_ext: thư viện “%s†thủ tục khởi tạo “%s†gặp l
msgid "`extension' is a gawk extension"
msgstr "“extension†là một phần mở rộng gawk"
+#: ext.c:177
+msgid "extension: received NULL lib_name"
+msgstr "extension: nhận được NULL lib_name"
+
#: ext.c:180
#, c-format
msgid "extension: cannot open library `%s' (%s)"
@@ -2004,38 +2025,38 @@ msgstr "phần mở rá»™ng: thÆ° viện “%sâ€: không thể gá»i hàm “%sâ
msgid "make_builtin: missing function name"
msgstr "make_builtin: thiếu tên hàm"
-#: ext.c:238
+#: ext.c:236
#, c-format
msgid "make_builtin: can't redefine function `%s'"
msgstr "make_builtin: không thể định nghÄ©a lại hàm “%sâ€"
-#: ext.c:242
+#: ext.c:240
#, c-format
msgid "make_builtin: function `%s' already defined"
msgstr "make_builtin: hàm “%s†đã được định nghĩa rồi"
-#: ext.c:246
+#: ext.c:244
#, c-format
msgid "make_builtin: function name `%s' previously defined"
msgstr "make_builtin: hàm “%s†đã được định nghĩa trước đây rồi"
-#: ext.c:248
+#: ext.c:246
#, c-format
msgid "make_builtin: can't use gawk built-in `%s' as function name"
msgstr ""
"make_builtin: không thể sử dụng “%s†như là một hàm được xây dựng sẵn trong "
"gawk"
-#: ext.c:251 ext.c:304
+#: ext.c:249 ext.c:304
#, c-format
msgid "make_builtin: negative argument count for function `%s'"
msgstr "make_builtin: đối số dành cho số đếm bị âm cho hàm “%sâ€"
-#: ext.c:278
+#: ext.c:276
msgid "extension: missing function name"
msgstr "extension: (phần mở rộng) tên hàm còn thiếu"
-#: ext.c:283
+#: ext.c:279 ext.c:283
#, c-format
msgid "extension: illegal character `%c' in function name `%s'"
msgstr "extension: (phần mở rá»™ng) gặp ký tá»± cấm “%c†nằm trong tên hàm “%sâ€"
@@ -2043,17 +2064,17 @@ msgstr "extension: (phần mở rộng) gặp ký tự cấm “%c†nằm tron
#: ext.c:291
#, c-format
msgid "extension: can't redefine function `%s'"
-msgstr "extension: (phần mở rá»™ng) không thể xác định lại hàm “%sâ€"
+msgstr "extension: (phần mở rá»™ng) không thể định nghÄ©a lại hàm “%sâ€"
#: ext.c:295
#, c-format
msgid "extension: function `%s' already defined"
-msgstr "extension: (phần mở rộng) hàm “%s†đã được xác định"
+msgstr "extension: (phần mở rộng) hàm “%s†đã được định nghĩa"
#: ext.c:299
#, c-format
msgid "extension: function name `%s' previously defined"
-msgstr "tên hàm “%s†đã được xác định trước"
+msgstr "tên hàm “%s†đã được định nghĩa trước đó"
#: ext.c:301
#, c-format
@@ -2062,139 +2083,143 @@ msgstr ""
"extension: (phần mở rá»™ng) không thể dùng Ä‘iá»u có sẵn của gawk “%s†nhÆ° là "
"tên hàm"
-#: ext.c:374
+#: ext.c:375
#, c-format
msgid "function `%s' defined to take no more than %d argument(s)"
-msgstr "hàm “%s†được xác định để chấp nhấn %d đối số tối đa"
+msgstr "hàm “%s†được định nghĩa để chấp nhấn %d đối số tối đa"
-#: ext.c:377
+#: ext.c:378
#, c-format
msgid "function `%s': missing argument #%d"
msgstr "hàm “%sâ€: thiếu đối số #%d"
-#: ext.c:394
+#: ext.c:395
#, c-format
msgid "function `%s': argument #%d: attempt to use scalar as an array"
msgstr "hàm “%sâ€: đối số thứ %d: cố gắng dùng kiểu vô hÆ°á»›ng nhÆ° là mảng"
-#: ext.c:398
+#: ext.c:399
#, c-format
msgid "function `%s': argument #%d: attempt to use array as a scalar"
msgstr "hàm “%sâ€: đối số thứ %d: cố gắng dùng mảng nhÆ° là kiểu vô hÆ°á»›ng"
-#: ext.c:412
+#: ext.c:413
msgid "dynamic loading of library not supported"
msgstr "tải động của thư viện không được hỗ trợ"
-#: extension/filefuncs.c:97
+#: extension/filefuncs.c:159
msgid "chdir: called with incorrect number of arguments, expecting 1"
msgstr "chdir: được gá»i vá»›i số lượng đối số không đúng, cần 1"
-#: extension/filefuncs.c:343
+#: extension/filefuncs.c:439
#, c-format
msgid "stat: unable to read symbolic link `%s'"
msgstr "stat: không thể Ä‘á»c liên kết má»m “%sâ€"
-#: extension/filefuncs.c:376
+#: extension/filefuncs.c:472
msgid "stat: called with wrong number of arguments"
msgstr "stat: được gá»i vá»›i số lượng đối số không đúng"
-#: extension/filefuncs.c:383
+#: extension/filefuncs.c:479
msgid "stat: bad parameters"
msgstr "stat: các đối số sai"
-#: extension/filefuncs.c:437
+#: extension/filefuncs.c:533
#, c-format
msgid "fts init: could not create variable %s"
msgstr "khởi tạo fts: không thể tạo biến %s"
-#: extension/filefuncs.c:460
+#: extension/filefuncs.c:554
+msgid "fts is not supported on this system"
+msgstr "fts không được hỗ trợ trên hệ thống này"
+
+#: extension/filefuncs.c:573
msgid "fill_stat_element: could not create array"
msgstr "fill_stat_element: không thể tạo mảng"
-#: extension/filefuncs.c:469
+#: extension/filefuncs.c:582
msgid "fill_stat_element: could not set element"
msgstr "fill_stat_element: không thể đặt phần tử"
-#: extension/filefuncs.c:484
+#: extension/filefuncs.c:597
msgid "fill_path_element: could not set element"
msgstr "fill_path_element: không thể đặt phần tử"
-#: extension/filefuncs.c:500
+#: extension/filefuncs.c:613
msgid "fill_error_element: could not set element"
msgstr "fill_error_element: không thể đặt phần tử"
-#: extension/filefuncs.c:547 extension/filefuncs.c:594
+#: extension/filefuncs.c:660 extension/filefuncs.c:707
msgid "fts-process: could not create array"
msgstr "fts-process: không thể tạo mảng"
-#: extension/filefuncs.c:557 extension/filefuncs.c:604
-#: extension/filefuncs.c:622
+#: extension/filefuncs.c:670 extension/filefuncs.c:717
+#: extension/filefuncs.c:735
msgid "fts-process: could not set element"
msgstr "fts-process: không thể đặt phần tử"
-#: extension/filefuncs.c:671
+#: extension/filefuncs.c:784
msgid "fts: called with incorrect number of arguments, expecting 3"
msgstr "fts: được gá»i vá»›i số lượng đối số không đúng, cần 3"
-#: extension/filefuncs.c:674
+#: extension/filefuncs.c:787
msgid "fts: bad first parameter"
msgstr "fts: đối số đầu tiên sai"
-#: extension/filefuncs.c:680
+#: extension/filefuncs.c:793
msgid "fts: bad second parameter"
msgstr "fts: đối số thứ hai sai"
-#: extension/filefuncs.c:686
+#: extension/filefuncs.c:799
msgid "fts: bad third parameter"
msgstr "fts: đối số thứ ba sai"
-#: extension/filefuncs.c:693
+#: extension/filefuncs.c:806
msgid "fts: could not flatten array\n"
msgstr "fts: không thể làm phẳng mảng\n"
-#: extension/filefuncs.c:711
+#: extension/filefuncs.c:824
msgid "fts: ignoring sneaky FTS_NOSTAT flag. nyah, nyah, nyah."
msgstr "fts: bỠqua cỠFTS_NOSTAT vụng trộm. nyah, nyah, nyah."
-#: extension/filefuncs.c:728
+#: extension/filefuncs.c:841
msgid "fts: clear_array() failed\n"
msgstr "fts: clear_array() gặp lỗi\n"
-#: extension/fnmatch.c:98
+#: extension/fnmatch.c:112
msgid "fnmatch: called with less than three arguments"
msgstr "fnmatch: được gá»i vá»›i ít hÆ¡n ba đối số"
-#: extension/fnmatch.c:101
+#: extension/fnmatch.c:115
msgid "fnmatch: called with more than three arguments"
msgstr "fnmatch: được gá»i vá»›i nhiá»u hÆ¡n ba đối số"
-#: extension/fnmatch.c:104
+#: extension/fnmatch.c:118
msgid "fnmatch: could not get first argument"
msgstr "fnmatch: không lấy được đối số đầu tiên"
-#: extension/fnmatch.c:109
+#: extension/fnmatch.c:123
msgid "fnmatch: could not get second argument"
msgstr "fnmatch: không lấy được đối số thứ hai"
-#: extension/fnmatch.c:114
+#: extension/fnmatch.c:128
msgid "fnmatch: could not get third argument"
msgstr "fnmatch: không thể lấy tham số thứ ba"
-#: extension/fnmatch.c:127
+#: extension/fnmatch.c:141
msgid "fnmatch is not implemented on this system\n"
msgstr "fnmatch không được hỗ trợ trên hệ thống này\n"
-#: extension/fnmatch.c:159
+#: extension/fnmatch.c:173
msgid "fnmatch init: could not add FNM_NOMATCH variable"
msgstr "khởi tạo fnmatch: không thể thêm biến FNM_NOMATCH"
-#: extension/fnmatch.c:169
+#: extension/fnmatch.c:183
#, c-format
msgid "fnmatch init: could not set array element %s"
msgstr "fnmatch init: không thể đặt phần tử mảng %s"
-#: extension/fnmatch.c:179
+#: extension/fnmatch.c:193
msgid "fnmatch init: could not install FNM array"
msgstr "khởi tạo fnmatch: không thể cài đặt mảng FNM"
@@ -2218,88 +2243,88 @@ msgstr "wait: được gá»i mà không truyá»n đối số"
msgid "wait: called with too many arguments"
msgstr "wait: được gá»i vá»›i quá nhiá»u đối số"
-#: extension/inplace.c:110
+#: extension/inplace.c:130
msgid "inplace_begin: in-place editing already active"
msgstr "inplace_begin: sửa in-place đã sẵn được kích hoạt rồi"
-#: extension/inplace.c:113 extension/inplace.c:187
+#: extension/inplace.c:133 extension/inplace.c:207
#, c-format
msgid "inplace_begin: expects 2 arguments but called with %d"
msgstr "inplace_begin: cần 2 đối số nhÆ° lại được gá»i vá»›i %d"
-#: extension/inplace.c:116
+#: extension/inplace.c:136
msgid "inplace_begin: cannot retrieve 1st argument as a string filename"
msgstr "inplace_begin: không thể lấy đối số thứ nhất như là tên tập tin"
-#: extension/inplace.c:124
+#: extension/inplace.c:144
#, c-format
msgid "inplace_begin: disabling in-place editing for invalid FILENAME `%s'"
-msgstr "inplace_begin: tắt sá»­a chữa in-place cho TÊN-TẬP-TIN không hợp lệ “%sâ€"
+msgstr "inplace_begin: tắt sá»­a chữa in-place cho TÊN_TẬP_TIN không hợp lệ “%sâ€"
-#: extension/inplace.c:131
+#: extension/inplace.c:151
#, c-format
msgid "inplace_begin: Cannot stat `%s' (%s)"
-msgstr "inplace_begin: Không thể lấy trạng thái của “%s†(%s)"
+msgstr "inplace_begin: Không thể lấy thông tin thống kê của “%s†(%s)"
-#: extension/inplace.c:138
+#: extension/inplace.c:158
#, c-format
msgid "inplace_begin: `%s' is not a regular file"
msgstr "inplace_begin: “%s†không phải là tập tin thÆ°á»ng"
-#: extension/inplace.c:149
+#: extension/inplace.c:169
#, c-format
msgid "inplace_begin: mkstemp(`%s') failed (%s)"
msgstr "inplace_begin: mkstemp(“%sâ€) gặp lá»—i (%s)"
-#: extension/inplace.c:158
+#: extension/inplace.c:178
#, c-format
msgid "inplace_begin: chmod failed (%s)"
msgstr "inplace_begin: chmod gặp lỗi (%s)"
-#: extension/inplace.c:165
+#: extension/inplace.c:185
#, c-format
msgid "inplace_begin: dup(stdout) failed (%s)"
msgstr "inplace_begin: dup(stdout) gặp lỗi (%s)"
-#: extension/inplace.c:168
+#: extension/inplace.c:188
#, c-format
msgid "inplace_begin: dup2(%d, stdout) failed (%s)"
msgstr "inplace_begin: dup2(%d, stdout) gặp lỗi (%s)"
-#: extension/inplace.c:171
+#: extension/inplace.c:191
#, c-format
msgid "inplace_begin: close(%d) failed (%s)"
msgstr "inplace_begin: close(%d) gặp lỗi (%s)"
-#: extension/inplace.c:190
+#: extension/inplace.c:210
msgid "inplace_end: cannot retrieve 1st argument as a string filename"
msgstr "inplace_end: không thể lấy lại đối số thứ nhất như là một tên tập tin"
-#: extension/inplace.c:197
+#: extension/inplace.c:217
msgid "inplace_end: in-place editing not active"
msgstr "inplace_end: việc sửa in-place không được kích hoạt"
-#: extension/inplace.c:203
+#: extension/inplace.c:223
#, c-format
msgid "inplace_end: dup2(%d, stdout) failed (%s)"
msgstr "inplace_end: dup2(%d, stdout) gặp lỗi (%s)"
-#: extension/inplace.c:206
+#: extension/inplace.c:226
#, c-format
msgid "inplace_end: close(%d) failed (%s)"
msgstr "inplace_end: close(%d) gặp lỗi (%s)"
-#: extension/inplace.c:210
+#: extension/inplace.c:230
#, c-format
msgid "inplace_end: fsetpos(stdout) failed (%s)"
msgstr "inplace_end: fsetpos(stdout) gặp lỗi (%s)"
-#: extension/inplace.c:223
+#: extension/inplace.c:243
#, c-format
msgid "inplace_end: link(`%s', `%s') failed (%s)"
msgstr "inplace_end: link(“%sâ€, “%sâ€) gặp lá»—i (%s)"
-#: extension/inplace.c:229
+#: extension/inplace.c:253
#, c-format
msgid "inplace_end: rename(`%s', `%s') failed (%s)"
msgstr "inplace_end: rename(“%sâ€, “%sâ€) gặp lá»—i (%s)"
@@ -2328,178 +2353,178 @@ msgstr "chr: được gá»i mà không có đối số"
msgid "chr: called with inappropriate argument(s)"
msgstr "chr: được gá»i vá»›i đối số không thích hợp"
-#: extension/readdir.c:203
+#: extension/readdir.c:281
#, c-format
msgid "dir_take_control_of: opendir/fdopendir failed: %s"
msgstr "dir_take_control_of: opendir/fdopendir gặp lỗi: %s"
-#: extension/readfile.c:84
+#: extension/readfile.c:113
msgid "readfile: called with too many arguments"
msgstr "readfile: được gá»i vá»›i quá nhiá»u đối số"
-#: extension/readfile.c:118
+#: extension/readfile.c:137
msgid "readfile: called with no arguments"
msgstr "readfile: được gá»i mà không có đối số"
-#: extension/rwarray.c:120
+#: extension/rwarray.c:124
msgid "writea: called with too many arguments"
msgstr "writea: được gá»i vá»›i quá nhiá»u đối số"
-#: extension/rwarray.c:127
+#: extension/rwarray.c:131
#, c-format
msgid "do_writea: argument 0 is not a string\n"
msgstr "do_writea: đối số 0 không phải là một chuỗi\n"
-#: extension/rwarray.c:133
+#: extension/rwarray.c:137
#, c-format
msgid "do_writea: argument 1 is not an array\n"
msgstr "do_writea: đối số 1 không phải là một mảng\n"
-#: extension/rwarray.c:180
+#: extension/rwarray.c:184
#, c-format
msgid "write_array: could not flatten array\n"
msgstr "write_array: không thể làm phẳng mảng\n"
-#: extension/rwarray.c:194
+#: extension/rwarray.c:198
#, c-format
msgid "write_array: could not release flattened array\n"
msgstr "write_array: không thể giải phóng mảng được làm phẳng\n"
-#: extension/rwarray.c:276
+#: extension/rwarray.c:280
msgid "reada: called with too many arguments"
msgstr "reada: được gá»i vá»›i quá nhiá»u đối số"
-#: extension/rwarray.c:283
+#: extension/rwarray.c:287
#, c-format
msgid "do_reada: argument 0 is not a string\n"
msgstr "do_reada: đối số 0 không phải là một chuỗi\n"
-#: extension/rwarray.c:289
+#: extension/rwarray.c:293
#, c-format
msgid "do_reada: argument 1 is not an array\n"
msgstr "do_reada: đối số 1 không phải là một mảng\n"
-#: extension/rwarray.c:333
+#: extension/rwarray.c:337
#, c-format
msgid "do_reada: clear_array failed\n"
msgstr "do_reada: clear_array gặp lỗi\n"
-#: extension/rwarray.c:370
+#: extension/rwarray.c:374
#, c-format
msgid "read_array: set_array_element failed\n"
msgstr "read_array: set_array_element gặp lỗi\n"
-#: extension/time.c:81
+#: extension/time.c:113
msgid "gettimeofday: ignoring arguments"
msgstr "gettimeofday: đang lỠđi các đối số"
-#: extension/time.c:112
+#: extension/time.c:144
msgid "gettimeofday: not supported on this platform"
msgstr "gettimeofday: không được há»— trợ trên ná»n tảng này"
-#: extension/time.c:133
+#: extension/time.c:165
msgid "sleep: called with too many arguments"
msgstr "sleep: được gá»i vá»›i quá nhiá»u đối số"
-#: extension/time.c:136
+#: extension/time.c:168
msgid "sleep: missing required numeric argument"
msgstr "sleep: thiếu đối số dạng số cần thiết"
-#: extension/time.c:142
+#: extension/time.c:174
msgid "sleep: argument is negative"
msgstr "sleep: đối số âm"
-#: extension/time.c:176
+#: extension/time.c:208
msgid "sleep: not supported on this platform"
msgstr "sleep: không được há»— trợ trên ná»n tảng này"
-#: field.c:339
+#: field.c:345
msgid "NF set to negative value"
msgstr "“NF†được đặt thành giá trị âm"
-#: field.c:964 field.c:971 field.c:975
+#: field.c:971 field.c:978 field.c:982
msgid "split: fourth argument is a gawk extension"
msgstr "split (chia tách): đối số thứ tư là phần mở rộng gawk"
-#: field.c:968
+#: field.c:975
msgid "split: fourth argument is not an array"
msgstr "split (chia tách): đối số thứ tư không phải là mảng"
-#: field.c:982
+#: field.c:989
msgid "split: second argument is not an array"
msgstr "split: (chia tách) đối số thứ hai không phải là mảng"
-#: field.c:986
+#: field.c:993
msgid "split: cannot use the same array for second and fourth args"
msgstr ""
"split (chia tách): không thể sử dụng cùng một mảng có cả đối số thứ hai và "
"thứ tư"
-#: field.c:991
+#: field.c:998
msgid "split: cannot use a subarray of second arg for fourth arg"
msgstr ""
"split (phân tách): không thể sử dụng mảng con của tham số thứ hai cho tham "
"số thứ tư"
-#: field.c:994
+#: field.c:1001
msgid "split: cannot use a subarray of fourth arg for second arg"
msgstr ""
"split (phân tách): không thể sử dụng mảng con của tham số thứ tư cho tham số "
"thứ hai"
-#: field.c:1023
+#: field.c:1032
msgid "split: null string for third arg is a gawk extension"
msgstr ""
"split: (chia tách) chuỗi vô giá trị cho đối số thứ ba là phần mở rộng gawk"
-#: field.c:1063
+#: field.c:1072
msgid "patsplit: fourth argument is not an array"
msgstr "patsplit: đối số thứ tư không phải là mảng"
-#: field.c:1068
+#: field.c:1077
msgid "patsplit: second argument is not an array"
msgstr "patsplit: đối số thứ hai không phải là mảng"
-#: field.c:1074
+#: field.c:1083
msgid "patsplit: third argument must be non-null"
msgstr "patsplit: đối số thứ ba không phải không rỗng"
-#: field.c:1078
+#: field.c:1087
msgid "patsplit: cannot use the same array for second and fourth args"
msgstr ""
"patsplit (chương trình chia tách): không thể sử dụng cùng một mảng cho cả "
"hai đối số thứ hai và thứ tư"
-#: field.c:1083
+#: field.c:1092
msgid "patsplit: cannot use a subarray of second arg for fourth arg"
msgstr ""
"patsplit (chương trình phân tách): không thể sử dụng mảng con của tham số "
"thứ hai cho tham số thứ tư"
-#: field.c:1086
+#: field.c:1095
msgid "patsplit: cannot use a subarray of fourth arg for second arg"
msgstr ""
"patsplit (chương trình phân tách): không thể sử dụng mảng con của tham số "
"thứ tư cho tham số thứ hai"
-#: field.c:1124
+#: field.c:1133
msgid "`FIELDWIDTHS' is a gawk extension"
msgstr "“FIELDWIDTHS†(Ä‘á»™ rá»™ng trÆ°á»ng) là phần mở rá»™ng gawk"
-#: field.c:1188
+#: field.c:1197
#, c-format
msgid "invalid FIELDWIDTHS value, near `%s'"
msgstr "giá trị FIELDWIDTHS (Ä‘á»™ rá»™ng trÆ°á»ng) không hợp lệ, gần “%sâ€"
-#: field.c:1261
+#: field.c:1270
msgid "null string for `FS' is a gawk extension"
msgstr "chuỗi vô giá trị cho “FS†là phần mở rộng gawk"
-#: field.c:1265
+#: field.c:1274
msgid "old awk does not support regexps as value of `FS'"
msgstr "awk cÅ© không há»— trợ biểu thức chính quy làm giá trị của “FSâ€"
-#: field.c:1384
+#: field.c:1393
msgid "`FPAT' is a gawk extension"
msgstr "“FPAT†là phần mở rộng của gawk"
@@ -2515,386 +2540,386 @@ msgstr "node_to_awk_value: nút nhận được là null"
msgid "node_to_awk_value: received null val"
msgstr "node_to_awk_value: biến nhận được là null"
-#: gawkapi.c:808
+#: gawkapi.c:807
msgid "remove_element: received null array"
msgstr "remove_element: mảng nhận được là null"
-#: gawkapi.c:811
+#: gawkapi.c:810
msgid "remove_element: received null subscript"
msgstr "remove_element: nhận được là null"
-#: gawkapi.c:943
+#: gawkapi.c:947
#, c-format
msgid "api_flatten_array: could not convert index %d\n"
msgstr "api_flatten_array: không thể chuyển đổi chỉ số %d\n"
-#: gawkapi.c:948
+#: gawkapi.c:952
#, c-format
msgid "api_flatten_array: could not convert value %d\n"
msgstr "api_flatten_array: không thể chuyển đổi giá trị %d\n"
-#: getopt.c:603 getopt.c:632
+#: getopt.c:604 getopt.c:633
#, c-format
msgid "%s: option '%s' is ambiguous; possibilities:"
msgstr "%s: tùy chá»n “%s†chÆ°a rõ ràng; khả năng là:"
-#: getopt.c:678 getopt.c:682
+#: getopt.c:679 getopt.c:683
#, c-format
msgid "%s: option '--%s' doesn't allow an argument\n"
msgstr "%s: tùy chá»n “--%s†không cho phép đối số\n"
-#: getopt.c:691 getopt.c:696
+#: getopt.c:692 getopt.c:697
#, c-format
msgid "%s: option '%c%s' doesn't allow an argument\n"
msgstr "%s: tùy chá»n “%c%s†không cho phép đối số\n"
-#: getopt.c:739 getopt.c:758
+#: getopt.c:740 getopt.c:759
#, c-format
msgid "%s: option '--%s' requires an argument\n"
msgstr "%s: tùy chá»n “--%s†yêu cầu má»™t đối số\n"
-#: getopt.c:796 getopt.c:799
+#: getopt.c:797 getopt.c:800
#, c-format
msgid "%s: unrecognized option '--%s'\n"
msgstr "%s: không nhận ra tùy chá»n “--%sâ€\n"
-#: getopt.c:807 getopt.c:810
+#: getopt.c:808 getopt.c:811
#, c-format
msgid "%s: unrecognized option '%c%s'\n"
msgstr "%s: không nhận ra tùy chá»n “%c%sâ€\n"
-#: getopt.c:859 getopt.c:862
+#: getopt.c:860 getopt.c:863
#, c-format
msgid "%s: invalid option -- '%c'\n"
msgstr "%s: tùy chá»n không hợp lệ -- “%câ€\n"
-#: getopt.c:915 getopt.c:932 getopt.c:1142 getopt.c:1160
+#: getopt.c:916 getopt.c:933 getopt.c:1143 getopt.c:1161
#, c-format
msgid "%s: option requires an argument -- '%c'\n"
msgstr "%s: tùy chá»n yêu cầu má»™t đối số -- “%câ€\n"
-#: getopt.c:988 getopt.c:1004
+#: getopt.c:989 getopt.c:1005
#, c-format
msgid "%s: option '-W %s' is ambiguous\n"
msgstr "%s: tùy chá»n “-W %s†vẫn mÆ¡ hồ\n"
-#: getopt.c:1028 getopt.c:1046
+#: getopt.c:1029 getopt.c:1047
#, c-format
msgid "%s: option '-W %s' doesn't allow an argument\n"
msgstr "%s: tùy chá»n “-W %s†không cho phép đối số\n"
-#: getopt.c:1067 getopt.c:1085
+#: getopt.c:1068 getopt.c:1086
#, c-format
msgid "%s: option '-W %s' requires an argument\n"
msgstr "%s: tùy chá»n “-W %s†yêu cầu má»™t đối số\n"
-#: io.c:347
+#: io.c:392
#, c-format
msgid "command line argument `%s' is a directory: skipped"
msgstr "tham số dòng lệnh “%s†là một thư mục: đã bị bỠqua"
-#: io.c:350 io.c:463
+#: io.c:395 io.c:513
#, c-format
msgid "cannot open file `%s' for reading (%s)"
msgstr "không mở được tập tin “%s†để Ä‘á»c (%s)"
-#: io.c:590
+#: io.c:640
#, c-format
msgid "close of fd %d (`%s') failed (%s)"
msgstr "lá»—i đóng fd %d (“%sâ€) (%s)"
-#: io.c:666
+#: io.c:716
msgid "redirection not allowed in sandbox mode"
msgstr "chuyển hướng không cho phép ở chế độ khuôn đúc"
-#: io.c:700
+#: io.c:750
#, c-format
msgid "expression in `%s' redirection only has numeric value"
msgstr "biểu thức trong Ä‘iá»u chuyển hÆ°á»›ng “%s†chỉ có giá trị thuá»™c số"
-#: io.c:706
+#: io.c:756
#, c-format
msgid "expression for `%s' redirection has null string value"
msgstr "biểu thức cho Ä‘iá»u chuyển hÆ°á»›ng “%s†có giá trị chuá»—i vô giá trị"
-#: io.c:711
+#: io.c:761
#, c-format
msgid "filename `%s' for `%s' redirection may be result of logical expression"
msgstr ""
"tên tập tin “%s†cho Ä‘iá»u chuyển hÆ°á»›ng “%s†có lẽ là kết quả của biểu thức "
"luận lý"
-#: io.c:754
+#: io.c:809
#, c-format
msgid "unnecessary mixing of `>' and `>>' for file `%.*s'"
msgstr "không cần hợp “>†và “>>†cho tập tin “%.*sâ€"
-#: io.c:808
+#: io.c:863
#, c-format
msgid "can't open pipe `%s' for output (%s)"
msgstr "không thể mở ống dẫn “%s†để xuất (%s)"
-#: io.c:818
+#: io.c:873
#, c-format
msgid "can't open pipe `%s' for input (%s)"
msgstr "không thể mở ống dẫn “%s†để nhập (%s)"
-#: io.c:849
+#: io.c:904
#, c-format
msgid "can't open two way pipe `%s' for input/output (%s)"
msgstr "không thể mở ống dẫn hai chiá»u “%s†để nhập/xuất (%s)"
-#: io.c:928
+#: io.c:986
#, c-format
msgid "can't redirect from `%s' (%s)"
msgstr "không thể chuyển hướng từ “%s†(%s)"
-#: io.c:931
+#: io.c:989
#, c-format
msgid "can't redirect to `%s' (%s)"
msgstr "không thể chuyển hướng đến “%s†(%s)"
-#: io.c:982
+#: io.c:1040
msgid ""
"reached system limit for open files: starting to multiplex file descriptors"
msgstr ""
"đã tá»›i giá»›i hạn hệ thống vá» tập tin được mở nên bắt đầu phối hợp nhiá»u dòng "
"Ä‘iá»u mô tả tập tin"
-#: io.c:998
+#: io.c:1056
#, c-format
msgid "close of `%s' failed (%s)."
msgstr "lỗi đóng “%s†(%s)"
-#: io.c:1006
+#: io.c:1064
msgid "too many pipes or input files open"
msgstr "quá nhiá»u ống dẫn hay tập tin nhập được mở"
-#: io.c:1028
+#: io.c:1086
msgid "close: second argument must be `to' or `from'"
msgstr "close: (đóng) đối số thứ hai phải là “to†(đến) hay “from†(từ)"
-#: io.c:1045
+#: io.c:1103
#, c-format
msgid "close: `%.*s' is not an open file, pipe or co-process"
msgstr ""
"close: (đóng) “%.*s†không phải là tập tin, ống dẫn hay đồng tiến trình đã "
"được mở"
-#: io.c:1050
+#: io.c:1108
msgid "close of redirection that was never opened"
msgstr "đóng một chuyển hướng mà nó chưa từng được mở"
-#: io.c:1147
+#: io.c:1205
#, c-format
msgid "close: redirection `%s' not opened with `|&', second argument ignored"
msgstr ""
"close: chuyển hướng “%s†không được mở bởi “|&†nên đối số thứ hai bị bỠqua"
-#: io.c:1164
+#: io.c:1222
#, c-format
msgid "failure status (%d) on pipe close of `%s' (%s)"
msgstr "trạng thái thất bại (%d) khi đóng ống dẫn “%s†(%s)"
-#: io.c:1167
+#: io.c:1225
#, c-format
msgid "failure status (%d) on file close of `%s' (%s)"
msgstr "trạng thái thất bại (%d) khi đóng tập tin “%s†(%s)"
-#: io.c:1187
+#: io.c:1245
#, c-format
msgid "no explicit close of socket `%s' provided"
msgstr "không cung cấp lệnh đóng ổ cắm “%s†rõ ràng"
-#: io.c:1190
+#: io.c:1248
#, c-format
msgid "no explicit close of co-process `%s' provided"
msgstr "không cung cấp lệnh đóng đồng tiến trình “%s†rõ ràng"
-#: io.c:1193
+#: io.c:1251
#, c-format
msgid "no explicit close of pipe `%s' provided"
msgstr "không cung cấp lệnh đóng Ä‘Æ°á»ng ống dẫn lệnh “%s†rõ ràng"
-#: io.c:1196
+#: io.c:1254
#, c-format
msgid "no explicit close of file `%s' provided"
msgstr "không cung cấp lệnh đóng tập tin “%s†rõ ràng"
-#: io.c:1224 io.c:1279 main.c:842 main.c:879
+#: io.c:1284 io.c:1342 main.c:864 main.c:906
#, c-format
msgid "error writing standard output (%s)"
msgstr "gặp lỗi khi ghi đầu ra tiêu chuẩn (%s)"
-#: io.c:1228 io.c:1284
+#: io.c:1289 io.c:1348 main.c:866
#, c-format
msgid "error writing standard error (%s)"
msgstr "gặp lỗi khi ghi thiết bị lỗi chuẩn (%s)"
-#: io.c:1236
+#: io.c:1297
#, c-format
msgid "pipe flush of `%s' failed (%s)."
msgstr "lỗi xoá sạch ống dẫn “%s†(%s)"
-#: io.c:1239
+#: io.c:1300
#, c-format
msgid "co-process flush of pipe to `%s' failed (%s)."
msgstr "lỗi xoá sạch ống dẫn đồng tiến trình đến “%s†(%s)"
-#: io.c:1242
+#: io.c:1303
#, c-format
msgid "file flush of `%s' failed (%s)."
msgstr "lỗi xoá sạch tập tin “%s†(%s)"
-#: io.c:1356
+#: io.c:1420
#, c-format
msgid "local port %s invalid in `/inet'"
msgstr "cổng cục bá»™ %s không hợp lệ trong “/inetâ€"
-#: io.c:1374
+#: io.c:1438
#, c-format
msgid "remote host and port information (%s, %s) invalid"
msgstr "thông tin vỠmáy/cổng ở xa (%s, %s) không phải hợp lệ"
-#: io.c:1526
+#: io.c:1590
#, c-format
msgid "no (known) protocol supplied in special filename `%s'"
msgstr "trong tên tập tin đặc biệt “%s†không cung cấp giao thức (đã biết) nào"
-#: io.c:1540
+#: io.c:1604
#, c-format
msgid "special file name `%s' is incomplete"
msgstr "tên tập tin đặc biệt “%s†chưa xong"
-#: io.c:1557
+#: io.c:1621
msgid "must supply a remote hostname to `/inet'"
msgstr "phải cung cấp một tên máy chủ cho </inet>"
-#: io.c:1575
+#: io.c:1639
msgid "must supply a remote port to `/inet'"
msgstr "phải cung cấp một cổng máy chủ cho </inet>"
-#: io.c:1621
+#: io.c:1685
msgid "TCP/IP communications are not supported"
msgstr "truyá»n thông TCP/IP không được há»— trợ"
-#: io.c:1796
+#: io.c:1867
#, c-format
msgid "could not open `%s', mode `%s'"
msgstr "không mở được “%sâ€, chế Ä‘á»™ “%sâ€"
-#: io.c:1846
+#: io.c:1917
#, c-format
msgid "close of master pty failed (%s)"
-msgstr "lỗi đóng pty (tài sản?) chính (%s)"
+msgstr "gặp lỗi khi đóng thiết bị cuối giả (%s)"
-#: io.c:1848 io.c:2024 io.c:2194
+#: io.c:1919 io.c:2105 io.c:2305
#, c-format
msgid "close of stdout in child failed (%s)"
-msgstr "lỗi đóng thiết bị xuất chuẩn trong tiến trình con (%s)"
+msgstr "lỗi đóng đầu ra tiêu chuẩn trong tiến trình con (%s)"
-#: io.c:1851
+#: io.c:1922
#, c-format
msgid "moving slave pty to stdout in child failed (dup: %s)"
msgstr ""
-"gặp lỗi khi di chuyển pty phụ thuộc đến thiết bị xuất chuẩn trong con "
-"(trùng: %s)"
+"gặp lỗi khi di chuyển pty (thiết bị cuối giả) phụ thuộc đến thiết bị đầu ra "
+"tiêu chuẩn trong con (trùng: %s)"
-#: io.c:1853 io.c:2029
+#: io.c:1924 io.c:2110
#, c-format
msgid "close of stdin in child failed (%s)"
msgstr "lỗi đóng thiết bị nhập chuẩn trong tiến trình con (%s)"
-#: io.c:1856
+#: io.c:1927
#, c-format
msgid "moving slave pty to stdin in child failed (dup: %s)"
msgstr ""
-"lá»—i di chuyển pty (tài sản?) phụ tá»›i thiết bị nhập chuẩn trong Ä‘iá»u con "
-"(nhân đôi: %s)"
+"lá»—i di chuyển pty (thiết bị cuối giả) phụ tá»›i thiết bị nhập chuẩn trong Ä‘iá»u "
+"con (nhân đôi: %s)"
-#: io.c:1858 io.c:1879
+#: io.c:1929 io.c:1951
#, c-format
msgid "close of slave pty failed (%s)"
-msgstr "đóng pty phụ thuộc gặp lỗi (%s)"
+msgstr "đóng pty (thiết bị cuối giả) phụ thuộc gặp lỗi (%s)"
-#: io.c:1965 io.c:2027 io.c:2171 io.c:2197
+#: io.c:2040 io.c:2108 io.c:2276 io.c:2308
#, c-format
msgid "moving pipe to stdout in child failed (dup: %s)"
msgstr ""
-"lỗi di chuyển ống dẫn đến thiết bị xuất chuẩn trong tiến trình con (dup "
-"(nhân đôi): %s)"
+"lỗi di chuyển ống dẫn đến thiết bị xuất chuẩn trong tiến trình con (trùng: "
+"%s)"
-#: io.c:1972 io.c:2032
+#: io.c:2047 io.c:2113
#, c-format
msgid "moving pipe to stdin in child failed (dup: %s)"
msgstr ""
-"lỗi di chuyển ống dẫn đến thiết bị nhập chuẩn trong tiến trình con (dup "
-"(nhân đôi): %s)"
+"lỗi di chuyển ống dẫn đến thiết bị nhập chuẩn trong tiến trình con (trùng: "
+"%s)"
-#: io.c:1992 io.c:2187
+#: io.c:2073 io.c:2298
msgid "restoring stdout in parent process failed\n"
msgstr "phục hồi đầu ra tiêu chuẩn trong tiến trình mẹ gặp lỗi\n"
-#: io.c:2000
+#: io.c:2081
msgid "restoring stdin in parent process failed\n"
msgstr "phục hồi đầu vào tiêu chuẩn trong tiến trình mẹ gặp lỗi\n"
-#: io.c:2035 io.c:2199 io.c:2213
+#: io.c:2116 io.c:2310 io.c:2324
#, c-format
msgid "close of pipe failed (%s)"
msgstr "đóng ống dẫn gặp lỗi (%s)"
-#: io.c:2089
+#: io.c:2174
msgid "`|&' not supported"
msgstr "“|&†không được hỗ trợ"
-#: io.c:2156
+#: io.c:2261
#, c-format
msgid "cannot open pipe `%s' (%s)"
msgstr "không thể mở ống dẫn “%s†(%s)"
-#: io.c:2207
+#: io.c:2318
#, c-format
msgid "cannot create child process for `%s' (fork: %s)"
msgstr "không thể tạo tiến trình con cho “%s†(fork: %s)"
-#: io.c:2667
+#: io.c:2790
msgid "register_input_parser: received NULL pointer"
msgstr "register_input_parser: nhận được con trỠNULL"
-#: io.c:2695
+#: io.c:2818
#, c-format
msgid "input parser `%s' conflicts with previously installed input parser `%s'"
msgstr ""
"bộ phân tích đầu vào “%s†xung đột với bộ phân tích đầu vào được cài đặt "
"trÆ°á»›c đó “%sâ€"
-#: io.c:2702
+#: io.c:2825
#, c-format
msgid "input parser `%s' failed to open `%s'"
msgstr "bá»™ phân tích đầu vào “%s†gặp lá»—i khi mở “%sâ€"
-#: io.c:2722
+#: io.c:2845
msgid "register_output_wrapper: received NULL pointer"
msgstr "register_output_wrapper: nhận được con trỠNULL"
-#: io.c:2750
+#: io.c:2873
#, c-format
msgid ""
"output wrapper `%s' conflicts with previously installed output wrapper `%s'"
msgstr ""
"bá»™ bao kết xuất “%s†xung Ä‘á»™t vá»›i bá»™ bao kết xuất được cài đặt trÆ°á»›c đó “%sâ€"
-#: io.c:2757
+#: io.c:2880
#, c-format
msgid "output wrapper `%s' failed to open `%s'"
msgstr "bá»™ bao kết xuất “%s†gặp lá»—i khi mở “%sâ€"
-#: io.c:2778
+#: io.c:2901
msgid "register_output_processor: received NULL pointer"
msgstr "register_output_processor: nhận được con trỠNULL"
-#: io.c:2807
+#: io.c:2930
#, c-format
msgid ""
"two-way processor `%s' conflicts with previously installed two-way processor "
@@ -2903,221 +2928,221 @@ msgstr ""
"bộ xử lý hai hướng “%s†xung đột với bộ xử lý hai hướng đã được cài đặt "
"trÆ°á»›c đó “%sâ€"
-#: io.c:2816
+#: io.c:2939
#, c-format
msgid "two way processor `%s' failed to open `%s'"
msgstr "bá»™ xá»­ lý hai hÆ°á»›ng “%s†gặp lá»—i khi mở “%sâ€"
-#: io.c:2923
+#: io.c:3064
#, c-format
msgid "data file `%s' is empty"
msgstr "tập tin dữ liệu “%s†là rỗng"
-#: io.c:2965 io.c:2973
+#: io.c:3106 io.c:3114
msgid "could not allocate more input memory"
msgstr "không thể cấp phát bộ nhớ nhập thêm nữa"
-#: io.c:3539
+#: io.c:3682
msgid "multicharacter value of `RS' is a gawk extension"
msgstr "giá trị đa ký tự của “RS†là phần mở rộng gawk"
-#: io.c:3628
+#: io.c:3771
msgid "IPv6 communication is not supported"
msgstr "Truyá»n thông trên IPv6 không được há»— trợ"
-#: main.c:388
+#: main.c:405
msgid "empty argument to `-e/--source' ignored"
msgstr "đối số rá»—ng cho tuỳ chá»n “-e/--source†bị bá» qua"
-#: main.c:478
+#: main.c:495
#, c-format
msgid "%s: option `-W %s' unrecognized, ignored\n"
msgstr "%s: tùy chá»n “-W %s†không được nhận diện nên bị bá» qua\n"
-#: main.c:524
+#: main.c:541
#, c-format
msgid "%s: option requires an argument -- %c\n"
msgstr "%s: tùy chá»n cần đến đối số “-- %câ€\n"
-#: main.c:545
+#: main.c:562
msgid "environment variable `POSIXLY_CORRECT' set: turning on `--posix'"
msgstr ""
"biến môi trÆ°á»ng “POSIXLY_CORRECT†(đúng kiểu POSIX) đã được đặt; Ä‘ang bật "
"tùy chá»n “--posixâ€"
-#: main.c:551
+#: main.c:568
msgid "`--posix' overrides `--traditional'"
msgstr "tùy chá»n “--posix†có quyá»n cao hÆ¡n “--traditional†(truyá»n thống)"
-#: main.c:562
+#: main.c:579
msgid "`--posix'/`--traditional' overrides `--non-decimal-data'"
msgstr ""
-"“--posixâ€/“--traditional†(truyá»n thống) có quyá»n cao hÆ¡n “--non-decimal-"
+"“--posixâ€/“--traditional†(cổ Ä‘iển) có quyá»n cao hÆ¡n “--non-decimal-"
"data†(dữ liệu khác thập phân)"
-#: main.c:566
+#: main.c:583
#, c-format
msgid "running %s setuid root may be a security problem"
msgstr "việc chạy %s với tư cách “setuid root†có thể rủi rỠbảo mật"
-#: main.c:571
+#: main.c:588
msgid "`--posix' overrides `--characters-as-bytes'"
msgstr "“--posix†đè lên “--characters-as-bytesâ€"
-#: main.c:630
+#: main.c:647
#, c-format
msgid "can't set binary mode on stdin (%s)"
-msgstr "không thể đặt chế độ nhị phân trên thiết bị nhập chuẩn (%s)"
+msgstr "không thể đặt chế độ nhị phân trên đầu vào tiêu chuẩn (%s)"
-#: main.c:633
+#: main.c:650
#, c-format
msgid "can't set binary mode on stdout (%s)"
-msgstr "không thể đặt chế độ nhị phân trên thiết bị xuất chuẩn (%s)"
+msgstr "không thể đặt chế độ nhị phân trên đầu ra tiêu chuẩn (%s)"
-#: main.c:635
+#: main.c:652
#, c-format
msgid "can't set binary mode on stderr (%s)"
-msgstr "không thể đặt chế độ nhị phân trên thiết bị lỗi chuẩn (%s)"
+msgstr "không thể đặt chế độ nhị phân trên đầu ra lỗi tiêu chuẩn (%s)"
-#: main.c:693
+#: main.c:710
msgid "no program text at all!"
-msgstr "không có đoạn chữ chương trình nào cả !"
+msgstr "không có đoạn chữ chương trình nào cả!"
-#: main.c:779
+#: main.c:799
#, c-format
msgid "Usage: %s [POSIX or GNU style options] -f progfile [--] file ...\n"
msgstr ""
"Cách dùng: %s [tùy chá»n kiểu POSIX hay GNU] -f tập_tin_chÆ°Æ¡ng_trình [--] "
"tập_tin ...\n"
-#: main.c:781
+#: main.c:801
#, c-format
msgid "Usage: %s [POSIX or GNU style options] [--] %cprogram%c file ...\n"
msgstr ""
"Cách dùng: %s [tùy chá»n kiểu POSIX hay GNU] [--] %cchÆ°Æ¡ng_trình%c "
"tập_tin ...\n"
-#: main.c:786
+#: main.c:806
msgid "POSIX options:\t\tGNU long options: (standard)\n"
-msgstr "Tùy chá»n POSIX:\t\tTùy chá»n dài GNU: (tiêu chuẩn)\n"
+msgstr "Tùy chá»n POSIX:\t\t\tTùy chá»n dài GNU: (tiêu chuẩn)\n"
-#: main.c:787
+#: main.c:807
msgid "\t-f progfile\t\t--file=progfile\n"
-msgstr "\t-f tập_tin_chương_trình\t\t--file=tập_tin_chương_trình\n"
+msgstr "\t-f tập_tin_chương_trình\t--file=tập_tin_chương_trình\n"
-#: main.c:788
+#: main.c:808
msgid "\t-F fs\t\t\t--field-separator=fs\n"
-msgstr "\t-F fs\t\t\t--field-separator=ký hiệu phân cách trÆ°á»ng\n"
+msgstr "\t-F fs\t\t\t--field-separator=ký_hiệu_phân_cách_trÆ°á»ng\n"
-#: main.c:789
+#: main.c:809
msgid "\t-v var=val\t\t--assign=var=val\n"
msgstr ""
-"\t-v var=giá trị\t\t--assign=biến=giá_trị\n"
+"\t-v var=giá_trị\t\t--assign=biến=giá_trị\n"
"(assign: gán)\n"
-#: main.c:790
+#: main.c:810
msgid "Short options:\t\tGNU long options: (extensions)\n"
-msgstr "Tuỳ chá»n ngắn:\t\tTuỳ chá»n GNU dạng dài: (mở rá»™ng)\n"
+msgstr "Tuỳ chá»n ngắn:\t\t\tTuỳ chá»n GNU dạng dài: (mở rá»™ng)\n"
-#: main.c:791
+#: main.c:811
msgid "\t-b\t\t\t--characters-as-bytes\n"
msgstr "\t-b\t\t\t--characters-as-bytes\n"
-#: main.c:792
+#: main.c:812
msgid "\t-c\t\t\t--traditional\n"
msgstr "\t-c\t\t\t--traditional\n"
-#: main.c:793
+#: main.c:813
msgid "\t-C\t\t\t--copyright\n"
msgstr "\t-C\t\t\t--copyright\n"
-#: main.c:794
+#: main.c:814
msgid "\t-d[file]\t\t--dump-variables[=file]\n"
-msgstr "\t-d[tệp_tin]\t\t--dump-variables[=tệp_tin]\n"
+msgstr "\t-d[tập_tin]\t\t--dump-variables[=tập_tin]\n"
-#: main.c:795
+#: main.c:815
msgid "\t-D[file]\t\t--debug[=file]\n"
msgstr "\t-D[tập_tin]\t\t--debug[=tập_tin]\n"
-#: main.c:796
+#: main.c:816
msgid "\t-e 'program-text'\t--source='program-text'\n"
-msgstr "\t-e “program-textâ€\t--source=â€program-textâ€\n"
+msgstr "\t-e “program-textâ€\t--source=“program-textâ€\n"
-#: main.c:797
+#: main.c:817
msgid "\t-E file\t\t\t--exec=file\n"
-msgstr "\t-E file\t\t\t--exec=tệp_tin\n"
+msgstr "\t-E file\t\t\t--exec=tập_tin\n"
-#: main.c:798
+#: main.c:818
msgid "\t-g\t\t\t--gen-pot\n"
msgstr "\t-g\t\t\t--gen-pot\n"
-#: main.c:799
+#: main.c:819
msgid "\t-h\t\t\t--help\n"
msgstr "\t-h\t\t\t--help\n"
-#: main.c:800
+#: main.c:820
msgid "\t-i includefile\t\t--include=includefile\n"
msgstr "\t-i includefile\t\t--include=tập-tin-bao-gồm\n"
-#: main.c:801
+#: main.c:821
msgid "\t-l library\t\t--load=library\n"
msgstr "\t-l library\t\t--load=thư-viện\n"
-#: main.c:802
+#: main.c:822
msgid "\t-L [fatal]\t\t--lint[=fatal]\n"
msgstr "\t-L [fatal]\t\t--lint[=fatal]\n"
-#: main.c:803
+#: main.c:823
msgid "\t-n\t\t\t--non-decimal-data\n"
msgstr "\t-n\t\t\t--non-decimal-data\n"
-#: main.c:804
+#: main.c:824
msgid "\t-M\t\t\t--bignum\n"
msgstr "\t-M\t\t\t--bignum\n"
-#: main.c:805
+#: main.c:825
msgid "\t-N\t\t\t--use-lc-numeric\n"
msgstr "\t-N\t\t\t--use-lc-numeric\n"
-#: main.c:806
+#: main.c:826
msgid "\t-o[file]\t\t--pretty-print[=file]\n"
msgstr "\t-o[tập_tin]\t\t--pretty-print[=tập_tin]\n"
-#: main.c:807
+#: main.c:827
msgid "\t-O\t\t\t--optimize\n"
-msgstr "\t-O\t\t\t--optimize\ttối ưu hoá\n"
+msgstr "\t-O\t\t\t--optimize (tạm dịch: tối_ưu_hoá)\n"
-#: main.c:808
+#: main.c:828
msgid "\t-p[file]\t\t--profile[=file]\n"
-msgstr "\t-p[file]\t\t--profile[=file]\n"
+msgstr "\t-p[tập_tin]\t\t--profile[=tập_tin]\n"
-#: main.c:809
+#: main.c:829
msgid "\t-P\t\t\t--posix\n"
msgstr "\t-P\t\t\t--posix\n"
-#: main.c:810
+#: main.c:830
msgid "\t-r\t\t\t--re-interval\n"
msgstr "\t-r\t\t\t--re-interval\n"
-#: main.c:811
+#: main.c:831
msgid "\t-S\t\t\t--sandbox\n"
msgstr "\t-S\t\t\t--sandbox\n"
-#: main.c:812
+#: main.c:832
msgid "\t-t\t\t\t--lint-old\n"
msgstr "\t-t\t\t\t--lint-old\n"
-#: main.c:813
+#: main.c:833
msgid "\t-V\t\t\t--version\n"
msgstr "\t-V\t\t\t--version\n"
-#: main.c:815
+#: main.c:835
msgid "\t-W nostalgia\t\t--nostalgia\n"
msgstr ""
"\t-W nostalgia\t\t--nostalgia\n"
"(nỗi luyến tiếc quá khứ)\n"
-#: main.c:818
+#: main.c:838
msgid "\t-Y\t\t--parsedebug\n"
msgstr "\t-Y\t\t--parsedebug\n"
@@ -3126,7 +3151,7 @@ msgstr "\t-Y\t\t--parsedebug\n"
#. for this application. Please add _another line_ with the
#. address for translation bugs.
#. no-wrap
-#: main.c:827
+#: main.c:847
msgid ""
"\n"
"To report bugs, see node `Bugs' in `gawk.info', which is\n"
@@ -3135,32 +3160,33 @@ msgid ""
msgstr ""
"\n"
"Äể thông báo lá»—i, xem nút “Bugs†(lá»—i) trong tập tin\n"
-"thông tin “gawk.info†mà nằm trong phần\n"
-"“Reporting Problems and Bugs†(thông báo vấn đỠvà lỗi)\n"
+"thông tin “gawk.infoâ€, cái mà nằm trong phần\n"
+"“Reporting Problems and Bugs†(thông báo trục trặc và lỗi)\n"
"trong bản in.\n"
+"Thông báo lỗi dịch cho: <http://translationproject.org/team/vi.html>.\n"
"\n"
-#: main.c:831
+#: main.c:851
msgid ""
"gawk is a pattern scanning and processing language.\n"
"By default it reads standard input and writes standard output.\n"
"\n"
msgstr ""
"gawk là ngôn ngữ quét và xử lý mẫu.\n"
-"Mặc định là nó Ä‘á»c thiết bị nhập chuẩn và ghi ra thiết bị xuất chuẩn.\n"
+"Mặc định, nó Ä‘á»c từ đầu vào tiêu chuẩn và ghi ra đầu ra tiêu chuẩn.\n"
"\n"
-#: main.c:835
+#: main.c:855
msgid ""
"Examples:\n"
"\tgawk '{ sum += $1 }; END { print sum }' file\n"
"\tgawk -F: '{ print $1 }' /etc/passwd\n"
msgstr ""
-"Ví dụ :\n"
-"\tgawk “{ sum += $1 }; END { print sum }†file\n"
-"\tgawk -F: “{ print $1 }†/etc/passwd\n"
+"Ví dụ:\n"
+"\tgawk \"{ sum += $1 }; END { print sum }\" file\n"
+"\tgawk -F: \"{ print $1 }\" /etc/passwd\n"
-#: main.c:855
+#: main.c:880
#, c-format
msgid ""
"Copyright (C) 1989, 1991-%d Free Software Foundation.\n"
@@ -3173,13 +3199,13 @@ msgid ""
msgstr ""
"Tác quyá»n © năm 1989, 1991-%d của Tổ chức Phần má»m Tá»± do.\n"
"\n"
-"ChÆ°Æ¡ng trình này là phần má»m tá»± do; bạn có thể phát hành lại nó và/hoặc sá»­a "
-"đổi nó vá»›i Ä‘iá»u kiện của Giấy Phép Công Cá»™ng GNU nhÆ° được xuất bản bởi Tổ "
-"Chức Phần Má»m Tá»± Do; hoặc phiên bản 3 của Giấy Phép này, hoặc (tùy chá»n) bất "
-"kỳ phiên bản sau nào.\n"
+"ChÆ°Æ¡ng trình này là phần má»m tá»± do; bạn có thể phát hành lại nó\n"
+"và/hoặc sá»­a đổi nó vá»›i các Ä‘iá»u Ä‘iá»u khoản của Giấy Phép Công Cá»™ng GNU\n"
+"được xuất bản bởi Tổ Chức Phần Má»m Tá»± Do; hoặc là phiên bản 3\n"
+"của Giấy Phép này, hoặc là (tùy chá»n) bất kỳ phiên bản má»›i hÆ¡n.\n"
"\n"
-#: main.c:863
+#: main.c:888
msgid ""
"This program is distributed in the hope that it will be useful,\n"
"but WITHOUT ANY WARRANTY; without even the implied warranty of\n"
@@ -3188,79 +3214,79 @@ msgid ""
"\n"
msgstr ""
"Chúng tôi phân phối chương trình này vì mong muốn nó hữu ích,\n"
-"nhÆ°ng mà KHÔNG BẢO ÄẢM GÃŒ CẢ, không ngay cả ngụ ý bảo đảm\n"
-"KHẢ NÄ‚NG BÃN hoặc KHẢ NÄ‚NG LÀM VIỆC DỨT KHOÃT.\n"
-"Hãy xem Bản Quyá»n Công Chung GNU (GPL) để tìm chi tiết.\n"
+"nhÆ°ng mà KHÔNG BẢO ÄẢM GÃŒ CẢ, không ngay cả khi nó ÄƯỢC BÃN\n"
+"hoặc PHÙ HỢP VỚI CÃC MỤC ÄÃCH ÄẶC THÙ.\n"
+"Hãy xem Giấy phép Công Chung GNU (GPL) để biết chi tiết.\n"
"\n"
-#: main.c:869
+#: main.c:894
msgid ""
"You should have received a copy of the GNU General Public License\n"
"along with this program. If not, see http://www.gnu.org/licenses/.\n"
msgstr ""
"Bạn nên nhận một bản sao của Giấy Phép Công Cộng GNU cùng với chương\n"
-"trình này. Nếu chÆ°a có, bạn lấy vá» từ “http://www.gnu.org/licenses/â€.\n"
+"trình này. Nếu chưa có, bạn xem tại <http://www.gnu.org/licenses/>.\n"
-#: main.c:904
+#: main.c:931
msgid "-Ft does not set FS to tab in POSIX awk"
msgstr "-Ft không đặt FS (hệ thống tập tin?) vào tab trong awk POSIX"
-#: main.c:1181
+#: main.c:1208
#, c-format
msgid "unknown value for field spec: %d\n"
-msgstr "không hiểu giá trị dành cho đặc tính trÆ°á»ng: %d\n"
+msgstr "không hiểu giá trị dành cho đặc tả trÆ°á»ng: %d\n"
-#: main.c:1279
+#: main.c:1306
#, c-format
msgid ""
"%s: `%s' argument to `-v' not in `var=value' form\n"
"\n"
msgstr ""
-"%s: đối số “%s†đối vá»›i “-v†không có dạng “biến=giá_trịâ€\n"
+"%s: đối số “%s†cho “-v†không có dạng “biến=giá_trịâ€\n"
"\n"
-#: main.c:1305
+#: main.c:1332
#, c-format
msgid "`%s' is not a legal variable name"
msgstr "“%s†không phải là tên biến hợp lệ"
-#: main.c:1308
+#: main.c:1335
#, c-format
msgid "`%s' is not a variable name, looking for file `%s=%s'"
msgstr "“%s†không phải là tên biến; Ä‘ang tìm tập tin “%s=%sâ€"
-#: main.c:1312
+#: main.c:1339
#, c-format
msgid "cannot use gawk builtin `%s' as variable name"
msgstr "không thể dùng builtin (dựng sẵn) của gawk “%s†như là tên biến"
-#: main.c:1317
+#: main.c:1344
#, c-format
msgid "cannot use function `%s' as variable name"
msgstr "không thể dùng hàm “%s†như là tên biến"
-#: main.c:1370
+#: main.c:1397
msgid "floating point exception"
-msgstr "ngoại lệ điểm phù động"
+msgstr "ngoại lệ số thực dấu chấm động"
-#: main.c:1377
+#: main.c:1404
msgid "fatal error: internal error"
msgstr "lá»—i nghiêm trá»ng: lá»—i ná»™i bá»™"
-#: main.c:1392
+#: main.c:1419
msgid "fatal error: internal error: segfault"
-msgstr "lá»—i nghiêm trá»ng: lá»—i ná»™i bá»™ : lá»—i chia ra từng Ä‘oạn"
+msgstr "lá»—i nghiêm trá»ng: lá»—i ná»™i bá»™: lá»—i phân Ä‘oạn"
-#: main.c:1404
+#: main.c:1431
msgid "fatal error: internal error: stack overflow"
-msgstr "lá»—i nghiêm trá»ng: lá»—i ná»™i bá»™ : tràn đống"
+msgstr "lá»—i nghiêm trá»ng: lá»—i ná»™i bá»™: tràn ngăn xếp"
-#: main.c:1463
+#: main.c:1490
#, c-format
msgid "no pre-opened fd %d"
msgstr "không có fd (bộ mô tả tập tin) %d đã mở trước"
-#: main.c:1470
+#: main.c:1497
#, c-format
msgid "could not pre-open /dev/null for fd %d"
msgstr "không thể mở trước “/dev/null†cho fd %d"
@@ -3315,19 +3341,19 @@ msgstr "%s: đối số #%d giá trị phần phân số %Rg sẽ bị cắt cá»
msgid "%s: argument #%d negative value %Zd will give strange results"
msgstr "%s: đối số #%d có giá trị âm %Zd sẽ đưa ra kết quả không như mong muốn"
-#: msg.c:61
+#: msg.c:68
#, c-format
msgid "cmd. line:"
msgstr "dòng lệnh:"
#: node.c:421
msgid "backslash at end of string"
-msgstr "gặp xuyệc ngoặc tại kết thúc của chuỗi"
+msgstr "gặp dấu gạch ngược tại kết thúc của chuỗi"
#: node.c:500
#, c-format
msgid "old awk does not support the `\\%c' escape sequence"
-msgstr "awk cÅ© không há»— trợ dãy thoát “\\%câ€"
+msgstr "awk cÅ© không há»— trợ thoát chuá»—i “\\%câ€"
#: node.c:551
msgid "POSIX does not allow `\\x' escapes"
@@ -3335,7 +3361,7 @@ msgstr "POSIX không cho phép thoát chuá»—i “\\xâ€"
#: node.c:557
msgid "no hex digits in `\\x' escape sequence"
-msgstr "không có số thập lúc nằm trong dây thoát “\\xâ€"
+msgstr "không có số thập lúc nằm trong thoát chuá»—i “\\xâ€"
#: node.c:579
#, c-format
@@ -3343,13 +3369,13 @@ msgid ""
"hex escape \\x%.*s of %d characters probably not interpreted the way you "
"expect"
msgstr ""
-"dây thoát thập lục \\x%.*s chứa %d ký tá»± mà rất có thể không phải được Ä‘á»c "
+"thoát chuá»—i thập lục \\x%.*s chứa %d ký tá»± mà rất có thể không phải được Ä‘á»c "
"bằng cách dự định"
#: node.c:594
#, c-format
msgid "escape sequence `\\%c' treated as plain `%c'"
-msgstr "dây thoát “\\%c†được xử lý như là “%c†chuẩn"
+msgstr "thoát chuỗi “\\%c†được xử lý như là “%c†chuẩn"
#: node.c:739
msgid ""
@@ -3371,16 +3397,16 @@ msgstr ""
"%s %s “%sâ€: không thể đặt “close-on-exec†(đóng má»™t khi thá»±c hiện): (fcntl "
"F_SETFD: %s)"
-#: profile.c:70
+#: profile.c:71
#, c-format
msgid "could not open `%s' for writing: %s"
msgstr "không thể mở “%s†để ghi: %s"
-#: profile.c:72
+#: profile.c:73
msgid "sending profile to standard error"
msgstr "đang gởi hồ sơ cho thiết bị lỗi chuẩn"
-#: profile.c:188
+#: profile.c:193
#, c-format
msgid ""
"\t# %s block(s)\n"
@@ -3389,7 +3415,7 @@ msgstr ""
"\t# %s khối\n"
"\n"
-#: profile.c:193
+#: profile.c:198
#, c-format
msgid ""
"\t# Rule(s)\n"
@@ -3398,16 +3424,16 @@ msgstr ""
"\t# Quy tắc\n"
"\n"
-#: profile.c:267
+#: profile.c:272
#, c-format
msgid "internal error: %s with null vname"
msgstr "lỗi nội bộ: %s với vname (tên biến?) vô giá trị"
-#: profile.c:530
+#: profile.c:537
msgid "internal error: builtin with null fname"
msgstr "lỗi nội bộ: phần dựng sẵn với fname là null"
-#: profile.c:942
+#: profile.c:949
#, c-format
msgid ""
"\t# Loaded extensions (-l and/or @load)\n"
@@ -3416,12 +3442,12 @@ msgstr ""
"\t# Các phần mở rộng được tải (-l và/hoặc @load)\n"
"\n"
-#: profile.c:965
+#: profile.c:972
#, c-format
msgid "\t# gawk profile, created %s\n"
msgstr "\t# hồ sơ gawk, được tạo %s\n"
-#: profile.c:1351
+#: profile.c:1475
#, c-format
msgid ""
"\n"
@@ -3430,21 +3456,16 @@ msgstr ""
"\n"
"\t# Danh sách các hàm theo thứ tự abc\n"
-#: profile.c:1389
+#: profile.c:1513
#, c-format
msgid "redir2str: unknown redirection type %d"
msgstr "redir2str: không hiểu kiểu chuyển hướng %d"
-#: re.c:583
-#, c-format
-msgid "range of the form `[%c-%c]' is locale dependent"
-msgstr "vùng của dạng thức “[%c-%c]†phụ thuộc vào vị trí"
-
-#: re.c:610
+#: re.c:607
#, c-format
msgid "regexp component `%.*s' should probably be `[%.*s]'"
msgstr ""
-"thành phần của biểu thức chính qui (regexp) “%.*s†hầu như chắc chắn nên là "
+"thành phần của biểu thức chính qui (regexp) “%.*s†gần như chắc chắn nên là "
"“[%.*s]â€"
#: regcomp.c:131
@@ -3469,11 +3490,11 @@ msgstr "Tên hạng ký tự không hợp lệ"
#: regcomp.c:146
msgid "Trailing backslash"
-msgstr "Gặp xuyệc ngược nằm theo"
+msgstr "Gặp dấu gạch ngược thừa"
#: regcomp.c:149
msgid "Invalid back reference"
-msgstr "Tham chiếu trở lại không hợp lệ"
+msgstr "Tham chiếu ngược không hợp lệ"
#: regcomp.c:152
msgid "Unmatched [ or [^"
@@ -3493,7 +3514,7 @@ msgstr "Kết thúc phạm vi không hợp lệ"
#: regcomp.c:167
msgid "Memory exhausted"
-msgstr "Hết bộ nhớ rồi"
+msgstr "Hết bộ nhớ"
#: regcomp.c:170
msgid "Invalid preceding regular expression"
@@ -3505,21 +3526,24 @@ msgstr "Kết thúc quá sớm của biểu thức chính quy"
#: regcomp.c:179
msgid "Unmatched ) or \\)"
-msgstr "ChÆ°a khá»›p “)†hay “\\)â€"
+msgstr "ChÆ°a khá»›p “)†hoặc “\\)â€"
#: regcomp.c:704
msgid "No previous regular expression"
msgstr "Không có biểu thức chính quy nằm trước"
-#: symbol.c:740
+#: symbol.c:741
msgid "can not pop main context"
-msgstr "không thể pop ngữ cảnh chính"
+msgstr "không thể pop (lấy ra) ngữ cảnh chính"
+
+#~ msgid "range of the form `[%c-%c]' is locale dependent"
+#~ msgstr "vùng của dạng thức “[%c-%c]†phụ thuộc vào vị trí"
#~ msgid "attempt to use function `%s' as an array"
#~ msgstr "cố gắng dùng hàm “%s†như mảng"
#~ msgid "reference to uninitialized element `%s[\"%.*s\"]'"
-#~ msgstr "tham chiếu đến phần tá»­ chÆ°a sở khởi “%s[â€%.*sâ€]â€"
+#~ msgstr "tham chiếu đến phần tá»­ chÆ°a khởi tạo “%s[â€%.*sâ€]â€"
#~ msgid "subscript of array `%s' is null string"
#~ msgstr "chữ in dưới mảng “%s†là chuỗi rỗng"
@@ -3594,4 +3618,4 @@ msgstr "không thể pop ngữ cảnh chính"
#~ msgstr "hàm được gá»i gián tiếp thông qua “%s†không tồn tại"
#~ msgid "function `%s' not defined"
-#~ msgstr "chÆ°a xác định hàm “%sâ€"
+#~ msgstr "chÆ°a định nghÄ©a hàm “%sâ€"
diff --git a/posix/ChangeLog b/posix/ChangeLog
index 9eb72ff4..b93b891f 100644
--- a/posix/ChangeLog
+++ b/posix/ChangeLog
@@ -1,3 +1,7 @@
+2014-04-08 Arnold D. Robbins <arnold@skeeve.com>
+
+ * 4.1.1: Release tar ball made.
+
2013-06-03 Arnold D. Robbins <arnold@skeeve.com>
* gawkmisc.c (init_sockets): Remove ifdefs.
diff --git a/re.c b/re.c
index e427a8fe..9118129e 100644
--- a/re.c
+++ b/re.c
@@ -259,7 +259,7 @@ research(Regexp *rp, char *str, int start,
size_t len, int flags)
{
const char *ret = str;
- int try_backref;
+ int try_backref = false;
int need_start;
int no_bol;
int res;
@@ -396,6 +396,13 @@ re_update(NODE *t)
void
resetup()
{
+ /*
+ * Syntax bits: _that_ is yet another mind trip. Recreational drugs
+ * are helpful for recovering from the experience.
+ *
+ * Aharon Robbins <arnold@skeeve.com>
+ * Sun, 21 Oct 2007 23:55:33 +0200
+ */
if (do_posix)
syn = RE_SYNTAX_POSIX_AWK; /* strict POSIX re's */
else if (do_traditional)
diff --git a/regcomp.c b/regcomp.c
index fd490d02..776b7134 100644
--- a/regcomp.c
+++ b/regcomp.c
@@ -322,7 +322,7 @@ static void
re_compile_fastmap_iter (regex_t *bufp, const re_dfastate_t *init_state,
char *fastmap)
{
- volatile re_dfa_t *dfa = (re_dfa_t *) bufp->buffer;
+ re_dfa_t *dfa = (re_dfa_t *) bufp->buffer;
int node_cnt;
int icase = (dfa->mb_cur_max == 1 && (bufp->syntax & RE_ICASE));
for (node_cnt = 0; node_cnt < init_state->nodes.nelem; ++node_cnt)
@@ -2547,13 +2547,7 @@ parse_dup_op (bin_tree_t *elem, re_string_t *regexp, re_dfa_t *dfa,
{
bin_tree_t *tree = NULL, *old_tree = NULL;
int i, start, end, start_idx = re_string_cur_idx (regexp);
-#ifndef RE_TOKEN_INIT_BUG
re_token_t start_token = *token;
-#else
- re_token_t start_token;
-
- memcpy ((void *) &start_token, (void *) token, sizeof start_token);
-#endif
if (token->type == OP_OPEN_DUP_NUM)
{
@@ -2770,7 +2764,14 @@ build_range_exp (reg_syntax_t syntax, bitset_t sbcset,
new_nranges);
if (BE (new_array_start == NULL || new_array_end == NULL, 0))
- return REG_ESPACE;
+ {
+ /* if one is not NULL, free it to avoid leaks */
+ if (new_array_start != NULL)
+ re_free(new_array_start);
+ if (new_array_end != NULL)
+ re_free(new_array_end);
+ return REG_ESPACE;
+ }
mbcset->range_starts = new_array_start;
mbcset->range_ends = new_array_end;
@@ -2853,40 +2854,29 @@ parse_bracket_exp (re_string_t *regexp, re_dfa_t *dfa, re_token_t *token,
/* Local function for parse_bracket_exp used in _LIBC environement.
Seek the collating symbol entry correspondings to NAME.
- Return the index of the symbol in the SYMB_TABLE. */
+ Return the index of the symbol in the SYMB_TABLE,
+ or -1 if not found. */
auto inline int32_t
__attribute ((always_inline))
- seek_collating_symbol_entry (name, name_len)
- const unsigned char *name;
- size_t name_len;
+ seek_collating_symbol_entry (const unsigned char *name, size_t name_len)
{
- int32_t hash = elem_hash ((const char *) name, name_len);
- int32_t elem = hash % table_size;
- if (symb_table[2 * elem] != 0)
- {
- int32_t second = hash % (table_size - 2) + 1;
-
- do
- {
- /* First compare the hashing value. */
- if (symb_table[2 * elem] == hash
- /* Compare the length of the name. */
- && name_len == extra[symb_table[2 * elem + 1]]
- /* Compare the name. */
- && memcmp (name, &extra[symb_table[2 * elem + 1] + 1],
- name_len) == 0)
- {
- /* Yep, this is the entry. */
- break;
- }
+ int32_t elem;
- /* Next entry. */
- elem += second;
- }
- while (symb_table[2 * elem] != 0);
- }
- return elem;
+ for (elem = 0; elem < table_size; elem++)
+ if (symb_table[2 * elem] != 0)
+ {
+ int32_t idx = symb_table[2 * elem + 1];
+ /* Skip the name of collating element name. */
+ idx += 1 + extra[idx];
+ if (/* Compare the length of the name. */
+ name_len == extra[idx]
+ /* Compare the name. */
+ && memcmp (name, &extra[idx + 1], name_len) == 0)
+ /* Yep, this is the entry. */
+ return elem;
+ }
+ return -1;
}
/* Local function for parse_bracket_exp used in _LIBC environment.
@@ -2895,8 +2885,7 @@ parse_bracket_exp (re_string_t *regexp, re_dfa_t *dfa, re_token_t *token,
auto inline unsigned int
__attribute ((always_inline))
- lookup_collation_sequence_value (br_elem)
- bracket_elem_t *br_elem;
+ lookup_collation_sequence_value (bracket_elem_t *br_elem)
{
if (br_elem->type == SB_CHAR)
{
@@ -2924,7 +2913,7 @@ parse_bracket_exp (re_string_t *regexp, re_dfa_t *dfa, re_token_t *token,
int32_t elem, idx;
elem = seek_collating_symbol_entry (br_elem->opr.name,
sym_name_len);
- if (symb_table[2 * elem] != 0)
+ if (elem != -1)
{
/* We found the entry. */
idx = symb_table[2 * elem + 1];
@@ -2942,7 +2931,7 @@ parse_bracket_exp (re_string_t *regexp, re_dfa_t *dfa, re_token_t *token,
/* Return the collation sequence value. */
return *(unsigned int *) (extra + idx);
}
- else if (symb_table[2 * elem] == 0 && sym_name_len == 1)
+ else if (sym_name_len == 1)
{
/* No valid character. Match it as a single byte
character. */
@@ -2964,11 +2953,8 @@ parse_bracket_exp (re_string_t *regexp, re_dfa_t *dfa, re_token_t *token,
auto inline reg_errcode_t
__attribute ((always_inline))
- build_range_exp (sbcset, mbcset, range_alloc, start_elem, end_elem)
- re_charset_t *mbcset;
- int *range_alloc;
- bitset_t sbcset;
- bracket_elem_t *start_elem, *end_elem;
+ build_range_exp (bitset_t sbcset, re_charset_t *mbcset, int *range_alloc,
+ bracket_elem_t *start_elem, bracket_elem_t *end_elem)
{
unsigned int ch;
uint32_t start_collseq;
@@ -3047,25 +3033,22 @@ parse_bracket_exp (re_string_t *regexp, re_dfa_t *dfa, re_token_t *token,
auto inline reg_errcode_t
__attribute ((always_inline))
- build_collating_symbol (sbcset, mbcset, coll_sym_alloc, name)
- re_charset_t *mbcset;
- int *coll_sym_alloc;
- bitset_t sbcset;
- const unsigned char *name;
+ build_collating_symbol (bitset_t sbcset, re_charset_t *mbcset,
+ int *coll_sym_alloc, const unsigned char *name)
{
int32_t elem, idx;
size_t name_len = strlen ((const char *) name);
if (nrules != 0)
{
elem = seek_collating_symbol_entry (name, name_len);
- if (symb_table[2 * elem] != 0)
+ if (elem != -1)
{
/* We found the entry. */
idx = symb_table[2 * elem + 1];
/* Skip the name of collating element name. */
idx += 1 + extra[idx];
}
- else if (symb_table[2 * elem] == 0 && name_len == 1)
+ else if (name_len == 1)
{
/* No valid character, treat it as a normal
character. */
@@ -3145,8 +3128,8 @@ parse_bracket_exp (re_string_t *regexp, re_dfa_t *dfa, re_token_t *token,
if (BE (sbcset == NULL, 0))
#endif /* RE_ENABLE_I18N */
{
- re_free (sbcset);
#ifdef RE_ENABLE_I18N
+ re_free (sbcset);
re_free (mbcset);
#endif
*err = REG_ESPACE;
@@ -3697,6 +3680,13 @@ build_charclass_op (re_dfa_t *dfa, RE_TRANSLATE_TYPE trans,
if (BE (sbcset == NULL, 0))
#endif /* not RE_ENABLE_I18N */
{
+ /* if one is not NULL, free it to avoid leaks */
+ if (sbcset != NULL)
+ free(sbcset);
+#ifdef RE_ENABLE_I18N
+ if (mbcset != NULL)
+ free(mbcset);
+#endif
*err = REG_ESPACE;
return NULL;
}
@@ -3739,6 +3729,7 @@ build_charclass_op (re_dfa_t *dfa, RE_TRANSLATE_TYPE trans,
#endif
/* Build a tree for simple bracket. */
+ memset(& br_token, 0, sizeof(br_token)); /* silence "not initialized" errors froms static checkers */
br_token.type = SIMPLE_BRACKET;
br_token.opr.sbcset = sbcset;
tree = create_token_tree (dfa, NULL, NULL, &br_token);
@@ -3829,6 +3820,7 @@ create_tree (re_dfa_t *dfa, bin_tree_t *left, bin_tree_t *right,
re_token_type_t type)
{
re_token_t t;
+ memset(& t, 0, sizeof(t)); /* silence "not initialized" errors froms static checkers */
t.type = type;
return create_token_tree (dfa, left, right, &t);
}
diff --git a/regex.c b/regex.c
index 700e7f9d..f56e8692 100644
--- a/regex.c
+++ b/regex.c
@@ -1,5 +1,5 @@
/* Extended regular expression matching and search library.
- Copyright (C) 2002-2013 Free Software Foundation, Inc.
+ Copyright (C) 2002-2014 Free Software Foundation, Inc.
This file is part of the GNU C Library.
Contributed by Isamu Hasegawa <isamu@yamato.ibm.com>.
@@ -57,9 +57,9 @@
#include <limits.h>
/* This header defines the MIN and MAX macros. */
-#ifndef VMS
+#ifdef HAVE_SYS_PARAM_H
#include <sys/param.h>
-#endif /* VMS */
+#endif /* HAVE_SYS_PARAM_H */
#ifdef GAWK
#undef alloca
diff --git a/regex.h b/regex.h
index ca619ae5..56602961 100644
--- a/regex.h
+++ b/regex.h
@@ -1,7 +1,6 @@
/* Definitions for data structures and routines for the regular
expression library.
- Copyright (C) 1985,1989-93,1995-98,2000,2001,2002,2003,2005,2006,2008,2011
- Free Software Foundation, Inc.
+ Copyright (C) 1985, 1989-2014 Free Software Foundation, Inc.
This file is part of the GNU C Library.
The GNU C Library is free software; you can redistribute it and/or
@@ -540,7 +539,7 @@ extern void re_set_registers (struct re_pattern_buffer *__buffer,
regoff_t *__starts, regoff_t *__ends);
#endif /* Use GNU */
-#if defined _REGEX_RE_COMP || (defined _LIBC && defined __USE_BSD)
+#if defined _REGEX_RE_COMP || (defined _LIBC && defined __USE_MISC)
# ifndef _CRAY
/* 4.2 bsd compatibility. */
extern char *re_comp (const char *);
diff --git a/regex_internal.c b/regex_internal.c
index 5f77bcb0..056cff3d 100644
--- a/regex_internal.c
+++ b/regex_internal.c
@@ -1,5 +1,5 @@
/* Extended regular expression matching and search library.
- Copyright (C) 2002-2013 Free Software Foundation, Inc.
+ Copyright (C) 2002-2014 Free Software Foundation, Inc.
This file is part of the GNU C Library.
Contributed by Isamu Hasegawa <isamu@yamato.ibm.com>.
@@ -320,12 +320,11 @@ build_wcs_upper_buffer (re_string_t *pstr)
+ byte_idx), remain_len, &pstr->cur_state);
if (BE (mbclen + 2 > 2, 1))
{
- wchar_t wcu = wc;
- if (iswlower (wc))
+ wchar_t wcu = towupper (wc);
+ if (wcu != wc)
{
size_t mbcdlen;
- wcu = towupper (wc);
mbcdlen = wcrtomb (buf, wcu, &prev_st);
if (BE (mbclen == mbcdlen, 1))
memcpy (pstr->mbs + byte_idx, buf, mbclen);
@@ -390,12 +389,11 @@ build_wcs_upper_buffer (re_string_t *pstr)
mbclen = __mbrtowc (&wc, p, remain_len, &pstr->cur_state);
if (BE (mbclen + 2 > 2, 1))
{
- wchar_t wcu = wc;
- if (iswlower (wc))
+ wchar_t wcu = towupper (wc);
+ if (wcu != wc)
{
size_t mbcdlen;
- wcu = towupper (wc);
mbcdlen = wcrtomb ((char *) buf, wcu, &prev_st);
if (BE (mbclen == mbcdlen, 1))
memcpy (pstr->mbs + byte_idx, buf, mbclen);
@@ -547,10 +545,7 @@ build_upper_buffer (re_string_t *pstr)
int ch = pstr->raw_mbs[pstr->raw_mbs_idx + char_idx];
if (BE (pstr->trans != NULL, 0))
ch = pstr->trans[ch];
- if (islower (ch))
- pstr->mbs[char_idx] = toupper (ch);
- else
- pstr->mbs[char_idx] = ch;
+ pstr->mbs[char_idx] = toupper (ch);
}
pstr->valid_len = char_idx;
pstr->valid_raw_len = char_idx;
@@ -1451,7 +1446,18 @@ re_dfa_add_node (re_dfa_t *dfa, re_token_t token)
new_eclosures = re_realloc (dfa->eclosures, re_node_set, new_nodes_alloc);
if (BE (new_nexts == NULL || new_indices == NULL
|| new_edests == NULL || new_eclosures == NULL, 0))
- return -1;
+ {
+ /* if any are not NULL, free them, avoid leaks */
+ if (new_nexts != NULL)
+ re_free(new_nexts);
+ if (new_indices != NULL)
+ re_free(new_indices);
+ if (new_edests != NULL)
+ re_free(new_edests);
+ if (new_eclosures != NULL)
+ re_free(new_eclosures);
+ return -1;
+ }
dfa->nexts = new_nexts;
dfa->org_indices = new_indices;
dfa->edests = new_edests;
diff --git a/regex_internal.h b/regex_internal.h
index f7616fd6..c8981a08 100644
--- a/regex_internal.h
+++ b/regex_internal.h
@@ -1,5 +1,5 @@
/* Extended regular expression matching and search library.
- Copyright (C) 2002-2013 Free Software Foundation, Inc.
+ Copyright (C) 2002-2014 Free Software Foundation, Inc.
This file is part of the GNU C Library.
Contributed by Isamu Hasegawa <isamu@yamato.ibm.com>.
@@ -155,6 +155,7 @@ is_blank (int c)
# define __attribute(arg) __attribute__ (arg)
#else
# define __attribute(arg)
+# define __attribute__(arg) /* GAWK: They left this out. Duh. */
#endif
#ifdef GAWK
@@ -417,7 +418,7 @@ typedef struct re_dfa_t re_dfa_t;
#ifndef _LIBC
# ifdef __i386__
-# define internal_function __attribute ((regparm (3), stdcall))
+# define internal_function __attribute__ ((regparm (3), stdcall))
# else
# define internal_function
# endif
@@ -436,7 +437,7 @@ static void build_upper_buffer (re_string_t *pstr) internal_function;
static void re_string_translate_buffer (re_string_t *pstr) internal_function;
static unsigned int re_string_context_at (const re_string_t *input, int idx,
int eflags)
- internal_function __attribute ((pure));
+ internal_function __attribute__ ((pure));
#endif
#define re_string_peek_byte(pstr, offset) \
((pstr)->mbs[(pstr)->cur_idx + offset])
@@ -726,7 +727,7 @@ typedef struct
/* Inline functions for bitset operation. */
-static inline void
+static void __attribute__ ((unused))
bitset_not (bitset_t set)
{
int bitset_i;
@@ -734,7 +735,7 @@ bitset_not (bitset_t set)
set[bitset_i] = ~set[bitset_i];
}
-static inline void
+static void __attribute__ ((unused))
bitset_merge (bitset_t dest, const bitset_t src)
{
int bitset_i;
@@ -742,7 +743,7 @@ bitset_merge (bitset_t dest, const bitset_t src)
dest[bitset_i] |= src[bitset_i];
}
-static inline void
+static void __attribute__ ((unused))
bitset_mask (bitset_t dest, const bitset_t src)
{
int bitset_i;
@@ -752,8 +753,8 @@ bitset_mask (bitset_t dest, const bitset_t src)
#ifdef RE_ENABLE_I18N
/* Inline functions for re_string. */
-static inline int
-internal_function __attribute ((pure))
+static int
+internal_function __attribute__ ((pure, unused))
re_string_char_size_at (const re_string_t *pstr, int idx)
{
int byte_idx;
@@ -765,8 +766,8 @@ re_string_char_size_at (const re_string_t *pstr, int idx)
return byte_idx;
}
-static inline wint_t
-internal_function __attribute ((pure))
+static wint_t
+internal_function __attribute__ ((pure, unused))
re_string_wchar_at (const re_string_t *pstr, int idx)
{
if (pstr->mb_cur_max == 1)
@@ -776,7 +777,7 @@ re_string_wchar_at (const re_string_t *pstr, int idx)
# ifndef NOT_IN_libc
static int
-internal_function __attribute ((pure))
+internal_function __attribute__ ((pure, unused))
re_string_elem_size_at (const re_string_t *pstr, int idx)
{
# ifdef _LIBC
diff --git a/regexec.c b/regexec.c
index a39e1f58..77795f69 100644
--- a/regexec.c
+++ b/regexec.c
@@ -664,7 +664,7 @@ re_search_internal (preg, string, length, start, range, stop, nmatch, pmatch,
nmatch -= extra_nmatch;
/* Check if the DFA haven't been compiled. */
- if (BE (preg->used == 0 || dfa->init_state == NULL
+ if (BE (preg->used == 0 || dfa == NULL || dfa->init_state == NULL
|| dfa->init_state_word == NULL || dfa->init_state_nl == NULL
|| dfa->init_state_begbuf == NULL, 0))
return REG_NOMATCH;
diff --git a/str_array.c b/str_array.c
index aa82d71b..33c9ddcc 100644
--- a/str_array.c
+++ b/str_array.c
@@ -69,6 +69,25 @@ afunc_t str_array_func[] = {
(afunc_t) 0,
};
+static NODE **env_remove(NODE *symbol, NODE *subs);
+static NODE **env_store(NODE *symbol, NODE *subs);
+static NODE **env_clear(NODE *symbol, NODE *subs);
+
+/* special case for ENVIRON */
+afunc_t env_array_func[] = {
+ str_array_init,
+ (afunc_t) 0,
+ null_length,
+ str_lookup,
+ str_exists,
+ env_clear,
+ env_remove,
+ str_list,
+ str_copy,
+ str_dump,
+ env_store,
+};
+
static inline NODE **str_find(NODE *symbol, NODE *s1, size_t code1, unsigned long hash1);
static void grow_table(NODE *symbol);
@@ -737,3 +756,63 @@ scramble(unsigned long x)
return x;
}
+
+/* env_remove --- for ENVIRON, remove value from real environment */
+
+static NODE **
+env_remove(NODE *symbol, NODE *subs)
+{
+ NODE **val = str_remove(symbol, subs);
+
+ if (val != NULL)
+ (void) unsetenv(subs->stptr);
+
+ return val;
+}
+
+/* env_clear --- clear out the environment when ENVIRON is deleted */
+
+static NODE **
+env_clear(NODE *symbol, NODE *subs)
+{
+ extern char **environ;
+ NODE **val = str_clear(symbol, subs);
+
+ environ = NULL; /* ZAP! */
+
+ /* str_clear zaps the vtable, reset it */
+ symbol->array_funcs = env_array_func;
+
+ return val;
+}
+
+/* env_store --- post assign function for ENVIRON, put new value into env */
+
+static NODE **
+env_store(NODE *symbol, NODE *subs)
+{
+ NODE **val = str_exists(symbol, subs);
+ const char *newval;
+
+ assert(val != NULL);
+
+ newval = (*val)->stptr;
+ if (newval == NULL)
+ newval = "";
+
+ (void) setenv(subs->stptr, newval, 1);
+
+ return val;
+}
+
+/* init_env_array --- set up the pointers for ENVIRON. A bit hacky. */
+
+void
+init_env_array(NODE *env_node)
+{
+ /* If POSIX simply don't reset the vtable and things work as before */
+ if (do_posix)
+ return;
+
+ env_node->array_funcs = env_array_func;
+}
diff --git a/symbol.c b/symbol.c
index 2b5e2bbd..fe297d22 100644
--- a/symbol.c
+++ b/symbol.c
@@ -221,9 +221,10 @@ remove_symbol(NODE *r)
}
-/* destroy_symbol --- remove a symbol from symbol table
-* and free all associated memory.
-*/
+/*
+ * destroy_symbol --- remove a symbol from symbol table
+ * and free all associated memory.
+ */
void
destroy_symbol(NODE *r)
@@ -262,7 +263,7 @@ destroy_symbol(NODE *r)
default:
/* Node_param_list -- YYABORT */
- return;
+ break; /* use break so that storage is freed */
}
efree(r->vname);
diff --git a/test/ChangeLog b/test/ChangeLog
index 87ad809f..6d4cd1c2 100644
--- a/test/ChangeLog
+++ b/test/ChangeLog
@@ -1,3 +1,203 @@
+2014-04-11 Arnold D. Robbins <arnold@skeeve.com>
+
+ * Makefile.am (charset-msg-start): Add a warning message that tests
+ may fail without adequate locale support, per request from
+ Nelson H.F. Beebe.
+
+2014-04-08 Arnold D. Robbins <arnold@skeeve.com>
+
+ * 4.1.1: Release tar ball made.
+
+2014-04-04 Arnold D. Robbins <arnold@skeeve.com>
+
+ * Makefile.am: Prettify list of tests a little bit.
+
+2014-04-03 Arnold D. Robbins <arnold@skeeve.com>
+
+ * Makefile.am (EXTRA_DIST): Add readfile2.ok. Oops.
+
+2014-03-27 Arnold D. Robbins <arnold@skeeve.com>
+
+ * Makefile.am (readfile2): New test.
+ * readfile2.awk, readfile2.ok: New files.
+
+2014-02-28 Arnold D. Robbins <arnold@skeeve.com>
+
+ * regrange.ok: Update after code improvements.
+
+2014-02-03 Stepan Kasal <kasal@ucw.cz>
+
+ * strftime.awk: the default format uses %e, not %d (Introduced on
+ 2014-01-16; the previous code mangled the output of command "date"
+ to match %d.) Remove the "mucking" for cygwin, it's obsolete and
+ incompatible with %e.
+
+2014-01-28 Eli Zaretskii <eliz@gnu.org>
+
+ * strftime.awk: If DATECMD variable is non-empty, use it instead
+ of the literal "date" as the 'date'-like command.
+
+2014-01-19 Arnold D. Robbins <arnold@skeeve.com>
+
+ * Makefile.am (mpfrnegzero): New test.
+ * mpfrnegzero.awk, mpfrnegzero.ok: New files.
+
+2014-01-17 Arnold D. Robbins <arnold@skeeve.com>
+
+ * Makefile.am (readdir): Run ls commands outside the awk script.
+ * readdir0.awk: Read ls results from files. Helps with MinGW.
+ Thanks to Eli Zaretskii for the problem report.
+
+2014-01-17 Arnold D. Robbins <arnold@skeeve.com>
+
+ * Makefile.am: Quote instances of $(top_srcdir) also.
+
+2014-01-16 Andrew J. Schorr <aschorr@telemetry-investments.com>
+
+ * Makefile.am (strftime): Remove comment about the race condition, since
+ this should be fixed. And gawk now calls date inside the script.
+ * strftime.awk: Based on an idea from Pat Rankin, fix the race
+ condition by looping repeatedly over strftime/date/strftime until
+ the before and after strftime results match. That should fix
+ the race condition where the seconds field might increment between
+ invocations.
+
+2014-01-14 Arnold D. Robbins <arnold@skeeve.com>
+
+ * Makefile.am (split_after_fpat): New test.
+ * split_after_fpat.awk, split_after_fpat.ok,
+ split_after_fpat.in: New files.
+
+2013-12-30 Arnold D. Robbins <arnold@skeeve.com>
+
+ * Makefile.am (ignrcas2): Change to use en_US.UTF-8; it
+ seems that plain en_US doesn't exist anymore. Thanks to
+ Richard Palo.
+
+2013-12-29 John E. Malmberg <wb8tyw@qsl.net>
+
+ * fts.awk: Adjust for VMS.
+ * rwarray.awk: Adjust for VMS.
+
+2013-12-10 Arnold D. Robbins <arnold@skeeve.com>
+
+ * Makefile.am: Remove instances of "" that were incorrect.
+ Thanks to Scott Deifik for the report.
+
+2013-12-01 Arnold D. Robbins <arnold@skeeve.com>
+
+ * Makefile.am (fts): Add a check for Cygwin on NFS and print
+ a message, similar to that of IRIX. Per Corinna Vinschen.
+
+2013-11-29 Arnold D. Robbins <arnold@skeeve.com>
+
+ * Makefile.am (pipeio3): Removed test and reference to files.
+ It was too ful of race conditions to work reliably everywhere.
+ * pipeio3.awk, pipeio3.ok, pipeio3.ok2: Removed.
+
+2013-11-28 Arnold D. Robbins <arnold@skeeve.com>
+
+ * readdir0.awk: Take argument which is directory to read.
+ * Makefile.am (readdir): Pass $(top_srcdir) to readdir0.awk.
+
+2013-11-27 Andrew J. Schorr <aschorr@telemetry-investments.com>
+
+ * readdir0.awk: Restore fix so that we do not fail on filesysystems
+ such as XFS where the dirent does not contain the file type.
+
+2013-11-27 Andrew J. Schorr <aschorr@telemetry-investments.com>
+
+ * Makefile.am (ordchr2): Use --load instead of -l to make sure the
+ long option works properly. Note that the readfile test still uses
+ the short version.
+ (include2): Use --include instead of -i to make sure that the long
+ option works properly. Note that many other tests use the -i short
+ version.
+
+2013-11-20 Arnold D. Robbins <arnold@skeeve.com>
+
+ * readdir0.awk: Use `ls -lan' to get numeric user and group ID
+ numbers. This keeps the number of fields correct and consistent, even
+ on systems (like, oh, say, Windows with Cygwin) where group names
+ can contain spaces.
+
+2013-11-07 Arnold D. Robbins <arnold@skeeve.com>
+
+ Solaris fixes.
+
+ * readdir0.awk: Run ls -afi and ls -la separately since POSIX
+ says that -f turns off -l. Thanks to Dagobert Michelsen
+ <dam@opencsw.org> for the report.
+ * Makefile.am (diffout): Don't use POSIX or bash-isms so that
+ it will work on Solaris. Sigh.
+
+2013-11-03 Arnold D. Robbins <arnold@skeeve.com>
+
+ * Makefile.am (backsmalls2): New test.
+ (pipeio3): Check results against pipeio3.ok2 if
+ the first check fails.
+ * backsmalls2.awk, backsmalls2.ok: New files.
+ * pipeio3.ok2: New file. This is the results on PPC Mac OS X.
+
+2013-10-30 Arnold D. Robbins <arnold@skeeve.com>
+
+ * Makefile.am (pipeio3): Enhance test, again, to be more resilient
+ to variations in error messages produced by different Bourne shells
+ when a command is not found. This time for Cygwin.
+
+ Unrelated:
+
+ (charasbytes): Translit any tabs to spaces. Should help on
+ some System V systems such as Solaris. We hope.
+
+ Unrelated:
+
+ (pass-fail): Exit non-zero if tests fail. Useful for buildbots.
+
+2013-10-22 Arnold D. Robbins <arnold@skeeve.com>
+
+ * Makefile.am (pipeio3): Enhance test to be more resilient to
+ variations in error messages produced by different Bourne shells
+ when a command is not found. Initially for Mac OS X.
+
+2013-10-17 Arnold D. Robbins <arnold@skeeve.com>
+
+ * Makefile.am (pipeio3): New test.
+ * pipeio3.awk, pipeio3.ok: New files.
+
+2013-10-10 Arnold D. Robbins <arnold@skeeve.com>
+
+ * Makefile.am (backbigs1, backsmalls1): New tests.
+ * backbigs1.awk, backbigs1.in, backbigs1.ok: New files.
+ * backsmalls1.awk, backsmalls1.in, backsmalls1.ok: New files.
+
+2013-10-09 Arnold D. Robbins <arnold@skeeve.com>
+
+ * Makefile.am (badassign1): New test.
+ * badassign1.awk, badassign1.ok: New files.
+
+2013-09-25 Arnold D. Robbins <arnold@skeeve.com>
+
+ * Makfile.am (randtest): New test.
+ * randtest.sh, randtest.ok: New files.
+ * rand.ok: Updated to reflect new results based on code change.
+
+2013-09-13 Arnold D. Robbins <arnold@skeeve.com>
+
+ * Makefile.am: Fix quoting for generation of Maketests file so
+ that it will happen correctly.
+
+ Unrelated:
+
+ * Makefile.am (nfloop): New test.
+ * nfloop.awk, nfloop.ok: New files.
+
+2013-08-15 Arnold D. Robbins <arnold@skeeve.com>
+
+ * Makefile.am: Quote $(srcdir) everywhere so that tests can run
+ in locations with spaces in their names (think Windows or Mac OS X).
+ * Gentests: Ditto for when creating Maketests file.
+
2013-07-04 Arnold D. Robbins <arnold@skeeve.com>
* Makefile.am (mbprintf4): New test.
diff --git a/test/Gentests b/test/Gentests
index 86849fe1..460edbae 100755
--- a/test/Gentests
+++ b/test/Gentests
@@ -96,7 +96,7 @@ function generate(x, s)
delete lint_old[x]
}
if (x".in" in files) {
- s = s " < $(srcdir)/$@.in"
+ s = s " < \"$(srcdir)\"/$@.in"
delete files[x".in"]
}
@@ -104,13 +104,13 @@ function generate(x, s)
if (x in mpfr) {
delete mpfr[x]
- printf "\t@AWKPATH=$(srcdir) $(AWK) $(AWKFLAGS) -f $@.awk %s >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@\n", s
- printf "\t@-if test -z \"$$AWKFLAGS\" ; then $(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@ ; else \\\n"
- printf "\t$(CMP) $(srcdir)/$@-mpfr.ok _$@ && rm -f _$@ ; \\\n"
+ printf "\t@AWKPATH=\"$(srcdir)\" $(AWK) $(AWKFLAGS) -f $@.awk %s >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@\n", s
+ printf "\t@-if test -z \"$$AWKFLAGS\" ; then $(CMP) \"$(srcdir)\"/$@.ok _$@ && rm -f _$@ ; else \\\n"
+ printf "\t$(CMP) \"$(srcdir)\"/$@-mpfr.ok _$@ && rm -f _$@ ; \\\n"
printf "\tfi\n\n"
} else {
- printf "\t@AWKPATH=$(srcdir) $(AWK) -f $@.awk %s >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@\n", s
- printf "\t@-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@\n\n"
+ printf "\t@AWKPATH=\"$(srcdir)\" $(AWK) -f $@.awk %s >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@\n", s
+ printf "\t@-$(CMP) \"$(srcdir)\"/$@.ok _$@ && rm -f _$@\n\n"
}
}
diff --git a/test/Makefile.am b/test/Makefile.am
index e7c9cefd..238f2ed7 100644
--- a/test/Makefile.am
+++ b/test/Makefile.am
@@ -1,7 +1,7 @@
#
# test/Makefile.am --- automake input file for gawk
#
-# Copyright (C) 1988-2012 the Free Software Foundation, Inc.
+# Copyright (C) 1988-2014 the Free Software Foundation, Inc.
#
# This file is part of GAWK, the GNU implementation of the
# AWK Programming Language.
@@ -112,7 +112,17 @@ EXTRA_DIST = \
backw.awk \
backw.in \
backw.ok \
+ backbigs1.awk \
+ backbigs1.in \
+ backbigs1.ok \
+ backsmalls1.awk \
+ backsmalls1.in \
+ backsmalls1.ok \
+ backsmalls2.awk \
+ backsmalls2.ok \
badargs.ok \
+ badassign1.awk \
+ badassign1.ok \
beginfile1.awk \
beginfile1.ok \
beginfile2.in \
@@ -512,6 +522,8 @@ EXTRA_DIST = \
mpfrexprange.ok \
mpfrieee.awk \
mpfrieee.ok \
+ mpfrnegzero.awk \
+ mpfrnegzero.ok \
mpfrnr.awk \
mpfrnr.in \
mpfrnr.ok \
@@ -540,6 +552,8 @@ EXTRA_DIST = \
nfldstr.awk \
nfldstr.in \
nfldstr.ok \
+ nfloop.awk \
+ nfloop.ok \
nfneg.awk \
nfneg.ok \
nfset.awk \
@@ -689,11 +703,15 @@ EXTRA_DIST = \
rand-mpfr.ok \
rand.awk \
rand.ok \
+ randtest.sh \
+ randtest.ok \
range1.awk \
range1.in \
range1.ok \
readdir.awk \
readdir0.awk \
+ readfile2.awk \
+ readfile2.ok \
rebt8b1.awk \
rebt8b1.ok \
rebt8b2.awk \
@@ -794,6 +812,9 @@ EXTRA_DIST = \
sortu.awk \
sortu.ok \
space.ok \
+ split_after_fpat.awk \
+ split_after_fpat.in \
+ split_after_fpat.ok \
splitarg4.awk \
splitarg4.in \
splitarg4.ok \
@@ -928,7 +949,7 @@ BASIC_TESTS = \
arrayref arrymem1 arryref2 arryref3 arryref4 arryref5 arynasty \
arynocls aryprm1 aryprm2 aryprm3 aryprm4 aryprm5 aryprm6 aryprm7 \
aryprm8 arysubnm asgext awkpath \
- back89 backgsub \
+ back89 backgsub badassign1 \
childin clobber closebad clsflnam compare compare2 concat1 concat2 \
concat3 concat4 convfmt \
datanonl defref delargv delarpm2 delarprm delfunc dfamb1 dfastress dynlj \
@@ -943,14 +964,14 @@ BASIC_TESTS = \
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 \
+ nasty nasty2 negexp negrange nested nfldstr nfloop nfneg nfset nlfldsep \
nlinstr nlstrina noeffect nofile nofmtch noloop1 noloop2 nonl \
noparms nors nulrsend numindex numsubstr \
octsub ofmt ofmta ofmtbig ofmtfidl ofmts ofs1 onlynl opasnidx opasnslf \
paramdup paramres paramtyp paramuninitglobal parse1 parsefld parseme \
pcntplus posix2008sub prdupval prec printf0 printf1 prmarscl prmreuse \
prt1eval prtoeval \
- rand range1 rebt8b1 redfilnm regeq regexprange regrange reindops \
+ rand randtest range1 rebt8b1 redfilnm regeq regexprange regrange reindops \
reparse resplit rri1 rs rsnul1nl rsnulbig rsnulbig2 rstest1 rstest2 \
rstest3 rstest4 rstest5 rswhite \
scalar sclforin sclifin sortempty splitargv splitarr splitdef \
@@ -961,8 +982,8 @@ BASIC_TESTS = \
zero2 zeroe0 zeroflag
UNIX_TESTS = \
- fflush getlnhd localenl pid pipeio1 pipeio2 poundbang rtlen rtlen01 \
- space strftlng
+ fflush getlnhd localenl pid pipeio1 pipeio2 poundbang \
+ rtlen rtlen01 space strftlng
GAWK_EXT_TESTS = \
aadelete1 aadelete2 aarray1 aasort aasorti argtest arraysort \
@@ -980,7 +1001,8 @@ GAWK_EXT_TESTS = \
patsplit posix printfbad1 printfbad2 printfbad3 procinfs \
profile1 profile2 profile3 profile4 profile5 pty1 \
rebuf regx8bit reginttrad reint reint2 rsstart1 \
- rsstart2 rsstart3 rstest6 shadow sortfor sortu splitarg4 strftime \
+ rsstart2 rsstart3 rstest6 shadow sortfor sortu split_after_fpat \
+ splitarg4 strftime \
strtonum switch2 symtab1 symtab2 symtab3 symtab4 symtab5 symtab6 \
symtab7 symtab8 symtab9
@@ -990,15 +1012,17 @@ INET_TESTS = inetdayu inetdayt inetechu inetecht
MACHINE_TESTS = double1 double2 fmtspcl intformat
-MPFR_TESTS = mpfrnr mpfrrnd mpfrieee mpfrexprange mpfrsort mpfrbigint
+MPFR_TESTS = mpfrnr mpfrnegzero mpfrrnd mpfrieee mpfrexprange \
+ mpfrsort mpfrbigint
LOCALE_CHARSET_TESTS = \
- asort asorti fmttest fnarydel fnparydl jarebug lc_num1 mbfw1 \
+ asort asorti backbigs1 backsmalls1 backsmalls2 \
+ fmttest fnarydel fnparydl jarebug lc_num1 mbfw1 \
mbprintf1 mbprintf2 mbprintf3 mbprintf4 rebt8b2 rtlenmb sort1 sprintfc
SHLIB_TESTS = \
fnmatch filefuncs fork fork2 fts functab4 inplace1 inplace2 inplace3 \
- ordchr ordchr2 readdir readfile revout revtwoway rwarray testext time
+ ordchr ordchr2 readdir readfile readfile2 revout revtwoway rwarray testext time
# List of the tests which should be run with --lint option:
NEED_LINT = \
@@ -1093,7 +1117,7 @@ msg::
@echo 'precision may lead to slightly different output in a few cases.'
printlang::
- @$(AWK) -f $(srcdir)/printlang.awk
+ @$(AWK) -f "$(srcdir)"/printlang.awk
basic-msg-start:
@echo "======== Starting basic tests ========"
@@ -1121,6 +1145,10 @@ machine-msg-end:
charset-msg-start:
@echo "======== Starting tests that can vary based on character set or locale support ========"
+ @echo "************************************************"
+ @echo "** Some or all of these tests may fail if you **"
+ @echo "** have inadequate or missing locale support **"
+ @echo "************************************************"
charset-msg-end:
@echo "======== Done with tests that can vary based on character set or locale support ========"
@@ -1141,8 +1169,8 @@ mpfr-msg-end:
lc_num1:
@echo $@
@[ -z "$$GAWKLOCALE" ] && GAWKLOCALE=en_US.UTF-8; \
- AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+ AWKPATH="$(srcdir)" $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
# This test is a PITA because increasingly, /tmp is getting
@@ -1152,189 +1180,187 @@ lc_num1:
# so this can still fail
poundbang::
@echo $@
- @sed "s;/tmp/gawk;`pwd`/$(AWKPROG);" < $(srcdir)/poundbang.awk > ./_pbd.awk
+ @sed "s;/tmp/gawk;`pwd`/$(AWKPROG);" < "$(srcdir)"/poundbang.awk > ./_pbd.awk
@chmod +x ./_pbd.awk
- @if ./_pbd.awk $(srcdir)/poundbang.awk > _`basename $@` ; \
+ @if ./_pbd.awk "$(srcdir)"/poundbang.awk > _`basename $@` ; \
then : ; \
else \
- sed "s;/tmp/gawk;../$(AWKPROG);" < $(srcdir)/poundbang.awk > ./_pbd.awk ; \
+ sed "s;/tmp/gawk;../$(AWKPROG);" < "$(srcdir)"/poundbang.awk > ./_pbd.awk ; \
chmod +x ./_pbd.awk ; \
- LC_ALL=$${GAWKLOCALE:-C} LANG=$${GAWKLOCALE:-C} ./_pbd.awk $(srcdir)/poundbang.awk > _`basename $@`; \
+ LC_ALL=$${GAWKLOCALE:-C} LANG=$${GAWKLOCALE:-C} ./_pbd.awk "$(srcdir)"/poundbang.awk > _`basename $@`; \
fi
- @-$(CMP) $(srcdir)/poundbang.awk _`basename $@` && rm -f _`basename $@` _pbd.awk
+ @-$(CMP) "$(srcdir)"/poundbang.awk _`basename $@` && rm -f _`basename $@` _pbd.awk
messages::
@echo $@
- @$(AWK) -f $(srcdir)/messages.awk >_out2 2>_out3
- @-$(CMP) $(srcdir)/out1.ok _out1 && $(CMP) $(srcdir)/out2.ok _out2 && $(CMP) $(srcdir)/out3.ok _out3 && rm -f _out1 _out2 _out3
+ @$(AWK) -f "$(srcdir)"/messages.awk >_out2 2>_out3
+ @-$(CMP) "$(srcdir)"/out1.ok _out1 && $(CMP) "$(srcdir)"/out2.ok _out2 && $(CMP) "$(srcdir)"/out3.ok _out3 && rm -f _out1 _out2 _out3
argarray::
@echo $@
- @case $(srcdir) in \
+ @case "$(srcdir)" in \
.) : ;; \
- *) cp $(srcdir)/argarray.in . ;; \
+ *) cp "$(srcdir)"/argarray.in . ;; \
esac
- @TEST=test echo just a test | $(AWK) -f $(srcdir)/argarray.awk ./argarray.in - >_$@
- @case $(srcdir) in \
+ @TEST=test echo just a test | $(AWK) -f "$(srcdir)"/argarray.awk ./argarray.in - >_$@
+ @case "$(srcdir)" in \
.) : ;; \
*) rm -f ./argarray.in ;; \
esac
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
regtest::
@echo 'Some of the output from regtest is very system specific, do not'
@echo 'be distressed if your output differs from that distributed.'
@echo 'Manual inspection is called for.'
- AWK=$(AWKPROG) $(srcdir)/regtest.sh
+ AWK=$(AWKPROG) "$(srcdir)"/regtest.sh
manyfiles::
@echo manyfiles
@rm -rf junk
@mkdir junk
@$(AWK) 'BEGIN { for (i = 1; i <= 1030; i++) print i, i}' >_$@
- @$(AWK) -f $(srcdir)/manyfiles.awk _$@ _$@
+ @$(AWK) -f "$(srcdir)"/manyfiles.awk _$@ _$@
@wc -l junk/* | $(AWK) '$$1 != 2' | wc -l | sed "s/ *//g" > _$@
@rm -rf junk
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
compare::
@echo $@
- @$(AWK) -f $(srcdir)/compare.awk 0 1 $(srcdir)/compare.in >_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+ @$(AWK) -f "$(srcdir)"/compare.awk 0 1 "$(srcdir)"/compare.in >_$@
+ @-$(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)/$@.ok _$@ && rm -f _$@
+ @$(AWK) -f "$(srcdir)"/inftest.awk | sed "s/inf/Inf/g" >_$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
getline2::
@echo $@
- @$(AWK) -f $(srcdir)/getline2.awk $(srcdir)/getline2.awk $(srcdir)/getline2.awk >_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+ @$(AWK) -f "$(srcdir)"/getline2.awk "$(srcdir)"/getline2.awk "$(srcdir)"/getline2.awk >_$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
awkpath::
@echo $@
@AWKPATH="$(srcdir)$(PATH_SEPARATOR)$(srcdir)/lib" $(AWK) -f awkpath.awk >_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
argtest::
@echo $@
- @$(AWK) -f $(srcdir)/argtest.awk -x -y abc >_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+ @$(AWK) -f "$(srcdir)"/argtest.awk -x -y abc >_$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
badargs::
@echo $@
@-$(AWK) -f 2>&1 | grep -v patchlevel >_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
nonl::
@echo $@
- @-AWKPATH=$(srcdir) $(AWK) --lint -f nonl.awk /dev/null >_$@ 2>&1
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+ @-AWKPATH="$(srcdir)" $(AWK) --lint -f nonl.awk /dev/null >_$@ 2>&1
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
strftime::
- @echo This test could fail on slow machines or on a minute boundary,
- @echo so if it does, double check the actual results:
@echo $@
@GAWKLOCALE=C; export GAWKLOCALE; \
TZ=GMT0; export TZ; \
- (LC_ALL=C date) | $(AWK) -v OUTPUT=_$@ -f $(srcdir)/strftime.awk
+ $(AWK) -v OUTPUT=_$@ -f "$(srcdir)"/strftime.awk
@-$(CMP) strftime.ok _$@ && rm -f _$@ strftime.ok || exit 0
litoct::
@echo $@
- @echo ab | $(AWK) --traditional -f $(srcdir)/litoct.awk >_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+ @echo ab | $(AWK) --traditional -f "$(srcdir)"/litoct.awk >_$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
devfd::
@echo $@
- @$(AWK) 1 /dev/fd/4 /dev/fd/5 4<$(srcdir)/devfd.in4 5<$(srcdir)/devfd.in5 >_$@ 2>&1 || echo EXIT CODE: $$? >> _$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+ @$(AWK) 1 /dev/fd/4 /dev/fd/5 4<"$(srcdir)"/devfd.in4 5<"$(srcdir)"/devfd.in5 >_$@ 2>&1 || echo EXIT CODE: $$? >> _$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
fflush::
@echo $@
- @$(srcdir)/fflush.sh >_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+ @"$(srcdir)"/fflush.sh >_$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
tweakfld::
@echo $@
- @$(AWK) -f $(srcdir)/tweakfld.awk $(srcdir)/tweakfld.in >_$@
+ @$(AWK) -f "$(srcdir)"/tweakfld.awk "$(srcdir)"/tweakfld.in >_$@
@rm -f errors.cleanup
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
mmap8k::
@echo $@
- @$(AWK) '{ print }' $(srcdir)/mmap8k.in >_$@
- @-$(CMP) $(srcdir)/mmap8k.in _$@ && rm -f _$@ || cp $(srcdir)/$@.in $@.ok
+ @$(AWK) '{ print }' "$(srcdir)"/mmap8k.in >_$@
+ @-$(CMP) "$(srcdir)"/mmap8k.in _$@ && rm -f _$@ || cp "$(srcdir)"/$@.in $@.ok
tradanch::
@echo $@
- @$(AWK) --traditional -f $(srcdir)/tradanch.awk $(srcdir)/tradanch.in >_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+ @$(AWK) --traditional -f "$(srcdir)"/tradanch.awk "$(srcdir)"/tradanch.in >_$@
+ @-$(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.
pid::
@echo pid
- @AWKPATH=$(srcdir) AWK=$(AWKPROG) $(SHELL) $(srcdir)/pid.sh $$$$ > _`basename $@` ; :
- @-$(CMP) $(srcdir)/pid.ok _`basename $@` && rm -f _`basename $@`
+ @AWKPATH="$(srcdir)" AWK=$(AWKPROG) $(SHELL) "$(srcdir)"/pid.sh $$$$ > _`basename $@` ; :
+ @-$(CMP) "$(srcdir)"/pid.ok _`basename $@` && rm -f _`basename $@`
strftlng::
@echo $@
- @TZ=UTC; export TZ; $(AWK) -f $(srcdir)/strftlng.awk >_$@
- @if $(CMP) $(srcdir)/strftlng.ok _$@ >/dev/null 2>&1 ; then : ; else \
- TZ=UTC0; export TZ; $(AWK) -f $(srcdir)/strftlng.awk >_$@ ; \
+ @TZ=UTC; export TZ; $(AWK) -f "$(srcdir)"/strftlng.awk >_$@
+ @if $(CMP) "$(srcdir)"/strftlng.ok _$@ >/dev/null 2>&1 ; then : ; else \
+ TZ=UTC0; export TZ; $(AWK) -f "$(srcdir)"/strftlng.awk >_$@ ; \
fi
- @-$(CMP) $(srcdir)/$@.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)/$@.ok _$@ && rm -f _$@
+ @echo A B C D E | tr -d '\12\15' | $(AWK) '{ print $$NF }' - "$(srcdir)"/nors.in > _$@
+ @-$(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
+ @$(AWK) -v "sd=$(srcdir)" 'BEGIN {pnan = sprintf("%g",sqrt(-1)); nnan = sprintf("%g",-sqrt(-1)); pinf = sprintf("%g",-log(0)); ninf = sprintf("%g",log(0))} {sub(/positive_nan/,pnan); sub(/negative_nan/,nnan); sub(/positive_infinity/,pinf); sub(/negative_infinity/,ninf); sub(/fmtspcl/,(sd"/fmtspcl")); print}' < "$(srcdir)"/fmtspcl.tok > $@ 2>/dev/null
fmtspcl: fmtspcl.ok
@echo $@
- @$(AWK) $(AWKFLAGS) -f $(srcdir)/fmtspcl.awk --lint >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @$(AWK) $(AWKFLAGS) -f "$(srcdir)"/fmtspcl.awk --lint >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
@-if test -z "$$AWKFLAGS" ; then $(CMP) $@.ok _$@ && rm -f _$@ ; else \
- $(CMP) $(srcdir)/$@-mpfr.ok _$@ && rm -f _$@ ; \
+ $(CMP) "$(srcdir)"/$@-mpfr.ok _$@ && rm -f _$@ ; \
fi
reint::
@echo $@
- @$(AWK) --re-interval -f $(srcdir)/reint.awk $(srcdir)/reint.in >_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+ @$(AWK) --re-interval -f "$(srcdir)"/reint.awk "$(srcdir)"/reint.in >_$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
pipeio1::
@echo $@
- @$(AWK) -f $(srcdir)/pipeio1.awk >_$@
+ @$(AWK) -f "$(srcdir)"/pipeio1.awk >_$@
@rm -f test1 test2
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
pipeio2::
@echo $@
- @$(AWK) -v SRCDIR=$(srcdir) -f $(srcdir)/pipeio2.awk >_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+ @$(AWK) -v SRCDIR="$(srcdir)" -f "$(srcdir)"/pipeio2.awk >_$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
clobber::
@echo $@
- @$(AWK) -f $(srcdir)/clobber.awk >_$@
- @-$(CMP) $(srcdir)/clobber.ok seq && $(CMP) $(srcdir)/clobber.ok _$@ && rm -f _$@
+ @$(AWK) -f "$(srcdir)"/clobber.awk >_$@
+ @-$(CMP) "$(srcdir)"/clobber.ok seq && $(CMP) "$(srcdir)"/clobber.ok _$@ && rm -f _$@
@rm -f seq
arynocls::
@echo $@
- @-AWKPATH=$(srcdir) $(AWK) -v INPUT=$(srcdir)/arynocls.in -f arynocls.awk >_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+ @-AWKPATH="$(srcdir)" $(AWK) -v INPUT="$(srcdir)"/arynocls.in -f arynocls.awk >_$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
getlnbuf::
@echo $@
- @-AWKPATH=$(srcdir) $(AWK) -f getlnbuf.awk $(srcdir)/getlnbuf.in > _$@
- @-AWKPATH=$(srcdir) $(AWK) -f gtlnbufv.awk $(srcdir)/getlnbuf.in > _2$@
- @-$(CMP) $(srcdir)/getlnbuf.ok _$@ && $(CMP) $(srcdir)/getlnbuf.ok _2$@ && rm -f _$@ _2$@
+ @-AWKPATH="$(srcdir)" $(AWK) -f getlnbuf.awk "$(srcdir)"/getlnbuf.in > _$@
+ @-AWKPATH="$(srcdir)" $(AWK) -f gtlnbufv.awk "$(srcdir)"/getlnbuf.in > _2$@
+ @-$(CMP) "$(srcdir)"/getlnbuf.ok _$@ && $(CMP) "$(srcdir)"/getlnbuf.ok _2$@ && rm -f _$@ _2$@
inetmesg::
@echo These tests only work if your system supports the services
@@ -1361,28 +1387,28 @@ inetdayt::
redfilnm::
@echo $@
- @$(AWK) -f $(srcdir)/redfilnm.awk srcdir=$(srcdir) $(srcdir)/redfilnm.in >_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+ @$(AWK) -f "$(srcdir)"/redfilnm.awk srcdir="$(srcdir)" "$(srcdir)"/redfilnm.in >_$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
leaddig::
@echo $@
- @$(AWK) -v x=2E -f $(srcdir)/leaddig.awk >_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+ @$(AWK) -v x=2E -f "$(srcdir)"/leaddig.awk >_$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
gsubtst3::
@echo $@
- @$(AWK) --re-interval -f $(srcdir)/$@.awk $(srcdir)/$@.in >_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+ @$(AWK) --re-interval -f "$(srcdir)"/$@.awk "$(srcdir)"/$@.in >_$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
space::
@echo $@
- @$(AWK) -f ' ' $(srcdir)/space.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+ @$(AWK) -f ' ' "$(srcdir)"/space.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
printf0::
@echo $@
- @$(AWK) --posix -f $(srcdir)/$@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+ @$(AWK) --posix -f "$(srcdir)"/$@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
rsnulbig::
@echo $@
@@ -1390,7 +1416,7 @@ rsnulbig::
@$(AWK) 'BEGIN { for (i = 1; i <= 128*64+1; i++) print "abcdefgh123456\n" }' 2>&1 | \
$(AWK) 'BEGIN { RS = ""; ORS = "\n\n" }; { print }' 2>&1 | \
$(AWK) '/^[^a]/; END{ print NR }' >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
rsnulbig2::
@echo $@
@@ -1398,311 +1424,316 @@ rsnulbig2::
for (i = 1; i <= 128; i++) print n; print "abc\n" }' 2>&1 | \
$(AWK) 'BEGIN { RS = ""; ORS = "\n\n" };{ print }' 2>&1 | \
$(AWK) '/^[^a]/; END { print NR }' >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
wideidx::
@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 _$@
+ AWKPATH="$(srcdir)" $(AWK) -f $@.awk < "$(srcdir)"/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
wideidx2::
@echo $@
@[ -z "$$GAWKLOCALE" ] && GAWKLOCALE=en_US.UTF-8; \
- AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+ AWKPATH="$(srcdir)" $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
widesub::
@echo $@
@[ -z "$$GAWKLOCALE" ] && GAWKLOCALE=en_US.UTF-8; \
- AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+ AWKPATH="$(srcdir)" $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
widesub2::
@echo $@
@[ -z "$$GAWKLOCALE" ] && GAWKLOCALE=en_US.UTF-8; \
- AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+ AWKPATH="$(srcdir)" $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
widesub3::
@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 _$@
+ AWKPATH="$(srcdir)" $(AWK) -f $@.awk < "$(srcdir)"/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
widesub4::
@echo $@
@[ -z "$$GAWKLOCALE" ] && GAWKLOCALE=en_US.UTF-8; \
- AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+ AWKPATH="$(srcdir)" $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
ignrcas2::
@echo $@
- @GAWKLOCALE=en_US ; export GAWKLOCALE ; \
- $(AWK) -f $(srcdir)/$@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >> _$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+ @GAWKLOCALE=en_US.UTF-8 ; export GAWKLOCALE ; \
+ $(AWK) -f "$(srcdir)"/$@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >> _$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
subamp::
@echo $@
@GAWKLOCALE=en_US.UTF-8 ; export GAWKLOCALE ; \
- $(AWK) -f $(srcdir)/$@.awk $(srcdir)/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >> _$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+ $(AWK) -f "$(srcdir)"/$@.awk "$(srcdir)"/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >> _$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
# This test makes sure gawk exits with a zero code.
# Thus, unconditionally generate the exit code.
exitval1::
@echo $@
- @$(AWK) -f $(srcdir)/exitval1.awk >_$@ 2>&1; echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+ @$(AWK) -f "$(srcdir)"/exitval1.awk >_$@ 2>&1; echo EXIT CODE: $$? >>_$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
fsspcoln::
@echo $@
- @$(AWK) -f $(srcdir)/$@.awk 'FS=[ :]+' $(srcdir)/$@.in >_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+ @$(AWK) -f "$(srcdir)"/$@.awk 'FS=[ :]+' "$(srcdir)"/$@.in >_$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
rsstart1::
@echo $@
- @$(AWK) -f $(srcdir)/$@.awk $(srcdir)/rsstart1.in >_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+ @$(AWK) -f "$(srcdir)"/$@.awk "$(srcdir)"/rsstart1.in >_$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
rsstart2::
@echo $@
- @$(AWK) -f $(srcdir)/$@.awk $(srcdir)/rsstart1.in >_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+ @$(AWK) -f "$(srcdir)"/$@.awk "$(srcdir)"/rsstart1.in >_$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
rsstart3::
@echo $@
- @head $(srcdir)/rsstart1.in | $(AWK) -f $(srcdir)/rsstart2.awk >_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+ @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 _$@
+ @"$(srcdir)"/$@.sh >_$@ || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
rtlen01::
@echo $@
- @$(srcdir)/$@.sh >_$@ || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+ @"$(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)/$@.ok _$@ && rm -f _$@
+ "$(srcdir)"/rtlen.sh >_$@ || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
nondec2::
@echo $@
- @$(AWK) --non-decimal-data -v a=0x1 -f $(srcdir)/$@.awk >_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+ @$(AWK) --non-decimal-data -v a=0x1 -f "$(srcdir)"/$@.awk >_$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
nofile::
@echo $@
@$(AWK) '{}' no/such/file >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
binmode1::
@echo $@
@$(AWK) -v BINMODE=3 'BEGIN { print BINMODE }' >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
subi18n::
@echo $@
- @GAWKLOCALE=en_US.UTF-8 ; $(AWK) -f $(srcdir)/$@.awk > _$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+ @GAWKLOCALE=en_US.UTF-8 ; $(AWK) -f "$(srcdir)"/$@.awk > _$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
concat4::
@echo $@
- @GAWKLOCALE=en_US.UTF-8 ; $(AWK) -f $(srcdir)/$@.awk $(srcdir)/$@.in > _$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+ @GAWKLOCALE=en_US.UTF-8 ; $(AWK) -f "$(srcdir)"/$@.awk "$(srcdir)"/$@.in > _$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
devfd1::
@echo $@
- @$(AWK) -f $(srcdir)/$@.awk 4< $(srcdir)/devfd.in1 5< $(srcdir)/devfd.in2 >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+ @$(AWK) -f "$(srcdir)"/$@.awk 4< "$(srcdir)"/devfd.in1 5< "$(srcdir)"/devfd.in2 >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
# The program text is the '1' which will print each record. How compact can you get?
devfd2::
@echo $@
- @$(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 _$@
+ @$(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 _$@
mixed1::
@echo $@
@$(AWK) -f /dev/null --source 'BEGIN {return junk}' >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
mtchi18n::
@echo $@
@GAWKLOCALE=ru_RU.UTF-8 ; export GAWKLOCALE ; \
- $(AWK) -f $(srcdir)/$@.awk $(srcdir)/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >> _$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+ $(AWK) -f "$(srcdir)"/$@.awk "$(srcdir)"/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >> _$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
reint2::
@echo $@
@[ -z "$$GAWKLOCALE" ] && GAWKLOCALE=en_US.UTF-8; \
- AWKPATH=$(srcdir) $(AWK) --re-interval -f $@.awk $(srcdir)/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+ AWKPATH="$(srcdir)" $(AWK) --re-interval -f $@.awk "$(srcdir)"/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
localenl::
@echo $@
- @$(srcdir)/$@.sh >_$@ 2>/dev/null
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+ @"$(srcdir)"/$@.sh >_$@ 2>/dev/null
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
mbprintf1::
@echo $@
@GAWKLOCALE=en_US.UTF-8 ; export GAWKLOCALE ; \
- $(AWK) -f $(srcdir)/$@.awk $(srcdir)/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >> _$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+ $(AWK) -f "$(srcdir)"/$@.awk "$(srcdir)"/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >> _$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
mbprintf2::
@echo $@
@GAWKLOCALE=ja_JP.UTF-8 ; export GAWKLOCALE ; \
- $(AWK) -f $(srcdir)/$@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >> _$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+ $(AWK) -f "$(srcdir)"/$@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >> _$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
mbprintf3::
@echo $@
@GAWKLOCALE=en_US.UTF-8 ; export GAWKLOCALE ; \
- $(AWK) -f $(srcdir)/$@.awk $(srcdir)/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >> _$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+ $(AWK) -f "$(srcdir)"/$@.awk "$(srcdir)"/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >> _$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
mbprintf4::
@echo $@
@GAWKLOCALE=en_US.UTF-8 ; export GAWKLOCALE ; \
- $(AWK) -f $(srcdir)/$@.awk $(srcdir)/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >> _$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+ $(AWK) -f "$(srcdir)"/$@.awk "$(srcdir)"/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >> _$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
mbfw1::
@echo $@
@GAWKLOCALE=en_US.UTF-8 ; export GAWKLOCALE ; \
- $(AWK) -f $(srcdir)/$@.awk $(srcdir)/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >> _$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+ $(AWK) -f "$(srcdir)"/$@.awk "$(srcdir)"/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >> _$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
gsubtst6::
@echo $@
- @GAWKLOCALE=C ; $(AWK) -f $(srcdir)/$@.awk > _$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+ @GAWKLOCALE=C ; $(AWK) -f "$(srcdir)"/$@.awk > _$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
mbstr1::
@echo $@
@[ -z "$$GAWKLOCALE" ] && GAWKLOCALE=en_US.UTF-8; \
- AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+ AWKPATH="$(srcdir)" $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
printfbad2: printfbad2.ok
@echo $@
- @$(AWK) --lint -f $(srcdir)/$@.awk $(srcdir)/$@.in 2>&1 | sed 's;\$(srcdir)/;;g' >_$@ || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+ @$(AWK) --lint -f "$(srcdir)"/$@.awk "$(srcdir)"/$@.in 2>&1 | sed 's;$(srcdir)/;;g' >_$@ || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
beginfile1::
@echo $@
- @AWKPATH=$(srcdir) $(AWK) -f $@.awk $(srcdir)/$@.awk . ./no/such/file Makefile >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+ @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)" $(abs_srcdir)/$@.sh $(abs_srcdir)/$@.in ) > _$@ 2>&1
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+ @-( cd "$(srcdir)" && LC_ALL=C AWK="$(abs_builddir)/$(AWKPROG)" $(abs_srcdir)/$@.sh $(abs_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: $$? >>_$@
+ @AWKPATH="$(srcdir)" $(AWK) --dump-variables 1 < "$(srcdir)"/$@.in >/dev/null 2>&1 || echo EXIT CODE: $$? >>_$@
@mv awkvars.out _$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
profile1:
@echo $@
- @$(AWK) --pretty-print=ap-$@.out -f $(srcdir)/xref.awk $(srcdir)/dtdgport.awk > _$@.out1
- @$(AWK) -f ap-$@.out $(srcdir)/dtdgport.awk > _$@.out2 ; rm ap-$@.out
+ @$(AWK) --pretty-print=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: $$? >>_$@ ; \
- cp $(srcdir)/dtdgport.awk > $@.ok ; }
+ cp "$(srcdir)"/dtdgport.awk > $@.ok ; }
profile2:
@echo $@
- @$(AWK) --profile=ap-$@.out -v sortcmd=sort -f $(srcdir)/xref.awk $(srcdir)/dtdgport.awk > /dev/null
+ @$(AWK) --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 _$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
profile3:
@echo $@
- @$(AWK) --profile=ap-$@.out -f $(srcdir)/$@.awk > /dev/null
+ @$(AWK) --profile=ap-$@.out -f "$(srcdir)"/$@.awk > /dev/null
@sed 1,2d < ap-$@.out > _$@; rm ap-$@.out
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
profile4:
@echo $@
- @GAWK_NO_PP_RUN=1 $(AWK) --profile=ap-$@.out -f $(srcdir)/$@.awk > /dev/null
+ @GAWK_NO_PP_RUN=1 $(AWK) --profile=ap-$@.out -f "$(srcdir)"/$@.awk > /dev/null
@sed 1,2d < ap-$@.out > _$@; rm ap-$@.out
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
profile5:
@echo $@
- @GAWK_NO_PP_RUN=1 $(AWK) --profile=ap-$@.out -f $(srcdir)/$@.awk > /dev/null
+ @GAWK_NO_PP_RUN=1 $(AWK) --profile=ap-$@.out -f "$(srcdir)"/$@.awk > /dev/null
@sed 1,2d < ap-$@.out > _$@; rm ap-$@.out
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
posix2008sub:
@echo $@
- @$(AWK) --posix -f $(srcdir)/$@.awk > _$@ 2>&1
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+ @$(AWK) --posix -f "$(srcdir)"/$@.awk > _$@ 2>&1
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
next:
@echo $@
- @-$(LOCALES) AWK="$(AWKPROG)" $(srcdir)/$@.sh > _$@ 2>&1
- @-LC_ALL=C $(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+ @-$(LOCALES) AWK="$(AWKPROG)" "$(srcdir)"/$@.sh > _$@ 2>&1
+ @-LC_ALL=C $(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
exit:
@echo $@
- @-AWK="$(AWKPROG)" $(srcdir)/$@.sh > _$@ 2>&1
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+ @-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 _$@
+ AWKPATH="$(srcdir)" $(AWK) -f $@.awk < "$(srcdir)"/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
mpfrieee:
@echo $@
- @$(AWK) -M -vPREC=double -f $(srcdir)/$@.awk > _$@ 2>&1
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+ @$(AWK) -M -vPREC=double -f "$(srcdir)"/$@.awk > _$@ 2>&1
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
mpfrexprange:
@echo $@
- @$(AWK) -M -vPREC=53 -f $(srcdir)/$@.awk > _$@ 2>&1
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+ @$(AWK) -M -vPREC=53 -f "$(srcdir)"/$@.awk > _$@ 2>&1
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
mpfrrnd:
@echo $@
- @$(AWK) -M -vPREC=53 -f $(srcdir)/$@.awk > _$@ 2>&1
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+ @$(AWK) -M -vPREC=53 -f "$(srcdir)"/$@.awk > _$@ 2>&1
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
+
+mpfrnegzero:
+ @echo $@
+ @$(AWK) -M -f "$(srcdir)"/$@.awk > _$@ 2>&1
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
mpfrnr:
@echo $@
- @$(AWK) -M -vPREC=113 -f $(srcdir)/$@.awk $(srcdir)/$@.in > _$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+ @$(AWK) -M -vPREC=113 -f "$(srcdir)"/$@.awk "$(srcdir)"/$@.in > _$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
mpfrsort:
@echo $@
- @$(AWK) -M -vPREC=53 -f $(srcdir)/$@.awk > _$@ 2>&1
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+ @$(AWK) -M -vPREC=53 -f "$(srcdir)"/$@.awk > _$@ 2>&1
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
mpfrbigint:
@echo $@
- @$(AWK) -M -f $(srcdir)/$@.awk > _$@ 2>&1
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+ @$(AWK) -M -f "$(srcdir)"/$@.awk > _$@ 2>&1
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
jarebug::
@echo $@
- @$(srcdir)/$@.sh "$(AWKPROG)" "$(srcdir)/$@.awk" "$(srcdir)/$@.in" "_$@"
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+ @"$(srcdir)"/$@.sh "$(AWKPROG)" "$(srcdir)"/$@.awk "$(srcdir)"/$@.in "_$@"
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
ordchr2::
@echo $@
- @$(AWK) -l ordchr 'BEGIN {print chr(ord("z"))}' >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+ @$(AWK) --load ordchr 'BEGIN {print chr(ord("z"))}' >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
# N.B. If the test fails, create readfile.ok so that "make diffout" will work
readfile::
@@ -1710,83 +1741,88 @@ readfile::
@$(AWK) -l readfile 'BEGIN {printf "%s", readfile("Makefile")}' >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
@-$(CMP) Makefile _$@ && rm -f _$@ || cp -p Makefile $@.ok
+readfile2::
+ @echo $@
+ @$(AWK) -f "$(srcdir)"/$@.awk "$(srcdir)"/$@.awk "$(srcdir)"/readdir.awk > _$@ || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
+
include2::
@echo $@
- @AWKPATH=$(srcdir) $(AWK) -i inclib 'BEGIN {print sandwich("a", "b", "c")}' >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+ @AWKPATH="$(srcdir)" $(AWK) --include inclib 'BEGIN {print sandwich("a", "b", "c")}' >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
incdupe::
@echo $@
- @AWKPATH=$(srcdir) $(AWK) --lint -i inclib -i inclib.awk 'BEGIN {print sandwich("a", "b", "c")}' >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+ @AWKPATH="$(srcdir)" $(AWK) --lint -i inclib -i inclib.awk 'BEGIN {print sandwich("a", "b", "c")}' >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
incdupe2::
@echo $@
- @AWKPATH=$(srcdir) $(AWK) --lint -f inclib -f inclib.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+ @AWKPATH="$(srcdir)" $(AWK) --lint -f inclib -f inclib.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
incdupe3::
@echo $@
- @AWKPATH=$(srcdir) $(AWK) --lint -f hello -f hello.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+ @AWKPATH="$(srcdir)" $(AWK) --lint -f hello -f hello.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
incdupe4::
@echo $@
- @AWKPATH=$(srcdir) $(AWK) --lint -f hello -i hello.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+ @AWKPATH="$(srcdir)" $(AWK) --lint -f hello -i hello.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
incdupe5::
@echo $@
- @AWKPATH=$(srcdir) $(AWK) --lint -i hello -f hello.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+ @AWKPATH="$(srcdir)" $(AWK) --lint -i hello -f hello.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
incdupe6::
@echo $@
- @AWKPATH=$(srcdir) $(AWK) --lint -i inchello -f hello.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+ @AWKPATH="$(srcdir)" $(AWK) --lint -i inchello -f hello.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
incdupe7::
@echo $@
- @AWKPATH=$(srcdir) $(AWK) --lint -f hello -i inchello >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+ @AWKPATH="$(srcdir)" $(AWK) --lint -f hello -i inchello >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
inplace1::
@echo $@
- @cp $(srcdir)/inplace.1.in _$@.1
- @cp $(srcdir)/inplace.2.in _$@.2
- @AWKPATH=$(srcdir)/../awklib/eg/lib $(AWK) -i inplace 'BEGIN {print "before"} {gsub(/foo/, "bar"); print} END {print "after"}' _$@.1 - _$@.2 < $(srcdir)/inplace.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
- @-$(CMP) $(srcdir)/$@.1.ok _$@.1 && rm -f _$@.1
- @-$(CMP) $(srcdir)/$@.2.ok _$@.2 && rm -f _$@.2
+ @cp "$(srcdir)"/inplace.1.in _$@.1
+ @cp "$(srcdir)"/inplace.2.in _$@.2
+ @AWKPATH="$(srcdir)"/../awklib/eg/lib $(AWK) -i inplace 'BEGIN {print "before"} {gsub(/foo/, "bar"); print} END {print "after"}' _$@.1 - _$@.2 < "$(srcdir)"/inplace.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
+ @-$(CMP) "$(srcdir)"/$@.1.ok _$@.1 && rm -f _$@.1
+ @-$(CMP) "$(srcdir)"/$@.2.ok _$@.2 && rm -f _$@.2
inplace2::
@echo $@
- @cp $(srcdir)/inplace.1.in _$@.1
- @cp $(srcdir)/inplace.2.in _$@.2
- @AWKPATH=$(srcdir)/../awklib/eg/lib $(AWK) -i inplace -v INPLACE_SUFFIX=.bak 'BEGIN {print "before"} {gsub(/foo/, "bar"); print} END {print "after"}' _$@.1 - _$@.2 < $(srcdir)/inplace.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
- @-$(CMP) $(srcdir)/$@.1.ok _$@.1 && rm -f _$@.1
- @-$(CMP) $(srcdir)/$@.1.bak.ok _$@.1.bak && rm -f _$@.1.bak
- @-$(CMP) $(srcdir)/$@.2.ok _$@.2 && rm -f _$@.2
- @-$(CMP) $(srcdir)/$@.2.bak.ok _$@.2.bak && rm -f _$@.2.bak
+ @cp "$(srcdir)"/inplace.1.in _$@.1
+ @cp "$(srcdir)"/inplace.2.in _$@.2
+ @AWKPATH="$(srcdir)"/../awklib/eg/lib $(AWK) -i inplace -v INPLACE_SUFFIX=.bak 'BEGIN {print "before"} {gsub(/foo/, "bar"); print} END {print "after"}' _$@.1 - _$@.2 < "$(srcdir)"/inplace.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
+ @-$(CMP) "$(srcdir)"/$@.1.ok _$@.1 && rm -f _$@.1
+ @-$(CMP) "$(srcdir)"/$@.1.bak.ok _$@.1.bak && rm -f _$@.1.bak
+ @-$(CMP) "$(srcdir)"/$@.2.ok _$@.2 && rm -f _$@.2
+ @-$(CMP) "$(srcdir)"/$@.2.bak.ok _$@.2.bak && rm -f _$@.2.bak
inplace3::
@echo $@
- @cp $(srcdir)/inplace.1.in _$@.1
- @cp $(srcdir)/inplace.2.in _$@.2
- @AWKPATH=$(srcdir)/../awklib/eg/lib $(AWK) -i inplace -v INPLACE_SUFFIX=.bak 'BEGIN {print "before"} {gsub(/foo/, "bar"); print} END {print "after"}' _$@.1 - _$@.2 < $(srcdir)/inplace.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @AWKPATH=$(srcdir)/../awklib/eg/lib $(AWK) -i inplace -v INPLACE_SUFFIX=.bak 'BEGIN {print "Before"} {gsub(/bar/, "foo"); print} END {print "After"}' _$@.1 - _$@.2 < $(srcdir)/inplace.in >>_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
- @-$(CMP) $(srcdir)/$@.1.ok _$@.1 && rm -f _$@.1
- @-$(CMP) $(srcdir)/$@.1.bak.ok _$@.1.bak && rm -f _$@.1.bak
- @-$(CMP) $(srcdir)/$@.2.ok _$@.2 && rm -f _$@.2
- @-$(CMP) $(srcdir)/$@.2.bak.ok _$@.2.bak && rm -f _$@.2.bak
+ @cp "$(srcdir)"/inplace.1.in _$@.1
+ @cp "$(srcdir)"/inplace.2.in _$@.2
+ @AWKPATH="$(srcdir)"/../awklib/eg/lib $(AWK) -i inplace -v INPLACE_SUFFIX=.bak 'BEGIN {print "before"} {gsub(/foo/, "bar"); print} END {print "after"}' _$@.1 - _$@.2 < "$(srcdir)"/inplace.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @AWKPATH="$(srcdir)"/../awklib/eg/lib $(AWK) -i inplace -v INPLACE_SUFFIX=.bak 'BEGIN {print "Before"} {gsub(/bar/, "foo"); print} END {print "After"}' _$@.1 - _$@.2 < "$(srcdir)"/inplace.in >>_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
+ @-$(CMP) "$(srcdir)"/$@.1.ok _$@.1 && rm -f _$@.1
+ @-$(CMP) "$(srcdir)"/$@.1.bak.ok _$@.1.bak && rm -f _$@.1.bak
+ @-$(CMP) "$(srcdir)"/$@.2.ok _$@.2 && rm -f _$@.2
+ @-$(CMP) "$(srcdir)"/$@.2.bak.ok _$@.2.bak && rm -f _$@.2.bak
testext::
@echo $@
- @$(AWK) '/^(@load|BEGIN)/,/^}/' $(top_srcdir)/extension/testext.c > testext.awk
+ @$(AWK) '/^(@load|BEGIN)/,/^}/' "$(top_srcdir)"/extension/testext.c > testext.awk
@$(AWK) -f testext.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@ testext.awk
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@ testext.awk
readdir:
@if [ "`uname`" = Linux ] && [ "`stat -f . 2>/dev/null | awk 'NR == 2 { print $$NF }'`" = nfs ]; then \
@@ -1794,74 +1830,104 @@ readdir:
echo If it does, try rerunning on an ext'[234]' filesystem. ; \
fi
@echo $@
- @$(AWK) -f $(srcdir)/readdir.awk $(top_srcdir) > _$@
- @ls -afli $(top_srcdir) | sed 1d | $(AWK) -f $(srcdir)/readdir0.awk -v extout=_$@ > $@.ok
- @-$(CMP) $@.ok _$@ && rm -f $@.ok _$@
+ @$(AWK) -f "$(srcdir)"/readdir.awk "$(top_srcdir)" > _$@
+ @ls -afi "$(top_srcdir)" > _dirlist
+ @ls -lna "$(top_srcdir)" | sed 1d > _longlist
+ @$(AWK) -f "$(srcdir)"/readdir0.awk -v extout=_$@ \
+ -v dirlist=_dirlist -v longlist=_longlist > $@.ok
+ @-$(CMP) $@.ok _$@ && rm -f $@.ok _$@ _dirlist _longlist
fts:
- @if [ "`uname`" = IRIX ]; then \
+ @case `uname` in \
+ IRIX) \
echo This test may fail on IRIX systems when run on an NFS filesystem.; \
- echo If it does, try rerunning on an xfs filesystem. ; \
- fi
+ echo If it does, try rerunning on an xfs filesystem. ;; \
+ CYGWIN*) \
+ echo This test may fail on CYGWIN systems when run on an NFS filesystem.; \
+ echo If it does, try rerunning on an ntfs filesystem. ;; \
+ esac
@echo $@
- @$(AWK) -f $(srcdir)/fts.awk
+ @$(AWK) -f "$(srcdir)"/fts.awk
@-$(CMP) $@.ok _$@ && rm -f $@.ok _$@
charasbytes:
@echo $@
@[ -z "$$GAWKLOCALE" ] && GAWKLOCALE=en_US.UTF-8; \
- AWKPATH=$(srcdir) $(AWK) -b -f $@.awk $(srcdir)/$@.in | \
- od -c -t x1 | sed -e 's/ */ /g' -e 's/ *$$//' >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
-
+ AWKPATH="$(srcdir)" $(AWK) -b -f $@.awk "$(srcdir)"/$@.in | \
+ od -c -t x1 | tr ' ' ' ' | sed -e 's/ */ /g' -e 's/ *$$//' >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
symtab6:
@echo $@
- @$(AWK) -d__$@ -f $(srcdir)/$@.awk
+ @$(AWK) -d__$@ -f "$(srcdir)"/$@.awk
@grep -v '^ENVIRON' __$@ | grep -v '^PROCINFO' > _$@ ; rm __$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
symtab8:
@echo $@
- @$(AWK) -d__$@ -f $(srcdir)/$@.awk $(srcdir)/$@.in >_$@
+ @$(AWK) -d__$@ -f "$(srcdir)"/$@.awk "$(srcdir)"/$@.in >_$@
@grep -v '^ENVIRON' __$@ | grep -v '^PROCINFO' | grep -v '^FILENAME' >> _$@ ; rm __$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
symtab9:
@echo $@
- @$(AWK) -f $(srcdir)/$@.awk >_$@
+ @$(AWK) -f "$(srcdir)"/$@.awk >_$@
@rm -f testit.txt
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
reginttrad:
@echo $@
- @$(AWK) --traditional -r -f $(srcdir)/$@.awk > _$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+ @$(AWK) --traditional -r -f "$(srcdir)"/$@.awk > _$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
colonwarn:
@echo $@
@for i in 1 2 3 ; \
- do $(AWK) -f $(srcdir)/$@.awk $$i < $(srcdir)/$@.in ; \
+ do $(AWK) -f "$(srcdir)"/$@.awk $$i < "$(srcdir)"/$@.in ; \
done > _$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
clos1way:
@echo $@
- @AWKPATH=$(srcdir) LC_ALL=C $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+ @AWKPATH="$(srcdir)" LC_ALL=C $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
dfamb1:
@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 _$@
+ AWKPATH="$(srcdir)" $(AWK) -f $@.awk "$(srcdir)"/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
+
+
+randtest::
+ @echo $@
+ @GAWK="$(AWKPROG)" "$(srcdir)"/randtest.sh >_$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
+
+backbigs1:
+ @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 _$@
+
+backsmalls1:
+ @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 _$@
+
+backsmalls2:
+ @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
$(srcdir)/Maketests: $(srcdir)/Makefile.am $(srcdir)/Gentests
files=`cd "$(srcdir)" && echo *.awk *.in`; \
- $(AWK) -f $(srcdir)/Gentests "$(srcdir)/Makefile.am" $$files > $(srcdir)/Maketests
+ $(AWK) -f "$(srcdir)"/Gentests "$(srcdir)"/Makefile.am $$files > "$(srcdir)"/Maketests
clean:
rm -fr _* core core.* fmtspcl.ok junk strftime.ok test1 test2 \
@@ -1873,19 +1939,21 @@ pass-fail:
@COUNT=`ls _* 2>/dev/null | wc -l` ; \
if test $$COUNT = 0 ; \
then echo ALL TESTS PASSED ; \
- else echo $$COUNT TESTS FAILED ; \
+ else echo $$COUNT TESTS FAILED ; exit 1; \
fi
# This target for my convenience to look at all the results
+# Don't use POSIX or bash-isms so that it'll work on !@#$%^&*() Solaris.
diffout:
for i in _* ; \
do \
if [ "$$i" != "_*" ]; then \
echo ============== $$i ============= ; \
- if [ -r $${i#_}.ok ]; then \
- diff -c $${i#_}.ok $$i ; \
+ base=`echo $$i | sed 's/^_//'` ; \
+ if [ -r $${base}.ok ]; then \
+ diff -c $${base}.ok $$i ; \
else \
- diff -c $(srcdir)/$${i#_}.ok $$i ; \
+ diff -c "$(srcdir)"/$${base}.ok $$i ; \
fi ; \
fi ; \
done | more
diff --git a/test/Makefile.in b/test/Makefile.in
index 147eeaf3..0831c597 100644
--- a/test/Makefile.in
+++ b/test/Makefile.in
@@ -1,7 +1,7 @@
-# Makefile.in generated by automake 1.13.1 from Makefile.am.
+# Makefile.in generated by automake 1.13.4 from Makefile.am.
# @configure_input@
-# Copyright (C) 1994-2012 Free Software Foundation, Inc.
+# Copyright (C) 1994-2013 Free Software Foundation, Inc.
# This Makefile.in is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
@@ -17,7 +17,7 @@
#
# test/Makefile.am --- automake input file for gawk
#
-# Copyright (C) 1988-2012 the Free Software Foundation, Inc.
+# Copyright (C) 1988-2014 the Free Software Foundation, Inc.
#
# This file is part of GAWK, the GNU implementation of the
# AWK Programming Language.
@@ -37,23 +37,51 @@
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA
#
VPATH = @srcdir@
-am__make_dryrun = \
- { \
- am__dry=no; \
+am__is_gnu_make = test -n '$(MAKEFILE_LIST)' && test -n '$(MAKELEVEL)'
+am__make_running_with_option = \
+ case $${target_option-} in \
+ ?) ;; \
+ *) echo "am__make_running_with_option: internal error: invalid" \
+ "target option '$${target_option-}' specified" >&2; \
+ exit 1;; \
+ esac; \
+ has_opt=no; \
+ sane_makeflags=$$MAKEFLAGS; \
+ if $(am__is_gnu_make); then \
+ sane_makeflags=$$MFLAGS; \
+ else \
case $$MAKEFLAGS in \
*\\[\ \ ]*) \
- echo 'am--echo: ; @echo "AM" OK' | $(MAKE) -f - 2>/dev/null \
- | grep '^AM OK$$' >/dev/null || am__dry=yes;; \
- *) \
- for am__flg in $$MAKEFLAGS; do \
- case $$am__flg in \
- *=*|--*) ;; \
- *n*) am__dry=yes; break;; \
- esac; \
- done;; \
+ bs=\\; \
+ sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \
+ | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \
+ esac; \
+ fi; \
+ skip_next=no; \
+ strip_trailopt () \
+ { \
+ flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \
+ }; \
+ for flg in $$sane_makeflags; do \
+ test $$skip_next = yes && { skip_next=no; continue; }; \
+ case $$flg in \
+ *=*|--*) continue;; \
+ -*I) strip_trailopt 'I'; skip_next=yes;; \
+ -*I?*) strip_trailopt 'I';; \
+ -*O) strip_trailopt 'O'; skip_next=yes;; \
+ -*O?*) strip_trailopt 'O';; \
+ -*l) strip_trailopt 'l'; skip_next=yes;; \
+ -*l?*) strip_trailopt 'l';; \
+ -[dEDm]) skip_next=yes;; \
+ -[JT]) skip_next=yes;; \
+ esac; \
+ case $$flg in \
+ *$$target_option*) has_opt=yes; break;; \
esac; \
- test $$am__dry = yes; \
- }
+ done; \
+ test $$has_opt = yes
+am__make_dryrun = (target_option=n; $(am__make_running_with_option))
+am__make_keepgoing = (target_option=k; $(am__make_running_with_option))
pkgdatadir = $(datadir)/@PACKAGE@
pkgincludedir = $(includedir)/@PACKAGE@
pkglibdir = $(libdir)/@PACKAGE@
@@ -330,7 +358,17 @@ EXTRA_DIST = \
backw.awk \
backw.in \
backw.ok \
+ backbigs1.awk \
+ backbigs1.in \
+ backbigs1.ok \
+ backsmalls1.awk \
+ backsmalls1.in \
+ backsmalls1.ok \
+ backsmalls2.awk \
+ backsmalls2.ok \
badargs.ok \
+ badassign1.awk \
+ badassign1.ok \
beginfile1.awk \
beginfile1.ok \
beginfile2.in \
@@ -730,6 +768,8 @@ EXTRA_DIST = \
mpfrexprange.ok \
mpfrieee.awk \
mpfrieee.ok \
+ mpfrnegzero.awk \
+ mpfrnegzero.ok \
mpfrnr.awk \
mpfrnr.in \
mpfrnr.ok \
@@ -758,6 +798,8 @@ EXTRA_DIST = \
nfldstr.awk \
nfldstr.in \
nfldstr.ok \
+ nfloop.awk \
+ nfloop.ok \
nfneg.awk \
nfneg.ok \
nfset.awk \
@@ -907,11 +949,15 @@ EXTRA_DIST = \
rand-mpfr.ok \
rand.awk \
rand.ok \
+ randtest.sh \
+ randtest.ok \
range1.awk \
range1.in \
range1.ok \
readdir.awk \
readdir0.awk \
+ readfile2.awk \
+ readfile2.ok \
rebt8b1.awk \
rebt8b1.ok \
rebt8b2.awk \
@@ -1012,6 +1058,9 @@ EXTRA_DIST = \
sortu.awk \
sortu.ok \
space.ok \
+ split_after_fpat.awk \
+ split_after_fpat.in \
+ split_after_fpat.ok \
splitarg4.awk \
splitarg4.in \
splitarg4.ok \
@@ -1145,7 +1194,7 @@ BASIC_TESTS = \
arrayref arrymem1 arryref2 arryref3 arryref4 arryref5 arynasty \
arynocls aryprm1 aryprm2 aryprm3 aryprm4 aryprm5 aryprm6 aryprm7 \
aryprm8 arysubnm asgext awkpath \
- back89 backgsub \
+ back89 backgsub badassign1 \
childin clobber closebad clsflnam compare compare2 concat1 concat2 \
concat3 concat4 convfmt \
datanonl defref delargv delarpm2 delarprm delfunc dfamb1 dfastress dynlj \
@@ -1160,14 +1209,14 @@ BASIC_TESTS = \
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 \
+ nasty nasty2 negexp negrange nested nfldstr nfloop nfneg nfset nlfldsep \
nlinstr nlstrina noeffect nofile nofmtch noloop1 noloop2 nonl \
noparms nors nulrsend numindex numsubstr \
octsub ofmt ofmta ofmtbig ofmtfidl ofmts ofs1 onlynl opasnidx opasnslf \
paramdup paramres paramtyp paramuninitglobal parse1 parsefld parseme \
pcntplus posix2008sub prdupval prec printf0 printf1 prmarscl prmreuse \
prt1eval prtoeval \
- rand range1 rebt8b1 redfilnm regeq regexprange regrange reindops \
+ rand randtest range1 rebt8b1 redfilnm regeq regexprange regrange reindops \
reparse resplit rri1 rs rsnul1nl rsnulbig rsnulbig2 rstest1 rstest2 \
rstest3 rstest4 rstest5 rswhite \
scalar sclforin sclifin sortempty splitargv splitarr splitdef \
@@ -1178,8 +1227,8 @@ BASIC_TESTS = \
zero2 zeroe0 zeroflag
UNIX_TESTS = \
- fflush getlnhd localenl pid pipeio1 pipeio2 poundbang rtlen rtlen01 \
- space strftlng
+ fflush getlnhd localenl pid pipeio1 pipeio2 poundbang \
+ rtlen rtlen01 space strftlng
GAWK_EXT_TESTS = \
aadelete1 aadelete2 aarray1 aasort aasorti argtest arraysort \
@@ -1197,21 +1246,25 @@ GAWK_EXT_TESTS = \
patsplit posix printfbad1 printfbad2 printfbad3 procinfs \
profile1 profile2 profile3 profile4 profile5 pty1 \
rebuf regx8bit reginttrad reint reint2 rsstart1 \
- rsstart2 rsstart3 rstest6 shadow sortfor sortu splitarg4 strftime \
+ rsstart2 rsstart3 rstest6 shadow sortfor sortu split_after_fpat \
+ splitarg4 strftime \
strtonum switch2 symtab1 symtab2 symtab3 symtab4 symtab5 symtab6 \
symtab7 symtab8 symtab9
EXTRA_TESTS = inftest regtest
INET_TESTS = inetdayu inetdayt inetechu inetecht
MACHINE_TESTS = double1 double2 fmtspcl intformat
-MPFR_TESTS = mpfrnr mpfrrnd mpfrieee mpfrexprange mpfrsort mpfrbigint
+MPFR_TESTS = mpfrnr mpfrnegzero mpfrrnd mpfrieee mpfrexprange \
+ mpfrsort mpfrbigint
+
LOCALE_CHARSET_TESTS = \
- asort asorti fmttest fnarydel fnparydl jarebug lc_num1 mbfw1 \
+ asort asorti backbigs1 backsmalls1 backsmalls2 \
+ fmttest fnarydel fnparydl jarebug lc_num1 mbfw1 \
mbprintf1 mbprintf2 mbprintf3 mbprintf4 rebt8b2 rtlenmb sort1 sprintfc
SHLIB_TESTS = \
fnmatch filefuncs fork fork2 fts functab4 inplace1 inplace2 inplace3 \
- ordchr ordchr2 readdir readfile revout revtwoway rwarray testext time
+ ordchr ordchr2 readdir readfile readfile2 revout revtwoway rwarray testext time
# List of the tests which should be run with --lint option:
@@ -1491,7 +1544,7 @@ msg::
@echo 'precision may lead to slightly different output in a few cases.'
printlang::
- @$(AWK) -f $(srcdir)/printlang.awk
+ @$(AWK) -f "$(srcdir)"/printlang.awk
basic-msg-start:
@echo "======== Starting basic tests ========"
@@ -1519,6 +1572,10 @@ machine-msg-end:
charset-msg-start:
@echo "======== Starting tests that can vary based on character set or locale support ========"
+ @echo "************************************************"
+ @echo "** Some or all of these tests may fail if you **"
+ @echo "** have inadequate or missing locale support **"
+ @echo "************************************************"
charset-msg-end:
@echo "======== Done with tests that can vary based on character set or locale support ========"
@@ -1538,8 +1595,8 @@ mpfr-msg-end:
lc_num1:
@echo $@
@[ -z "$$GAWKLOCALE" ] && GAWKLOCALE=en_US.UTF-8; \
- AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+ AWKPATH="$(srcdir)" $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
# This test is a PITA because increasingly, /tmp is getting
# mounted noexec. So, we'll test it locally. Sigh.
@@ -1548,189 +1605,187 @@ lc_num1:
# so this can still fail
poundbang::
@echo $@
- @sed "s;/tmp/gawk;`pwd`/$(AWKPROG);" < $(srcdir)/poundbang.awk > ./_pbd.awk
+ @sed "s;/tmp/gawk;`pwd`/$(AWKPROG);" < "$(srcdir)"/poundbang.awk > ./_pbd.awk
@chmod +x ./_pbd.awk
- @if ./_pbd.awk $(srcdir)/poundbang.awk > _`basename $@` ; \
+ @if ./_pbd.awk "$(srcdir)"/poundbang.awk > _`basename $@` ; \
then : ; \
else \
- sed "s;/tmp/gawk;../$(AWKPROG);" < $(srcdir)/poundbang.awk > ./_pbd.awk ; \
+ sed "s;/tmp/gawk;../$(AWKPROG);" < "$(srcdir)"/poundbang.awk > ./_pbd.awk ; \
chmod +x ./_pbd.awk ; \
- LC_ALL=$${GAWKLOCALE:-C} LANG=$${GAWKLOCALE:-C} ./_pbd.awk $(srcdir)/poundbang.awk > _`basename $@`; \
+ LC_ALL=$${GAWKLOCALE:-C} LANG=$${GAWKLOCALE:-C} ./_pbd.awk "$(srcdir)"/poundbang.awk > _`basename $@`; \
fi
- @-$(CMP) $(srcdir)/poundbang.awk _`basename $@` && rm -f _`basename $@` _pbd.awk
+ @-$(CMP) "$(srcdir)"/poundbang.awk _`basename $@` && rm -f _`basename $@` _pbd.awk
messages::
@echo $@
- @$(AWK) -f $(srcdir)/messages.awk >_out2 2>_out3
- @-$(CMP) $(srcdir)/out1.ok _out1 && $(CMP) $(srcdir)/out2.ok _out2 && $(CMP) $(srcdir)/out3.ok _out3 && rm -f _out1 _out2 _out3
+ @$(AWK) -f "$(srcdir)"/messages.awk >_out2 2>_out3
+ @-$(CMP) "$(srcdir)"/out1.ok _out1 && $(CMP) "$(srcdir)"/out2.ok _out2 && $(CMP) "$(srcdir)"/out3.ok _out3 && rm -f _out1 _out2 _out3
argarray::
@echo $@
- @case $(srcdir) in \
+ @case "$(srcdir)" in \
.) : ;; \
- *) cp $(srcdir)/argarray.in . ;; \
+ *) cp "$(srcdir)"/argarray.in . ;; \
esac
- @TEST=test echo just a test | $(AWK) -f $(srcdir)/argarray.awk ./argarray.in - >_$@
- @case $(srcdir) in \
+ @TEST=test echo just a test | $(AWK) -f "$(srcdir)"/argarray.awk ./argarray.in - >_$@
+ @case "$(srcdir)" in \
.) : ;; \
*) rm -f ./argarray.in ;; \
esac
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
regtest::
@echo 'Some of the output from regtest is very system specific, do not'
@echo 'be distressed if your output differs from that distributed.'
@echo 'Manual inspection is called for.'
- AWK=$(AWKPROG) $(srcdir)/regtest.sh
+ AWK=$(AWKPROG) "$(srcdir)"/regtest.sh
manyfiles::
@echo manyfiles
@rm -rf junk
@mkdir junk
@$(AWK) 'BEGIN { for (i = 1; i <= 1030; i++) print i, i}' >_$@
- @$(AWK) -f $(srcdir)/manyfiles.awk _$@ _$@
+ @$(AWK) -f "$(srcdir)"/manyfiles.awk _$@ _$@
@wc -l junk/* | $(AWK) '$$1 != 2' | wc -l | sed "s/ *//g" > _$@
@rm -rf junk
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
compare::
@echo $@
- @$(AWK) -f $(srcdir)/compare.awk 0 1 $(srcdir)/compare.in >_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+ @$(AWK) -f "$(srcdir)"/compare.awk 0 1 "$(srcdir)"/compare.in >_$@
+ @-$(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)/$@.ok _$@ && rm -f _$@
+ @$(AWK) -f "$(srcdir)"/inftest.awk | sed "s/inf/Inf/g" >_$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
getline2::
@echo $@
- @$(AWK) -f $(srcdir)/getline2.awk $(srcdir)/getline2.awk $(srcdir)/getline2.awk >_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+ @$(AWK) -f "$(srcdir)"/getline2.awk "$(srcdir)"/getline2.awk "$(srcdir)"/getline2.awk >_$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
awkpath::
@echo $@
@AWKPATH="$(srcdir)$(PATH_SEPARATOR)$(srcdir)/lib" $(AWK) -f awkpath.awk >_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
argtest::
@echo $@
- @$(AWK) -f $(srcdir)/argtest.awk -x -y abc >_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+ @$(AWK) -f "$(srcdir)"/argtest.awk -x -y abc >_$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
badargs::
@echo $@
@-$(AWK) -f 2>&1 | grep -v patchlevel >_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
nonl::
@echo $@
- @-AWKPATH=$(srcdir) $(AWK) --lint -f nonl.awk /dev/null >_$@ 2>&1
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+ @-AWKPATH="$(srcdir)" $(AWK) --lint -f nonl.awk /dev/null >_$@ 2>&1
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
strftime::
- @echo This test could fail on slow machines or on a minute boundary,
- @echo so if it does, double check the actual results:
@echo $@
@GAWKLOCALE=C; export GAWKLOCALE; \
TZ=GMT0; export TZ; \
- (LC_ALL=C date) | $(AWK) -v OUTPUT=_$@ -f $(srcdir)/strftime.awk
+ $(AWK) -v OUTPUT=_$@ -f "$(srcdir)"/strftime.awk
@-$(CMP) strftime.ok _$@ && rm -f _$@ strftime.ok || exit 0
litoct::
@echo $@
- @echo ab | $(AWK) --traditional -f $(srcdir)/litoct.awk >_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+ @echo ab | $(AWK) --traditional -f "$(srcdir)"/litoct.awk >_$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
devfd::
@echo $@
- @$(AWK) 1 /dev/fd/4 /dev/fd/5 4<$(srcdir)/devfd.in4 5<$(srcdir)/devfd.in5 >_$@ 2>&1 || echo EXIT CODE: $$? >> _$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+ @$(AWK) 1 /dev/fd/4 /dev/fd/5 4<"$(srcdir)"/devfd.in4 5<"$(srcdir)"/devfd.in5 >_$@ 2>&1 || echo EXIT CODE: $$? >> _$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
fflush::
@echo $@
- @$(srcdir)/fflush.sh >_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+ @"$(srcdir)"/fflush.sh >_$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
tweakfld::
@echo $@
- @$(AWK) -f $(srcdir)/tweakfld.awk $(srcdir)/tweakfld.in >_$@
+ @$(AWK) -f "$(srcdir)"/tweakfld.awk "$(srcdir)"/tweakfld.in >_$@
@rm -f errors.cleanup
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
mmap8k::
@echo $@
- @$(AWK) '{ print }' $(srcdir)/mmap8k.in >_$@
- @-$(CMP) $(srcdir)/mmap8k.in _$@ && rm -f _$@ || cp $(srcdir)/$@.in $@.ok
+ @$(AWK) '{ print }' "$(srcdir)"/mmap8k.in >_$@
+ @-$(CMP) "$(srcdir)"/mmap8k.in _$@ && rm -f _$@ || cp "$(srcdir)"/$@.in $@.ok
tradanch::
@echo $@
- @$(AWK) --traditional -f $(srcdir)/tradanch.awk $(srcdir)/tradanch.in >_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+ @$(AWK) --traditional -f "$(srcdir)"/tradanch.awk "$(srcdir)"/tradanch.in >_$@
+ @-$(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.
pid::
@echo pid
- @AWKPATH=$(srcdir) AWK=$(AWKPROG) $(SHELL) $(srcdir)/pid.sh $$$$ > _`basename $@` ; :
- @-$(CMP) $(srcdir)/pid.ok _`basename $@` && rm -f _`basename $@`
+ @AWKPATH="$(srcdir)" AWK=$(AWKPROG) $(SHELL) "$(srcdir)"/pid.sh $$$$ > _`basename $@` ; :
+ @-$(CMP) "$(srcdir)"/pid.ok _`basename $@` && rm -f _`basename $@`
strftlng::
@echo $@
- @TZ=UTC; export TZ; $(AWK) -f $(srcdir)/strftlng.awk >_$@
- @if $(CMP) $(srcdir)/strftlng.ok _$@ >/dev/null 2>&1 ; then : ; else \
- TZ=UTC0; export TZ; $(AWK) -f $(srcdir)/strftlng.awk >_$@ ; \
+ @TZ=UTC; export TZ; $(AWK) -f "$(srcdir)"/strftlng.awk >_$@
+ @if $(CMP) "$(srcdir)"/strftlng.ok _$@ >/dev/null 2>&1 ; then : ; else \
+ TZ=UTC0; export TZ; $(AWK) -f "$(srcdir)"/strftlng.awk >_$@ ; \
fi
- @-$(CMP) $(srcdir)/$@.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)/$@.ok _$@ && rm -f _$@
+ @echo A B C D E | tr -d '\12\15' | $(AWK) '{ print $$NF }' - "$(srcdir)"/nors.in > _$@
+ @-$(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
+ @$(AWK) -v "sd=$(srcdir)" 'BEGIN {pnan = sprintf("%g",sqrt(-1)); nnan = sprintf("%g",-sqrt(-1)); pinf = sprintf("%g",-log(0)); ninf = sprintf("%g",log(0))} {sub(/positive_nan/,pnan); sub(/negative_nan/,nnan); sub(/positive_infinity/,pinf); sub(/negative_infinity/,ninf); sub(/fmtspcl/,(sd"/fmtspcl")); print}' < "$(srcdir)"/fmtspcl.tok > $@ 2>/dev/null
fmtspcl: fmtspcl.ok
@echo $@
- @$(AWK) $(AWKFLAGS) -f $(srcdir)/fmtspcl.awk --lint >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @$(AWK) $(AWKFLAGS) -f "$(srcdir)"/fmtspcl.awk --lint >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
@-if test -z "$$AWKFLAGS" ; then $(CMP) $@.ok _$@ && rm -f _$@ ; else \
- $(CMP) $(srcdir)/$@-mpfr.ok _$@ && rm -f _$@ ; \
+ $(CMP) "$(srcdir)"/$@-mpfr.ok _$@ && rm -f _$@ ; \
fi
reint::
@echo $@
- @$(AWK) --re-interval -f $(srcdir)/reint.awk $(srcdir)/reint.in >_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+ @$(AWK) --re-interval -f "$(srcdir)"/reint.awk "$(srcdir)"/reint.in >_$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
pipeio1::
@echo $@
- @$(AWK) -f $(srcdir)/pipeio1.awk >_$@
+ @$(AWK) -f "$(srcdir)"/pipeio1.awk >_$@
@rm -f test1 test2
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
pipeio2::
@echo $@
- @$(AWK) -v SRCDIR=$(srcdir) -f $(srcdir)/pipeio2.awk >_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+ @$(AWK) -v SRCDIR="$(srcdir)" -f "$(srcdir)"/pipeio2.awk >_$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
clobber::
@echo $@
- @$(AWK) -f $(srcdir)/clobber.awk >_$@
- @-$(CMP) $(srcdir)/clobber.ok seq && $(CMP) $(srcdir)/clobber.ok _$@ && rm -f _$@
+ @$(AWK) -f "$(srcdir)"/clobber.awk >_$@
+ @-$(CMP) "$(srcdir)"/clobber.ok seq && $(CMP) "$(srcdir)"/clobber.ok _$@ && rm -f _$@
@rm -f seq
arynocls::
@echo $@
- @-AWKPATH=$(srcdir) $(AWK) -v INPUT=$(srcdir)/arynocls.in -f arynocls.awk >_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+ @-AWKPATH="$(srcdir)" $(AWK) -v INPUT="$(srcdir)"/arynocls.in -f arynocls.awk >_$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
getlnbuf::
@echo $@
- @-AWKPATH=$(srcdir) $(AWK) -f getlnbuf.awk $(srcdir)/getlnbuf.in > _$@
- @-AWKPATH=$(srcdir) $(AWK) -f gtlnbufv.awk $(srcdir)/getlnbuf.in > _2$@
- @-$(CMP) $(srcdir)/getlnbuf.ok _$@ && $(CMP) $(srcdir)/getlnbuf.ok _2$@ && rm -f _$@ _2$@
+ @-AWKPATH="$(srcdir)" $(AWK) -f getlnbuf.awk "$(srcdir)"/getlnbuf.in > _$@
+ @-AWKPATH="$(srcdir)" $(AWK) -f gtlnbufv.awk "$(srcdir)"/getlnbuf.in > _2$@
+ @-$(CMP) "$(srcdir)"/getlnbuf.ok _$@ && $(CMP) "$(srcdir)"/getlnbuf.ok _2$@ && rm -f _$@ _2$@
inetmesg::
@echo These tests only work if your system supports the services
@@ -1757,28 +1812,28 @@ inetdayt::
redfilnm::
@echo $@
- @$(AWK) -f $(srcdir)/redfilnm.awk srcdir=$(srcdir) $(srcdir)/redfilnm.in >_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+ @$(AWK) -f "$(srcdir)"/redfilnm.awk srcdir="$(srcdir)" "$(srcdir)"/redfilnm.in >_$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
leaddig::
@echo $@
- @$(AWK) -v x=2E -f $(srcdir)/leaddig.awk >_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+ @$(AWK) -v x=2E -f "$(srcdir)"/leaddig.awk >_$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
gsubtst3::
@echo $@
- @$(AWK) --re-interval -f $(srcdir)/$@.awk $(srcdir)/$@.in >_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+ @$(AWK) --re-interval -f "$(srcdir)"/$@.awk "$(srcdir)"/$@.in >_$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
space::
@echo $@
- @$(AWK) -f ' ' $(srcdir)/space.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+ @$(AWK) -f ' ' "$(srcdir)"/space.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
printf0::
@echo $@
- @$(AWK) --posix -f $(srcdir)/$@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+ @$(AWK) --posix -f "$(srcdir)"/$@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
rsnulbig::
@echo $@
@@ -1786,7 +1841,7 @@ rsnulbig::
@$(AWK) 'BEGIN { for (i = 1; i <= 128*64+1; i++) print "abcdefgh123456\n" }' 2>&1 | \
$(AWK) 'BEGIN { RS = ""; ORS = "\n\n" }; { print }' 2>&1 | \
$(AWK) '/^[^a]/; END{ print NR }' >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
rsnulbig2::
@echo $@
@@ -1794,310 +1849,315 @@ rsnulbig2::
for (i = 1; i <= 128; i++) print n; print "abc\n" }' 2>&1 | \
$(AWK) 'BEGIN { RS = ""; ORS = "\n\n" };{ print }' 2>&1 | \
$(AWK) '/^[^a]/; END { print NR }' >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
wideidx::
@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 _$@
+ AWKPATH="$(srcdir)" $(AWK) -f $@.awk < "$(srcdir)"/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
wideidx2::
@echo $@
@[ -z "$$GAWKLOCALE" ] && GAWKLOCALE=en_US.UTF-8; \
- AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+ AWKPATH="$(srcdir)" $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
widesub::
@echo $@
@[ -z "$$GAWKLOCALE" ] && GAWKLOCALE=en_US.UTF-8; \
- AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+ AWKPATH="$(srcdir)" $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
widesub2::
@echo $@
@[ -z "$$GAWKLOCALE" ] && GAWKLOCALE=en_US.UTF-8; \
- AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+ AWKPATH="$(srcdir)" $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
widesub3::
@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 _$@
+ AWKPATH="$(srcdir)" $(AWK) -f $@.awk < "$(srcdir)"/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
widesub4::
@echo $@
@[ -z "$$GAWKLOCALE" ] && GAWKLOCALE=en_US.UTF-8; \
- AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+ AWKPATH="$(srcdir)" $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
ignrcas2::
@echo $@
- @GAWKLOCALE=en_US ; export GAWKLOCALE ; \
- $(AWK) -f $(srcdir)/$@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >> _$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+ @GAWKLOCALE=en_US.UTF-8 ; export GAWKLOCALE ; \
+ $(AWK) -f "$(srcdir)"/$@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >> _$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
subamp::
@echo $@
@GAWKLOCALE=en_US.UTF-8 ; export GAWKLOCALE ; \
- $(AWK) -f $(srcdir)/$@.awk $(srcdir)/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >> _$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+ $(AWK) -f "$(srcdir)"/$@.awk "$(srcdir)"/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >> _$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
# This test makes sure gawk exits with a zero code.
# Thus, unconditionally generate the exit code.
exitval1::
@echo $@
- @$(AWK) -f $(srcdir)/exitval1.awk >_$@ 2>&1; echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+ @$(AWK) -f "$(srcdir)"/exitval1.awk >_$@ 2>&1; echo EXIT CODE: $$? >>_$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
fsspcoln::
@echo $@
- @$(AWK) -f $(srcdir)/$@.awk 'FS=[ :]+' $(srcdir)/$@.in >_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+ @$(AWK) -f "$(srcdir)"/$@.awk 'FS=[ :]+' "$(srcdir)"/$@.in >_$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
rsstart1::
@echo $@
- @$(AWK) -f $(srcdir)/$@.awk $(srcdir)/rsstart1.in >_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+ @$(AWK) -f "$(srcdir)"/$@.awk "$(srcdir)"/rsstart1.in >_$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
rsstart2::
@echo $@
- @$(AWK) -f $(srcdir)/$@.awk $(srcdir)/rsstart1.in >_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+ @$(AWK) -f "$(srcdir)"/$@.awk "$(srcdir)"/rsstart1.in >_$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
rsstart3::
@echo $@
- @head $(srcdir)/rsstart1.in | $(AWK) -f $(srcdir)/rsstart2.awk >_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+ @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 _$@
+ @"$(srcdir)"/$@.sh >_$@ || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
rtlen01::
@echo $@
- @$(srcdir)/$@.sh >_$@ || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+ @"$(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)/$@.ok _$@ && rm -f _$@
+ "$(srcdir)"/rtlen.sh >_$@ || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
nondec2::
@echo $@
- @$(AWK) --non-decimal-data -v a=0x1 -f $(srcdir)/$@.awk >_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+ @$(AWK) --non-decimal-data -v a=0x1 -f "$(srcdir)"/$@.awk >_$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
nofile::
@echo $@
@$(AWK) '{}' no/such/file >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
binmode1::
@echo $@
@$(AWK) -v BINMODE=3 'BEGIN { print BINMODE }' >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
subi18n::
@echo $@
- @GAWKLOCALE=en_US.UTF-8 ; $(AWK) -f $(srcdir)/$@.awk > _$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+ @GAWKLOCALE=en_US.UTF-8 ; $(AWK) -f "$(srcdir)"/$@.awk > _$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
concat4::
@echo $@
- @GAWKLOCALE=en_US.UTF-8 ; $(AWK) -f $(srcdir)/$@.awk $(srcdir)/$@.in > _$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+ @GAWKLOCALE=en_US.UTF-8 ; $(AWK) -f "$(srcdir)"/$@.awk "$(srcdir)"/$@.in > _$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
devfd1::
@echo $@
- @$(AWK) -f $(srcdir)/$@.awk 4< $(srcdir)/devfd.in1 5< $(srcdir)/devfd.in2 >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+ @$(AWK) -f "$(srcdir)"/$@.awk 4< "$(srcdir)"/devfd.in1 5< "$(srcdir)"/devfd.in2 >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
# The program text is the '1' which will print each record. How compact can you get?
devfd2::
@echo $@
- @$(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 _$@
+ @$(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 _$@
mixed1::
@echo $@
@$(AWK) -f /dev/null --source 'BEGIN {return junk}' >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
mtchi18n::
@echo $@
@GAWKLOCALE=ru_RU.UTF-8 ; export GAWKLOCALE ; \
- $(AWK) -f $(srcdir)/$@.awk $(srcdir)/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >> _$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+ $(AWK) -f "$(srcdir)"/$@.awk "$(srcdir)"/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >> _$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
reint2::
@echo $@
@[ -z "$$GAWKLOCALE" ] && GAWKLOCALE=en_US.UTF-8; \
- AWKPATH=$(srcdir) $(AWK) --re-interval -f $@.awk $(srcdir)/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+ AWKPATH="$(srcdir)" $(AWK) --re-interval -f $@.awk "$(srcdir)"/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
localenl::
@echo $@
- @$(srcdir)/$@.sh >_$@ 2>/dev/null
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+ @"$(srcdir)"/$@.sh >_$@ 2>/dev/null
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
mbprintf1::
@echo $@
@GAWKLOCALE=en_US.UTF-8 ; export GAWKLOCALE ; \
- $(AWK) -f $(srcdir)/$@.awk $(srcdir)/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >> _$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+ $(AWK) -f "$(srcdir)"/$@.awk "$(srcdir)"/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >> _$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
mbprintf2::
@echo $@
@GAWKLOCALE=ja_JP.UTF-8 ; export GAWKLOCALE ; \
- $(AWK) -f $(srcdir)/$@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >> _$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+ $(AWK) -f "$(srcdir)"/$@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >> _$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
mbprintf3::
@echo $@
@GAWKLOCALE=en_US.UTF-8 ; export GAWKLOCALE ; \
- $(AWK) -f $(srcdir)/$@.awk $(srcdir)/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >> _$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+ $(AWK) -f "$(srcdir)"/$@.awk "$(srcdir)"/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >> _$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
mbprintf4::
@echo $@
@GAWKLOCALE=en_US.UTF-8 ; export GAWKLOCALE ; \
- $(AWK) -f $(srcdir)/$@.awk $(srcdir)/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >> _$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+ $(AWK) -f "$(srcdir)"/$@.awk "$(srcdir)"/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >> _$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
mbfw1::
@echo $@
@GAWKLOCALE=en_US.UTF-8 ; export GAWKLOCALE ; \
- $(AWK) -f $(srcdir)/$@.awk $(srcdir)/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >> _$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+ $(AWK) -f "$(srcdir)"/$@.awk "$(srcdir)"/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >> _$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
gsubtst6::
@echo $@
- @GAWKLOCALE=C ; $(AWK) -f $(srcdir)/$@.awk > _$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+ @GAWKLOCALE=C ; $(AWK) -f "$(srcdir)"/$@.awk > _$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
mbstr1::
@echo $@
@[ -z "$$GAWKLOCALE" ] && GAWKLOCALE=en_US.UTF-8; \
- AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+ AWKPATH="$(srcdir)" $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
printfbad2: printfbad2.ok
@echo $@
- @$(AWK) --lint -f $(srcdir)/$@.awk $(srcdir)/$@.in 2>&1 | sed 's;\$(srcdir)/;;g' >_$@ || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+ @$(AWK) --lint -f "$(srcdir)"/$@.awk "$(srcdir)"/$@.in 2>&1 | sed 's;$(srcdir)/;;g' >_$@ || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
beginfile1::
@echo $@
- @AWKPATH=$(srcdir) $(AWK) -f $@.awk $(srcdir)/$@.awk . ./no/such/file Makefile >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+ @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)" $(abs_srcdir)/$@.sh $(abs_srcdir)/$@.in ) > _$@ 2>&1
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+ @-( cd "$(srcdir)" && LC_ALL=C AWK="$(abs_builddir)/$(AWKPROG)" $(abs_srcdir)/$@.sh $(abs_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: $$? >>_$@
+ @AWKPATH="$(srcdir)" $(AWK) --dump-variables 1 < "$(srcdir)"/$@.in >/dev/null 2>&1 || echo EXIT CODE: $$? >>_$@
@mv awkvars.out _$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
profile1:
@echo $@
- @$(AWK) --pretty-print=ap-$@.out -f $(srcdir)/xref.awk $(srcdir)/dtdgport.awk > _$@.out1
- @$(AWK) -f ap-$@.out $(srcdir)/dtdgport.awk > _$@.out2 ; rm ap-$@.out
+ @$(AWK) --pretty-print=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: $$? >>_$@ ; \
- cp $(srcdir)/dtdgport.awk > $@.ok ; }
+ cp "$(srcdir)"/dtdgport.awk > $@.ok ; }
profile2:
@echo $@
- @$(AWK) --profile=ap-$@.out -v sortcmd=sort -f $(srcdir)/xref.awk $(srcdir)/dtdgport.awk > /dev/null
+ @$(AWK) --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 _$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
profile3:
@echo $@
- @$(AWK) --profile=ap-$@.out -f $(srcdir)/$@.awk > /dev/null
+ @$(AWK) --profile=ap-$@.out -f "$(srcdir)"/$@.awk > /dev/null
@sed 1,2d < ap-$@.out > _$@; rm ap-$@.out
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
profile4:
@echo $@
- @GAWK_NO_PP_RUN=1 $(AWK) --profile=ap-$@.out -f $(srcdir)/$@.awk > /dev/null
+ @GAWK_NO_PP_RUN=1 $(AWK) --profile=ap-$@.out -f "$(srcdir)"/$@.awk > /dev/null
@sed 1,2d < ap-$@.out > _$@; rm ap-$@.out
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
profile5:
@echo $@
- @GAWK_NO_PP_RUN=1 $(AWK) --profile=ap-$@.out -f $(srcdir)/$@.awk > /dev/null
+ @GAWK_NO_PP_RUN=1 $(AWK) --profile=ap-$@.out -f "$(srcdir)"/$@.awk > /dev/null
@sed 1,2d < ap-$@.out > _$@; rm ap-$@.out
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
posix2008sub:
@echo $@
- @$(AWK) --posix -f $(srcdir)/$@.awk > _$@ 2>&1
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+ @$(AWK) --posix -f "$(srcdir)"/$@.awk > _$@ 2>&1
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
next:
@echo $@
- @-$(LOCALES) AWK="$(AWKPROG)" $(srcdir)/$@.sh > _$@ 2>&1
- @-LC_ALL=C $(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+ @-$(LOCALES) AWK="$(AWKPROG)" "$(srcdir)"/$@.sh > _$@ 2>&1
+ @-LC_ALL=C $(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
exit:
@echo $@
- @-AWK="$(AWKPROG)" $(srcdir)/$@.sh > _$@ 2>&1
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+ @-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 _$@
+ AWKPATH="$(srcdir)" $(AWK) -f $@.awk < "$(srcdir)"/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
mpfrieee:
@echo $@
- @$(AWK) -M -vPREC=double -f $(srcdir)/$@.awk > _$@ 2>&1
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+ @$(AWK) -M -vPREC=double -f "$(srcdir)"/$@.awk > _$@ 2>&1
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
mpfrexprange:
@echo $@
- @$(AWK) -M -vPREC=53 -f $(srcdir)/$@.awk > _$@ 2>&1
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+ @$(AWK) -M -vPREC=53 -f "$(srcdir)"/$@.awk > _$@ 2>&1
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
mpfrrnd:
@echo $@
- @$(AWK) -M -vPREC=53 -f $(srcdir)/$@.awk > _$@ 2>&1
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+ @$(AWK) -M -vPREC=53 -f "$(srcdir)"/$@.awk > _$@ 2>&1
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
+
+mpfrnegzero:
+ @echo $@
+ @$(AWK) -M -f "$(srcdir)"/$@.awk > _$@ 2>&1
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
mpfrnr:
@echo $@
- @$(AWK) -M -vPREC=113 -f $(srcdir)/$@.awk $(srcdir)/$@.in > _$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+ @$(AWK) -M -vPREC=113 -f "$(srcdir)"/$@.awk "$(srcdir)"/$@.in > _$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
mpfrsort:
@echo $@
- @$(AWK) -M -vPREC=53 -f $(srcdir)/$@.awk > _$@ 2>&1
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+ @$(AWK) -M -vPREC=53 -f "$(srcdir)"/$@.awk > _$@ 2>&1
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
mpfrbigint:
@echo $@
- @$(AWK) -M -f $(srcdir)/$@.awk > _$@ 2>&1
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+ @$(AWK) -M -f "$(srcdir)"/$@.awk > _$@ 2>&1
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
jarebug::
@echo $@
- @$(srcdir)/$@.sh "$(AWKPROG)" "$(srcdir)/$@.awk" "$(srcdir)/$@.in" "_$@"
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+ @"$(srcdir)"/$@.sh "$(AWKPROG)" "$(srcdir)"/$@.awk "$(srcdir)"/$@.in "_$@"
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
ordchr2::
@echo $@
- @$(AWK) -l ordchr 'BEGIN {print chr(ord("z"))}' >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+ @$(AWK) --load ordchr 'BEGIN {print chr(ord("z"))}' >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
# N.B. If the test fails, create readfile.ok so that "make diffout" will work
readfile::
@@ -2105,83 +2165,88 @@ readfile::
@$(AWK) -l readfile 'BEGIN {printf "%s", readfile("Makefile")}' >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
@-$(CMP) Makefile _$@ && rm -f _$@ || cp -p Makefile $@.ok
+readfile2::
+ @echo $@
+ @$(AWK) -f "$(srcdir)"/$@.awk "$(srcdir)"/$@.awk "$(srcdir)"/readdir.awk > _$@ || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
+
include2::
@echo $@
- @AWKPATH=$(srcdir) $(AWK) -i inclib 'BEGIN {print sandwich("a", "b", "c")}' >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+ @AWKPATH="$(srcdir)" $(AWK) --include inclib 'BEGIN {print sandwich("a", "b", "c")}' >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
incdupe::
@echo $@
- @AWKPATH=$(srcdir) $(AWK) --lint -i inclib -i inclib.awk 'BEGIN {print sandwich("a", "b", "c")}' >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+ @AWKPATH="$(srcdir)" $(AWK) --lint -i inclib -i inclib.awk 'BEGIN {print sandwich("a", "b", "c")}' >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
incdupe2::
@echo $@
- @AWKPATH=$(srcdir) $(AWK) --lint -f inclib -f inclib.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+ @AWKPATH="$(srcdir)" $(AWK) --lint -f inclib -f inclib.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
incdupe3::
@echo $@
- @AWKPATH=$(srcdir) $(AWK) --lint -f hello -f hello.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+ @AWKPATH="$(srcdir)" $(AWK) --lint -f hello -f hello.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
incdupe4::
@echo $@
- @AWKPATH=$(srcdir) $(AWK) --lint -f hello -i hello.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+ @AWKPATH="$(srcdir)" $(AWK) --lint -f hello -i hello.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
incdupe5::
@echo $@
- @AWKPATH=$(srcdir) $(AWK) --lint -i hello -f hello.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+ @AWKPATH="$(srcdir)" $(AWK) --lint -i hello -f hello.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
incdupe6::
@echo $@
- @AWKPATH=$(srcdir) $(AWK) --lint -i inchello -f hello.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+ @AWKPATH="$(srcdir)" $(AWK) --lint -i inchello -f hello.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
incdupe7::
@echo $@
- @AWKPATH=$(srcdir) $(AWK) --lint -f hello -i inchello >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+ @AWKPATH="$(srcdir)" $(AWK) --lint -f hello -i inchello >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
inplace1::
@echo $@
- @cp $(srcdir)/inplace.1.in _$@.1
- @cp $(srcdir)/inplace.2.in _$@.2
- @AWKPATH=$(srcdir)/../awklib/eg/lib $(AWK) -i inplace 'BEGIN {print "before"} {gsub(/foo/, "bar"); print} END {print "after"}' _$@.1 - _$@.2 < $(srcdir)/inplace.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
- @-$(CMP) $(srcdir)/$@.1.ok _$@.1 && rm -f _$@.1
- @-$(CMP) $(srcdir)/$@.2.ok _$@.2 && rm -f _$@.2
+ @cp "$(srcdir)"/inplace.1.in _$@.1
+ @cp "$(srcdir)"/inplace.2.in _$@.2
+ @AWKPATH="$(srcdir)"/../awklib/eg/lib $(AWK) -i inplace 'BEGIN {print "before"} {gsub(/foo/, "bar"); print} END {print "after"}' _$@.1 - _$@.2 < "$(srcdir)"/inplace.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
+ @-$(CMP) "$(srcdir)"/$@.1.ok _$@.1 && rm -f _$@.1
+ @-$(CMP) "$(srcdir)"/$@.2.ok _$@.2 && rm -f _$@.2
inplace2::
@echo $@
- @cp $(srcdir)/inplace.1.in _$@.1
- @cp $(srcdir)/inplace.2.in _$@.2
- @AWKPATH=$(srcdir)/../awklib/eg/lib $(AWK) -i inplace -v INPLACE_SUFFIX=.bak 'BEGIN {print "before"} {gsub(/foo/, "bar"); print} END {print "after"}' _$@.1 - _$@.2 < $(srcdir)/inplace.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
- @-$(CMP) $(srcdir)/$@.1.ok _$@.1 && rm -f _$@.1
- @-$(CMP) $(srcdir)/$@.1.bak.ok _$@.1.bak && rm -f _$@.1.bak
- @-$(CMP) $(srcdir)/$@.2.ok _$@.2 && rm -f _$@.2
- @-$(CMP) $(srcdir)/$@.2.bak.ok _$@.2.bak && rm -f _$@.2.bak
+ @cp "$(srcdir)"/inplace.1.in _$@.1
+ @cp "$(srcdir)"/inplace.2.in _$@.2
+ @AWKPATH="$(srcdir)"/../awklib/eg/lib $(AWK) -i inplace -v INPLACE_SUFFIX=.bak 'BEGIN {print "before"} {gsub(/foo/, "bar"); print} END {print "after"}' _$@.1 - _$@.2 < "$(srcdir)"/inplace.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
+ @-$(CMP) "$(srcdir)"/$@.1.ok _$@.1 && rm -f _$@.1
+ @-$(CMP) "$(srcdir)"/$@.1.bak.ok _$@.1.bak && rm -f _$@.1.bak
+ @-$(CMP) "$(srcdir)"/$@.2.ok _$@.2 && rm -f _$@.2
+ @-$(CMP) "$(srcdir)"/$@.2.bak.ok _$@.2.bak && rm -f _$@.2.bak
inplace3::
@echo $@
- @cp $(srcdir)/inplace.1.in _$@.1
- @cp $(srcdir)/inplace.2.in _$@.2
- @AWKPATH=$(srcdir)/../awklib/eg/lib $(AWK) -i inplace -v INPLACE_SUFFIX=.bak 'BEGIN {print "before"} {gsub(/foo/, "bar"); print} END {print "after"}' _$@.1 - _$@.2 < $(srcdir)/inplace.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @AWKPATH=$(srcdir)/../awklib/eg/lib $(AWK) -i inplace -v INPLACE_SUFFIX=.bak 'BEGIN {print "Before"} {gsub(/bar/, "foo"); print} END {print "After"}' _$@.1 - _$@.2 < $(srcdir)/inplace.in >>_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
- @-$(CMP) $(srcdir)/$@.1.ok _$@.1 && rm -f _$@.1
- @-$(CMP) $(srcdir)/$@.1.bak.ok _$@.1.bak && rm -f _$@.1.bak
- @-$(CMP) $(srcdir)/$@.2.ok _$@.2 && rm -f _$@.2
- @-$(CMP) $(srcdir)/$@.2.bak.ok _$@.2.bak && rm -f _$@.2.bak
+ @cp "$(srcdir)"/inplace.1.in _$@.1
+ @cp "$(srcdir)"/inplace.2.in _$@.2
+ @AWKPATH="$(srcdir)"/../awklib/eg/lib $(AWK) -i inplace -v INPLACE_SUFFIX=.bak 'BEGIN {print "before"} {gsub(/foo/, "bar"); print} END {print "after"}' _$@.1 - _$@.2 < "$(srcdir)"/inplace.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @AWKPATH="$(srcdir)"/../awklib/eg/lib $(AWK) -i inplace -v INPLACE_SUFFIX=.bak 'BEGIN {print "Before"} {gsub(/bar/, "foo"); print} END {print "After"}' _$@.1 - _$@.2 < "$(srcdir)"/inplace.in >>_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
+ @-$(CMP) "$(srcdir)"/$@.1.ok _$@.1 && rm -f _$@.1
+ @-$(CMP) "$(srcdir)"/$@.1.bak.ok _$@.1.bak && rm -f _$@.1.bak
+ @-$(CMP) "$(srcdir)"/$@.2.ok _$@.2 && rm -f _$@.2
+ @-$(CMP) "$(srcdir)"/$@.2.bak.ok _$@.2.bak && rm -f _$@.2.bak
testext::
@echo $@
- @$(AWK) '/^(@load|BEGIN)/,/^}/' $(top_srcdir)/extension/testext.c > testext.awk
+ @$(AWK) '/^(@load|BEGIN)/,/^}/' "$(top_srcdir)"/extension/testext.c > testext.awk
@$(AWK) -f testext.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@ testext.awk
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@ testext.awk
readdir:
@if [ "`uname`" = Linux ] && [ "`stat -f . 2>/dev/null | awk 'NR == 2 { print $$NF }'`" = nfs ]; then \
@@ -2189,1393 +2254,1438 @@ readdir:
echo If it does, try rerunning on an ext'[234]' filesystem. ; \
fi
@echo $@
- @$(AWK) -f $(srcdir)/readdir.awk $(top_srcdir) > _$@
- @ls -afli $(top_srcdir) | sed 1d | $(AWK) -f $(srcdir)/readdir0.awk -v extout=_$@ > $@.ok
- @-$(CMP) $@.ok _$@ && rm -f $@.ok _$@
+ @$(AWK) -f "$(srcdir)"/readdir.awk "$(top_srcdir)" > _$@
+ @ls -afi "$(top_srcdir)" > _dirlist
+ @ls -lna "$(top_srcdir)" | sed 1d > _longlist
+ @$(AWK) -f "$(srcdir)"/readdir0.awk -v extout=_$@ \
+ -v dirlist=_dirlist -v longlist=_longlist > $@.ok
+ @-$(CMP) $@.ok _$@ && rm -f $@.ok _$@ _dirlist _longlist
fts:
- @if [ "`uname`" = IRIX ]; then \
+ @case `uname` in \
+ IRIX) \
echo This test may fail on IRIX systems when run on an NFS filesystem.; \
- echo If it does, try rerunning on an xfs filesystem. ; \
- fi
+ echo If it does, try rerunning on an xfs filesystem. ;; \
+ CYGWIN*) \
+ echo This test may fail on CYGWIN systems when run on an NFS filesystem.; \
+ echo If it does, try rerunning on an ntfs filesystem. ;; \
+ esac
@echo $@
- @$(AWK) -f $(srcdir)/fts.awk
+ @$(AWK) -f "$(srcdir)"/fts.awk
@-$(CMP) $@.ok _$@ && rm -f $@.ok _$@
charasbytes:
@echo $@
@[ -z "$$GAWKLOCALE" ] && GAWKLOCALE=en_US.UTF-8; \
- AWKPATH=$(srcdir) $(AWK) -b -f $@.awk $(srcdir)/$@.in | \
- od -c -t x1 | sed -e 's/ */ /g' -e 's/ *$$//' >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+ AWKPATH="$(srcdir)" $(AWK) -b -f $@.awk "$(srcdir)"/$@.in | \
+ od -c -t x1 | tr ' ' ' ' | sed -e 's/ */ /g' -e 's/ *$$//' >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
symtab6:
@echo $@
- @$(AWK) -d__$@ -f $(srcdir)/$@.awk
+ @$(AWK) -d__$@ -f "$(srcdir)"/$@.awk
@grep -v '^ENVIRON' __$@ | grep -v '^PROCINFO' > _$@ ; rm __$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
symtab8:
@echo $@
- @$(AWK) -d__$@ -f $(srcdir)/$@.awk $(srcdir)/$@.in >_$@
+ @$(AWK) -d__$@ -f "$(srcdir)"/$@.awk "$(srcdir)"/$@.in >_$@
@grep -v '^ENVIRON' __$@ | grep -v '^PROCINFO' | grep -v '^FILENAME' >> _$@ ; rm __$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
symtab9:
@echo $@
- @$(AWK) -f $(srcdir)/$@.awk >_$@
+ @$(AWK) -f "$(srcdir)"/$@.awk >_$@
@rm -f testit.txt
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
reginttrad:
@echo $@
- @$(AWK) --traditional -r -f $(srcdir)/$@.awk > _$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+ @$(AWK) --traditional -r -f "$(srcdir)"/$@.awk > _$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
colonwarn:
@echo $@
@for i in 1 2 3 ; \
- do $(AWK) -f $(srcdir)/$@.awk $$i < $(srcdir)/$@.in ; \
+ do $(AWK) -f "$(srcdir)"/$@.awk $$i < "$(srcdir)"/$@.in ; \
done > _$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
clos1way:
@echo $@
- @AWKPATH=$(srcdir) LC_ALL=C $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+ @AWKPATH="$(srcdir)" LC_ALL=C $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
dfamb1:
@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 _$@
+ AWKPATH="$(srcdir)" $(AWK) -f $@.awk "$(srcdir)"/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
+
+randtest::
+ @echo $@
+ @GAWK="$(AWKPROG)" "$(srcdir)"/randtest.sh >_$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
+
+backbigs1:
+ @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 _$@
+
+backsmalls1:
+ @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 _$@
+
+backsmalls2:
+ @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:
@echo $@
- @AWKPATH=$(srcdir) $(AWK) -f $@.awk < $(srcdir)/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+ @AWKPATH="$(srcdir)" $(AWK) -f $@.awk < "$(srcdir)"/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
anchgsub:
@echo $@
- @AWKPATH=$(srcdir) $(AWK) -f $@.awk < $(srcdir)/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+ @AWKPATH="$(srcdir)" $(AWK) -f $@.awk < "$(srcdir)"/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
arrayparm:
@echo $@
- @AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+ @AWKPATH="$(srcdir)" $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
arrayprm2:
@echo $@
- @AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+ @AWKPATH="$(srcdir)" $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
arrayprm3:
@echo $@
- @AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+ @AWKPATH="$(srcdir)" $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
arrayref:
@echo $@
- @AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+ @AWKPATH="$(srcdir)" $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
arrymem1:
@echo $@
- @AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+ @AWKPATH="$(srcdir)" $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
arryref2:
@echo $@
- @AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+ @AWKPATH="$(srcdir)" $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
arryref3:
@echo $@
- @AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+ @AWKPATH="$(srcdir)" $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
arryref4:
@echo $@
- @AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+ @AWKPATH="$(srcdir)" $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
arryref5:
@echo $@
- @AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+ @AWKPATH="$(srcdir)" $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
arynasty:
@echo $@
- @AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+ @AWKPATH="$(srcdir)" $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
aryprm1:
@echo $@
- @AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+ @AWKPATH="$(srcdir)" $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
aryprm2:
@echo $@
- @AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+ @AWKPATH="$(srcdir)" $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
aryprm3:
@echo $@
- @AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+ @AWKPATH="$(srcdir)" $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
aryprm4:
@echo $@
- @AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+ @AWKPATH="$(srcdir)" $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
aryprm5:
@echo $@
- @AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+ @AWKPATH="$(srcdir)" $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
aryprm6:
@echo $@
- @AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+ @AWKPATH="$(srcdir)" $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
aryprm7:
@echo $@
- @AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+ @AWKPATH="$(srcdir)" $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
aryprm8:
@echo $@
- @AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+ @AWKPATH="$(srcdir)" $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
arysubnm:
@echo $@
- @AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+ @AWKPATH="$(srcdir)" $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
asgext:
@echo $@
- @AWKPATH=$(srcdir) $(AWK) -f $@.awk < $(srcdir)/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+ @AWKPATH="$(srcdir)" $(AWK) -f $@.awk < "$(srcdir)"/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
back89:
@echo $@
- @AWKPATH=$(srcdir) $(AWK) -f $@.awk < $(srcdir)/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+ @AWKPATH="$(srcdir)" $(AWK) -f $@.awk < "$(srcdir)"/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
backgsub:
@echo $@
- @AWKPATH=$(srcdir) $(AWK) -f $@.awk < $(srcdir)/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+ @AWKPATH="$(srcdir)" $(AWK) -f $@.awk < "$(srcdir)"/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
+
+badassign1:
+ @echo $@
+ @AWKPATH="$(srcdir)" $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
childin:
@echo $@
- @AWKPATH=$(srcdir) $(AWK) -f $@.awk < $(srcdir)/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+ @AWKPATH="$(srcdir)" $(AWK) -f $@.awk < "$(srcdir)"/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
closebad:
@echo $@
- @AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+ @AWKPATH="$(srcdir)" $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
clsflnam:
@echo $@
- @AWKPATH=$(srcdir) $(AWK) -f $@.awk < $(srcdir)/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+ @AWKPATH="$(srcdir)" $(AWK) -f $@.awk < "$(srcdir)"/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
compare2:
@echo $@
- @AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+ @AWKPATH="$(srcdir)" $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
concat1:
@echo $@
- @AWKPATH=$(srcdir) $(AWK) -f $@.awk < $(srcdir)/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+ @AWKPATH="$(srcdir)" $(AWK) -f $@.awk < "$(srcdir)"/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
concat2:
@echo $@
- @AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+ @AWKPATH="$(srcdir)" $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
concat3:
@echo $@
- @AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+ @AWKPATH="$(srcdir)" $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
convfmt:
@echo $@
- @AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+ @AWKPATH="$(srcdir)" $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
datanonl:
@echo $@
- @AWKPATH=$(srcdir) $(AWK) -f $@.awk < $(srcdir)/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+ @AWKPATH="$(srcdir)" $(AWK) -f $@.awk < "$(srcdir)"/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
defref:
@echo $@
- @AWKPATH=$(srcdir) $(AWK) -f $@.awk --lint >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+ @AWKPATH="$(srcdir)" $(AWK) -f $@.awk --lint >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
delargv:
@echo $@
- @AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+ @AWKPATH="$(srcdir)" $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
delarpm2:
@echo $@
- @AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+ @AWKPATH="$(srcdir)" $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
delarprm:
@echo $@
- @AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+ @AWKPATH="$(srcdir)" $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
delfunc:
@echo $@
- @AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+ @AWKPATH="$(srcdir)" $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
dfastress:
@echo $@
- @AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+ @AWKPATH="$(srcdir)" $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
dynlj:
@echo $@
- @AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+ @AWKPATH="$(srcdir)" $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
eofsplit:
@echo $@
- @AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+ @AWKPATH="$(srcdir)" $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
exit2:
@echo $@
- @AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+ @AWKPATH="$(srcdir)" $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
exitval2:
@echo $@
- @AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+ @AWKPATH="$(srcdir)" $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
fcall_exit:
@echo $@
- @AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+ @AWKPATH="$(srcdir)" $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
fcall_exit2:
@echo $@
- @AWKPATH=$(srcdir) $(AWK) -f $@.awk < $(srcdir)/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+ @AWKPATH="$(srcdir)" $(AWK) -f $@.awk < "$(srcdir)"/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
fldchg:
@echo $@
- @AWKPATH=$(srcdir) $(AWK) -f $@.awk < $(srcdir)/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+ @AWKPATH="$(srcdir)" $(AWK) -f $@.awk < "$(srcdir)"/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
fldchgnf:
@echo $@
- @AWKPATH=$(srcdir) $(AWK) -f $@.awk < $(srcdir)/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+ @AWKPATH="$(srcdir)" $(AWK) -f $@.awk < "$(srcdir)"/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
fnamedat:
@echo $@
- @AWKPATH=$(srcdir) $(AWK) -f $@.awk < $(srcdir)/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+ @AWKPATH="$(srcdir)" $(AWK) -f $@.awk < "$(srcdir)"/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
fnarray:
@echo $@
- @AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+ @AWKPATH="$(srcdir)" $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
fnarray2:
@echo $@
- @AWKPATH=$(srcdir) $(AWK) -f $@.awk < $(srcdir)/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+ @AWKPATH="$(srcdir)" $(AWK) -f $@.awk < "$(srcdir)"/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
fnaryscl:
@echo $@
- @AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+ @AWKPATH="$(srcdir)" $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
fnasgnm:
@echo $@
- @AWKPATH=$(srcdir) $(AWK) -f $@.awk < $(srcdir)/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+ @AWKPATH="$(srcdir)" $(AWK) -f $@.awk < "$(srcdir)"/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
fnmisc:
@echo $@
- @AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+ @AWKPATH="$(srcdir)" $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
fordel:
@echo $@
- @AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+ @AWKPATH="$(srcdir)" $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
forref:
@echo $@
- @AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+ @AWKPATH="$(srcdir)" $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
forsimp:
@echo $@
- @AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+ @AWKPATH="$(srcdir)" $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
fsbs:
@echo $@
- @AWKPATH=$(srcdir) $(AWK) -f $@.awk < $(srcdir)/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+ @AWKPATH="$(srcdir)" $(AWK) -f $@.awk < "$(srcdir)"/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
fsrs:
@echo $@
- @AWKPATH=$(srcdir) $(AWK) -f $@.awk < $(srcdir)/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+ @AWKPATH="$(srcdir)" $(AWK) -f $@.awk < "$(srcdir)"/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
fstabplus:
@echo $@
- @AWKPATH=$(srcdir) $(AWK) -f $@.awk < $(srcdir)/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+ @AWKPATH="$(srcdir)" $(AWK) -f $@.awk < "$(srcdir)"/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
funsemnl:
@echo $@
- @AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+ @AWKPATH="$(srcdir)" $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
funsmnam:
@echo $@
- @AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+ @AWKPATH="$(srcdir)" $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
funstack:
@echo $@
- @AWKPATH=$(srcdir) $(AWK) -f $@.awk < $(srcdir)/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+ @AWKPATH="$(srcdir)" $(AWK) -f $@.awk < "$(srcdir)"/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
getline:
@echo $@
- @AWKPATH=$(srcdir) $(AWK) -f $@.awk < $(srcdir)/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+ @AWKPATH="$(srcdir)" $(AWK) -f $@.awk < "$(srcdir)"/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
getline3:
@echo $@
- @AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+ @AWKPATH="$(srcdir)" $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
getline4:
@echo $@
- @AWKPATH=$(srcdir) $(AWK) -f $@.awk < $(srcdir)/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+ @AWKPATH="$(srcdir)" $(AWK) -f $@.awk < "$(srcdir)"/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
getline5:
@echo $@
- @AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+ @AWKPATH="$(srcdir)" $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
getnr2tb:
@echo $@
- @AWKPATH=$(srcdir) $(AWK) -f $@.awk < $(srcdir)/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+ @AWKPATH="$(srcdir)" $(AWK) -f $@.awk < "$(srcdir)"/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
getnr2tm:
@echo $@
- @AWKPATH=$(srcdir) $(AWK) -f $@.awk < $(srcdir)/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+ @AWKPATH="$(srcdir)" $(AWK) -f $@.awk < "$(srcdir)"/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
gsubasgn:
@echo $@
- @AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+ @AWKPATH="$(srcdir)" $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
gsubtest:
@echo $@
- @AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+ @AWKPATH="$(srcdir)" $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
gsubtst2:
@echo $@
- @AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+ @AWKPATH="$(srcdir)" $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
gsubtst4:
@echo $@
- @AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+ @AWKPATH="$(srcdir)" $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
gsubtst5:
@echo $@
- @AWKPATH=$(srcdir) $(AWK) -f $@.awk < $(srcdir)/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+ @AWKPATH="$(srcdir)" $(AWK) -f $@.awk < "$(srcdir)"/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
gsubtst7:
@echo $@
- @AWKPATH=$(srcdir) $(AWK) -f $@.awk < $(srcdir)/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+ @AWKPATH="$(srcdir)" $(AWK) -f $@.awk < "$(srcdir)"/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
gsubtst8:
@echo $@
- @AWKPATH=$(srcdir) $(AWK) -f $@.awk < $(srcdir)/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+ @AWKPATH="$(srcdir)" $(AWK) -f $@.awk < "$(srcdir)"/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
hex:
@echo $@
- @AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+ @AWKPATH="$(srcdir)" $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
hsprint:
@echo $@
- @AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+ @AWKPATH="$(srcdir)" $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
inputred:
@echo $@
- @AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+ @AWKPATH="$(srcdir)" $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
intest:
@echo $@
- @AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+ @AWKPATH="$(srcdir)" $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
intprec:
@echo $@
- @AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+ @AWKPATH="$(srcdir)" $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
iobug1:
@echo $@
- @AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+ @AWKPATH="$(srcdir)" $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
leadnl:
@echo $@
- @AWKPATH=$(srcdir) $(AWK) -f $@.awk < $(srcdir)/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+ @AWKPATH="$(srcdir)" $(AWK) -f $@.awk < "$(srcdir)"/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
longsub:
@echo $@
- @AWKPATH=$(srcdir) $(AWK) -f $@.awk < $(srcdir)/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+ @AWKPATH="$(srcdir)" $(AWK) -f $@.awk < "$(srcdir)"/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
longwrds:
@echo $@
- @AWKPATH=$(srcdir) $(AWK) -f $@.awk < $(srcdir)/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+ @AWKPATH="$(srcdir)" $(AWK) -f $@.awk < "$(srcdir)"/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
manglprm:
@echo $@
- @AWKPATH=$(srcdir) $(AWK) -f $@.awk < $(srcdir)/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+ @AWKPATH="$(srcdir)" $(AWK) -f $@.awk < "$(srcdir)"/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
math:
@echo $@
- @AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+ @AWKPATH="$(srcdir)" $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
membug1:
@echo $@
- @AWKPATH=$(srcdir) $(AWK) -f $@.awk < $(srcdir)/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+ @AWKPATH="$(srcdir)" $(AWK) -f $@.awk < "$(srcdir)"/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
minusstr:
@echo $@
- @AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+ @AWKPATH="$(srcdir)" $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
nasty:
@echo $@
- @AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+ @AWKPATH="$(srcdir)" $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
nasty2:
@echo $@
- @AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+ @AWKPATH="$(srcdir)" $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
negexp:
@echo $@
- @AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+ @AWKPATH="$(srcdir)" $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
negrange:
@echo $@
- @AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+ @AWKPATH="$(srcdir)" $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
nested:
@echo $@
- @AWKPATH=$(srcdir) $(AWK) -f $@.awk < $(srcdir)/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+ @AWKPATH="$(srcdir)" $(AWK) -f $@.awk < "$(srcdir)"/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
nfldstr:
@echo $@
- @AWKPATH=$(srcdir) $(AWK) -f $@.awk < $(srcdir)/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+ @AWKPATH="$(srcdir)" $(AWK) -f $@.awk < "$(srcdir)"/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
+
+nfloop:
+ @echo $@
+ @AWKPATH="$(srcdir)" $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
nfneg:
@echo $@
- @AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+ @AWKPATH="$(srcdir)" $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
nfset:
@echo $@
- @AWKPATH=$(srcdir) $(AWK) -f $@.awk < $(srcdir)/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+ @AWKPATH="$(srcdir)" $(AWK) -f $@.awk < "$(srcdir)"/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
nlfldsep:
@echo $@
- @AWKPATH=$(srcdir) $(AWK) -f $@.awk < $(srcdir)/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+ @AWKPATH="$(srcdir)" $(AWK) -f $@.awk < "$(srcdir)"/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
nlinstr:
@echo $@
- @AWKPATH=$(srcdir) $(AWK) -f $@.awk < $(srcdir)/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+ @AWKPATH="$(srcdir)" $(AWK) -f $@.awk < "$(srcdir)"/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
nlstrina:
@echo $@
- @AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+ @AWKPATH="$(srcdir)" $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
noeffect:
@echo $@
- @AWKPATH=$(srcdir) $(AWK) -f $@.awk --lint >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+ @AWKPATH="$(srcdir)" $(AWK) -f $@.awk --lint >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
nofmtch:
@echo $@
- @AWKPATH=$(srcdir) $(AWK) -f $@.awk --lint >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+ @AWKPATH="$(srcdir)" $(AWK) -f $@.awk --lint >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
noloop1:
@echo $@
- @AWKPATH=$(srcdir) $(AWK) -f $@.awk < $(srcdir)/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+ @AWKPATH="$(srcdir)" $(AWK) -f $@.awk < "$(srcdir)"/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
noloop2:
@echo $@
- @AWKPATH=$(srcdir) $(AWK) -f $@.awk < $(srcdir)/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+ @AWKPATH="$(srcdir)" $(AWK) -f $@.awk < "$(srcdir)"/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
noparms:
@echo $@
- @AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+ @AWKPATH="$(srcdir)" $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
nulrsend:
@echo $@
- @AWKPATH=$(srcdir) $(AWK) -f $@.awk < $(srcdir)/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+ @AWKPATH="$(srcdir)" $(AWK) -f $@.awk < "$(srcdir)"/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
numindex:
@echo $@
- @AWKPATH=$(srcdir) $(AWK) -f $@.awk < $(srcdir)/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+ @AWKPATH="$(srcdir)" $(AWK) -f $@.awk < "$(srcdir)"/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
numsubstr:
@echo $@
- @AWKPATH=$(srcdir) $(AWK) -f $@.awk < $(srcdir)/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+ @AWKPATH="$(srcdir)" $(AWK) -f $@.awk < "$(srcdir)"/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
octsub:
@echo $@
- @AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+ @AWKPATH="$(srcdir)" $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
ofmt:
@echo $@
- @AWKPATH=$(srcdir) $(AWK) -f $@.awk < $(srcdir)/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+ @AWKPATH="$(srcdir)" $(AWK) -f $@.awk < "$(srcdir)"/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
ofmta:
@echo $@
- @AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+ @AWKPATH="$(srcdir)" $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
ofmtbig:
@echo $@
- @AWKPATH=$(srcdir) $(AWK) -f $@.awk < $(srcdir)/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+ @AWKPATH="$(srcdir)" $(AWK) -f $@.awk < "$(srcdir)"/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
ofmtfidl:
@echo $@
- @AWKPATH=$(srcdir) $(AWK) -f $@.awk < $(srcdir)/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+ @AWKPATH="$(srcdir)" $(AWK) -f $@.awk < "$(srcdir)"/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
ofmts:
@echo $@
- @AWKPATH=$(srcdir) $(AWK) -f $@.awk < $(srcdir)/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+ @AWKPATH="$(srcdir)" $(AWK) -f $@.awk < "$(srcdir)"/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
ofs1:
@echo $@
- @AWKPATH=$(srcdir) $(AWK) -f $@.awk < $(srcdir)/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+ @AWKPATH="$(srcdir)" $(AWK) -f $@.awk < "$(srcdir)"/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
onlynl:
@echo $@
- @AWKPATH=$(srcdir) $(AWK) -f $@.awk < $(srcdir)/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+ @AWKPATH="$(srcdir)" $(AWK) -f $@.awk < "$(srcdir)"/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
opasnidx:
@echo $@
- @AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+ @AWKPATH="$(srcdir)" $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
opasnslf:
@echo $@
- @AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+ @AWKPATH="$(srcdir)" $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
paramdup:
@echo $@
- @AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+ @AWKPATH="$(srcdir)" $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
paramres:
@echo $@
- @AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+ @AWKPATH="$(srcdir)" $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
paramtyp:
@echo $@
- @AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+ @AWKPATH="$(srcdir)" $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
paramuninitglobal:
@echo $@
- @AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+ @AWKPATH="$(srcdir)" $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
parse1:
@echo $@
- @AWKPATH=$(srcdir) $(AWK) -f $@.awk < $(srcdir)/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+ @AWKPATH="$(srcdir)" $(AWK) -f $@.awk < "$(srcdir)"/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
parsefld:
@echo $@
- @AWKPATH=$(srcdir) $(AWK) -f $@.awk < $(srcdir)/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+ @AWKPATH="$(srcdir)" $(AWK) -f $@.awk < "$(srcdir)"/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
parseme:
@echo $@
- @AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+ @AWKPATH="$(srcdir)" $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
pcntplus:
@echo $@
- @AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+ @AWKPATH="$(srcdir)" $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
prdupval:
@echo $@
- @AWKPATH=$(srcdir) $(AWK) -f $@.awk < $(srcdir)/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+ @AWKPATH="$(srcdir)" $(AWK) -f $@.awk < "$(srcdir)"/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
prec:
@echo $@
- @AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+ @AWKPATH="$(srcdir)" $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
printf1:
@echo $@
- @AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+ @AWKPATH="$(srcdir)" $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
prmarscl:
@echo $@
- @AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+ @AWKPATH="$(srcdir)" $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
prmreuse:
@echo $@
- @AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+ @AWKPATH="$(srcdir)" $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
prt1eval:
@echo $@
- @AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+ @AWKPATH="$(srcdir)" $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
prtoeval:
@echo $@
- @AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+ @AWKPATH="$(srcdir)" $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
rand:
@echo $@
- @AWKPATH=$(srcdir) $(AWK) $(AWKFLAGS) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-if test -z "$$AWKFLAGS" ; then $(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@ ; else \
- $(CMP) $(srcdir)/$@-mpfr.ok _$@ && rm -f _$@ ; \
+ @AWKPATH="$(srcdir)" $(AWK) $(AWKFLAGS) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-if test -z "$$AWKFLAGS" ; then $(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@ ; else \
+ $(CMP) "$(srcdir)"/$@-mpfr.ok _$@ && rm -f _$@ ; \
fi
range1:
@echo $@
- @AWKPATH=$(srcdir) $(AWK) -f $@.awk < $(srcdir)/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+ @AWKPATH="$(srcdir)" $(AWK) -f $@.awk < "$(srcdir)"/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
rebt8b1:
@echo $@
- @AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+ @AWKPATH="$(srcdir)" $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
regeq:
@echo $@
- @AWKPATH=$(srcdir) $(AWK) -f $@.awk < $(srcdir)/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+ @AWKPATH="$(srcdir)" $(AWK) -f $@.awk < "$(srcdir)"/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
regexprange:
@echo $@
- @AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+ @AWKPATH="$(srcdir)" $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
regrange:
@echo $@
- @AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+ @AWKPATH="$(srcdir)" $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
reindops:
@echo $@
- @AWKPATH=$(srcdir) $(AWK) -f $@.awk < $(srcdir)/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+ @AWKPATH="$(srcdir)" $(AWK) -f $@.awk < "$(srcdir)"/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
reparse:
@echo $@
- @AWKPATH=$(srcdir) $(AWK) -f $@.awk < $(srcdir)/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+ @AWKPATH="$(srcdir)" $(AWK) -f $@.awk < "$(srcdir)"/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
resplit:
@echo $@
- @AWKPATH=$(srcdir) $(AWK) -f $@.awk < $(srcdir)/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+ @AWKPATH="$(srcdir)" $(AWK) -f $@.awk < "$(srcdir)"/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
rs:
@echo $@
- @AWKPATH=$(srcdir) $(AWK) -f $@.awk < $(srcdir)/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+ @AWKPATH="$(srcdir)" $(AWK) -f $@.awk < "$(srcdir)"/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
rsnul1nl:
@echo $@
- @AWKPATH=$(srcdir) $(AWK) -f $@.awk < $(srcdir)/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+ @AWKPATH="$(srcdir)" $(AWK) -f $@.awk < "$(srcdir)"/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
rstest1:
@echo $@
- @AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+ @AWKPATH="$(srcdir)" $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
rstest2:
@echo $@
- @AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+ @AWKPATH="$(srcdir)" $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
rstest3:
@echo $@
- @AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+ @AWKPATH="$(srcdir)" $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
rstest4:
@echo $@
- @AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+ @AWKPATH="$(srcdir)" $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
rstest5:
@echo $@
- @AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+ @AWKPATH="$(srcdir)" $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
rswhite:
@echo $@
- @AWKPATH=$(srcdir) $(AWK) -f $@.awk < $(srcdir)/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+ @AWKPATH="$(srcdir)" $(AWK) -f $@.awk < "$(srcdir)"/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
scalar:
@echo $@
- @AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+ @AWKPATH="$(srcdir)" $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
sclforin:
@echo $@
- @AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+ @AWKPATH="$(srcdir)" $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
sclifin:
@echo $@
- @AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+ @AWKPATH="$(srcdir)" $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
sortempty:
@echo $@
- @AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+ @AWKPATH="$(srcdir)" $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
splitargv:
@echo $@
- @AWKPATH=$(srcdir) $(AWK) -f $@.awk < $(srcdir)/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+ @AWKPATH="$(srcdir)" $(AWK) -f $@.awk < "$(srcdir)"/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
splitarr:
@echo $@
- @AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+ @AWKPATH="$(srcdir)" $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
splitdef:
@echo $@
- @AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+ @AWKPATH="$(srcdir)" $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
splitvar:
@echo $@
- @AWKPATH=$(srcdir) $(AWK) -f $@.awk < $(srcdir)/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+ @AWKPATH="$(srcdir)" $(AWK) -f $@.awk < "$(srcdir)"/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
splitwht:
@echo $@
- @AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+ @AWKPATH="$(srcdir)" $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
strcat1:
@echo $@
- @AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+ @AWKPATH="$(srcdir)" $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
strnum1:
@echo $@
- @AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+ @AWKPATH="$(srcdir)" $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
strtod:
@echo $@
- @AWKPATH=$(srcdir) $(AWK) -f $@.awk < $(srcdir)/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+ @AWKPATH="$(srcdir)" $(AWK) -f $@.awk < "$(srcdir)"/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
subsepnm:
@echo $@
- @AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+ @AWKPATH="$(srcdir)" $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
subslash:
@echo $@
- @AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+ @AWKPATH="$(srcdir)" $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
substr:
@echo $@
- @AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+ @AWKPATH="$(srcdir)" $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
swaplns:
@echo $@
- @AWKPATH=$(srcdir) $(AWK) -f $@.awk < $(srcdir)/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+ @AWKPATH="$(srcdir)" $(AWK) -f $@.awk < "$(srcdir)"/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
synerr1:
@echo $@
- @AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+ @AWKPATH="$(srcdir)" $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
synerr2:
@echo $@
- @AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+ @AWKPATH="$(srcdir)" $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
uninit2:
@echo $@
- @AWKPATH=$(srcdir) $(AWK) -f $@.awk --lint >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+ @AWKPATH="$(srcdir)" $(AWK) -f $@.awk --lint >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
uninit3:
@echo $@
- @AWKPATH=$(srcdir) $(AWK) -f $@.awk --lint >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+ @AWKPATH="$(srcdir)" $(AWK) -f $@.awk --lint >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
uninit4:
@echo $@
- @AWKPATH=$(srcdir) $(AWK) -f $@.awk --lint >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+ @AWKPATH="$(srcdir)" $(AWK) -f $@.awk --lint >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
uninit5:
@echo $@
- @AWKPATH=$(srcdir) $(AWK) -f $@.awk --lint >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+ @AWKPATH="$(srcdir)" $(AWK) -f $@.awk --lint >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
uninitialized:
@echo $@
- @AWKPATH=$(srcdir) $(AWK) -f $@.awk --lint >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+ @AWKPATH="$(srcdir)" $(AWK) -f $@.awk --lint >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
unterm:
@echo $@
- @AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+ @AWKPATH="$(srcdir)" $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
uparrfs:
@echo $@
- @AWKPATH=$(srcdir) $(AWK) -f $@.awk < $(srcdir)/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+ @AWKPATH="$(srcdir)" $(AWK) -f $@.awk < "$(srcdir)"/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
wjposer1:
@echo $@
- @AWKPATH=$(srcdir) $(AWK) -f $@.awk < $(srcdir)/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+ @AWKPATH="$(srcdir)" $(AWK) -f $@.awk < "$(srcdir)"/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
zero2:
@echo $@
- @AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+ @AWKPATH="$(srcdir)" $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
zeroe0:
@echo $@
- @AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+ @AWKPATH="$(srcdir)" $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
zeroflag:
@echo $@
- @AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+ @AWKPATH="$(srcdir)" $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
getlnhd:
@echo $@
- @AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+ @AWKPATH="$(srcdir)" $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
aadelete1:
@echo $@
- @AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+ @AWKPATH="$(srcdir)" $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
aadelete2:
@echo $@
- @AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+ @AWKPATH="$(srcdir)" $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
aarray1:
@echo $@
- @AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+ @AWKPATH="$(srcdir)" $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
aasort:
@echo $@
- @AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+ @AWKPATH="$(srcdir)" $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
aasorti:
@echo $@
- @AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+ @AWKPATH="$(srcdir)" $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
arraysort:
@echo $@
- @AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+ @AWKPATH="$(srcdir)" $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
backw:
@echo $@
- @AWKPATH=$(srcdir) $(AWK) -f $@.awk < $(srcdir)/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+ @AWKPATH="$(srcdir)" $(AWK) -f $@.awk < "$(srcdir)"/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
delsub:
@echo $@
- @AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+ @AWKPATH="$(srcdir)" $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
fieldwdth:
@echo $@
- @AWKPATH=$(srcdir) $(AWK) -f $@.awk < $(srcdir)/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+ @AWKPATH="$(srcdir)" $(AWK) -f $@.awk < "$(srcdir)"/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
fpat1:
@echo $@
- @AWKPATH=$(srcdir) $(AWK) -f $@.awk < $(srcdir)/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+ @AWKPATH="$(srcdir)" $(AWK) -f $@.awk < "$(srcdir)"/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
fpat2:
@echo $@
- @AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+ @AWKPATH="$(srcdir)" $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
fpat3:
@echo $@
- @AWKPATH=$(srcdir) $(AWK) -f $@.awk < $(srcdir)/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+ @AWKPATH="$(srcdir)" $(AWK) -f $@.awk < "$(srcdir)"/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
fpatnull:
@echo $@
- @AWKPATH=$(srcdir) $(AWK) -f $@.awk < $(srcdir)/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+ @AWKPATH="$(srcdir)" $(AWK) -f $@.awk < "$(srcdir)"/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
fsfwfs:
@echo $@
- @AWKPATH=$(srcdir) $(AWK) -f $@.awk < $(srcdir)/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+ @AWKPATH="$(srcdir)" $(AWK) -f $@.awk < "$(srcdir)"/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
funlen:
@echo $@
- @AWKPATH=$(srcdir) $(AWK) -f $@.awk < $(srcdir)/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+ @AWKPATH="$(srcdir)" $(AWK) -f $@.awk < "$(srcdir)"/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
functab1:
@echo $@
- @AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+ @AWKPATH="$(srcdir)" $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
functab2:
@echo $@
- @AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+ @AWKPATH="$(srcdir)" $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
functab3:
@echo $@
- @AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+ @AWKPATH="$(srcdir)" $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
fwtest:
@echo $@
- @AWKPATH=$(srcdir) $(AWK) -f $@.awk < $(srcdir)/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+ @AWKPATH="$(srcdir)" $(AWK) -f $@.awk < "$(srcdir)"/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
fwtest2:
@echo $@
- @AWKPATH=$(srcdir) $(AWK) -f $@.awk < $(srcdir)/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+ @AWKPATH="$(srcdir)" $(AWK) -f $@.awk < "$(srcdir)"/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
fwtest3:
@echo $@
- @AWKPATH=$(srcdir) $(AWK) -f $@.awk < $(srcdir)/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+ @AWKPATH="$(srcdir)" $(AWK) -f $@.awk < "$(srcdir)"/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
gensub:
@echo $@
- @AWKPATH=$(srcdir) $(AWK) -f $@.awk < $(srcdir)/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+ @AWKPATH="$(srcdir)" $(AWK) -f $@.awk < "$(srcdir)"/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
gensub2:
@echo $@
- @AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+ @AWKPATH="$(srcdir)" $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
getlndir:
@echo $@
- @AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+ @AWKPATH="$(srcdir)" $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
gnuops2:
@echo $@
- @AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+ @AWKPATH="$(srcdir)" $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
gnuops3:
@echo $@
- @AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+ @AWKPATH="$(srcdir)" $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
gnureops:
@echo $@
- @AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+ @AWKPATH="$(srcdir)" $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
icasefs:
@echo $@
- @AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+ @AWKPATH="$(srcdir)" $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
icasers:
@echo $@
- @AWKPATH=$(srcdir) $(AWK) -f $@.awk < $(srcdir)/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+ @AWKPATH="$(srcdir)" $(AWK) -f $@.awk < "$(srcdir)"/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
id:
@echo $@
- @AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+ @AWKPATH="$(srcdir)" $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
igncdym:
@echo $@
- @AWKPATH=$(srcdir) $(AWK) -f $@.awk < $(srcdir)/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+ @AWKPATH="$(srcdir)" $(AWK) -f $@.awk < "$(srcdir)"/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
igncfs:
@echo $@
- @AWKPATH=$(srcdir) $(AWK) -f $@.awk < $(srcdir)/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+ @AWKPATH="$(srcdir)" $(AWK) -f $@.awk < "$(srcdir)"/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
ignrcase:
@echo $@
- @AWKPATH=$(srcdir) $(AWK) -f $@.awk < $(srcdir)/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+ @AWKPATH="$(srcdir)" $(AWK) -f $@.awk < "$(srcdir)"/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
include:
@echo $@
- @AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+ @AWKPATH="$(srcdir)" $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
indirectcall:
@echo $@
- @AWKPATH=$(srcdir) $(AWK) -f $@.awk < $(srcdir)/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+ @AWKPATH="$(srcdir)" $(AWK) -f $@.awk < "$(srcdir)"/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
lint:
@echo $@
- @AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+ @AWKPATH="$(srcdir)" $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
lintold:
@echo $@
- @AWKPATH=$(srcdir) $(AWK) -f $@.awk --lint-old < $(srcdir)/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+ @AWKPATH="$(srcdir)" $(AWK) -f $@.awk --lint-old < "$(srcdir)"/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
lintwarn:
@echo $@
- @AWKPATH=$(srcdir) $(AWK) -f $@.awk --lint >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+ @AWKPATH="$(srcdir)" $(AWK) -f $@.awk --lint >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
match1:
@echo $@
- @AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+ @AWKPATH="$(srcdir)" $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
match2:
@echo $@
- @AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+ @AWKPATH="$(srcdir)" $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
match3:
@echo $@
- @AWKPATH=$(srcdir) $(AWK) -f $@.awk < $(srcdir)/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+ @AWKPATH="$(srcdir)" $(AWK) -f $@.awk < "$(srcdir)"/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
nastyparm:
@echo $@
- @AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+ @AWKPATH="$(srcdir)" $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
nondec:
@echo $@
- @AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+ @AWKPATH="$(srcdir)" $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
patsplit:
@echo $@
- @AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+ @AWKPATH="$(srcdir)" $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
posix:
@echo $@
- @AWKPATH=$(srcdir) $(AWK) -f $@.awk < $(srcdir)/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+ @AWKPATH="$(srcdir)" $(AWK) -f $@.awk < "$(srcdir)"/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
printfbad1:
@echo $@
- @AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+ @AWKPATH="$(srcdir)" $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
printfbad3:
@echo $@
- @AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+ @AWKPATH="$(srcdir)" $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
procinfs:
@echo $@
- @AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+ @AWKPATH="$(srcdir)" $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
pty1:
@echo $@
- @AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+ @AWKPATH="$(srcdir)" $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
rebuf:
@echo $@
- @AWKPATH=$(srcdir) $(AWK) -f $@.awk < $(srcdir)/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+ @AWKPATH="$(srcdir)" $(AWK) -f $@.awk < "$(srcdir)"/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
regx8bit:
@echo $@
- @AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+ @AWKPATH="$(srcdir)" $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
rstest6:
@echo $@
- @AWKPATH=$(srcdir) $(AWK) -f $@.awk < $(srcdir)/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+ @AWKPATH="$(srcdir)" $(AWK) -f $@.awk < "$(srcdir)"/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
shadow:
@echo $@
- @AWKPATH=$(srcdir) $(AWK) -f $@.awk --lint >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+ @AWKPATH="$(srcdir)" $(AWK) -f $@.awk --lint >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
sortfor:
@echo $@
- @AWKPATH=$(srcdir) $(AWK) -f $@.awk < $(srcdir)/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+ @AWKPATH="$(srcdir)" $(AWK) -f $@.awk < "$(srcdir)"/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
sortu:
@echo $@
- @AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+ @AWKPATH="$(srcdir)" $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
+
+split_after_fpat:
+ @echo $@
+ @AWKPATH="$(srcdir)" $(AWK) -f $@.awk < "$(srcdir)"/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
splitarg4:
@echo $@
- @AWKPATH=$(srcdir) $(AWK) -f $@.awk < $(srcdir)/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+ @AWKPATH="$(srcdir)" $(AWK) -f $@.awk < "$(srcdir)"/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
strtonum:
@echo $@
- @AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+ @AWKPATH="$(srcdir)" $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
switch2:
@echo $@
- @AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+ @AWKPATH="$(srcdir)" $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
symtab1:
@echo $@
- @AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+ @AWKPATH="$(srcdir)" $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
symtab2:
@echo $@
- @AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+ @AWKPATH="$(srcdir)" $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
symtab3:
@echo $@
- @AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+ @AWKPATH="$(srcdir)" $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
symtab4:
@echo $@
- @AWKPATH=$(srcdir) $(AWK) -f $@.awk < $(srcdir)/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+ @AWKPATH="$(srcdir)" $(AWK) -f $@.awk < "$(srcdir)"/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
symtab5:
@echo $@
- @AWKPATH=$(srcdir) $(AWK) -f $@.awk < $(srcdir)/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+ @AWKPATH="$(srcdir)" $(AWK) -f $@.awk < "$(srcdir)"/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
symtab7:
@echo $@
- @AWKPATH=$(srcdir) $(AWK) -f $@.awk < $(srcdir)/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+ @AWKPATH="$(srcdir)" $(AWK) -f $@.awk < "$(srcdir)"/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
double1:
@echo $@
- @AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+ @AWKPATH="$(srcdir)" $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
double2:
@echo $@
- @AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+ @AWKPATH="$(srcdir)" $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
intformat:
@echo $@
- @AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+ @AWKPATH="$(srcdir)" $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
asort:
@echo $@
- @AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+ @AWKPATH="$(srcdir)" $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
asorti:
@echo $@
- @AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+ @AWKPATH="$(srcdir)" $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
fmttest:
@echo $@
- @AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+ @AWKPATH="$(srcdir)" $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
fnarydel:
@echo $@
- @AWKPATH=$(srcdir) $(AWK) $(AWKFLAGS) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-if test -z "$$AWKFLAGS" ; then $(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@ ; else \
- $(CMP) $(srcdir)/$@-mpfr.ok _$@ && rm -f _$@ ; \
+ @AWKPATH="$(srcdir)" $(AWK) $(AWKFLAGS) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-if test -z "$$AWKFLAGS" ; then $(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@ ; else \
+ $(CMP) "$(srcdir)"/$@-mpfr.ok _$@ && rm -f _$@ ; \
fi
fnparydl:
@echo $@
- @AWKPATH=$(srcdir) $(AWK) $(AWKFLAGS) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-if test -z "$$AWKFLAGS" ; then $(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@ ; else \
- $(CMP) $(srcdir)/$@-mpfr.ok _$@ && rm -f _$@ ; \
+ @AWKPATH="$(srcdir)" $(AWK) $(AWKFLAGS) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-if test -z "$$AWKFLAGS" ; then $(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@ ; else \
+ $(CMP) "$(srcdir)"/$@-mpfr.ok _$@ && rm -f _$@ ; \
fi
rebt8b2:
@echo $@
- @AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+ @AWKPATH="$(srcdir)" $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
sort1:
@echo $@
- @AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+ @AWKPATH="$(srcdir)" $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
sprintfc:
@echo $@
- @AWKPATH=$(srcdir) $(AWK) -f $@.awk < $(srcdir)/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+ @AWKPATH="$(srcdir)" $(AWK) -f $@.awk < "$(srcdir)"/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
fnmatch:
@echo $@
- @AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+ @AWKPATH="$(srcdir)" $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
filefuncs:
@echo $@
- @AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+ @AWKPATH="$(srcdir)" $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
fork:
@echo $@
- @AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+ @AWKPATH="$(srcdir)" $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
fork2:
@echo $@
- @AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+ @AWKPATH="$(srcdir)" $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
functab4:
@echo $@
- @AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+ @AWKPATH="$(srcdir)" $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
ordchr:
@echo $@
- @AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+ @AWKPATH="$(srcdir)" $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
revout:
@echo $@
- @AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+ @AWKPATH="$(srcdir)" $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
revtwoway:
@echo $@
- @AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+ @AWKPATH="$(srcdir)" $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
rwarray:
@echo $@
- @AWKPATH=$(srcdir) $(AWK) -f $@.awk < $(srcdir)/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+ @AWKPATH="$(srcdir)" $(AWK) -f $@.awk < "$(srcdir)"/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
time:
@echo $@
- @AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+ @AWKPATH="$(srcdir)" $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
# end of file Maketests
@@ -3583,7 +3693,7 @@ time:
$(srcdir)/Maketests: $(srcdir)/Makefile.am $(srcdir)/Gentests
files=`cd "$(srcdir)" && echo *.awk *.in`; \
- $(AWK) -f $(srcdir)/Gentests "$(srcdir)/Makefile.am" $$files > $(srcdir)/Maketests
+ $(AWK) -f "$(srcdir)"/Gentests "$(srcdir)"/Makefile.am $$files > "$(srcdir)"/Maketests
clean:
rm -fr _* core core.* fmtspcl.ok junk strftime.ok test1 test2 \
@@ -3595,19 +3705,21 @@ pass-fail:
@COUNT=`ls _* 2>/dev/null | wc -l` ; \
if test $$COUNT = 0 ; \
then echo ALL TESTS PASSED ; \
- else echo $$COUNT TESTS FAILED ; \
+ else echo $$COUNT TESTS FAILED ; exit 1; \
fi
# This target for my convenience to look at all the results
+# Don't use POSIX or bash-isms so that it'll work on !@#$%^&*() Solaris.
diffout:
for i in _* ; \
do \
if [ "$$i" != "_*" ]; then \
echo ============== $$i ============= ; \
- if [ -r $${i#_}.ok ]; then \
- diff -c $${i#_}.ok $$i ; \
+ base=`echo $$i | sed 's/^_//'` ; \
+ if [ -r $${base}.ok ]; then \
+ diff -c $${base}.ok $$i ; \
else \
- diff -c $(srcdir)/$${i#_}.ok $$i ; \
+ diff -c "$(srcdir)"/$${base}.ok $$i ; \
fi ; \
fi ; \
done | more
diff --git a/test/Maketests b/test/Maketests
index 27b8749e..b9b713c4 100644
--- a/test/Maketests
+++ b/test/Maketests
@@ -2,1328 +2,1343 @@ Gt-dummy:
# file Maketests, generated from Makefile.am by the Gentests program
addcomma:
@echo $@
- @AWKPATH=$(srcdir) $(AWK) -f $@.awk < $(srcdir)/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+ @AWKPATH="$(srcdir)" $(AWK) -f $@.awk < "$(srcdir)"/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
anchgsub:
@echo $@
- @AWKPATH=$(srcdir) $(AWK) -f $@.awk < $(srcdir)/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+ @AWKPATH="$(srcdir)" $(AWK) -f $@.awk < "$(srcdir)"/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
arrayparm:
@echo $@
- @AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+ @AWKPATH="$(srcdir)" $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
arrayprm2:
@echo $@
- @AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+ @AWKPATH="$(srcdir)" $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
arrayprm3:
@echo $@
- @AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+ @AWKPATH="$(srcdir)" $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
arrayref:
@echo $@
- @AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+ @AWKPATH="$(srcdir)" $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
arrymem1:
@echo $@
- @AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+ @AWKPATH="$(srcdir)" $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
arryref2:
@echo $@
- @AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+ @AWKPATH="$(srcdir)" $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
arryref3:
@echo $@
- @AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+ @AWKPATH="$(srcdir)" $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
arryref4:
@echo $@
- @AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+ @AWKPATH="$(srcdir)" $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
arryref5:
@echo $@
- @AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+ @AWKPATH="$(srcdir)" $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
arynasty:
@echo $@
- @AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+ @AWKPATH="$(srcdir)" $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
aryprm1:
@echo $@
- @AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+ @AWKPATH="$(srcdir)" $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
aryprm2:
@echo $@
- @AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+ @AWKPATH="$(srcdir)" $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
aryprm3:
@echo $@
- @AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+ @AWKPATH="$(srcdir)" $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
aryprm4:
@echo $@
- @AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+ @AWKPATH="$(srcdir)" $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
aryprm5:
@echo $@
- @AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+ @AWKPATH="$(srcdir)" $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
aryprm6:
@echo $@
- @AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+ @AWKPATH="$(srcdir)" $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
aryprm7:
@echo $@
- @AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+ @AWKPATH="$(srcdir)" $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
aryprm8:
@echo $@
- @AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+ @AWKPATH="$(srcdir)" $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
arysubnm:
@echo $@
- @AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+ @AWKPATH="$(srcdir)" $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
asgext:
@echo $@
- @AWKPATH=$(srcdir) $(AWK) -f $@.awk < $(srcdir)/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+ @AWKPATH="$(srcdir)" $(AWK) -f $@.awk < "$(srcdir)"/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
back89:
@echo $@
- @AWKPATH=$(srcdir) $(AWK) -f $@.awk < $(srcdir)/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+ @AWKPATH="$(srcdir)" $(AWK) -f $@.awk < "$(srcdir)"/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
backgsub:
@echo $@
- @AWKPATH=$(srcdir) $(AWK) -f $@.awk < $(srcdir)/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+ @AWKPATH="$(srcdir)" $(AWK) -f $@.awk < "$(srcdir)"/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
+
+badassign1:
+ @echo $@
+ @AWKPATH="$(srcdir)" $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
childin:
@echo $@
- @AWKPATH=$(srcdir) $(AWK) -f $@.awk < $(srcdir)/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+ @AWKPATH="$(srcdir)" $(AWK) -f $@.awk < "$(srcdir)"/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
closebad:
@echo $@
- @AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+ @AWKPATH="$(srcdir)" $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
clsflnam:
@echo $@
- @AWKPATH=$(srcdir) $(AWK) -f $@.awk < $(srcdir)/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+ @AWKPATH="$(srcdir)" $(AWK) -f $@.awk < "$(srcdir)"/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
compare2:
@echo $@
- @AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+ @AWKPATH="$(srcdir)" $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
concat1:
@echo $@
- @AWKPATH=$(srcdir) $(AWK) -f $@.awk < $(srcdir)/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+ @AWKPATH="$(srcdir)" $(AWK) -f $@.awk < "$(srcdir)"/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
concat2:
@echo $@
- @AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+ @AWKPATH="$(srcdir)" $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
concat3:
@echo $@
- @AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+ @AWKPATH="$(srcdir)" $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
convfmt:
@echo $@
- @AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+ @AWKPATH="$(srcdir)" $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
datanonl:
@echo $@
- @AWKPATH=$(srcdir) $(AWK) -f $@.awk < $(srcdir)/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+ @AWKPATH="$(srcdir)" $(AWK) -f $@.awk < "$(srcdir)"/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
defref:
@echo $@
- @AWKPATH=$(srcdir) $(AWK) -f $@.awk --lint >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+ @AWKPATH="$(srcdir)" $(AWK) -f $@.awk --lint >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
delargv:
@echo $@
- @AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+ @AWKPATH="$(srcdir)" $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
delarpm2:
@echo $@
- @AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+ @AWKPATH="$(srcdir)" $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
delarprm:
@echo $@
- @AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+ @AWKPATH="$(srcdir)" $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
delfunc:
@echo $@
- @AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+ @AWKPATH="$(srcdir)" $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
dfastress:
@echo $@
- @AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+ @AWKPATH="$(srcdir)" $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
dynlj:
@echo $@
- @AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+ @AWKPATH="$(srcdir)" $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
eofsplit:
@echo $@
- @AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+ @AWKPATH="$(srcdir)" $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
exit2:
@echo $@
- @AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+ @AWKPATH="$(srcdir)" $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
exitval2:
@echo $@
- @AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+ @AWKPATH="$(srcdir)" $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
fcall_exit:
@echo $@
- @AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+ @AWKPATH="$(srcdir)" $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
fcall_exit2:
@echo $@
- @AWKPATH=$(srcdir) $(AWK) -f $@.awk < $(srcdir)/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+ @AWKPATH="$(srcdir)" $(AWK) -f $@.awk < "$(srcdir)"/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
fldchg:
@echo $@
- @AWKPATH=$(srcdir) $(AWK) -f $@.awk < $(srcdir)/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+ @AWKPATH="$(srcdir)" $(AWK) -f $@.awk < "$(srcdir)"/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
fldchgnf:
@echo $@
- @AWKPATH=$(srcdir) $(AWK) -f $@.awk < $(srcdir)/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+ @AWKPATH="$(srcdir)" $(AWK) -f $@.awk < "$(srcdir)"/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
fnamedat:
@echo $@
- @AWKPATH=$(srcdir) $(AWK) -f $@.awk < $(srcdir)/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+ @AWKPATH="$(srcdir)" $(AWK) -f $@.awk < "$(srcdir)"/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
fnarray:
@echo $@
- @AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+ @AWKPATH="$(srcdir)" $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
fnarray2:
@echo $@
- @AWKPATH=$(srcdir) $(AWK) -f $@.awk < $(srcdir)/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+ @AWKPATH="$(srcdir)" $(AWK) -f $@.awk < "$(srcdir)"/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
fnaryscl:
@echo $@
- @AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+ @AWKPATH="$(srcdir)" $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
fnasgnm:
@echo $@
- @AWKPATH=$(srcdir) $(AWK) -f $@.awk < $(srcdir)/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+ @AWKPATH="$(srcdir)" $(AWK) -f $@.awk < "$(srcdir)"/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
fnmisc:
@echo $@
- @AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+ @AWKPATH="$(srcdir)" $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
fordel:
@echo $@
- @AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+ @AWKPATH="$(srcdir)" $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
forref:
@echo $@
- @AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+ @AWKPATH="$(srcdir)" $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
forsimp:
@echo $@
- @AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+ @AWKPATH="$(srcdir)" $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
fsbs:
@echo $@
- @AWKPATH=$(srcdir) $(AWK) -f $@.awk < $(srcdir)/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+ @AWKPATH="$(srcdir)" $(AWK) -f $@.awk < "$(srcdir)"/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
fsrs:
@echo $@
- @AWKPATH=$(srcdir) $(AWK) -f $@.awk < $(srcdir)/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+ @AWKPATH="$(srcdir)" $(AWK) -f $@.awk < "$(srcdir)"/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
fstabplus:
@echo $@
- @AWKPATH=$(srcdir) $(AWK) -f $@.awk < $(srcdir)/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+ @AWKPATH="$(srcdir)" $(AWK) -f $@.awk < "$(srcdir)"/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
funsemnl:
@echo $@
- @AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+ @AWKPATH="$(srcdir)" $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
funsmnam:
@echo $@
- @AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+ @AWKPATH="$(srcdir)" $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
funstack:
@echo $@
- @AWKPATH=$(srcdir) $(AWK) -f $@.awk < $(srcdir)/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+ @AWKPATH="$(srcdir)" $(AWK) -f $@.awk < "$(srcdir)"/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
getline:
@echo $@
- @AWKPATH=$(srcdir) $(AWK) -f $@.awk < $(srcdir)/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+ @AWKPATH="$(srcdir)" $(AWK) -f $@.awk < "$(srcdir)"/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
getline3:
@echo $@
- @AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+ @AWKPATH="$(srcdir)" $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
getline4:
@echo $@
- @AWKPATH=$(srcdir) $(AWK) -f $@.awk < $(srcdir)/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+ @AWKPATH="$(srcdir)" $(AWK) -f $@.awk < "$(srcdir)"/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
getline5:
@echo $@
- @AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+ @AWKPATH="$(srcdir)" $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
getnr2tb:
@echo $@
- @AWKPATH=$(srcdir) $(AWK) -f $@.awk < $(srcdir)/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+ @AWKPATH="$(srcdir)" $(AWK) -f $@.awk < "$(srcdir)"/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
getnr2tm:
@echo $@
- @AWKPATH=$(srcdir) $(AWK) -f $@.awk < $(srcdir)/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+ @AWKPATH="$(srcdir)" $(AWK) -f $@.awk < "$(srcdir)"/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
gsubasgn:
@echo $@
- @AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+ @AWKPATH="$(srcdir)" $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
gsubtest:
@echo $@
- @AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+ @AWKPATH="$(srcdir)" $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
gsubtst2:
@echo $@
- @AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+ @AWKPATH="$(srcdir)" $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
gsubtst4:
@echo $@
- @AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+ @AWKPATH="$(srcdir)" $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
gsubtst5:
@echo $@
- @AWKPATH=$(srcdir) $(AWK) -f $@.awk < $(srcdir)/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+ @AWKPATH="$(srcdir)" $(AWK) -f $@.awk < "$(srcdir)"/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
gsubtst7:
@echo $@
- @AWKPATH=$(srcdir) $(AWK) -f $@.awk < $(srcdir)/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+ @AWKPATH="$(srcdir)" $(AWK) -f $@.awk < "$(srcdir)"/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
gsubtst8:
@echo $@
- @AWKPATH=$(srcdir) $(AWK) -f $@.awk < $(srcdir)/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+ @AWKPATH="$(srcdir)" $(AWK) -f $@.awk < "$(srcdir)"/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
hex:
@echo $@
- @AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+ @AWKPATH="$(srcdir)" $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
hsprint:
@echo $@
- @AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+ @AWKPATH="$(srcdir)" $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
inputred:
@echo $@
- @AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+ @AWKPATH="$(srcdir)" $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
intest:
@echo $@
- @AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+ @AWKPATH="$(srcdir)" $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
intprec:
@echo $@
- @AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+ @AWKPATH="$(srcdir)" $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
iobug1:
@echo $@
- @AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+ @AWKPATH="$(srcdir)" $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
leadnl:
@echo $@
- @AWKPATH=$(srcdir) $(AWK) -f $@.awk < $(srcdir)/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+ @AWKPATH="$(srcdir)" $(AWK) -f $@.awk < "$(srcdir)"/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
longsub:
@echo $@
- @AWKPATH=$(srcdir) $(AWK) -f $@.awk < $(srcdir)/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+ @AWKPATH="$(srcdir)" $(AWK) -f $@.awk < "$(srcdir)"/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
longwrds:
@echo $@
- @AWKPATH=$(srcdir) $(AWK) -f $@.awk < $(srcdir)/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+ @AWKPATH="$(srcdir)" $(AWK) -f $@.awk < "$(srcdir)"/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
manglprm:
@echo $@
- @AWKPATH=$(srcdir) $(AWK) -f $@.awk < $(srcdir)/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+ @AWKPATH="$(srcdir)" $(AWK) -f $@.awk < "$(srcdir)"/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
math:
@echo $@
- @AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+ @AWKPATH="$(srcdir)" $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
membug1:
@echo $@
- @AWKPATH=$(srcdir) $(AWK) -f $@.awk < $(srcdir)/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+ @AWKPATH="$(srcdir)" $(AWK) -f $@.awk < "$(srcdir)"/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
minusstr:
@echo $@
- @AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+ @AWKPATH="$(srcdir)" $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
nasty:
@echo $@
- @AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+ @AWKPATH="$(srcdir)" $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
nasty2:
@echo $@
- @AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+ @AWKPATH="$(srcdir)" $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
negexp:
@echo $@
- @AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+ @AWKPATH="$(srcdir)" $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
negrange:
@echo $@
- @AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+ @AWKPATH="$(srcdir)" $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
nested:
@echo $@
- @AWKPATH=$(srcdir) $(AWK) -f $@.awk < $(srcdir)/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+ @AWKPATH="$(srcdir)" $(AWK) -f $@.awk < "$(srcdir)"/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
nfldstr:
@echo $@
- @AWKPATH=$(srcdir) $(AWK) -f $@.awk < $(srcdir)/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+ @AWKPATH="$(srcdir)" $(AWK) -f $@.awk < "$(srcdir)"/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
+
+nfloop:
+ @echo $@
+ @AWKPATH="$(srcdir)" $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
nfneg:
@echo $@
- @AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+ @AWKPATH="$(srcdir)" $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
nfset:
@echo $@
- @AWKPATH=$(srcdir) $(AWK) -f $@.awk < $(srcdir)/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+ @AWKPATH="$(srcdir)" $(AWK) -f $@.awk < "$(srcdir)"/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
nlfldsep:
@echo $@
- @AWKPATH=$(srcdir) $(AWK) -f $@.awk < $(srcdir)/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+ @AWKPATH="$(srcdir)" $(AWK) -f $@.awk < "$(srcdir)"/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
nlinstr:
@echo $@
- @AWKPATH=$(srcdir) $(AWK) -f $@.awk < $(srcdir)/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+ @AWKPATH="$(srcdir)" $(AWK) -f $@.awk < "$(srcdir)"/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
nlstrina:
@echo $@
- @AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+ @AWKPATH="$(srcdir)" $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
noeffect:
@echo $@
- @AWKPATH=$(srcdir) $(AWK) -f $@.awk --lint >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+ @AWKPATH="$(srcdir)" $(AWK) -f $@.awk --lint >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
nofmtch:
@echo $@
- @AWKPATH=$(srcdir) $(AWK) -f $@.awk --lint >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+ @AWKPATH="$(srcdir)" $(AWK) -f $@.awk --lint >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
noloop1:
@echo $@
- @AWKPATH=$(srcdir) $(AWK) -f $@.awk < $(srcdir)/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+ @AWKPATH="$(srcdir)" $(AWK) -f $@.awk < "$(srcdir)"/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
noloop2:
@echo $@
- @AWKPATH=$(srcdir) $(AWK) -f $@.awk < $(srcdir)/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+ @AWKPATH="$(srcdir)" $(AWK) -f $@.awk < "$(srcdir)"/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
noparms:
@echo $@
- @AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+ @AWKPATH="$(srcdir)" $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
nulrsend:
@echo $@
- @AWKPATH=$(srcdir) $(AWK) -f $@.awk < $(srcdir)/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+ @AWKPATH="$(srcdir)" $(AWK) -f $@.awk < "$(srcdir)"/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
numindex:
@echo $@
- @AWKPATH=$(srcdir) $(AWK) -f $@.awk < $(srcdir)/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+ @AWKPATH="$(srcdir)" $(AWK) -f $@.awk < "$(srcdir)"/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
numsubstr:
@echo $@
- @AWKPATH=$(srcdir) $(AWK) -f $@.awk < $(srcdir)/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+ @AWKPATH="$(srcdir)" $(AWK) -f $@.awk < "$(srcdir)"/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
octsub:
@echo $@
- @AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+ @AWKPATH="$(srcdir)" $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
ofmt:
@echo $@
- @AWKPATH=$(srcdir) $(AWK) -f $@.awk < $(srcdir)/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+ @AWKPATH="$(srcdir)" $(AWK) -f $@.awk < "$(srcdir)"/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
ofmta:
@echo $@
- @AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+ @AWKPATH="$(srcdir)" $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
ofmtbig:
@echo $@
- @AWKPATH=$(srcdir) $(AWK) -f $@.awk < $(srcdir)/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+ @AWKPATH="$(srcdir)" $(AWK) -f $@.awk < "$(srcdir)"/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
ofmtfidl:
@echo $@
- @AWKPATH=$(srcdir) $(AWK) -f $@.awk < $(srcdir)/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+ @AWKPATH="$(srcdir)" $(AWK) -f $@.awk < "$(srcdir)"/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
ofmts:
@echo $@
- @AWKPATH=$(srcdir) $(AWK) -f $@.awk < $(srcdir)/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+ @AWKPATH="$(srcdir)" $(AWK) -f $@.awk < "$(srcdir)"/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
ofs1:
@echo $@
- @AWKPATH=$(srcdir) $(AWK) -f $@.awk < $(srcdir)/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+ @AWKPATH="$(srcdir)" $(AWK) -f $@.awk < "$(srcdir)"/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
onlynl:
@echo $@
- @AWKPATH=$(srcdir) $(AWK) -f $@.awk < $(srcdir)/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+ @AWKPATH="$(srcdir)" $(AWK) -f $@.awk < "$(srcdir)"/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
opasnidx:
@echo $@
- @AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+ @AWKPATH="$(srcdir)" $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
opasnslf:
@echo $@
- @AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+ @AWKPATH="$(srcdir)" $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
paramdup:
@echo $@
- @AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+ @AWKPATH="$(srcdir)" $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
paramres:
@echo $@
- @AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+ @AWKPATH="$(srcdir)" $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
paramtyp:
@echo $@
- @AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+ @AWKPATH="$(srcdir)" $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
paramuninitglobal:
@echo $@
- @AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+ @AWKPATH="$(srcdir)" $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
parse1:
@echo $@
- @AWKPATH=$(srcdir) $(AWK) -f $@.awk < $(srcdir)/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+ @AWKPATH="$(srcdir)" $(AWK) -f $@.awk < "$(srcdir)"/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
parsefld:
@echo $@
- @AWKPATH=$(srcdir) $(AWK) -f $@.awk < $(srcdir)/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+ @AWKPATH="$(srcdir)" $(AWK) -f $@.awk < "$(srcdir)"/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
parseme:
@echo $@
- @AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+ @AWKPATH="$(srcdir)" $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
pcntplus:
@echo $@
- @AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+ @AWKPATH="$(srcdir)" $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
prdupval:
@echo $@
- @AWKPATH=$(srcdir) $(AWK) -f $@.awk < $(srcdir)/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+ @AWKPATH="$(srcdir)" $(AWK) -f $@.awk < "$(srcdir)"/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
prec:
@echo $@
- @AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+ @AWKPATH="$(srcdir)" $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
printf1:
@echo $@
- @AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+ @AWKPATH="$(srcdir)" $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
prmarscl:
@echo $@
- @AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+ @AWKPATH="$(srcdir)" $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
prmreuse:
@echo $@
- @AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+ @AWKPATH="$(srcdir)" $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
prt1eval:
@echo $@
- @AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+ @AWKPATH="$(srcdir)" $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
prtoeval:
@echo $@
- @AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+ @AWKPATH="$(srcdir)" $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
rand:
@echo $@
- @AWKPATH=$(srcdir) $(AWK) $(AWKFLAGS) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-if test -z "$$AWKFLAGS" ; then $(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@ ; else \
- $(CMP) $(srcdir)/$@-mpfr.ok _$@ && rm -f _$@ ; \
+ @AWKPATH="$(srcdir)" $(AWK) $(AWKFLAGS) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-if test -z "$$AWKFLAGS" ; then $(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@ ; else \
+ $(CMP) "$(srcdir)"/$@-mpfr.ok _$@ && rm -f _$@ ; \
fi
range1:
@echo $@
- @AWKPATH=$(srcdir) $(AWK) -f $@.awk < $(srcdir)/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+ @AWKPATH="$(srcdir)" $(AWK) -f $@.awk < "$(srcdir)"/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
rebt8b1:
@echo $@
- @AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+ @AWKPATH="$(srcdir)" $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
regeq:
@echo $@
- @AWKPATH=$(srcdir) $(AWK) -f $@.awk < $(srcdir)/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+ @AWKPATH="$(srcdir)" $(AWK) -f $@.awk < "$(srcdir)"/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
regexprange:
@echo $@
- @AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+ @AWKPATH="$(srcdir)" $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
regrange:
@echo $@
- @AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+ @AWKPATH="$(srcdir)" $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
reindops:
@echo $@
- @AWKPATH=$(srcdir) $(AWK) -f $@.awk < $(srcdir)/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+ @AWKPATH="$(srcdir)" $(AWK) -f $@.awk < "$(srcdir)"/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
reparse:
@echo $@
- @AWKPATH=$(srcdir) $(AWK) -f $@.awk < $(srcdir)/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+ @AWKPATH="$(srcdir)" $(AWK) -f $@.awk < "$(srcdir)"/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
resplit:
@echo $@
- @AWKPATH=$(srcdir) $(AWK) -f $@.awk < $(srcdir)/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+ @AWKPATH="$(srcdir)" $(AWK) -f $@.awk < "$(srcdir)"/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
rs:
@echo $@
- @AWKPATH=$(srcdir) $(AWK) -f $@.awk < $(srcdir)/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+ @AWKPATH="$(srcdir)" $(AWK) -f $@.awk < "$(srcdir)"/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
rsnul1nl:
@echo $@
- @AWKPATH=$(srcdir) $(AWK) -f $@.awk < $(srcdir)/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+ @AWKPATH="$(srcdir)" $(AWK) -f $@.awk < "$(srcdir)"/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
rstest1:
@echo $@
- @AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+ @AWKPATH="$(srcdir)" $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
rstest2:
@echo $@
- @AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+ @AWKPATH="$(srcdir)" $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
rstest3:
@echo $@
- @AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+ @AWKPATH="$(srcdir)" $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
rstest4:
@echo $@
- @AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+ @AWKPATH="$(srcdir)" $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
rstest5:
@echo $@
- @AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+ @AWKPATH="$(srcdir)" $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
rswhite:
@echo $@
- @AWKPATH=$(srcdir) $(AWK) -f $@.awk < $(srcdir)/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+ @AWKPATH="$(srcdir)" $(AWK) -f $@.awk < "$(srcdir)"/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
scalar:
@echo $@
- @AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+ @AWKPATH="$(srcdir)" $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
sclforin:
@echo $@
- @AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+ @AWKPATH="$(srcdir)" $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
sclifin:
@echo $@
- @AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+ @AWKPATH="$(srcdir)" $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
sortempty:
@echo $@
- @AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+ @AWKPATH="$(srcdir)" $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
splitargv:
@echo $@
- @AWKPATH=$(srcdir) $(AWK) -f $@.awk < $(srcdir)/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+ @AWKPATH="$(srcdir)" $(AWK) -f $@.awk < "$(srcdir)"/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
splitarr:
@echo $@
- @AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+ @AWKPATH="$(srcdir)" $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
splitdef:
@echo $@
- @AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+ @AWKPATH="$(srcdir)" $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
splitvar:
@echo $@
- @AWKPATH=$(srcdir) $(AWK) -f $@.awk < $(srcdir)/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+ @AWKPATH="$(srcdir)" $(AWK) -f $@.awk < "$(srcdir)"/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
splitwht:
@echo $@
- @AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+ @AWKPATH="$(srcdir)" $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
strcat1:
@echo $@
- @AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+ @AWKPATH="$(srcdir)" $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
strnum1:
@echo $@
- @AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+ @AWKPATH="$(srcdir)" $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
strtod:
@echo $@
- @AWKPATH=$(srcdir) $(AWK) -f $@.awk < $(srcdir)/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+ @AWKPATH="$(srcdir)" $(AWK) -f $@.awk < "$(srcdir)"/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
subsepnm:
@echo $@
- @AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+ @AWKPATH="$(srcdir)" $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
subslash:
@echo $@
- @AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+ @AWKPATH="$(srcdir)" $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
substr:
@echo $@
- @AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+ @AWKPATH="$(srcdir)" $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
swaplns:
@echo $@
- @AWKPATH=$(srcdir) $(AWK) -f $@.awk < $(srcdir)/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+ @AWKPATH="$(srcdir)" $(AWK) -f $@.awk < "$(srcdir)"/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
synerr1:
@echo $@
- @AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+ @AWKPATH="$(srcdir)" $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
synerr2:
@echo $@
- @AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+ @AWKPATH="$(srcdir)" $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
uninit2:
@echo $@
- @AWKPATH=$(srcdir) $(AWK) -f $@.awk --lint >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+ @AWKPATH="$(srcdir)" $(AWK) -f $@.awk --lint >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
uninit3:
@echo $@
- @AWKPATH=$(srcdir) $(AWK) -f $@.awk --lint >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+ @AWKPATH="$(srcdir)" $(AWK) -f $@.awk --lint >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
uninit4:
@echo $@
- @AWKPATH=$(srcdir) $(AWK) -f $@.awk --lint >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+ @AWKPATH="$(srcdir)" $(AWK) -f $@.awk --lint >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
uninit5:
@echo $@
- @AWKPATH=$(srcdir) $(AWK) -f $@.awk --lint >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+ @AWKPATH="$(srcdir)" $(AWK) -f $@.awk --lint >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
uninitialized:
@echo $@
- @AWKPATH=$(srcdir) $(AWK) -f $@.awk --lint >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+ @AWKPATH="$(srcdir)" $(AWK) -f $@.awk --lint >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
unterm:
@echo $@
- @AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+ @AWKPATH="$(srcdir)" $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
uparrfs:
@echo $@
- @AWKPATH=$(srcdir) $(AWK) -f $@.awk < $(srcdir)/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+ @AWKPATH="$(srcdir)" $(AWK) -f $@.awk < "$(srcdir)"/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
wjposer1:
@echo $@
- @AWKPATH=$(srcdir) $(AWK) -f $@.awk < $(srcdir)/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+ @AWKPATH="$(srcdir)" $(AWK) -f $@.awk < "$(srcdir)"/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
zero2:
@echo $@
- @AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+ @AWKPATH="$(srcdir)" $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
zeroe0:
@echo $@
- @AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+ @AWKPATH="$(srcdir)" $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
zeroflag:
@echo $@
- @AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+ @AWKPATH="$(srcdir)" $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
getlnhd:
@echo $@
- @AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+ @AWKPATH="$(srcdir)" $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
aadelete1:
@echo $@
- @AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+ @AWKPATH="$(srcdir)" $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
aadelete2:
@echo $@
- @AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+ @AWKPATH="$(srcdir)" $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
aarray1:
@echo $@
- @AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+ @AWKPATH="$(srcdir)" $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
aasort:
@echo $@
- @AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+ @AWKPATH="$(srcdir)" $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
aasorti:
@echo $@
- @AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+ @AWKPATH="$(srcdir)" $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
arraysort:
@echo $@
- @AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+ @AWKPATH="$(srcdir)" $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
backw:
@echo $@
- @AWKPATH=$(srcdir) $(AWK) -f $@.awk < $(srcdir)/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+ @AWKPATH="$(srcdir)" $(AWK) -f $@.awk < "$(srcdir)"/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
delsub:
@echo $@
- @AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+ @AWKPATH="$(srcdir)" $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
fieldwdth:
@echo $@
- @AWKPATH=$(srcdir) $(AWK) -f $@.awk < $(srcdir)/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+ @AWKPATH="$(srcdir)" $(AWK) -f $@.awk < "$(srcdir)"/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
fpat1:
@echo $@
- @AWKPATH=$(srcdir) $(AWK) -f $@.awk < $(srcdir)/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+ @AWKPATH="$(srcdir)" $(AWK) -f $@.awk < "$(srcdir)"/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
fpat2:
@echo $@
- @AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+ @AWKPATH="$(srcdir)" $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
fpat3:
@echo $@
- @AWKPATH=$(srcdir) $(AWK) -f $@.awk < $(srcdir)/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+ @AWKPATH="$(srcdir)" $(AWK) -f $@.awk < "$(srcdir)"/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
fpatnull:
@echo $@
- @AWKPATH=$(srcdir) $(AWK) -f $@.awk < $(srcdir)/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+ @AWKPATH="$(srcdir)" $(AWK) -f $@.awk < "$(srcdir)"/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
fsfwfs:
@echo $@
- @AWKPATH=$(srcdir) $(AWK) -f $@.awk < $(srcdir)/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+ @AWKPATH="$(srcdir)" $(AWK) -f $@.awk < "$(srcdir)"/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
funlen:
@echo $@
- @AWKPATH=$(srcdir) $(AWK) -f $@.awk < $(srcdir)/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+ @AWKPATH="$(srcdir)" $(AWK) -f $@.awk < "$(srcdir)"/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
functab1:
@echo $@
- @AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+ @AWKPATH="$(srcdir)" $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
functab2:
@echo $@
- @AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+ @AWKPATH="$(srcdir)" $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
functab3:
@echo $@
- @AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+ @AWKPATH="$(srcdir)" $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
fwtest:
@echo $@
- @AWKPATH=$(srcdir) $(AWK) -f $@.awk < $(srcdir)/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+ @AWKPATH="$(srcdir)" $(AWK) -f $@.awk < "$(srcdir)"/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
fwtest2:
@echo $@
- @AWKPATH=$(srcdir) $(AWK) -f $@.awk < $(srcdir)/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+ @AWKPATH="$(srcdir)" $(AWK) -f $@.awk < "$(srcdir)"/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
fwtest3:
@echo $@
- @AWKPATH=$(srcdir) $(AWK) -f $@.awk < $(srcdir)/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+ @AWKPATH="$(srcdir)" $(AWK) -f $@.awk < "$(srcdir)"/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
gensub:
@echo $@
- @AWKPATH=$(srcdir) $(AWK) -f $@.awk < $(srcdir)/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+ @AWKPATH="$(srcdir)" $(AWK) -f $@.awk < "$(srcdir)"/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
gensub2:
@echo $@
- @AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+ @AWKPATH="$(srcdir)" $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
getlndir:
@echo $@
- @AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+ @AWKPATH="$(srcdir)" $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
gnuops2:
@echo $@
- @AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+ @AWKPATH="$(srcdir)" $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
gnuops3:
@echo $@
- @AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+ @AWKPATH="$(srcdir)" $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
gnureops:
@echo $@
- @AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+ @AWKPATH="$(srcdir)" $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
icasefs:
@echo $@
- @AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+ @AWKPATH="$(srcdir)" $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
icasers:
@echo $@
- @AWKPATH=$(srcdir) $(AWK) -f $@.awk < $(srcdir)/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+ @AWKPATH="$(srcdir)" $(AWK) -f $@.awk < "$(srcdir)"/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
id:
@echo $@
- @AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+ @AWKPATH="$(srcdir)" $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
igncdym:
@echo $@
- @AWKPATH=$(srcdir) $(AWK) -f $@.awk < $(srcdir)/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+ @AWKPATH="$(srcdir)" $(AWK) -f $@.awk < "$(srcdir)"/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
igncfs:
@echo $@
- @AWKPATH=$(srcdir) $(AWK) -f $@.awk < $(srcdir)/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+ @AWKPATH="$(srcdir)" $(AWK) -f $@.awk < "$(srcdir)"/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
ignrcase:
@echo $@
- @AWKPATH=$(srcdir) $(AWK) -f $@.awk < $(srcdir)/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+ @AWKPATH="$(srcdir)" $(AWK) -f $@.awk < "$(srcdir)"/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
include:
@echo $@
- @AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+ @AWKPATH="$(srcdir)" $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
indirectcall:
@echo $@
- @AWKPATH=$(srcdir) $(AWK) -f $@.awk < $(srcdir)/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+ @AWKPATH="$(srcdir)" $(AWK) -f $@.awk < "$(srcdir)"/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
lint:
@echo $@
- @AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+ @AWKPATH="$(srcdir)" $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
lintold:
@echo $@
- @AWKPATH=$(srcdir) $(AWK) -f $@.awk --lint-old < $(srcdir)/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+ @AWKPATH="$(srcdir)" $(AWK) -f $@.awk --lint-old < "$(srcdir)"/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
lintwarn:
@echo $@
- @AWKPATH=$(srcdir) $(AWK) -f $@.awk --lint >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+ @AWKPATH="$(srcdir)" $(AWK) -f $@.awk --lint >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
match1:
@echo $@
- @AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+ @AWKPATH="$(srcdir)" $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
match2:
@echo $@
- @AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+ @AWKPATH="$(srcdir)" $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
match3:
@echo $@
- @AWKPATH=$(srcdir) $(AWK) -f $@.awk < $(srcdir)/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+ @AWKPATH="$(srcdir)" $(AWK) -f $@.awk < "$(srcdir)"/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
nastyparm:
@echo $@
- @AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+ @AWKPATH="$(srcdir)" $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
nondec:
@echo $@
- @AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+ @AWKPATH="$(srcdir)" $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
patsplit:
@echo $@
- @AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+ @AWKPATH="$(srcdir)" $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
posix:
@echo $@
- @AWKPATH=$(srcdir) $(AWK) -f $@.awk < $(srcdir)/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+ @AWKPATH="$(srcdir)" $(AWK) -f $@.awk < "$(srcdir)"/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
printfbad1:
@echo $@
- @AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+ @AWKPATH="$(srcdir)" $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
printfbad3:
@echo $@
- @AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+ @AWKPATH="$(srcdir)" $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
procinfs:
@echo $@
- @AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+ @AWKPATH="$(srcdir)" $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
pty1:
@echo $@
- @AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+ @AWKPATH="$(srcdir)" $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
rebuf:
@echo $@
- @AWKPATH=$(srcdir) $(AWK) -f $@.awk < $(srcdir)/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+ @AWKPATH="$(srcdir)" $(AWK) -f $@.awk < "$(srcdir)"/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
regx8bit:
@echo $@
- @AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+ @AWKPATH="$(srcdir)" $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
rstest6:
@echo $@
- @AWKPATH=$(srcdir) $(AWK) -f $@.awk < $(srcdir)/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+ @AWKPATH="$(srcdir)" $(AWK) -f $@.awk < "$(srcdir)"/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
shadow:
@echo $@
- @AWKPATH=$(srcdir) $(AWK) -f $@.awk --lint >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+ @AWKPATH="$(srcdir)" $(AWK) -f $@.awk --lint >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
sortfor:
@echo $@
- @AWKPATH=$(srcdir) $(AWK) -f $@.awk < $(srcdir)/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+ @AWKPATH="$(srcdir)" $(AWK) -f $@.awk < "$(srcdir)"/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
sortu:
@echo $@
- @AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+ @AWKPATH="$(srcdir)" $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
+
+split_after_fpat:
+ @echo $@
+ @AWKPATH="$(srcdir)" $(AWK) -f $@.awk < "$(srcdir)"/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
splitarg4:
@echo $@
- @AWKPATH=$(srcdir) $(AWK) -f $@.awk < $(srcdir)/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+ @AWKPATH="$(srcdir)" $(AWK) -f $@.awk < "$(srcdir)"/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
strtonum:
@echo $@
- @AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+ @AWKPATH="$(srcdir)" $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
switch2:
@echo $@
- @AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+ @AWKPATH="$(srcdir)" $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
symtab1:
@echo $@
- @AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+ @AWKPATH="$(srcdir)" $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
symtab2:
@echo $@
- @AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+ @AWKPATH="$(srcdir)" $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
symtab3:
@echo $@
- @AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+ @AWKPATH="$(srcdir)" $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
symtab4:
@echo $@
- @AWKPATH=$(srcdir) $(AWK) -f $@.awk < $(srcdir)/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+ @AWKPATH="$(srcdir)" $(AWK) -f $@.awk < "$(srcdir)"/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
symtab5:
@echo $@
- @AWKPATH=$(srcdir) $(AWK) -f $@.awk < $(srcdir)/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+ @AWKPATH="$(srcdir)" $(AWK) -f $@.awk < "$(srcdir)"/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
symtab7:
@echo $@
- @AWKPATH=$(srcdir) $(AWK) -f $@.awk < $(srcdir)/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+ @AWKPATH="$(srcdir)" $(AWK) -f $@.awk < "$(srcdir)"/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
double1:
@echo $@
- @AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+ @AWKPATH="$(srcdir)" $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
double2:
@echo $@
- @AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+ @AWKPATH="$(srcdir)" $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
intformat:
@echo $@
- @AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+ @AWKPATH="$(srcdir)" $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
asort:
@echo $@
- @AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+ @AWKPATH="$(srcdir)" $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
asorti:
@echo $@
- @AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+ @AWKPATH="$(srcdir)" $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
fmttest:
@echo $@
- @AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+ @AWKPATH="$(srcdir)" $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
fnarydel:
@echo $@
- @AWKPATH=$(srcdir) $(AWK) $(AWKFLAGS) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-if test -z "$$AWKFLAGS" ; then $(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@ ; else \
- $(CMP) $(srcdir)/$@-mpfr.ok _$@ && rm -f _$@ ; \
+ @AWKPATH="$(srcdir)" $(AWK) $(AWKFLAGS) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-if test -z "$$AWKFLAGS" ; then $(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@ ; else \
+ $(CMP) "$(srcdir)"/$@-mpfr.ok _$@ && rm -f _$@ ; \
fi
fnparydl:
@echo $@
- @AWKPATH=$(srcdir) $(AWK) $(AWKFLAGS) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-if test -z "$$AWKFLAGS" ; then $(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@ ; else \
- $(CMP) $(srcdir)/$@-mpfr.ok _$@ && rm -f _$@ ; \
+ @AWKPATH="$(srcdir)" $(AWK) $(AWKFLAGS) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-if test -z "$$AWKFLAGS" ; then $(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@ ; else \
+ $(CMP) "$(srcdir)"/$@-mpfr.ok _$@ && rm -f _$@ ; \
fi
rebt8b2:
@echo $@
- @AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+ @AWKPATH="$(srcdir)" $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
sort1:
@echo $@
- @AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+ @AWKPATH="$(srcdir)" $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
sprintfc:
@echo $@
- @AWKPATH=$(srcdir) $(AWK) -f $@.awk < $(srcdir)/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+ @AWKPATH="$(srcdir)" $(AWK) -f $@.awk < "$(srcdir)"/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
fnmatch:
@echo $@
- @AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+ @AWKPATH="$(srcdir)" $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
filefuncs:
@echo $@
- @AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+ @AWKPATH="$(srcdir)" $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
fork:
@echo $@
- @AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+ @AWKPATH="$(srcdir)" $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
fork2:
@echo $@
- @AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+ @AWKPATH="$(srcdir)" $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
functab4:
@echo $@
- @AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+ @AWKPATH="$(srcdir)" $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
ordchr:
@echo $@
- @AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+ @AWKPATH="$(srcdir)" $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
revout:
@echo $@
- @AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+ @AWKPATH="$(srcdir)" $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
revtwoway:
@echo $@
- @AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+ @AWKPATH="$(srcdir)" $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
rwarray:
@echo $@
- @AWKPATH=$(srcdir) $(AWK) -f $@.awk < $(srcdir)/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+ @AWKPATH="$(srcdir)" $(AWK) -f $@.awk < "$(srcdir)"/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
time:
@echo $@
- @AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+ @AWKPATH="$(srcdir)" $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
# end of file Maketests
diff --git a/test/backbigs1.awk b/test/backbigs1.awk
new file mode 100644
index 00000000..fb4d811f
--- /dev/null
+++ b/test/backbigs1.awk
@@ -0,0 +1 @@
+/\S/
diff --git a/test/backbigs1.in b/test/backbigs1.in
new file mode 100644
index 00000000..16b415f4
--- /dev/null
+++ b/test/backbigs1.in
@@ -0,0 +1 @@
+‚
diff --git a/test/backbigs1.ok b/test/backbigs1.ok
new file mode 100644
index 00000000..e69de29b
--- /dev/null
+++ b/test/backbigs1.ok
diff --git a/test/backsmalls1.awk b/test/backsmalls1.awk
new file mode 100644
index 00000000..f3e0aba4
--- /dev/null
+++ b/test/backsmalls1.awk
@@ -0,0 +1 @@
+/^\s$/
diff --git a/test/backsmalls1.in b/test/backsmalls1.in
new file mode 100644
index 00000000..491807cd
--- /dev/null
+++ b/test/backsmalls1.in
@@ -0,0 +1,36 @@
+# U+00A0 NO-BREAK SPACE: c2 a0
+# 
+# U+2007 FIGURE SPACE: e2 80 87
+# 
+# U+200B ZERO WIDTH SPACE: e2 80 8b
+#​
+# U+202F NARROW NO-BREAK SPACE: e2 80 af
+# 
+U+0020 SPACE: 20
+
+U+1680 OGHAM SPACE MARK: e1 9a 80
+ 
+U+2000 EN QUAD: e2 80 80
+ 
+U+2001 EM QUAD: e2 80 81
+â€
+U+2002 EN SPACE: e2 80 82
+ 
+U+2003 EM SPACE: e2 80 83
+ 
+U+2004 THREE-PER-EM SPACE: e2 80 84
+ 
+U+2005 FOUR-PER-EM SPACE: e2 80 85
+ 
+U+2006 SIX-PER-EM SPACE: e2 80 86
+ 
+U+2008 PUNCTUATION SPACE: e2 80 88
+ 
+U+2009 THIN SPACE: e2 80 89
+ 
+U+200A HAIR SPACE: e2 80 8a
+ 
+U+205F MEDIUM MATHEMATICAL SPACE: e2 81 9f
+âŸ
+U+3000 IDEOGRAPHIC SPACE: e3 80 80
+ 
diff --git a/test/backsmalls1.ok b/test/backsmalls1.ok
new file mode 100644
index 00000000..1f678123
--- /dev/null
+++ b/test/backsmalls1.ok
@@ -0,0 +1,14 @@
+
+ 
+ 
+â€
+ 
+ 
+ 
+ 
+ 
+ 
+ 
+ 
+âŸ
+ 
diff --git a/test/backsmalls2.awk b/test/backsmalls2.awk
new file mode 100644
index 00000000..02326f58
--- /dev/null
+++ b/test/backsmalls2.awk
@@ -0,0 +1,10 @@
+BEGIN {
+ pat["^\\s*$"] = pat["^\\s+$"] = pat["^\\s?$"] = pat["^\\s{1}$"] = 1
+ for (i in pat) {
+ if (" " !~ i) {
+ printf("pattern \"%s\" failed!\n", i) > "/dev/stderr"
+ exit 1
+ }
+ }
+ exit 0
+}
diff --git a/test/backsmalls2.ok b/test/backsmalls2.ok
new file mode 100644
index 00000000..e69de29b
--- /dev/null
+++ b/test/backsmalls2.ok
diff --git a/test/badassign1.awk b/test/badassign1.awk
new file mode 100644
index 00000000..5614f4a4
--- /dev/null
+++ b/test/badassign1.awk
@@ -0,0 +1 @@
+BEGIN { $i++ = 3 ; print i }
diff --git a/test/badassign1.ok b/test/badassign1.ok
new file mode 100644
index 00000000..c5ade3b3
--- /dev/null
+++ b/test/badassign1.ok
@@ -0,0 +1,3 @@
+gawk: badassign1.awk:1: BEGIN { $i++ = 3 ; print i }
+gawk: badassign1.awk:1: ^ cannot assign a value to the result of a field post-increment expression
+EXIT CODE: 1
diff --git a/test/fts.awk b/test/fts.awk
index a1b49cbd..70af560f 100644
--- a/test/fts.awk
+++ b/test/fts.awk
@@ -3,8 +3,19 @@
BEGIN {
Level = 0
- system("rm -fr d1 d2")
- system("mkdir d1 d2 ; touch d1/f1 d1/f2 d2/f1 d2/f2")
+ os = ""
+ if (ENVIRON["AWKLIBPATH"] == "sys$disk:[-]") {
+ os = "VMS"
+ system("create/dir/prot=o:rwed [.d1]")
+ system("create/dir/prot=o:rwed [.d2]")
+ system("copy fts.awk [.d1]f1")
+ system("copy fts.awk [.d1]f2")
+ system("copy fts.awk [.d2]f1")
+ system("copy fts.awk [.d2]f2")
+ } else {
+ system("rm -fr d1 d2")
+ system("mkdir d1 d2 ; touch d1/f1 d1/f2 d2/f1 d2/f2")
+ }
pathlist[1] = "d1"
pathlist[2] = "d2"
flags = FTS_PHYSICAL
@@ -19,7 +30,14 @@ BEGIN {
traverse(data2)
close(output)
- system("rm -fr d1 d2")
+ if (os == "VMS") {
+ system("delete [.d1]*.*;*")
+ system("delete [.d2]*.*;*")
+ system("delete d1.dir;*")
+ system("delete d2.dir;*")
+ } else {
+ system("rm -fr d1 d2")
+ }
}
function indent( i)
@@ -96,6 +114,13 @@ function process(pathname, data_array,
for (i in stat_data)
data_array[pathname]["."]["stat"][i] = stat_data[i]
+ os = ""
+ if (ENVIRON["AWKLIBPATH"] == "sys$disk:[-]") {
+ os = "VMS"
+ # Command in next section not valid on VMS.
+ return
+ }
+
command = ("ls -f " pathname)
while ((command | getline direntry) > 0) {
if (direntry == "." || direntry == "..")
diff --git a/test/mpfrnegzero.awk b/test/mpfrnegzero.awk
new file mode 100644
index 00000000..cc6bf65b
--- /dev/null
+++ b/test/mpfrnegzero.awk
@@ -0,0 +1,15 @@
+BEGIN {
+ printf("-0 -> %f, -0.0 -> %f\n", -0, -0.0)
+
+ printf("atan2(+0, -0) = %f\n", atan2(+0, -0))
+ printf("atan2(+0.0, -0.0) = %f\n", atan2(+0.0, -0.0))
+
+ printf("atan2(-0, -0) = %f\n", atan2(-0, -0))
+ printf("atan2(-0.0, -0.0) = %f\n", atan2(-0.0, -0.0))
+
+ printf("atan2(+0, +0) = %f\n", atan2(+0, +0))
+ printf("atan2(+0.0, +0.0) = %f\n", atan2(+0.0, +0.0))
+
+ printf("atan2(-0, +0) = %f\n", atan2(-0, +0))
+ printf("atan2(-0.0, +0.0) = %f\n", atan2(-0.0, +0.0))
+}
diff --git a/test/mpfrnegzero.ok b/test/mpfrnegzero.ok
new file mode 100644
index 00000000..7af16292
--- /dev/null
+++ b/test/mpfrnegzero.ok
@@ -0,0 +1,9 @@
+-0 -> -0.000000, -0.0 -> -0.000000
+atan2(+0, -0) = 3.141593
+atan2(+0.0, -0.0) = 3.141593
+atan2(-0, -0) = -3.141593
+atan2(-0.0, -0.0) = -3.141593
+atan2(+0, +0) = 0.000000
+atan2(+0.0, +0.0) = 0.000000
+atan2(-0, +0) = -0.000000
+atan2(-0.0, +0.0) = -0.000000
diff --git a/test/nfloop.awk b/test/nfloop.awk
new file mode 100644
index 00000000..c37700ac
--- /dev/null
+++ b/test/nfloop.awk
@@ -0,0 +1,8 @@
+BEGIN {
+ $0 = "aaa"
+ NF = 10
+ for (j = 2; j <= NF; ++j) {
+ $j = "_"
+ }
+ print
+}
diff --git a/test/nfloop.ok b/test/nfloop.ok
new file mode 100644
index 00000000..cc683eae
--- /dev/null
+++ b/test/nfloop.ok
@@ -0,0 +1 @@
+aaa _ _ _ _ _ _ _ _ _
diff --git a/test/rand.ok b/test/rand.ok
index 60432b95..1df4ba39 100644
--- a/test/rand.ok
+++ b/test/rand.ok
@@ -1 +1 @@
- 62 67 88 6 35 77 3 68 30 96 90 26 35 8 88 93 49 53 37
+ 67 6 77 68 96 26 8 93 53 74 53 95 78 74 96 77 33 58 91
diff --git a/test/randtest.ok b/test/randtest.ok
new file mode 100644
index 00000000..e69de29b
--- /dev/null
+++ b/test/randtest.ok
diff --git a/test/randtest.sh b/test/randtest.sh
new file mode 100755
index 00000000..b17fda73
--- /dev/null
+++ b/test/randtest.sh
@@ -0,0 +1,113 @@
+# THIS PURPOSELY DOES NOT HAVE A !# LINE !!!!
+#
+# Date: Mon, 9 Sep 2013 14:49:43 -0700
+# From: Bob Jewett <jewett@bill.scs.agilent.com>
+# Message-Id: <201309092149.r89Lnh94010909@bill.scs.agilent.com>
+# To: arnold@skeeve.com
+# Subject: Re: [bug-gawk] Bug in random() in builtin.c
+#
+# Hi Arnold,
+#
+# Attached below is a script that tests gawk for this particular
+# rand() problem. The pair-wise combinations show a strong
+# autocorrelation for a delay of 31 pairs of rand() samples.
+#
+# The script prints out the measured autocorrelation for a record
+# of NSAMPLES pairs. It also prints a fail message at the end if
+# it fails.
+#
+# If you want to see the autocorrelation values, there is a print
+# statement that if uncommented will save them to a file.
+#
+# Please let me know if the mailer screws up the transfer or
+# if you have any questions about the test.
+#
+# Best regards,
+# Bob
+#
+# -------------- test_pair_power_autocorrelation -----------------------
+#
+#!/bin/ksh
+
+#GAWK=/bin/gawk
+
+# ADR: Get GAWK from the environment.
+# Additional note: This wants ksh/bash for the use of $RANDOM below to
+# seed the generator. However, shells that don't provide it won't be
+# a problem since gawk will then seed the generator with the time of day,
+# as srand() will be called without an argument.
+
+# large NSAMPLES and NRUNS will bring any correlation out of the noise better
+NSAMPLES=1024; MAX_ALLOWED_SIGMA=5; NRUNS=50;
+
+$GAWK 'BEGIN{
+ srand('$RANDOM');
+ nsamples=('$NSAMPLES');
+ max_allowed_sigma=('$MAX_ALLOWED_SIGMA');
+ nruns=('$NRUNS');
+ for(tau=0;tau<nsamples/2;tau++) corr[tau]=0;
+
+ for(run=0;run<nruns;run++) {
+ sum=0;
+
+ # Fill an array with a sequence of samples that are a
+ # function of pairs of rand() values.
+
+ for(i=0;i<nsamples;i++) {
+ samp[i]=((rand()-0.5)*(rand()-0.5))^2;
+ sum=sum+samp[i];
+ }
+
+ # Subtract off the mean of the sequence:
+
+ mean=sum/nsamples;
+ for(i=0;i<nsamples;i++) samp[i]=samp[i]-mean;
+
+ # Calculate an autocorrelation function on the sequence.
+ # Because the values of rand() should be independent, there
+ # should be no peaks in the autocorrelation.
+
+ for(tau=0;tau<nsamples/2;tau++) {
+ sum=0;
+ for(i=0;i<nsamples/2;i++) sum=sum+samp[i]*samp[i+tau];
+ corr[tau]=corr[tau]+sum;
+ }
+
+ }
+ # Normalize the autocorrelation to the tau=0 value.
+
+ max_corr=corr[0];
+ for(tau=0;tau<nsamples/2;tau++) corr[tau]=corr[tau]/max_corr;
+
+ # OPTIONALLY Print out the autocorrelation values:
+
+ # for(tau=0;tau<nsamples/2;tau++) print tau, corr[tau] > "pairpower_corr.data";
+
+ # Calculate the sigma for the non-zero tau values:
+
+ power_sum=0;
+
+ for(tau=1;tau<nsamples/2;tau++) power_sum=power_sum+(corr[tau])^2;
+
+ sigma=sqrt(power_sum/(nsamples/2-1));
+
+ # See if any of the correlations exceed a reasonable number of sigma:
+
+ passed=1;
+ for(tau=1;tau<nsamples/2;tau++) {
+ if ( abs(corr[tau])/sigma > max_allowed_sigma ) {
+ print "Tau=", tau ", Autocorr=", corr[tau]/sigma, "sigma";
+ passed=0;
+ }
+ }
+ if(!passed) {
+ print "Test failed."
+ exit(1);
+ }
+ else exit (0);
+ }
+
+function abs(abs_input) { return(sqrt(abs_input^2)) ; }
+'
+
+exit 0
diff --git a/test/readdir0.awk b/test/readdir0.awk
index c98ac674..2b7674a4 100644
--- a/test/readdir0.awk
+++ b/test/readdir0.awk
@@ -1,4 +1,9 @@
+# NOTE: This program is not a generalized parser for the output of 'ls'.
+# It's job is to read the output of ls from the gawk source code directory,
+# where we know there are no symbolic links, nor are there files with
+# spaces in their file names, etc.
BEGIN {
+ # analyze results from readdir extension
while ((getline x < extout) > 0) {
numrec++
if ((split(x, f, "/") == 3) && (f[3] == "u"))
@@ -11,12 +16,29 @@ BEGIN {
}
}
-{
- ino = $1
- name = $NF
- type = substr($2, 1, 1)
- if (type == "-")
- type = "f"
+BEGIN {
+ for (i = 1; (getline < dirlist) > 0; i++) {
+ # inode number is $1, filename is read of record
+ inode = $1
+ $1 = ""
+ $0 = $0
+ sub(/^ */, "")
+ names[i] = $0
+ ino[names[i]] = inode
+ }
+ close(dirlist)
+
+ for (j = 1; (getline < longlist) > 0; j++) {
+ type_let = substr($0, 1, 1)
+ if (type_let == "-")
+ type_let = "f"
+ type[$NF] = type_let
+ }
+ close(longlist)
- printf "%s/%s/%s\n", ino, name, (ftype_unknown ? "u" : type)
+ if (i != j)
+ printf("mismatch: %d from `ls -afi' and %d from `ls -lna'\n", i, j) > "/dev/stderr"
+
+ for (i = 1; i in names; i++)
+ printf("%s/%s/%s\n", ino[names[i]], names[i], (ftype_unknown ? "u" : type[names[i]]))
}
diff --git a/test/readfile2.awk b/test/readfile2.awk
new file mode 100644
index 00000000..c21483fc
--- /dev/null
+++ b/test/readfile2.awk
@@ -0,0 +1,12 @@
+@load "readfile"
+BEGIN { PROCINFO["readfile"] = 1 }
+BEGINFILE { print "Start of", basename(FILENAME) }
+{ printf ("%d: <%s>\n", FNR, $0 ) }
+ENDFILE { print "End of", basename(FILENAME) }
+
+function basename(file, result)
+{
+ result = file
+ gsub(".*/", "", result)
+ return result
+}
diff --git a/test/readfile2.ok b/test/readfile2.ok
new file mode 100644
index 00000000..be1ded6c
--- /dev/null
+++ b/test/readfile2.ok
@@ -0,0 +1,21 @@
+Start of readfile2.awk
+1: <@load "readfile"
+BEGIN { PROCINFO["readfile"] = 1 }
+BEGINFILE { print "Start of", basename(FILENAME) }
+{ printf ("%d: <%s>\n", FNR, $0 ) }
+ENDFILE { print "End of", basename(FILENAME) }
+
+function basename(file, result)
+{
+ result = file
+ gsub(".*/", "", result)
+ return result
+}
+>
+End of readfile2.awk
+Start of readdir.awk
+1: <@load "readdir"
+
+{ print }
+>
+End of readdir.awk
diff --git a/test/regrange.ok b/test/regrange.ok
index 1fa00c70..ae8c6499 100644
--- a/test/regrange.ok
+++ b/test/regrange.ok
@@ -3,4 +3,4 @@
"c" ~ /[[a-d]/ --> 1
"\" ~ /[\[-\]]/ --> 1
"[.c.]" ~ /[a-[.e.]]/ --> 1
-"[.d.]" ~ /[[.c.]-[.z.]]/ --> 0
+"[.d.]" ~ /[[.c.]-[.z.]]/ --> 1
diff --git a/test/rwarray.awk b/test/rwarray.awk
index 5d1b7e9d..0cb214ee 100644
--- a/test/rwarray.awk
+++ b/test/rwarray.awk
@@ -21,13 +21,20 @@ BEGIN {
printf("dict[%s] = %s\n", dictindices[i], dict[dictindices[i]]) > "new.out"
close("new.out");
- ret = system("cmp orig.out new.out")
-
- if (ret == 0)
- print "old and new are equal - GOOD"
- else
- print "old and new are not equal - BAD"
-
- if (ret == 0 && !("KEEPIT" in ENVIRON))
- system("rm -f orig.bin orig.out new.out")
+ os = ""
+ if (ENVIRON["AWKLIBPATH"] == "sys$disk:[-]") {
+ os = "VMS"
+ # return status from system() on VMS can not be used here
+ }
+ if (os != "VMS") {
+ ret = system("cmp orig.out new.out")
+
+ if (ret == 0)
+ print "old and new are equal - GOOD"
+ else
+ print "old and new are not equal - BAD"
+
+ if (ret == 0 && !("KEEPIT" in ENVIRON))
+ system("rm -f orig.bin orig.out new.out")
+ }
}
diff --git a/test/split_after_fpat.awk b/test/split_after_fpat.awk
new file mode 100644
index 00000000..7e7cfd99
--- /dev/null
+++ b/test/split_after_fpat.awk
@@ -0,0 +1,11 @@
+BEGIN { FPAT = "\"[^\"]*\"" }
+
+{ print $1 }
+
+END { f("hi there") }
+
+function f (p, a, n, i)
+{
+ n = split(p,a)
+ print n ; for (i=1; i<=n; i++) print a[i]
+}
diff --git a/test/split_after_fpat.in b/test/split_after_fpat.in
new file mode 100644
index 00000000..1aeefd59
--- /dev/null
+++ b/test/split_after_fpat.in
@@ -0,0 +1 @@
+a"stuff"b
diff --git a/test/split_after_fpat.ok b/test/split_after_fpat.ok
new file mode 100644
index 00000000..5c284490
--- /dev/null
+++ b/test/split_after_fpat.ok
@@ -0,0 +1,4 @@
+"stuff"
+2
+hi
+there
diff --git a/test/strftime.awk b/test/strftime.awk
index 775cd4e5..f1276c15 100644
--- a/test/strftime.awk
+++ b/test/strftime.awk
@@ -1,19 +1,35 @@
# strftime.awk ; test the strftime code
#
# input is the output of `date', see Makefile.in
-#
-# The mucking about with $0 and $N is to avoid problems
-# on cygwin, where the timezone field is empty and there
-# are two consecutive blanks.
-# Additional mucking about to lop off the seconds field;
-# helps decrease chance of difference due to a second boundary
+BEGIN {
+ maxtries = 10
+ # On DOS/Windows, DATECMD is set by the Makefile to point to
+ # Unix-like 'date' command.
+ datecmd = DATECMD
+ if (datecmd == "")
+ datecmd = "date"
+ fmt = "%a %b %e %H:%M:%S %Z %Y"
-{
- $3 = sprintf("%02d", $3 + 0)
- $4 = substr($4, 1, 5)
- print > "strftime.ok"
- $0 = strftime("%a %b %d %H:%M %Z %Y")
- $NF = $NF
- print > OUTPUT
+ # loop until before equals after, thereby protecting
+ # against a race condition where the seconds field might have
+ # incremented between running date and strftime
+ i = 0
+ while (1) {
+ if (++i > maxtries) {
+ printf "Warning: this system is so slow that after %d attempts, we could never get two sequential invocations of strftime to give the same result!\n", maxtries > "/dev/stderr"
+ break
+ }
+ before = strftime(fmt)
+ datecmd | getline sd
+ after = strftime(fmt)
+ close(datecmd)
+ if (before == after) {
+ if (i > 1)
+ printf "Notice: it took %d loops to get the before and after strftime values to match\n", i > "/dev/stderr"
+ break
+ }
+ }
+ print sd > "strftime.ok"
+ print after > OUTPUT
}
diff --git a/version.c b/version.c
index ca33a578..f5cf6ac0 100644
--- a/version.c
+++ b/version.c
@@ -1,3 +1,3 @@
#include "config.h"
-const char *version_string = "GNU Awk 4.1.0";
+const char *version_string = PACKAGE_STRING;
diff --git a/version.in b/version.in
deleted file mode 100644
index a489761a..00000000
--- a/version.in
+++ /dev/null
@@ -1,3 +0,0 @@
-#include "config.h"
-
-const char *version_string = "@PACKAGE_STRING@";
diff --git a/vms/ChangeLog b/vms/ChangeLog
index 048e2e61..1bb34475 100644
--- a/vms/ChangeLog
+++ b/vms/ChangeLog
@@ -1,3 +1,141 @@
+2014-04-08 Arnold D. Robbins <arnold@skeeve.com>
+
+ * 4.1.1: Release tar ball made.
+
+2014-04-08 Arnold D. Robbins <arnold@skeeve.com>
+
+ * descrip.mms, vmsbuild.com: Update patchlevel.
+
+2014-02-12 John E. Malmberg <wb8tyw@qsl.net>
+
+ * vmstest.com: (strftime) requires GNV Coreutils date command to run
+ (readdir) fix file cleanup to not generate warnings.
+
+2014-01-21 John E. Malmberg <wb8tyw@qsl.net>
+
+ * generate_config_vms_h_gawk.com: upate copyright and fix exit status.
+
+2014-01-17 John E. Malmberg <wb8tyw@qsl.net>
+
+ * vmstest.com (split_after_fpat): Added this test.
+
+2014-01-03 John E. Malmberg <wb8tyw@qsl.net>
+
+ * config_h.com, generate_config_vms_h_gawk.com,
+ vms_args.c, vms_cli.c, vms_fwrite.c, vms_gawk.c, vms_misc.c,
+ vms_popen.c: Update copyright to 2014.
+ * descrip.mms: Improve spotless cleanup.
+ * vmstest.com: Improve test cleanup.
+ * backup_gawk_src.com: New file. Create backup savesets for gawk source.
+ * build_gawk_pcsi_desc.com: New file. Create a pcsi$desc manifest
+ file for building a gawk package.
+ * build_gawk_pcsi_text.com: New file. Create a pcsi$text file for
+ building a gawk package.
+ * build_gawk_release_notes.com: New file. Create a VMS release notes
+ file based on the gawk README and COPYING files and the release note
+ start and build instruction files.
+ * compare_gawk_source.com: New file. Helper file to compare and
+ optionally update two gawk source directories. Used to copy
+ source from an NFS volume to a VMS native volume for backup.
+ * gawk_alias_setup.com: New file. Used at installation time to
+ create hard links for for some files instead of copies.
+ * gawk_build_steps.txt: New file. Document how to build a PCSI kit.
+ * gawk_release_note_start.txt: New file. Start of release notes.
+ * gawk_verb.com: New file. Converts the gawk.cld file into a
+ gawk_verb.cld file for setting up GAWK as a DCL command.
+ * gnv_gawk_startup.com: New file. Makes sure that the GNV$GNU logical
+ name need to easily find the gawk image is defined.
+ * make_pcsi_gawk_kit_name.com: New File. Create the PCSI kit name
+ based on the GAWK version.
+ * pcsi_gawk_file_list.txt: New File. Input file for creating the
+ pcsi$desc manifest file.
+ * pcsi_product_gawk.com: New file. File to create the PCSI kit.
+ * remove_old_gawk.com: New file. File to remove obsolete GNV gawk
+ files replaced by the new PCSI kit.
+ * stage_gawk_install.com: New file. Stages an install for the
+ pcsi kit building.
+
+2013-12-29 John E. Malmberg <wb8tyw@qsl.net>
+
+ * gawk_plugin.opt: New file. Needed to build plugins on IA64
+ and ALPHA.
+ * generate_config_vms_h_gawk.com: Document which version
+ of VMS the mkstemp issue was seen.
+ * vms_popen: (pclose): Tolerate invalid file pointer.
+ * vmstest.com: Add tests for extensions ported to VMS.
+
+2013-12-23 John E. Malmberg <wb8tyw@qsl.net>
+
+ * gawkmisc.vms: Fix program name calculation on VAX.
+ * vms_cli.c: Fix case of public symbol.
+ * vms.hlp: Fix typo, add cautions on rounding and timezones.
+ * vmstest.com: Dcl symbol tz causing conflict with test.
+
+2013-12-20 John E. Malmberg <wb8tyw@qsl.net>
+
+ * descrip.mms: Set CC exact symbol names, cleanup repository.
+ * generate_config_vms_h_gawk.com: Use correct VMS exit codes.
+ * vmsbuild.com: Set CC exact symbol names.
+ * vmstest.com: Extract correct Unix status for failed tests.
+ * vms.h, vms_args.c, vms_cli.c, vms_fwrite.c, vms_gawk.c,
+ vms_misc.c, vms_popen.c: Correct case of function names.
+ * vms.hlp: Updated with new information about exit codes.
+
+2013-12-10 John E. Malmberg <wb8tyw@qsl.net>
+
+ * gawkmisc.vms: Add lots of includes.
+ (sys_trnlnm): New function.
+ (gawk_name): Improved.
+ (os_arg_fixup): Fix up time zone.
+
+2013-12-08 John E. Malmberg <wb8tyw@qsl.net>
+
+ * descrip.mms: Add IEEE float for non-vax.
+ Add vms_crtl_init.c.
+ Remove code to generate version.c
+ * generate_config_vms_h_gawk.com (__attribute__): Removed
+ definition from here.
+ * version_c.com: removed no longer used.
+ * vmsbuild.com: Add IEEE float for non-vax.
+ Add vms_crtl_init.c
+ Remove code to generate version.c
+ Changes that should have been in the previous commit.
+ * vms_misc.c (vms_open): VMS CRTL for 8.3 Alpha is setting
+ errno to ENOENT instead of EISDIR for ".".
+
+2013-12-05 John E. Malmberg <wb8tyw@qsl.net>
+
+ * New config_h.com to generate config.h
+ * New gawk_ident.com generates ident line for link option file.
+ * Add version_c.com to create version.c from version.in.
+ * Remove fcntl.h covering up real fcntl.h. If an older version
+ of VMS needs this file, the build procedure should be updated
+ to generate it from a template.
+ * descrip.mms: Use command files to generate files based
+ on same input files as a Linux build.
+ * gawkmisc.vms (files_are_same): support _USE_STD_STAT for VMS 8.x.
+ * generate_config_vms_h_gawk.com: Generates a helper file
+ config_vms.h to cover issues config_h.com can not handle.
+ * vmsbuild.com: Use command files to generate files based
+ on the same input files as a Linux build.
+ * vms_misc.c (vms_open): VMS CRTL setting errno to ENOENT where
+ it should be set to EMFILE.
+
+2013-12-06 Arnold D. Robbins <arnold@skeeve.com>
+
+ * vms-conf.h (__attribute__): Removed definition from here; fixed
+ the issue in the main sources.
+
+2013-12-01 Arnold D. Robbins <arnold@skeeve.com>
+
+ * vms-conf.h (ALLOW_SWITCH): Removed. No longer used.
+ (__attribute__): Define as empty.
+
+2013-08-26 Arnold D. Robbins <arnold@skeeve.com>
+
+ * vms-conf.h (RE_TOKEN_INIT_BUG): Remove define (change of
+ Feb 19 2005) since it's no longer needed.
+
2013-06-03 Arnold D. Robbins <arnold@skeeve.com>
* gawkmisc.c (init_sockets): New dummy function.
diff --git a/vms/backup_gawk_src.com b/vms/backup_gawk_src.com
new file mode 100644
index 00000000..d1e47fbe
--- /dev/null
+++ b/vms/backup_gawk_src.com
@@ -0,0 +1,113 @@
+$! File: Backup_gawk_src.com
+$!
+$! Procedure to create backup save sets for installing in a PCSI kit.
+$!
+$! To comply with most Open Source licenses, the source used for building
+$! a kit will be packaged with the distribution kit for the binary.
+$!
+$! Backup save sets are the only storage format that I can expect a
+$! VMS system to be able to extract ODS-5 filenames and directories.
+$!
+$! The make_pcsi_kit_name.com needs to be run before this procedure to
+$! properly name the files that will be created.
+$!
+$! This file is created from a template file for the purpose of making it
+$! easier to port Unix code, particularly open source code to VMS.
+$! Therefore permission is freely granted for any use.
+$!
+$! 13-Jun-2009 J. Malmberg
+$!
+$!===========================================================================
+$!
+$! Save default
+$ default_dir = f$environment("DEFAULT")
+$!
+$ arch_type = f$getsyi("ARCH_NAME")
+$ arch_code = f$extract(0, 1, arch_type)
+$!
+$ if arch_code .nes. "V"
+$ then
+$ set proc/parse=extended
+$ endif
+$!
+$ ss_abort = 44
+$ status = ss_abort
+$!
+$ kit_name = f$trnlnm("GNV_PCSI_KITNAME")
+$ if kit_name .eqs. ""
+$ then
+$ write sys$output "@MAKE_PCSI_GAWK_KIT_NAME.COM has not been run."
+$ goto all_exit
+$ endif
+$ producer = f$trnlnm("GNV_PCSI_PRODUCER")
+$ if producer .eqs. ""
+$ then
+$ write sys$output "@MAKE_PCSI_GAWK_KIT_NAME.COM has not been run."
+$ goto all_exit
+$ endif
+$ filename_base = f$trnlnm("GNV_PCSI_FILENAME_BASE")
+$ if filename_base .eqs. ""
+$ then
+$ write sys$output "@MAKE_PCSI_GAWK_KIT_NAME.COM has not been run."
+$ goto all_exit
+$ endif
+$!
+$ node_swvers = f$getsyi("NODE_SWVERS")
+$ node_swvers_type = f$extract(0, 1, node_swvers)
+$ node_swvers_vers = f$extract(1, f$length(node_swvers), node_swvers)
+$ swvers_maj = f$element(0, ".", node_swvers_vers)
+$ node_swvers_min_update = f$element(1, ".", node_swvers_vers)
+$ swvers_min = f$element(0, "-", node_swvers_min_update)
+$ swvers_update = f$element(1, "-", node_swvers_min_update)
+$!
+$ if swvers_update .eqs. "-" then swvers_update = ""
+$!
+$ vms_vers = f$fao("!2ZB!2ZB!AS", 'swvers_maj', 'swvers_min', swvers_update)
+$!
+$!
+$!
+$! If available make an interchange save set
+$!-------------------------------------------
+$ interchange = ""
+$ if arch_code .eqs. "V"
+$ then
+$ interchange = "/interchange"
+$ endif
+$ if (swvers_maj .ges. "8") .and. (swvers_min .ges. 4)
+$ then
+$ interchange = "/interchange/noconvert"
+$ endif
+$!
+$!
+$! Put things back on error.
+$ on warning then goto all_exit
+$!
+$ current_default = f$environment("DEFAULT")
+$ my_dir = f$parse(current_default,,,"DIRECTORY") - "[" - "<" - ">" - "]"
+$!
+$ src_root = "src_root:"
+$ if f$trnlnm("src_root1") .nes. "" then src_root = "src_root1:"
+$ backup'interchange' 'src_root'[gawk...]*.*;0 -
+ 'filename_base'_original_src.bck/sav
+$ status = $status
+$!
+$! There may be a VMS specific source kit
+$!-----------------------------------------
+$ vms_root = "vms_root:"
+$ if f$trnlnm("vms_root1") .nes. "" then vms_root = "vms_root1:"
+$ files_found = 0
+$ define/user sys$error nl:
+$ define/user sys$output nl:
+$ directory 'vms_root'[...]*.*;*/exc=*.dir
+$ if '$severity' .eq. 1 then files_found = 1
+$!
+$ if files_found .eq. 1
+$ then
+$ backup'interchange' 'vms_root'[gawk...]*.*;0 -
+ 'filename_base'_vms_src.bck/sav
+$ status = $status
+$ endif
+$!
+$all_exit:
+$ set def 'default_dir'
+$ exit
diff --git a/vms/build_gawk_pcsi_desc.com b/vms/build_gawk_pcsi_desc.com
new file mode 100644
index 00000000..63d149e6
--- /dev/null
+++ b/vms/build_gawk_pcsi_desc.com
@@ -0,0 +1,428 @@
+$! File: Build_GAWK_PCSI_DESC.COM
+$!
+$! Build the *.pcsi$text file in the following sections:
+$! Required software dependencies.
+$! install/upgrade/postinstall steps.
+$! 1. Duplicate filenames need an alias procedure.
+$! 2. ODS-5 filenames need an alias procedure.
+$! 3. Special alias links for executables (cp. -> gnv$cp.exe)
+$! if a lot, then an alias procedure is needed.
+$! 4. Rename the files to lowercase.
+$! Move Release Notes to destination
+$! Source kit option
+$! Create directory lines
+$! Add file lines for gawk.
+$! Add Link alias procedure file (used for gawk)
+$! Add [.SYS$STARTUP]gawk_startup file
+$! Add Release notes file.
+$!
+$! The file PCSI_GAWK_FILE_LIST.TXT is read in to get the files other
+$! than the release notes file and the source backup file.
+$!
+$! The PCSI system can really only handle ODS-2 format filenames and
+$! assumes that there is only one source directory. It also assumes that
+$! all destination files with the same name come from the same source file.
+$! Fortunately GAWK does not trip most of these issues, so those steps
+$! above are marked N/A.
+$!
+$! A rename action section is needed to make sure that the files are
+$! created in the GNV$GNU: in the correct case, and to create the alias
+$! link [usr.bin]gawk. for [usr.bin]gawk.exe.
+$!
+$! 02-Jan-2014 J. Malmberg - Gawk version
+$!
+$!===========================================================================
+$!
+$ kit_name = f$trnlnm("GNV_PCSI_KITNAME")
+$ if kit_name .eqs. ""
+$ then
+$ write sys$output "@[.vms]MAKE_PCSI_GAWK_KIT_NAME.COM has not been run."
+$ goto all_exit
+$ endif
+$ producer = f$trnlnm("GNV_PCSI_PRODUCER")
+$ if producer .eqs. ""
+$ then
+$ write sys$output "@[.vms]MAKE_PCSI_GAWK_KIT_NAME.COM has not been run."
+$ goto all_exit
+$ endif
+$ filename_base = f$trnlnm("GNV_PCSI_FILENAME_BASE")
+$ if filename_base .eqs. ""
+$ then
+$ write sys$output "@[.vms]MAKE_PCSI_GAWK_KIT_NAME.COM has not been run."
+$ goto all_exit
+$ endif
+$!
+$!
+$! Parse the kit name into components.
+$!---------------------------------------
+$ producer = f$element(0, "-", kit_name)
+$ base = f$element(1, "-", kit_name)
+$ product = f$element(2, "-", kit_name)
+$ mmversion = f$element(3, "-", kit_name)
+$ majorver = f$extract(0, 3, mmversion)
+$ minorver = f$extract(3, 2, mmversion)
+$ updatepatch = f$element(4, "-", kit_name)
+$ if updatepatch .eqs. "-" then updatepatch = ""
+$!
+$! kit type of "D" means a daily build
+$ kit_type = f$edit(f$extract(0, 1, majorver), "upcase")
+$!
+$!
+$ product_line = "product ''producer' ''base' ''product'"
+$ if updatepatch .eqs. ""
+$ then
+$ product_name = " ''majorver'.''minorver'"
+$ else
+$ product_name = " ''majorver'.''minorver'-''updatepatch'"
+$ endif
+$ product_line = product_line + " ''product_name' full;"
+$!write sys$output product_line
+$!
+$!
+$!
+$! Create the file as a VMS text file.
+$!----------------------------------------
+$ base_file = kit_name
+$ create 'base_file'.pcsi$desc
+$!
+$!
+$! Start building file.
+$!----------------------
+$ open/append pdsc 'base_file'.pcsi$desc
+$!
+$ write pdsc product_line
+$!
+$! Required product dependencies.
+$!----------------------------------
+$ vmsprd = "DEC"
+$ if base .eqs. "I64VMS" then vmsprd = "HP"
+$!
+$ write pdsc " software ''vmsprd' ''base' VMS ;"
+$ arch_type = f$getsyi("ARCH_NAME")
+$ node_swvers = f$getsyi("node_swvers")
+$ vernum = f$extract(1, f$length(node_swvers), node_swvers)
+$ majver = f$element(0, ".", vernum)
+$ minverdash = f$element(1, ".", vernum)
+$ minver = f$element(0, "-", minverdash)
+$ dashver = f$element(1, "-", minverdash)
+$ if dashver .eqs. "-" then dashver = ""
+$ vmstag = majver + minver + dashver
+$ code = f$extract(0, 1, arch_type)
+$ arch_code = f$extract(0, 1, arch_type)
+$ write pdsc -
+ " if (not <software ''vmsprd' ''base' VMS version minimum ''node_swvers'>) ;"
+$ write pdsc " error NEED_VMS''vmstag';"
+$ write pdsc " end if;"
+$!
+$!
+$!
+$! install/upgrade/postinstall steps.
+$!-----------------------------------
+$! 1. Duplicate filenames need an alias procedure.
+$! 2. ODS-5 filenames need an alias procedure.
+$! 3. Special alias links for executables (gawk. -> gnv$gawk.exe)
+$! if a lot, then an alias procedure is needed.
+$! 4. Rename the files to lowercase.
+$!
+$!
+$! Alias links needed.
+$!-------------------------
+$ add_alias_lines = ""
+$ rem_alias_lines = ""
+$ line_out = ""
+$!
+$! Read through the file list to set up aliases and rename commands.
+$!---------------------------------------------------------------------
+$ open/read flst [.vms]pcsi_gawk_file_list.txt
+$!
+$inst_alias_loop:
+$ read/end=inst_alias_loop_end flst line_in
+$ line_in = f$edit(line_in,"compress,trim,uncomment")
+$ if line_in .eqs. "" then goto inst_alias_loop
+$ pathname = f$element(0, " ", line_in)
+$ linkflag = f$element(1, " ", line_in)
+
+$ if linkflag .nes. "->" then goto inst_alias_write
+$!
+$ linktarget = f$element(2, " ", line_in)
+$ nlink = "pcsi$destination:" + pathname
+$ ntarg = "pcsi$destination:" + linktarget
+$ new_add_alias_line = -
+ """if f$search(""""''nlink'"""") .eqs. """""""" then" + -
+ " set file/enter=''nlink' ''ntarg'"""
+$ if add_alias_lines .nes. ""
+$ then
+$ add_alias_lines = add_alias_lines + "," + new_add_alias_line
+$ else
+$ add_alias_lines = new_add_alias_line
+$ endif
+$!
+$ new_rem_alias_line = -
+ """if f$search(""""''nlink'"""") .nes. """""""" then" + -
+ " set file/remove ''nlink';"""
+$ if rem_alias_lines .nes. ""
+$ then
+$ rem_alias_lines = rem_alias_lines + "," + new_rem_alias_line
+$ else
+$ rem_alias_lines = new_rem_alias_line
+$ endif
+$!
+$ goto inst_alias_loop
+$!
+$inst_alias_write:
+$!
+$! execute install / remove
+$ write pdsc " execute install ("
+$! add aliases
+$ i = 0
+$ex_ins_loop:
+$ line = f$element(i, ",", add_alias_lines)
+$ i = i + 1
+$ if line .eqs. "" then goto ex_ins_loop
+$ if line .eqs. "," then goto ex_ins_loop_end
+$ if line_out .nes. "" then write pdsc line_out,","
+$ line_out = line
+$ goto ex_ins_loop
+$ex_ins_loop_end:
+$ if line_out .eqs. "" then line_out = " ""continue"""
+$ write pdsc line_out
+$ line_out = ""
+$ write pdsc " )"
+$ write pdsc " remove ("
+$! remove aliases
+$ line_out = -
+ " ""@pcsi$destination:[gnv.vms_bin]gawk_alias_setup.com remove"""
+$ i = 0
+$ex_rem_loop:
+$ line = f$element(i, ",", rem_alias_lines)
+$ i = i + 1
+$ if line .eqs. "" then goto ex_rem_loop
+$ if line .eqs. "," then goto ex_rem_loop_end
+$ if line_out .nes. "" then write pdsc line_out,","
+$ line_out = line
+$ goto ex_rem_loop
+$ex_rem_loop_end:
+$ if line_out .eqs. "" then line_out = " ""continue"""
+$ write pdsc line_out
+$ line_out = ""
+$ write pdsc " ) ;"
+$!
+$! execute upgrade
+$ write pdsc " execute upgrade ("
+$ line_out = -
+ " ""@pcsi$destination:[gnv.vms_bin]gawk_alias_setup.com remove"""
+$ i = 0
+$ex_upg_loop:
+$ line = f$element(i, ",", rem_alias_lines)
+$ i = i + 1
+$ if line .eqs. "" then goto ex_upg_loop
+$ if line .eqs. "," then goto ex_upg_loop_end
+$ if line_out .nes. "" then write pdsc line_out,","
+$ line_out = line
+$ goto ex_upg_loop
+$ex_upg_loop_end:
+$ if line_out .eqs. "" then line_out = " ""continue"""
+$ write pdsc line_out
+$ line_out = ""
+$! remove aliases
+$ write pdsc " ) ;"
+$!
+$! execute postinstall
+$ write pdsc " execute postinstall ("
+$ if arch_code .nes. "V"
+$ then
+$ line_out = " ""set process/parse=extended"","
+$ write pdsc line_out
+$ endif
+$ line_out = " ""@pcsi$destination:[gnv.vms_bin]remove_old_gawk.com"","
+$ write pdsc line_out
+$ line_out = " ""@pcsi$destination:[gnv.vms_bin]gawk_alias_setup.com"""
+$ i = 0
+$ex_pins_loop:
+$ line = f$element(i, ",", add_alias_lines)
+$ i = i + 1
+$ if line .eqs. "" then goto ex_pins_loop
+$ if line .eqs. "," then goto ex_pins_loop_end
+$ if line_out .nes. "" then write pdsc line_out,","
+$ line_out = line
+$ goto ex_pins_loop
+$ex_pins_loop_end:
+$ if line_out .eqs. "" then line_out = " ""continue"""
+$! write pdsc line_out
+$! line_out = ""
+$! add aliases and follow with renames.
+$!
+$goto inst_dir
+$!
+$inst_dir_loop:
+$ read/end=inst_alias_loop_end flst line_in
+$ line_in = f$edit(line_in,"compress,trim,uncomment")
+$ if line_in .eqs. "" then goto inst_dir_loop
+$inst_dir:
+$ pathname = f$element(0, " ", line_in)
+$!
+$! Ignore the directory entries for now.
+$!-----------------------------------------
+$ filedir = f$parse(pathname,,,"DIRECTORY")
+$ if pathname .eqs. filedir then goto inst_dir_loop
+$!
+$! process .dir extensions for rename
+$! If this is not a directory then start processing files.
+$!-------------------------
+$ filetype = f$parse(pathname,,,"TYPE")
+$ filetype_u = f$edit(filetype, "upcase")
+$ filename = f$parse(pathname,,,"NAME")
+$ if filetype_u .nes. ".DIR" then goto inst_file
+$!
+$! process directory lines for rename.
+$!--------------------------------------
+$ if line_out .nes. ""
+$ then
+$ write pdsc line_out,","
+$ line_out = ""
+$ endif
+$ if arch_code .nes. "V"
+$ then
+$ if line_out .nes. "" then write pdsc line_out,","
+$ line_out = " ""rename pcsi$destination:''pathname' ''filename'.DIR"""
+$ else
+$ if line_out .nes. "" then write pdsc line_out
+$ line_out = ""
+$ endif
+$ goto inst_dir_loop
+$!
+$!
+$! process file lines for rename
+$!---------------------------------
+$inst_file_loop:
+$ read/end=inst_alias_loop_end flst line_in
+$ line_in = f$edit(line_in,"compress,trim,uncomment")
+$ if line_in .eqs. "" then goto inst_dir_loop
+$ pathname = f$element(0, " ", line_in)
+$!
+$! Filenames with $ in them are VMS special and do not need to be lowercased.
+$! --------------------------------------------------------------------------
+$ if f$locate("$", pathname) .lt. f$length(pathname) then goto inst_file_loop
+$!
+$ filetype = f$parse(pathname,,,"TYPE")
+$ filename = f$parse(pathname,,,"NAME") + filetype
+$inst_file:
+$ if arch_code .nes. "V"
+$ then
+$ if line_out .nes. "" then write pdsc line_out,","
+$ filetype = f$parse(pathname,,,"TYPE")
+$ filename = f$parse(pathname,,,"NAME") + filetype
+$ line_out = " ""rename pcsi$destination:''pathname' ''filename'"""
+$ else
+$ if line_out .nes. "" then write pdsc line_out
+$ line_out = ""
+$ endif
+$ goto inst_file_loop
+$!
+$inst_alias_loop_end:
+$!
+$write pdsc line_out
+$write pdsc " ) ;"
+$close flst
+$!
+$! Move Release Notes to destination
+$!-------------------------------------
+$write pdsc " information RELEASE_NOTES phase after ;"
+$!
+$! Source kit option
+$!---------------------
+$write pdsc " option SOURCE default 0;"
+$write pdsc " directory ""[gnv.common_src]"" PROTECTION PUBLIC ;"
+$write pdsc -
+ " file ""[gnv.common_src]''filename_base'_original_src.bck"""
+$write pdsc -
+ " source [common_src]''filename_base'_original_src.bck ;"
+$if f$search("sys$disk:''filename_base'_vms_src.bck") .nes. ""
+$then
+$ write pdsc " directory ""[gnv.vms_src]"" PROTECTION PUBLIC ;"
+$ write pdsc " file ""[gnv.vms_src]''filename_base'_vms_src.bck"""
+$ write pdsc " source [vms_src]''filename_base'_vms_src.bck ;"
+$endif
+$write pdsc " end option;"
+$!
+$!
+$! Read through the file list again.
+$!----------------------------------
+$open/read flst [.vms]pcsi_gawk_file_list.txt
+$!
+$!
+$! Create directory lines
+$!-------------------------
+$flst_dir_loop:
+$ read/end=flst_loop_end flst line_in
+$ line_in = f$edit(line_in,"compress,trim,uncomment")
+$ if line_in .eqs. "" then goto flst_dir_loop
+$!
+$ filename = f$element(0, " ", line_in)
+$ linkflag = f$element(1, " ", line_in)
+$ if linkflag .eqs. "->" then goto flst_dir_loop
+$!
+$! Ignore .dir extensions
+$!-------------------------
+$ filetype = f$edit(f$parse(filename,,,"TYPE"), "upcase")
+$ if filetype .eqs. ".DIR" then goto flst_dir_loop
+$!
+$ destname = filename
+$!
+$! It should be just a directory then.
+$!-------------------------------------
+$ filedir = f$edit(f$parse(filename,,,"DIRECTORY"), "lowercase")
+$! If this is not a directory then start processing files.
+$!---------------------------------------------------------
+$ if filename .nes. filedir then goto flst_file
+$!
+$ write pdsc " directory ""''destname'"" PROTECTION PUBLIC ;"
+$ goto flst_dir_loop
+$!
+$!
+$! Add file lines for gawk.
+$!---------------------------
+$flst_file_loop:
+$ read/end=flst_loop_end flst line_in
+$ line_in = f$edit(line_in,"compress,trim,uncomment")
+$ if line_in .eqs. "" then goto flst_file_loop
+$ filename = f$element(0, " ", line_in)
+$ destname = filename
+$flst_file:
+$ if arch_code .eqs. "V"
+$ then
+$! ! These files not available on VAX.
+$ src_dir = f$parse(destname,,,"DIRECTORY")
+$ if src_dir .eqs. "[GNV.USR.LIB.GAWK]" then goto flst_file_loop
+$ endif
+$ srcfile = filename - "gnv."
+$ write pdsc " file ""''destname'"" "
+$ write pdsc " source ""''srcfile'"" ;"
+$ goto flst_file_loop
+$!
+$flst_loop_end:
+$ close flst
+$!
+$! Add Link alias procedure file (N/A for gawk)
+$!-----------------------------------------------------
+$ write pdsc " file ""[vms_bin]gawk_alias_setup.com"""
+$ write pdsc " source [vms_bin]gawk_alias_setup.com ;"
+$!
+$! Add [.SYS$STARTUP]gawk_startup file
+$!---------------------------------------
+$ write pdsc " file ""[sys$startup]gnv$gawk_startup.com"""
+$ write pdsc " source [vms_bin]gnv$gawk_startup.com ;"
+$!
+$! Add Release notes file.
+$!------------------------------
+$ write pdsc -
+ " file ""[SYSHLP]''filename_base'.release_notes"" release notes ;"
+$!
+$! Close the product file
+$!------------------------
+$ write pdsc "end product;"
+$!
+$close pdsc
+$!
+$all_exit:
+$ exit
diff --git a/vms/build_gawk_pcsi_text.com b/vms/build_gawk_pcsi_text.com
new file mode 100644
index 00000000..a1053cf6
--- /dev/null
+++ b/vms/build_gawk_pcsi_text.com
@@ -0,0 +1,179 @@
+$! File: build_gawk_pcsi_text.com
+$!
+$! Build the *.pcsi$text file from the four components:
+$! 1. Generated =product header section
+$! 2. readme. file from the Gawk distribution, modified to fit
+$! a pcsi$text file format.
+$! 3. copying file from the Gawk distribution, modified to fit
+$! a pcsi$text file format.
+$! 4. Generated Producer section.
+$!
+$! Set the name of the release notes from the GNV_PCSI_FILENAME_BASE
+$!
+$!
+$! 02-Jan-2014 J. Malmberg - Gawk version
+$!
+$!===========================================================================
+$!
+$ kit_name = f$trnlnm("GNV_PCSI_KITNAME")
+$ if kit_name .eqs. ""
+$ then
+$ write sys$output "@MAKE_PCSI_GAWK_KIT_NAME.COM has not been run."
+$ goto all_exit
+$ endif
+$ producer = f$trnlnm("GNV_PCSI_PRODUCER")
+$ if producer .eqs. ""
+$ then
+$ write sys$output "@MAKE_PCSI_GAWK_KIT_NAME.COM has not been run."
+$ goto all_exit
+$ endif
+$ producer_full_name = f$trnlnm("GNV_PCSI_PRODUCER_FULL_NAME")
+$ if producer_full_name .eqs. ""
+$ then
+$ write sys$output "@MAKE_PCSI_GAWK_KIT_NAME.COM has not been run."
+$ goto all_exit
+$ endif
+$!
+$!
+$! Parse the kit name into components.
+$!---------------------------------------
+$ producer = f$element(0, "-", kit_name)
+$ base = f$element(1, "-", kit_name)
+$ product = f$element(2, "-", kit_name)
+$ mmversion = f$element(3, "-", kit_name)
+$ majorver = f$extract(0, 3, mmversion)
+$ minorver = f$extract(3, 2, mmversion)
+$ updatepatch = f$element(4, "-", kit_name)
+$ if updatepatch .eqs. "-" then updatepatch = ""
+$!
+$!
+$ product_line = "=product ''producer' ''base' ''product'"
+$ if updatepatch .eqs. ""
+$ then
+$ product_name = " ''majorver'.''minorver'"
+$ else
+$ product_name = " ''majorver'.''minorver'-''updatepatch'"
+$ endif
+$ product_line = product_line + " ''product_name' full"
+$!
+$!
+$! If this is VAX and the file is on NFS, the names may be mangled.
+$!-----------------------------------------------------------------
+$ readme_file = ""
+$ if f$search("readme.") .nes. ""
+$ then
+$ readme_file = "readme."
+$ else
+$ if f$search("$README.") .nes. ""
+$ then
+$ readme_file = "$README."
+$ else
+$ write sys$output "Can not find readme file."
+$ goto all_exit
+$ endif
+$ endif
+$ copying_file = ""
+$ if f$search("copying.") .nes. ""
+$ then
+$ copying_file = "copying."
+$ else
+$ if f$search("$COPYING.") .nes. ""
+$ then
+$ copying_file = "$COPYING."
+$ else
+$ write sys$output "Can not find copying file."
+$ goto all_exit
+$ endif
+$ endif
+$!
+$! Create the file as a VMS text file.
+$!----------------------------------------
+$ base_file = kit_name
+$ create 'base_file'.pcsi$text
+$!
+$!
+$! Start building file.
+$!----------------------
+$ open/append ptxt 'base_file'.pcsi$text
+$ write ptxt product_line
+$!
+$!
+$! First insert the Readme file.
+$!
+$ open/read rf 'readme_file'
+$!
+$ write ptxt "1 'PRODUCT"
+$ write ptxt "=prompt ''producter' ''product' for OpenVMS"
+$!
+$rf_loop:
+$ read/end=rf_loop_end rf line_in
+$ if line_in .nes. ""
+$ then
+$! PCSI files use the first character in for their purposes.
+$!--------------------------------------------------------------
+$ first_char = f$extract(0, 1, line_in)
+$ if first_char .nes. " " then line_in = " " + line_in
+$ endif
+$ write ptxt line_in
+$ goto rf_loop
+$rf_loop_end:
+$ close rf
+$!
+$!
+$! Now add in the copying file
+$!--------------------------------
+$ write ptxt ""
+$ write ptxt "1 'NOTICE"
+$ write ptxt ""
+$!
+$ open/read cf 'copying_file'
+$!
+$cf_loop:
+$ read/end=cf_loop_end cf line_in
+$ if line_in .nes. ""
+$ then
+$! PCSI files use the first character in for their purposes.
+$!--------------------------------------------------------------
+$ first_char = f$extract(0, 1, line_in)
+$ if first_char .nes. " " then line_in = " " + line_in
+$ endif
+$ write ptxt line_in
+$ goto cf_loop
+$cf_loop_end:
+$ close cf
+$!
+$! Now we need the rest of the boiler plate.
+$!--------------------------------------------
+$ write ptxt ""
+$ write ptxt "1 'PRODUCER"
+$ write ptxt "=prompt ''producer_full_name'"
+$ write ptxt -
+ "This software product is provided by ''producer_full_name' with no warranty."
+$!
+$ arch_type = f$getsyi("ARCH_NAME")
+$ node_swvers = f$getsyi("node_swvers")
+$ vernum = f$extract(1, f$length(node_swvers), node_swvers)
+$ majver = f$element(0, ".", vernum)
+$ minverdash = f$element(1, ".", vernum)
+$ minver = f$element(0, "-", minverdash)
+$ dashver = f$element(1, "-", minverdash)
+$ if dashver .eqs. "-" then dashver = ""
+$ vmstag = majver + minver + dashver
+$ code = f$extract(0, 1, arch_type)
+$!
+$ write ptxt "1 NEED_VMS''vmstag'"
+$ write ptxt -
+ "=prompt OpenVMS ''vernum' or later is not installed on your system."
+$ write ptxt "This product requires OpenVMS ''vernum' or later to function."
+$ write ptxt "1 SOURCE"
+$ write ptxt "=prompt Source modules for ''product'"
+$ write ptxt "The Source modules for ''product' will be installed."
+$ write ptxt "1 RELEASE_NOTES"
+$ write ptxt "=prompt Release notes are available in the [SYSHLP] directory."
+$!
+$ close ptxt
+$!
+$!
+$!
+$all_exit:
+$ exit
diff --git a/vms/build_gawk_release_notes.com b/vms/build_gawk_release_notes.com
new file mode 100644
index 00000000..c088ff8c
--- /dev/null
+++ b/vms/build_gawk_release_notes.com
@@ -0,0 +1,67 @@
+$! File: Build_gawk_release_notes.com
+$!
+$! Build the release note file from the three components:
+$! 1. The gawk_release_note_start.txt
+$! 2. readme. file from the Gawk distribution.
+$! 3. The gawk_build_steps.txt.
+$!
+$! Set the name of the release notes from the GNV_PCSI_FILENAME_BASE
+$! logical name.
+$!
+$!
+$! 31-Dec-2013 J. Malmberg
+$!
+$!===========================================================================
+$!
+$ base_file = f$trnlnm("GNV_PCSI_FILENAME_BASE")
+$ if base_file .eqs. ""
+$ then
+$ write sys$output "@MAKE_PCSI_GAWK_KIT_NAME.COM has not been run."
+$ goto all_exit
+$ endif
+$!
+$ gawk_vms_readme = f$search("sys$disk:[.readme_d]readme.vms")
+$ if gawk_vms_readme .eqs. ""
+$ then
+$ gawk_vms_readme = f$search("sys$disk:[.$README_$D]$README.VMS")
+$ endif
+$ if gawk_vms_readme .eqs. ""
+$ then
+$ write sys$output "Can not find gawk README.VMS file."
+$ goto all_exit
+$ endif
+$!
+$ gawk_readme = f$search("sys$disk:[]readme.")
+$ if gawk_readme .eqs. ""
+$ then
+$ gawk_readme = f$search("sys$disk:[]$README.")
+$ endif
+$ if gawk_readme .eqs. ""
+$ then
+$ write sys$output "Can not find gawk readme file."
+$ goto all_exit
+$ endif
+$!
+$ gawk_copying = f$search("sys$disk:[]copying.")
+$ if gawk_copying .eqs. ""
+$ then
+$ gawk_copying = f$search("sys$disk:[]$COPYING.")
+$ endif
+$ if gawk_copying .eqs. ""
+$ then
+$ write sys$output "Can not find gawk copying file."
+$ goto all_exit
+$ endif
+$!
+$ type/noheader sys$disk:[.vms]gawk_release_note_start.txt,-
+ 'gawk_readme',-
+ 'gawk_vms_readme',-
+ 'gawk_copying', -
+ sys$disk:[.vms]gawk_build_steps.txt -
+ /out='base_file'.release_notes
+$!
+$ purge 'base_file'.release_notes
+$ rename 'base_file.release_notes ;1
+$!
+$all_exit:
+$ exit
diff --git a/vms/compare_gawk_source.com b/vms/compare_gawk_source.com
new file mode 100644
index 00000000..260ec4eb
--- /dev/null
+++ b/vms/compare_gawk_source.com
@@ -0,0 +1,367 @@
+$! Compare_gawk_source.com
+$!
+$! This procedure compares the files in two directories and reports the
+$! differences.
+$!
+$! It needs to be customized to the local site directories.
+$!
+$! This is used by me for these purposes:
+$! 1. Compare the original source of a project with an existing
+$! VMS port.
+$! 2. Compare the checked out repository of a project with the
+$! the local working copy to make sure they are in sync.
+$! 3. Keep a copy directory up to date. The third is needed by
+$! me because VMS Backup can create a saveset of files from a
+$! NFS mounted volume.
+$!
+$! First the files in the original source directory which is assumed to be
+$! under source codde control are compared with the copy directory.
+$!
+$! Then the files are are only in the copy directory are listed.
+$!
+$! The result will five diagnostics about of files:
+$! 1. Files that are not generation 1.
+$! 2. Files missing in the copy directory.
+$! 3. Files in the copy directory not in the source directory.
+$! 4. Files different from the source directory.
+$! 5. Files that VMS DIFF can not process.
+$!
+$! This needs to be run on an ODS-5 volume.
+$!
+$! If UPDATE is given as a second parameter, files missing or different in the
+$! copy directory will be updated.
+$!
+$! By default:
+$! The source directory is source_root:[gawk.reference.gawk],
+$! the logical used on my system for the GNV Mecurial repository checkout.
+$! If source_root: is not defined, then src_root:[gawk] will be
+$! translated to something like DISK:[dir.gawk.reference.gawk]
+$! and then DISK:[dir.gawk.vms_source.gawk] will be used.
+$!
+$! The copy directory is vms_root:[gawk]
+$! The UPDATE parameter is ignored.
+$!
+$! This setting is used to make sure that the working vms directory
+$! and the VMS specific repository checkout directory have the same
+$! contents if they are different.
+$!
+$! If P1 is "SRCBCK" then this
+$! The source directory tree is: src_root:[gawk]
+$! The copy directory is src_root1:[gawk]
+$!
+$! src_root1:[gawk] is used by me to work around that VMS backup will
+$! not use NFS as a source directory so I need to make a copy.
+$!
+$! This is to make sure that the backup save set for the unmodified
+$! source is up to date.
+$!
+$! If your repository checkout is not on an NFS mounted volume, you do not
+$! need to use this option or have the logical name src_root1 defined.
+$!
+$! If P1 is "VMSBCK" then this changes the two directories:
+$! The source directory is vms_root:[gawk]
+$! The copy directory is vms_root1:[gawk]
+$!
+$! vms_root:
+$! src_root1:[gawk] is used by me to work around that VMS backup will
+$! not use NFS as a source directory so I need to make a copy.
+$!
+$! This is to make sure that the backup save set for the unmodified
+$! source is up to date.
+$!
+$! If your repository checkout is not on an NFS mounted volume, you do not
+$! need to use this option or have the logical name src_root1 defined.
+$!
+$! 02-Jan-2014 J. Malmberg
+$!==========================================================================
+$!
+$! Update missing/changed files.
+$update_file = 0
+$if (p2 .eqs. "UPDATE")
+$then
+$ update_file = 1
+$endif
+$!
+$myproc = f$environment("PROCEDURE")
+$myprocdir = f$parse(myproc,,,"DIRECTORY") - "[" - "]" - "<" - ">"
+$myprocdir = f$edit(myprocdir, "LOWERCASE")
+$mydefault = f$environment("DEFAULT")
+$mydir = f$parse(mydefault,,,"DIRECTORY")
+$mydir = f$edit(mydir, "LOWERCASE")
+$odelim = f$extract(0, 1, mydir)
+$mydir = mydir - "[" - "]" - "<" - ">"
+$mydev = f$parse(mydefault,,,"DEVICE")
+$!
+$ref = ""
+$if P1 .eqs. ""
+$then
+$ ref_base_dir = myprocdir - ".vms"
+$ wrk_base_dir = mydir
+$ update_file = 0
+$ resultd = f$parse("src_root:",,,,"NO_CONCEAL")
+$ resultd = f$edit(resultd, "LOWERCASE")
+$ resultd = resultd - "][" - "><" - ".;" - ".."
+$ resultd_len = f$length(resultd) - 1
+$ delim = f$extract(resultd_len, 1, resultd)
+$ ref_root_base = mydir + delim
+$ if f$locate(".reference.", resultd) .lt. resultd_len
+$ then
+$ resultd = resultd - ref_root_base - "reference." + "vms_source."
+$ else
+$ resultd = resultd - ref_root_base - "gnu." + "gnu_vms."
+$ endif
+$ ref = resultd + ref_base_dir
+$ wrk = "VMS_ROOT:" + odelim + wrk_base_dir
+$ resultd_len = f$length(resultd) - 1
+$ resultd = f$extract(0, resultd_len, resultd) + delim
+$ ref_root_dir = f$parse(resultd,,,"DIRECTORY")
+$ ref_root_dir = f$edit(ref_root_dir, "LOWERCASE")
+$ ref_root_dir = ref_root_dir - "[" - "]"
+$ ref_base_dir = ref_root_dir + "." + ref_base_dir
+$endif
+$!
+$if p1 .eqs. "SRCBCK"
+$then
+$ ref_base_dir = "gawk"
+$ wrk_base_dir = "gawk"
+$ ref = "src_root:[" + ref_base_dir
+$ wrk = "src_root1:[" + wrk_base_dir
+$ if update_file
+$ then
+$ if f$search("src_root1:[000000]gawk.dir") .eqs. ""
+$ then
+$ create/dir/prot=o:rwed src_root1:[gawk]
+$ endif
+$ endif
+$endif
+$!
+$!
+$if p1 .eqs. "VMSBCK"
+$then
+$ ref_base_dir = "gawk"
+$ wrk_base_dir = "gawk"
+$ ref = "vms_root:[" + ref_base_dir
+$ wrk = "vms_root1:[" + wrk_base_dir
+$ if update_file
+$ then
+$ if f$search("vms_root1:[000000]gawk.dir") .eqs. ""
+$ then
+$ create/dir/prot=o:rwed vms_root1:[gawk]
+$ endif
+$ endif
+$endif
+$!
+$!
+$if ref .eqs. ""
+$then
+$ write sys$output "Unknown compare type specified!"
+$ exit 44
+$endif
+$!
+$!
+$!
+$! Future - check the device types involved for the
+$! the syntax to check.
+$ODS2_SYNTAX = 0
+$NFS_MANGLE = 0
+$PWRK_MANGLE = 0
+$!
+$vax = f$getsyi("HW_MODEL") .lt. 1024
+$if vax
+$then
+$ ODS2_SYNTAX = 1
+$endif
+$!
+$report_missing = 1
+$!
+$if .not. ODS2_SYNTAX
+$then
+$ set proc/parse=extended
+$endif
+$!
+$loop:
+$ ref_spec = f$search("''ref'...]*.*;",1)
+$ if ref_spec .eqs. "" then goto loop_end
+$!
+$ ref_dev = f$parse(ref_spec,,,"DEVICE")
+$ ref_dir = f$parse(ref_spec,,,"DIRECTORY")
+$ ref_dir = f$edit(ref_dir, "LOWERCASE")
+$ ref_name = f$parse(ref_spec,,,"NAME")
+$ ref_type = f$parse(ref_spec,,,"TYPE")
+$!
+$!
+$ if f$locate(".CVS]", ref_dir) .lt. f$length(ref_dir) then goto loop
+$ if f$locate(".cvs]", ref_dir) .lt. f$length(ref_dir) then goto loop
+$ if f$locate(".$cvs]", ref_dir) .lt. f$length(ref_dir) then goto loop
+$ if f$locate(".^.git", ref_dir) .lt. f$length(ref_dir) then goto loop
+$ if f$locate(".$5ngit", ref_dir) .lt. f$length(ref_dir) then goto loop
+$!
+$ rel_path = ref_dir - "[" - ref_base_dir
+$! rel_path_len = f$length(rel_path) - 1
+$! delim = f$extract(rel_path_len, 1, rel_path)
+$! rel_path = rel_path - ".]" - ".>" - "]" - ">"
+$! rel_path = rel_path + delim
+$!
+$ if ODS2_SYNTAX
+$ then
+$ endif
+$!
+$ wrk_path = wrk + rel_path
+$!
+$ ref_name_type = ref_name + ref_type
+$!
+$ if ref_name_type .eqs. "CVS.DIR" then goto loop
+$ if ref_name_type .eqs. "cvs.dir" then goto loop
+$ if ref_name_type .eqs. "$CVS.DIR" then goto loop
+$ if ref_name_type .eqs. "^.git.DIR" then goto loop
+$ if ref_name_type .eqs. "$5ngit.DIR" then goto loop
+$ if ref_name_type .eqs. "$5NGIT.DIR" then goto loop
+$ if ODS2_SYNTAX
+$ then
+$!
+$ endif
+$!
+$ wrk_spec = wrk_path + ref_name_type
+$!
+$!
+$ wrk_chk = f$search(wrk_spec, 0)
+$ if wrk_chk .eqs. ""
+$ then
+$ if report_missing
+$ then
+$ write sys$output "''wrk_spec' is missing"
+$ endif
+$ if update_file
+$ then
+$ copy/log 'ref_spec' 'wrk_spec'
+$ endif
+$ goto loop
+$ endif
+$!
+$ wrk_name = f$parse(wrk_spec,,,"NAME")
+$ wrk_type = f$parse(wrk_spec,,,"TYPE")
+$ wrk_fname = wrk_name + wrk_type"
+$ ref_fname = ref_name + ref_type
+$!
+$ if ref_fname .nes. wrk_fname
+$ then
+$ write sys$output "''wrk_spc' wrong name, should be ""''ref_fname'"""
+$ endif
+$!
+$ ref_type = f$edit(ref_type, "UPCASE")
+$ if ref_type .eqs. ".DIR" then goto loop
+$!
+$ if ODS2_SYNTAX
+$ then
+$ ref_fname = f$edit(ref_fname, "LOWERCASE")
+$ endif
+$!
+$! These files have records to long to diff, and we don't change them anyway.
+$ ref_skip = 0
+$ if ref_type .eqs. ".GMO" then ref_skip = 1
+$ if ref_type .eqs. ".PDF" then ref_skip = 1
+$ if ref_type .eqs. ".PNG" then ref_skip = 1
+$ if ref_type .eqs. ".JPG" then ref_skip = 1
+$ if ref_fname .eqs. "inftest.ok" then ref_skip = 1
+$ if ref_fname .eqs. "longsub.in" then ref_skip = 1
+$ if ref_fname .eqs. "longsub.ok" then ref_skip = 1
+$ if ref_fname .eqs. "nasty2.ok" then ref_skip = 1
+$ if ref_fname .eqs. "profile5.awk" then ref_skip = 1
+$ if ref_fname .eqs. "profile5.ok" then ref_skip = 1
+$ if ref_fname .eqs. "po.m4" then ref_skip = 1
+$!
+$!
+$ if ref_skip .ne. 0
+$ then
+$ if report_missing
+$ then
+$ write sys$output "Skipping diff of ''ref_fname'"
+$ endif
+$ goto loop
+$ endif
+$!
+$!
+$ wrk_ver = f$parse(wrk_chk,,,"VERSION")
+$ if wrk_ver .nes. ";1"
+$ then
+$ write sys$output "Version for ''wrk_spec' is not 1"
+$ endif
+$ set noon
+$ diff/out=nl: 'wrk_spec' 'ref_spec'
+$ if $severity .nes. "1"
+$ then
+$ write sys$output "''wrk_spec' is different from ''ref_spec'"
+$ if update_file
+$ then
+$ delete 'wrk_spec';*
+$ copy/log 'ref_spec' 'wrk_spec'
+$ endif
+$ endif
+$ set on
+$
+$!
+$ goto loop
+$loop_end:
+$!
+$!
+$missing_loop:
+$! For missing loop, check the latest generation.
+$ ref_spec = f$search("''wrk'...]*.*;")
+$ if ref_spec .eqs. "" then goto missing_loop_end
+$!
+$ ref_dev = f$parse(ref_spec,,,"DEVICE")
+$ ref_dir = f$parse(ref_spec,,,"DIRECTORY")
+$ ref_dir = f$edit(ref_dir, "LOWERCASE")
+$ ref_name = f$parse(ref_spec,,,"NAME")
+$ ref_type = f$parse(ref_spec,,,"TYPE")
+$!
+$ rel_path = ref_dir - "[" - wrk_base_dir
+$!
+$!
+$ wrk_path = ref + rel_path
+$ wrk_spec = wrk_path + ref_name + ref_type
+$ wrk_name = f$parse(wrk_spec,,,"NAME")
+$ wrk_type = f$parse(wrk_spec,,,"TYPE")
+$!
+$ wrk_fname = wrk_name + wrk_type"
+$ ref_fname = ref_name + ref_type
+$!
+$ wrk_skip = 0
+$ ref_utype = f$edit(ref_type,"UPCASE")
+$ ref_ufname = f$edit(ref_fname,"UPCASE")
+$!
+$!
+$ if wrk_skip .eq. 0
+$ then
+$ wrk_chk = f$search(wrk_spec, 0)
+$ if wrk_chk .eqs. ""
+$ then
+$ if report_missing
+$ then
+$ write sys$output "''wrk_spec' is missing"
+$ endif
+$ goto missing_loop
+$ endif
+$ else
+$ goto missing_loop
+$ endif
+$!
+$ if ref_fname .nes. wrk_fname
+$ then
+$ write sys$output "''wrk_spc' wrong name, should be ""''ref_fname'"""
+$ endif
+$!
+$ if ref_utype .eqs. ".DIR" then goto missing_loop
+$!
+$ wrk_ver = f$parse(wrk_chk,,,"VERSION")
+$ if wrk_ver .nes. ";1"
+$ then
+$ write sys$output "Version for ''wrk_spec' is not 1"
+$ endif
+$!
+$ goto missing_loop
+$!
+$!
+$missing_loop_end:
+$!
+$exit
diff --git a/vms/config_h.com b/vms/config_h.com
new file mode 100644
index 00000000..c1d3becf
--- /dev/null
+++ b/vms/config_h.com
@@ -0,0 +1,1661 @@
+$! File: config_h.com
+$!
+$! $Id: config_h.com,v 1.1.1.1 2012/12/02 19:25:21 wb8tyw Exp $
+$!
+$! This procedure attempts to figure out how to build a config.h file
+$! for the current project.
+$!
+$! The P1 parameter of "NOBUILTINS" inhibits the default #include <builtins.h>
+$! that is normally added. This include can cause side effects if
+$! special VMS compiler settings are used.
+$!
+$! The CONFIGURE shell script will be examined for hints and a few symbols
+$! but most of the tests will not produce valid results on OpenVMS. Some
+$! will produce false positives and some will produce false negatives.
+$!
+$! It is easier to just read the config.h_in file and make up tests based
+$! on what is in it!
+$!
+$! This file will create an empty config_vms.h file if one does not exist.
+$! The config_vms.h is intended for manual edits to handle things that
+$! this procedure can not.
+$!
+$! The config_vms.h will be invoked by the resulting config.h file.
+$!
+$! This procedure knows about the DEC C RTL on the system it is on.
+$! Future versions may be handle the GNV, the OpenVMS porting library,
+$! and others.
+$!
+$! This procedure may not guess the options correctly for all architectures,
+$! and is a work in progress.
+$!
+$! Copyright (C) 2014 the Free Software Foundation, Inc.
+$!
+$! This file is part of GAWK, the GNU implementation of the
+$! AWK Progamming 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
+$!
+$! Per assignment agreement with FSF, similar procedures may be present
+$! in other packages under other licensing agreements and copyrights
+$!
+$! 15-Jan-2001 J. Malmberg Original
+$! 29-Apr-2001 J. Malmberg Also look for config.*in* in a [.include]
+$! subdirectory
+$! 30-Apr-2001 J. Malmberg Update for SAMBA checks
+$! 09-Apr-2005 J. Malmberg Update for RSYNC and large file.
+$! 29-Sep-2011 J. Malmberg Update for Bash 4.2
+$! 01-Mar-2012 J. Malmberg Warn about getcwd(0,0)
+$! 21-Dec-2012 J. Malmberg Update for gawk
+$!============================================================================
+$!
+$ss_normal = 1
+$ss_abort = 44
+$ss_control_y = 1556
+$status = ss_normal
+$on control_y then goto control_y
+$on warning then goto general_error
+$!
+$! Some information for writing timestamps to created files
+$!----------------------------------------------------------
+$my_proc = f$environment("PROCEDURE")
+$my_proc_file = f$parse(my_proc,,,"NAME") + f$parse(my_proc,,,"TYPE")
+$tab[0,8] = 9
+$datetime = f$element(0,".",f$cvtime(,"ABSOLUTE","DATETIME"))
+$username = f$edit(f$getjpi("","USERNAME"),"TRIM")
+$!
+$pid = f$getjpi("","PID")
+$tfile1 = "SYS$SCRATCH:config_h_temp1_''pid'.TEMP"
+$dchfile = "SYS$SCRATCH:config_h_decc_''pid'.TEMP"
+$configure_script = "SYS$SCRATCH:configure_script_''pid'.TEMP"
+$!
+$! Get the system type
+$!----------------------
+$arch_type = f$getsyi("arch_type")
+$!
+$! Does config_vms.h exist?
+$!-------------------------
+$update_config_vms = 0
+$file = f$search("sys$disk:[]config_vms.h")
+$if file .nes. ""
+$then
+$ write sys$output "Found existing custom file ''file'."
+$else
+$ update_config_vms = 1
+$ write sys$output "Creating new sys$disk:[]config_vms.h for you."
+$ gosub write_config_vms
+$endif
+$!
+$!
+$! On some platforms, DCL search has problems with searching a file
+$! on a NFS mounted volume. So copy it to sys$scratch:
+$!
+$if f$search(configure_script) .nes. "" then delete 'configure_script';*
+$copy PRJ_ROOT:configure 'configure_script'
+$!
+$!
+$! Write out the header
+$!----------------------
+$gosub write_config_h_header
+$!
+$!
+$!
+$! config.h.in could have at least five different names depending
+$! on how it was transferred to OpenVMS
+$!------------------------------------------------------------------
+$cfile = f$search("sys$disk:[]config.h.in")
+$if cfile .eqs. ""
+$then
+$ cfile = f$search("sys$disk:[]config.h_in")
+$ if cfile .eqs. ""
+$ then
+$ cfile = f$search("sys$disk:[]configh.in")
+$ if cfile .eqs. ""
+$ then
+$ cfile = f$search("sys$disk:[]config__2eh.in")
+$ if cfile .eqs. ""
+$ then
+$ cfile = f$search("sys$disk:[]config.h__2ein")
+$ endif
+$ endif
+$ endif
+$endif
+$if f$trnlnm("PRJ_INCLUDE") .nes. ""
+$then
+$ cfile = f$search("PRJ_INCLUDE:config.h.in")
+$ if cfile .eqs. ""
+$ then
+$ cfile = f$search("PRJ_INCLUDE:config.h_in")
+$ if cfile .eqs. ""
+$ then
+$ cfile = f$search("PRJ_INCLUDE:config__2eh.in")
+$ if cfile .eqs. ""
+$ then
+$ cfile = f$search("PRJ_INCLUDE:config__2eh.in")
+$ if cfile .eqs. ""
+$ then
+$ cfile = f$search("PRJ_INCLUDE:config.h__2ein")
+$ endif
+$ endif
+$ endif
+$ endif
+$endif
+$if cfile .eqs. ""
+$then
+$ write sys$output "Can not find sys$disk:config.h.in"
+$ line_out = "Looked for config.h.in, config.h_in, configh.in, "
+$ line_out = line_out + "config__2eh.in, "config.h__2ein"
+$ write/symbol sys$output line_out
+$ if f$trnlnm("PRJ_INCLUDE") .nes. ""
+$ then
+$ write sys$output "Also looked in PRJ_INCLUDE: for these files."
+$ endif
+$!
+$ write tf ""
+$ write tf -
+ " /* Could not find sys$disk:config.h.in */"
+$ write tf -
+ " /* Looked also for config.h_in, configh.in, config__2eh.in, */"
+$ write tf -
+ " /* config.h__2ein */"
+$ if f$trnlnm("PRJ_INCLUDE") .nes. ""
+$ then
+$ write tf -
+ " /* Also looked in PRJ_INCLUDE: for these files. */"
+$ endif
+$ write tf -
+ "/*--------------------------------------------------------------*/
+$ write tf ""
+$ goto write_tail
+$endif
+$!
+$!
+$! Locate the DECC libraries in use
+$!-----------------------------------
+$decc_rtldef = f$parse("decc$rtldef","sys$library:.tlb;0")
+$decc_shr = f$parse("decc$shr","sys$share:.exe;0")
+$!
+$! Dump the DECC header names into a file
+$!----------------------------------------
+$if f$search(dchfile) .nes. "" then delete 'dchfile';*
+$if f$search(tfile1) .nes. "" then delete 'tfile1';*
+$define/user sys$output 'tfile1'
+$library/list 'decc_rtldef'
+$open/read/error=rtldef_loop1_end tf1 'tfile1'
+$open/write/error=rtldef_loop1_end tf2 'dchfile'
+$rtldef_loop1:
+$ read/end=rtldef_loop1_end tf1 line_in
+$ line_in = f$edit(line_in,"TRIM,COMPRESS")
+$ key1 = f$element(0," ",line_in)
+$ key2 = f$element(1," ",line_in)
+$ if key1 .eqs. " " .or. key1 .eqs. "" then goto rtldef_loop1
+$ if key2 .nes. " " .and. key2 .nes. "" then goto rtldef_loop1
+$ write tf2 "|",key1,"|"
+$ goto rtldef_loop1
+$rtldef_loop1_end:
+$if f$trnlnm("tf1","lnm$process",,"SUPERVISOR") .nes. "" then close tf1
+$if f$trnlnm("tf2","lnm$process",,"SUPERVISOR") .nes. "" then close tf2
+$if f$search(tfile1) .nes. "" then delete 'tfile1';*
+$!
+$!
+$! Now calculate what should be in the file from reading
+$! config.h.in and CONFIGURE.
+$!---------------------------------------------------------------
+$open/read inf 'cfile'
+$do_comment = 0
+$if_block = 0
+$cfgh_in_loop1:
+$!set nover
+$ read/end=cfgh_in_loop1_end inf line_in
+$ xline = f$edit(line_in,"TRIM,COMPRESS")
+$!
+$! Blank line handling
+$!---------------------
+$ if xline .eqs. ""
+$ then
+$ write tf ""
+$ goto cfgh_in_loop1
+$ endif
+$ xlen = f$length(xline)
+$ key = f$extract(0,2,xline)
+$!
+$! deal with comments by copying exactly
+$!-----------------------------------------
+$ if (do_comment .eq. 1) .or. (key .eqs. "/*")
+$ then
+$ do_comment = 1
+$ write tf line_in
+$ key = f$extract(xlen - 2, 2, xline)
+$ if key .eqs. "*/" then do_comment = 0
+$ goto cfgh_in_loop1
+$ endif
+$!
+$! Some quick parsing
+$!----------------------
+$ keyif = f$extract(0,3,xline)
+$ key1 = f$element(0," ",xline)
+$ key2 = f$element(1," ",xline)
+$ key2a = f$element(0,"_",key2)
+$ key2b = f$element(1,"_",key2)
+$ key2_len = f$length(key2)
+$ key2_h = f$extract(key2_len - 2, 2, key2)
+$ key2_t = f$extract(key2_len - 5, 5, key2)
+$ if key2_t .eqs. "_TYPE" then key2_h = "_T"
+$ key64 = 0
+$ if f$locate("64", xline) .lt. xlen then key64 = 1
+$!
+$!write sys$output "xline = ''xline'"
+$!
+$! Comment out this section of the ifblock
+$!-----------------------------------------
+$ if if_block .ge. 3
+$ then
+$ write tf "/* ", xline, " */"
+$ if keyif .eqs. "#en" then if_block = 0
+$ goto cfgh_in_loop1
+$ endif
+$!
+$! Handle the end of an ifblock
+$!-------------------------------
+$ if keyif .eqs. "#en"
+$ then
+$ write tf xline
+$ if_block = 0
+$ goto cfgh_in_loop1
+$ endif
+$!
+$ if key1 .eqs. "#ifndef"
+$ then
+$! Manual check for _ALL_SOURCE on AIX error
+$!-----------------------------------------------
+$ if key2 .eqs. "_ALL_SOURCE"
+$ then
+$ write tf "/* ", xline, " */"
+$!
+$! Ignore the rest of the block
+$!--------------------------------------
+$ if_block = 3
+$ goto cfgh_in_loop1
+$ endif
+$ endif
+$!
+$!
+$! Default action for an #if/#else/#endif
+$!------------------------------------------
+$ if keyif .eqs. "#if" .or. keyif .eqs. "#el"
+$ then
+$ if_block = 1
+$ write tf xline
+$ goto cfgh_in_loop1
+$ endif
+$!
+$!
+$! Process "normal?" stuff
+$!---------------------------
+$ if key1 .eqs. "#undef"
+$ then
+$ key2c = f$element(2, "_", key2)
+$ if (key2c .eqs. "_") .or. (key2c .eqs. "H") then key2c = ""
+$ key2d = f$element(3, "_", key2)
+$ if (key2d .eqs. "_") .or. (key2d .eqs. "H") then key2d = ""
+$ key2e = f$element(4, "_", key2)
+$ if (key2e .eqs. "_") .or. (key2e .eqs. "H") then key2e = ""
+$ if key2d .eqs. "T"
+$ then
+$ if key2e .eqs. "TYPE"
+$ then
+$ key2_h = "_T"
+$ key2d = ""
+$ endif
+$ endif
+$!
+$ double_under = 0
+$!
+$ if key2 .eqs. "bits16_t"
+$ then
+$ write tf "#ifndef ''key2'"
+$ write tf "#define ''key2' short"
+$ write tf "#endif"
+$ goto cfgh_in_loop1
+$ endif
+$!
+$ if key2 .eqs. "u_bits16_t"
+$ then
+$ write tf "#ifndef ''key2'"
+$ write tf "#define ''key2' unsigned short"
+$ write tf "#endif"
+$ goto cfgh_in_loop1
+$ endif
+$!
+$ if key2 .eqs. "bits32_t"
+$ then
+$ write tf "#ifndef ''key2'"
+$ write tf "#define ''key2' int"
+$ write tf "#endif"
+$ goto cfgh_in_loop1
+$ endif
+$!
+$ if key2 .eqs. "u_bits32_t"
+$ then
+$ write tf "#ifndef ''key2'"
+$ write tf "#define ''key2' unsigned int"
+$ write tf "#endif"
+$ goto cfgh_in_loop1
+$ endif
+$!
+$ if key2 .eqs. "intmax_t"
+$ then
+$ write tf "#ifndef ''key2'"
+$ write tf "#ifdef __VAX"
+$ write tf "#define ''key2' long"
+$ write tf "#else"
+$ write tf "#define ''key2' long long"
+$ write tf "#endif"
+$ write tf "#endif"
+$ goto cfgh_in_loop1
+$ endif
+$!
+$ if key2 .eqs. "uintmax_t"
+$ then
+$ write tf "#ifndef ''key2'"
+$ write tf "#ifdef __VAX"
+$ write tf "#define ''key2' unsigned long"
+$ write tf "#else"
+$ write tf "#define ''key2' unsigned long long"
+$ write tf "#endif"
+$ write tf "#endif"
+$ goto cfgh_in_loop1
+$ endif
+$!
+$ if key2 .eqs. "socklen_t"
+$ then
+$ write tf "#ifndef ''key2'"
+$ write tf "#define ''key2' int"
+$ write tf "#endif"
+$ goto cfgh_in_loop1
+$ endif
+$!
+$ if key2 .eqs. "GETGROUPS_T"
+$ then
+$ write tf "#ifndef ''key2'"
+$ write tf "#define ''key2' gid_t"
+$ write tf "#endif"
+$ goto cfgh_in_loop1
+$ endif
+$!
+$ if key2 .eqs. "HAVE_DECL_SYS_SIGLIST"
+$ then
+$ write tf "#ifndef ''key2'"
+$ write tf "#define ''key2' 0"
+$ write tf "#endif"
+$ goto cfgh_in_loop1
+$ endif
+$!
+$ if key2 .eqs. "HAVE_SYS_ERRLIST"
+$ then
+$ write tf "#ifndef ''key2'"
+$ write tf "#define ''key2' 1"
+$ write tf "#endif"
+$ goto cfgh_in_loop1
+$ endif
+$!
+$ if key2 .eqs. "HAVE_STRUCT_DIRENT_D_INO"
+$ then
+$ write tf "#ifndef ''key2'"
+$ write tf "#define ''key2' 1"
+$ write tf "#endif"
+$ goto cfgh_in_loop1
+$ endif
+$!
+$! ! The header files have this information, however
+$! ! The ioctl() call only works on sockets.
+$! if key2 .eqs. "FIONREAD_IN_SYS_IOCTL"
+$! then
+$! write tf "#ifndef ''key2'"
+$! write tf "#define ''key2' 1"
+$! write tf "#endif"
+$! goto cfgh_in_loop1
+$! endif
+$!
+$! ! The header files have this information, however
+$! ! The ioctl() call only works on sockets.
+$! if key2 .eqs. "GWINSZ_IN_SYS_IOCTL"
+$! then
+$! write tf "#ifndef ''key2'"
+$! write tf "#define ''key2' 1"
+$! write tf "#endif"
+$! goto cfgh_in_loop1
+$! endif
+$!
+$! ! The header files have this information, however
+$! ! The ioctl() call only works on sockets.
+$! if key2 .eqs. "STRUCT_WINSIZE_IN_SYS_IOCTL"
+$! then
+$! write tf "#ifndef ''key2'"
+$! write tf "#define ''key2' 0"
+$! write tf "#endif"
+$! goto cfgh_in_loop1
+$! endif
+$!
+$ if key2 .eqs. "HAVE_STRUCT_TM_TM_ZONE"
+$ then
+$ write tf "#ifndef ''key2'"
+$ write tf "#define ''key2' 1"
+$ write tf "#endif"
+$ goto cfgh_in_loop1
+$ endif
+$!
+$ if key2 .eqs. "HAVE_TM_ZONE"
+$ then
+$ write tf "#ifndef ''key2'"
+$ write tf "#define ''key2' 1"
+$ write tf "#endif"
+$ goto cfgh_in_loop1
+$ endif
+$!
+$ if key2 .eqs. "HAVE_TIMEVAL"
+$ then
+$ write tf "#ifndef ''key2'"
+$ write tf "#define ''key2' 1"
+$ write tf "#endif"
+$ goto cfgh_in_loop1
+$ endif
+$!
+$ if key2 .eqs. "HAVE_TZNAME"
+$ then
+$ write tf "#if __CRTL_VER >= 70000000"
+$ write tf "#ifndef ''key2'"
+$ write tf "#define ''key2' 1"
+$ write tf "#endif"
+$ write tf "#endif"
+$ goto cfgh_in_loop1
+$ endif
+$!
+$ if key2 .eqs. "WEXITSTATUS_OFFSET"
+$ then
+$ write tf "#ifndef ''key2'"
+$ write tf "#define ''key2' 2"
+$ write tf "#endif"
+$ goto cfgh_in_loop1
+$ endif
+$!
+$ if key2 .eqs. "HAVE_GETPW_DECLS"
+$ then
+$ write tf "#ifndef ''key2'"
+$ write tf "#define ''key2' 1"
+$ write tf "#endif"
+$ goto cfgh_in_loop1
+$ endif
+$!
+$ if key2 .eqs. "HAVE_DECL_CONFSTR"
+$ then
+$ write tf "#ifndef ''key2'"
+$ write tf "#define ''key2' 1"
+$ write tf "#endif"
+$ goto cfgh_in_loop1
+$ endif
+$!
+$ if key2 .eqs. "HAVE_DECL_PRINTF"
+$ then
+$ write tf "#ifndef ''key2'"
+$ write tf "#define ''key2' 1"
+$ write tf "#endif"
+$ goto cfgh_in_loop1
+$ endif
+$!
+$ if key2 .eqs. "HAVE_DECL_SBRK"
+$ then
+$ write tf "#ifndef ''key2'"
+$ write tf "#define ''key2' 1"
+$ write tf "#endif"
+$ goto cfgh_in_loop1
+$ endif
+$!
+$ if key2 .eqs. "HAVE_DECL_STRSIGNAL"
+$ then
+$ write tf "#ifndef ''key2'"
+$ write tf "#define ''key2' 0"
+$ write tf "#endif"
+$ goto cfgh_in_loop1
+$ endif
+$!
+$ if key2a .eqs. "HAVE_DECL_STRTOLD"
+$ then
+$ write tf "#ifndef ''key2'"
+$ write tf "#define ''key2' 0"
+$ write tf "#endif"
+$ goto cfgh_in_loop1
+$ endif
+$!
+$ if key2 .eqs. "HAVE_DECL_STRTOIMAX"
+$ then
+$ write tf "#ifndef ''key2'"
+$ write tf "#define ''key2' 0"
+$ write tf "#endif"
+$ goto cfgh_in_loop1
+$ endif
+$!
+$ if key2 .eqs. "HAVE_DECL_STRTOL"
+$ then
+$ write tf "#ifndef ''key2'"
+$ write tf "#define ''key2' 1"
+$ write tf "#endif"
+$ goto cfgh_in_loop1
+$ endif
+$!
+$ if key2 .eqs. "HAVE_DECL_STRTOLL"
+$ then
+$ write tf "#ifndef ''key2'"
+$ write tf "#define ''key2' 1"
+$ write tf "#endif"
+$ goto cfgh_in_loop1
+$ endif
+$!
+$ if key2 .eqs. "HAVE_DECL_STRTOUL"
+$ then
+$ write tf "#ifndef ''key2'"
+$ write tf "#define ''key2' 1"
+$ write tf "#endif"
+$ goto cfgh_in_loop1
+$ endif
+$!
+$ if key2 .eqs. "HAVE_DECL_STRTOULL"
+$ then
+$ write tf "#ifndef ''key2'"
+$ write tf "#define ''key2' 1"
+$ write tf "#endif"
+$ goto cfgh_in_loop1
+$ endif
+$!
+$ if key2 .eqs. "HAVE_DECL_STRTOUMAX"
+$ then
+$ write tf "#ifndef ''key2'"
+$ write tf "#define ''key2' 0"
+$ write tf "#endif"
+$ goto cfgh_in_loop1
+$ endif
+$!
+$ if key2 .eqs. "GETPGRP_VOID"
+$ then
+$ write tf "#ifndef ''key2'"
+$ write tf "#define ''key2' 1"
+$ write tf "#endif"
+$ goto cfgh_in_loop1
+$ endif
+$!
+$ if key2 .eqs. "NAMED_PIPES_MISSING"
+$ then
+$ write tf "#ifndef ''key2'"
+$ write tf "#define ''key2' 1"
+$ write tf "#endif"
+$ goto cfgh_in_loop1
+$ endif
+$!
+$ if key2 .eqs. "OPENDIR_NOT_ROBUST"
+$ then
+$ write tf "#ifndef ''key2'"
+$ write tf "#define ''key2' 1"
+$ write tf "#endif"
+$ goto cfgh_in_loop1
+$ endif
+$!
+$ if key2 .eqs. "PGRP_PIPE"
+$ then
+$ write tf "#ifndef ''key2'"
+$ write tf "#define ''key2' 1"
+$ write tf "#endif"
+$ goto cfgh_in_loop1
+$ endif
+$!
+$ if key2 .eqs. "CAN_REDEFINE_GETENV"
+$ then
+$ write tf "#ifndef ''key2'"
+$ write tf "#define ''key2' 1"
+$ write tf "#endif"
+$ goto cfgh_in_loop1
+$ endif
+$!
+$ if key2 .eqs. "HAVE_PRINTF_A_FORMAT"
+$ then
+$ write tf "#ifndef ''key2'"
+$ write tf "#define ''key2' 1"
+$ write tf "#endif"
+$ goto cfgh_in_loop1
+$ endif
+$!
+$ if key2 .eqs. "CTYPE_NON_ASCII"
+$ then
+$ write tf "#ifndef ''key2'"
+$ write tf "#define ''key2' 1"
+$ write tf "#endif"
+$ goto cfgh_in_loop1
+$ endif
+$!
+$ if key2 .eqs. "HAVE_LANGINFO_CODESET"
+$ then
+$ write tf "#ifndef ''key2'"
+$ write tf "#define ''key2' 1"
+$ write tf "#endif"
+$ goto cfgh_in_loop1
+$ endif
+$!
+$ if key2 .eqs. "HAVE_LC_MESSAGES"
+$ then
+$ write tf "#ifndef ''key2'"
+$ write tf "#define ''key2' 1"
+$ write tf "#endif"
+$ goto cfgh_in_loop1
+$ endif
+$!
+$! This wants execve() to do this automagically to pass.
+$! if key2 .eqs. "HAVE_HASH_BANG_EXEC"
+$! then
+$! write tf "#ifndef ''key2'"
+$! write tf "#define ''key2' 1"
+$! write tf "#endif"
+$! goto cfgh_in_loop1
+$! endif
+$!
+$ if key2 .eqs. "ICONV_CONST"
+$ then
+$ write tf "#ifndef ''key2'"
+$ write tf "#define ''key2'"
+$ write tf "#endif"
+$ goto cfgh_in_loop1
+$ endif
+$!
+$ if key2 .eqs. "VOID_SIGHANDLER"
+$ then
+$ write tf "#ifndef ''key2'"
+$ write tf "#define ''key2' 1"
+$ write tf "#endif"
+$ goto cfgh_in_loop1
+$ endif
+$!
+$ if key2 .eqs. "HAVE_POSIX_SIGNALS"
+$ then
+$ write tf "#ifndef ''key2'"
+$ write tf "#define ''key2' 1"
+$ write tf "#endif"
+$ goto cfgh_in_loop1
+$ endif
+$!
+$ if key2 .eqs. "UNUSABLE_RT_SIGNALS"
+$ then
+$ write tf "#ifndef ''key2'"
+$ write tf "#define ''key2' 1"
+$ write tf "#endif"
+$ goto cfgh_in_loop1
+$ endif
+$!
+$ if key2a .eqs. "HAVE_DECL_FPURGE"
+$ then
+$ write tf "#ifndef ''key2a'"
+$ write tf "#define ''key2a' 1"
+$ write tf "#endif"
+$ goto cfgh_in_loop1
+$ endif
+$!
+$ if key2 .eqs. "HAVE_DECL_SETREGID"
+$ then
+$ write tf "#ifndef ''key2'"
+$ write tf "#define ''key2' 1"
+$ write tf "#endif"
+$ goto cfgh_in_loop1
+$ endif
+$!
+$ if key2 .eqs. "HAVE_POSIX_SIGSETJMP"
+$ then
+$ write tf "#ifndef ''key2'"
+$ write tf "#define ''key2' 1"
+$ write tf "#endif"
+$ goto cfgh_in_loop1
+$ endif
+$!
+$ if key2 .eqs. "HAVE_LIBDL"
+$ then
+$ write tf "#ifndef ''key2'"
+$ write tf "#define ''key2' 1"
+$ write tf "#endif"
+$ goto cfgh_in_loop1
+$ endif
+$!
+$ if key2 .eqs. "STRCOLL_BROKEN"
+$ then
+$ write tf "#ifndef ''key2'"
+$ write tf "#define ''key2' 1"
+$ write tf "#endif"
+$ goto cfgh_in_loop1
+$ endif
+$!
+$ if key2 .eqs. "DUP_BROKEN"
+$ then
+$ write tf "#ifndef ''key2'"
+$ write tf "#define ''key2' 1"
+$ write tf "#endif"
+$ goto cfgh_in_loop1
+$ endif
+$!
+$! This is for a test that getcwd(0,0) works.
+$! It does not on VMS.
+$!--------------------------
+$ if key2 .eqs. "GETCWD_BROKEN"
+$ then
+$ write sys$output ""
+$ write sys$output -
+ "%CONFIG_H-I-NONPORT, ''key2' being tested for!"
+$ write sys$output -
+ "-CONFIG_H-I-GETCWD, GETCWD(0,0) does not work on VMS."
+$ write sys$output -
+ "-CONFIG_H-I-GETCWD2, Work around hack probably required."
+$ write sys$output -
+ "-CONFIG_H-I-REVIEW, Manual Code review required!"
+$ if update_config_vms
+$ then
+$ open/append tfcv sys$disk:[]config_vms.h
+$ write tfcv ""
+$ write tfcv -
+ "/* Check config.h for use of ''key2' settings */"
+$ write tfcv ""
+$ close tfcv
+$ endif
+$
+$ goto cfgh_in_loop1
+$ endif
+$!
+$ if key2a .eqs. "HAVE" .or. key2a .eqs. "STAT"
+$ then
+$!
+$! Process extra underscores
+$!------------------------------------
+$ if f$locate("HAVE___", key2) .lt. key2_len
+$ then
+$ key2b = "__" + key2d
+$ key2d = ""
+$ double_under = 1
+$ else
+$ if f$locate("HAVE__", key2) .lt. key2_len
+$ then
+$ key2b = "_" + key2c
+$ key2c = ""
+$ double_under = 1
+$ endif
+$ endif
+$!
+$ if key2_h .eqs. "_H"
+$ then
+$!
+$! Looking for a header file
+$!---------------------------------------
+$ headf = key2b
+$ if key2c .nes. "" then headf = headf + "_" + key2c
+$ if key2d .nes. "" then headf = headf + "_" + key2d
+$!
+$! (key2b .eqs. "READLINE")
+$!
+$! Some special parsing
+$!------------------------------------------
+$ if (key2b .eqs. "SYS") .or. (key2b .eqs. "ARPA") .or. -
+ (key2b .eqs. "NET") .or. (key2b .eqs. "NETINET")
+$ then
+$ if key2c .nes. ""
+$ then
+$ headf = key2c
+$ if key2d .nes. "" then headf = key2c + "_" + key2d
+$ endif
+$ endif
+$!
+$! And of course what's life with out some special cases
+$!--------------------------------------------------------------------
+$ if key2b .eqs. "FILE"
+$ then
+$ write sys$output ""
+$ write sys$output -
+ "%CONFIG_H-I-NONPORT, ''key2' being asked for!"
+$ write sys$output -
+ "-CONFIG_H-I-FILE_OLD, file.h will not be configured as is obsolete!"
+$ write sys$output -
+ "-CONFIG_H_I-FCNTL_NEW, "Expecting fcntl.h to be configured instead!"
+$ write sys$output -
+ "-CONFIG_H_I-FCNTL_CHK, "Unable to verify at this time!"
+$ write sys$output -
+ "-CONFIG_H-I-REVIEW, Manual Code review required!"
+$!
+$ if update_config_vms
+$ then
+$ open/append tfcv sys$disk:[]config_vms.h
+$ write tfcv ""
+$ write tfcv -
+ "/* Check config.h for use of fcntl.h instead of file.h */"
+$ write tfcv ""
+$ close tfcv
+$ endif
+$ endif
+$!
+$! Now look it up in the DEC C RTL
+$!---------------------------------------------
+$ define/user sys$output nl:
+$ define/user sys$error nl:
+$ search/output=nl: 'dchfile' |'headf'|/exact
+$ if '$severity' .eq. 1
+$ then
+$ if key64 then write tf "#ifndef __VAX"
+$ write tf "#ifndef ''key2'"
+$ write tf "#define ''key2' 1"
+$if p2 .nes. "" then write sys$output "''dchfile' - #define ''key2' 1"
+$ write tf "#endif"
+$ if key64 then write tf "#endif"
+$ goto cfgh_in_loop1
+$ endif
+$!
+$ else
+$!
+$! Looking for a routine or a symbol
+$!------------------------------------------------
+$ if key2c .eqs. "MACRO"
+$ then
+$ if (key2b .eqs. "FILE") .or. (key2b .eqs. "DATE") -
+ .or. (key2b .eqs. "LINE") .or. (key2b .eqs. "TIME")
+$ then
+$ write tf "#ifndef HAVE_''key2b'"
+$ write tf "#define HAVE_''key2b' 1"
+$ write tf "#endif"
+$ endif
+$ goto cfgh_in_loop1
+$ endif
+$!
+$! Special false tests
+$!-------------------------------------
+$ if double_under
+$ then
+$ if key2b .eqs. "_FCNTL" .or. key2b .eqs. "__FCNTL"
+$ then
+$ write tf "/* #undef HAVE_''key2b' */"
+$ goto cfgh_in_loop1
+$ endif
+$!
+$ if key2b .eqs. "_STAT" .or. key2b .eqs. "__STAT"
+$ then
+$ write tf "/* #undef HAVE_''key2b' */"
+$ goto cfgh_in_loop1
+$ endif
+$!
+$ if key2b .eqs. "_READ" .or. key2b .eqs. "__READ"
+$ then
+$ write tf "/* #undef HAVE_''key2b' */"
+$ goto cfgh_in_loop1
+$ endif
+$ endif
+$!
+$ keysym = key2b
+$ if key2c .nes. "" then keysym = keysym + "_" + key2c
+$ if key2d .nes. "" then keysym = keysym + "_" + key2d
+$ if key2e .nes. "" then keysym = keysym + "_" + key2e
+$!
+$!
+$! Stat structure members
+$!-------------------------------------
+$ if key2b .eqs. "STRUCT"
+$ then
+$ if key2c .eqs. "STAT" .and (key2d .nes. "")
+$ then
+$ key2b = key2b + "_" + key2c + "_" + key2d
+$ key2c = key2e
+$ key2d = ""
+$ key2e = ""
+$ endif
+$ endif
+$ if (key2b .eqs. "ST") .or. (key2b .eqs. "STRUCT_STAT_ST")
+$ then
+$ keysym = "ST" + "_" + key2c
+$ keysym = f$edit(keysym,"LOWERCASE")
+$ endif
+$ if key2a .eqs. "STAT"
+$ then
+$ if (f$locate("STATVFS", key2b) .eq. 0) .and. key2c .eqs. ""
+$ then
+$ keysym = f$edit(key2b, "LOWERCASE")
+$ endif
+$!$ if (key2b .eqs. "STATVFS" .or. key2b .eqs. "STATFS2" -
+$! .or. key2b .eqs. "STATFS3") .and. key2c .nes. ""
+$!
+$ if (key2b .eqs. "STATVFS") .and. key2c .nes. ""
+$ then
+$! Should really verify that the structure
+$! named by key2b actually exists first.
+$!------------------------------------------------------------
+$!
+$! Statvfs structure members
+$!-------------------------------------------------
+$ keysym = "f_" + f$edit(key2c,"LOWERCASE")
+$ endif
+$ endif
+$!
+$! UTMPX structure members
+$!--------------------------------------
+$ if key2b .eqs. "UT" .and. key2c .eqs. "UT"
+$ then
+$ keysym = "ut_" + f$edit(key2d,"LOWERCASE")
+$ endif
+$!
+$ if f$locate("MMAP",key2) .lt. key2_len
+$ then
+$ write sys$output ""
+$ write sys$output -
+ "%CONFIG_H-I-NONPORT, ''key2' being asked for!"
+$ write sys$output -
+ "-CONFIG_H-I-MMAP, MMAP operations only work on STREAM and BINARY files!"
+$ write sys$output -
+ "-CONFIG_H-I-REVIEW, Manual Code review required!"
+$ if update_config_vms
+$ then
+$ open/append tfcv sys$disk:[]config_vms.h
+$ write tfcv ""
+$ write tfcv -
+ "/* Check config.h for use of ''key2' settings */"
+$ write tfcv ""
+$ close tfcv
+$ endif
+$ endif
+$!
+$!
+$ if keysym .eqs. "CRYPT"
+$ then
+$ write sys$output ""
+$ write sys$output -
+ "%CONFIG_H-I-NONPORT, ''key2' being asked for!"
+$ write sys$output -
+ "-CONFIG_H-I-CRYPT, CRYPT operations on the VMS SYSUAF may not work!"
+$ write sys$output -
+ "-CONFIG_H-I-REVIEW, Manual Code review required!"
+$ if update_config_vms
+$ then
+$ open/append tfcv sys$disk:[]config_vms.h
+$ write tfcv ""
+$ write tfcv -
+ "/* Check config.h for use of ''keysym' */"
+$ write tfcv ""
+$ close tfcv
+$ endif
+$ endif
+$!
+$!
+$ if keysym .eqs. "EXECL"
+$ then
+$ write sys$output ""
+$ write sys$output -
+ "%CONFIG_H-I-NONPORT, ''key2' being asked for!"
+$ write sys$output -
+ "-CONFIG_H-I-EXCEL, EXECL configured, Will probably not work."
+$ write sys$output -
+ "-CONFIG_H-I-REVIEW, Manual Code review required!"
+$ if update_config_vms
+$ then
+$ open/append tfcv sys$disk:[]config_vms.h
+$ write tfcv ""
+$ write tfcv -
+ "/* Check config.h for use of ''keysym' */"
+$ write tfcv ""
+$ close tfcv
+$ endif
+$ endif
+$!
+$!
+$! Process if cpp supports ANSI-C stringizing '#' operator
+$!-----------------------------------------------------------------------
+$ if keysym .eqs. "STRINGIZE"
+$ then
+$ write tf "#ifndef HAVE_STRINGIZE"
+$ write tf "#define HAVE_STRINGSIZE 1"
+$ write tf "#endif"
+$ goto cfgh_in_loop1
+$ endif
+$!
+$ if keysym .eqs. "VOLATILE"
+$ then
+$ write tf "#ifndef HAVE_VOLATILE"
+$ write tf "#define HAVE_VOLATILE 1"
+$ write tf "#endif"
+$ goto cfgh_in_loop1
+$ endif
+$!
+$ if keysym .eqs. "ALLOCA"
+$ then
+$ write tf "#ifndef HAVE_ALLOCA"
+$ write tf "#define HAVE_ALLOCA 1"
+$ write tf "#endif"
+$ goto cfgh_in_loop1
+$ endif
+$!
+$ if keysym .eqs. "ERRNO_DECL"
+$ then
+$ write tf "#ifndef HAVE_ERRNO_DECL"
+$ write tf "#define HAVE_ERRNO_DECL 1"
+$ write tf "#endif"
+$ goto cfgh_in_loop1
+$ endif
+$!
+$ if keysym .eqs. "LONGLONG"
+$ then
+$ write tf "#ifndef __VAX"
+$ write tf "#pragma message disable longlongtype"
+$ write tf "#ifndef HAVE_LONGLONG"
+$ write tf "#define HAVE_LONGLONG 1"
+$ write tf "#endif"
+$ write tf "#endif"
+$ goto cfgh_in_loop1
+$ endif
+$!
+$! May need to test compiler version
+$!-----------------------------------------------
+$ if (keysym .eqs. "LONG_LONG") .or. -
+ (keysym .eqs. "LONG_LONG_INT")
+$ then
+$ write tf "#ifndef __VAX"
+$ write tf "#pragma message disable longlongtype"
+$ write tf "#ifndef HAVE_''keysym'"
+$ write tf "#define HAVE_''keysym' 1"
+$ write tf "#endif"
+$ write tf "#endif"
+$ goto cfgh_in_loop1
+$ endif
+$!
+$! May need to test compiler version
+$!-----------------------------------------------
+$ if keysym .eqs. "UNSIGNED_LONG_LONG"
+$ then
+$ write tf "#ifndef __VAX"
+$ write tf "#pragma message disable longlongtype"
+$ write tf "#ifndef HAVE_UNSIGNED_LONG_LONG"
+$ write tf "#define HAVE_UNSIGNED_LONG_LONG 1"
+$ write tf "#endif"
+$ write tf "#endif"
+$ goto cfgh_in_loop1
+$ endif
+$!
+$! May need to test compiler version
+$!-----------------------------------------------
+$ if keysym .eqs. "UNSIGNED_LONG_LONG_INT"
+$ then
+$ write tf "#ifndef __VAX"
+$ write tf "#pragma message disable longlongtype"
+$ write tf "#ifndef HAVE_UNSIGNED_LONG_LONG_INT"
+$ write tf "#define HAVE_UNSIGNED_LONG_LONG_INT 1"
+$ write tf "#endif"
+$ write tf "#endif"
+$ goto cfgh_in_loop1
+$ endif
+$!
+$! May need to test compiler version
+$!-----------------------------------------------
+$ if keysym .eqs. "LONG_DOUBLE"
+$ then
+$ write tf "#ifndef __VAX"
+$ write tf "#pragma message disable longlongtype"
+$ write tf "#ifndef HAVE_LONG_DOUBLE"
+$ write tf "#define HAVE_LONG_DOUBLE 1"
+$ write tf "#endif"
+$ write tf "#endif"
+$ goto cfgh_in_loop1
+$ endif
+$!
+$ if keysym .eqs. "FCNTL_LOCK"
+$ then
+$ write sys$output -
+ "%CONFIG_H-I-NONPORT, ''key2' being asked for!
+$ write sys$output -
+ "-CONFIG_H-I-REVIEW, Manual Code review required!"
+$ goto cfgh_in_loop1
+$ endif
+$!
+$!
+$! These libraries are provided by the DEC C RTL
+$!-------------------------------------------------------------
+$ if keysym .eqs. "LIBINET" .or. keysym .eqs. "LIBSOCKET"
+$ then
+$ write tf "#ifndef HAVE_''keysym'"
+$ write tf "#define HAVE_''keysym' 1"
+$if p2 .nes. "" then write sys$output "''decc_shr' #define ''keysym' 1"
+$ write tf "#endif
+$ goto cfgh_in_loop1
+$ endif
+$!
+$!
+$ if keysym .eqs. "HERRNO" then keysym = "h_errno"
+$ if keysym .eqs. "UTIMBUF" then keysym = "utimbuf"
+$ if key2c .eqs. "STRUCT"
+$ then
+$ keysym = f$edit(key2d,"LOWERCASE")
+$ else
+$ if key2_h .eqs. "_T"
+$ then
+$ if key2_t .eqs. "_TYPE"
+$ then
+$ keysym = f$extract(0, key2_len - 5, key2) - "HAVE_"
+$ endif
+$ keysym = f$edit(keysym,"LOWERCASE")
+$ endif
+$ endif
+$!
+$! Check the DEC C RTL shared image first
+$!------------------------------------------------------
+$ if f$search(tfile1) .nes. "" then delete 'tfile1';*
+$ define/user sys$output nl:
+$ define/user sys$error nl:
+$ search/format=nonull/out='tfile1' 'decc_shr' 'keysym'
+$ if '$severity' .eq. 1
+$ then
+$!
+$! Not documented, but from observation
+$!------------------------------------------------------
+$ define/user sys$output nl:
+$ define/user sys$error nl:
+$ if arch_type .eq. 3
+$ then
+$ keyterm = "''keysym'<SOH>"
+$ else
+$ if arch_type .eq. 2
+$ then
+$ keyterm = "''keysym'<BS>"
+$ else
+$ keyterm = "''keysym'<STX>"
+$ endif
+$ endif
+$ search/out=nl: 'tfile1' -
+ "$''keyterm'","$g''keyterm'","$__utc_''keyterm'",-
+ "$__utctz_''keyterm'","$__bsd44_''keyterm'","$bsd_''keyterm'",-
+ "$''keysym'decc$","$G''keysym'decc$","$GX''keyterm'"
+$ severity = '$severity'
+$!
+$!
+$! Of course the 64 bit stuff is different
+$!---------------------------------------------------------
+$ if severity .ne. 1 .and. key64
+$ then
+$ define/user sys$output nl:
+$ define/user sys$error nl:
+$ search/out=nl: 'tfile1' "$_''keyterm'"
+$! search/out 'tfile1' "$_''keyterm'"
+$ severity = '$severity'
+$ endif
+$!
+$! UNIX compatability routines
+$!---------------------------------------------
+$ if severity .ne. 1
+$ then
+$ define/user sys$output nl:
+$ define/user sys$error nl:
+$ search/out=nl: 'tfile1' -
+ "$__unix_''keyterm'","$__vms_''keyterm'","$_posix_''keyterm'"
+$ severity = '$severity'
+$ endif
+$!
+$! VAX special handling routines
+$!---------------------------------------------
+$ if (severity .ne. 1) .and. (arch_type .eq. 1)
+$ then
+$ define/user sys$output nl:
+$ define/user sys$error nl:
+$ search/out=nl: 'tfile1' "DECC$''keysym'<SOH>"
+$ severity = '$severity'
+$ endif
+$!
+$! Show the result of the search
+$!------------------------------------------------
+$ if 'severity' .eq. 1
+$ then
+$ if key64 then write tf "#ifndef __VAX"
+$ write tf "#ifndef ''key2'"
+$ write tf "#define ''key2' 1"
+$if p2 .nes. "" then write sys$output "''decc_shr' #define ''key2' 1"
+$ write tf "#endif"
+$ if key64 then write tf "#endif"
+$ goto cfgh_in_loop1
+$ endif
+$ endif
+$ if f$search(tfile1) .nes. "" then delete 'tfile1';*
+$!
+$! Check the DECC Header files next
+$!----------------------------------------------
+$ define/user sys$output nl:
+$ define/user sys$error nl:
+$ search/out=nl: 'decc_rtldef' -
+ "''keysym';", "''keysym'[", "struct ''keysym'"/exact
+$ severity = '$severity'
+$ if severity .eq. 1
+$ then
+$ if key64 then write tf "#ifndef __VAX"
+$ write tf "#ifndef ''key2'"
+$ write tf "#define ''key2' 1"
+$if p2 .nes. "" then write sys$output "''decc_rtldef' #define ''key2' 1"
+$ write tf "#endif"
+$ if key64 then write tf "#endif"
+$ goto cfgh_in_loop1
+$ endif
+$!
+$ endif
+$ write tf "/* ", xline, " */"
+$ goto cfgh_in_loop1
+$ endif
+$!
+$!
+$! Process SIZEOF directives found in SAMBA
+$!------------------------------------------------
+$ if key2a .eqs. "SIZEOF"
+$ then
+$ if key2b .eqs. "INO" .and. key2_h .eqs. "_T"
+$ then
+$ write tf "#ifndef SIZEOF_INO_T"
+$ write tf "#define SIZEOF_INO_T (6)"
+$ write tf "#endif"
+$ goto cfgh_in_loop1
+$ endif
+$ if key2b .eqs. "INTMAX" .and. key2_h .eqs. "_T"
+$ then
+$ write tf "#ifndef SIZEOF_INTMAX_T"
+$ write tf "#ifdef __VAX"
+$ write tf "#define SIZEOF_INTMAX_T (4)"
+$ write tf "#else"
+$ write tf "#define SIZEOF_INTMAX_T (8)"
+$ write tf "#endif"
+$ write tf "#endif"
+$ goto cfgh_in_loop1
+$ endif
+$ if key2b .eqs. "OFF" .and. key2_h .eqs. "_T"
+$ then
+$ write tf "#ifndef SIZEOF_OFF_T"
+$ write tf "#ifdef __VAX"
+$ write tf "#define SIZEOF_OFF_T (4)"
+$ write tf "#else"
+$ write tf "#define SIZEOF_OFF_T (8)"
+$ write tf "#endif"
+$ write tf "#endif"
+$ goto cfgh_in_loop1
+$ endif
+$ if key2b .eqs. "CHAR" .and. key2_h .eqs. "_P"
+$ then
+$ write tf "#ifndef SIZEOF_CHAR_P"
+$ write tf "#define SIZEOF_CHAR_P (4)"
+$ write tf "#endif"
+$ goto cfgh_in_loop1
+$ endif
+$ if (key2b .eqs. "INT")
+$ then
+$ write tf "#ifndef SIZEOF_''key2b'"
+$ write tf "#define SIZEOF_''key2b' (4)"
+$ write tf "#endif"
+$ goto cfgh_in_loop1
+$ endif
+$ if key2b .eqs. "UNSIGNED"
+$ then
+$ if key2c .eqs. "INT" .or. key2c .eqs. "LONG"
+$ then
+$ write tf "#ifndef SIZEOF_''key2b'_''key2c'"
+$ write tf "#define SIZEOF_''key2b'_''key2c' (4)"
+$ write tf "#endif"
+$ goto cfgh_in_loop1
+$ endif
+$ endif
+$ if key2b .eqs. "DOUBLE"
+$ then
+$ write tf "#ifndef SIZEOF_DOUBLE"
+$ write tf "#define SIZEOF_DOUBLE (8)"
+$ write tf "#endif"
+$ goto cfgh_in_loop1
+$ endif
+$ if key2b .eqs. "LONG"
+$ then
+$ if key2c .eqs. ""
+$ then
+$ write tf "#ifndef SIZEOF_LONG"
+$ write tf "#define SIZEOF_LONG (4)"
+$ write tf "#endif"
+$ else
+$ write tf "#ifndef SIZEOF_LONG_LONG"
+$ write tf "#ifndef __VAX"
+$ write tf "#define SIZEOF_LONG_LONG (8)"
+$ write tf "#endif"
+$ write tf "#endif"
+$ endif
+$ goto cfgh_in_loop1
+$ endif
+$ if key2b .eqs. "SHORT"
+$ then
+$ write tf "#ifndef SIZEOF_SHORT"
+$ write tf "#define SIZEOF_SHORT (2)"
+$ write tf "#endif"
+$ goto cfgh_in_loop1
+$ endif
+$ write tf "/* ", xline, " */"
+$ goto cfgh_in_loop1
+$ endif
+$!
+$! Process NEED directives
+$!-------------------------------
+$ if key2a .eqs. "NEED"
+$ then
+$ if key2b .eqs. "STRINGS" .and. key2_h .eqs. "_H"
+$ then
+$ write tf "#ifndef NEED_STRINGS_H"
+$ write tf "#define NEED_STRINGS_H 1"
+$ write tf "#endif"
+$ goto cfgh_in_loop1
+$ endif
+$ write tf "/* ", xline, " */"
+$ goto cfgh_in_loop1
+$ endif
+$!
+$!
+$! Process STATFS directives
+$!-------------------------------
+$! if key2a .eqs. "STATFS"
+$! then
+$! write tf "/* ", xline, " */"
+$! goto cfgh_in_loop1
+$! endif
+$!
+$! Process inline directive
+$!------------------------------
+$ if key2 .eqs. "inline"
+$ then
+$ write tf "#ifndef inline"
+$ write tf "#define inline __inline"
+$ write tf "#endif"
+$ goto cfgh_in_loop1
+$ endif
+$!
+$! Process restrict directive
+$!--------------------------------
+$ if key2 .eqs. "restrict"
+$ then
+$ write tf "#ifndef restrict"
+$ write tf "#define restrict __restrict"
+$ write tf "#endif"
+$ goto cfgh_in_loop1
+$ endif
+$!
+$! Process RETSIGTYPE directive
+$!----------------------------------
+$ if key2 .eqs. "RETSIGTYPE"
+$ then
+$ write tf "#ifndef RETSIGTYPE"
+$ write tf "#define RETSIGTYPE void"
+$ write tf "#endif"
+$ goto cfgh_in_loop1
+$ endif
+$!
+$! Process STDC_HEADERS (SAMBA!)
+$!---------------------------
+$ if key2 .eqs. "STDC_HEADERS"
+$ then
+$ write tf "#ifndef STDC_HEADERS"
+$ write tf "#define STDC_HEADERS 1"
+$ write tf "#endif"
+$ goto cfgh_in_loop1
+$ endif
+$!
+$! Process PROTOTYPES directive
+$!-------------------------------------
+$ if key2 .eqs. "PROTOTYPES"
+$ then
+$ write tf "#ifndef PROTOTYPES"
+$ write tf "#define PROTOTYPES 1"
+$ write tf "#endif"
+$ goto cfgh_in_loop1
+$ endif
+$!
+$! Special for SEEKDIR_RETURNS_VOID
+$!---------------------------------------
+$ if key2 .eqs. "SEEKDIR_RETURNS_VOID"
+$ then
+$ write tf "#ifndef SEEKDIR_RETURNS_VOID"
+$ write tf "#define SEEKDIR_RETURNS_VOID 1"
+$ write tf "#endif"
+$ endif
+$!
+$! TIME_WITH_SYS_TIME note: On VMS time.h and sys/time.h are same module.
+$!
+$! TIME_T_IN_SYS_TYPES_H
+$!------------------------------
+$ if key2 .eqs. "TIME_T_IN_TYPES_H"
+$ then
+$ write tf "#ifndef ''key2'"
+$ write tf "#define ''key2' 1"
+$ write tf "#endif"
+$ endif
+$!
+$! Unknown - See if CONFIGURE can give a clue for this
+$!----------------------------------------------------------
+$ pflag = 0
+$ set_flag = 0
+$! gproj_name = proj_name - "_VMS" - "-VMS"
+$ if f$search(tfile1) .nes. "" then delete 'tfile1';*
+$ define/user sys$output nl:
+$ define/user sys$error nl:
+$! if f$locate("FILE", key2) .lt. key2_len then pflag = 1
+$! if f$locate("DIR", key2) .eq. key2_len - 3 then pflag = 1
+$! if f$locate("PATH", key2) .eq. key2_len - 4 then pflag = 1
+$!
+$ search/out='tfile1' 'configure_script' "''key2'="/exact
+$ search_sev = '$severity'
+$ if 'search_sev' .eq. 1
+$ then
+$ open/read/err=unknown_cf_rd_error sf 'tfile1'
+$search_file_rd_loop:
+$ read/end=unknown_cf_rd_err sf line_in
+$ line_in = f$edit(line_in, "TRIM")
+$ skey1 = f$element(0,"=",line_in)
+$ if skey1 .eqs. key2
+$ then
+$ skey2 = f$element(1,"=",line_in)
+$ skey2a = f$extract(0,2,skey2)
+$!
+$! Keep these two cases separate to make it easier to add
+$! more future intelligence to this routine
+$!----------------------------------------------------------------------
+$ if skey2a .eqs. """`"
+$ then
+$! if pflag .eq. 1
+$! then
+$! write tf "#ifndef ''key2'"
+$! write tf "#define ",key2," """,gproj_name,"_",key2,""""
+$! write tf "#endif"
+$! else
+$! Ignore this for now
+$!------------------------------------------
+$ write tf "/* ", xline, " */"
+$! endif
+$ set_flag = 1
+$ goto found_in_configure
+$ endif
+$ if skey2a .eqs. """$"
+$ then
+$! if pflag .eq. 1
+$! then
+$! write tf "#ifndef ''key2'"
+$! write tf "#define ",key2," """,gproj_name,"_",key2,""""
+$! write tf "#endif"
+$! else
+$! Ignore this for now
+$!-------------------------------------------
+$ write tf "/* ", xline, " */"
+$! endif
+$ set_flag = 1
+$ goto found_in_configure
+$ endif
+$ if f$extract(0, 1, skey2) .eqs. "'"
+$ then
+$ skey2 = skey2 - "'" - "'"
+$ endif
+$ write tf "#ifndef ''key2'"
+$ write tf "#define ",key2," """,skey2,""""
+$ write tf "#endif"
+$ set_flag = 1
+$ else
+$ goto search_file_rd_loop
+$! if pflag .eq. 1
+$! then
+$! write tf "#ifndef ''key2'"
+$! write tf "#define ",key2," """,gproj_name,"_",key2,""""
+$! write tf "#endif"
+$! set_flag = 1
+$! endif
+$ endif
+$found_in_configure:
+$unknown_cf_rd_err:
+$ if f$trnlnm("sf","lnm$process",,"SUPERVISOR") .nes. ""
+$ then
+$ close sf
+$ endif
+$ if f$search(tfile1) .nes. "" then delete 'tfile1';*
+$ if set_flag .eq. 1 then goto cfgh_in_loop1
+$ endif
+$ endif
+$!
+$!
+$!
+$! If it falls through everything else, comment it out
+$!-----------------------------------------------------
+$ write tf "/* ", xline, " */"
+$ goto cfgh_in_loop1
+$cfgh_in_loop1_end:
+$close inf
+$!
+$!
+$! Write out the tail
+$!--------------------
+$write_tail:
+$gosub write_config_h_tail
+$!
+$! Exit and clean up
+$!--------------------
+$general_error:
+$status = '$status'
+$all_exit:
+$set noon
+$if f$trnlnm("sf","lnm$process",,"SUPERVISOR") .nes. "" then close sf
+$if f$trnlnm("tf","lnm$process",,"SUPERVISOR") .nes. "" then close tf
+$if f$trnlnm("inf","lnm$process",,"SUPERVISOR") .nes. "" then close inf
+$if f$trnlnm("tf1","lnm$process",,"SUPERVISOR") .nes. "" then close tf1
+$if f$trnlnm("tf2","lnm$process",,"SUPERVISOR") .nes. "" then close tf2
+$if f$trnlnm("tfcv","lnm$process",,"SUPERVISOR") .nes. "" then close tfcv
+$if f$type(tfile1) .eqs. "STRING"
+$then
+$ if f$search(tfile1) .nes. "" then delete 'tfile1';*
+$endif
+$if f$type(dchfile) .eqs. "STRING"
+$then
+$ if f$search(dchfile) .nes. "" then delete 'dchfile';*
+$endif
+$if f$type(configure_script) .eqs. "STRING"
+$then
+$ if f$search(configure_script) .nes. "" then delete 'configure_script';*
+$endif
+$exit 'status'
+$!
+$!
+$control_y:
+$ status = ss_control_y
+$ goto all_exit
+$!
+$!
+$!
+$! Gosub to write a new config_vms.h
+$!-----------------------------------
+$write_config_vms:
+$outfile = "sys$disk:[]config_vms.h"
+$create 'outfile'
+$open/append tf 'outfile'
+$write tf "/* File: config_vms.h"
+$write tf "**"
+$write tf "** This file contains the manual edits needed for porting"
+$!write tf "** the ''proj_name' package to OpenVMS.
+$write tf "**"
+$write tf "** Edit this file as needed. The procedure that automatically"
+$write tf "** generated this header stub will not overwrite or make any"
+$write tf "** changes to this file."
+$write tf "**"
+$write tf -
+ "** ", datetime, tab, username, tab, "Generated by ''my_proc_file'"
+$write tf "**"
+$write tf -
+ "**========================================================================*/"
+$write tf ""
+$close tf
+$return
+$!
+$! gosub to write out a documentation header for config.h
+$!----------------------------------------------------------------
+$write_config_h_header:
+$outfile = "sys$disk:[]config.h"
+$create 'outfile'
+$open/append tf 'outfile'
+$write tf "#ifndef CONFIG_H"
+$write tf "#define CONFIG_H"
+$write tf "/* File: config.h"
+$write tf "**"
+$write tf -
+ "** This file contains the options needed for porting "
+$write tf "** the project on a VMS system."
+$write tf "**"
+$write tf "** Try not to make any edits to this file, as it is"
+$write tf "** automagically generated."
+$write tf "**"
+$write tf "** Manual edits should be made to the config_vms.h file."
+$write tf "**"
+$write tf -
+ "** ", datetime, tab, username, tab, "Generated by ''my_proc_file'"
+$write tf "**"
+$write tf -
+ "**========================================================================*/"
+$write tf ""
+$write tf "#if (__CRTL_VER >= 70200000) && !defined (__VAX)"
+$write tf "#define _LARGEFILE 1"
+$write tf "#endif"
+$write tf ""
+$write tf "#ifndef __VAX"
+$write tf "#ifdef __CRTL_VER"
+$write tf "#if __CRTL_VER >= 80200000"
+$write tf "#define _USE_STD_STAT 1"
+$write tf "#endif"
+$write tf "#endif"
+$write tf "#endif"
+$write tf ""
+$!
+$if P1 .nes. "NOBUILTINS"
+$then
+$ write tf " /* Allow compiler builtins */"
+$ write tf "/*-------------------------*/"
+$ write tf "#ifdef __DECC_VER"
+$ write tf "#include <non_existant_dir:builtins.h>"
+$ write tf "#endif"
+$endif
+$!
+$write tf ""
+$return
+$!
+$! gosub to write out the tail for config.h and close it
+$!---------------------------------------------------------
+$write_config_h_tail:
+$write tf ""
+$write tf " /* Include the hand customized settings */"
+$write tf "/*--------------------------------------*/"
+$write tf "#include ""sys$disk:config_vms.h"""
+$write tf ""
+$write tf "#endif /* CONFIG_H */"
+$close tf
+$return
+$!
diff --git a/vms/descrip.mms b/vms/descrip.mms
index 77dad90a..a0b7bd6a 100644
--- a/vms/descrip.mms
+++ b/vms/descrip.mms
@@ -47,6 +47,7 @@ MAKEFILE = $(VMSDIR)Descrip.MMS
#CCFLAGS = /noOpt/Debug
# a comma separated list of macros to define
+# Do not specify _POSIX_EXIT here, other tricks are used for this.
CDEFS = "GAWK","HAVE_CONFIG_H"
.ifdef GNUC
@@ -67,8 +68,15 @@ CFLAGS = /Incl=[]/Obj=[]/Opt=noInline/Def=($(CDEFS)) $(CCFLAGS)
LIBS = sys$share:vaxcrtl.exe/Shareable
.else !!VAXC
# neither GNUC nor VAXC, assume DECC (same for either VAX or Alpha)
-CC = cc/DECC/Prefix=All
-CFLAGS = /Incl=[]/Obj=[]/Def=($(CDEFS)) $(CCFLAGS)
+.ifdef __VAX__
+CFLOAT =
+.else
+CFLOAT = /float=ieee/ieee_mode=denorm_results
+.endif
+CNAME = /NAME=(AS_IS,SHORT)
+CC = cc/DECC/Prefix=All/NESTED_INCLUDE=NONE$(CFLOAT)
+CFLAGS = /Incl=([],[.vms])/Obj=[]/Def=($(CDEFS))$(CNAME) $(CCFLAGS)
+CEFLAGS = /Incl=([],[.vms],[.missing_d],[.extension])$(CNAME) $(CCFLAGS)
LIBS = # DECC$SHR instead of VAXCRTL, no special link option needed
.endif !VAXC
.endif !GNUC
@@ -106,7 +114,7 @@ AWKOBJS = $(AWKOBJ1),$(AWKOBJ2)
# VMSOBJS
# VMS specific stuff
VMSCODE = vms_misc.obj,vms_popen.obj,vms_fwrite.obj,vms_args.obj,\
- vms_gawk.obj,vms_cli.obj
+ vms_gawk.obj,vms_cli.obj,vms_crtl_init.obj
VMSCMD = gawk_cmd.obj # built from .cld file
VMSOBJS = $(VMSCODE),$(VMSCMD)
@@ -114,7 +122,7 @@ DOCS= $(DOCDIR)gawk.1,$(DOCDIR)gawk.texi,$(DOCDIR)texinfo.tex
# Release of gawk
REL=4.1
-PATCHLVL=0
+PATCHLVL=1
# generic target
all : gawk
@@ -128,8 +136,8 @@ gawk : gawk.exe
gawk.exe : $(GAWKOBJ) $(AWKOBJS) $(VMSOBJS) gawk.opt
$(LINK) $(LINKFLAGS) gawk.opt/options
-gawk.opt : $(MAKEFILE) # create linker options file
- @ open/write opt sys$disk:[]gawk.opt ! ~ 'cat <<close >gawk.opt'
+gawk.opt : $(MAKEFILE) config.h # create linker options file
+ @ open/write opt sys$disk:[]gawk.opt ! ~ 'cat <<close >gawk.opt'
@ write opt "! GAWK -- GNU awk"
@ write opt "$(GAWKOBJ)"
@ write opt "$(AWKOBJ1)"
@@ -139,17 +147,19 @@ gawk.opt : $(MAKEFILE) # create linker options file
@ write opt "stack=48 !preallocate more pages (default is 20)"
@ write opt "iosegment=128 !ditto (default is 32)"
@ write opt "$(LIBS)"
- @ write opt "identification=""V$(REL).$(PATCHLVL)"""
- @ close opt
+ @ close opt
+ $ @$(VMSDIR)gawk_ident.com
$(VMSCODE) : awk.h config.h $(VMSDIR)redirect.h $(VMSDIR)vms.h
-$(AWKOBJS) : awk.h gettext.h mbsupport.h regex.h dfa.h config.h $(VMSDIR)redirect.h
+$(AWKOBJS) : awk.h gettext.h mbsupport.h regex.h dfa.h config.h \
+ $(VMSDIR)redirect.h
$(GAWKOBJ) : awk.h config.h $(VMSDIR)redirect.h
#-----------------------------------------------------------------------------
# Older versions of MMS have problems handling lower case file names typically
# found on ODS-5 disks. Fix this by adding explicit dependencies.
#_____________________________________________________________________________
+
array.obj : array.c
awkgram.obj : awkgram.c awk.h
builtin.obj : builtin.c floatmagic.h random.h
@@ -174,7 +184,8 @@ node.obj : node.c
profile.obj : profile.c
random.obj : random.c random.h
re.obj : re.c
-regex.obj : regex.c regcomp.c regex_internal.c regexec.c regex.h regex_internal.h
+regex.obj : regex.c regcomp.c regex_internal.c regexec.c regex.h \
+ regex_internal.h
str_array.obj : str_array.c
symbol.obj : symbol.c
version.obj : version.c
@@ -184,12 +195,14 @@ vms_fwrite.obj : $(VMSDIR)vms_fwrite.c
vms_args.obj : $(VMSDIR)vms_args.c
vms_gawk.obj : $(VMSDIR)vms_gawk.c
vms_cli.obj : $(VMSDIR)vms_cli.c
+vms_crtl_init.obj : $(VMSDIR)vms_crtl_init.c
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)snprintf.c $(MISSNGD)getaddrinfo.c \
+ $(MISSNGD)usleep.c \
$(MISSNGD)setenv.c $(MISSNGD)strcoll.c $(MISSNGD)wcmisc.c
# bison or yacc required
@@ -201,7 +214,8 @@ awkgram.c : awkgram.y # foo.y :: yacc => y[_]tab.c, bison => foo_tab.c
$(PARSER) $(YFLAGS) $<
@- if f$search("ytab.c") .nes."" then rename/new_vers ytab.c $@
@- if f$search("y_tab.c") .nes."" then rename/new_vers y_tab.c $@
- @- if f$search("awkgram_tab.c").nes."" then rename/new_vers awkgram_tab.c $@
+ @- if f$search("awkgram_tab.c").nes."" then \
+ rename/new_vers awkgram_tab.c $@
command.c : command.y
@- if f$search("ytab.c") .nes."" then delete ytab.c;*
@@ -211,10 +225,14 @@ command.c : command.y
$(PARSER) $(YFLAGS) $<
@- if f$search("ytab.c") .nes."" then rename/new_vers ytab.c $@
@- if f$search("y_tab.c") .nes."" then rename/new_vers y_tab.c $@
- @- if f$search("command_tab.c").nes."" then rename/new_vers command_tab.c $@
+ @- if f$search("command_tab.c").nes."" then \
+ rename/new_vers command_tab.c $@
-config.h : $(VMSDIR)vms-conf.h
- copy $< sys$disk:[]$@
+config_vms.h : $(VMSDIR)generate_config_vms_h_gawk.com
+ $ @$(VMSDIR)generate_config_vms_h_gawk.com
+
+config.h : configh.in config_vms.h $(VMSDIR)config_h.com
+ $ @$(VMSDIR)config_h.com
$(VMSCMD) : $(VMSDIR)gawk.cld
set command $(CLDFLAGS)/object=$@ $<
@@ -223,6 +241,96 @@ $(VMSCMD) : $(VMSDIR)gawk.cld
install.help : $(VMSDIR)gawk.hlp
library/help $(HELPLIB) $< /log
+
+# Build dynamic extensions - Alpha/Itanium only.
+.ifdef __VAX__
+# VAX not complete yet.
+plug_opt = [.VMS.VAX]gawk_plugin_xfer.opt
+.else
+plug_opt = [.vms]gawk_plugin.opt
+.endif
+
+ext_gawkdirfd_h = [.extension]gawkdirfd.h config.h nonposix.h
+
+extensions : filefuncs.exe fnmatch.exe inplace.exe ordchr.exe readdir.exe \
+ revoutput.exe revtwoway.exe rwarray.exe testext.exe time.exe
+
+filefuncs.exe : filefuncs.obj stack.obj gawkfts.obj $(plug_opt)
+ link/share=$(MMS$TARGET) $(MMS$SOURCE), stack.obj, gawkfts.obj, \
+ $(plug_opt)/opt
+
+fnmatch.exe : fnmatch.obj $(plug_opt)
+ link/share=$(MMS$TARGET) $(MMS$SOURCE), $(plug_opt)/opt
+
+inplace.exe : inplace.obj $(plug_opt)
+ link/share=$(MMS$TARGET) $(MMS$SOURCE), $(plug_opt)/opt
+
+ordchr.exe : ordchr.obj $(plug_opt)
+ link/share=$(MMS$TARGET) $(MMS$SOURCE), $(plug_opt)/opt
+
+readdir.exe : readdir.obj $(plug_opt)
+ link/share=$(MMS$TARGET) $(MMS$SOURCE), $(plug_opt)/opt
+
+revoutput.exe : revoutput.obj $(plug_opt)
+ link/share=$(MMS$TARGET) $(MMS$SOURCE), $(plug_opt)/opt
+
+revtwoway.exe : revtwoway.obj $(plug_opt)
+ link/share=$(MMS$TARGET) $(MMS$SOURCE), $(plug_opt)/opt
+
+rwarray.exe : rwarray.obj $(plug_opt)
+ link/share=$(MMS$TARGET) $(MMS$SOURCE), $(plug_opt)/opt
+
+testext.exe : testext.obj $(plug_opt)
+ link/share=$(MMS$TARGET) $(MMS$SOURCE), $(plug_opt)/opt
+
+time.exe : time.obj $(plug_opt)
+ link/share=$(MMS$TARGET) $(MMS$SOURCE), $(plug_opt)/opt
+
+stack.obj : [.extension]stack.c config.h gawkapi.h \
+ [.extension]gawkfts.h, [.extension]stack.h
+ $(CC)$(CEFLAGS)/define=(HAVE_CONFIG_H)/object=$(MMS$TARGET) $(MMS$SOURCE)
+
+gawkfts.obj : [.extension]gawkfts.c config.h [.extension]gawkfts.h \
+ $(ext_gawkdirfd_h)
+ $(CC)$(CEFLAGS)/define=(HAVE_CONFIG_H, ZOS_USS, "fchdir(x)=(-1)") \
+ /object=$(MMS$TARGET) $(MMS$SOURCE)
+
+filefuncs.obj : [.extension]filefuncs.c config.h gawkapi.h \
+ [.extension]gawkfts.h
+ $(CC)$(CEFLAGS)/define=(HAVE_CONFIG_H)/object=$(MMS$TARGET) $(MMS$SOURCE)
+
+fnmatch.obj : [.extension]fnmatch.c config.h gawkapi.h \
+ [.missing_d]fnmatch.h [.missing_d]fnmatch.c
+ $(CC)$(CEFLAGS)/define=(HAVE_CONFIG_H)/object=$(MMS$TARGET) $(MMS$SOURCE)
+
+inplace.obj : [.extension]inplace.c config.h gawkapi.h
+ $(CC)$(CEFLAGS)/define=(HAVE_CONFIG_H)/object=$(MMS$TARGET) $(MMS$SOURCE)
+
+ordchr.obj : [.extension]ordchr.c config.h gawkapi.h
+ $(CC)$(CEFLAGS)/define=(HAVE_CONFIG_H)/object=$(MMS$TARGET) $(MMS$SOURCE)
+
+readdir.obj : [.extension]readdir.c config.h gawkapi.h \
+ $(ext_gawkdirfd_h)
+ $(CC)$(CEFLAGS)/define=(HAVE_CONFIG_H, HAVE_DIRENT_H) \
+ /object=$(MMS$TARGET) $(MMS$SOURCE)
+
+revoutput.obj : [.extension]revoutput.c config.h gawkapi.h
+ $(CC)$(CEFLAGS)/define=(HAVE_CONFIG_H)/object=$(MMS$TARGET) $(MMS$SOURCE)
+
+revtwoway.obj : [.extension]revtwoway.c config.h gawkapi.h
+ $(CC)$(CEFLAGS)/define=(HAVE_CONFIG_H, HAVE_GETDTABLESIZE) \
+ /object=$(MMS$TARGET) $(MMS$SOURCE)
+
+rwarray.obj : [.extension]rwarray.c config.h gawkapi.h
+ $(CC)$(CEFLAGS)/define=(HAVE_CONFIG_H)/object=$(MMS$TARGET) $(MMS$SOURCE)
+
+testext.obj : [.extension]testext.c config.h gawkapi.h
+ $(CC)$(CEFLAGS)/define=(HAVE_CONFIG_H)/object=$(MMS$TARGET) $(MMS$SOURCE)
+
+time.obj : [.extension]time.c config.h gawkapi.h
+ $(CC)$(CEFLAGS)/define=(HAVE_CONFIG_H)/object=$(MMS$TARGET) $(MMS$SOURCE)
+
+
# miscellaneous other targets
tidy :
- if f$search("*.*;-1").nes."" then purge
@@ -230,13 +338,35 @@ tidy :
clean :
- if f$search ("*.obj") .nes. "" then delete *.obj;*
+ - if f$search ("*.lis") .nes. "" then delete *.lis;*
- if f$search ("gawk.opt") .nes. "" then delete gawk.opt;*
spotless : clean tidy
- - if f$search("config.h").nes."" then rename config.h config.h-old/New
+ - if f$search("config.h").nes."" then delete config.h;*
+ - if f$search("config_vms.h").nes."" then delete config_vms.h;*
- if f$search("gawk.exe").nes."" then delete gawk.exe;*
+ - if f$search("*.dsf").nes."" then delete *.dsf;*
+ - if f$search("*.map").nes."" then delete *.map;*
+ - if f$search("*.pcsi$desc").nes."" then delete *.pcsi$desc;*
+ - if f$search("*.pcsi$text").nes."" then delete *.pcsi$text;*
+ - if f$search("gawk*_src.bck").nes."" then delete gawk*_src.bck;*
+ - if f$search("*.release_notes").nes."" then delete *.release_notes;*
+ - if f$search("filefuncs.exe").nes."" then delete filefuncs.exe;*
+ - if f$search("fnmatch.exe").nes."" then delete fnmatch.exe;*
+ - if f$search("inplace.exe").nes."" then delete inplace.exe;*
+ - if f$search("ordchr.exe").nes."" then delete ordchr.exe;*
+ - if f$search("readdir.exe").nes."" then delete readdir.exe;*
+ - if f$search("revoutput.exe").nes."" then delete revoutput.exe;*
+ - if f$search("revtwoway.exe").nes."" then delete revtwoway.exe;*
+ - if f$search("rwarray.exe").nes."" then delete rwarray.exe;*
+ - if f$search("testext.exe").nes."" then delete testext.exe;*
+ - if f$search("time.exe").nes."" then delete time.exe;*
+ - if f$search("gawk_verb.cld").nes."" then delete gawk_verb.cld;*
- if f$search("gawk.dvi").nes."" then delete gawk.dvi;*
- - if f$search("[.doc]texindex.exe").nes."" then delete [.doc]texindex.exe;*
+ - if f$search("[.doc]texindex.exe").nes."" then \
+ delete [.doc]texindex.exe;*
+ - if f$search("[.cxx_repository]*.*;").nes."" then \
+ delete [.cxx_repository]*.*;*
#
# Note: this only works if you kept a copy of [.support]texindex.c
@@ -258,7 +388,8 @@ gawk.dvi : [.doc]texindex.exe [.doc]gawk.texi
@ write sys$output " Third (final) pass"
TeX gawk.texi
-@ purge
- -@ delete gawk.lis;,.aux;,gawk.%%;,.cps;,.fns;,.kys;,.pgs;,.toc;,.tps;,.vrs;
+ -@ delete \
+ gawk.lis;,.aux;,gawk.%%;,.cps;,.fns;,.kys;,.pgs;,.toc;,.tps;,.vrs;
@ rename/new_vers gawk.dvi [-]*.*
@ set default [-]
diff --git a/vms/fcntl.h b/vms/fcntl.h
deleted file mode 100644
index d975db7a..00000000
--- a/vms/fcntl.h
+++ /dev/null
@@ -1,10 +0,0 @@
-/* "fcntl.h" -- constants for BSD-style I/O routines (ala VAX C's <file.h>) */
-#define O_RDONLY 0
-#define O_WRONLY 1
-#define O_RDWR 2
-#define O_NDELAY 4
-#define O_NOWAIT 4
-#define O_APPEND 8
-#define O_CREAT 0x0200
-#define O_TRUNC 0x0400
-#define O_EXCL 0x0800
diff --git a/vms/gawk.hlp b/vms/gawk.hlp
index 4b82e7e9..a14ad72b 100644
--- a/vms/gawk.hlp
+++ b/vms/gawk.hlp
@@ -1183,6 +1183,10 @@
the default is systime(); if u is present and non-zero
then t is treated as a UTC value, otherwise it is
considered to be local time
+
+5 time_logical_names
+ Gawk needs the SYS$TIMEZONE_RULE or TZ logical names defined or it will
+ output the time in the GMT timezone.
5 time_formats
Formatting directives similar to the 'printf' & 'sprintf' functions
(each is introduced in the format string by preceding it with a
@@ -1557,9 +1561,28 @@
4 exit
The exit statement can optionally pass a final status value to the
operating system. GAWK expects a UN*X-style value instead of a
- VMS status value, so 0 indicates success and non-zero indicates
- failure. The final exit status will be 1 (VMS success) if 0 is
- used, or even (VMS non-success) if non-zero is used.
+ VMS status value, so 0 indicates success. A failure is indicated
+ by 1 and VMS will set the ERROR status. A fatal error is indicated
+ by 2 and VMS will set the FATAL status. All other values will will have
+ the SUCCESS status. The exit value is encoded to comply with VMS
+ coding standards and will have the C_FACILITY_NO of 0x350000 with
+ the constant 0xA000 added to the number shifted over by 3 bits to
+ make room for the severity codes.
+
+ To extract the actual gawk exit code from the VMS status use:
+ unix_status = (vms_status .and. &x7f8) / 8
+
+ A C program that uses exec() to call gawk will get the original
+ UN*X-style exit value.
+
+ Older versions of Gawk treated Unix exit code 0 as 1, A failure as
+ 2, and a fatal error as 4, and passed all the other numbers through.
+ This violated the VMS exit status coding requirements.
+
+4 rounding
+ VAX/VMS floating point uses unbiased rounding. This is different than
+ what portable gawk programs expect.
+
3 changes
Changes between version 4.0.0 and earlier versions
@@ -1569,6 +1592,7 @@
General
dgawk.exe does interactive debugging of awk programs
pgawk.exe does comprehensive execution profiling of awk programs
+ pgawk.exe is not currently supplied for VMS.
-d[file] and -p[file] options added
-Wcompat and -Wusage options dropped; use -Wtraditional and -Whelp
BEGINFILE and ENDFILE built-in rule patterns
@@ -1594,6 +1618,10 @@
support for radix prefix '0' (octal) and '0x' (hexadecimal)
VMS-specific
+ The VMS exit codes now correctly encode the gawk exit status and
+ the VMS severity bits are set.
+ Large file support is enabled on the platforms that support it.
+ Extended filename support is enabled on the platforms that support it.
New command qualifiers: /EXTRA_COMMANDS, /PROFILE, /DUMP_VARIABLES,
/OPTIMIZE, /TRADITIONAL, /SANDBOX, /NON_DECIMAL_DATA
Revised qualifier: /LINT, takes optional argument list
diff --git a/vms/gawk_alias_setup.com b/vms/gawk_alias_setup.com
new file mode 100644
index 00000000..73f70d15
--- /dev/null
+++ b/vms/gawk_alias_setup.com
@@ -0,0 +1,110 @@
+$! File: gawk_alias_setup.com
+$!
+$! The PCSI procedure needs a helper script to set up and remove aliases.
+$!
+$! If p1 starts with "R" then remove instead of install.
+$!
+$!
+$! 02-Jan-2014 J. Malmberg - Gawk Version
+$!
+$!===========================================================================
+$!
+$ mode = "install"
+$ code = f$extract(0, 1, p1)
+$ if code .eqs. "R" .or. code .eqs. "r" then mode = "remove"
+$!
+$ arch_type = f$getsyi("ARCH_NAME")
+$ arch_code = f$extract(0, 1, arch_type)
+$!
+$ if arch_code .nes. "V"
+$ then
+$ set proc/parse=extended
+$ endif
+$!
+$!
+$ call do_alias "gawk" "[bin]"
+$ call do_alias "gawk" "[bin]" "awk"
+$ call do_alias "gawk" "[bin]" "gawk" "[usr.bin]"
+$ call do_alias "gawk" "[bin]" "awk" "[usr.bin]"
+$ call do_alias "gawk.1" "[usr.share.man.man1]" "awk.1"
+$!
+$ exit
+$!!
+$!
+$do_alias: subroutine
+$ if mode .eqs. "install"
+$ then
+$ call add_alias "''p1'" "''p2'" "''p3'" "''p4'"
+$ else
+$ call remove_alias "''p1'" "''p2'" "''p3'" "''p4'"
+$ endif
+$ exit
+$ENDSUBROUTINE ! do_alias
+$!
+$!
+$! P1 is the filename, p2 is the directory prefix,
+$! p3 is the alias name if different than p1
+$! p4 is the alias directory if different than p2
+$add_alias: subroutine
+$ if p3 .eqs. "" then p3 = p1
+$ if p4 .eqs. "" then p4 = p2
+$ ftype = f$element(1, ".", p1)
+$ if ftype .eqs. "."
+$ then
+$ file = "gnv$gnu:''p2'gnv$''p1'.EXE"
+$ alias = "gnv$gnu:''p4'''p3'."
+$ else
+$ file = "gnv$gnu:''p2'''p1'"
+$ alias = "gnv$gnu:''p4'''p3'"
+$ endif
+$ if f$search(file) .nes. ""
+$ then
+$ if f$search(alias) .eqs. ""
+$ then
+$ set file/enter='alias' 'file'
+$ endif
+$ alias1 = alias + "exe"
+$ if (ftype .eqs. ".") .and. (f$search(alias1) .eqs. "")
+$ then
+$ set file/enter='alias1' 'file'
+$ endif
+$ endif
+$ exit
+$ENDSUBROUTINE ! add_alias
+$!
+$remove_alias: subroutine
+$ if p3 .eqs. "" then p3 = p1
+$ if p4 .eqs. "" then p4 = p2
+$ ftype = f$element(1, ".", p1)
+$ if ftype .eqs. "."
+$ then
+$ file = "gnv$gnu:''p2'''p1'.EXE"
+$ alias = "gnv$gnu:''p4'''p3'."
+$ else
+$ file = "gnv$gnu:''p2'''p1'"
+$ alias = "gnv$gnu:''p4'''p3'"
+$ endif
+$ file_fid = "No_file_fid"
+$ if f$search(file) .nes. ""
+$ then
+$ fid = f$file_attributes(file, "FID")
+$ if f$search(alias) .nes. ""
+$ then
+$ afid = f$file_attributes(alias, "FID")
+$ if (afid .eqs. fid)
+$ then
+$ set file/remove 'alias';
+$ endif
+$ endif
+$ alias1 = alias + "exe"
+$ if (ftype .eqs. ".") .and. (f$search(alias1) .nes. "")
+$ then
+$ afid = f$file_attributes(alias1, "FID")
+$ if (afid .eqs. fid)
+$ then
+$ set file/remove 'alias1';
+$ endif
+$ endif
+$ endif
+$ exit
+$ENDSUBROUTINE ! remove_alias
diff --git a/vms/gawk_build_steps.txt b/vms/gawk_build_steps.txt
new file mode 100644
index 00000000..b3bb281b
--- /dev/null
+++ b/vms/gawk_build_steps.txt
@@ -0,0 +1,220 @@
+From File: gawk_build_steps.txt
+
+Building GAWK on OpenVMS for use with GNV requires a current HP C compiler
+and MMK.
+
+The HP C 7.x compilers were used for building on Alpha and Itanium.
+The Compaq C 6.4 compiler is being used on VAX.
+
+MMK was obtained from https://github.com/endlesssoftware/mmk
+
+Several special things were done in this port of Gawk to VMS to make it
+easier to keep it up to date with the Unix version.
+
+Note the GNV$ prefix is registered for the GNV project to prevent name
+collisions with other products and packages. This is a VMS convention.
+
+The files are stored with GNV_ instead of GNV$ most open source source
+code maintainers do not want to files with $ in their source repositories.
+
+The build procedure will copy the files to have the GNV$ names as needed.
+
+1. The original GNU Gawk source files are in their own directory tree which
+is never written to by the build process. This directory is kept up to date
+with the current official patches. See below about the how this is done
+with logical names.
+
+2. A file vms_eco_level.h is used to set the ECO of the package. The
+vms_eco_level.h needs to be set back to zero if the version or patch level
+of the GNU Unix source is changed. This file is currently only used
+by the kit building procedure.
+
+The source kits are provided in backup savesets inside of the PCSI install kit.
+
+Backup save sets are currently the only distribution medium that I can be
+sure is installed on a target VMS system that will correctly unpack files
+with extended character sets in them. You may need to adjust the ownership
+of the restored files for kits on Alpha/Itanium VMS versions 8.1 and earlier.
+
+On VAX, the filenames will be as seen on the VAX system, typically with non
+ODS-2 characters and case changes prefixed with $ characters.
+
+[gnv.common_src]gawk_*_original_src.bck is the original source of the
+gawk kit as provided by the GNV project.
+[gnv.vms_src]gawk-*_vms_src.bck, if present, has the changed files that
+are used for building that are not yet in the gawk source kits
+distributed by the GNU gawk project.
+
+These backup savesets should be restored to different directory trees on
+an ODS-5 volume(s) which are referenced by concealed rooted logical names,
+unless on VAX, where either an NFS or ODS-2 volume can be used.
+
+SRC_ROOT: is for the source files common to all platforms. This can be a
+ read only copy of the files from a change control repository.
+
+ In my build environment, the TRUNK_ROOT:[gawk] is the
+ same directory as src_root:[gawk]. TRUNK_ROOT:[gawk] is a
+ checkout of the gawk repository used for the build.
+
+VMS_ROOT: is for the files that were changed from the repository copy of
+ SRC_ROOT:
+
+ Note, you should create the VMS_ROOT: directory tree even if it is
+ initially empty. This is where you should put edits if you are
+ making changes.
+
+ In my build environment, the source_root:[gnu_vms.gawk] is a
+ directory with the checked out code and vms_root:[gawk] is
+ a copy with any local modifications.
+
+ The command procedure compare_gawk_source.com will report any
+ differences in the source_root:[gnu_vms.gawk] directory and the
+ vms_root:[gawk] directory. If the source_root: logical is not
+ defined, it will translate the logical name src_root to do the
+ effective of src_root:[gawk.-.-.gnu_vms.gawk] to find the
+ VMS specific code CVS checkout based on where the checkout for
+ the GNU source is expected to be.
+
+LCL_ROOT: is manually created to have the same base and sub-directories as
+ SRC_ROOT: and VMS_ROOT: This is for the architecture specific
+ binaries and other files created during the build.
+
+The logical name REF_ROOT: is optionally defined to be a logical name that
+is a search list for VMS_ROOT:,SRC_ROOT:
+
+The logical name PRJ_ROOT: is defined to be a logical name that is a search
+list for LCL_ROOT:,REF_ROOT:
+
+The VMS_ROOT and LCL_ROOT directory trees can be created with commands
+similar to:
+
+ $ create/dir lcl_root:[gawk]/prot=w:re
+ $ copy src_root:[gawk...]*.dir -
+ lcl_root:[gawk...]/prot=(o:rwed,w:re)
+ $ create/dir vms_root:[gawk]/prot=w:re
+ $ copy src_root:[gawk...]*.dir -
+ vms_root:[gawk...]/prot=(o:rwed,w:re)
+
+One of the ways with to protect the source from being modified is to have
+the directories under src_root: owned by a user or resource where the build
+username only has read access to it.
+
+Edit the file gawk_release_note_start.txt or other text files to reflect
+any changes.
+
+Edit the file PCSI_GAWK_FILE_LIST.TXT if there are new files added to the
+kit. These files should all be ODS-2 legal filenames and directories.
+
+Note that if src_root: or vms_root: are NFS mounted disks, the
+step of backing up the source files will probably hang or fail.
+
+You need to copy the source files to VMS mounted disks and create
+logical names SRC_ROOT1 and VMS_ROOT1 to work around this to to
+reference local disks. Make sure src_root1:[000000] and
+vms_root1:[000000] exist and can be written to.
+
+The command procedure compare_gawk_source can be used to check
+those directories and keep them up to date.
+
+ @[.vms]compare_gawk_source.com SRCBCK UPDATE
+
+ This compares the reference GNU source with the backup
+ staging directory for it and updates with any changes.
+
+ @[.vms]compare_gawk_source.com VMSBCK UPDATE
+
+ This compares the VMS specific source with the backup
+ staging directory for it and updates with any changes.
+
+ Leave off "UPDATE" to just check without doing any changes.
+
+ If you are not using NFS mounted disks and do not want to have a
+ separate directory for staging the sources for backup make sure
+ that src_root1: and vms_root1: do not exist.
+
+The kits will be built in the directory STAGE_ROOT:[KIT], which must be
+writable to the build procedure.
+
+Define the logical name GNV_PCSI_PRODUCER to indicate who is making the
+distribution.
+
+Define the logical name GNV_PCSI_PRODUCER_FULL_NAME to be your full name
+or full name of your company.
+
+These two GNV_PCSI_* logical names need to be manually defined to indicate
+the "branding" to differentiate the source of the kit.
+
+A limitation of the PCSI kitting procedure is that when selecting files, it
+tends to ignore the directory structure and assumes that all files with the
+same name are the same file, so every file placed in the kit must have a
+unique ODS-2 legal name. Then a procedure needs to be added to the kit to
+create an alias link on install and remove the link on remove.
+
+While newer versions of PCSI can support ODS-5 filenames, not all verions
+of PCSI on systems that have ODS-5 filenames do. So as a post install step,
+the PCSI kit built by these steps does a rename to the correct case.
+
+With these search lists set up and the logical names described, Gawk can
+be built and kitted by setting your default to PRJ_ROOT:[gawk]
+and then issuing the command:
+
+ $ @[.vms]pcsi_product_gawk.com
+
+First it will build the binaries by using MMK utility. The case of the
+parameter may be significant on ODS-5.
+
+ $ mmk/descrip=[.vms]descrip.mms gawk
+
+Then for Alpha and Itanium, it will build the dynamic extensions.
+
+ $ mmk/descrip=[.vms]descrip.mms extensions
+
+To clean up after a build to start over, run mmk with the target spotless.
+
+ $ mmk/descrip=[.vms]descrip.mms spotless
+
+The files are installed into a NEW_GNU directory for staging by running the
+procedure stage_gawk_install.com. This copies the binaries and creates
+alias links to them.
+
+ $ @[.vms]stage_gawk_install.com remove
+ $ @[.vms]stage_gawk_install.com
+
+On the VAX platform, the staged files are needed for building the PCSI
+kit, as the VAX source was staged on an NFS volume, which encodes the
+filenames that have any upper case or special symbols in them.
+
+To remove the staged files, the procedure is run again with the parameter
+"REMOVE". This makes sure that the alias links are removed.
+
+The names and contents of the PCSI files requires that the version of
+gawk be encoded in a special format. This is done by:
+
+ @[.vms]make_pcsi_gawk_kit_name.com
+
+The release notes are built from the release note start, readme files and
+this file:
+
+ @[.release]build_gawk_release_notes.com
+
+Then the backup the source kits.
+
+Building a PCSI kit for an architecture takes the following steps after
+making sure that you have a working build environment.
+
+On VAX, the product command always prompts to the terminal for a confirmation.
+
+If there is another kit for this same version of gawk, but for a different
+base platform or operating system version, the product command will prompt
+to the terminal to select which one to compress.
+
+ The following message is normal:
+ %PCSI-I-CANNOTVAL, cannot validate
+ EAGLE$DQA0:[stage_root.][kit]GNV-AXPVMS-GAWK-V--1.PCSI;1
+ -PCSI-I-NOTSIGNED, product kit is not signed and therefore has
+ no manifest file
+
+This will result in both compressed and uncompressed kits for the target
+platform.
+
+Good Luck.
diff --git a/vms/gawk_ident.com b/vms/gawk_ident.com
new file mode 100644
index 00000000..5b3966f9
--- /dev/null
+++ b/vms/gawk_ident.com
@@ -0,0 +1,21 @@
+$! gawk_ident.com - Append ident with version to gawk.
+$!
+$!
+$ open/read cfgh config.h
+$cfgh_loop:
+$ read/end=cfgh_loop_end cfgh line_in
+$ key1 = f$element(0, " ", line_in)
+$ if key1 .nes. "#define" then goto cfgh_loop
+$ key2 = f$element(1, " ", line_in)
+$ if key2 .nes. "VERSION" then goto cfgh_loop
+$ version_string = f$element(2, " ", line_in) - """" - """"
+$ ver_major = f$element(0, ".", version_string)
+$ ver_minor = f$element(1, ".", version_string)
+$ REL = ver_major + "." + ver_minor
+$ PATCHLVL = f$element(2, ".", version_string)
+$cfgh_loop_end:
+$ close cfgh
+$!
+$ open/append Fopt gawk.opt
+$ write Fopt "identification=""V''REL'.''PATCHLVL'"""
+$ close Fopt
diff --git a/vms/gawk_plugin.opt b/vms/gawk_plugin.opt
new file mode 100644
index 00000000..b0523d08
--- /dev/null
+++ b/vms/gawk_plugin.opt
@@ -0,0 +1,5 @@
+CASE_SENSITIVE=YES
+SYMBOL_VECTOR=(plugin_is_GPL_compatible=DATA)
+SYMBOL_VECTOR=(PLUGIN_IS_GPL_COMPATIBLE/plugin_is_GPL_compatible=DATA)
+SYMBOL_VECTOR=(dl_load=PROCEDURE)
+SYMBOL_VECTOR=(DL_LOAD/dl_load=PROCEDURE)
diff --git a/vms/gawk_release_note_start.txt b/vms/gawk_release_note_start.txt
new file mode 100644
index 00000000..44fceaf5
--- /dev/null
+++ b/vms/gawk_release_note_start.txt
@@ -0,0 +1,189 @@
+From file: gawk_release_note_start.com
+
+This is GNU gawk packaged for VMS.
+
+The original readme files for GAWK for standalone building on VMS are
+supplied here along with a procedure for building GAWK for the making
+a PCSI kit.
+
+Note: I am a hobbyist and am not providing any support or any commitment
+to supply bug fixes or future releases. This code is as-is with no
+warrantees.
+
+The testing of this port of Gawk involved running some self tests that
+were provided with the source.
+
+This version of gawk supports dynamically loaded extensions on Alpha and
+Itanium versions of VMS. The pre-built dynamically loaded extensions
+are in gnv$gnu:[usr.lib.gawk].
+
+The linker option file used to build a dynamically loaded extension is
+located in gnv$gnu:[usr.src.gawk.extension.vms], and the gawkapi.h file
+is in gnv$gnu:[usr.include].
+
+Special installation notes:
+
+* Please see https://sourceforge.net/p/gnv/wiki/InstallingGNVPackages/
+ for the latest information on installing GNV related PCSI kits.
+
+* We are updating and replacing GNV one kit at a time and transitioning
+ GNV to be a set of kits that the GNV package will install. During
+ this transition some extra issues will need to be handled during
+ installs and upgrades.
+
+* Due to the way that PCSI identifies packages, if you install a package
+ from one producer and then want to upgrade it from another producer,
+ you will probably need to uninstall the previous package first.
+
+ Some of these packages were previously created with different producer
+ prefixes. We are standardizing on VMSPORTS and GNV as the branding
+ prefixes. GNV will be for packages that are part of the GNV product
+ suite, and VMSPORTS will be for most other packages.
+
+ This uninstall can cause warning messages about dependencies. If you
+ are transitioning to an upwardly compatible package, you can ignore
+ those warnings.
+
+* This package should be installed to the same volume as GNV is installed.
+
+ If you uninstall or upgrade GNV or install a GNV from before the
+ transition is complete, you will need to reinstall all other packages
+ that install to the same GNV directory tree.
+
+ This is because at least some of the existing GNV installation procedures
+ have bugs in them were instead of just deleting the files that were
+ installed, they delete all files in the GNV directory tree.
+
+* Because this is a transition, this package is replacing files from the
+ old GNV packages. This is a necessary issue to allow incremental
+ improvement as we can not replace the GNV package until we get all
+ the component packages done.
+
+* The GNV 2.x through at least the 3.0.1 kits make an unusual change
+ to the disk directory structure where they are installed where
+ they use the [vms$common.gnv] as a mount point and mount the posix
+ root on it. This is a bug because it causes many problems and does
+ not offer any advantages. One of the problems is that it causes
+ problems with other PCSI installs and uninstalls to that directory.
+
+ This bug can be manually repaired such as has been done on
+ on encompasserve.org as documented in PORTING_TO_VMS notes conference.
+
+ At this time, we do not have a scripted repair to this bug, and it
+ may not be possible to fully script a repair because this bug can
+ cause the POSIX root and [vms$common.gnv] to have different contents
+ when they should be the same directory, and it will take a manual
+ inspection to select which files go where.
+
+* Because of the directory change bug, the gnv$startup.com in the GNV
+ kit must be run when the system boots up or the [vms$common.gnv]
+ directory will appear to be empty.
+
+ If a PCSI kit like this one is installed when the GNV startup has not
+ been run, it will create a new directory tree under [vms$common.gnv]
+ that will not be visible to the posix root. If you uninstall this
+ PCSI kit before running the gnv$startup.com procedure then you can
+ install it after running the gnv$startup.com procedure. If you have
+ run the gnv$startup.com procedure after the install, then you have
+ a mess, and you will need to use the GNV umnt to un-mount the
+ [vms$common.gnv] directory before the uninstall of this kit will
+ work.
+
+An analyze/disk/repair step on the installation disk should be done after
+installation to collect files left over from incomplete deletions into the
+SYSLOST directory. This step should be done on a "quiet" system per HP
+recomendations.
+
+Bugs can be logged at the tracker with https://sourceforge.net/projects/gnv/.
+There is no guarantee that bugs will be fixed for a hobbyist build.
+
+VMS specific port information:
+
+The logical name GNV$GNU is used to find the simulated posix root and defines
+the logical name SYS$POSIX_ROOT in the process table in user mode for child
+processes if needed. This is to comply with VMS logical name conventions.
+The logical name BIN is also set in the process table in user mode to be
+GNV$GNU:[BIN] if it is not already set.
+
+The following DECC$Feature settings are in in effect for Gawk by default:
+
+DECC$ACL_ACCESS_CHECK enabled.
+DECC$ALLOW_REMOVE_OPEN_FILES enabled.
+DECC$ARGV_PARSE_STYLE enabled.
+DECC$EFS_CASE_PRESERVE enabled.
+DECC$EFS_CHARSET enabled.
+DECC$EFS_FILE_TIMESTAMPS enabled.
+DECC$ENABLE_GETENV_CACHE enabled.
+DECC$EXEC_FILEATTR_INHERITANCE set to 2.
+DECC$FILE_PERMISSION_UNIX enabled.
+DECC$FILE_SHARING enabled.
+DECC$FILE_OWNER_UNIX enabled.
+DECC$FILENAME_REPORT_UNIX enabled.
+DECC$FILENAME_UNIX_NO_VERSION enabled.
+DECC$GLOB_UNIX_STYLE enabled.
+DECC$POSIX_SEEK_STREAM_FILE enabled.
+DECC$READDIR_DROPDOTNOTYPE enabled.
+DECC$RENAME_NO_INHERIT enabled.
+DECC$STDIO_CTX_EOL enabled.
+DECC$STRTOL_ERANGE enabled.
+DECC$UNIX_PATH_BEFORE_LOGNAME enabled.
+
+While more strict UNIX compatibility feature settings can be applied by users
+by setting feature logical names, these settings are all the Bash and most
+ported programs need.
+
+This port of Gawk uses the VMS CRTL to handle the Unix format pathnames
+and as such is dependent on them. It is a known issue that directories with
+a Unix name "file.dir/" and some symbolic links are not handled correctly.
+This is a combination of problems with RMS and CRTL. The RMS portion is
+fixed with the VMS84?_RMS-V0300 ECO kit. I am not aware of a CRTL kit that
+fixes the issues.
+
+This kit is designed to be used with the GNV Bash 4.2.45 or later kit.
+
+Fixes and enhancements:
+
+* No logical names required for proper Gawk operations other than GNV$GNU
+ for locating the simulated "/".
+
+* GNV$GNU is used to find the posix root and locally sets SYS$POSIX_ROOT
+ for child processes if needed. This is to comply with VMS logical
+ name conventions. The logical name BIN is also set locally to be
+ GNV$GNU:[BIN] if it is not already set.
+
+* config.h now generated at part of the build from a template.
+
+The supplied GNV$GAWK_STARTUP.COM procedure is provided in
+[VMS$COMMON.SYS$STARTUP] can be put in your VMS startup procedure to install
+selected images as known because they need privileges. It is recommended
+that the GNV$STARTUP.COM procedure be run first, followed by the
+GNV$BASH_STARTUP.COM procedure before the GNV$GAWK_STARTUP.COM is
+executed.
+
+The names of the gawk image have been prefixed with GNV$ to prevent
+possible naming conflicts with other programs that are on the system. The
+GNV$ prefix has been registered with HP for this purpose.
+
+OpenVMS specific building and kitting instructions are after the standard
+bash readme file below.
+
+The source kits contains files for building Gawk using MMK.
+MMK 4.0 was used for this build on Alpha and Itanium Itanium.
+
+Currently, the focus of the OpenVMS GNV porting team is to address bugs in
+the OpenVMS port of GNV components that pose immediate barriers to running
+configure and make scripts for Open Source Software packages targeting
+OpenVMS environments.
+
+The GNV development team is involved in an ongoing effort to identify and
+document the underlying technical causes for these current limitations and (if
+available) workarounds as well as developing code fixes to eliminate them. The
+VMS-Ports Source Forge project at https://sourceforge.net/p/vms-ports/tickets/
+currently documents OpenVMS CRTL bugs and limitations with respect to porting
+Open Source Software using OpenVMS. The VMS-Ports Source Forge Project also
+contains examples of ported packages provided by volunteer contributors as well
+as documentation with recommendations on how to setup, modify and use the
+OpenVMS GNV environment for the purpose of porting Open Source software
+packages to OpenVMS. Browse to https://sourceforge.net/p/vms-ports/wiki/Home/
+for more information.
+
diff --git a/vms/gawk_verb.com b/vms/gawk_verb.com
new file mode 100644
index 00000000..b74c49ed
--- /dev/null
+++ b/vms/gawk_verb.com
@@ -0,0 +1,26 @@
+$! gawk_verb.com - build the gawk_verb.cld from the gawk.cld.
+$!
+$! The CLD file needed to modify a DCL command table is different
+$! from the CLD file needed to build the product by specifying an image.
+$!
+$! So read in the [.vms]gawk.cld and generate a gawk_verb.cld.
+$!
+$! 23-Dec-2012 - J. Malmberg
+$!
+$outfile = "sys$disk:[]gawk_verb.cld"
+$infile = "[.vms]gawk.cld"
+$open/read cld 'infile'
+$create 'outfile'
+$open/append cldv 'outfile'
+$loop:
+$read cld/end=loop_end line_in
+$if f$locate("image gawk", line_in) .lt. f$length(line_in)
+$then
+$ write cldv " image gnv$gnu:[bin]gnv$gawk"
+$ goto loop
+$endif
+$write cldv line_in
+$goto loop
+$loop_end:
+$close cldv
+$close cld
diff --git a/vms/gawkmisc.vms b/vms/gawkmisc.vms
index cbc59cd7..725cf669 100644
--- a/vms/gawkmisc.vms
+++ b/vms/gawkmisc.vms
@@ -3,7 +3,8 @@
*/
/*
- * Copyright (C) 1986, 1988, 1989, 1991-1996, 2003, 2011 the Free Software Foundation, Inc.
+ * Copyright (C) 1986, 1988, 1989, 1991-1996, 2003, 2011, 2014
+ * the Free Software Foundation, Inc.
*
* This file is part of GAWK, the GNU implementation of the
* AWK Progamming Language.
@@ -23,30 +24,441 @@
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA
*/
+#include <stdio.h>
+#include <string.h>
+#include <ctype.h>
+#include <stdlib.h>
+
+#include <descrip.h>
+#include <dvidef.h>
+#include <efndef.h>
+#include <fscndef.h>
+#include <stsdef.h>
+#include <time.h>
+#include <lnmdef.h>
+
+
+#pragma member_alignment save
+#pragma nomember_alignment longword
+struct item_list_3 {
+ unsigned short len;
+ unsigned short code;
+ void * bufadr;
+ unsigned short * retlen;
+};
+
+struct filescan_itmlst_2 {
+ unsigned short length;
+ unsigned short itmcode;
+ char * component;
+};
+
+#pragma member_alignment
+
+int SYS$GETDVIW(
+ unsigned long efn,
+ unsigned short chan,
+ const struct dsc$descriptor_s * devnam,
+ const struct item_list_3 * itmlst,
+ void * iosb,
+ void (* astadr)(unsigned long),
+ unsigned long astprm,
+ void * nullarg);
+
+int SYS$FILESCAN(
+ const struct dsc$descriptor_s * srcstr,
+ struct filescan_itmlst_2 * valuelist,
+ unsigned long * fldflags,
+ struct dsc$descriptor_s *auxout,
+ unsigned short * retlen);
+
+int SYS$TRNLNM(
+ const unsigned long * attr,
+ const struct dsc$descriptor_s * table_dsc,
+ struct dsc$descriptor_s * name_dsc,
+ const unsigned char * acmode,
+ const struct item_list_3 * item_list);
+
char quote = '\'';
char *defpath = DEFPATH;
char *deflibpath = DEFLIBPATH;
char envsep = ',';
+#define VMS_NAME_LEN 255
+static char vms_name[VMS_NAME_LEN+1];
+
+/* Take all the fun out of simply looking up a logical name */
+static int sys_trnlnm
+ (const char * logname,
+ char * value,
+ int value_len)
+{
+ const $DESCRIPTOR(table_dsc, "LNM$FILE_DEV");
+ const unsigned long attr = LNM$M_CASE_BLIND;
+ struct dsc$descriptor_s name_dsc;
+ int status;
+ unsigned short result;
+ struct item_list_3 itlst[2];
+
+ itlst[0].len = value_len;
+ itlst[0].code = LNM$_STRING;
+ itlst[0].bufadr = value;
+ itlst[0].retlen = &result;
+
+ itlst[1].len = 0;
+ itlst[1].code = 0;
+
+ name_dsc.dsc$w_length = strlen(logname);
+ name_dsc.dsc$a_pointer = (char *)logname;
+ name_dsc.dsc$b_dtype = DSC$K_DTYPE_T;
+ name_dsc.dsc$b_class = DSC$K_CLASS_S;
+
+ status = SYS$TRNLNM(&attr, &table_dsc, &name_dsc, 0, itlst);
+
+ if ($VMS_STATUS_SUCCESS(status)) {
+
+ /* Null terminate and return the string */
+ value[result] = '\0';
+ }
+
+ return status;
+}
+
/* gawk_name --- pull out the "gawk" part from how the OS called us */
+/* You would not think that this should be a such a problem, but
+ * VMS extended file specifications are tricky to parse, and we have
+ * to tell the difference between a CRTL generated argv[0] and a
+ * passed exec() argv[0] and handle both cases.
+ */
+
char *
gawk_name(filespec)
const char *filespec;
{
- char *p, *q;
+ int status;
+ int result;
+ char * shell;
+ int lcname = 0;
+
+ /* If the path name starts with a /, then it is an absolute path
+ * that may have been generated by the CRTL instead of the command
+ * name. If it is the device name between the slashes, then this
+ * was likely from the run command and needs to be fixed up.
+ * If the DECC$POSIX_COMPLIANT_PATHNAMES is set to 2, then it is
+ * the DISK$VOLUME that will be present, and it will still need to
+ * be fixed.
+ */
+
+ result = 0;
+ if (filespec[0] == '/') {
+ char * nextslash;
+ int length;
+ struct item_list_3 itemlist[3];
+ unsigned short dvi_iosb[4];
+ char alldevnam[64];
+ unsigned short alldevnam_len;
+ struct dsc$descriptor_s devname_dsc;
+ char diskvolnam[256];
+ unsigned short diskvolnam_len;
+
+ /* Get some information about the disk */
+ /*--------------------------------------*/
+ itemlist[0].len = (sizeof alldevnam) - 1;
+ itemlist[0].code = DVI$_ALLDEVNAM;
+ itemlist[0].bufadr = alldevnam;
+ itemlist[0].retlen = &alldevnam_len;
+ itemlist[1].len = (sizeof diskvolnam) - 1 - 5;
+ itemlist[1].code = DVI$_VOLNAM;
+ itemlist[1].bufadr = &diskvolnam[5];
+ itemlist[1].retlen = &diskvolnam_len;
+ itemlist[2].len = 0;
+ itemlist[2].code = 0;
+
+ /* Add the prefix for the volume name. */
+ /* SYS$GETDVI will append the volume name to this */
+ strcpy(diskvolnam,"DISK$");
+
+ nextslash = strchr(&filespec[1], '/');
+ if (nextslash != NULL) {
+ length = nextslash - filespec - 1;
+
+ /* DECC requires a cast here */
+ devname_dsc.dsc$a_pointer = (char *)&filespec[1];
+ devname_dsc.dsc$w_length = length;
+ devname_dsc.dsc$b_dtype = DSC$K_DTYPE_T;
+ devname_dsc.dsc$b_class = DSC$K_CLASS_S;
+
+ status = SYS$GETDVIW(
+ EFN$C_ENF,
+ 0,
+ &devname_dsc,
+ itemlist,
+ dvi_iosb,
+ NULL, 0, 0);
+ if (!$VMS_STATUS_SUCCESS(status)) {
+ /* If the sys$getdviw fails, then this path
+ * was passed by an exec() program and not
+ * from DCL, so do nothing.
+ * An example is "/tmp/program" where tmp:
+ * does not exist
+ */
+ result = 0;
+ } else if (!$VMS_STATUS_SUCCESS(dvi_iosb[0])) {
+ result = 0;
+ } else {
+ char * devnam;
+ int devnam_len;
+ char argv_dev[64];
+
+ /* Null terminate the returned alldevnam */
+ alldevnam[alldevnam_len] = 0;
+ devnam = alldevnam;
+ devnam_len = alldevnam_len;
+
+ /* Need to skip past any leading underscore */
+ if (devnam[0] == '_') {
+ devnam++;
+ devnam_len--;
+ }
+
+ /* And remove the trailing colon */
+ if (devnam[devnam_len - 1] == ':') {
+ devnam_len--;
+ devnam[devnam_len] = 0;
+ }
+
+ /* Null terminate the returned volnam */
+ diskvolnam_len += 5;
+ diskvolnam[diskvolnam_len] = 0;
+
+ /* Check first for normal CRTL behavior */
+ if (devnam_len == length) {
+ strncpy(vms_name, &filespec[1], length);
+ vms_name[length] = 0;
+ result = (strcasecmp(devnam, vms_name) == 0);
+ }
+
+ /* If we have not got a match check for
+ * POSIX Compliant behavior. To be more
+ * accurate, we could also check to see
+ * if that feature is active.
+ */
+ if ((result == 0) &&
+ (diskvolnam_len == length)) {
+ int cmp;
+ strncpy(vms_name, &filespec[1], length);
+ vms_name[length] = 0;
+ cmp = strcasecmp(diskvolnam, vms_name);
+ result = (cmp == 0);
+ }
+ }
+ }
+ } else {
+ /* The path did not start with a slash, so it could be VMS
+ * format. If it is vms format, it has a volume/device in
+ * it as it must be an absolute path
+ */
+ struct dsc$descriptor_s path_desc;
+ int status;
+ unsigned long field_flags;
+ struct filescan_itmlst_2 item_list[5];
+ char * volume;
+ char * name;
+ int name_len;
+ char * ext;
+
+ /* DECC requires a cast here */
+ path_desc.dsc$a_pointer = (char *)filespec;
+ path_desc.dsc$w_length = strlen(filespec);
+ path_desc.dsc$b_dtype = DSC$K_DTYPE_T;
+ path_desc.dsc$b_class = DSC$K_CLASS_S;
+
+ /* Don't actually need to initialize anything buf itmcode */
+ /* I just do not like uninitialized input values */
+
+ /* Sanity check, this must be the same length as input */
+ item_list[0].itmcode = FSCN$_FILESPEC;
+ item_list[0].length = 0;
+ item_list[0].component = NULL;
+
+ /* If the device is present, then it if a VMS spec */
+ item_list[1].itmcode = FSCN$_DEVICE;
+ item_list[1].length = 0;
+ item_list[1].component = NULL;
+
+ /* we need the program name and type */
+ item_list[2].itmcode = FSCN$_NAME;
+ item_list[2].length = 0;
+ item_list[2].component = NULL;
+
+ item_list[3].itmcode = FSCN$_TYPE;
+ item_list[3].length = 0;
+ item_list[3].component = NULL;
+
+ /* End the list */
+ item_list[4].itmcode = 0;
+ item_list[4].length = 0;
+ item_list[4].component = NULL;
+
+ status = SYS$FILESCAN(
+ (const struct dsc$descriptor_s *)&path_desc,
+ item_list, &field_flags, NULL, NULL);
+
+ if ($VMS_STATUS_SUCCESS(status) &&
+ (item_list[0].length == path_desc.dsc$w_length) &&
+ (item_list[1].length != 0)) {
+
+ char * dollar;
+ int keep_ext;
+ int i;
+
+ /* We need the filescan to be successful,
+ * same length as input, and a volume to be present.
+ *
+ * We will assume that we only get to this path on
+ * a version of VMS that does not support the EFS
+ * character set.
+ *
+ * There may be a xxx$ prefix on the image name.
+ * Linux programs do not handle that well, so
+ * strip the prefix.
+ */
+ name = item_list[2].component;
+ name_len = item_list[2].length;
+ dollar = strrchr(name, '$');
+ if (dollar != NULL) {
+ dollar++;
+ name_len = name_len - (dollar - name);
+ name = dollar;
+ }
+
+ strncpy(vms_name, name, name_len);
+ vms_name[name_len] = 0;
+ result = 1;
+
+ /* We only keep the extension if it is not ".exe" */
+ keep_ext = 0;
+ ext = item_list[3].component;
+
+ if (item_list[3].length != 1) {
+ if (item_list[3].length != 4) {
+ keep_ext = 1;
+ } else {
+ int x;
+ x = strncmp(ext, ".exe", 4);
+ if (x != 0) {
+ keep_ext = 1;
+ }
+ }
+ }
+
+ if (keep_ext == 1) {
+ strncpy(&vms_name[name_len],
+ ext, item_list[3].length);
+ }
+ }
+ }
- /* "device:[root.][directory.subdir]GAWK.EXE;n" -> "GAWK" */
- p = strrchr(filespec, ']'); /* directory punctuation */
- q = strrchr(filespec, '>'); /* alternate <international> punct */
+ if (result) {
+ char * lastslash;
+ char * dollar;
+ char * dotexe;
+ char * lastdot;
+ char * extension;
+
+ /* This means it is probably the name from a DCL command
+ * Find the last slash which separates the file from the
+ * path.
+ */
+ lastslash = strrchr(filespec, '/');
+
+ if (lastslash != NULL) {
+ int i;
+
+ lastslash++;
+
+ /* There may be a xxx$ prefix on the image name. */
+ /* Linux programs do not handle that well, so */
+ /* strip the prefix */
+ dollar = strrchr(lastslash, '$');
+
+ if (dollar != NULL) {
+ dollar++;
+ lastslash = dollar;
+ }
+
+ strcpy(vms_name, lastslash);
+
+ /* In UNIX mode + EFS character set, there should
+ * not be a version present, as it is not possible
+ * when parsing to tell if it is a version or part
+ * of the UNIX filename as UNIX programs use numeric
+ * extensions for many reasons.
+ */
+
+ lastdot = strrchr(vms_name, '.');
+ if (lastdot != NULL) {
+ int i;
+
+ i = 1;
+ while (isdigit(lastdot[i])) {
+ i++;
+ }
+ if (lastdot[i] == 0) {
+ *lastdot = 0;
+ }
+ }
+
+ /* Find the .exe on the name (case insenstive)
+ * and toss it
+ */
+ dotexe = strrchr(vms_name, '.');
+ if (dotexe != NULL) {
+ if ((dotexe[1] == 'e' || dotexe[1] == 'E') &&
+ (dotexe[2] == 'x' || dotexe[2] == 'X') &&
+ (dotexe[3] == 'e' || dotexe[3] == 'E') &&
+ (dotexe[4] == 0)) {
+
+ *dotexe = 0;
+ } else {
+ /* Also need to handle a null
+ * extension because of a CRTL bug.
+ */
+ if (dotexe[1] == 0) {
+ *dotexe = 0;
+ }
+ }
+ }
+ }
+ } else {
+ /* No changes needed */
+ strncpy(vms_name, filespec, VMS_NAME_LEN);
+ vms_name[VMS_NAME_LEN] = 0;
+ }
- if (p == NULL || q > p)
- p = q;
- p = strdup(p == NULL ? filespec : (p + 1));
- if ((q = strrchr(p, '.')) != NULL)
- *q = '\0'; /* strip .typ;vers */
- return p;
+ /*
+ * The above fixes up the name, but for the DCL shell
+ * may leave it in upper case, which messes up the self tests.
+ * force it to lower case here.
+ */
+ shell = getenv("SHELL");
+ if (shell != NULL) {
+ if (strcmp(shell, "DCL") == 0) {
+ lcname = 1;
+ }
+ } else {
+ lcname = 1;
+ }
+ if (lcname == 1) {
+ int i = 0;
+ while (vms_name[i] != 0) {
+ vms_name[i] = tolower(vms_name[i]);
+ i++;
+ }
+ }
+ return vms_name;
}
/* os_arg_fixup --- fixup the command line */
@@ -56,7 +468,24 @@ os_arg_fixup(argcp, argvp)
int *argcp;
char ***argvp;
{
+ char *tz_rule;
+ int status;
+
(void) vms_arg_fixup(argcp, argvp);
+
+ /* Fix up the time zone */
+ /* For some reason it gets trashed */
+ tz_rule = malloc(1024);
+ status = sys_trnlnm("TZ", tz_rule, 1024);
+ if ($VMS_STATUS_SUCCESS(status)) {
+ setenv("TZ", tz_rule, 1);
+ } else {
+ status = sys_trnlnm("SYS$TIMEZONE_RULE", tz_rule, 1024);
+ if ($VMS_STATUS_SUCCESS(status)) {
+ setenv("TZ", tz_rule, 1);
+ }
+ }
+ free(tz_rule);
}
/* os_devopen --- open special per-OS devices */
@@ -208,11 +637,17 @@ files_are_same(char *newfile, SRCFILE *oldfile)
f2 = &oldfile->sbuf;
/* compare device string */
+#ifdef _USE_STD_STAT
+ return (f1->st_dev == f2->st_dev
+ /* and 48-bit file id cookie */
+ && f1->st_ino == f2->st_ino);
+ #else
return (strcmp(f1->st_dev, f2->st_dev) == 0
/* and 48-bit file id cookie stored in 3 short ints */
&& f1->st_ino[0] == f2->st_ino[0]
&& f1->st_ino[1] == f2->st_ino[1]
&& f1->st_ino[2] == f2->st_ino[2]);
+#endif
}
int
diff --git a/vms/generate_config_vms_h_gawk.com b/vms/generate_config_vms_h_gawk.com
new file mode 100644
index 00000000..12d3d6cf
--- /dev/null
+++ b/vms/generate_config_vms_h_gawk.com
@@ -0,0 +1,298 @@
+$! File: GENERATE_CONFIG_H_VMS_GAWK.COM
+$!
+$! Gawk like most open source products uses a variant of a config.h file.
+$! Depending on the curl version, this could be config.h or curl_config.h.
+$!
+$! For GNV based builds, the configure script is run and that produces
+$! a [curl_]config.h file. Configure scripts on VMS generally do not
+$! know how to do everything, so there is also a [-.lib]config-vms.h file
+$! that has VMS specific code that compensates for bugs in some of the
+$! VMS shared images.
+$!
+$! This generates a []config.h file and also a config_vms.h file,
+$! which is used to supplement that file.
+$!
+$!
+$! Copyright (C) 2014 the Free Software Foundation, Inc.
+$!
+$! This file is part of GAWK, the GNU implementation of the
+$! AWK Progamming 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
+$!
+$! Per assignment agreement with FSF, similar procedures may be present
+$! in other packages under other licensing agreements and copyrights
+$!
+$!
+$! 21-Jan-2014 J. Malmberg
+$!
+$!=========================================================================
+$!
+$! Allow arguments to be grouped together with comma or separated by spaces
+$! Do no know if we will need more than 8.
+$ args = "," + p1 + "," + p2 + "," + p3 + "," + p4 + ","
+$ args = args + p5 + "," + p6 + "," + p7 + "," + p8 + ","
+$!
+$! Provide lower case version to simplify parsing.
+$ args_lower = f$edit(args, "LOWERCASE")
+$!
+$ args_len = f$length(args)
+$!
+$ if (f$getsyi("HW_MODEL") .lt. 1024)
+$ then
+$ arch_name = "VAX"
+$ else
+$ arch_name = ""
+$ arch_name = arch_name + f$edit(f$getsyi("ARCH_NAME"), "UPCASE")
+$ if (arch_name .eqs. "") then arch_name = "UNK"
+$ endif
+$!
+$!
+$! Start the configuration file.
+$! Need to do a create and then an append to make the file have the
+$! typical file attributes of a VMS text file.
+$ create sys$disk:[]config_vms.h
+$ open/append cvh sys$disk:[]config_vms.h
+$!
+$! Write the defines to prevent multiple includes.
+$! These are probably not needed in this case,
+$! but are best practice to put on all header files.
+$ write cvh "#ifndef __CONFIG_VMS_H__"
+$ write cvh "#define __CONFIG_VMS_H__"
+$ write cvh ""
+$!
+$ write cvh "#if __CRTL_VER >= 70000000"
+$ write cvh "#define VMS_V7"
+$ write cvh "#else"
+$ write cvh "#define HAVE_TZNAME 1 /* (faked in vms/vms_misc.c) */
+$ write cvh "#define HAVE_TZSET 1 /* (faked in vms/vms_misc.c) */
+$ write cvh "#endif"
+$ write cvh "#if __CRTL_VER >= 70200000"
+$ write cvh "#define DYNAMIC 1"
+$ write cvh "#endif"
+$ write cvh ""
+$ write cvh "#define PRINTF_HAS_F_FORMAT 1"
+$ write cvh ""
+$ write cvh "/* The _Noreturn keyword of C11. */"
+$ write cvh "#ifndef _Noreturn"
+$ write cvh "# if (3 <= __GNUC__ || (__GNUC__ == 2 && 8 <= __GNUC_MINOR__) \"
+$ write cvh " || 0x5110 <= __SUNPRO_C)"
+$ write cvh "# define _Noreturn __attribute__ ((__noreturn__))"
+$ write cvh "# elif defined _MSC_VER && 1200 <= _MSC_VER"
+$ write cvh "# define _Noreturn __declspec (noreturn)"
+$ write cvh "# else"
+$ write cvh "# define _Noreturn"
+$ write cvh "# endif"
+$ write cvh "#endif"
+$ write cvh ""
+$ write cvh "/*"
+$ write cvh " * VAXCRTL is pre-ANSI and does some variations of numeric"
+$ write cvh " * formatting differently than gawk expects."
+$ write cvh " */"
+$ write cvh "#if defined(VAX) && !defined(__DECC)"
+$ write cvh -
+ "/* '0' format modifier for %e,%f,%g gives wrong results in many cases */"
+$ write cvh "#define VAXCRTL"
+$ write cvh "/* %g format chooses %e format when should use %f */"
+$ write cvh "#define GFMT_WORKAROUND 1"
+$ write cvh "#endif"
+$ write cvh ""
+$ write cvh "/*"
+$ write cvh " * VAX C"
+$ write cvh " *"
+$ write cvh -
+ " * As of V3.2, VAX C is not yet ANSI-compliant. But it's close enough"
+$ write cvh -
+ " * for GAWK's purposes. Comment this out for VAX C V2.4 and earlier."
+$ write cvh -
+ " * YYDEBUG definition is needed for combination of VAX C V2.x and Bison."
+$ write cvh " */"
+$ write cvh "#if defined(VAXC) && !defined(__STDC__)"
+$ write cvh "#define __STDC__ 0"
+$ write cvh "#define NO_TOKEN_PASTING"
+$ write cvh "#define signed /*empty*/"
+$ write cvh "#define inline /*empty*/"
+$ write cvh "#ifndef __DECC /* DEC C does not support #pragma builtins */"
+$ write cvh "#define VAXC_BUILTINS"
+$ write cvh "#endif"
+$ write cvh "/* #define YYDEBUG 0 */"
+$ write cvh -
+ "#define NO_MBSUPPORT /* VAX C's preprocessor can't handle mbsupport.h */"
+$ write cvh "#endif"
+$ write cvh ""
+$ write cvh ""
+$ write cvh "#if __DECC_VER >= 60400000 && !defined(DEBUG)"
+$ write cvh "/* disable ""new feature in C99"" diagnostics (for regex code); "
+$ write cvh " NEWC99 ought to suffice but doesn't (at least in V6.4) */"
+$ write cvh "#pragma message disable (NEWC99,DESIGNATORUSE)"
+$ write cvh "#ifdef __VAX
+$ write cvh "#endif
+$ write cvh "#pragma message disable (LONGDOUBLENYI)"
+$ write cvh "#endif"
+$!
+$! This stuff seems needed for VMS 7.3 and earlier, but not VMS 8.2+
+$! Need some more data as to which versions these issues are fixed in.
+$ write cvh "#if __VMS_VER <= 80200000"
+$! mkstemp goes into an infinte loop in gawk in VAX/VMS 7.3
+$ write cvh "#ifdef HAVE_MKSTEMP"
+$ write cvh "#undef HAVE_MKSTEMP"
+$ write cvh "#endif"
+$ write cvh "#endif"
+$ write cvh ""
+$!
+$! VMS not legal for ANSI compiler to pre-define
+$ write cvh "#ifndef VMS"
+$ write cvh "#define VMS 1"
+$ write cvh "#endif"
+$ write cvh ""
+$!
+$! Need to temp hide stuff that gawk is replacing or redefining before
+$! including the header.
+$ write cvh "/* Need to hide some stuff */"
+$ write cvh "#define getopt hide_getopt"
+$ write cvh "#define optopt hide_optopt"
+$ write cvh "#define optind hide_optind"
+$ write cvh "#define optarg hide_optarg"
+$ write cvh "#define opterr hide_opterr"
+$ write cvh "#define getpgrp hide_getpgrp"
+$ write cvh "#define unsetenv hide_unsetenv"
+$ write cvh "#define read hide_read"
+$ write cvh "#define delete hide_delete"
+$ write cvh "#define getcwd hide_getcwd"
+$ write cvh "#define getgid hide_getgid"
+$ write cvh "#define getegid hide_getegid"
+$ write cvh "#define setgid hide_setgid"
+$ write cvh "#define exit hide_exit"
+$ write cvh "#define _exit hide__exit"
+$ write cvh "#include <unistd.h>"
+$ write cvh "#include <stdlib.h>"
+$ write cvh "#include <stdio.h>"
+$ write cvh "#include <time.h>"
+$ write cvh "#include <stsdef.h>"
+$ write cvh "#include <string.h>"
+$ write cvh "#undef getopt"
+$ write cvh "#undef optopt"
+$ write cvh "#undef optind"
+$ write cvh "#undef optarg"
+$ write cvh "#undef opterr"
+$ write cvh "#undef getpgrp"
+$ write cvh "#undef getcwd"
+$ write cvh "#undef unsetenv"
+$ write cvh "#undef read"
+$ write cvh "#undef delete"
+$ write cvh "#undef getgid"
+$ write cvh "#undef getegid"
+$ write cvh "#undef setgid"
+$ write cvh "#undef exit"
+$ write cvh "#undef _exit"
+$!
+$write cvh "#ifdef HAVE_STRNCASECMP"
+$write cvh "#undef HAVE_STRNCASECMP"
+$write cvh "#endif"
+$!
+$ write cvh "#define IN_CONFIG_H"
+$ write cvh "#include ""redirect.h"""
+$ write cvh "#undef IN_CONFIG_H"
+$ write cvh "#define getpgrp gawk_vms_getpgrp"
+$ write cvh "#ifdef HAVE_SETENV"
+$ write cvh "#undef HAVE_SETENV"
+$ write cvh "#endif"
+$ write cvh "#ifdef HAVE_UNSETENV"
+$ write cvh "#undef HAVE_UNSETENV"
+$ write cvh "#endif"
+$ write cvh "#ifdef HAVE_STRFTIME"
+$ write cvh "#undef HAVE_STRFTIME"
+$ write cvh "#define USE_INCLUDED_STRFTIME"
+$ write cvh "#endif /* HAVE_STRFTIME */"
+$ write cvh ""
+$ write cvh "#include <bitypes.h>"
+$ write cvh "#define INT32_MAX __INT32_MAX"
+$ write cvh "#define INT32_MIN __INT32_MIN"
+$ write cvh ""
+$ write cvh "/*"
+$ write cvh " * DEFPATH"
+$ write cvh " * VMS: ""/AWK_LIBRARY"" => ""AWK_LIBRARY:"""
+$ write cvh " * The default search path for the -f option of gawk. It is"
+$ write cvh " * used if the AWKPATH environment variable is undefined."
+$ write cvh " *"
+$ write cvh " * Note: OK even if no AWK_LIBRARY logical name has been defined."
+$ write cvh " */"
+$ write cvh ""
+$ write cvh "#define DEFPATH "".,/AWK_LIBRARY"""
+$ write cvh "#define DEFLIBPATH "".,/AWK_LIBRARY"""
+$ write cvh "#define ENVSEP ','"
+$ write cvh ""
+$ write cvh "/*"
+$ write cvh " * Extended source file access."
+$ write cvh " */"
+$ write cvh "#define DEFAULT_FILETYPE "".awk"""
+$ write cvh ""
+$ write cvh "/*"
+$ write cvh " * fork/Pipe handling."
+$ write cvh " */"
+$ write cvh "#define PIPES_SIMULATED 1"
+$ write cvh ""
+$ write cvh "/* Extension for shared libraries */"
+$ write cvh "#define SHLIBEXT ""exe"""
+$ write cvh ""
+$! GAWK does not want to use ALLOCA
+$ write cvh "#define NO_ALLOCA"
+$ write cvh "#define STACK_DIRECTION (-1)"
+$ write cvh ""
+$ write cvh "void decc$exit(int status);"
+$ write cvh "#define _exit(foo) vms_exit(foo)"
+$ write cvh "#define exit(foo) vms_exit(foo)"
+$ write cvh ""
+$ write cvh "/* Use POSIX exit codes here */"
+$ write cvh "#ifdef EXIT_FAILURE"
+$ write cvh "#undef EXIT_FAILURE"
+$ write cvh "#endif"
+$ write cvh "#define EXIT_FAILURE (1)"
+$ write cvh ""
+$ write cvh "#define EXIT_FATAL (2)"
+$ write cvh ""
+$ write cvh "#ifndef C_FACILITY_NO"
+$ write cvh "#define C_FACILITY_NO 0x350000"
+$ write cvh "#endif"
+$ write cvh ""
+$ write cvh "/* Build a Posix Exit with VMS severity */
+$ write cvh "static void vms_exit(int status) {"
+$ write cvh " int vms_status;"
+$ write cvh " /* Fake the __posix_exit with severity added */"
+$ write cvh " /* Undocumented correct way to do this. */"
+$ write cvh " vms_status = 0;"
+$ write cvh " if (status != 0) {"
+$ write cvh " vms_status = C_FACILITY_NO | 0xA000 | STS$M_INHIB_MSG;"
+$ write cvh " vms_status |= (status << 3);"
+$ write cvh " }"
+$ write cvh " if (status == EXIT_FAILURE) {"
+$ write cvh " vms_status |= STS$K_ERROR;"
+$ write cvh " } else if (status == EXIT_FATAL) {"
+$ write cvh " vms_status |= STS$K_SEVERE;"
+$ write cvh " } else {"
+$ write cvh " vms_status |= STS$K_SUCCESS;"
+$ write cvh " }"
+$ write cvh " decc$exit(vms_status);"
+$ write cvh "}"
+$!
+$! Close out the file
+$!
+$ write cvh ""
+$ write cvh "#endif /* __CONFIG_VMS_H__ */"
+$ close cvh
+$!
+$all_exit:
+$ exit
diff --git a/vms/gnv_gawk_startup.com b/vms/gnv_gawk_startup.com
new file mode 100644
index 00000000..e691965e
--- /dev/null
+++ b/vms/gnv_gawk_startup.com
@@ -0,0 +1,75 @@
+$! File: gnv$gawk_Startup.com / gnv_gawk_startup.com
+$!
+$! Procedure to setup the GAWK images for use by programs from the
+$! VMS SYSTARTUP*.COM procedure.
+$!
+$! 14-Mar-2011 J. Malmberg
+$! 04-May-2011 J. Malmberg Use GNV_PCSI_DESTINATION to find the
+$! value to assing GNV$GNU per suggestion
+$! by Martin Vorlander.
+$! 02-Jan-2014 J. Malmberg Gawk Version
+$!========================================================================
+$!
+$!
+$! GNV$GNU if needed.
+$ if f$trnlnm("GNV$GNU") .eqs. ""
+$ then
+$ x = f$trnlnm("GNU","LNM$SYSTEM_TABLE")
+$ if x .nes. ""
+$ then
+$ write sys$output -
+ "Notice: logical name GNU: was found in the system table instead of GNV$GNU:"
+$ write sys$output -
+ "This is a known bug in the GNV 2.1.3 and earlier kits."
+$ define/system/exec/trans=conc GNV$GNU 'x'
+$ else
+$!
+$! File name per VMS standards
+$! ---------------------------
+$ file1 = "sys$startup:gnv$destination_''f$getsyi("ARCH_NAME")'.com"
+$!
+$! File name in GNV 2.1.3
+$! ----------------------
+$ file2 = "sys$startup:gnv_destination_''f$getsyi("ARCH_NAME")'.com"
+$!
+$! File name before GNV 2.1.3
+$! ---------------------------
+$ file3 = "sys$startup:gnv_destination''f$getsyi("ARCH_NAME")'.com"
+$ arch_file = ""
+$ if f$search(file1) .nes. ""
+$ then
+$ arch_file = file1
+$ else
+$ if f$search(file2) .nes. ""
+$ then
+$ arch_file = file2
+$ else
+$ if f$search("file3") .nes. "" then arch_file = file3
+$ endif
+$ endif
+$ if (arch_file) .nes. "" then @'arch_file'
+$!
+$! Logical name per VMS standards
+$! -------------------------------
+$ destination = f$trnlnm("GNV$PCSI_DESTINATION")
+$!
+$! Logical name in GNV 2.1.3
+$! --------------------------
+$ if destination .eqs. ""
+$ then
+$ destination = f$trnlnm("GNV_PCSI_DESTINATION")
+$ endif
+$ if destination .eqs. ""
+$ then
+$ !Assume this procedure is on the same volume as the GNV install.
+$ my_proc = f$environment("PROCEDURE")
+$ my_dev = f$parse(my_proc,,,"DEVICE","NO_CONCEAL")
+$ destination = "''my_dev'[vms$common.gnv.]"
+$ endif
+$ define/system/exec/trans=conc gnv$gnu 'destination'
+$ endif
+$ endif
+$!
+$!
+$all_exit:
+$ exit
diff --git a/vms/make_pcsi_gawk_kit_name.com b/vms/make_pcsi_gawk_kit_name.com
new file mode 100644
index 00000000..daaa37a4
--- /dev/null
+++ b/vms/make_pcsi_gawk_kit_name.com
@@ -0,0 +1,189 @@
+$! File: MAKE_PCSI_GAWK_KIT_NAME.COM
+$!
+$! Calculates the PCSI kit name for use in building an installation kit.
+$! PCSI is HP's PolyCenter Software Installation Utility.
+$!
+$! The results are stored in as logical names so that other procedures
+$! can use them.
+$!
+$! 92-Jan-2014 J. Malmberg Gawk version
+$!========================================================================
+$!
+$! Save default
+$default_dir = f$environment("DEFAULT")
+$!
+$! Put things back on error.
+$on warning then goto all_exit
+$!
+$! The producer is the name or common abbreviation for the entity that is
+$! making the kit. It must be set as a logical name before running this
+$! procedure.
+$!
+$! HP documents the producer as the legal owner of the software, but for
+$! open source work, it should document who is creating the package for
+$! distribution.
+$!
+$producer = f$trnlnm("GNV_PCSI_PRODUCER")
+$if producer .eqs. ""
+$then
+$ write sys$output "The logical name GNV_PCSI_PRODUCER needs to be defined."
+$ write sys$output "This should be set to the common abbreviation or name of"
+$ write sys$output "the entity creating this kit. If you are an individual"
+$ write sys$output "then use your initials as long as they do not match"
+$ write sys$output "a different well known producer prefix."
+$ goto all_exit
+$endif
+$producer_full_name = f$trnlnm("GNV_PCSI_PRODUCER_FULL_NAME")
+$if producer_full_name .eqs. ""
+$then
+$ write sys$output "The logical name GNV_PCSI_PRODUCER_FULL_NAME needs to"
+$ write sys$output "be defined. This should be set to the full name of"
+$ write sys$output "the entity creating this kit. If you are an individual"
+$ write sys$output "then use your name."
+$ write sys$output "EX: DEFINE GNV_PCSI_PRODUCER_FULL_NAME ""First M. Last"""
+$ goto all_exit
+$endif
+$!
+$write sys$output "*****"
+$write sys$output "***** Producer = ''producer'"
+$write sys$output "*****"
+$!
+$!
+$! Base is one of 'VMS', 'AXPVMS', 'I64VMS', 'VAXVMS' and indicates what
+$! binaries are in the kit. A kit with just 'VMS' can be installed on all
+$! architectures.
+$!
+$base = "VMS"
+$arch_type = f$getsyi("ARCH_NAME")
+$code = f$extract(0, 1, arch_type)
+$if (code .eqs. "I") then base = "I64VMS"
+$if (code .eqs. "V") then base = "VAXVMS"
+$if (code .eqs. "A") then base = "AXPVMS"
+$!
+$!
+$product = "gawk"
+$!
+$!
+$! We need to get the version from config.h. It will have a lines like
+$! #define PACKAGE_VERSION "4.1.0a"
+$!
+$!
+$open/read/error=version_loop_end verf config.h
+$version_loop:
+$ read/end=version_loop_end verf line_in
+$ if line_in .eqs. "" then goto version_loop
+$ if f$locate("#define PACKAGE_VERSION", line_in) .ne. 0
+$ then
+$ goto version_loop
+$ endif
+$ tag = f$element(1, " ", line_in)
+$ value = f$element(2, " ", line_in) - """" - """"
+$ if tag .eqs. "PACKAGE_VERSION"
+$ then
+$ distversion = value
+$ goto version_loop_end
+$ endif
+$ goto version_loop
+$version_loop_end:
+$close verf
+$!
+$!
+$! Optional ECO file.
+$ECO_LEVEL = ""
+$vms_eco_file = "[.vms]vms_eco_level.h"
+$if f$search(vms_eco_file) .nes. ""
+$then
+$ open/read ef 'vms_eco_file'
+$ecolevel_loop:
+$ read/end=ecolevel_loop_end ef line_in
+$ prefix = f$element(0, " ", line_in)
+$ if prefix .nes. "#define" then goto ecolevel_loop
+$ key = f$element(1, " ", line_in)
+$ value = f$element(2, " ", line_in) - """" - """"
+$ if key .eqs. "VMS_ECO_LEVEL"
+$ then
+$ ECO_LEVEL = value
+$ if ECO_LEVEL .eq. 0
+$ then
+$ ECO_LEVEL = ""
+$ else
+$ ECO_LEVEL = "E" + ECO_LEVEL
+$ endif
+$ goto ecolevel_loop_end
+$ endif
+$ goto ecolevel_loop
+$ecolevel_loop_end:
+$ close ef
+$endif
+$!
+$raw_version = distversion
+$!
+$!
+$! This translates to V0114-08 or D0115-01
+$! We can not encode the snapshot date into the version due to the way that
+$! the Polycenter Software Installation Utility evaluates the name.
+$!
+$! version_type = 'V' for a production release, and 'D' for a build from a
+$! daily repository snapshot, and a code for a build from a pre-release branch
+$majorver = f$element(0, ".", raw_version)
+$minorver = f$element(1, ".", raw_version)
+$update = f$element(2,".", raw_version)
+$if update .eqs. "." then update = ""
+$vtype = "V"
+$if update .nes. ""
+$then
+$ update_len = f$length(update)
+$ code = f$extract(update_len - 1, 1, update)
+$ code = f$edit(code, "UPCASE")
+$ if (code .ges. "A") .and. (code .les. "Z")
+$ then
+$ update = f$extract(0, update_len - 1, update)
+$ vtype = code
+$ endif
+$endif
+$if update .eqs. "0" then update = ""
+$!
+$!
+$version_fao = "!2ZB!2ZB"
+$mmversion = f$fao(version_fao, 'majorver', 'minorver')
+$version = vtype + "''mmversion'"
+$if update .nes. "" .or. ECO_LEVEL .nes. ""
+$then
+$! The presence of an ECO implies an update
+$ if update .eqs. "" .and. ECO_LEVEL .nes. "" then update = "0"
+$ version = version + "-" + update + ECO_LEVEL
+$ fversion = version
+$else
+$ fversion = version
+$ version = version + "-"
+$endif
+$!
+$! Kit type 1 is complete kit, the only type that this procedure will make.
+$Kittype = 1
+$!
+$! Write out a logical name for the resulting base kit name.
+$name = "''producer'-''base'-''product'-''version'-''kittype'"
+$define GNV_PCSI_KITNAME "''name'"
+$fname = "''product'-''fversion'"
+$!
+$! No ECO or Patch level
+$fname_len = f$length(fname)
+$if f$extract(fname_len - 1, 1, fname) .eqs. "-"
+$then
+$ fname = f$extract(0, fname_len - 1, fname)
+$ fname_len = fname_len - 1
+$endif
+$if f$extract(fname_len - 1, 1, fname) .eqs. "-"
+$then
+$ fname = f$extract(0, fname_len - 1, fname)
+$ fname_len = fname_len - 1
+$endif
+$define GNV_PCSI_FILENAME_BASE 'fname'
+$write sys$output "*****"
+$write sys$output "***** GNV_PCSI_KITNAME = ''name'."
+$write sys$output "***** GNV_PCSI_FILENAME_BASE = ''fname'."
+$write sys$output "*****"
+$!
+$all_exit:
+$set def 'default_dir'
+$exit '$status'
diff --git a/vms/pcsi_gawk_file_list.txt b/vms/pcsi_gawk_file_list.txt
new file mode 100644
index 00000000..67d2d324
--- /dev/null
+++ b/vms/pcsi_gawk_file_list.txt
@@ -0,0 +1,120 @@
+! File: pcsi_gawk_file_list.txt
+!
+! File list for building a PCSI kit.
+! Very simple format so that the parsing logic can be simple.
+! links first, directory second, and files third.
+!
+! link -> file tells procedure to create/remove a link on install/uninstall
+! If more than one link, consider using an alias file.
+!
+! [xxx.yyy]foo.dir is a directory file for the rename phase.
+! [xxx.yyy.foo] is a directory file for the create phase.
+! Each subdirectory needs to be on its own pair of lines.
+!
+! [xxx.yyy]file.ext is a file for the rename and add phases.
+!
+! 14-Mar-2011 J. Malmberg
+! 08-Dec-2013 J. Malmberg This list is based on what was found on
+! some Linux systems and what can be currently
+! built on VMS.
+!
+!============================================================================
+![gnv.bin]awk. -> [gnv.bin]gnv$gawk.exe
+![gnv.bin]awk.exe -> [gnv.bin]gnv$gawk.exe
+![gnv.bin]gawk. -> [gnv.bin]gnv$gawk.exe
+![gnv.bin]gawk.exe -> [gnv.bin]gnv$gawk.exe
+![gnv.usr.bin]awk. -> [gnv.bin]gnv$gawk.exe
+![gnv.usr.bin]awk.exe -> [gnv.bin]gnv$gawk.exe
+![gnv.usr.bin]gawk. -> [gnv.bin]gnv$gawk.exe
+![gnv.usr.bin]gawk.exe -> [gnv.bin]gnv$gawk.exe
+![gnv.usr.share.man.man1]awk.1 -> [gnv.usr.share.man.man1]gawk.1
+[gnv]
+[000000]gnv.dir
+[gnv.bin]
+[gnv]bin.dir
+[gnv.vms_bin]
+[gnv]vms_bin.dir
+[gnv.vms_help]
+[gnv]vms_help.dir
+[gnv.lib]
+[gnv]lib.dir
+[gnv.usr]
+[gnv]usr.dir
+[gnv.usr.bin]
+[gnv.usr]bin.dir
+[gnv.usr.include]
+[gnv.usr]include.dir
+[gnv.usr.lib]
+[gnv.usr]lib.dir
+[gnv.usr.lib.gawk]
+[gnv.usr.lib]gawk.dir
+[gnv.usr.share]
+[gnv.usr]share.dir
+[gnv.usr.share.awk]
+[gnv.usr.share]awk.dir
+[gnv.usr.share.doc]
+[gnv.usr.share]doc.dir
+[gnv.usr.share.doc.gawk]
+[gnv.usr.share.doc]gawk.dir
+[gnv.usr.share.info]
+[gnv.usr.share]info.dir
+[gnv.usr.share.man]
+[gnv.usr.share]man.dir
+[gnv.usr.share.man.man1]
+[gnv.usr.share.man]man1.dir
+![gnv.usr.share.man.man7]
+![gnv.usr.share.man]man7.dir
+[gnv.usr]src.dir
+[gnv.usr.src]
+[gnv.usr.src]gawk.dir
+[gnv.usr.src.gawk]extension.dir
+[gnv.usr.src.gawk.extension]
+[gnv.usr.src.gawk.extension]vms.dir
+[gnv.usr.src.gawk.extension.vms]
+[gnv.bin]gnv$gawk.exe
+[gnv.bin]igawk.
+[gnv.vms_bin]remove_old_gawk.com
+[gnv.vms_bin]gawk_alias_setup.com
+[gnv.vms_bin]gawk_verb.cld
+[gnv.vms_help]gawk.hlp
+[gnv.usr.include]gawkapi.h
+[gnv.usr.lib.gawk]filefuncs.exe
+[gnv.usr.lib.gawk]fnmatch.exe
+[gnv.usr.lib.gawk]inplace.exe
+[gnv.usr.lib.gawk]ordchr.exe
+[gnv.usr.lib.gawk]readdir.exe
+[gnv.usr.lib.gawk]revoutput.exe
+[gnv.usr.lib.gawk]revtwoway.exe
+[gnv.usr.lib.gawk]rwarray.exe
+[gnv.usr.lib.gawk]time.exe
+[gnv.usr.share.awk]assert.awk
+[gnv.usr.share.awk]bits2str.awk
+[gnv.usr.share.awk]cliff_rand.awk
+[gnv.usr.share.awk]ctime.awk
+[gnv.usr.share.awk]ftrans.awk
+[gnv.usr.share.awk]getopt.awk
+[gnv.usr.share.awk]gettime.awk
+[gnv.usr.share.awk]join.awk
+[gnv.usr.share.awk]libintl.awk
+[gnv.usr.share.awk]noassign.awk
+[gnv.usr.share.awk]ord.awk
+[gnv.usr.share.awk]readable.awk
+[gnv.usr.share.awk]readfile.awk
+[gnv.usr.share.awk]rewind.awk
+[gnv.usr.share.awk]round.awk
+[gnv.usr.share.awk]strtonum.awk
+[gnv.usr.share.awk]walkarray.awk
+[gnv.usr.share.awk]zerofile.awk
+[gnv.usr.share.doc.gawk]COPYING.
+[gnv.usr.share.doc.gawk]NEWS.
+[gnv.usr.share.doc.gawk]POSIX.STD
+[gnv.usr.share.doc.gawk]README.
+[gnv.usr.share.doc.gawk]README.vms
+[gnv.usr.share.doc.gawk]README.multibyte
+[gnv.usr.share.doc.gawk]README.tests
+[gnv.usr.share.info]gawk.info
+[gnv.usr.share.info]gawkinet.info
+[gnv.usr.share.man.man1]gawk.1
+[gnv.usr.share.man.man1]igawk.1
+![gnv.usr.share.man.man7]
+[gnv.usr.src.gawk.extension.vms]gawk_plugin.opt
diff --git a/vms/pcsi_product_gawk.com b/vms/pcsi_product_gawk.com
new file mode 100644
index 00000000..b0d9febd
--- /dev/null
+++ b/vms/pcsi_product_gawk.com
@@ -0,0 +1,187 @@
+$! File: pcsi_product_gawk.com
+$!
+$! This command file packages up the product GAWK into a sequential
+$! format kit
+$!
+$! 13-Dec-2013 J.Malmberg
+$!
+$!=========================================================================
+$!
+$! Save default
+$ default_dir = f$environment("DEFAULT")
+$!
+$! Put things back on error.
+$ on warning then goto all_exit
+$!
+$ arch_type = f$getsyi("ARCH_NAME")
+$ arch_code = f$extract(0, 1, arch_type)
+$!
+$ can_build = 1
+$ producer = f$trnlnm("GNV_PCSI_PRODUCER")
+$ if producer .eqs. ""
+$ then
+$ write sys$output "GNV_PCSI_PRODUCER logical name has not been set."
+$ can_build = 0
+$ endif
+$ producer_full_name = f$trnlnm("GNV_PCSI_PRODUCER_FULL_NAME")
+$ if producer_full_name .eqs. ""
+$ then
+$ write sys$output -
+ "GNV_PCSI_PRODUCER_FULL_NAME logical name has not been set."
+$ can_build = 0
+$ endif
+$ stage_root_name = f$trnlnm("STAGE_ROOT")
+$ if stage_root_name .eqs. ""
+$ then
+$ write sys$output "STAGE_ROOT logical name has not been set."
+$ can_build = 0
+$ endif
+$!
+$ if (can_build .eq. 0)
+$ then
+$ write sys$output "Not able to build a kit."
+$ goto all_exit
+$ endif
+$!
+$!
+$! Build the gawk image(s)
+$!-------------------------
+$ if f$search("gawk.exe") .eqs. ""
+$ then
+$ mmk/descrip=[.vms]descrip.mms gawk
+$ endif
+$ if arch_code .nes. "V"
+$ then
+$ if f$search("filefuncs.exe") .eqs. ""
+$ then
+$ mmk/descrip=[.vms]descrip.mms extensions
+$ endif
+$ endif
+$!
+$! Build the gawk_verb.cld
+$!-------------------------
+$ if f$search("gawk_verb.cld") .eqs. ""
+$ then
+$ @[.vms]gawk_verb.com
+$ endif
+$!
+$! Stage the images for building the kit
+$!--------------------------------------
+$ @[.vms]stage_gawk_install.com remove
+$ @[.vms]stage_gawk_install.com
+$!
+$!
+$!
+$! Make sure that the kit name is up to date for this build
+$!----------------------------------------------------------
+$ @[.vms]make_pcsi_gawk_kit_name.com
+$!
+$! Make sure that the release note file name is up to date
+$!---------------------------------------------------------
+$ @[.vms]build_gawk_release_notes.com
+$!
+$!
+$! Make sure that the source has been backed up.
+$!----------------------------------------------
+$ @[.vms]backup_gawk_src.com
+$!
+$! Regenerate the PCSI description file.
+$!--------------------------------------
+$ @[.vms]build_gawk_pcsi_desc.com
+$!
+$! Regenerate the PCSI Text file.
+$!---------------------------------
+$ @[.vms]build_gawk_pcsi_text.com
+$!
+$!
+$! Parse the kit name into components.
+$!---------------------------------------
+$ kit_name = f$trnlnm("GNV_PCSI_KITNAME")
+$ if kit_name .eqs. ""
+$ then
+$ write sys$output "@[.vms]make_pcsi_gawk_kit_name.com has not been run."
+$ goto all_exit
+$ endif
+$ producer = f$element(0, "-", kit_name)
+$ base = f$element(1, "-", kit_name)
+$ product_name = f$element(2, "-", kit_name)
+$ mmversion = f$element(3, "-", kit_name)
+$ majorver = f$extract(0, 3, mmversion)
+$ minorver = f$extract(3, 2, mmversion)
+$ updatepatch = f$element(4, "-", kit_name)
+$ if updatepatch .eqs. "" then updatepatch = ""
+$!
+$ version_fao = "!AS.!AS"
+$ mmversion = f$fao(version_fao, "''majorver'", "''minorver'")
+$ if updatepatch .nes. ""
+$ then
+$ version = "''mmversion'" + "-" + updatepatch
+$ else
+$ version = "''mmversion'"
+$ endif
+$!
+$!
+$! Move to the base directories
+$ current_default = f$environment("DEFAULT")
+$ my_dir = f$parse(current_default,,,"DIRECTORY") - "[" - "<" - ">" - "]"
+$!
+$!
+$ source = "''default_dir'"
+$ src1 = "new_gnu:[bin],"
+$ src2 = "new_gnu:[usr.bin],"
+$ src3 = "new_gnu:[vms_bin],"
+$ src4 = "new_gnu:[vms_help],"
+$ src5 = "new_gnu:[vms_src],"
+$ src6 = "new_gnu:[common_src],"
+$ src7 = "sys$disk:[''my_dir'],sys$disk:[''my_dir'.vms],"
+$ src8 = "new_gnu:[usr.share.awk],"
+$ src9 = "new_gnu:[usr.share.man.man1],"
+$ src10 = "new_gnu:[usr.share.doc.gawk],"
+$ src11 = "new_gnu:[usr.share.info],"
+$ src12 = "sys$disk:[''m_dir'.pc.awklib]"
+$ gnu_src = src1 + src2 + src3 + src4 + src5 + src6 + src7 + src8 + src9
+$ gnu_src = gnu_src + src10 + src11 + src12
+$!
+$!
+$ base = ""
+$ arch_name = f$edit(f$getsyi("arch_name"),"UPCASE")
+$ if arch_name .eqs. "ALPHA" then base = "AXPVMS"
+$ if arch_name .eqs. "IA64" then base = "I64VMS"
+$ if arch_name .eqs. "VAX" then base = "VAXVMS"
+$!
+$ if base .eqs. "" then exit 44
+$!
+$ pcsi_option = "/option=noconfirm"
+$ if arch_code .eqs. "V"
+$ then
+$ pcsi_option = ""
+$ endif
+$!
+$!
+$product package 'product_name' -
+ /base='base' -
+ /producer='producer' -
+ /source='source' -
+ /destination=STAGE_ROOT:[KIT] -
+ /material=('gnu_src','source') -
+ /format=sequential 'pcsi_option'
+$!
+$!
+$! VAX can not do a compressed kit.
+$! ZIP -9 "-V" does a better job, so no reason to normally build a compressed
+$! kit.
+$!----------------------------------
+$if p1 .eqs. "COMPRESSED"
+$then
+$ if arch_code .nes. "V"
+$ then
+$ product copy /options=(novalidate, noconfirm) /format=compressed -
+ 'product_name' -
+ /source=stage_root:[kit]/dest=stage_root:[kit] -
+ /version='version'/base='base'
+$ endif
+$endif
+$!
+$all_exit:
+$ set def 'default_dir'
+$ exit
diff --git a/vms/remove_old_gawk.com b/vms/remove_old_gawk.com
new file mode 100644
index 00000000..ed68fc45
--- /dev/null
+++ b/vms/remove_old_gawk.com
@@ -0,0 +1,113 @@
+$! File: remove_old_gawk.com
+$!
+$! This is a procedure to remove the old gawk images that were installed
+$! by the GNV kits and replace them with links to the new image.
+$!
+$! 02-Jan-2014 J. Malmberg Gawk version
+$!
+$!==========================================================================
+$!
+$vax = f$getsyi("HW_MODEL") .lt. 1024
+$old_parse = ""
+$if .not. VAX
+$then
+$ old_parse = f$getjpi("", "parse_style_perm")
+$ set process/parse=extended
+$endif
+$!
+$old_cutils = "gawk,awk,"
+$!
+$!
+$ i = 0
+$cutils_loop:
+$ file = f$element(i, ",", old_cutils)
+$ if file .eqs. "" then goto cutils_loop_end
+$ if file .eqs. "," then goto cutils_loop_end
+$ call update_old_image 'file'
+$ i = i + 1
+$ goto cutils_loop
+$cutils_loop_end:
+$!
+$!
+$if .not. VAX
+$then
+$ file = "gnv$gnu:[usr.share.man.cat1]awk^.1.gz"
+$ if f$search(file) .nes. "" then delete 'file';*
+$ file = "gnv$gnu:[usr.share.man.cat1]gawk^.1.gz"
+$ if f$search(file) .nes. "" then delete 'file';*
+$ file = "gnv$gnu:[usr.share.man.cat1]iawk^.1.gz"
+$ if f$search(file) .nes. "" then delete 'file';*
+$endif
+$!
+$!
+$if .not. VAX
+$then
+$ set process/parse='old_parse'
+$endif
+$!
+$all_exit:
+$ exit
+$!
+$! Remove old image or update it if needed.
+$!-------------------------------------------
+$update_old_image: subroutine
+$!
+$ file = p1
+$! First get the FID of the new gawk image.
+$! Don't remove anything that matches it.
+$ new_gawk = f$search("GNV$GNU:[BIN]GNV$''file'.EXE")
+$!
+$ new_gawk_fid = "No_new_gawk_fid"
+$ if new_gawk .nes. ""
+$ then
+$ new_gawk_fid = f$file_attributes(new_gawk, "FID")
+$ endif
+$!
+$!
+$!
+$! Now get check the "''file'." and "''file'.exe"
+$! May be links or copies.
+$! Ok to delete and replace.
+$!
+$!
+$ old_gawk_fid = "No_old_gawk_fid"
+$ old_gawk = f$search("gnv$gnu:[bin]''file'.")
+$ old_gawk_exe_fid = "No_old_gawk_fid"
+$ old_gawk_exe = f$search("gnv$gnu:[bin]''file'.exe")
+$ if old_gawk_exe .nes. ""
+$ then
+$ old_gawk_exe_fid = f$file_attributes(old_gawk_exe, "FID")
+$ endif
+$!
+$ if old_gawk .nes. ""
+$ then
+$ fid = f$file_attributes(old_gawk, "FID")
+$ if fid .nes. new_gawk_fid
+$ then
+$ if fid .eqs. old_gawk_exe_fid
+$ then
+$ set file/remove 'old_gawk'
+$ else
+$ delete 'old_gawk'
+$ endif
+$ if new_gawk .nes. ""
+$ then
+$ set file/enter='old_gawk' 'new_gawk'
+$ endif
+$ endif
+$ endif
+$!
+$ if old_gawk_exe .nes. ""
+$ then
+$ if old_gawk_fid .nes. new_gawk_fid
+$ then
+$ delete 'old_gawk_exe'
+$ if new_gawk .nes. ""
+$ then
+$ set file/enter='old_gawk_exe' 'new_gawk'
+$ endif
+$ endif
+$ endif
+$!
+$ exit
+$ENDSUBROUTINE ! Update old image
diff --git a/vms/stage_gawk_install.com b/vms/stage_gawk_install.com
new file mode 100644
index 00000000..22daf7f5
--- /dev/null
+++ b/vms/stage_gawk_install.com
@@ -0,0 +1,300 @@
+$! File: stage_gawk_install.com
+$!
+$! Stages the build products to new_gnu:[...] for testing and for building
+$! a kit.
+$!
+$! If p1 starts with "R" then remove instead of install.
+$!
+$! The file PCSI_GAWK_FILE_LIST.TXT is read in to get the files other
+$! than the release notes file and the source backup file.
+$!
+$! The PCSI system can really only handle ODS-2 format filenames and
+$! assumes that there is only one source directory. It also assumes that
+$! all destination files with the same name come from the same source file.
+$!
+$!
+$! 29-Sep-2013 J. Malmberg
+$!
+$!===========================================================================
+$!
+$ arch_type = f$getsyi("ARCH_NAME")
+$ arch_code = f$extract(0, 1, arch_type)
+$!
+$ mode = "install"
+$ code = f$extract(0, 1, p1)
+$ if code .eqs. "R" .or. code .eqs. "r" then mode = "remove"
+$!
+$! First create the directories
+$!--------------------------------
+$ if mode .eqs. "install"
+$ then
+$ create/dir new_gnu:[bin]/prot=o:rwed
+$ create/dir new_gnu:[vms_bin]/prot=o:rwed
+$ create/dir new_gnu:[vms_help]/prot=o:rwed
+$ create/dir new_gnu:[lib]/prot=o:rwed
+$ create/dir new_gnu:[usr.bin]/prot=o:rwed
+$ create/dir new_gnu:[usr.include]/prot=o:rwed
+$ create/dir new_gnu:[usr.lib.gawk]/prot=o:rwed
+$ create/dir new_gnu:[usr.share.awk]/prot=o:rwed
+$ create/dir new_gnu:[usr.share.doc.gawk]/prot=o:rwed
+$ create/dir new_gnu:[usr.share.info]/prot=o:rwed
+$ create/dir new_gnu:[usr.src.gawk.extension.vms]/prot=o:rwed
+$ create/dir new_gnu:[usr.share.doc.man.man1]/prot=o:rwed
+$ endif
+$!
+$ if mode .eqs. "install"
+$ then
+$ copy [.vms]gnv_gawk_startup.com -
+ new_gnu:[vms_bin]gnv$gawk_startup.com
+$ else
+$ file = "new_gnu:[vms_bin]gnv$gawk_startup.com"
+$ if f$search(file) .nes. "" then delete 'file';*
+$ endif
+$!
+$!
+$! Read through the file list to set up aliases and rename commands.
+$!---------------------------------------------------------------------
+$ open/read flst [.vms]pcsi_gawk_file_list.txt
+$!
+$inst_alias_loop:
+$ ! Skip the aliases
+$ read/end=inst_file_loop_end flst line_in
+$ line_in = f$edit(line_in,"compress,trim,uncomment")
+$ if line_in .eqs. "" then goto inst_alias_loop
+$ pathname = f$element(0, " ", line_in)
+$ linkflag = f$element(1, " ", line_in)
+$ if linkflag .nes. "->" then goto inst_alias_done
+$ goto inst_alias_loop
+$!
+$inst_file_loop:
+$!
+$ read/end=inst_file_loop_end flst line_in
+$ line_in = f$edit(line_in,"compress,trim,uncomment")
+$ if line_in .eqs. "" then goto inst_file_loop
+$!
+$inst_alias_done:
+$!
+$!
+$! Skip the directories as we did them above.
+$! Just process the files.
+$ tdir = f$parse(line_in,,,"DIRECTORY")
+$ tdir_len = f$length(tdir)
+$ tname = f$parse(line_in,,,"NAME")
+$ lctname = f$edit(tname, "LOWERCASE")
+$ ttype = f$parse(line_in,,,"TYPE")
+$ if arch_code .eqs. "V"
+$ then
+$ tname = lctname
+$ ttype = f$edit(ttype, "LOWERCASE")
+$ tdir = f$edit(tdir, "LOWERCASE")
+$ endif
+$ if tname .eqs. "" then goto inst_file_loop
+$ if ttype .eqs. ".dir" then goto inst_file_loop
+$!
+$! if p1 starts with "R" then remove instead of install.
+$!
+$! If gnv$xxx.exe, then:
+$! Source is []gnv$gawk.exe
+$! Destination1 is new_gnu:[bin]gnv$gawk.exe
+$! Destination2 is new_gnu:[bin]xxx. (alias)
+$! Destination2 is new_gnu:[bin]xxx.exe (alias)
+$! We put all in new_gnu:[bin] instead of some in [usr.bin] because
+$! older GNV kits incorrectly put some images in [bin] and [bin]
+$! comes first in the search list.
+$ if f$locate("gnv$", tname) .eq. 0
+$ then
+$ myfile_len = f$length(tname)
+$ myfile = f$extract(4, myfile_len, tname)
+$ source = "[]''myfile'''ttype'"
+$ dest1 = "new_gnu:[bin]''tname'''ttype'"
+$ dest2 = "new_gnu:[bin]''myfile'."
+$ dest3 = "new_gnu:[bin]''myfile'.exe"
+$ if mode .eqs. "install"
+$ then
+$ if f$search(dest1) .eqs. "" then copy 'source' 'dest1'
+$ if f$search(dest2) .eqs. "" then set file/enter='dest2' 'dest1'
+$ if f$search(dest3) .eqs. "" then set file/enter='dest3' 'dest1'
+$ else
+$ if f$search(dest2) .nes. "" then set file/remove 'dest2';*
+$ if f$search(dest3) .nes. "" then set file/remove 'dest3';*
+$ if f$search(dest1) .nes. "" then delete 'dest1';*
+$ endif
+$ goto inst_file_loop
+$ endif
+$!
+$! If lib.gawk] then
+$! source is sys$disk:[]
+$! dest is new_gnu:[usr.lib.gawk]
+$ if f$locate("lib.gawk]", tdir) .lt. tdir_len
+$ then
+$! ! Not yet available on VAX/VMS
+$ if arch_code .eqs. "V" then goto inst_file_loop
+$!
+$ source = "[]''tname'''ttype'"
+$ dest = "new_gnu:[usr.lib.gawk]''tname'''ttype'"
+$ if mode .eqs. "install"
+$ then
+$ if f$search(dest) .eqs. "" then copy 'source' 'dest'
+$ else
+$ if f$search(dest) .nes. "" then delete 'dest';*
+$ endif
+$ goto inst_file_loop
+$ endif
+$!
+$! If .vms_bin] then
+$! source is sys$disk:[]
+$! dest is [vms_bin]
+$ if (f$locate("vms_bin]", tdir) .lt. tdir_len)
+$ then
+$ if (ttype .eqs. ".cld")
+$ then
+$ source = "sys$disk:[]''tname'''ttype'"
+$ else
+$ source = "sys$disk:[.vms]''tname'''ttype'"
+$ endif
+$ dest = "new_gnu:[vms_bin]''tname'''ttype'"
+$ if mode .eqs. "install"
+$ then
+$ if f$search(dest) .eqs. "" then copy 'source' 'dest'
+$ else
+$ if f$search(dest) .nes. "" then delete 'dest';*
+$ endif
+$ goto inst_file_loop
+$ endif
+$!
+$! If .vms_hlp] then
+$! source is sys$disk:[.vms]
+$! dest is [vms_help]
+$ if (f$locate("vms_help]", tdir) .lt. tdir_len) .and. (ttype .eqs. ".hlp")
+$ then
+$ source = "sys$disk:[.vms]''tname'''ttype'"
+$ dest = "new_gnu:[vms_help]''tname'''ttype'"
+$ if mode .eqs. "install"
+$ then
+$ if f$search(dest) .eqs. "" then copy 'source' 'dest'
+$ else
+$ if f$search(dest) .nes. "" then delete 'dest';*
+$ endif
+$ goto inst_file_loop
+$ endif
+$!
+$! If doc.gawk] then
+$! source is sys$disk:[] or [.readme_d]
+$! dest is [usr.share.doc.gawk]
+$ if f$locate(".doc.gawk]", tdir) .lt. tdir_len
+$ then
+$ if lctname .eqs. "readme" .and. ttype .nes. "."
+$ then
+$ source = "sys$disk:[.README_D]''tname'''ttype'"
+$ if f$search(source) .eqs. ""
+$ then
+$! ! This may be an NFS mangled name on VAX.
+$ stype = ttype - "."
+$ if stype .nes. "vms" then stype = "$" + stype
+$ source = "sys$disk:[.$README_$D]$README.''stype'"
+$ endif
+$ else
+$ source = "sys$disk:[]''tname'''ttype'"
+$ if f$search(source) .eqs. ""
+$ then
+$ source = "sys$disk:[]$''tname'''ttype'"
+$ endif
+$ endif
+$ dest = "new_gnu:[usr.share.doc.gawk]''tname'''ttype'"
+$ if mode .eqs. "install"
+$ then
+$ if f$search(dest) .eqs. "" then copy 'source' 'dest'
+$ else
+$ if f$search(dest) .nes. "" then delete 'dest';*
+$ endif
+$ goto inst_file_loop
+$ endif
+$!
+$! If .awk] then
+$! source is sys$disk:[.awklib.eg.lib]
+$! dest is new_gnu:[usr.share.awk]
+$ if f$locate(".awk]", tdir) .lt. tdir_len
+$ then
+$ source = "[.awklib.eg.lib]''tname'''ttype'"
+$ dest = "new_gnu:[usr.share.awk]''tname'''ttype'"
+$ if mode .eqs. "install"
+$ then
+$ if f$search(dest) .eqs. "" then copy 'source' 'dest'
+$ else
+$ if f$search(dest) .nes. "" then delete 'dest';*
+$ endif
+$ goto inst_file_loop
+$ endif
+$!
+$! If *.info then
+$! source is [.doc]gawk.info
+$! dest is [.usr.share.info]
+$ if ttype .eqs. ".info"
+$ then
+$ source = "[.doc]''tname'''ttype'"
+$ dest = "new_gnu:[usr.share.info]''tname'''ttype'"
+$ if mode .eqs. "install"
+$ then
+$ if f$search(dest) .eqs. "" then copy 'source' 'dest'
+$ else
+$ if f$search(dest) .nes. "" then delete 'dest';*
+$ endif
+$ goto inst_file_loop
+$ endif
+$!
+$! If *.h then
+$! source is []*.h
+$! dest is [.usr.include]
+$ if ttype .eqs. ".h"
+$ then
+$ source = "[]''tname'''ttype'"
+$ dest = "new_gnu:[usr.include]''tname'''ttype'"
+$ if mode .eqs. "install"
+$ then
+$ if f$search(dest) .eqs. "" then copy 'source' 'dest'
+$ else
+$ if f$search(dest) .nes. "" then delete 'dest';*
+$ endif
+$ goto inst_file_loop
+$ endif
+$!
+$! If *.opt then
+$! source is [.vms]gawk_plugin.opt
+$! dest is [.usr.src.gawk.extension.vms]
+$ if ttype .eqs. ".opt"
+$ then
+$ source = "[.vms]''tname'''ttype'"
+$ dest = "new_gnu:[usr.src.gawk.extension.vms]''tname'''ttype'"
+$ if mode .eqs. "install"
+$ then
+$ if f$search(dest) .eqs. "" then copy 'source' 'dest'
+$ else
+$ if f$search(dest) .nes. "" then delete 'dest';*
+$ endif
+$ goto inst_file_loop
+$ endif
+$!
+$! If xxx.1 then
+$! source is [.doc]xxx.1
+$! dest is [usr.share.man.man1]
+$ if ttype .eqs. ".1"
+$ then
+$ source = "[.doc]''tname'''ttype'"
+$ dest = "new_gnu:[usr.share.man.man1]''tname'''ttype'"
+$ if mode .eqs. "install"
+$ then
+$ if f$search(dest) .eqs. "" then copy 'source' 'dest'
+$ else
+$ if f$search(dest) .nes. "" then delete 'dest';*
+$ endif
+$ goto inst_file_loop
+$ endif
+$!
+$ goto inst_file_loop
+$!
+$inst_file_loop_end:
+$!
+$close flst
+$!
+$all_exit:
+$ exit
diff --git a/vms/vax/ChangeLog b/vms/vax/ChangeLog
new file mode 100644
index 00000000..7cf2c4fa
--- /dev/null
+++ b/vms/vax/ChangeLog
@@ -0,0 +1,11 @@
+2014-04-08 Arnold D. Robbins <arnold@skeeve.com>
+
+ * 4.1.1: Release tar ball made.
+
+2013-12-29 John Malmberg <wb8tyw@qsl.net>
+
+ * ChangeLog: New directory.
+ * gawk_plugin_xfer.mar_exact, gawk_plugin_xfer.opt,
+ macro32_exactcase.com, macro32_exactcase.patch:
+ These are experimental files for future support of
+ dynamic extensions on VAX/VMS.
diff --git a/vms/vax/gawk_plugin_xfer.mar_exact b/vms/vax/gawk_plugin_xfer.mar_exact
new file mode 100644
index 00000000..e90babbd
--- /dev/null
+++ b/vms/vax/gawk_plugin_xfer.mar_exact
@@ -0,0 +1,13 @@
+ .PSECT GAWK_PLUGIN_XFERVECTORS -
+ PIC,USR,CON,REL,GBL,SHR,EXE,RD,NOWRT,QUAD
+
+; Exact case transfer vector and universal symbols
+;
+ .ALIGN QUAD
+ .EXTERNAL plugin_is_GPL_compatible
+
+ .TRANSFER dl_load
+ .MASK dl_load
+ JMP L^dl_load+2
+
+ .END
diff --git a/vms/vax/gawk_plugin_xfer.opt b/vms/vax/gawk_plugin_xfer.opt
new file mode 100644
index 00000000..75c134f7
--- /dev/null
+++ b/vms/vax/gawk_plugin_xfer.opt
@@ -0,0 +1,5 @@
+CASE_SENSITIVE=YES
+UNIVERSAL=plugin_is_GPL_compatible
+UNIVERSAL=dl_load
+!CLUSTER=GAWK_PLUGIN_XFER
+!COLLECT=GAWK_GLOBAL, GAWK_PLUGIN_XFERVECTORS
diff --git a/vms/vax/macro32_exactcase.com b/vms/vax/macro32_exactcase.com
new file mode 100644
index 00000000..79194e21
--- /dev/null
+++ b/vms/vax/macro32_exactcase.com
@@ -0,0 +1,16 @@
+$!
+$! Patch the Macro32 compiler and optional assemble
+$!-----------------------------------------------------
+$ patched_macro = "sys$disk:[]macro32_exactcase.exe"
+$ if f$search(patched_macro) .eqs. ""
+$ then
+$ copy sys$system:macro32.exe 'patched_macro'
+$ patch @[.vms]macro32_exactcase.patch
+$ endif
+$! Usage:
+$ xfer_file_source = p1
+$ if f$search(p1) .nes. ""
+$ then
+$ define/user macro32 'patched_macro'
+$ macro/lis 'p1'
+$ endif
diff --git a/vms/vax/macro32_exactcase.patch b/vms/vax/macro32_exactcase.patch
new file mode 100644
index 00000000..eda5cac7
--- /dev/null
+++ b/vms/vax/macro32_exactcase.patch
@@ -0,0 +1,11 @@
+macro32_exactcase.exe
+SE EC
+^X00000001
+RE /I
+^X00012B1D
+'BICB2 #^X00000020,R3'
+EXIT
+'BICB2 #^X00000000,R3'
+EXI
+U
+EXI
diff --git a/vms/vms-conf.h b/vms/vms-conf.h
deleted file mode 100644
index d53976f6..00000000
--- a/vms/vms-conf.h
+++ /dev/null
@@ -1,684 +0,0 @@
-#ifndef CONFIG_H
-#define CONFIG_H
-/*
- * config.h -- configuration definitions for gawk.
- *
- * For VMS (assumes V4.6 or later; tested on V7.3-1, V8.3.
- */
-
-/*
- * 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.
- *
- * 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
- */
-
-/* switch statements are enabled in awk programs */
-#undef ALLOW_SWITCH
-
-#if 0 /* no longer used */
-/* Define to 1 if using alloca.c. */
-#define C_ALLOCA 1
-#else
-#define NO_ALLOCA /* vms/vms_fwrite.c needs this */
-/* 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 */
-#define STACK_DIRECTION (-1)
-#endif /*0*/
-
-#include <bitypes.h>
-#define INT32_MAX __INT32_MAX
-#define INT32_MIN __INT32_MIN
-
-/* dynamic loading is possible */
-#undef DYNAMIC
-
-/* 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 GETGROUPS_T int
-
-/* 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 <arpa/inet.h> header file. */
-#undef HAVE_ARPA_INET_H
-
-/* Define to 1 if you have the `atexit' function. */
-#define HAVE_ATEXIT 1
-
-/* Define to 1 if you have the `btowc' function. */
-#undef HAVE_BTOWC
-
-/* 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.
- */
-#undef HAVE_DECL_TZNAME
-
-/* Define to 1 if you don't have `vprintf' but do have `_doprnt.' */
-#undef HAVE_DOPRNT
-
-/* Define to 1 if you have the <fcntl.h> header file. */
-#undef HAVE_FCNTL_H
-
-/* 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. */
-#undef HAVE_ICONV
-
-/* Define if you have the 'intmax_t' type in <stdint.h> or <inttypes.h>. */
-#undef HAVE_INTMAX_T
-
-/* Define to 1 if you have the <inttypes.h> header file. */
-#undef HAVE_INTTYPES_H
-
-/* Define if <inttypes.h> exists, doesn't clash with <sys/types.h>, and
- declares uintmax_t. */
-#undef HAVE_INTTYPES_H_WITH_UINTMAX
-
-/* Define to 1 if you have the `isascii' function. */
-#define HAVE_ISASCII 1
-
-/* Define to 1 if you have the `iswctype' function. */
-#define HAVE_ISWCTYPE 1
-
-/* Define to 1 if you have the `iswlower' function. */
-#define HAVE_ISWLOWER 1
-
-/* Define to 1 if you have the `iswupper' function. */
-#define HAVE_ISWUPPER 1
-
-/* Define if you have <langinfo.h> and nl_langinfo(CODESET). */
-#undef HAVE_LANGINFO_CODESET
-
-/* Define if your <locale.h> file defines LC_MESSAGES. */
-#undef HAVE_LC_MESSAGES
-
-/* Define to 1 if you have the <libintl.h> header file. */
-#undef HAVE_LIBINTL_H
-
-/* Define if you have the libsigsegv library. */
-#undef HAVE_LIBSIGSEGV
-
-/* Define to 1 if you have the `m' library (-lm). */
-#undef HAVE_LIBM
-
-/* Define to 1 if you have a fully functional readline library. */
-#undef HAVE_LIBREADLINE
-
-/* Define to 1 if you have the <limits.h> header file. */
-#define HAVE_LIMITS_H 1
-
-/* Define to 1 if you have the <locale.h> header file. */
-#undef HAVE_LOCALE_H
-
-/* Define if you have the 'long long' type. */
-#undef HAVE_LONG_LONG
-
-/* Define to 1 if the system has the type `long long int'. */
-#undef HAVE_LONG_LONG_INT
-
-/* 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 <mcheck.h> header file. */
-#undef HAVE_MCHECK_H
-
-/* Define to 1 if you have the `memcmp' function. */
-#define HAVE_MEMCMP 1
-
-/* Define to 1 if you have the `memcpy' function. */
-#define HAVE_MEMCPY 1
-
-/* Define to 1 if you have the `memcpy_ulong' function. */
-#undef HAVE_MEMCPY_ULONG
-
-/* Define to 1 if you have the `memmove' function. */
-#define HAVE_MEMMOVE 1
-
-/* Define to 1 if you have the <memory.h> header file. */
-#undef HAVE_MEMORY_H
-
-/* Define to 1 if you have the `memset' function. */
-#define HAVE_MEMSET 1
-
-/* Define to 1 if you have the `memset_ulong' function. */
-#undef HAVE_MEMSET_ULONG
-
-/* Define to 1 if you have the `mkstemp' function. */
-#undef HAVE_MKSTEMP
-
-/* we have the mktime function */
-#define HAVE_MKTIME 1
-
-/* Define to 1 if you have the <netdb.h> header file. */
-#undef HAVE_NETDB_H
-
-/* Define to 1 if you have the <netinet/in.h> header file. */
-#undef HAVE_NETINET_IN_H
-
-/* we'll use the one in [.missing_d] */
-#undef HAVE_SETENV
-
-/* 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
-
-/* 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 <stdarg.h> header file. */
-#define HAVE_STDARG_H 1
-
-/* Define to 1 if you have the <stddef.h> header file. */
-#define HAVE_STDDEF_H 1
-
-/* Define to 1 if you have the <stdint.h> header file. */
-#undef HAVE_STDINT_H
-
-/* Define if <stdint.h> exists, doesn't clash with <sys/types.h>, and declares
- uintmax_t. */
-#undef HAVE_STDINT_H_WITH_UINTMAX
-
-/* Define to 1 if you have the <stdlib.h> header file. */
-#define HAVE_STDLIB_H 1
-
-/* Define to 1 if you have the `strchr' function. */
-#define HAVE_STRCHR 1
-
-/* Define to 1 if you have the `strcoll' function. */
-#define HAVE_STRCOLL 1
-
-/* Define to 1 if you have the `strerror' function. */
-#define HAVE_STRERROR 1
-
-/* Define to 1 if you have the `strftime' function. */
-#undef HAVE_STRFTIME /* use the missing_d/strfime.c version */
-
-/* Define to 1 if cpp supports the ANSI # stringizing operator. */
-#ifdef VAXC
-#undef HAVE_STRINGIZE
-#else
-#define HAVE_STRINGIZE 1
-#endif
-
-/* Define to 1 if you have the <strings.h> header file. */
-#undef HAVE_STRINGS_H
-
-/* Define to 1 if you have the <string.h> header file. */
-#define HAVE_STRING_H 1
-
-/* Define to 1 if you have the `strncasecmp' function. */
-#undef HAVE_STRNCASECMP
-
-/* Define to 1 if you have the <stropts.h> header file. */
-#undef HAVE_STROPTS_H
-
-/* Define to 1 if you have the `strtod' function. */
-#define HAVE_STRTOD 1
-
-/* Define to 1 if you have the `strtoul' function. */
-#define HAVE_STRTOUL 1
-
-/* Define to 1 if `st_blksize' is a member of `struct stat'. */
-#undef HAVE_STRUCT_STAT_ST_BLKSIZE
-
-/* Define to 1 if `tm_zone' is a member of `struct tm'. */
-#undef HAVE_STRUCT_TM_TM_ZONE
-
-/* Define to 1 if you have the `system' function. */
-#define HAVE_SYSTEM 1
-
-/* Define to 1 if you have the <sys/ioctl.h> header file. */
-#undef HAVE_SYS_IOCTL_H
-
-/* Define to 1 if you have the <sys/param.h> header file. */
-#undef HAVE_SYS_PARAM_H
-
-/* Define to 1 if you have the <sys/socket.h> header file. */
-#undef HAVE_SYS_SOCKET_H
-
-/* Define to 1 if you have the <sys/stat.h> header file. */
-#undef HAVE_SYS_STAT_H
-
-/* Define to 1 if you have the <sys/time.h> header file. */
-#undef HAVE_SYS_TIME_H
-
-/* Define to 1 if you have the <sys/types.h> header file. */
-#undef HAVE_SYS_TYPES_H
-
-/* Define to 1 if you have <sys/wait.h> that is POSIX.1 compatible. */
-#undef HAVE_SYS_WAIT_H
-
-/* Define to 1 if you have the <termios.h> header file. */
-#undef HAVE_TERMIOS_H
-
-/* Define to 1 if you have the `tmpfile' function. */
-#define HAVE_TMPFILE 1
-/* Force snprintf.c to use tmpfile() instead of mkstemp(). */
-#ifdef HAVE_MKSTEMP
-#undef HAVE_MKSTEMP
-#endif
-
-/* 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. */
-#define HAVE_TOWLOWER 1
-
-/* Define to 1 if you have the `towupper' function. */
-#define HAVE_TOWUPPER 1
-
-/* Define to 1 if you don't have `tm_zone' but do have the external array
- `tzname'. */
-#define HAVE_TZNAME 1 /* (faked in vms/vms_misc.c) */
-
-/* Define to 1 if you have the `tzset' function. */
-#define HAVE_TZSET 1 /* (faked in vms/vms_misc.c) */
-
-/* Define if you have the 'uintmax_t' type in <stdint.h> or <inttypes.h>. */
-#undef HAVE_UINTMAX_T
-
-/* Define to 1 if you have the <unistd.h> header file. */
-#ifdef __DECC
-#define HAVE_UNISTD_H 1
-#else
-#undef HAVE_UNISTD_H
-#endif
-
-/* Define if you have the 'unsigned long long' type. */
-#undef HAVE_UNSIGNED_LONG_LONG
-
-/* Define to 1 if the system has the type `unsigned long long int'. */
-#undef HAVE_UNSIGNED_LONG_LONG_INT
-
-/* Define to 1 if you have the `usleep' function. */
-#define HAVE_USLEEP 1
-
-/* Define to 1 if you have the `vprintf' function. */
-#define HAVE_VPRINTF 1
-
-/* Define to 1 if you have the <wchar.h> 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 <wctype.h> header file. */
-#define HAVE_WCTYPE_H 1
-
-/* systems should define this type here */
-#define HAVE_WCTYPE_T 1
-
-/* systems should define this type here */
-#undef HAVE_WINT_T
-
-/* disable fatal errors on directories */
-#undef NO_DIRECTORY_FATAL
-
-/* disable lint checks */
-#undef NO_LINT
-
-/* Name of package */
-#define PACKAGE "gawk"
-
-/* Define to the address where bug reports for this package should be sent. */
-#define PACKAGE_BUGREPORT "bug-gawk@gnu.org"
-
-/* Define to the full name of this package. */
-#define PACKAGE_NAME "GNU Awk"
-
-/* Define to the full name and version of this package. */
-#define PACKAGE_STRING "GNU Awk 4.1.0"
-
-/* Define to the one symbol short name of this package. */
-#define PACKAGE_TARNAME "gawk"
-
-/* Define to the home page for this package. */
-#undef PACKAGE_URL
-
-/* Define to the version of this package. */
-#define PACKAGE_VERSION "4.1.0"
-
-/* Define to 1 if *printf supports %F format */
-#undef PRINTF_HAS_F_FORMAT
-
-/* Define as the return type of signal handlers (`int' or `void'). */
-#define RETSIGTYPE void
-
-/* The size of a `unsigned int', as computed by sizeof. */
-#define SIZEOF_UNSIGNED_INT 4
-
-/* The size of a `unsigned long', as computed by sizeof. */
-#define SIZEOF_UNSIGNED_LONG 4
-
-/* 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 <sys/time.h> and <time.h>. */
-#undef TIME_WITH_SYS_TIME
-
-/* Define to 1 if your <sys/time.h> declares `struct tm'. */
-#undef TM_IN_SYS_TIME
-
-/* force use of our version of strftime */
-#define USE_INCLUDED_STRFTIME 1
-
-/* Version number of package */
-#define VERSION "4.1.0"
-
-/* Define to 1 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
-
-/* Number of bits in a file offset, on hosts where this is settable. */
-#undef _FILE_OFFSET_BITS
-
-/* Enable GNU extensions on systems that have them. */
-#ifndef _GNU_SOURCE
-# undef _GNU_SOURCE
-#endif
-
-/* Define for large files, on AIX-style hosts. */
-#undef _LARGE_FILES
-
-/* Define to 1 if on MINIX. */
-#undef _MINIX
-
-/* The _Noreturn keyword of C11. */
-#ifndef _Noreturn
-# if (3 <= __GNUC__ || (__GNUC__ == 2 && 8 <= __GNUC_MINOR__) \
- || 0x5110 <= __SUNPRO_C)
-# define _Noreturn __attribute__ ((__noreturn__))
-# elif defined _MSC_VER && 1200 <= _MSC_VER
-# define _Noreturn __declspec (noreturn)
-# else
-# define _Noreturn
-# endif
-#endif
-
-/* Define to 2 if the system does not provide POSIX.1 features except with
- this defined. */
-#undef _POSIX_1_SOURCE
-
-/* 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
-
-/* Enable extensions on Solaris. */
-#ifndef __EXTENSIONS__
-# undef __EXTENSIONS__
-#endif
-#ifndef _POSIX_PTHREAD_SEMANTICS
-# undef _POSIX_PTHREAD_SEMANTICS
-#endif
-#ifndef _TANDEM_SOURCE
-# undef _TANDEM_SOURCE
-#endif
-
-/* Define to empty if `const' does not conform to ANSI C. */
-#undef const
-
-/* Define to `int' if <sys/types.h> 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
-#undef inline
-#endif
-
-/* Define to widest signed type if <inttypes.h> doesn't define. */
-#define intmax_t long int
-
-/* Define to `int' if <sys/types.h> doesn't 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. */
-#define restrict
-#if defined(__DECC) && (__DECC_VER >= 60400000)
-#undef restrict
-#endif
-
-/* Define to `unsigned' if <sys/types.h> doesn't define. */
-#undef size_t
-
-/* type to use in place of socklen_t if not defined */
-#undef socklen_t
-
-/* Define to `int' if <sys/types.h> does not define. */
-#define ssize_t int
-
-/* Define to `int' if <sys/types.h> doesn't define. */
-#undef uid_t
-
-/* Define to unsigned long or unsigned long long if <stdint.h> and
- <inttypes.h> don't define. */
-#define uintmax_t unsigned long
-
-#if 0
-#include "custom.h" /* overrides for stuff autoconf can't deal with */
-#else
-
-/* Whether `time_t' is an unsigned type. */
-#define TIME_T_UNSIGNED 1
-
-/* Extension for shared libraries */
-#define SHLIBEXT "exe"
-
-
-/*******************************/
-/* Gawk configuration options. */
-/*******************************/
-
-#define ALLOW_SWITCH 1
-
-/*
- * DEFPATH
- * VMS: "/AWK_LIBRARY" => "AWK_LIBRARY:"
- * The default search path for the -f option of gawk. It is used
- * if the AWKPATH environment variable is undefined.
- *
- * Note: OK even if no AWK_LIBRARY logical name has been defined.
- */
-
-#define DEFPATH ".,/AWK_LIBRARY"
-#define DEFLIBPATH ".,/AWK_LIBRARY"
-#define ENVSEP ','
-
-/*
- * Extended source file access.
- */
-#define DEFAULT_FILETYPE ".awk"
-
-/*
- * Pipe handling.
- */
-#define PIPES_SIMULATED 1
-
-/*
- * VAXCRTL is pre-ANSI and does some variations of numeric formatting
- * differently than gawk expects.
- */
-#if defined(VAX) && !defined(__DECC)
-/* '0' format modifier for %e,%f,%g gives wrong results in many cases */
-#define VAXCRTL
-/* %g format chooses %e format when should use %f */
-#define GFMT_WORKAROUND 1
-#endif
-
-/*
- * VAX C
- *
- * As of V3.2, VAX C is not yet ANSI-compliant. But it's close enough
- * for GAWK's purposes. Comment this out for VAX C V2.4 and earlier.
- * YYDEBUG definition is needed for combination of VAX C V2.x and Bison.
- */
-#if defined(VAXC) && !defined(__STDC__)
-#define __STDC__ 0
-#define NO_TOKEN_PASTING
-#define signed /*empty*/
-#define inline /*empty*/
-#ifndef __DECC /* DEC C does not support #pragma builtins even in VAXC mode */
-#define VAXC_BUILTINS
-#endif
-/* #define YYDEBUG 0 */
-#define NO_MBSUPPORT /* VAX C's preprocessor can't handle mbsupport.h */
-#define RE_TOKEN_INIT_BUG /* regcomp.c */
-#endif
-
-/*
- * DEC C
- *
- * Digital's ANSI complier.
- */
-#ifdef __DECC
- /* DEC C implies DECC$SHR, which doesn't have the %g problem of VAXCRTL */
-#undef GFMT_WORKAROUND
- /* DEC C V5.x introduces incompatibilities with prior porting efforts */
-#define _DECC_V4_SOURCE
-#define __SOCKET_TYPEDEFS
-#if __VMS_VER >= 60200000
-# undef __VMS_VER
-# define __VMS_VER 60100000
-#endif
-#if __CRTL_VER >= 60200000
-# if __CRTL_VER >= 70320000
-# define CRTL_VER_V732
-# define HAVE_SNPRINTF 1
-# endif
-# if __CRTL_VER >= 70301000
-# define CRTL_VER_V731
-# endif
-# undef __CRTL_VER
-# define __CRTL_VER 60100000
-#endif
-#if __DECC_VER >= 60400000 && !defined(DEBUG)
-/* disable "new feature in C99" diagnostics (for regex code);
- NEWC99 ought to suffice but doesn't (at least in V6.4) */
-#pragma message disable (NEWC99,DESIGNATORUSE)
-#endif
-#endif /* __DECC */
-
-/*
- * GNU C
- *
- * Versions of GCC (actually GAS) earlier than 1.38 don't produce the
- * right code for ``extern const'' constructs, and other usages of
- * const might not be right either. The old set of include files from
- * the gcc-vms distribution did not contain prototypes, and this could
- * provoke some const-related compiler warnings. If you've got an old
- * version of gcc for VMS, define 'const' out of existance, and by all
- * means obtain the most recent version!
- *
- * Note: old versions of GCC should also avoid defining STDC_HEADERS,
- * because most of the ANSI-C required header files are missing.
- */
-#ifdef __GNUC__
-/* #define const */
-/* #undef STDC_HEADERS */
-/* #undef HAVE_STDDEF_H */
-#ifndef STDC_HEADERS
-#define alloca __builtin_alloca
-#define environ $$PsectAttributes_NOSHR$$environ /* awful GAS kludge */
-#endif
-#undef REGEX_MALLOC /* use true alloca() in regex.c */
-#endif
-
-/* EXIT_SUCCESS and EXIT_FAILURE normally come from <stdlib.h> */
-#ifndef HAVE_STDLIB_H
-# define EXIT_SUCCESS 1 /* SYS$_NORMAL */
-# define EXIT_FAILURE 0x10000002 /* STS$M_INHIB_MSG|STS$K_ERROR */
-#endif
-/* EXIT_FATAL is specific to gawk, not part of Standard C */
-#define EXIT_FATAL 0x10000004 /* STS$M_INHIB_MSG|STS$K_SEVERE */
-
-#define IN_CONFIG_H
-#include "vms/redirect.h"
-#undef IN_CONFIG_H
-
-#endif /*"custom.h"*/
-
-#endif /*CONFIG_H*/
diff --git a/vms/vms-notes b/vms/vms-notes
deleted file mode 100644
index 23943bb9..00000000
--- a/vms/vms-notes
+++ /dev/null
@@ -1,8 +0,0 @@
-Thu Nov 22 18:18:47 IST 2012
-============================
-
-Per Anders Wallin, the HP VMS porting guide is available at
-
- http://h71000.www7.hp.com/portability/portingguidelines.html
-
-This file documents this fact, and anything else of interest.
diff --git a/vms/vms.h b/vms/vms.h
index 0fb73d5b..3991d39b 100644
--- a/vms/vms.h
+++ b/vms/vms.h
@@ -54,26 +54,26 @@ typedef struct _itm { U_Short len, code; void *buffer; U_Short *retlen; } Itm;
#define Descrip(strdsc,strbuf) Dsc strdsc = {sizeof strbuf - 1, (char *)strbuf}
extern int shell$is_shell(void);
-extern U_Long lib$find_file(const Dsc *, Dsc *, void *, ...);
-extern U_Long lib$find_file_end(void *);
+extern U_Long LIB$FIND_FILE(const Dsc *, Dsc *, void *, ...);
+extern U_Long LIB$FIND_FILE_END(void *);
#ifndef NO_TTY_FWRITE
-extern U_Long lib$get_ef(long *);
-extern U_Long sys$assign(const Dsc *, short *, long, const Dsc *);
-extern U_Long sys$dassgn(short);
-extern U_Long sys$qio(U_Long, U_Long, U_Long, void *,
+extern U_Long LIB$GET_EF(long *);
+extern U_Long SYS$ASSIGN(const Dsc *, short *, long, const Dsc *);
+extern U_Long SYS$DASSGN(short);
+extern U_Long SYS$QIO(U_Long, U_Long, U_Long, void *,
void (*)(U_Long), U_Long,
const char *, int, int, U_Long, int, int);
-extern U_Long sys$synch(long, void *);
+extern U_Long SYS$SYNCH(long, void *);
#endif /*!NO_TTY_FWRITE*/
-extern U_Long lib$spawn(const Dsc *,const Dsc *,const Dsc *,
+extern U_Long LIB$SPAWN(const Dsc *,const Dsc *,const Dsc *,
const U_Long *,const Dsc *,U_Long *,U_Long *,...);
/* system services for logical name manipulation */
-extern U_Long sys$trnlnm(const U_Long *,const Dsc *,const Dsc *,
+extern U_Long SYS$TRNLNM(const U_Long *,const Dsc *,const Dsc *,
const unsigned char *,Itm *);
-extern U_Long sys$crelnm(const U_Long *,const Dsc *,const Dsc *,
+extern U_Long SYS$CRELNM(const U_Long *,const Dsc *,const Dsc *,
const unsigned char *,const Itm *);
-extern U_Long sys$crelog(int,const Dsc *,const Dsc *,unsigned char);
-extern U_Long sys$dellnm(const Dsc *,const Dsc *,const unsigned char *);
+extern U_Long SYS$CRELOG(int,const Dsc *,const Dsc *,unsigned char);
+extern U_Long SYS$DELLNM(const Dsc *,const Dsc *,const unsigned char *);
extern void v_add_arg(int, const char *);
extern void vms_exit(int);
diff --git a/vms/vms_args.c b/vms/vms_args.c
index 0a296105..12165131 100644
--- a/vms/vms_args.c
+++ b/vms/vms_args.c
@@ -1,7 +1,7 @@
/* vms_args.c -- command line parsing, to emulate shell i/o redirection.
[ Escape sequence parsing now suppressed. ]
- Copyright (C) 1991-1996, 1997, 2011 the Free Software Foundation, Inc.
+ Copyright (C) 1991-1996, 1997, 2011, 2014 the 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
@@ -106,10 +106,26 @@ vms_arg_fixup( int *pargc, char ***pargv )
char **argv = *pargv;
int i, argc = *pargc;
int err_to_out_redirect = 0, out_to_err_redirect = 0;
+ char * shell;
+ int using_shell;
/* make sure AWK_LIBRARY has a value */
if (!getenv("AWK_LIBRARY"))
vms_define("AWK_LIBRARY", "SYS$LIBRARY:");
+
+ /* Check if running under a shell instead of DCL */
+ using_shell = 1;
+ shell = getenv("SHELL");
+ if (shell != NULL) {
+ if (strcmp(shell, "DCL") == 0) {
+ using_shell = 0;
+ }
+ } else {
+ using_shell = 0;
+ }
+ if (using_shell) {
+ return;
+ }
#ifdef CHECK_DECSHELL /* don't define this if linking with DECC$SHR */
if (shell$is_shell())
return; /* don't do anything if we're running DEC/Shell */
@@ -325,12 +341,12 @@ vms_expand_wildcards( const char *prospective_filespec )
*/
len = -1; /* overload 'len' with flag value */
context = NULL; /* init */
- while (vmswork(lib$find_file(&spec, &result, &context))) {
+ while (vmswork(LIB$FIND_FILE(&spec, &result, &context))) {
for (len = sizeof(res_buf)-1; len > 0 && res_buf[len-1] == ' '; len--) ;
res_buf[len] = '\0'; /* terminate after discarding trailing blanks */
v_add_arg(v_argc++, strdup(res_buf)); /* store result */
}
- (void)lib$find_file_end(&context);
+ (void)LIB$FIND_FILE_END(&context);
if (len >= 0) /* (still -1 => never entered loop) */
--v_argc; /* undo final post-increment */
return;
@@ -395,7 +411,7 @@ vms_define( const char *log_name, const char *trans_val )
log_dsc.len = len;
itemlist[0].buffer = (char *)trans_val;
itemlist[0].len = strlen(trans_val);
- return sys$crelnm(&attr, &lnmtable, &log_dsc, &acmode, itemlist);
+ return SYS$CRELNM(&attr, &lnmtable, &log_dsc, &acmode, itemlist);
}
/* t_strstr -- strstr() substitute; search 'str' for 'sub' */
diff --git a/vms/vms_cli.c b/vms/vms_cli.c
index ac793c1a..08e2d142 100644
--- a/vms/vms_cli.c
+++ b/vms/vms_cli.c
@@ -1,6 +1,6 @@
/* vms_cli.c -- interface to CLI$xxx routines for fetching command line components
- Copyright (C) 1991-1993, 2003, 2011 the Free Software Foundation, Inc.
+ Copyright (C) 1991-1993, 2003, 2011, 2014 the 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
@@ -29,13 +29,13 @@
#include <string.h>
#endif
-extern U_Long cli$present(const Dsc *);
-extern U_Long cli$get_value(const Dsc *, Dsc *, short *);
-extern U_Long cli$dcl_parse(const Dsc *, const void *, ...);
-extern U_Long sys$cli(void *, ...);
-extern U_Long sys$filescan(const Dsc *, void *, long *);
-extern void *lib$establish(U_Long (*handler)(void *, void *));
-extern U_Long lib$sig_to_ret(void *, void *); /* condition handler */
+extern U_Long CLI$PRESENT(const Dsc *);
+extern U_Long CLI$GET_VALUE(const Dsc *, Dsc *, short *);
+extern U_Long CLI$DCL_PARSE(const Dsc *, const void *, ...);
+extern U_Long SYS$CLI(void *, ...);
+extern U_Long SYS$FILESCAN(const Dsc *, void *, long *);
+extern void *LIB$ESTABLISH(U_Long (*handler)(void *, void *));
+extern U_Long LIB$SIG_TO_RET(void *, void *); /* condition handler */
/* Cli_Present() - call CLI$PRESENT to determine whether a parameter or */
/* qualifier is present on the [already parsed] command line */
@@ -43,10 +43,10 @@ U_Long
Cli_Present( const char *item )
{
Dsc item_dsc;
- (void)lib$establish(lib$sig_to_ret);
+ (void)LIB$ESTABLISH(LIB$SIG_TO_RET);
item_dsc.len = strlen(item_dsc.adr = (char *)item);
- return cli$present(&item_dsc);
+ return CLI$PRESENT(&item_dsc);
}
/* Cli_Get_Value() - call CLI$GET_VALUE to retreive the value of a */
@@ -57,11 +57,11 @@ Cli_Get_Value( const char *item, char *result, int size )
Dsc item_dsc, res_dsc;
U_Long sts;
short len = 0;
- (void)lib$establish(lib$sig_to_ret);
+ (void)LIB$ESTABLISH(LIB$SIG_TO_RET);
item_dsc.len = strlen(item_dsc.adr = (char *)item);
res_dsc.len = size, res_dsc.adr = result;
- sts = cli$get_value(&item_dsc, &res_dsc, &len);
+ sts = CLI$GET_VALUE(&item_dsc, &res_dsc, &len);
result[len] = '\0';
return sts;
}
@@ -79,11 +79,11 @@ Cli_Parse_Command( const void *cmd_tables, const char *cmd_verb )
U_Long sts;
int ltmp;
char longbuf[8200];
- (void)lib$establish(lib$sig_to_ret);
+ (void)LIB$ESTABLISH(LIB$SIG_TO_RET);
memset(&cmd, 0, sizeof cmd);
cmd.rqtype = CLI$K_GETCMD; /* command line minus the verb */
- sts = sys$cli(&cmd, (void *)0, (void *)0); /* get actual command line */
+ sts = SYS$CLI(&cmd, (void *)0, (void *)0); /* get actual command line */
if (vmswork(sts)) { /* ok => cli available & verb wasn't "RUN" */
/* invoked via symbol => have command line (which might be empty) */
@@ -92,7 +92,7 @@ Cli_Parse_Command( const void *cmd_tables, const char *cmd_verb )
/* need to strip image name from MCR invocation */
memset(fscn, 0, sizeof fscn);
fscn[0].code = FSCN$_FILESPEC; /* full file specification */
- (void)sys$filescan(&cmd.rdesc, fscn, (long *)0);
+ (void)SYS$FILESCAN(&cmd.rdesc, fscn, (long *)0);
cmd.rdesc.len -= fscn[0].len; /* shrink size */
cmd.rdesc.adr += fscn[0].len; /* advance ptr */
}
@@ -102,7 +102,7 @@ Cli_Parse_Command( const void *cmd_tables, const char *cmd_verb )
cmd.rdesc.len = sizeof longbuf - ltmp;
strncpy(&longbuf[ltmp], cmd.rdesc.adr, cmd.rdesc.len);
cmd.rdesc.len += ltmp, cmd.rdesc.adr = longbuf;
- sts = cli$dcl_parse(&cmd.rdesc, cmd_tables);
+ sts = CLI$DCL_PARSE(&cmd.rdesc, cmd_tables);
}
return sts;
diff --git a/vms/vms_crtl_init.c b/vms/vms_crtl_init.c
new file mode 100644
index 00000000..081ae2cc
--- /dev/null
+++ b/vms/vms_crtl_init.c
@@ -0,0 +1,470 @@
+/* File: VMS_CRTL_INIT.C
+
+ This file is common to a lot of projects.
+
+ $Id: vms_crtl_init.c,v 1.1.1.1 2012/12/02 19:25:22 wb8tyw Exp $
+
+ Module that provides a LIB$INITIALIZE routine for the GNV toolset that
+ will turn on some CRTL features that are not enabled by default.
+
+ The CRTL features can also be turned on via logical names, but that
+ impacts all programs and some aren't ready, willing, or able to handle
+ the settings that GNV needs.
+
+ The original module was found linked with GPL V2 modules, and thus must
+ be able to be distributed under the GPL V2 provisions.
+
+ As this module or similar is needed for virtually all programs built to run
+ under GNV or UNIX, it can be distributed with other licenses.
+
+ Edit History
+
+ 1-001 John Reagan Initial version using the old style interface
+ but with the new version commented out.
+
+ 1-002 John Reagan Switch to new API for setting features
+
+ 1-003 Steve Pitcher Add DECC$RENAME_NO_INHERIT.
+
+ 1-004 Steve Pitcher Quiet these, if the DECC feature doesn't exist.
+
+ 2-001 J. Malmberg New GNV requirements:
+ Three variations of object modules:
+ 1. For use with shells, sets the logical
+ name GNV$UNIX_SHELL.
+
+ 2. For utilities, if the logical name
+ GNV$UNIX_SHELL is set, it means that the
+ settings should assume that they are
+ running under a UNIX like shell.
+
+ 3. A third setting is for utilities that
+ always should behave as if they are
+ running under a UNIX shell.
+
+ If GNV$GNU is defined, then locally define
+ SYS$POSIX_ROOT to it. GNV$GNU can be set in
+ the SYSTEM table by the GNV setup.
+ SYS$POSIX_ROOT can not.
+
+ The logical name BIN also needs to be defined
+ here, otherwise the CRTL replaces it with
+ SYS$SYSTEM:
+
+ Never set the POSIX UID here, it will break
+ every reference to a GID/UID on systems that
+ do not have every VMS account mapped to a UID/GID
+ by TCPIP services.
+
+ Reformat text to fit 80 columns.
+
+ Remove all VAX C specific code.
+
+ Linker is probably using exact case, so public
+ symbols for LIB$* and SYS$* must be in upper case.
+
+ 2-002 J. Malmberg Support for VAX builds. OpenVMS/VAX does not have the
+ 17-Jun-2010 DECC$FEATURE routines. At this time I will not
+ be concerned if a feature setting exists on VAX,
+ as all we are doing is setting a logical name.
+
+ 2-003 J. Malmberg Add DECC$FILENAME_UNIX_NOVERSION as version numbers
+ will usually mess up ported programs.
+
+*/
+
+#include <stdio.h>
+#include <descrip.h>
+#include <lnmdef.h>
+#include <stsdef.h>
+#include <string.h>
+
+#pragma message disable pragma
+#pragma message disable dollarid
+#pragma message disable valuepres
+
+#pragma member_alignment save
+#pragma nomember_alignment longword
+#pragma message save
+#pragma message disable misalgndmem
+struct itmlst_3 {
+ unsigned short int buflen;
+ unsigned short int itmcode;
+ void *bufadr;
+ unsigned short int *retlen;
+};
+#pragma message restore
+#pragma member_alignment restore
+
+#ifdef __VAX
+#define ENABLE "ENABLE"
+#define DISABLE "DISABLE"
+#else
+
+#define ENABLE TRUE
+#define DISABLE 0
+int decc$feature_get_index (const char *name);
+int decc$feature_set_value (int index, int mode, int value);
+
+#endif
+
+int SYS$TRNLNM(
+ const unsigned long * attr,
+ const struct dsc$descriptor_s * table_dsc,
+ struct dsc$descriptor_s * name_dsc,
+ const unsigned char * acmode,
+ const struct itmlst_3 * item_list);
+int SYS$CRELNM(
+ const unsigned long * attr,
+ const struct dsc$descriptor_s * table_dsc,
+ const struct dsc$descriptor_s * name_dsc,
+ const unsigned char * acmode,
+ const struct itmlst_3 * item_list);
+int LIB$SIGNAL(int);
+
+/* Take all the fun out of simply looking up a logical name */
+static int sys_trnlnm
+ (const char * logname,
+ char * value,
+ int value_len)
+{
+ const $DESCRIPTOR(table_dsc, "LNM$FILE_DEV");
+ const unsigned long attr = LNM$M_CASE_BLIND;
+ struct dsc$descriptor_s name_dsc;
+ int status;
+ unsigned short result;
+ struct itmlst_3 itlst[2];
+
+ itlst[0].buflen = value_len;
+ itlst[0].itmcode = LNM$_STRING;
+ itlst[0].bufadr = value;
+ itlst[0].retlen = &result;
+
+ itlst[1].buflen = 0;
+ itlst[1].itmcode = 0;
+
+ name_dsc.dsc$w_length = strlen(logname);
+ name_dsc.dsc$a_pointer = (char *)logname;
+ name_dsc.dsc$b_dtype = DSC$K_DTYPE_T;
+ name_dsc.dsc$b_class = DSC$K_CLASS_S;
+
+ status = SYS$TRNLNM(&attr, &table_dsc, &name_dsc, 0, itlst);
+
+ if ($VMS_STATUS_SUCCESS(status)) {
+
+ /* Null terminate and return the string */
+ /*--------------------------------------*/
+ value[result] = '\0';
+ }
+
+ return status;
+}
+
+/* How to simply create a logical name */
+static int sys_crelnm
+ (const char * logname,
+ const char * value)
+{
+ int ret_val;
+ const char * proc_table = "LNM$PROCESS_TABLE";
+ struct dsc$descriptor_s proc_table_dsc;
+ struct dsc$descriptor_s logname_dsc;
+ struct itmlst_3 item_list[2];
+
+ proc_table_dsc.dsc$a_pointer = (char *) proc_table;
+ proc_table_dsc.dsc$w_length = strlen(proc_table);
+ proc_table_dsc.dsc$b_dtype = DSC$K_DTYPE_T;
+ proc_table_dsc.dsc$b_class = DSC$K_CLASS_S;
+
+ logname_dsc.dsc$a_pointer = (char *) logname;
+ logname_dsc.dsc$w_length = strlen(logname);
+ logname_dsc.dsc$b_dtype = DSC$K_DTYPE_T;
+ logname_dsc.dsc$b_class = DSC$K_CLASS_S;
+
+ item_list[0].buflen = strlen(value);
+ item_list[0].itmcode = LNM$_STRING;
+ item_list[0].bufadr = (char *)value;
+ item_list[0].retlen = NULL;
+
+ item_list[1].buflen = 0;
+ item_list[1].itmcode = 0;
+
+ ret_val = SYS$CRELNM(NULL, &proc_table_dsc, &logname_dsc, NULL, item_list);
+
+ return ret_val;
+}
+
+
+ /* Start of DECC RTL Feature handling */
+
+/*
+** Sets default value for a feature
+*/
+#ifdef __VAX
+static void set_feature_default(const char *name, const char *value)
+{
+ sys_crelnm(name, value);
+}
+#else
+static void set_feature_default(const char *name, int value)
+{
+ int index;
+
+ index = decc$feature_get_index(name);
+
+ if (index > 0)
+ decc$feature_set_value (index, 0, value);
+}
+#endif
+
+static void set_coe ( void )
+{
+
+ char gnv_posix_root[4096];
+ char unix_shell_name[255];
+ int use_unix_settings = 0;
+ int status;
+ int gnv_posix_root_found = 0;
+
+ /* If this is compiled for use with a UNIX shell, then the logical
+ * name GNV$UNIX_SHELL will be set to that shell name.
+ *
+ * Else, if the GNV$UNIX_SHELL logical name is set, then this application
+ * is running under some UNIX like shell, so it should modify it's
+ * behavior to be UNIX like.
+ *
+ * If the above logical name is not set, then the application should
+ * expect that it is running under DCL, and should expect VMS filenames
+ * on input, and may need to output filenames in VMS format.
+ *
+ * This can be overriden at compile time with GNV_UNIX_TOOL being
+ * defined.
+ *
+ * So this means that there will be multiple object modules from this
+ * source module. One for each shell, one for programs that can function
+ * in both DCL and UNIX environments, and one for programs that require
+ * a UNIX environment.
+ */
+
+#ifdef GNV_UNIX_SHELL
+ use_unix_settings = 1;
+
+ status = sys_crelnm("GNV$UNIX_SHELL", GNV_UNIX_SHELL);
+ if (!$VMS_STATUS_SUCCESS(status)) {
+ /* We have a big problem */
+ LIB$SIGNAL(status);
+ }
+#else
+
+#ifdef GNV_UNIX_TOOL
+ use_unix_settings = 1;
+#else
+ status = sys_trnlnm("GNV$UNIX_SHELL",
+ unix_shell_name, sizeof
+ unix_shell_name -1);
+ if (!$VMS_STATUS_SUCCESS(status)) {
+ unix_shell_name[0] = 0;
+ use_unix_settings = 0;
+ }
+#endif /* GNV_UNIX_TOOL */
+
+#endif /* GNV_UNIX_SHELL */
+
+ /* New style interface that works only on very recent
+ (Apr 2001 and beyond) CRTLs */
+
+ /*
+ * Only setting defaults allows logical names to
+ * override these settings.
+ */
+
+ /* Always set */
+
+ /* ACCESS should check ACLs or it is lying. */
+ set_feature_default("DECC$ACL_ACCESS_CHECK" , ENABLE);
+
+ /* We always want the new parse style */
+ set_feature_default ("DECC$ARGV_PARSE_STYLE" , ENABLE);
+
+ /* Unless we are in POSIX compliant mode, we want the old POSIX root
+ * enabled.
+ */
+ set_feature_default("DECC$DISABLE_POSIX_ROOT", DISABLE);
+
+ /* EFS charset, means UTF-8 support */
+ /* VTF-7 support is controlled by a feature setting called UTF8 */
+ set_feature_default ("DECC$EFS_CHARSET" , ENABLE);
+ set_feature_default ("DECC$EFS_CASE_PRESERVE" , ENABLE);
+
+
+ /* Support timestamps when available */
+ set_feature_default ("DECC$EFS_FILE_TIMESTAMPS" , ENABLE);
+
+ /* Cache environment varibles - performance improvements */
+ set_feature_default ("DECC$ENABLE_GETENV_CACHE" , ENABLE);
+
+ /* Start out with new file attribute inheritance */
+#ifdef __VAX
+ set_feature_default ("DECC$EXEC_FILEATTR_INHERITANCE", "2");
+#else
+ set_feature_default ("DECC$EXEC_FILEATTR_INHERITANCE", 2);
+#endif
+
+ /* Don't display trailing dot after files without type */
+ set_feature_default ("DECC$READDIR_DROPDOTNOTYPE" , ENABLE);
+
+ /* For standard output channels buffer output until terminator */
+ /* Gets rid of output logs with single character lines in them. */
+ set_feature_default ("DECC$STDIO_CTX_EOL" , ENABLE);
+
+ /* Fix mv aa.bb aa */
+ set_feature_default ("DECC$RENAME_NO_INHERIT" , ENABLE);
+
+ if (use_unix_settings) {
+
+ /* POSIX requires that open files be able to be removed */
+ set_feature_default ("DECC$ALLOW_REMOVE_OPEN_FILES", ENABLE);
+
+ set_feature_default ("DECC$FILENAME_UNIX_ONLY" , ENABLE);
+ /* FILENAME_UNIX_ONLY Implicitly sets
+ decc$disable_to_vms_logname_translation */
+
+ set_feature_default ("DECC$FILE_PERMISSION_UNIX", ENABLE);
+
+ /* For now this only with UNIX mode, applications can override
+ * with out using a LIB$INITIALIZE setting.
+ * This should be an application specific setting only enabled
+ * if the application requires it.
+ * Left here for now for backwards compatibility
+ */
+ set_feature_default ("DECC$FILE_SHARING" , ENABLE);
+
+ set_feature_default ("DECC$FILE_OWNER_UNIX" , ENABLE);
+ set_feature_default ("DECC$POSIX_SEEK_STREAM_FILE", ENABLE);
+
+ } else {
+ set_feature_default("DECC$FILENAME_UNIX_REPORT", ENABLE);
+ }
+
+ /* When reporting UNIX filenames, glob the same way */
+ set_feature_default ("DECC$GLOB_UNIX_STYLE" , ENABLE);
+
+ /* The VMS version numbers on Unix filenames is incompatible with most */
+ /* ported packages. */
+ set_feature_default("DECC$FILENAME_UNIX_NO_VERSION", ENABLE);
+
+ /* The VMS version numbers on Unix filenames is incompatible with most */
+ /* ported packages. */
+ set_feature_default("DECC$UNIX_PATH_BEFORE_LOGNAME", ENABLE);
+
+ /* Set strtol to proper behavior */
+ set_feature_default("DECC$STRTOL_ERANGE", ENABLE);
+
+ /* Pipe feature settings are longer needed with virtual memory pipe
+ code. Programs that use pipe need to be converted to use the
+ virtual memory pipe code, which effectively removes the hangs and
+ left over temporary files.
+
+ Comment left here to prevent regressions, as the larger pipe size
+ actually hurts memory usage with the new algorithm.
+ */
+ /* do_not_set_default ("DECC$PIPE_BUFFER_SIZE" , 8192); */
+
+
+ /* Rather than remove this completely, a comment is left here to warn
+ * someone from putting this bug back in.
+ *
+ * POSIX style UIDs require that the system administrator have set the
+ * system up to use POSIX style UIDs and GIDs. And if they have done
+ * so, then they should set the DECC$POSIX_STYLE_UID as a system wide
+ * logical name.
+ *
+ * Setting them in a program will break all routines that expect GID/UID
+ * stuff to work on systems set up by default with out mappings.
+ *
+ * Most utilities do not reference GID/UID values, so it took a while for
+ * this bug to surface.
+ */
+ /* do_not_set_default ("DECC$POSIX_STYLE_UID" , TRUE); */
+
+
+
+ /* GNV depends on SYS$POSIX_ROOT to be properly set. Since SYS$POSIX_ROOT
+ * globally affects all C applications, SYS$POSIX_ROOT can not be set
+ * anywhere that can be seen by other applications.
+ *
+ * So GNV$GNU is used instead, and SYS$POSIX_ROOT will be set in
+ * in the process table in user mode to that value.
+ *
+ * Restriction: The system manager should not point GNV$GNU at
+ * SYS$POSIX_ROOT, or anything that resolves to SYS$POSIX_ROOT.
+ *
+ */
+
+ status = sys_trnlnm("GNV$GNU",
+ gnv_posix_root,
+ sizeof gnv_posix_root - 1);
+ if ($VMS_STATUS_SUCCESS(status)) {
+ status = sys_crelnm("SYS$POSIX_ROOT", "GNV$GNU:");
+ gnv_posix_root_found = 1;
+ }
+
+ /* GNV depends on BIN being set to GNV$GNU:[bin]. Since BIN
+ * is not prefixed, and it affects everything globally, it needs to
+ * be set here if it is not defined already.
+ * If it is set already, assume that it is correct, rather than
+ * trying to second guess the user.
+ * If GNV$GNU is not defined, then define bin to be SYS$POSIX_ROOT.
+ */
+
+ status = sys_trnlnm("BIN",
+ gnv_posix_root,
+ sizeof gnv_posix_root - 1);
+ if (!$VMS_STATUS_SUCCESS(status)) {
+ if (gnv_posix_root_found) {
+ status = sys_crelnm("BIN", "GNV$GNU:[BIN]");
+ } else {
+ status = sys_crelnm("BIN", "SYS$POSIX_ROOT:[BIN]");
+ }
+ }
+
+}
+
+#pragma nostandard
+#pragma extern_model save
+#ifdef __VAX
+#pragma extern_model strict_refdef "LIB$INITIALIZE" nowrt, long, nopic
+#else
+#pragma extern_model strict_refdef "LIB$INITIALIZE" nowrt, long
+# if __INITIAL_POINTER_SIZE
+# pragma __pointer_size __save
+# pragma __pointer_size 32
+# else
+# pragma __required_pointer_size __save
+# pragma __required_pointer_size 32
+# endif
+#endif
+/* Set our contribution to the LIB$INITIALIZE array */
+void (* const iniarray[])(void) = {set_coe, } ;
+#ifndef __VAX
+# if __INITIAL_POINTER_SIZE
+# pragma __pointer_size __restore
+# else
+# pragma __required_pointer_size __restore
+# endif
+#endif
+
+
+/*
+** Force a reference to LIB$INITIALIZE to ensure it
+** exists in the image.
+*/
+int LIB$INITIALIZE(void);
+#ifdef __DECC
+#pragma extern_model strict_refdef
+#endif
+ int lib_init_ref = (int) LIB$INITIALIZE;
+#ifdef __DECC
+#pragma extern_model restore
+#pragma standard
+#endif
diff --git a/vms/vms_fwrite.c b/vms/vms_fwrite.c
index 1a16f58c..f29ec832 100644
--- a/vms/vms_fwrite.c
+++ b/vms/vms_fwrite.c
@@ -1,6 +1,6 @@
/* vms_fwrite.c - augmentation for the fwrite() function.
- Copyright (C) 1991-1996, 2010, 2011 the Free Software Foundation, Inc.
+ Copyright (C) 1991-1996, 2010, 2011, 2014 the 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
@@ -83,9 +83,9 @@ tty_fwrite( const void *buf, size_t size, size_t number, FILE *file )
fgetname(file, devnam); /* get 'file's name */
device.len = strlen(device.adr = devnam); /* create descriptor */
- if (vmswork(sys$assign(&device, &chan, 0, (Dsc *)0))) {
+ if (vmswork(SYS$ASSIGN(&device, &chan, 0, (Dsc *)0))) {
/* get an event flag; use #0 if problem */
- if (evfn == -1 && vmsfail(lib$get_ef(&evfn))) evfn = 0;
+ if (evfn == -1 && vmsfail(LIB$GET_EF(&evfn))) evfn = 0;
} else chan = 0; /* $ASSIGN failed */
}
/* store channel for later use; -1 => don't repeat failed init attempt */
@@ -119,19 +119,19 @@ tty_fwrite( const void *buf, size_t size, size_t number, FILE *file )
else if (pos < count) pos++, cc_fmt |= POSTFIX_CR, extra++;
/* wait for previous write, if any, to complete */
if (pt > (char *)buf) {
- sts = sys$synch(evfn, &iosb);
+ sts = SYS$SYNCH(evfn, &iosb);
if (vmswork(sts)) sts = iosb.status, result += iosb.count;
if (vmsfail(sts)) break;
}
/* queue an asynchronous write */
- sts = sys$qio(evfn, chan, io_func, &iosb, (void (*)(U_Long))0, 0L,
+ sts = SYS$QIO(evfn, chan, io_func, &iosb, (void (*)(U_Long))0, 0L,
pt, pos, 0, cc_fmt, 0, 0);
if (vmsfail(sts)) break; /*(should never happen)*/
pt += pos, count -= pos;
}
/* wait for last write to complete */
if (pt > (char *)buf && vmswork(sts)) {
- sts = sys$synch(evfn, &iosb);
+ sts = SYS$SYNCH(evfn, &iosb);
if (vmswork(sts)) sts = iosb.status, result += iosb.count;
}
if (vmsfail(sts)) errno = EVMSERR, vaxc$errno = sts;
@@ -202,7 +202,7 @@ tty_fclose( FILE *file )
short chan = file_num < _NFILE ? channel[file_num] : -1;
if (chan > 0)
- (void)sys$dassgn(chan); /* deassign the channel (ie, close) */
+ (void)SYS$DASSGN(chan); /* deassign the channel (ie, close) */
if (file_num < _NFILE)
channel[file_num] = 0; /* clear stale info */
}
diff --git a/vms/vms_gawk.c b/vms/vms_gawk.c
index f22e2fa9..4080e1db 100644
--- a/vms/vms_gawk.c
+++ b/vms/vms_gawk.c
@@ -1,6 +1,7 @@
/* vms_gawk.c -- parse GAWK command line using DCL syntax
- Copyright (C) 1991-1993, 1996, 2003, 2005, 2011 the Free Software Foundation, Inc.
+ Copyright (C) 1991-1993, 1996, 2003, 2005, 2011, 2014
+ the 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
@@ -37,16 +38,16 @@
#define Present(arg) vmswork(Cli_Present(arg))
#define Get_Value(arg,buf,siz) vmswork(Cli_Get_Value(arg,buf,siz))
-#ifndef __ia64__
-extern void gawk_cmd(); /* created with $ SET COMMAND/OBJECT */
-#define GAWK_CMD ((const void *)gawk_cmd)
-#else /* linker on Itanium is much pickier about such things */
+#ifndef __DECC
+extern void GAWK_CMD(); /* created with $ SET COMMAND/OBJECT */
+#define gawk_cmd ((const void *)GAWK_CMD) */
+#else /* Use ANSI definitions for DEC C */
#pragma extern_model save
#pragma extern_model strict_refdef
/* (could use globalvalue rather than _refdef if we omit GAWK_CMD's `&') */
-extern void *gawk_cmd;
+extern void *GAWK_CMD;
#pragma extern_model restore
-#define GAWK_CMD ((const void *)&gawk_cmd)
+#define gawk_cmd ((const void *)&GAWK_CMD)
#endif
extern void _exit(int);
static int vms_usage(int);
@@ -88,7 +89,7 @@ vms_gawk()
command, so we'll now attempt to generate a command from the
foreign command string and parse that.
*/
- sts = Cli_Parse_Command(GAWK_CMD, "GAWK"); /* (*not* CmdName) */
+ sts = Cli_Parse_Command(gawk_cmd, "GAWK"); /* (*not* CmdName) */
if (vmswork(sts))
sts = Cli_Present("GAWK_P1");
}
diff --git a/vms/vms_misc.c b/vms/vms_misc.c
index cd92d7ef..82c2f8a8 100644
--- a/vms/vms_misc.c
+++ b/vms/vms_misc.c
@@ -1,6 +1,6 @@
/* vms_misc.c -- sustitute code for missing/different run-time library routines.
- Copyright (C) 1991-1993, 1996-1997, 2001, 2003, 2009, 2010, 2011
+ Copyright (C) 1991-1993, 1996-1997, 2001, 2003, 2009, 2010, 2011, 2014
the Free Software Foundation, Inc.
This program is free software; you can redistribute it and/or modify
@@ -118,15 +118,24 @@ vms_open( const char *name, int mode, ... )
result = creat(name, 0, "rfm=stmlf", "rat=cr", "shr=nil", "mbc=32");
} else {
struct stat stb;
+ int stat_result;
const char *mbc, *shr = "shr=get", *ctx = "ctx=stm";
-
- if (stat((char *)name, &stb) < 0) { /* assume DECnet */
+
+ stat_result = stat((char *)name, &stb);
+ if ( stat_result < 0) { /* assume DECnet */
mbc = "mbc=8";
} else { /* ordinary file; allow full sharing iff record format */
mbc = "mbc=32";
if ((stb.st_fab_rfm & 0x0F) < FAB$C_STM) shr = "shr=get,put,upd";
}
result = open(name, mode, 0, shr, mbc, "mbf=2");
+ if ((stat_result >= 0) && (result < 0) && (errno == ENOENT)) {
+ /* ENOENT not possible because stat succeeded */
+ errno = EMFILE;
+ if (S_ISDIR(stb.st_mode)) {
+ errno = EISDIR; /* Bug seen in VMS 8.3 */
+ }
+ }
}
/* This is only approximate; the ACP -> RMS -> VAXCRTL interface
@@ -165,8 +174,8 @@ vms_devopen( const char *name, int mode )
#define VMS_UNITS_PER_SECOND 10000000L /* hundreds of nanoseconds, 1e-7 */
#define UNIX_EPOCH "01-JAN-1970 00:00:00.00"
-extern U_Long sys$bintim(), sys$gettim();
-extern U_Long lib$subx(), lib$ediv();
+extern U_Long SYS$BINTIM(), SYS$GETTIM();
+extern U_Long LIB$SUBX(), LIB$EDIV();
/*
* Get current time in microsecond precision.
@@ -183,13 +192,13 @@ vms_gettimeofday(struct timeval *tv, void *timezone__not_used)
const long thunk = VMS_UNITS_PER_SECOND;
long now[2], quad[2];
- if (!epoch[0]) sys$bintim(&epoch_dsc, epoch); /* 1 Jan 0:0:0 1970 */
+ if (!epoch[0]) SYS$BINTIM(&epoch_dsc, epoch); /* 1 Jan 0:0:0 1970 */
/* get current time, as VMS quadword time */
- sys$gettim(now);
+ SYS$GETTIM(now);
/* convert the quadword time so that it's relative to Unix epoch */
- lib$subx(now, epoch, quad); /* quad = now - epoch; */
+ LIB$SUBX(now, epoch, quad); /* quad = now - epoch; */
/* convert 1e-7 units into seconds and fraction of seconds */
- lib$ediv(&thunk, quad, &tv->tv_sec, &tv->tv_usec);
+ LIB$EDIV(&thunk, quad, &tv->tv_sec, &tv->tv_usec);
/* convert fraction of seconds into microseconds */
tv->tv_usec /= (VMS_UNITS_PER_SECOND / 1000000);
@@ -272,7 +281,7 @@ int fork( void ) {
#include <fab.h>
#include <nam.h>
-extern unsigned long sys$parse(), sys$search();
+extern unsigned long SYS$PARSE(), SYS$SEARCH();
/* Work around a VAXCRTL bug. If a file is located via a searchlist,
and if the device it's on is not the same device as the one specified
diff --git a/vms/vms_popen.c b/vms/vms_popen.c
index 62f3f719..23482df1 100644
--- a/vms/vms_popen.c
+++ b/vms/vms_popen.c
@@ -1,6 +1,7 @@
/* [.vms]vms_popen.c -- substitute routines for missing pipe calls.
- Copyright (C) 1991-1993, 1996, 2010, 2011 the Free Software Foundation, Inc.
+ Copyright (C) 1991-1993, 1996, 2010, 2011, 2014
+ the 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
@@ -133,8 +134,8 @@ pclose( FILE *current )
int rval, cur = fileno(current);
/* assert( cur >= 0 && cur < pipes_lim ); */
- if (pipes[cur].pmode == unopened)
- return -1; /* should never happen */
+ if ((cur < 0) || (pipes[cur].pmode == unopened))
+ return -1; /* should never happen, but does with two-way */
rval = fclose(current); /* close temp file; if reading, we're done */
if (pipes[cur].pmode == writing) {
@@ -172,7 +173,7 @@ vms_execute( const char *command, const char *input, const char *output )
out_p = 0;
push_logicals(); /* guard against user-mode definitions of sys$Xput */
- sts = lib$spawn(&cmd, in_p, out_p, (U_Long *)0,
+ sts = LIB$SPAWN(&cmd, in_p, out_p, (U_Long *)0,
(Dsc *)0, (U_Long *)0, &cmpltn_sts);
pop_logicals(); /* restore environment */
@@ -219,9 +220,9 @@ static const Descrip(sys_output,"SYS$OUTPUT");
static const unsigned char acmode = PSL$C_USER; /* only care about user-mode */
/* macros for simplfying the code a bunch */
-#define DelTrans(l) sys$dellnm(&lnmtable, (l), &acmode)
-#define GetTrans(l,i) sys$trnlnm((U_Long *)0, &lnmtable, (l), &acmode, (i))
-#define SetTrans(l,i) sys$crelnm((U_Long *)0, &lnmtable, (l), &acmode, (i))
+#define DelTrans(l) SYS$DELLNM(&lnmtable, (l), &acmode)
+#define GetTrans(l,i) SYS$TRNLNM((U_Long *)0, &lnmtable, (l), &acmode, (i))
+#define SetTrans(l,i) SYS$CRELNM((U_Long *)0, &lnmtable, (l), &acmode, (i))
/* itemlist manipulation macros; separate versions for aggregate and scalar */
#define SetItmA(i,c,p,r) ((i).code = (c), (i).len = sizeof (p),\
(i).buffer = (p), (i).retlen = (U_Short *)(r))
@@ -333,7 +334,7 @@ restore_translation( const Dsc *logname, const Itm *itemlist )
/* assert( itemlist[2].code == LNM$_STRING ); */
trans_val.adr = itemlist[2].buffer;
trans_val.len = itemlist[2].len;
- (void) sys$crelog(LOG_PROCESS_TABLE, logname, &trans_val, LOG_USERMODE);
+ (void) SYS$CRELOG(LOG_PROCESS_TABLE, logname, &trans_val, LOG_USERMODE);
} else {
/* $crelnm definition; itemlist could specify multiple translations,
but has already been setup properly for use as-is.
diff --git a/vms/vmsbuild.com b/vms/vmsbuild.com
index 95c6aeb3..c13e4b57 100644
--- a/vms/vmsbuild.com
+++ b/vms/vmsbuild.com
@@ -10,14 +10,24 @@ $! gawk 3.1.1 revised, Apr'02
$! gawk 3.1.6 revised, Mar'07
$! gawk-bytecode revd, Jan'10
$! gawk 4.0.0 revd, May'11
-$! gawk 4.1.0 revd, Nov'12
+$! gawk 4.1.0 revd, May'13
+$! gawk 4.1.1 revd, Apr'14
$!
$ REL = "4.1" !release version number
-$ PATCHLVL = "0"
+$ PATCHLVL = "1"
$!
+$ if (f$getsyi("HW_MODEL") .lt. 1024)
+$ then
+$ arch_name = "VAX"
+$ else
+$ arch_name = f$edit(f$getsyi("ARCH_NAME"), "UPCASE")
+$ endif
$!
$ CCFLAGS = "/noList" ! "/noOpt/Debug"
+$! CCFLAGS = "/list/show=(expan,incl)
$ CDEFS = "GAWK,HAVE_CONFIG_H"
+$! Do not specify _POSIX_EXIT here, we are using other tricks for that.
+$!
$!
$ if p1.eqs."" then p1 = "DECC" !default compiler
$ if p1.eqs."GNUC"
@@ -38,8 +48,17 @@ $ CFLAGS = "/Incl=[]/Obj=[]/Opt=noInline/Def=(''CDEFS')''CCFLAGS'"
$ LIBS = "sys$share:vaxcrtl.exe/Shareable"
$ else !!VAXC
$! neither GNUC nor VAXC, assume DECC (same for either VAX or Alpha)
+$ if arch_name .eqs. "vax"
+$ then
+$ CFLOAT = ""
+$ else
+$ CFLOAT = "/float=ieee/ieee_mode=denorm_results"
+$ endif
$ CC = "cc/DECC/Prefix=All"
-$ CFLAGS = "/Incl=[]/Obj=[]/Def=(''CDEFS')''CCFLAGS'"
+$ CNAME = "/NAME=(AS_IS,SHORT)
+$ CINC = "/NESTED_INCLUDE=NONE"
+$ CFLAGS = "/Incl=([],[.vms])/Obj=[]/Def=(''CDEFS')''CINC'''CCFLAGS'"
+$ CFLAGS = CNAMES + CFLOAT + CFLAGS
$ LIBS = "" ! DECC$SHR instead of VAXCRTL, no special link option needed
$ endif !VAXC
$ endif !GNUC
@@ -47,12 +66,15 @@ $!
$ cc = CC + CFLAGS
$ show symbol cc
$!
-$ if f$search("config.h").nes."" then -
- if f$cvtime(f$file_attr("config.h","RDT")).ges.-
- f$cvtime(f$file_attr("[.vms]vms-conf.h","RDT")) then goto config_ok
-$ v = f$verify(1)
-$ copy [.vms]vms-conf.h []config.h
-$! 'f$verify(v)'
+$ if f$search("config.h") .nes. ""
+$ then
+$ if f$cvtime(f$file_attr("config.h", "RDT")) .ges. -
+ f$cvtime(f$file_attr("configh.in","RDT")) then goto config_ok
+$ endif
+$ v = f$verify(0)
+$ @[.vms]generate_config_vms_h_gawk.com
+$ @[.vms]config_h.com NOBUILTINS
+$!
$config_ok:
$ if f$search("awkgram.c").nes."" then goto awkgram_ok
$ write sys$output " You must process `awkgram.y' with ""yacc"" or ""bison"""
@@ -70,7 +92,7 @@ $ if f$search("ytab.c").nes."" .or. f$search("y_tab.c").nes."" then - !yacc
write sys$output " or else rename `ytab.c' or `y_tab.c' to `command.c'."
$ exit
$command_ok:
-$ v = f$verify(1)
+$ v1 = f$verify(1)
$ cc array.c
$ cc awkgram.c
$ cc builtin.c
@@ -106,7 +128,8 @@ $ cc [.vms]vms_fwrite.c
$ cc [.vms]vms_args.c
$ cc [.vms]vms_gawk.c
$ cc [.vms]vms_cli.c
-$ set command/Object=[]gawk_cmd.obj [.vms]gawk.cld
+$ cc [.vms]vms_crtl_init.c
+$ set command/Object=[]gawk_cmd.obj sys$disk:[.vms]gawk.cld
$! 'f$verify(v)'
$!
$ close/noLog Fopt
@@ -116,18 +139,21 @@ array.obj,awkgram.obj,builtin.obj,dfa.obj,ext.obj,field.obj,floatcomp.obj
gawkmisc.obj,getopt.obj,getopt1.obj,io.obj
main.obj,msg.obj,node.obj
random.obj,re.obj,regex.obj,replace.obj,version.obj,eval.obj,profile.obj
-command.obj,debug.obj,int_array.obj,cint_array.obj,gawkapi.obj,mpfr.obj,str_array.obj,symbol.obj
+command.obj,debug.obj,int_array.obj,cint_array.obj,gawkapi.obj,mpfr.obj
+str_array.obj,symbol.obj
[]vms_misc.obj,vms_popen.obj,vms_fwrite.obj,vms_args.obj
-[]vms_gawk.obj,vms_cli.obj,gawk_cmd.obj
+[]vms_gawk.obj,vms_cli.obj,gawk_cmd.obj,vms_crtl_init.obj
psect_attr=environ,noshr !extern [noshare] char **
stack=48 !preallocate more pages (default is 20)
iosegment=128 !ditto (default is 32)
+$!
+$ v1 = f$verify(1)
+$ @[.vms]gawk_ident.com
$ open/append Fopt gawk.opt
$ write Fopt libs
-$ write Fopt "identification=""V''REL'.''PATCHLVL'"""
$ close Fopt
$!
-$ v = f$verify(1)
+$ v1 = f$verify(1)
$ link/exe=gawk.exe gawk.opt/options
$! 'f$verify(v)'
$ exit
diff --git a/vms/vmstest.com b/vms/vmstest.com
index 25404373..30bdbf22 100644
--- a/vms/vmstest.com
+++ b/vms/vmstest.com
@@ -25,6 +25,7 @@ $ rm = "delete/noConfirm/noLog"
$ mv = "rename/New_Vers"
$ gawk = "$sys$disk:[-]gawk"
$ AWKPATH_srcdir = "define/User AWKPATH sys$disk:[]"
+$ AWKLIBPATH_dir = "define/User AWKLIBPATH sys$disk:[-]"
$
$ listdepth = 0
$ pipeok = 0
@@ -119,8 +120,9 @@ $ list = "include2 indirectcall lint lintold lintwarn match1" -
+ " nondec2 patsplit posix profile1 procinfs printfbad1" -
+ " printfbad2 printfbad3 profile2 profile3 pty1" -
+ " regx8bit rebuf reginttrad reint reint2 rsstart1 rsstart2 rsstart3 rstest6" -
- + " shadow sortfor sortu splitarg4 strtonum strftime switch2" -
- + " symtab1 symtab2 symtab3 symtab4 symtab5 symtab6 symtab7 symtab8 symtab9"
+ + " shadow sortfor sortu split_after_fpat splitarg4" -
+ + " strtonum strftime switch2 symtab1 symtab2 symtab3" -
+ + " symtab4 symtab5 symtab6 symtab7 symtab8 symtab9"
$ gosub list_of_tests
$ return
$
@@ -159,6 +161,13 @@ $ type sys$input:
$ list = "inetechu inetecht inetdayu inetdayt"
$ gosub list_of_tests
$ return
+$!
+$extension: echo "extension...."
+$ list = "inplace1 filefuncs fnmatch fts functab4 ordchr" -
+ + " readdir revout revtwoway rwarray time"
+ gosub list_of_tests
+ return
+
$
$! list_of_tests: process 'list', a space-separated list of tests.
$! Some tests assign their own 'list' and call us recursively,
@@ -259,6 +268,7 @@ $rstest6:
$rswhite:
$sortempty:
$sortfor:
+$split_after_fpat:
$splitarg4:
$splitargv:
$splitarr:
@@ -578,7 +588,7 @@ $defref: echo "defref"
$ set noOn
$ AWKPATH_srcdir
$ gawk --lint -f defref.awk >_defref.tmp 2>&1
-$ if .not.$status then call exit_code 2 _defref.tmp
+$ if .not. $status then call exit_code '$status' _defref.tmp
$ set On
$ cmp defref.ok sys$disk:[]_defref.tmp
$ if $status then rm _defref.tmp;
@@ -594,6 +604,16 @@ $
$strftime: echo "strftime"
$ ! this test could fail on slow machines or on a second boundary,
$ ! so if it does, double check the actual results
+$ ! This test needs SYS$TIMEZONE_NAME and SYS$TIMEZONE_RULE
+$ ! to be properly defined.
+$ ! This test now needs GNV Corutils to work
+$ date_bin = "gnv$gnu:[bin]gnv$date.exe"
+$ if f$search(date_bin) .eqs. ""
+$ then
+$ echo "''test' skipped"
+$ return
+$ endif
+$ date := $'date_bin'
$!! date | gawk -v "OUTPUT"=_strftime.tmp -f strftime.awk
$ now = f$time()
$ wkd = f$extract(0,3,f$cvtime(now,,"WEEKDAY"))
@@ -601,11 +621,12 @@ $ mon = f$cvtime(now,"ABSOLUTE","MONTH")
$ mon = f$extract(0,1,mon) + f$edit(f$extract(1,2,mon),"LOWERCASE")
$ day = f$cvtime(now,,"DAY")
$ tim = f$extract(0,8,f$cvtime(now,,"TIME"))
-$ tz = ""
+$! Can not use tz as it shows up in the C environment.
+$ timezone = f$trnlnm("SYS$TIMEZONE_NAME")
$ yr = f$cvtime(now,,"YEAR")
$ if f$trnlnm("FTMP").nes."" then close/noLog ftmp
$ open/Write ftmp strftime.in
-$ write ftmp wkd," ",mon," ",day," ",tim," ",tz," ",yr
+$ write ftmp wkd," ",mon," ",day," ",tim," ",timezone," ",yr
$ close ftmp
$ gawk -v "OUTPUT"=_strftime.tmp -f strftime.awk strftime.in
$ set noOn
@@ -637,7 +658,7 @@ $
$incdupe: echo "''test'"
$ set noOn
$ gawk --lint -i inclib -i inclib.awk "BEGIN {print sandwich(""a"", ""b"", ""c"")}" > _'test'.tmp 2>&1
-$ if .not. $status then call exit_code 1 _'test'.tmp
+$ if .not. $status then call exit_code '$status' _'test'.tmp
$ cmp 'test'.ok sys$disk:[]_'test'.tmp
$ if $status then rm _'test'.tmp;*
$ set On
@@ -646,7 +667,7 @@ $
$incdupe2: echo "''test'"
$ set noOn
$ gawk --lint -f inclib -f inclib.awk >_'test'.tmp 2>&1
-$ if .not. $status then call exit_code 1 _'test'.tmp
+$ if .not. $status then call exit_code '$status' _'test'.tmp
$ cmp 'test'.ok sys$disk:[]_'test'.tmp
$ if $status then rm _'test'.tmp;*
$ set On
@@ -661,7 +682,7 @@ $
$incdupe4: echo "''test'"
$ set NoOn
$ gawk --lint -f hello -i hello.awk >_'test'.tmp 2>&1
-$ if .not. $status then call exit_code 2 _'test'.tmp
+$ if .not. $status then call exit_code '$status' _'test'.tmp
$ cmp 'test'.ok sys$disk:[]_'test'.tmp
$ if $status then rm _'test'.tmp;*
$ set On
@@ -670,7 +691,7 @@ $
$incdupe5: echo "''test'"
$ set NoOn
$ gawk --lint -i hello -f hello.awk >_'test'.tmp 2>&1
-$ if .not. $status then call exit_code 2 _'test'.tmp
+$ if .not. $status then call exit_code '$status' _'test'.tmp
$ cmp 'test'.ok sys$disk:[]_'test'.tmp
$ if $status then rm _'test'.tmp;*
$ set On
@@ -679,7 +700,7 @@ $
$incdupe6: echo "''test'"
$ set NoOn
$ gawk --lint -i inchello -f hello.awk >_'test'.tmp 2>&1
-$ if .not. $status then call exit_code 2 _'test'.tmp
+$ if .not. $status then call exit_code '$status' _'test'.tmp
$ cmp 'test'.ok sys$disk:[]_'test'.tmp
$ if $status then rm _'test'.tmp;*
$ set On
@@ -688,7 +709,7 @@ $
$incdupe7: echo "''test'"
$ set NoOn
$ gawk --lint -f hello -i inchello >_'test'.tmp 2>&1
-$ if .not. $status then call exit_code 2 _'test'.tmp
+$ if .not. $status then call exit_code '$status' _'test'.tmp
$ cmp 'test'.ok sys$disk:[]_'test'.tmp
$ if $status then rm _'test'.tmp;*
$ set On
@@ -706,7 +727,7 @@ $symtab2:
$symtab3: echo "''test'"
$ set noOn
$ gawk -f 'test'.awk >_'test'.tmp 2>&1
-$ if .not. $status then call exit_code 2 _'test'.tmp
+$ if .not. $status then call exit_code '$status' _'test'.tmp
$ cmp 'test'.ok sys$disk:[]_'test'.tmp
$ if $status then rm _'test'.tmp;*
$ set On
@@ -717,7 +738,7 @@ $symtab5:
$symtab7: echo "''test'"
$ set noOn
$ gawk -f 'test'.awk <'test'.in >_'test'.tmp 2>&1
-$ if .not. $status then call exit_code 2 _'test'.tmp
+$ if .not. $status then call exit_code '$status' _'test'.tmp
$ cmp 'test'.ok sys$disk:[]_'test'.tmp
$ if $status then rm _'test'.tmp;*
$ set On
@@ -897,7 +918,7 @@ $noparms: echo "noparms"
$ set noOn
$ AWKPATH_srcdir
$ gawk -f noparms.awk >_noparms.tmp 2>&1
-$ if .not.$status then call exit_code 1 _noparms.tmp
+$ if .not. $status then call exit_code '$status' _noparms.tmp
$ set On
$ cmp noparms.ok sys$disk:[]_noparms.tmp
$ if $status then rm _noparms.tmp;
@@ -938,7 +959,12 @@ $ gawk -f nasty.awk >_nasty.tmp
$ call fixup_LRL nasty.ok
$ call fixup_LRL _nasty.tmp "purge"
$ cmp nasty.ok sys$disk:[]_nasty.tmp
-$ if $status then rm _nasty.tmp;
+$ if $status
+$ then
+$ rm _nasty.tmp;
+$ file = "lcl_root:[]nasty.ok"
+$ if f$search(file) .nes. "" then rm 'file';*
+$ endif
$ set On
$ return
$
@@ -948,7 +974,12 @@ $ gawk -f nasty2.awk >_nasty2.tmp
$ call fixup_LRL nasty2.ok
$ call fixup_LRL _nasty2.tmp "purge"
$ cmp nasty2.ok sys$disk:[]_nasty2.tmp
-$ if $status then rm _nasty2.tmp;
+$ if $status
+$ then
+$ rm _nasty2.tmp;
+$ file = "lcl_root:[]nasty2.ok"
+$ if f$search(file) .nes. "" then rm 'file';*
+$ endif
$ set On
$ return
$
@@ -968,7 +999,7 @@ $subslash:
$ echo "''test'"
$ set noOn
$ gawk -f 'test'.awk >_'test'.tmp 2>&1
-$ if .not.$status then call exit_code 2 _'test'.tmp
+$ if .not. $status then call exit_code '$status' _'test'.tmp
$ set On
$ cmp 'test'.ok sys$disk:[]_'test'.tmp
$ if $status then rm _'test'.tmp;
@@ -1077,7 +1108,7 @@ $lintwarn: echo "lintwarn"
$ set noOn
$ AWKPATH_srcdir
$ gawk --lint -f lintwarn.awk >_lintwarn.tmp 2>&1
-$ if .not.$status then call exit_code 1 _lintwarn.tmp
+$ if .not. $status then call exit_code '$status' _lintwarn.tmp
$ set On
$ cmp lintwarn.ok sys$disk:[]_lintwarn.tmp
$ if $status then rm _lintwarn.tmp;
@@ -1120,7 +1151,7 @@ $sclifin:
$ echo "''test'"
$ set noOn
$ gawk -f 'test'.awk 'test'.in >_'test'.tmp 2>&1
-$ if .not.$status then call exit_code 2 _'test'.tmp
+$ if .not. $status then call exit_code '$status' _'test'.tmp
$ set On
$ cmp 'test'.ok sys$disk:[]_'test'.tmp
$ if $status then rm _'test'.tmp;
@@ -1132,7 +1163,7 @@ $ !
$ echo "''test'"
$ set noOn
$ gawk -f 'test'.awk <'test'.in >_'test'.tmp 2>&1
-$ if .not.$status then call exit_code 2 _'test'.tmp
+$ if .not. $status then call exit_code '$status' _'test'.tmp
$ set On
$ cmp 'test'.ok sys$disk:[]_'test'.tmp
$ if $status then rm _'test'.tmp;
@@ -1157,7 +1188,7 @@ $unterm:
$ echo "''test'"
$ set noOn
$ gawk -f 'test'.awk 'test'.in >_'test'.tmp 2>&1
-$ if .not.$status then call exit_code 1 _'test'.tmp
+$ if .not. $status then call exit_code '$status' _'test'.tmp
$ set On
$ cmp 'test'.ok sys$disk:[]_'test'.tmp
$ if $status then rm _'test'.tmp;
@@ -1217,7 +1248,7 @@ $synerr2:
$ echo "''test'"
$ set noOn
$ gawk -f 'test'.awk >_'test'.tmp 2>&1
-$ if .not.$status then call exit_code 1 _'test'.tmp
+$ if .not. $status then call exit_code '$status' _'test'.tmp
$ set On
$ cmp 'test'.ok sys$disk:[]_'test'.tmp
$ if $status then rm _'test'.tmp;
@@ -1237,7 +1268,7 @@ $
$space: echo "space"
$ set noOn
$ gawk -f " " space.awk >_space.tmp 2>&1
-$ if .not.$status then call exit_code 2 _space.tmp
+$ if .not. $status then call exit_code '$status' _space.tmp
$ set On
$! we get a different error from what space.ok expects
$ gawk "{gsub(""file specification syntax error"", ""no such file or directory""); print}" -
@@ -1320,7 +1351,7 @@ $
$! This test is somewhat suspect for vms due to exit code manipulation
$exitval1: echo "exitval1"
$ gawk -f exitval1.awk >_exitval1.tmp 2>&1
-$ if $status then call exit_code 0 _exitval1.tmp
+$ if $status then call exit_code '$status' _exitval1.tmp
$ cmp exitval1.ok sys$disk:[]_exitval1.tmp
$ if $status then rm _exitval1.tmp;
$ return
@@ -1424,7 +1455,7 @@ $! nofile.ok expects no/such/file, but using that name in the test would
$! yield "file specification syntax error" instead of "no such file..."
$ set noOn
$ gawk "{}" no-such-file >_nofile.tmp 2>&1
-$ if .not.$status then call exit_code 2 _nofile.tmp
+$ if .not. $status then call exit_code '$status' _nofile.tmp
$ set On
$! restore altered file name
$ gawk "{gsub(""no-such-file"", ""no/such/file""); print}" _nofile.tmp >_nofile.too
@@ -1496,7 +1527,7 @@ $
$mixed1: echo "mixed1"
$ set noOn
$ gawk -f /dev/null --source "BEGIN {return junk}" >_mixed1.tmp 2>&1
-$ if .not.$status then call exit_code 1 _mixed1.tmp
+$ if .not. $status then call exit_code '$status' _mixed1.tmp
$ set On
$ cmp mixed1.ok sys$disk:[]_mixed1.tmp
$ if $status then rm _mixed1.tmp;
@@ -1758,7 +1789,7 @@ World!
$ endif
$ gawk /Commands="BEGIN { print ""World!"" }" _NL: /Output=_vms_cmd.tmp
$ cmp vms_cmd.ok sys$disk:[]_vms_cmd.tmp
-$ if $status then rm _vms_cmd.tmp;
+$ if $status then rm _vms_cmd.tmp;,vms_cmd.ok;*
$ return
$
$vms_io1: echo "vms_io1"
@@ -1771,7 +1802,7 @@ $ gawk -f - >_vms_io1.tmp
# prior to 3.0.4, gawk crashed doing any redirection after closing stdin
BEGIN { print "Hello" >"/dev/stdout" }
$ cmp vms_io1.ok sys$disk:[]_vms_io1.tmp
-$ if $status then rm _vms_io1.tmp;
+$ if $status then rm _vms_io1.tmp;,vms_io1.ok;*
$ return
$
$vms_io2: echo "vms_io2"
@@ -1799,7 +1830,90 @@ $ set On
$ cmp _NL: sys$disk:[]_vms_io2.tmp
$ if $status then rm _vms_io2.tmp;
$ cmp vms_io2.ok sys$disk:[]_vms_io2.vfc
-$ if $status then rm _vms_io2.vfc;*
+$ if $status then rm _vms_io2.vfc;*,vms_io2.ok;*
+$ return
+$!
+$!
+$inplace1:
+$ set process/parse=extended ! ODS-5 only
+$ echo "''test'"
+$ filefunc_file = "[-]gawkapi.o"
+$ open/write awkfile _'test'.awk
+$ write awkfile "@load ""inplace"""
+$! write awkfile "BEGIN {print ""before""}"
+$ write awkfile " {gsub(/foo/, ""bar""); print}"
+$! write awkfile "END {print ""after""}"
+$ close awkfile
+$ copy inplace^.1.in _'test'.1
+$ copy inplace^.2.in _'test'.2
+$ set noOn
+$ AWKLIBPATH_dir
+$ gawk -f _'test'.awk _'test'.1 <inplace.in >_'test'.1.tmp 2>&1
+$ if .not. $status then call exit_code '$status' _'test'.1.tmp
+$ AWKLIBPATH_dir
+$ gawk -f _'test'.awk _'test'.2 <inplace.in >_'test'.2.tmp 2>&1
+$ if .not. $status then call exit_code '$status' _'test'.2.tmp
+$ set On
+$ cmp 'test'.1.ok sys$disk:[]_'test'.1.tmp
+$ if $status then rm _'test'.1.tmp;,_'test'.1;
+$ cmp 'test'.2.ok sys$disk:[]_'test'.2.tmp
+$ if $status then rm _'test'.2.tmp;,_'test'.2;,_'test'.awk;
+$ return
+$!
+$filefuncs:
+$fnmatch:
+$functab4:
+$ordchr:
+$revout:
+$revtwoway:
+$time:
+$ echo "''test'"
+$ filefunc_file = "[-]gawkapi.o"
+$ open/write gapi 'filefunc_file'
+$ close gapi
+$ set noOn
+$ AWKLIBPATH_dir
+$ gawk -f 'test'.awk 'test'.in >_'test'.tmp 2>&1
+$ if .not. $status then call exit_code '$status' _'test'.tmp
+$ set On
+$ cmp 'test'.ok sys$disk:[]_'test'.tmp
+$ if $status then rm _'test'.tmp;
+$ if f$search(filefunc_file) .nes. "" then rm 'filefunc_file';*
+$ return
+$!
+$rwarray:
+$ echo "''test'"
+$ set noOn
+$ AWKLIBPATH_dir
+$ gawk -f 'test'.awk 'test'.in >_'test'.tmp 2>&1
+$ if .not. $status then call exit_code '$status' _'test'.tmp
+$ set On
+$ cmp orig.out new.out
+$ if $status
+$ then
+$ open/append tout _'test'.tmp
+$ write tout "old and new are equal - GOOD"
+$ close tout
+$ endif
+$ cmp 'test'.ok sys$disk:[]_'test'.tmp
+$ if $status then rm _'test'.tmp;,orig.bin;,orig.out;,new.out;
+$ return
+$!
+$readdir:
+$fts:
+$ echo "''test'"
+$ set noOn
+$ AWKLIBPATH_dir
+$ gawk -f 'test'.awk >_'test'.tmp 2>&1
+$ if .not. $status
+$ then
+$ call exit_code '$status' _'test'.tmp
+$ write sys$output _'test'.tmp
+$ else
+$ if f$search("_''test'.tmp") .nes. "" then rm _'test'.tmp;*
+$ if f$search("_''test'.") .nes. "" then rm _'test'.;*
+$ endif
+$ set On
$ return
$
$clean:
@@ -1869,10 +1983,12 @@ $ endsubroutine !fixup_LRL
$
$! add a fake "EXIT CODE" record to the end of the temporary output file
$! to simulate the ``|| echo EXIT CODE $$? >>_$@'' shell script usage
+$! Unix code = vms_code & (255 * 2^3) >> 3
$exit_code: subroutine
+$ unix_status = (p1 .and. %x7f8) / 8
$ if f$trnlnm("FTMP").nes."" then close/noLog ftmp
$ open/Append ftmp 'p2'
-$ write ftmp "EXIT CODE: ",p1
+$ write ftmp "EXIT CODE: ",'unix_status'
$ close ftmp
$ endsubroutine !exit_code
$