aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--ChangeLog38
-rw-r--r--awk.h17
-rw-r--r--builtin.c28
-rw-r--r--configh.in6
-rwxr-xr-xconfigure93
-rw-r--r--configure.ac1
-rw-r--r--debug.c3
-rw-r--r--dfa.c64
-rw-r--r--doc/ChangeLog4
-rw-r--r--doc/gawk.info955
-rw-r--r--doc/gawk.texi3
-rw-r--r--getopt.c2
-rw-r--r--mbsupport.h4
-rw-r--r--missing_d/ChangeLog4
-rw-r--r--missing_d/gawkbool.h40
-rw-r--r--missing_d/snprintf.c4
-rw-r--r--pc/ChangeLog4
-rw-r--r--pc/config.sed24
-rw-r--r--po/it.po232
-rw-r--r--regex.c6
-rw-r--r--replace.c3
-rw-r--r--test/ChangeLog5
-rw-r--r--test/Makefile.am10
-rw-r--r--test/Makefile.in12
-rw-r--r--test/Maketests2
-rw-r--r--test/jarebug.awk1
-rw-r--r--test/jarebug.in4
-rw-r--r--test/jarebug.ok4
-rw-r--r--xalloc.h10
29 files changed, 873 insertions, 710 deletions
diff --git a/ChangeLog b/ChangeLog
index 3529f5d9..6cbada6e 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,41 @@
+2012-05-09 Arnold D. Robbins <arnold@skeeve.com>
+
+ * configure.ac: Added AC_HEADER_STDBOOL
+ * awk.h, dfa.c, regex.c: Reworked to use results
+ of test and include missing_d/gawkbool.h.
+
+2012-05-07 Arnold D. Robbins <arnold@skeeve.com>
+
+ * array.c (prnode): Add casts to void* for %p format.
+ * debug.c (print_instruction): Ditto.
+ * builtin.c: Fix %lf format to be %f everywhere.
+
+ Unrelated:
+
+ * replace.c: Don't include "config.h", awk.h gets it for us.
+
+2012-05-04 Arnold D. Robbins <arnold@skeeve.com>
+
+ * getopt.c [DJGPP]: Change to __DJGPP__.
+ * mbsupport.h [DJGPP]: Change to __DJGPP__.
+
+ Unrelated:
+
+ * awk.h: Workarounds for _TANDEM_SOURCE.
+
+2012-05-01 Arnold D. Robbins <arnold@skeeve.com>
+
+ * dfa.c: Sync with GNU grep. RRI code now there, needed additional
+ change for gawk.
+ * configure.ac: Add check for stdbool.h.
+ * regex.c: Add check for if not have stdbool.h, then define the
+ bool stuff.
+
+2012-04-27 Arnold D. Robbins <arnold@skeeve.com>
+
+ * dfa.c: Sync with GNU grep.
+ * xalloc.h (xmemdup): Added, from grep, for dfa.c. Sigh.
+
2012-04-27 Arnold D. Robbins <arnold@skeeve.com>
Update to autoconf 2.69, automake 1.12.
diff --git a/awk.h b/awk.h
index 44fda9d4..438cca03 100644
--- a/awk.h
+++ b/awk.h
@@ -30,6 +30,15 @@
* any system headers. Otherwise, extreme death, destruction
* and loss of life results.
*/
+#if defined(_TANDEM_SOURCE)
+/*
+ * config.h forces this even on non-tandem systems but it
+ * causes problems elsewhere if used in the check below.
+ * so workaround it. bleah.
+ */
+#define tandem_for_real 1
+#endif
+
#ifdef HAVE_CONFIG_H
#include <config.h>
#endif
@@ -38,7 +47,7 @@
#define _GNU_SOURCE 1 /* enable GNU extensions */
#endif /* _GNU_SOURCE */
-#if defined(_TANDEM_SOURCE) && ! defined(_SCO_DS)
+#if defined(tandem_for_real) && ! defined(_SCO_DS)
#define _XOPEN_SOURCE_EXTENDED 1
#endif
@@ -80,6 +89,12 @@ extern int errno;
#include <stdlib.h>
#endif /* not STDC_HEADERS */
+#ifdef HAVE_STDBOOL_H
+#include <stdbool.h>
+#else
+#include "missing_d/gawkbool.h"
+#endif
+
#include "mbsupport.h" /* defines MBS_SUPPORT */
#if MBS_SUPPORT
diff --git a/builtin.c b/builtin.c
index 9134e024..62d62e7c 100644
--- a/builtin.c
+++ b/builtin.c
@@ -2962,11 +2962,11 @@ do_lshift(int nargs)
shift = force_number(s2)->numbr;
if (do_lint) {
if (val < 0 || shift < 0)
- lintwarn(_("lshift(%lf, %lf): negative values will give strange results"), val, shift);
+ lintwarn(_("lshift(%f, %f): negative values will give strange results"), val, shift);
if (double_to_int(val) != val || double_to_int(shift) != shift)
- lintwarn(_("lshift(%lf, %lf): fractional values will be truncated"), val, shift);
+ lintwarn(_("lshift(%f, %f): fractional values will be truncated"), val, shift);
if (shift >= sizeof(uintmax_t) * CHAR_BIT)
- lintwarn(_("lshift(%lf, %lf): too large shift value will give strange results"), val, shift);
+ lintwarn(_("lshift(%f, %f): too large shift value will give strange results"), val, shift);
}
DEREF(s1);
@@ -2999,11 +2999,11 @@ do_rshift(int nargs)
shift = force_number(s2)->numbr;
if (do_lint) {
if (val < 0 || shift < 0)
- lintwarn(_("rshift(%lf, %lf): negative values will give strange results"), val, shift);
+ lintwarn(_("rshift(%f, %f): negative values will give strange results"), val, shift);
if (double_to_int(val) != val || double_to_int(shift) != shift)
- lintwarn(_("rshift(%lf, %lf): fractional values will be truncated"), val, shift);
+ lintwarn(_("rshift(%f, %f): fractional values will be truncated"), val, shift);
if (shift >= sizeof(uintmax_t) * CHAR_BIT)
- lintwarn(_("rshift(%lf, %lf): too large shift value will give strange results"), val, shift);
+ lintwarn(_("rshift(%f, %f): too large shift value will give strange results"), val, shift);
}
DEREF(s1);
@@ -3036,9 +3036,9 @@ do_and(int nargs)
right = force_number(s2)->numbr;
if (do_lint) {
if (left < 0 || right < 0)
- lintwarn(_("and(%lf, %lf): negative values will give strange results"), left, right);
+ lintwarn(_("and(%f, %f): negative values will give strange results"), left, right);
if (double_to_int(left) != left || double_to_int(right) != right)
- lintwarn(_("and(%lf, %lf): fractional values will be truncated"), left, right);
+ lintwarn(_("and(%f, %f): fractional values will be truncated"), left, right);
}
DEREF(s1);
@@ -3071,9 +3071,9 @@ do_or(int nargs)
right = force_number(s2)->numbr;
if (do_lint) {
if (left < 0 || right < 0)
- lintwarn(_("or(%lf, %lf): negative values will give strange results"), left, right);
+ lintwarn(_("or(%f, %f): negative values will give strange results"), left, right);
if (double_to_int(left) != left || double_to_int(right) != right)
- lintwarn(_("or(%lf, %lf): fractional values will be truncated"), left, right);
+ lintwarn(_("or(%f, %f): fractional values will be truncated"), left, right);
}
DEREF(s1);
@@ -3107,9 +3107,9 @@ do_xor(int nargs)
right = force_number(s2)->numbr;
if (do_lint) {
if (left < 0 || right < 0)
- lintwarn(_("xor(%lf, %lf): negative values will give strange results"), left, right);
+ lintwarn(_("xor(%f, %f): negative values will give strange results"), left, right);
if (double_to_int(left) != left || double_to_int(right) != right)
- lintwarn(_("xor(%lf, %lf): fractional values will be truncated"), left, right);
+ lintwarn(_("xor(%f, %f): fractional values will be truncated"), left, right);
}
DEREF(s1);
@@ -3139,9 +3139,9 @@ do_compl(int nargs)
if (do_lint) {
if (d < 0)
- lintwarn(_("compl(%lf): negative value will give strange results"), d);
+ lintwarn(_("compl(%f): negative value will give strange results"), d);
if (double_to_int(d) != d)
- lintwarn(_("compl(%lf): fractional value will be truncated"), d);
+ lintwarn(_("compl(%f): fractional value will be truncated"), d);
}
uval = (uintmax_t) d;
diff --git a/configh.in b/configh.in
index 145615b3..4a16adf4 100644
--- a/configh.in
+++ b/configh.in
@@ -180,6 +180,9 @@
/* Define to 1 if you have the <stdarg.h> header file. */
#undef HAVE_STDARG_H
+/* Define to 1 if stdbool.h conforms to C99. */
+#undef HAVE_STDBOOL_H
+
/* Define to 1 if you have the <stddef.h> header file. */
#undef HAVE_STDDEF_H
@@ -315,6 +318,9 @@
/* systems should define this type here */
#undef HAVE_WINT_T
+/* Define to 1 if the system has the type `_Bool'. */
+#undef HAVE__BOOL
+
/* disable lint checks */
#undef NO_LINT
diff --git a/configure b/configure
index 08f64b5e..e824ee38 100755
--- a/configure
+++ b/configure
@@ -8148,6 +8148,99 @@ $as_echo "#define STDC_HEADERS 1" >>confdefs.h
fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for stdbool.h that conforms to C99" >&5
+$as_echo_n "checking for stdbool.h that conforms to C99... " >&6; }
+if ${ac_cv_header_stdbool_h+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+
+ #include <stdbool.h>
+ #ifndef bool
+ "error: bool is not defined"
+ #endif
+ #ifndef false
+ "error: false is not defined"
+ #endif
+ #if false
+ "error: false is not 0"
+ #endif
+ #ifndef true
+ "error: true is not defined"
+ #endif
+ #if true != 1
+ "error: true is not 1"
+ #endif
+ #ifndef __bool_true_false_are_defined
+ "error: __bool_true_false_are_defined is not defined"
+ #endif
+
+ struct s { _Bool s: 1; _Bool t; } s;
+
+ char a[true == 1 ? 1 : -1];
+ char b[false == 0 ? 1 : -1];
+ char c[__bool_true_false_are_defined == 1 ? 1 : -1];
+ char d[(bool) 0.5 == true ? 1 : -1];
+ /* See body of main program for 'e'. */
+ char f[(_Bool) 0.0 == false ? 1 : -1];
+ char g[true];
+ char h[sizeof (_Bool)];
+ char i[sizeof s.t];
+ enum { j = false, k = true, l = false * true, m = true * 256 };
+ /* The following fails for
+ HP aC++/ANSI C B3910B A.05.55 [Dec 04 2003]. */
+ _Bool n[m];
+ char o[sizeof n == m * sizeof n[0] ? 1 : -1];
+ char p[-1 - (_Bool) 0 < 0 && -1 - (bool) 0 < 0 ? 1 : -1];
+ /* Catch a bug in an HP-UX C compiler. See
+ http://gcc.gnu.org/ml/gcc-patches/2003-12/msg02303.html
+ http://lists.gnu.org/archive/html/bug-coreutils/2005-11/msg00161.html
+ */
+ _Bool q = true;
+ _Bool *pq = &q;
+
+int
+main ()
+{
+
+ bool e = &s;
+ *pq |= q;
+ *pq |= ! q;
+ /* Refer to every declared value, to avoid compiler optimizations. */
+ return (!a + !b + !c + !d + !e + !f + !g + !h + !i + !!j + !k + !!l
+ + !m + !n + !o + !p + !q + !pq);
+
+ ;
+ return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+ ac_cv_header_stdbool_h=yes
+else
+ ac_cv_header_stdbool_h=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_header_stdbool_h" >&5
+$as_echo "$ac_cv_header_stdbool_h" >&6; }
+ ac_fn_c_check_type "$LINENO" "_Bool" "ac_cv_type__Bool" "$ac_includes_default"
+if test "x$ac_cv_type__Bool" = xyes; then :
+
+cat >>confdefs.h <<_ACEOF
+#define HAVE__BOOL 1
+_ACEOF
+
+
+fi
+
+
+if test $ac_cv_header_stdbool_h = yes; then
+
+$as_echo "#define HAVE_STDBOOL_H 1" >>confdefs.h
+
+fi
+
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for sys/wait.h that is POSIX.1 compatible" >&5
$as_echo_n "checking for sys/wait.h that is POSIX.1 compatible... " >&6; }
if ${ac_cv_header_sys_wait_h+:} false; then :
diff --git a/configure.ac b/configure.ac
index dcf8c4b0..a13572bb 100644
--- a/configure.ac
+++ b/configure.ac
@@ -135,6 +135,7 @@ gt_LC_MESSAGES
dnl checks for header files
AC_HEADER_STDC
+AC_HEADER_STDBOOL
AC_HEADER_SYS_WAIT
AC_HEADER_TIME
AC_CHECK_HEADERS(arpa/inet.h fcntl.h limits.h locale.h libintl.h mcheck.h \
diff --git a/debug.c b/debug.c
index 9f30ff9f..91d95eed 100644
--- a/debug.c
+++ b/debug.c
@@ -3717,7 +3717,8 @@ print_instruction(INSTRUCTION *pc, Func_print print_func, FILE *fp, int in_dump)
if (noffset == 0) {
static char buf[50];
/* offset for 2nd to last lines in a multi-line output */
- noffset = sprintf(buf, "[ :%p] %-20.20s: ", pc, opcode2str(pc->opcode));
+ noffset = sprintf(buf, "[ :%p] %-20.20s: ", (void *) pc,
+ opcode2str(pc->opcode));
}
if (pc->opcode == Op_func) {
diff --git a/dfa.c b/dfa.c
index 21cabc3b..f9355f19 100644
--- a/dfa.c
+++ b/dfa.c
@@ -36,6 +36,12 @@
#if HAVE_SETLOCALE
#include <locale.h>
#endif
+#ifdef HAVE_STDBOOL_H
+#include <stdbool.h>
+#else
+#include "missing_d/gawkbool.h"
+#endif /* HAVE_STDBOOL_H */
+
#define STREQ(a, b) (strcmp (a, b) == 0)
@@ -53,7 +59,7 @@
#include "gettext.h"
#define _(str) gettext (str)
-#include "mbsupport.h" /* defines MBS_SUPPORT to 1 or 0, as appropriate */
+#include "mbsupport.h" /* defines MBS_SUPPORT to 1 or 0, as appropriate */
#if MBS_SUPPORT
/* We can handle multibyte strings. */
#include <wchar.h>
@@ -61,10 +67,6 @@
#endif
#ifdef GAWK
-#define bool int
-#define true (1)
-#define false (0)
-
/* The __pure__ attribute was added in gcc 2.96. */
#if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 96)
# define _GL_ATTRIBUTE_PURE __attribute__ ((__pure__))
@@ -343,7 +345,7 @@ struct mb_char_classes
wchar_t *range_sts; /* Range characters (start of the range). */
wchar_t *range_ends; /* Range characters (end of the range). */
size_t nranges;
- char **equivs; /* Equivalent classes. */
+ char **equivs; /* Equivalence classes. */
size_t nequivs;
char **coll_elems;
size_t ncoll_elems; /* Collating elements. */
@@ -1053,12 +1055,10 @@ parse_bracket_exp (void)
else if (MBS_SUPPORT && (c1 == '=' || c1 == '.'))
{
- char *elem;
- MALLOC (elem, len + 1);
- strncpy (elem, str, len + 1);
+ char *elem = xmemdup (str, len + 1);
if (c1 == '=')
- /* build equivalent class. */
+ /* build equivalence class. */
{
REALLOC_IF_NECESSARY (work_mbc->equivs,
equivs_al, work_mbc->nequivs + 1);
@@ -1136,6 +1136,33 @@ parse_bracket_exp (void)
}
else
{
+#ifndef GAWK
+ /* Defer to the system regex library about the meaning
+ of range expressions. */
+ regex_t re;
+ char pattern[6] = { '[', 0, '-', 0, ']', 0 };
+ char subject[2] = { 0, 0 };
+ c1 = c;
+ if (case_fold)
+ {
+ c1 = tolower (c1);
+ c2 = tolower (c2);
+ }
+
+ pattern[1] = c1;
+ pattern[3] = c2;
+ regcomp (&re, pattern, REG_NOSUB);
+ for (c = 0; c < NOTCHAR; ++c)
+ {
+ if ((case_fold && isupper (c))
+ || (MB_CUR_MAX > 1 && btowc (c) == WEOF))
+ continue;
+ subject[0] = c;
+ if (regexec (&re, subject, 0, NULL, 0) != REG_NOMATCH)
+ setbit_case_fold_c (c, ccl);
+ }
+ regfree (&re);
+#else
c1 = c;
if (case_fold)
{
@@ -1144,6 +1171,7 @@ parse_bracket_exp (void)
}
for (c = c1; c <= c2; c++)
setbit_case_fold_c (c, ccl);
+#endif
}
colon_warning_state |= 8;
@@ -3021,7 +3049,7 @@ match_mb_charset (struct dfa *d, state_num s, position pos, size_t idx)
strncpy (buffer, (char const *) buf_begin + idx, match_len);
buffer[match_len] = '\0';
- /* match with an equivalent class? */
+ /* match with an equivalence class? */
for (i = 0; i < work_mbc->nequivs; i++)
{
op_len = strlen (work_mbc->equivs[i]);
@@ -3051,8 +3079,7 @@ match_mb_charset (struct dfa *d, state_num s, position pos, size_t idx)
/* match with a range? */
for (i = 0; i < work_mbc->nranges; i++)
{
- if (work_mbc->range_sts[i] <= wc &&
- wc <= work_mbc->range_ends[i])
+ if (work_mbc->range_sts[i] <= wc && wc <= work_mbc->range_ends[i])
goto charset_matched;
}
@@ -3151,6 +3178,8 @@ transit_state_consume_1char (struct dfa *d, state_num s,
if (match_lens == NULL && work_mbls != NULL)
free (work_mbls);
+
+ /* FIXME: this return value is always ignored. */
return rs;
}
@@ -3195,7 +3224,7 @@ transit_state (struct dfa *d, state_num s, unsigned char const **pp)
/* We must update the pointer if state transition succeeded. */
if (rs == TRANSIT_STATE_DONE)
- ++ * pp;
+ ++*pp;
free (match_lens);
return s1;
@@ -3408,7 +3437,7 @@ dfaexec (struct dfa *d, char const *begin, char *end,
if ((char *) p <= end && p[-1] == eol)
{
if (count)
- ++ * count;
+ ++*count;
if (d->mb_cur_max > 1)
prepare_wc_buf ((const char *) p, end);
@@ -3669,7 +3698,7 @@ icatalloc (char *old, char const *new)
if (newsize == 0)
return old;
result = xrealloc (old, oldsize + newsize + 1);
- strcpy (result + oldsize, new);
+ memcpy (result + oldsize, new, newsize + 1);
return result;
}
@@ -4062,8 +4091,7 @@ done:
{
MALLOC (dm, 1);
dm->exact = exact;
- MALLOC (dm->must, strlen (result) + 1);
- strcpy (dm->must, result);
+ dm->must = xmemdup (result, strlen (result) + 1);
dm->next = d->musts;
d->musts = dm;
}
diff --git a/doc/ChangeLog b/doc/ChangeLog
index 7ea0c491..240ca756 100644
--- a/doc/ChangeLog
+++ b/doc/ChangeLog
@@ -1,5 +1,9 @@
2012-04-27 Arnold D. Robbins <arnold@skeeve.com>
+ * gawk.texi: Add that -b affects output.
+
+2012-04-27 Arnold D. Robbins <arnold@skeeve.com>
+
* texinfo.tex: Update to latest from automake 1.12.
2012-04-09 Arnold D. Robbins <arnold@skeeve.com>
diff --git a/doc/gawk.info b/doc/gawk.info
index bf279828..daae67b4 100644
--- a/doc/gawk.info
+++ b/doc/gawk.info
@@ -2203,6 +2203,9 @@ The following list describes options mandated by the POSIX standard:
`-b'
`--characters-as-bytes'
Cause `gawk' to treat all input data as single-byte characters.
+ In addition, all output written with `print' or `printf' are
+ treated as single-byte characters.
+
Normally, `gawk' follows the POSIX standard and attempts to process
its input data according to the current locale. This can often
involve converting multibyte characters into wide characters
@@ -25671,78 +25674,78 @@ Index
* - (hyphen), filenames beginning with: Options. (line 59)
* - (hyphen), in bracket expressions: Bracket Expressions. (line 17)
* --assign option: Options. (line 32)
-* --bignum option: Options. (line 182)
-* --c option: Options. (line 78)
+* --bignum option: Options. (line 185)
+* --c option: Options. (line 81)
* --characters-as-bytes option: Options. (line 68)
-* --copyright option: Options. (line 85)
-* --debug option: Options. (line 105)
+* --copyright option: Options. (line 88)
+* --debug option: Options. (line 108)
* --disable-lint configuration option: Additional Configuration Options.
(line 9)
* --disable-nls configuration option: Additional Configuration Options.
(line 24)
* --dump-variables option <1>: Library Names. (line 45)
-* --dump-variables option: Options. (line 90)
-* --exec option: Options. (line 122)
+* --dump-variables option: Options. (line 93)
+* --exec option: Options. (line 125)
* --field-separator option: Options. (line 21)
* --file option: Options. (line 25)
* --gen-pot option <1>: String Extraction. (line 6)
-* --gen-pot option: Options. (line 144)
-* --help option: Options. (line 151)
-* --L option: Options. (line 269)
-* --lint option <1>: Options. (line 163)
+* --gen-pot option: Options. (line 147)
+* --help option: Options. (line 154)
+* --L option: Options. (line 272)
+* --lint option <1>: Options. (line 166)
* --lint option: Command Line. (line 20)
-* --lint-old option: Options. (line 269)
-* --load option: Options. (line 156)
+* --lint-old option: Options. (line 272)
+* --load option: Options. (line 159)
* --non-decimal-data option <1>: Nondecimal Data. (line 6)
-* --non-decimal-data option: Options. (line 188)
+* --non-decimal-data option: Options. (line 191)
* --non-decimal-data option, strtonum() function and: Nondecimal Data.
(line 36)
-* --optimize option: Options. (line 209)
-* --posix option: Options. (line 228)
-* --posix option, --traditional option and: Options. (line 247)
-* --pretty-print option: Options. (line 201)
+* --optimize option: Options. (line 212)
+* --posix option: Options. (line 231)
+* --posix option, --traditional option and: Options. (line 250)
+* --pretty-print option: Options. (line 204)
* --profile option <1>: Profiling. (line 12)
-* --profile option: Options. (line 216)
-* --re-interval option: Options. (line 253)
-* --sandbox option: Options. (line 260)
+* --profile option: Options. (line 219)
+* --re-interval option: Options. (line 256)
+* --sandbox option: Options. (line 263)
* --sandbox option, disabling system() function: I/O Functions.
(line 85)
* --sandbox option, input redirection with getline: Getline. (line 19)
* --sandbox option, output redirection with print, printf: Redirection.
(line 6)
-* --source option: Options. (line 114)
-* --traditional option: Options. (line 78)
-* --traditional option, --posix option and: Options. (line 247)
-* --use-lc-numeric option: Options. (line 196)
-* --version option: Options. (line 274)
+* --source option: Options. (line 117)
+* --traditional option: Options. (line 81)
+* --traditional option, --posix option and: Options. (line 250)
+* --use-lc-numeric option: Options. (line 199)
+* --version option: Options. (line 277)
* --with-whiny-user-strftime configuration option: Additional Configuration Options.
(line 29)
* -b option: Options. (line 68)
-* -C option: Options. (line 85)
-* -D option: Options. (line 105)
-* -d option: Options. (line 90)
-* -E option: Options. (line 122)
-* -e option: Options. (line 114)
+* -C option: Options. (line 88)
+* -D option: Options. (line 108)
+* -d option: Options. (line 93)
+* -E option: Options. (line 125)
+* -e option: Options. (line 117)
* -F option: Command Line Field Separator.
(line 6)
* -f option: Options. (line 25)
* -F option: Options. (line 21)
* -f option: Long. (line 12)
-* -F option, -Ft sets FS to TAB: Options. (line 282)
-* -f option, on command line: Options. (line 287)
-* -g option: Options. (line 144)
-* -h option: Options. (line 151)
-* -l option: Options. (line 156)
-* -M option: Options. (line 182)
-* -N option: Options. (line 196)
-* -n option: Options. (line 188)
-* -O option: Options. (line 209)
-* -o option: Options. (line 201)
-* -P option: Options. (line 228)
-* -p option: Options. (line 216)
-* -r option: Options. (line 253)
-* -S option: Options. (line 260)
-* -V option: Options. (line 274)
+* -F option, -Ft sets FS to TAB: Options. (line 285)
+* -f option, on command line: Options. (line 290)
+* -g option: Options. (line 147)
+* -h option: Options. (line 154)
+* -l option: Options. (line 159)
+* -M option: Options. (line 185)
+* -N option: Options. (line 199)
+* -n option: Options. (line 191)
+* -O option: Options. (line 212)
+* -o option: Options. (line 204)
+* -P option: Options. (line 231)
+* -p option: Options. (line 219)
+* -r option: Options. (line 256)
+* -S option: Options. (line 263)
+* -V option: Options. (line 277)
* -v option: Options. (line 32)
* -v option, variables, assigning: Assignment Options. (line 12)
* -W option: Options. (line 46)
@@ -26000,10 +26003,10 @@ Index
* asterisk (*), *= operator: Assignment Ops. (line 129)
* atan2() function: Numeric Functions. (line 11)
* awf (amazingly workable formatter) program: Glossary. (line 25)
-* awk debugging, enabling: Options. (line 105)
-* awk enabling: Options. (line 201)
+* awk debugging, enabling: Options. (line 108)
+* awk enabling: Options. (line 204)
* awk language, POSIX version: Assignment Ops. (line 136)
-* awk profiling, enabling: Options. (line 216)
+* awk profiling, enabling: Options. (line 219)
* awk programs <1>: Two Rules. (line 6)
* awk programs <2>: Executable Scripts. (line 6)
* awk programs: Getting Started. (line 12)
@@ -26060,7 +26063,7 @@ Index
* AWKPATH environment variable: AWKPATH Variable. (line 6)
* awkprof.out file: Profiling. (line 6)
* awksed.awk program: Simple Sed. (line 25)
-* awkvars.out file: Options. (line 90)
+* awkvars.out file: Options. (line 93)
* b debugger command (alias for break): Breakpoint Control. (line 11)
* backslash (\) <1>: Regexp Operators. (line 18)
* backslash (\) <2>: Quoting. (line 31)
@@ -26227,7 +26230,7 @@ Index
* case sensitivity, regexps and <1>: User-modified. (line 82)
* case sensitivity, regexps and: Case-sensitivity. (line 6)
* case sensitivity, string comparisons and: User-modified. (line 82)
-* CGI, awk scripts for: Options. (line 122)
+* CGI, awk scripts for: Options. (line 125)
* character lists, See bracket expressions: Regexp Operators. (line 55)
* character sets (machine character encodings) <1>: Glossary. (line 141)
* character sets (machine character encodings): Ordinal Functions.
@@ -26313,7 +26316,7 @@ Index
(line 60)
* compatibility mode (gawk), octal numbers: Nondecimal-numbers.
(line 60)
-* compatibility mode (gawk), specifying: Options. (line 78)
+* compatibility mode (gawk), specifying: Options. (line 81)
* compiled programs <1>: Glossary. (line 161)
* compiled programs: Basic High Level. (line 14)
* compiling gawk for Cygwin: Cygwin. (line 6)
@@ -26362,7 +26365,7 @@ Index
* cos() function: Numeric Functions. (line 15)
* counting: Wc Program. (line 6)
* csh utility: Statements/Lines. (line 44)
-* csh utility, POSIXLY_CORRECT environment variable: Options. (line 329)
+* csh utility, POSIXLY_CORRECT environment variable: Options. (line 332)
* csh utility, |& operator, comparison with: Two-way I/O. (line 44)
* ctime() user-defined function: Function Example. (line 72)
* currency symbols, localization: Explaining gettext. (line 103)
@@ -26531,7 +26534,7 @@ Index
(line 67)
* debugging awk programs: Debugger. (line 6)
* debugging gawk, bug reports: Bugs. (line 9)
-* decimal point character, locale specific: Options. (line 244)
+* decimal point character, locale specific: Options. (line 247)
* decrement operators: Increment Ops. (line 35)
* default keyword: Switch Statement. (line 6)
* Deifik, Scott <1>: Bugs. (line 70)
@@ -26826,7 +26829,7 @@ Index
* files, as single records: Records. (line 196)
* files, awk programs in: Long. (line 6)
* files, awkprof.out: Profiling. (line 6)
-* files, awkvars.out: Options. (line 90)
+* files, awkvars.out: Options. (line 93)
* files, closing: I/O Functions. (line 10)
* files, descriptors, See file descriptors: Special FD. (line 6)
* files, group: Group Functions. (line 6)
@@ -26854,7 +26857,7 @@ Index
* files, portable object template: Explaining gettext. (line 30)
* files, portable object, converting to message object files: I18N Example.
(line 62)
-* files, portable object, generating: Options. (line 144)
+* files, portable object, generating: Options. (line 147)
* files, processing, ARGIND variable and: Auto-set. (line 47)
* files, reading: Rewind Function. (line 6)
* files, reading, multiline records: Multiple Line. (line 6)
@@ -26912,7 +26915,7 @@ Index
* FS variable, --field-separator option and: Options. (line 21)
* FS variable, as null string: Single Character Fields.
(line 20)
-* FS variable, as TAB character: Options. (line 240)
+* FS variable, as TAB character: Options. (line 243)
* FS variable, changing value of: Field Separators. (line 34)
* FS variable, running awk programs and: Cut Program. (line 68)
* FS variable, setting from command line: Command Line Field Separator.
@@ -26998,7 +27001,7 @@ Index
(line 139)
* gawk, ERRNO variable in: Getline. (line 19)
* gawk, escape sequences: Escape Sequences. (line 125)
-* gawk, extensions, disabling: Options. (line 228)
+* gawk, extensions, disabling: Options. (line 231)
* gawk, features, adding: Adding Code. (line 6)
* gawk, features, advanced: Advanced Features. (line 6)
* gawk, fflush() function in: I/O Functions. (line 44)
@@ -27063,7 +27066,7 @@ Index
* gawk, TEXTDOMAIN variable in: User-modified. (line 162)
* gawk, timestamps: Time Functions. (line 6)
* gawk, uses for: Preface. (line 36)
-* gawk, versions of, information about, printing: Options. (line 274)
+* gawk, versions of, information about, printing: Options. (line 277)
* gawk, VMS version of: VMS Installation. (line 6)
* gawk, word-boundary operator: GNU Regexp Operators.
(line 63)
@@ -27125,7 +27128,7 @@ Index
* GNU Lesser General Public License: Glossary. (line 397)
* GNU long options <1>: Options. (line 6)
* GNU long options: Command Line. (line 13)
-* GNU long options, printing list of: Options. (line 151)
+* GNU long options, printing list of: Options. (line 154)
* GNU Project <1>: Glossary. (line 319)
* GNU Project: Manual History. (line 11)
* GNU/Linux <1>: Glossary. (line 611)
@@ -27133,7 +27136,7 @@ Index
* GNU/Linux: Manual History. (line 28)
* GPL (General Public License) <1>: Glossary. (line 310)
* GPL (General Public License): Manual History. (line 11)
-* GPL (General Public License), printing: Options. (line 85)
+* GPL (General Public License), printing: Options. (line 88)
* grcat program: Group Functions. (line 16)
* Grigera, Juan: Contributors. (line 58)
* group database, reading: Group Functions. (line 6)
@@ -27156,7 +27159,7 @@ Index
* help debugger command: Miscellaneous Debugger Commands.
(line 68)
* hexadecimal numbers: Nondecimal-numbers. (line 6)
-* hexadecimal values, enabling interpretation of: Options. (line 188)
+* hexadecimal values, enabling interpretation of: Options. (line 191)
* histsort.awk program: History Sorting. (line 25)
* Hughes, Phil: Acknowledgments. (line 43)
* HUP signal: Profiling. (line 203)
@@ -27385,9 +27388,9 @@ Index
* lint checking, array subscripts: Uninitialized Subscripts.
(line 43)
* lint checking, empty programs: Command Line. (line 16)
-* lint checking, issuing warnings: Options. (line 163)
+* lint checking, issuing warnings: Options. (line 166)
* lint checking, POSIXLY_CORRECT environment variable: Options.
- (line 313)
+ (line 316)
* lint checking, undefined functions: Pass By Value/Reference.
(line 88)
* LINT variable: User-modified. (line 98)
@@ -27397,10 +27400,10 @@ Index
* list debugger command: Miscellaneous Debugger Commands.
(line 74)
* loading extension: Loading Extensions. (line 6)
-* loading, library: Options. (line 156)
+* loading, library: Options. (line 159)
* local variables: Variable Scope. (line 6)
* locale categories: Explaining gettext. (line 80)
-* locale decimal point character: Options. (line 244)
+* locale decimal point character: Options. (line 247)
* locale, definition of: Locales. (line 6)
* localization: I18N and L10N. (line 6)
* localization, See internationalization, localization: I18N and L10N.
@@ -27472,7 +27475,7 @@ Index
* networks, programming: TCP/IP Networking. (line 6)
* networks, support for: Special Network. (line 6)
* newlines <1>: Boolean Ops. (line 67)
-* newlines <2>: Options. (line 234)
+* newlines <2>: Options. (line 237)
* newlines: Statements/Lines. (line 6)
* newlines, as field separators: Default Field Splitting.
(line 6)
@@ -27552,7 +27555,7 @@ Index
* oawk utility: Names. (line 17)
* obsolete features: Obsolete. (line 6)
* octal numbers: Nondecimal-numbers. (line 6)
-* octal values, enabling interpretation of: Options. (line 188)
+* octal values, enabling interpretation of: Options. (line 191)
* OFMT variable <1>: User-modified. (line 115)
* OFMT variable <2>: Conversion. (line 55)
* OFMT variable: OFMT. (line 15)
@@ -27605,7 +27608,7 @@ Index
* options, deprecated: Obsolete. (line 6)
* options, long <1>: Options. (line 6)
* options, long: Command Line. (line 13)
-* options, printing list of: Options. (line 151)
+* options, printing list of: Options. (line 154)
* OR bitwise operation: Bitwise Functions. (line 6)
* or Boolean-logic operator: Boolean Ops. (line 6)
* or() function (gawk): Bitwise Functions. (line 48)
@@ -27697,13 +27700,13 @@ Index
* portability, NF variable, decrementing: Changing Fields. (line 115)
* portability, operators: Increment Ops. (line 61)
* portability, operators, not in POSIX awk: Precedence. (line 98)
-* portability, POSIXLY_CORRECT environment variable: Options. (line 334)
+* portability, POSIXLY_CORRECT environment variable: Options. (line 337)
* portability, substr() function: String Functions. (line 512)
* portable object files <1>: Translator i18n. (line 6)
* portable object files: Explaining gettext. (line 36)
* portable object files, converting to message object files: I18N Example.
(line 62)
-* portable object files, generating: Options. (line 144)
+* portable object files, generating: Options. (line 147)
* portable object template files: Explaining gettext. (line 30)
* porting gawk: New Ports. (line 6)
* positional specifiers, printf statement <1>: Printf Ordering.
@@ -27747,11 +27750,11 @@ Index
* POSIX awk, regular expressions and: Regexp Operators. (line 161)
* POSIX awk, timestamps and: Time Functions. (line 6)
* POSIX awk, | I/O operator and: Getline/Pipe. (line 52)
-* POSIX mode: Options. (line 228)
+* POSIX mode: Options. (line 231)
* POSIX, awk and: Preface. (line 23)
* POSIX, gawk extensions not included in: POSIX/GNU. (line 6)
* POSIX, programs, implementing in awk: Clones. (line 6)
-* POSIXLY_CORRECT environment variable: Options. (line 313)
+* POSIXLY_CORRECT environment variable: Options. (line 316)
* PREC variable <1>: Setting Precision. (line 6)
* PREC variable: User-modified. (line 134)
* precedence <1>: Precedence. (line 6)
@@ -27787,7 +27790,7 @@ Index
* printf statement, sprintf() function and: Round Function. (line 6)
* printf statement, syntax of: Basic Printf. (line 6)
* printing: Printing. (line 6)
-* printing, list of options: Options. (line 151)
+* printing, list of options: Options. (line 154)
* printing, mailing labels: Labels Program. (line 6)
* printing, unduplicated lines of text: Uniq Program. (line 6)
* printing, user information: Id Program. (line 6)
@@ -27910,7 +27913,7 @@ Index
(line 59)
* regular expressions, gawk, command-line options: GNU Regexp Operators.
(line 70)
-* regular expressions, interval expressions and: Options. (line 253)
+* regular expressions, interval expressions and: Options. (line 256)
* regular expressions, leftmost longest match: Leftmost Longest.
(line 6)
* regular expressions, operators <1>: Regexp Operators. (line 6)
@@ -27988,7 +27991,7 @@ Index
* rvalues/lvalues: Assignment Ops. (line 32)
* s debugger command (alias for step): Debugger Execution Control.
(line 68)
-* sandbox mode: Options. (line 260)
+* sandbox mode: Options. (line 263)
* scalar values: Basic Data Typing. (line 13)
* Schorr, Andrew: Acknowledgments. (line 60)
* Schreiber, Bert: Acknowledgments. (line 38)
@@ -28084,7 +28087,7 @@ Index
* source code, jawk: Other Versions. (line 97)
* source code, libmawk: Other Versions. (line 105)
* source code, mawk: Other Versions. (line 35)
-* source code, mixing: Options. (line 114)
+* source code, mixing: Options. (line 117)
* source code, pawk: Other Versions. (line 69)
* source code, QSE Awk: Other Versions. (line 109)
* source code, QuikTrim Awk: Other Versions. (line 113)
@@ -28224,7 +28227,7 @@ Index
* trace debugger command: Miscellaneous Debugger Commands.
(line 110)
* translate.awk program: Translate Program. (line 55)
-* troubleshooting, --non-decimal-data option: Options. (line 188)
+* troubleshooting, --non-decimal-data option: Options. (line 191)
* troubleshooting, == operator: Comparison Operators.
(line 37)
* troubleshooting, awk uses FS not IFS: Field Separators. (line 29)
@@ -28256,7 +28259,7 @@ Index
* troubleshooting, substr() function: String Functions. (line 499)
* troubleshooting, system() function: I/O Functions. (line 85)
* troubleshooting, typographical errors, global variables: Options.
- (line 95)
+ (line 98)
* true, logical: Truth Values. (line 6)
* Trueman, David <1>: Contributors. (line 31)
* Trueman, David <2>: Acknowledgments. (line 47)
@@ -28327,7 +28330,7 @@ Index
(line 6)
* variables, getline command into, using: Getline/Variable. (line 6)
* variables, global, for library functions: Library Names. (line 11)
-* variables, global, printing list of: Options. (line 90)
+* variables, global, printing list of: Options. (line 93)
* variables, initializing: Using Variables. (line 20)
* variables, local: Variable Scope. (line 6)
* variables, names of: Arrays. (line 18)
@@ -28357,7 +28360,7 @@ Index
* Wall, Larry <1>: Future Extensions. (line 6)
* Wall, Larry: Array Intro. (line 6)
* Wallin, Anders: Acknowledgments. (line 60)
-* warnings, issuing: Options. (line 163)
+* warnings, issuing: Options. (line 166)
* watch debugger command: Viewing And Changing Data.
(line 67)
* wc utility: Wc Program. (line 6)
@@ -28369,7 +28372,7 @@ Index
* whitespace, as field separators: Default Field Splitting.
(line 6)
* whitespace, functions, calling: Calling Built-in. (line 10)
-* whitespace, newlines as: Options. (line 234)
+* whitespace, newlines as: Options. (line 237)
* Williams, Kent: Contributors. (line 35)
* Woehlke, Matthew: Contributors. (line 79)
* Woods, John: Contributors. (line 28)
@@ -28465,400 +28468,400 @@ Node: When96426
Node: Invoking Gawk98573
Node: Command Line99958
Node: Options100741
-Ref: Options-Footnote-1115098
-Node: Other Arguments115123
-Node: Naming Standard Input117781
-Node: Environment Variables118875
-Node: AWKPATH Variable119319
-Ref: AWKPATH Variable-Footnote-1121916
-Node: Other Environment Variables122176
-Node: Exit Status124668
-Node: Include Files125343
-Node: Obsolete128828
-Node: Undocumented129514
-Node: Regexp129755
-Node: Regexp Usage131144
-Node: Escape Sequences133170
-Node: Regexp Operators138933
-Ref: Regexp Operators-Footnote-1146313
-Ref: Regexp Operators-Footnote-2146460
-Node: Bracket Expressions146558
-Ref: table-char-classes148448
-Node: GNU Regexp Operators150971
-Node: Case-sensitivity154694
-Ref: Case-sensitivity-Footnote-1157662
-Ref: Case-sensitivity-Footnote-2157897
-Node: Leftmost Longest158005
-Node: Computed Regexps159206
-Node: Reading Files162616
-Node: Records164620
-Ref: Records-Footnote-1173294
-Node: Fields173331
-Ref: Fields-Footnote-1176364
-Node: Nonconstant Fields176450
-Node: Changing Fields178652
-Node: Field Separators184633
-Node: Default Field Splitting187262
-Node: Regexp Field Splitting188379
-Node: Single Character Fields191721
-Node: Command Line Field Separator192780
-Node: Field Splitting Summary196221
-Ref: Field Splitting Summary-Footnote-1199413
-Node: Constant Size199514
-Node: Splitting By Content204098
-Ref: Splitting By Content-Footnote-1207824
-Node: Multiple Line207864
-Ref: Multiple Line-Footnote-1213711
-Node: Getline213890
-Node: Plain Getline216106
-Node: Getline/Variable218195
-Node: Getline/File219336
-Node: Getline/Variable/File220658
-Ref: Getline/Variable/File-Footnote-1222257
-Node: Getline/Pipe222344
-Node: Getline/Variable/Pipe224904
-Node: Getline/Coprocess226011
-Node: Getline/Variable/Coprocess227254
-Node: Getline Notes227968
-Node: Getline Summary229910
-Ref: table-getline-variants230253
-Node: Read Timeout231109
-Ref: Read Timeout-Footnote-1234854
-Node: Command line directories234911
-Node: Printing235541
-Node: Print237172
-Node: Print Examples238509
-Node: Output Separators241293
-Node: OFMT243053
-Node: Printf244411
-Node: Basic Printf245317
-Node: Control Letters246856
-Node: Format Modifiers250668
-Node: Printf Examples256677
-Node: Redirection259392
-Node: Special Files266376
-Node: Special FD266909
-Ref: Special FD-Footnote-1270534
-Node: Special Network270608
-Node: Special Caveats271458
-Node: Close Files And Pipes272254
-Ref: Close Files And Pipes-Footnote-1279277
-Ref: Close Files And Pipes-Footnote-2279425
-Node: Expressions279575
-Node: Values280707
-Node: Constants281383
-Node: Scalar Constants282063
-Ref: Scalar Constants-Footnote-1282922
-Node: Nondecimal-numbers283104
-Node: Regexp Constants286163
-Node: Using Constant Regexps286638
-Node: Variables289693
-Node: Using Variables290348
-Node: Assignment Options292072
-Node: Conversion293944
-Ref: table-locale-affects299320
-Ref: Conversion-Footnote-1299944
-Node: All Operators300053
-Node: Arithmetic Ops300683
-Node: Concatenation303188
-Ref: Concatenation-Footnote-1305981
-Node: Assignment Ops306101
-Ref: table-assign-ops311089
-Node: Increment Ops312497
-Node: Truth Values and Conditions315967
-Node: Truth Values317050
-Node: Typing and Comparison318099
-Node: Variable Typing318888
-Ref: Variable Typing-Footnote-1322785
-Node: Comparison Operators322907
-Ref: table-relational-ops323317
-Node: POSIX String Comparison326866
-Ref: POSIX String Comparison-Footnote-1327822
-Node: Boolean Ops327960
-Ref: Boolean Ops-Footnote-1332038
-Node: Conditional Exp332129
-Node: Function Calls333861
-Node: Precedence337455
-Node: Locales341124
-Node: Patterns and Actions342213
-Node: Pattern Overview343267
-Node: Regexp Patterns344936
-Node: Expression Patterns345479
-Node: Ranges349164
-Node: BEGIN/END352130
-Node: Using BEGIN/END352892
-Ref: Using BEGIN/END-Footnote-1355623
-Node: I/O And BEGIN/END355729
-Node: BEGINFILE/ENDFILE358011
-Node: Empty360904
-Node: Using Shell Variables361220
-Node: Action Overview363505
-Node: Statements365862
-Node: If Statement367716
-Node: While Statement369215
-Node: Do Statement371259
-Node: For Statement372415
-Node: Switch Statement375567
-Node: Break Statement377664
-Node: Continue Statement379654
-Node: Next Statement381447
-Node: Nextfile Statement383837
-Node: Exit Statement386382
-Node: Built-in Variables388798
-Node: User-modified389893
-Ref: User-modified-Footnote-1398248
-Node: Auto-set398310
-Ref: Auto-set-Footnote-1408156
-Node: ARGC and ARGV408361
-Node: Arrays412212
-Node: Array Basics413717
-Node: Array Intro414543
-Node: Reference to Elements418861
-Node: Assigning Elements421131
-Node: Array Example421622
-Node: Scanning an Array423354
-Node: Controlling Scanning425668
-Ref: Controlling Scanning-Footnote-1430601
-Node: Delete430917
-Ref: Delete-Footnote-1433352
-Node: Numeric Array Subscripts433409
-Node: Uninitialized Subscripts435592
-Node: Multi-dimensional437220
-Node: Multi-scanning440314
-Node: Arrays of Arrays441905
-Node: Functions446550
-Node: Built-in447372
-Node: Calling Built-in448450
-Node: Numeric Functions450438
-Ref: Numeric Functions-Footnote-1454270
-Ref: Numeric Functions-Footnote-2454627
-Ref: Numeric Functions-Footnote-3454675
-Node: String Functions454944
-Ref: String Functions-Footnote-1478441
-Ref: String Functions-Footnote-2478570
-Ref: String Functions-Footnote-3478818
-Node: Gory Details478905
-Ref: table-sub-escapes480584
-Ref: table-sub-posix-92481938
-Ref: table-sub-proposed483281
-Ref: table-posix-sub484631
-Ref: table-gensub-escapes486177
-Ref: Gory Details-Footnote-1487384
-Ref: Gory Details-Footnote-2487435
-Node: I/O Functions487586
-Ref: I/O Functions-Footnote-1494241
-Node: Time Functions494388
-Ref: Time Functions-Footnote-1505280
-Ref: Time Functions-Footnote-2505348
-Ref: Time Functions-Footnote-3505506
-Ref: Time Functions-Footnote-4505617
-Ref: Time Functions-Footnote-5505729
-Ref: Time Functions-Footnote-6505956
-Node: Bitwise Functions506222
-Ref: table-bitwise-ops506780
-Ref: Bitwise Functions-Footnote-1510940
-Node: Type Functions511124
-Node: I18N Functions511594
-Node: User-defined513221
-Node: Definition Syntax514025
-Ref: Definition Syntax-Footnote-1518935
-Node: Function Example519004
-Node: Function Caveats521598
-Node: Calling A Function522019
-Node: Variable Scope523134
-Node: Pass By Value/Reference525109
-Node: Return Statement528549
-Node: Dynamic Typing531530
-Node: Indirect Calls532265
-Node: Internationalization541950
-Node: I18N and L10N543389
-Node: Explaining gettext544075
-Ref: Explaining gettext-Footnote-1549141
-Ref: Explaining gettext-Footnote-2549325
-Node: Programmer i18n549490
-Node: Translator i18n553690
-Node: String Extraction554483
-Ref: String Extraction-Footnote-1555444
-Node: Printf Ordering555530
-Ref: Printf Ordering-Footnote-1558314
-Node: I18N Portability558378
-Ref: I18N Portability-Footnote-1560827
-Node: I18N Example560890
-Ref: I18N Example-Footnote-1563525
-Node: Gawk I18N563597
-Node: Arbitrary Precision Arithmetic564214
-Ref: Arbitrary Precision Arithmetic-Footnote-1567089
-Node: Floating-point Programming567237
-Node: Floating-point Representation572507
-Node: Floating-point Context573611
-Ref: table-ieee-formats574446
-Node: Rounding Mode575816
-Ref: table-rounding-modes576443
-Ref: Rounding Mode-Footnote-1579566
-Node: Arbitrary Precision Floats579747
-Ref: Arbitrary Precision Floats-Footnote-1581788
-Node: Setting Precision582099
-Node: Setting Rounding Mode584857
-Node: Floating-point Constants585774
-Node: Changing Precision587193
-Ref: Changing Precision-Footnote-1588593
-Node: Exact Arithmetic588766
-Node: Integer Programming591779
-Node: Arbitrary Precision Integers593559
-Ref: Arbitrary Precision Integers-Footnote-1596583
-Node: MPFR and GMP Libraries596729
-Node: Advanced Features597114
-Node: Nondecimal Data598637
-Node: Array Sorting600220
-Node: Controlling Array Traversal600917
-Node: Array Sorting Functions609154
-Ref: Array Sorting Functions-Footnote-1612828
-Ref: Array Sorting Functions-Footnote-2612921
-Node: Two-way I/O613115
-Ref: Two-way I/O-Footnote-1618547
-Node: TCP/IP Networking618617
-Node: Profiling621461
-Node: Library Functions628915
-Ref: Library Functions-Footnote-1631922
-Node: Library Names632093
-Ref: Library Names-Footnote-1635564
-Ref: Library Names-Footnote-2635784
-Node: General Functions635870
-Node: Strtonum Function636823
-Node: Assert Function639753
-Node: Round Function643079
-Node: Cliff Random Function644622
-Node: Ordinal Functions645638
-Ref: Ordinal Functions-Footnote-1648708
-Ref: Ordinal Functions-Footnote-2648960
-Node: Join Function649169
-Ref: Join Function-Footnote-1650940
-Node: Gettimeofday Function651140
-Node: Data File Management654855
-Node: Filetrans Function655487
-Node: Rewind Function659626
-Node: File Checking661013
-Node: Empty Files662107
-Node: Ignoring Assigns664337
-Node: Getopt Function665890
-Ref: Getopt Function-Footnote-1677194
-Node: Passwd Functions677397
-Ref: Passwd Functions-Footnote-1686372
-Node: Group Functions686460
-Node: Walking Arrays694544
-Node: Sample Programs696113
-Node: Running Examples696778
-Node: Clones697506
-Node: Cut Program698730
-Node: Egrep Program708575
-Ref: Egrep Program-Footnote-1716348
-Node: Id Program716458
-Node: Split Program720074
-Ref: Split Program-Footnote-1723593
-Node: Tee Program723721
-Node: Uniq Program726524
-Node: Wc Program733953
-Ref: Wc Program-Footnote-1738219
-Ref: Wc Program-Footnote-2738419
-Node: Miscellaneous Programs738511
-Node: Dupword Program739699
-Node: Alarm Program741730
-Node: Translate Program746479
-Ref: Translate Program-Footnote-1750866
-Ref: Translate Program-Footnote-2751094
-Node: Labels Program751228
-Ref: Labels Program-Footnote-1754599
-Node: Word Sorting754683
-Node: History Sorting758567
-Node: Extract Program760406
-Ref: Extract Program-Footnote-1767889
-Node: Simple Sed768017
-Node: Igawk Program771079
-Ref: Igawk Program-Footnote-1786236
-Ref: Igawk Program-Footnote-2786437
-Node: Anagram Program786575
-Node: Signature Program789643
-Node: Debugger790743
-Node: Debugging791695
-Node: Debugging Concepts792128
-Node: Debugging Terms793984
-Node: Awk Debugging796581
-Node: Sample Debugging Session797473
-Node: Debugger Invocation797993
-Node: Finding The Bug799322
-Node: List of Debugger Commands805810
-Node: Breakpoint Control807144
-Node: Debugger Execution Control810808
-Node: Viewing And Changing Data814168
-Node: Execution Stack817524
-Node: Debugger Info818991
-Node: Miscellaneous Debugger Commands822972
-Node: Readline Support828417
-Node: Limitations829248
-Node: Language History831500
-Node: V7/SVR3.1833012
-Node: SVR4835333
-Node: POSIX836775
-Node: BTL837783
-Node: POSIX/GNU838517
-Node: Common Extensions843668
-Node: Ranges and Locales844775
-Ref: Ranges and Locales-Footnote-1849379
-Node: Contributors849600
-Node: Installation853861
-Node: Gawk Distribution854755
-Node: Getting855239
-Node: Extracting856065
-Node: Distribution contents857757
-Node: Unix Installation862979
-Node: Quick Installation863596
-Node: Additional Configuration Options865558
-Node: Configuration Philosophy867035
-Node: Non-Unix Installation869377
-Node: PC Installation869835
-Node: PC Binary Installation871134
-Node: PC Compiling872982
-Node: PC Testing875926
-Node: PC Using877102
-Node: Cygwin881287
-Node: MSYS882287
-Node: VMS Installation882801
-Node: VMS Compilation883404
-Ref: VMS Compilation-Footnote-1884411
-Node: VMS Installation Details884469
-Node: VMS Running886104
-Node: VMS Old Gawk887711
-Node: Bugs888185
-Node: Other Versions892037
-Node: Notes897352
-Node: Compatibility Mode898044
-Node: Additions898827
-Node: Accessing The Source899639
-Node: Adding Code901064
-Node: New Ports907031
-Node: Dynamic Extensions911144
-Node: Internals912584
-Node: Plugin License921103
-Node: Loading Extensions921741
-Node: Sample Library923551
-Node: Internal File Description924241
-Node: Internal File Ops927956
-Ref: Internal File Ops-Footnote-1932680
-Node: Using Internal File Ops932820
-Node: Future Extensions935197
-Node: Basic Concepts937701
-Node: Basic High Level938458
-Ref: Basic High Level-Footnote-1942493
-Node: Basic Data Typing942678
-Node: Floating Point Issues947203
-Node: String Conversion Precision948286
-Ref: String Conversion Precision-Footnote-1949986
-Node: Unexpected Results950095
-Node: POSIX Floating Point Problems951921
-Ref: POSIX Floating Point Problems-Footnote-1955626
-Node: Glossary955664
-Node: Copying980640
-Node: GNU Free Documentation License1018197
-Node: Index1043334
+Ref: Options-Footnote-1115205
+Node: Other Arguments115230
+Node: Naming Standard Input117888
+Node: Environment Variables118982
+Node: AWKPATH Variable119426
+Ref: AWKPATH Variable-Footnote-1122023
+Node: Other Environment Variables122283
+Node: Exit Status124775
+Node: Include Files125450
+Node: Obsolete128935
+Node: Undocumented129621
+Node: Regexp129862
+Node: Regexp Usage131251
+Node: Escape Sequences133277
+Node: Regexp Operators139040
+Ref: Regexp Operators-Footnote-1146420
+Ref: Regexp Operators-Footnote-2146567
+Node: Bracket Expressions146665
+Ref: table-char-classes148555
+Node: GNU Regexp Operators151078
+Node: Case-sensitivity154801
+Ref: Case-sensitivity-Footnote-1157769
+Ref: Case-sensitivity-Footnote-2158004
+Node: Leftmost Longest158112
+Node: Computed Regexps159313
+Node: Reading Files162723
+Node: Records164727
+Ref: Records-Footnote-1173401
+Node: Fields173438
+Ref: Fields-Footnote-1176471
+Node: Nonconstant Fields176557
+Node: Changing Fields178759
+Node: Field Separators184740
+Node: Default Field Splitting187369
+Node: Regexp Field Splitting188486
+Node: Single Character Fields191828
+Node: Command Line Field Separator192887
+Node: Field Splitting Summary196328
+Ref: Field Splitting Summary-Footnote-1199520
+Node: Constant Size199621
+Node: Splitting By Content204205
+Ref: Splitting By Content-Footnote-1207931
+Node: Multiple Line207971
+Ref: Multiple Line-Footnote-1213818
+Node: Getline213997
+Node: Plain Getline216213
+Node: Getline/Variable218302
+Node: Getline/File219443
+Node: Getline/Variable/File220765
+Ref: Getline/Variable/File-Footnote-1222364
+Node: Getline/Pipe222451
+Node: Getline/Variable/Pipe225011
+Node: Getline/Coprocess226118
+Node: Getline/Variable/Coprocess227361
+Node: Getline Notes228075
+Node: Getline Summary230017
+Ref: table-getline-variants230360
+Node: Read Timeout231216
+Ref: Read Timeout-Footnote-1234961
+Node: Command line directories235018
+Node: Printing235648
+Node: Print237279
+Node: Print Examples238616
+Node: Output Separators241400
+Node: OFMT243160
+Node: Printf244518
+Node: Basic Printf245424
+Node: Control Letters246963
+Node: Format Modifiers250775
+Node: Printf Examples256784
+Node: Redirection259499
+Node: Special Files266483
+Node: Special FD267016
+Ref: Special FD-Footnote-1270641
+Node: Special Network270715
+Node: Special Caveats271565
+Node: Close Files And Pipes272361
+Ref: Close Files And Pipes-Footnote-1279384
+Ref: Close Files And Pipes-Footnote-2279532
+Node: Expressions279682
+Node: Values280814
+Node: Constants281490
+Node: Scalar Constants282170
+Ref: Scalar Constants-Footnote-1283029
+Node: Nondecimal-numbers283211
+Node: Regexp Constants286270
+Node: Using Constant Regexps286745
+Node: Variables289800
+Node: Using Variables290455
+Node: Assignment Options292179
+Node: Conversion294051
+Ref: table-locale-affects299427
+Ref: Conversion-Footnote-1300051
+Node: All Operators300160
+Node: Arithmetic Ops300790
+Node: Concatenation303295
+Ref: Concatenation-Footnote-1306088
+Node: Assignment Ops306208
+Ref: table-assign-ops311196
+Node: Increment Ops312604
+Node: Truth Values and Conditions316074
+Node: Truth Values317157
+Node: Typing and Comparison318206
+Node: Variable Typing318995
+Ref: Variable Typing-Footnote-1322892
+Node: Comparison Operators323014
+Ref: table-relational-ops323424
+Node: POSIX String Comparison326973
+Ref: POSIX String Comparison-Footnote-1327929
+Node: Boolean Ops328067
+Ref: Boolean Ops-Footnote-1332145
+Node: Conditional Exp332236
+Node: Function Calls333968
+Node: Precedence337562
+Node: Locales341231
+Node: Patterns and Actions342320
+Node: Pattern Overview343374
+Node: Regexp Patterns345043
+Node: Expression Patterns345586
+Node: Ranges349271
+Node: BEGIN/END352237
+Node: Using BEGIN/END352999
+Ref: Using BEGIN/END-Footnote-1355730
+Node: I/O And BEGIN/END355836
+Node: BEGINFILE/ENDFILE358118
+Node: Empty361011
+Node: Using Shell Variables361327
+Node: Action Overview363612
+Node: Statements365969
+Node: If Statement367823
+Node: While Statement369322
+Node: Do Statement371366
+Node: For Statement372522
+Node: Switch Statement375674
+Node: Break Statement377771
+Node: Continue Statement379761
+Node: Next Statement381554
+Node: Nextfile Statement383944
+Node: Exit Statement386489
+Node: Built-in Variables388905
+Node: User-modified390000
+Ref: User-modified-Footnote-1398355
+Node: Auto-set398417
+Ref: Auto-set-Footnote-1408263
+Node: ARGC and ARGV408468
+Node: Arrays412319
+Node: Array Basics413824
+Node: Array Intro414650
+Node: Reference to Elements418968
+Node: Assigning Elements421238
+Node: Array Example421729
+Node: Scanning an Array423461
+Node: Controlling Scanning425775
+Ref: Controlling Scanning-Footnote-1430708
+Node: Delete431024
+Ref: Delete-Footnote-1433459
+Node: Numeric Array Subscripts433516
+Node: Uninitialized Subscripts435699
+Node: Multi-dimensional437327
+Node: Multi-scanning440421
+Node: Arrays of Arrays442012
+Node: Functions446657
+Node: Built-in447479
+Node: Calling Built-in448557
+Node: Numeric Functions450545
+Ref: Numeric Functions-Footnote-1454377
+Ref: Numeric Functions-Footnote-2454734
+Ref: Numeric Functions-Footnote-3454782
+Node: String Functions455051
+Ref: String Functions-Footnote-1478548
+Ref: String Functions-Footnote-2478677
+Ref: String Functions-Footnote-3478925
+Node: Gory Details479012
+Ref: table-sub-escapes480691
+Ref: table-sub-posix-92482045
+Ref: table-sub-proposed483388
+Ref: table-posix-sub484738
+Ref: table-gensub-escapes486284
+Ref: Gory Details-Footnote-1487491
+Ref: Gory Details-Footnote-2487542
+Node: I/O Functions487693
+Ref: I/O Functions-Footnote-1494348
+Node: Time Functions494495
+Ref: Time Functions-Footnote-1505387
+Ref: Time Functions-Footnote-2505455
+Ref: Time Functions-Footnote-3505613
+Ref: Time Functions-Footnote-4505724
+Ref: Time Functions-Footnote-5505836
+Ref: Time Functions-Footnote-6506063
+Node: Bitwise Functions506329
+Ref: table-bitwise-ops506887
+Ref: Bitwise Functions-Footnote-1511047
+Node: Type Functions511231
+Node: I18N Functions511701
+Node: User-defined513328
+Node: Definition Syntax514132
+Ref: Definition Syntax-Footnote-1519042
+Node: Function Example519111
+Node: Function Caveats521705
+Node: Calling A Function522126
+Node: Variable Scope523241
+Node: Pass By Value/Reference525216
+Node: Return Statement528656
+Node: Dynamic Typing531637
+Node: Indirect Calls532372
+Node: Internationalization542057
+Node: I18N and L10N543496
+Node: Explaining gettext544182
+Ref: Explaining gettext-Footnote-1549248
+Ref: Explaining gettext-Footnote-2549432
+Node: Programmer i18n549597
+Node: Translator i18n553797
+Node: String Extraction554590
+Ref: String Extraction-Footnote-1555551
+Node: Printf Ordering555637
+Ref: Printf Ordering-Footnote-1558421
+Node: I18N Portability558485
+Ref: I18N Portability-Footnote-1560934
+Node: I18N Example560997
+Ref: I18N Example-Footnote-1563632
+Node: Gawk I18N563704
+Node: Arbitrary Precision Arithmetic564321
+Ref: Arbitrary Precision Arithmetic-Footnote-1567196
+Node: Floating-point Programming567344
+Node: Floating-point Representation572614
+Node: Floating-point Context573718
+Ref: table-ieee-formats574553
+Node: Rounding Mode575923
+Ref: table-rounding-modes576550
+Ref: Rounding Mode-Footnote-1579673
+Node: Arbitrary Precision Floats579854
+Ref: Arbitrary Precision Floats-Footnote-1581895
+Node: Setting Precision582206
+Node: Setting Rounding Mode584964
+Node: Floating-point Constants585881
+Node: Changing Precision587300
+Ref: Changing Precision-Footnote-1588700
+Node: Exact Arithmetic588873
+Node: Integer Programming591886
+Node: Arbitrary Precision Integers593666
+Ref: Arbitrary Precision Integers-Footnote-1596690
+Node: MPFR and GMP Libraries596836
+Node: Advanced Features597221
+Node: Nondecimal Data598744
+Node: Array Sorting600327
+Node: Controlling Array Traversal601024
+Node: Array Sorting Functions609261
+Ref: Array Sorting Functions-Footnote-1612935
+Ref: Array Sorting Functions-Footnote-2613028
+Node: Two-way I/O613222
+Ref: Two-way I/O-Footnote-1618654
+Node: TCP/IP Networking618724
+Node: Profiling621568
+Node: Library Functions629022
+Ref: Library Functions-Footnote-1632029
+Node: Library Names632200
+Ref: Library Names-Footnote-1635671
+Ref: Library Names-Footnote-2635891
+Node: General Functions635977
+Node: Strtonum Function636930
+Node: Assert Function639860
+Node: Round Function643186
+Node: Cliff Random Function644729
+Node: Ordinal Functions645745
+Ref: Ordinal Functions-Footnote-1648815
+Ref: Ordinal Functions-Footnote-2649067
+Node: Join Function649276
+Ref: Join Function-Footnote-1651047
+Node: Gettimeofday Function651247
+Node: Data File Management654962
+Node: Filetrans Function655594
+Node: Rewind Function659733
+Node: File Checking661120
+Node: Empty Files662214
+Node: Ignoring Assigns664444
+Node: Getopt Function665997
+Ref: Getopt Function-Footnote-1677301
+Node: Passwd Functions677504
+Ref: Passwd Functions-Footnote-1686479
+Node: Group Functions686567
+Node: Walking Arrays694651
+Node: Sample Programs696220
+Node: Running Examples696885
+Node: Clones697613
+Node: Cut Program698837
+Node: Egrep Program708682
+Ref: Egrep Program-Footnote-1716455
+Node: Id Program716565
+Node: Split Program720181
+Ref: Split Program-Footnote-1723700
+Node: Tee Program723828
+Node: Uniq Program726631
+Node: Wc Program734060
+Ref: Wc Program-Footnote-1738326
+Ref: Wc Program-Footnote-2738526
+Node: Miscellaneous Programs738618
+Node: Dupword Program739806
+Node: Alarm Program741837
+Node: Translate Program746586
+Ref: Translate Program-Footnote-1750973
+Ref: Translate Program-Footnote-2751201
+Node: Labels Program751335
+Ref: Labels Program-Footnote-1754706
+Node: Word Sorting754790
+Node: History Sorting758674
+Node: Extract Program760513
+Ref: Extract Program-Footnote-1767996
+Node: Simple Sed768124
+Node: Igawk Program771186
+Ref: Igawk Program-Footnote-1786343
+Ref: Igawk Program-Footnote-2786544
+Node: Anagram Program786682
+Node: Signature Program789750
+Node: Debugger790850
+Node: Debugging791802
+Node: Debugging Concepts792235
+Node: Debugging Terms794091
+Node: Awk Debugging796688
+Node: Sample Debugging Session797580
+Node: Debugger Invocation798100
+Node: Finding The Bug799429
+Node: List of Debugger Commands805917
+Node: Breakpoint Control807251
+Node: Debugger Execution Control810915
+Node: Viewing And Changing Data814275
+Node: Execution Stack817631
+Node: Debugger Info819098
+Node: Miscellaneous Debugger Commands823079
+Node: Readline Support828524
+Node: Limitations829355
+Node: Language History831607
+Node: V7/SVR3.1833119
+Node: SVR4835440
+Node: POSIX836882
+Node: BTL837890
+Node: POSIX/GNU838624
+Node: Common Extensions843775
+Node: Ranges and Locales844882
+Ref: Ranges and Locales-Footnote-1849486
+Node: Contributors849707
+Node: Installation853968
+Node: Gawk Distribution854862
+Node: Getting855346
+Node: Extracting856172
+Node: Distribution contents857864
+Node: Unix Installation863086
+Node: Quick Installation863703
+Node: Additional Configuration Options865665
+Node: Configuration Philosophy867142
+Node: Non-Unix Installation869484
+Node: PC Installation869942
+Node: PC Binary Installation871241
+Node: PC Compiling873089
+Node: PC Testing876033
+Node: PC Using877209
+Node: Cygwin881394
+Node: MSYS882394
+Node: VMS Installation882908
+Node: VMS Compilation883511
+Ref: VMS Compilation-Footnote-1884518
+Node: VMS Installation Details884576
+Node: VMS Running886211
+Node: VMS Old Gawk887818
+Node: Bugs888292
+Node: Other Versions892144
+Node: Notes897459
+Node: Compatibility Mode898151
+Node: Additions898934
+Node: Accessing The Source899746
+Node: Adding Code901171
+Node: New Ports907138
+Node: Dynamic Extensions911251
+Node: Internals912691
+Node: Plugin License921210
+Node: Loading Extensions921848
+Node: Sample Library923658
+Node: Internal File Description924348
+Node: Internal File Ops928063
+Ref: Internal File Ops-Footnote-1932787
+Node: Using Internal File Ops932927
+Node: Future Extensions935304
+Node: Basic Concepts937808
+Node: Basic High Level938565
+Ref: Basic High Level-Footnote-1942600
+Node: Basic Data Typing942785
+Node: Floating Point Issues947310
+Node: String Conversion Precision948393
+Ref: String Conversion Precision-Footnote-1950093
+Node: Unexpected Results950202
+Node: POSIX Floating Point Problems952028
+Ref: POSIX Floating Point Problems-Footnote-1955733
+Node: Glossary955771
+Node: Copying980747
+Node: GNU Free Documentation License1018304
+Node: Index1043441

End Tag Table
diff --git a/doc/gawk.texi b/doc/gawk.texi
index 8cd7e38e..22215d93 100644
--- a/doc/gawk.texi
+++ b/doc/gawk.texi
@@ -3078,6 +3078,9 @@ The following list describes @command{gawk}-specific options:
@cindex @code{-b} option
@cindex @code{--characters-as-bytes} option
Cause @command{gawk} to treat all input data as single-byte characters.
+In addition, all output written with @code{print} or @code{printf}
+are treated as single-byte characters.
+
Normally, @command{gawk} follows the POSIX standard and attempts to process
its input data according to the current locale. This can often involve
converting multibyte characters into wide characters (internally), and
diff --git a/getopt.c b/getopt.c
index 58df01a0..d0996d4a 100644
--- a/getopt.c
+++ b/getopt.c
@@ -58,7 +58,7 @@
/* This needs to come after some library #include
to get __GNU_LIBRARY__ defined. */
-#if defined (__GNU_LIBRARY__) || defined (__CYGWIN__) || defined(DJGPP)
+#if defined (__GNU_LIBRARY__) || defined (__CYGWIN__) || defined(__DJGPP__)
/* Don't include stdlib.h for
* non-GNU C libraries
* non-Cygwin
diff --git a/mbsupport.h b/mbsupport.h
index db6788ce..1eb1a444 100644
--- a/mbsupport.h
+++ b/mbsupport.h
@@ -71,7 +71,7 @@
/* All this glop is for dfa.c. Bleah. */
-#ifndef DJGPP
+#ifndef __DJGPP__
#define wchar_t char
#endif
@@ -81,7 +81,7 @@
#define WEOF EOF
#define towupper toupper
#define towlower tolower
-#ifndef DJGPP
+#ifndef __DJGPP__
#define btowc(x) ((int)x)
#endif
#define iswalnum isalnum
diff --git a/missing_d/ChangeLog b/missing_d/ChangeLog
index c6913bc2..ff29a926 100644
--- a/missing_d/ChangeLog
+++ b/missing_d/ChangeLog
@@ -1,3 +1,7 @@
+2012-05-04 Arnold D. Robbins <arnold@skeeve.com>
+
+ * snprintf.c [DJGPP]: Change to __DJGPP__.
+
2012-03-28 Arnold D. Robbins <arnold@skeeve.com>
* 4.0.1: Release tar ball made.
diff --git a/missing_d/gawkbool.h b/missing_d/gawkbool.h
new file mode 100644
index 00000000..c75a5a10
--- /dev/null
+++ b/missing_d/gawkbool.h
@@ -0,0 +1,40 @@
+/*
+ * gawkbool.h -- replacement definitions for bool.
+ */
+
+/*
+ * Copyright (C) 2012 the Free Software Foundation, Inc.
+ *
+ * This file is part of GAWK, the GNU implementation of the
+ * AWK Programming Language.
+ *
+ * GAWK is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * GAWK is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA
+ */
+
+/* This stuff largely taken from the Autoconf doc. */
+
+#ifndef __bool_true_false_are_defined
+# ifndef HAVE__BOOL
+# ifdef __cplusplus
+typedef bool _Bool;
+# else
+# define _Bool signed char
+# endif
+# endif
+# define bool _Bool
+# define false 0
+# define true 1
+# define __bool_true_false_are_defined 1
+#endif
diff --git a/missing_d/snprintf.c b/missing_d/snprintf.c
index 254a8e0b..12e50925 100644
--- a/missing_d/snprintf.c
+++ b/missing_d/snprintf.c
@@ -86,10 +86,10 @@ safe_tmpfile (void)
if ((fd = mkstemp (tmpfilename)) < 0)
return NULL;
-#if ! defined(DJGPP) && ! defined(MSDOS) && ! defined(_MSC_VER) \
+#if ! defined(__DJGPP__) && ! defined(MSDOS) && ! defined(_MSC_VER) \
&& ! defined(_WIN32) && ! defined(__CRTRSXNT__) && ! defined(__EMX__) \
&& ! defined(__MINGW32__) && ! defined(__WIN32__)
- /* If not MS, unlink after opening. */
+ /* If not MS or OS/2, unlink after opening. */
unlink (tmpfilename);
free(tmpfilename);
tmpfilename = NULL;
diff --git a/pc/ChangeLog b/pc/ChangeLog
index 8d340b45..8af4752e 100644
--- a/pc/ChangeLog
+++ b/pc/ChangeLog
@@ -1,3 +1,7 @@
+2012-05-06 Eli Zaretskii <eliz@gnu.org>
+
+ * config.sed: Update DJGPP -> __DJGPP__.
+
2012-04-16 Eli Zaretskii <eliz@gnu.org>
* Makefile.tst (PGAWK): Redefine as "../gawk.exe -p".
diff --git a/pc/config.sed b/pc/config.sed
index 96b2c2d7..5e57e82b 100644
--- a/pc/config.sed
+++ b/pc/config.sed
@@ -29,7 +29,7 @@
s/^#undef GETPGRP_VOID *$/#define GETPGRP_VOID 1/
s/^#undef GETGROUPS_T *$/#define GETGROUPS_T gid_t/
/^#undef GETPGRP_VOID$/c\
-#ifdef DJGPP\
+#ifdef __DJGPP__\
#define GETPGRP_VOID 1\
#endif
s/^#undef HAVE_ALARM *$/#define HAVE_ALARM 1/
@@ -100,7 +100,7 @@ s/^#undef HAVE_MEMCPY *$/#define HAVE_MEMCPY 1/
#endif
s/^#undef HAVE_MEMSET *$/#define HAVE_MEMSET 1/
/^#undef HAVE_MKSTEMP *$/c\
-#ifdef DJGPP\
+#ifdef __DJGPP__\
#define HAVE_MKSTEMP 1\
#endif
s/^#undef HAVE_MKTIME *$/#define HAVE_MKTIME 1/
@@ -160,7 +160,7 @@ s/^#undef HAVE_SYSTEM *$/#define HAVE_SYSTEM 1/
#define HAVE_SYS_STAT_H 1\
#endif
/^#undef HAVE_SYS_TIME_H *$/c\
-#if defined(DJGPP) || defined(__MINGW32__)\
+#if defined(__DJGPP__) || defined(__MINGW32__)\
#define HAVE_SYS_TIME_H 1\
#endif
s/^#undef HAVE_SYS_TYPES_H *$/#define HAVE_SYS_TYPES_H 1/
@@ -175,19 +175,19 @@ s/^#undef HAVE_SYS_TYPES_H *$/#define HAVE_SYS_TYPES_H 1/
s/^#undef HAVE_TZNAME *$/#define HAVE_TZNAME 1/
s/^#undef HAVE_TZSET *$/#define HAVE_TZSET 1/
/^#undef HAVE_UINTMAX_T *$/c\
-#if defined(DJGPP) || defined(__MINGW32__)\
+#if defined(__DJGPP__) || defined(__MINGW32__)\
#define HAVE_UINTMAX_T 1\
-#ifdef DJGPP\
+#ifdef __DJGPP__\
#define uintmax_t unsigned long long\
#endif\
#endif
/^#undef HAVE_UNISTD_H *$/c\
-#if defined(DJGPP) || defined(__MINGW32__)\
+#if defined(__DJGPP__) || defined(__MINGW32__)\
#define HAVE_UNISTD_H 1\
#endif
s/^#undef HAVE_UNSIGNED_LONG_LONG *$/#define HAVE_UNSIGNED_LONG_LONG 1/
/^#undef HAVE_USLEEP *$/c\
-#if defined(DJGPP) || defined(__MINGW32__)\
+#if defined(__DJGPP__) || defined(__MINGW32__)\
#define HAVE_USLEEP 1\
#endif
s/^#undef HAVE_VPRINTF *$/#define HAVE_VPRINTF 1/
@@ -223,7 +223,7 @@ s/^#undef PROTOTYPES *$/#define PROTOTYPES 1/
s/^#undef RETSIGTYPE *$/#define RETSIGTYPE void/
/^#.*RETSIGTYPE /a\
\
-#if defined(DJGPP) || defined(__MINGW32__)\
+#if defined(__DJGPP__) || defined(__MINGW32__)\
#include <limits.h>\
#endif
/^#undef SIZEOF_UNSIGNED_INT *$/c\
@@ -243,15 +243,15 @@ s/^#undef TIME_WITH_SYS_TIME *$/#define TIME_WITH_SYS_TIME 1/
#define inline __inline__\
#endif
/^#undef intmax_t *$/c\
-#ifdef DJGPP\
+#ifdef __DJGPP__\
#define intmax_t long long\
#endif
/^#undef restrict *$/c\
-#ifdef DJGPP\
+#ifdef __DJGPP__\
#define restrict\
#endif
/^#undef uintmax_t *$/c\
-#ifdef DJGPP\
+#ifdef __DJGPP__\
#define uintmax_t unsigned long long\
#endif
@@ -265,7 +265,7 @@ $a\
# define DEFPATH ".;c:/lib/awk;c:/gnu/lib/awk"\
#endif\
\
-#ifndef DJGPP\
+#ifndef __DJGPP__\
#define HAVE_POPEN_H 1\
#endif\
\
diff --git a/po/it.po b/po/it.po
index 799e5917..24b09233 100644
--- a/po/it.po
+++ b/po/it.po
@@ -1,5 +1,5 @@
# Italian messages for GNU Awk
-# Copyright (C) 2002-2011 Free Software Foundation, Inc.
+# Copyright (C) 2002-2012 Free Software Foundation, Inc.
# Antonio Colombo <azc100@gmail.com>.
#
msgid ""
@@ -7,7 +7,7 @@ msgstr ""
"Project-Id-Version: gawk 3.1.81\n"
"Report-Msgid-Bugs-To: arnold@skeeve.com\n"
"POT-Creation-Date: 2012-04-27 10:06+0300\n"
-"PO-Revision-Date: 2011-03-19 16:52+0100\n"
+"PO-Revision-Date: 2012-05-08 16:11+0100\n"
"Last-Translator: Antonio Colombo <azc100@gmail.com>\n"
"Language-Team: Italian <it@li.org>\n"
"Language: it\n"
@@ -52,9 +52,8 @@ msgid "attempt to use scalar `%s[\"%.*s\"]' as an array"
msgstr "tentativo di usare scalare`%s[\"%.*s\"]' come vettore"
#: array.c:784
-#, fuzzy
msgid "adump: first argument not an array"
-msgstr "adump: l'argomento non è un vettore"
+msgstr "adump: il primo argomento non è un vettore"
#: array.c:823
msgid "asort: second argument not an array"
@@ -73,38 +72,32 @@ msgid "asorti: first argument not an array"
msgstr "asorti: il primo argomento non è un vettore"
#: array.c:839
-#, fuzzy
msgid "asort: cannot use a subarray of first arg for second arg"
msgstr ""
-"patsplit: non si può usare lo stesso vettore come secondo e quarto argomento"
+"asort: non permesso un secondo argomento che sia un sottovettore del primo argomento"
#: array.c:840
-#, fuzzy
msgid "asorti: cannot use a subarray of first arg for second arg"
msgstr ""
-"patsplit: non si può usare lo stesso vettore come secondo e quarto argomento"
+"asorti: non permesso un secondo argomento che sia un sottovettore del primo argomento"
#: array.c:845
-#, fuzzy
msgid "asort: cannot use a subarray of second arg for first arg"
msgstr ""
-"split: non si può usare lo stesso vettore come secondo e quarto argomento"
+"asort: non permesso un primo argomento che sia un sottovettore del secondo argomento"
#: array.c:846
-#, fuzzy
msgid "asorti: cannot use a subarray of second arg for first arg"
msgstr ""
-"split: non si può usare lo stesso vettore come secondo e quarto argomento"
+"asorti: non permesso un primo argomento che sia un sottovettore del secondo argomento"
#: array.c:1314
-#, fuzzy, c-format
msgid "`%s' is invalid as a function name"
-msgstr "estensione: manca nome di funzione"
+msgstr "`%s' non è un nome funzione valido"
#: array.c:1318
-#, fuzzy, c-format
msgid "sort comparison function `%s' is not defined"
-msgstr "funzione `%s' non definita"
+msgstr "funzione di confronto del sort `%s' non definita"
#: awkgram.y:223
#, c-format
@@ -422,9 +415,8 @@ msgid "could not open `%s' for writing (%s)"
msgstr "non riesco ad aprire `%s' in scrittura (%s)"
#: awkgram.y:3962
-#, fuzzy
msgid "sending variable list to standard error"
-msgstr "mando profilo a 'standard error'"
+msgstr "mando lista variabili a 'standard error'"
#: awkgram.y:3970
#, c-format
@@ -512,7 +504,7 @@ msgstr "exp: argomento non numerico"
#: builtin.c:143
#, c-format
msgid "exp: argument %g is out of range"
-msgstr "exp: argomento %g non accettabile"
+msgstr "exp: argomento %g fuori dai limiti ammessi"
#: builtin.c:202
#, c-format
@@ -566,98 +558,97 @@ msgstr "log: argomento negativo %g"
#: builtin.c:740 builtin.c:745
msgid "fatal: must use `count$' on all formats or none"
-msgstr ""
+msgstr "fatale: `count$' va usato per ogni 'format' o per nessuno""
#: builtin.c:815
#, c-format
msgid "field width is ignored for `%%' specifier"
-msgstr ""
+msgstr "larghezza campo ignorata per la specifica `%%'"
#: builtin.c:817
#, c-format
msgid "precision is ignored for `%%' specifier"
-msgstr ""
+msgstr "precisione ignorata per la specifica `%%'"
#: builtin.c:819
#, c-format
msgid "field width and precision are ignored for `%%' specifier"
-msgstr ""
+msgstr "larghezza campo e precisone ignorate per la specifica `%%'"
#: builtin.c:870
-#, fuzzy
msgid "fatal: `$' is not permitted in awk formats"
-msgstr "l'operatore `^' non è supportato nel vecchio awk"
+msgstr "fatale: operatore `$' non consentito nei 'format' awk"
#: builtin.c:879
msgid "fatal: arg count with `$' must be > 0"
-msgstr ""
+msgstr "fatale: numero argomenti con `$' dev'essere > 0"
#: builtin.c:883
#, c-format
msgid "fatal: arg count %ld greater than total number of supplied arguments"
-msgstr ""
+msgstr "fatale: numero argomenti %ld > del numero totale argomenti specificati"
#: builtin.c:887
msgid "fatal: `$' not permitted after period in format"
-msgstr ""
+msgstr "fatale: `$' non permesso dopo il punto in un 'format'"
#: builtin.c:903
msgid "fatal: no `$' supplied for positional field width or precision"
-msgstr ""
+msgstr "fatale: manca `$' per i campi posizionali larghezza o precisione"
#: builtin.c:975
msgid "`l' is meaningless in awk formats; ignored"
-msgstr ""
+msgstr "`l' non ha senso nei 'format' awk; ignorato"
#: builtin.c:979
msgid "fatal: `l' is not permitted in POSIX awk formats"
-msgstr ""
+msgstr "fatale: `l' non permesso nei 'format' POSIX awk"
#: builtin.c:992
msgid "`L' is meaningless in awk formats; ignored"
-msgstr ""
+msgstr "`L' non ha senso nei 'format' awk; ignorato"
#: builtin.c:996
msgid "fatal: `L' is not permitted in POSIX awk formats"
-msgstr ""
+msgstr "`L' non ha senso nei 'format' awk; ignorato"
#: builtin.c:1009
msgid "`h' is meaningless in awk formats; ignored"
-msgstr ""
+msgstr "`h' non ha senso nei 'format' awk; ignorato"
#: builtin.c:1013
msgid "fatal: `h' is not permitted in POSIX awk formats"
-msgstr ""
+msgstr "fatale: `h' non permesso nei 'format' POSIX awk"
#: builtin.c:1408
#, c-format
msgid "[s]printf: value %g is out of range for `%%%c' format"
-msgstr ""
+msgstr "[s]printf: valore %g fuori dai limiti ammessi per il 'format' `%%%c'"
#: builtin.c:1506
#, c-format
msgid "ignoring unknown format specifier character `%c': no argument converted"
-msgstr ""
+msgstr "carattere di 'format' sconosciuto `%c' ignorato: nessun argomento convertito"
#: builtin.c:1511
msgid "fatal: not enough arguments to satisfy format string"
-msgstr ""
+msgstr "fatale: argomenti in numero minore di quelli richiesti dalla stringa di 'format'"
#: builtin.c:1513
msgid "^ ran out for this one"
-msgstr ""
+msgstr "^ esauriti a questo punto"
#: builtin.c:1520
msgid "[s]printf: format specifier does not have control letter"
-msgstr ""
+msgstr "[s]printf: specifica di 'format' senza un carattere di controllo"
#: builtin.c:1523
msgid "too many arguments supplied for format string"
-msgstr ""
+msgstr "troppi argomenti specificati per questa stringa di 'format'"
#: builtin.c:1598 builtin.c:1609
msgid "printf: no arguments"
-msgstr "printf: manca argomento"
+msgstr "printf: mancano argomenti"
#: builtin.c:1650
msgid "sqrt: received non-numeric argument"
@@ -726,7 +717,7 @@ msgstr "strftime: il secondo argomento non è numerico"
#: builtin.c:1866
msgid "strftime: second argument less than 0 or too big for time_t"
-msgstr ""
+msgstr "strftime: secondo argomento < 0 o troppo elevato per time_t"
#: builtin.c:1873
msgid "strftime: received non-string first argument"
@@ -1020,23 +1011,20 @@ msgid "`extension' is a gawk extension"
msgstr "`extension' è un'estensione gawk"
#: ext.c:80
-#, fuzzy, c-format
msgid "extension: cannot open library `%s' (%s)\n"
-msgstr "fatale: estensione: non riesco ad aprire `%s' (%s)\n"
+msgstr "estensione: non riesco ad aprire libreria `%s' (%s)\n"
#: ext.c:86
-#, fuzzy, c-format
msgid ""
"extension: library `%s': does not define `plugin_is_GPL_compatible' (%s)\n"
msgstr ""
-"fatale: estensione: libreria `%s': non definisce "
+"estensione: libreria `%s': non definisce "
"`plugin_is_GPL_compatible' (%s)\n"
#: ext.c:90
-#, fuzzy, c-format
msgid "extension: library `%s': cannot call function `%s' (%s)\n"
msgstr ""
-"fatale: estensione: libreria `%s': non riesco a chiamare funzione `%s' (%s)\n"
+"estensione: libreria `%s': non riesco a chiamare funzione `%s' (%s)\n"
#: ext.c:118
msgid "extension: missing function name"
@@ -1099,7 +1087,7 @@ msgstr "Operazione Non Supportata"
#: ext.c:256
msgid "dynamic loading of library not supported"
-msgstr ""
+msgstr "caricamento dinamico di libreria non supportato"
#: field.c:339
msgid "NF set to negative value"
@@ -1118,22 +1106,19 @@ msgid "split: second argument is not an array"
msgstr "split: il secondo argomento non è un vettore"
#: field.c:984
-#, fuzzy
msgid "split: cannot use the same array for second and fourth args"
msgstr ""
-"split: non si può usare lo stesso vettore come secondo e quarto argomento"
+"split: non si può usare un unico vettore come secondo e quarto argomento"
#: field.c:989
-#, fuzzy
msgid "split: cannot use a subarray of second arg for fourth arg"
msgstr ""
-"split: non si può usare lo stesso vettore come secondo e quarto argomento"
+"split: non permesso un quarto argomento che sia un sottovettore del secondo argomento"
#: field.c:992
-#, fuzzy
msgid "split: cannot use a subarray of fourth arg for second arg"
msgstr ""
-"split: non si può usare lo stesso vettore come secondo e quarto argomento"
+"split: non permesso un secondo argomento che sia un sottovettore del quarto argomento"
#: field.c:1021
msgid "split: null string for third arg is a gawk extension"
@@ -1152,22 +1137,19 @@ msgid "patsplit: third argument must be non-null"
msgstr "patsplit: il terzo argomento non può essere nullo"
#: field.c:1076
-#, fuzzy
msgid "patsplit: cannot use the same array for second and fourth args"
msgstr ""
-"patsplit: non si può usare lo stesso vettore come secondo e quarto argomento"
+"patsplit: non si può usare un unico vettore come secondo e quarto argomento"
#: field.c:1081
-#, fuzzy
msgid "patsplit: cannot use a subarray of second arg for fourth arg"
msgstr ""
-"patsplit: non si può usare lo stesso vettore come secondo e quarto argomento"
+"patsplit: non permesso un quarto argomento che sia un sottovettore del secondo argomento"
#: field.c:1084
-#, fuzzy
msgid "patsplit: cannot use a subarray of fourth arg for second arg"
msgstr ""
-"patsplit: non si può usare lo stesso vettore come secondo e quarto argomento"
+"patsplit: non permesso un secondo argomento che sia un sottovettore del quarto argomento"
#: field.c:1122
msgid "`FIELDWIDTHS' is a gawk extension"
@@ -1191,9 +1173,8 @@ msgid "`FPAT' is a gawk extension"
msgstr "`FPAT' è un'estensione gawk"
#: getopt.c:604 getopt.c:633
-#, fuzzy, c-format
msgid "%s: option '%s' is ambiguous; possibilities:"
-msgstr "%s: opzione '%s' ambigua\n"
+msgstr "%s: opzione '%s' ambigua; possibilità:"
#: getopt.c:679 getopt.c:683
#, c-format
@@ -1630,14 +1611,12 @@ msgid "\t-C\t\t\t--copyright\n"
msgstr "\t-C\t\t\t--copyright\n"
#: main.c:778
-#, fuzzy
msgid "\t-d[file]\t\t--dump-variables[=file]\n"
-msgstr "\t-d [file]\t\t--dump-variables[=file]\n"
+msgstr "\t-d[file]\t\t--dump-variables[=file]\n"
#: main.c:779
-#, fuzzy
msgid "\t-D[file]\t\t--debug[=file]\n"
-msgstr "\t-p [file]\t\t--profile[=file]\n"
+msgstr "\t-D[file]\t\t--debug[=file]\n"
#: main.c:780
msgid "\t-e 'program-text'\t--source='program-text'\n"
@@ -1657,7 +1636,7 @@ msgstr "\t-h\t\t\t--help\n"
#: main.c:784
msgid "\t-l library\t\t--load=library\n"
-msgstr ""
+msgstr "\t-l libreria\t\t--load=libreria\n"
#: main.c:785
msgid "\t-L [fatal]\t\t--lint[=fatal]\n"
@@ -1668,27 +1647,24 @@ msgid "\t-n\t\t\t--non-decimal-data\n"
msgstr "\t-n\t\t\t--non-decimal-data\n"
#: main.c:787
-#, fuzzy
msgid "\t-M\t\t\t--bignum\n"
-msgstr "\t-g\t\t\t--gen-pot\n"
+msgstr "\t-M\t\t\t--bignum\n"
#: main.c:788
msgid "\t-N\t\t\t--use-lc-numeric\n"
msgstr "\t-N\t\t\t--use-lc-numeric\n"
#: main.c:789
-#, fuzzy
msgid "\t-o[file]\t\t--pretty-print[=file]\n"
-msgstr "\t-p [file]\t\t--profile[=file]\n"
+msgstr "\t-o[file]\t\t--pretty-print[=file]\n"
#: main.c:790
msgid "\t-O\t\t\t--optimize\n"
msgstr "\t-O\t\t\t--optimize\n"
#: main.c:791
-#, fuzzy
msgid "\t-p[file]\t\t--profile[=file]\n"
-msgstr "\t-p [file]\t\t--profile[=file]\n"
+msgstr "\t-p[file]\t\t--profile[=file]\n"
#: main.c:792
msgid "\t-P\t\t\t--posix\n"
@@ -1733,6 +1709,7 @@ msgstr ""
"\n"
"Per segnalare problemi, vedi nodo `Bugs' in `gawk.info', oppure la\n"
"sezione `Reporting Problems and Bugs' nella versione a stampa.\n"
+"Problemi di traduzione, segnalare ad: azc100@gmail.com.\n"
"\n"
#: main.c:814
@@ -1826,15 +1803,13 @@ 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:1247
-#, fuzzy, c-format
msgid "cannot use gawk builtin `%s' as variable name"
msgstr ""
-"estensione: nome funzione interna gawk `%s' non ammesso come nome funzione"
+"nome funzione interna gawk `%s' non ammesso come nome variabile"
#: main.c:1252
-#, fuzzy, c-format
msgid "cannot use function `%s' as variable name"
-msgstr "non posso usare nome di funzione `%s' come variabile o vettore"
+msgstr "non posso usare nome di funzione `%s' come nome di variabile"
#: main.c:1305
msgid "floating point exception"
@@ -1954,9 +1929,8 @@ msgid "internal error: %s with null vname"
msgstr "errore interno: %s con 'vname' nullo"
#: profile.c:528
-#, fuzzy
msgid "internal error: builtin with null fname"
-msgstr "errore interno: %s con 'vname' nullo"
+msgstr "errore interno: funzione interna con 'fname' nullo"
#: profile.c:943
#, c-format
@@ -1970,7 +1944,7 @@ msgid ""
"\t# Functions, listed alphabetically\n"
msgstr ""
"\n"
-"\t# Funzioni, listate in ordine alfabetico\n"
+"\t# Funzioni, in ordine alfabetico\n"
#: profile.c:1366
#, c-format
@@ -1978,9 +1952,8 @@ msgid "redir2str: unknown redirection type %d"
msgstr "redir2str: tipo di re-direzione non noto %d"
#: re.c:571
-#, fuzzy, c-format
msgid "range of the form `[%c-%c]' is locale dependent"
-msgstr "intervallo nella forma `[%c-%c]' dipende da 'locale'"
+msgstr "intervallo della forma `[%c-%c]' dipende da 'locale'"
#: re.c:598
#, c-format
@@ -2060,94 +2033,3 @@ msgstr ") o \\) non aperta"
msgid "No previous regular expression"
msgstr "Nessuna espressione regolare precedente"
-#~ msgid "attempt to use function `%s' as an array"
-#~ msgstr "tentativo di usare funzione '%s' come vettore"
-
-#~ msgid "reference to uninitialized element `%s[\"%.*s\"]'"
-#~ msgstr "riferimento a elemento non inizializzato `%s[\"%.*s\"]'"
-
-#~ msgid "subscript of array `%s' is null string"
-#~ msgstr "l'indice del vettore '%s' è una stringa nulla"
-
-#~ msgid "%s: empty (null)\n"
-#~ msgstr "%s: vuoto (nullo)\n"
-
-#~ msgid "%s: empty (zero)\n"
-#~ msgstr "%s: vuoto (zero)\n"
-
-#~ msgid "%s: table_size = %d, array_size = %d\n"
-#~ msgstr "%s: dimensione_tabella = %d, dimensione_vettore = %d\n"
-
-#~ msgid "%s: is parameter\n"
-#~ msgstr "%s: è parametro\n"
-
-#~ msgid "%s: array_ref to %s\n"
-#~ msgstr "%s: riferimento_vettoriale a %s\n"
-
-#~ msgid "use of non-array as array"
-#~ msgstr "uso di non-vettore come vettore"
-
-#~ msgid "can't use function name `%s' as variable or array"
-#~ msgstr "non posso usare nome di funzione `%s' come variabile o vettore"
-
-#, fuzzy
-#~ msgid "attempt to use array `%s[\"%.*s\"]' in a scalar context"
-#~ msgstr "tentativo di usare vettore `%s' in un contesto scalare"
-
-#~ msgid "assignment used in conditional context"
-#~ msgstr "assegnamento usato nel contesto di un test condizionale"
-
-#~ msgid "statement has no effect"
-#~ msgstr "istruzione che non fa nulla"
-
-#~ msgid ""
-#~ "for loop: array `%s' changed size from %ld to %ld during loop execution"
-#~ msgstr ""
-#~ "ciclo for: vettore `%s' ha cambiato dimensione da %ld a %ld durante "
-#~ "l'esecuzione del ciclo"
-
-#~ msgid "function called indirectly through `%s' does not exist"
-#~ msgstr "la funzione chiamata indirettamente tramite `%s' non esiste"
-
-#~ msgid "function `%s' not defined"
-#~ msgstr "funzione `%s' non definita"
-
-#~ msgid "non-redirected `getline' invalid inside `%s' rule"
-#~ msgstr "`getline' non-diretta indefinita dentro regola '%s'"
-
-#~ msgid "error reading input file `%s': %s"
-#~ msgstr "errore leggendo file di input `%s': %s"
-
-#~ msgid "`nextfile' cannot be called from a `%s' rule"
-#~ msgstr "`nextfile' non può essere chiamato da una regola `%s'"
-
-#, fuzzy
-#~ msgid "`exit' cannot be called in the current context"
-#~ msgstr "`next' non può essere chiamato da una regola `%s'"
-
-#~ msgid "`next' cannot be called from a `%s' rule"
-#~ msgstr "`next' non può essere chiamato da una regola `%s'"
-
-#~ msgid "Sorry, don't know how to interpret `%s'"
-#~ msgstr "Spiacente, non so come interpretare `%s'"
-
-#~ msgid "\t-R file\t\t\t--command=file\n"
-#~ msgstr "\t-R file\t\t\t--command=file\n"
-
-#~ msgid "could not find groups: %s"
-#~ msgstr "non riesco a trovare gruppi: %s"
-
-#~ msgid "assignment is not allowed to result of builtin function"
-#~ msgstr "assegnamento non permesso al risultato di una funzione interna"
-
-#~ msgid "attempt to use array in a scalar context"
-#~ msgstr "tentativo di usare vettore in un contesto scalare"
-
-#~ msgid "sorted array traversal is a gawk extension"
-#~ msgstr "`sorted array traversal' è un'estensione gawk"
-
-#~ msgid "`PROCINFO[\"sorted_in\"]' value is not recognized"
-#~ msgstr "`PROCINFO[\"sorted_in\"]' valore non riconosciuto"
-
-#~ msgid "out of memory"
-#~ msgstr "memoria esaurita"
diff --git a/regex.c b/regex.c
index 6ca36d3b..3abc7585 100644
--- a/regex.c
+++ b/regex.c
@@ -64,10 +64,8 @@
#include "regex_internal.h"
#include "regex_internal.c"
-#ifdef GAWK
-#define bool int
-#define true (1)
-#define false (0)
+#ifndef HAVE_STDBOOL_H
+#include "missing_d/gawkbool.h"
#endif
#include "regcomp.c"
#include "regexec.c"
diff --git a/replace.c b/replace.c
index d1c05ad6..4259aafa 100644
--- a/replace.c
+++ b/replace.c
@@ -27,8 +27,7 @@
* Do all necessary includes here, so that we don't have to worry about
* overlapping includes in the files in missing.d.
*/
-#include "config.h"
-#include "awk.h"
+#include "awk.h" /* includes config.h for us */
#ifndef HAVE_SYSTEM
diff --git a/test/ChangeLog b/test/ChangeLog
index 4a2c7b2b..e926adf1 100644
--- a/test/ChangeLog
+++ b/test/ChangeLog
@@ -1,3 +1,8 @@
+2012-05-09 Arnold D. Robbins <arnold@skeeve.com>
+
+ * Makefile.am (jarebug): New test.
+ * jarebug.awk, jarebug.in, jarebug.ok: New files.
+
2012-04-01 John Haque <j.eh@mchsi.com>
* Makefile.am (mpfr-test): Add target for manual testing of MPFR
diff --git a/test/Makefile.am b/test/Makefile.am
index 54d48397..4b0bf819 100644
--- a/test/Makefile.am
+++ b/test/Makefile.am
@@ -376,6 +376,9 @@ EXTRA_DIST = \
intprec.ok \
iobug1.awk \
iobug1.ok \
+ jarebug.awk \
+ jarebug.in \
+ jarebug.ok \
lc_num1.awk \
lc_num1.ok \
leaddig.awk \
@@ -806,6 +809,7 @@ BASIC_TESTS = \
getline getline2 getline3 getline4 getlnbuf getnr2tb getnr2tm \
gsubasgn gsubtest gsubtst2 gsubtst3 gsubtst4 gsubtst5 gsubtst6 \
gsubtst7 gsubtst8 \
+ jarebug \
hex hsprint \
inputred intest intprec iobug1 \
leaddig leadnl litoct longsub longwrds \
@@ -1502,6 +1506,12 @@ mpfrbigint:
@$(AWK) -M -f $(srcdir)/$@.awk > _$@ 2>&1
@-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+jarebug::
+ @echo $@
+ @GAWKLOCALE=ja_JP.EUC-JP ; export GAWKLOCALE ; \
+ $(AWK) -f $(srcdir)/$@.awk $(srcdir)/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >> _$@
+ @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+
# Targets generated for other tests:
include Maketests
diff --git a/test/Makefile.in b/test/Makefile.in
index 50dff8b2..8a290cb4 100644
--- a/test/Makefile.in
+++ b/test/Makefile.in
@@ -582,6 +582,9 @@ EXTRA_DIST = \
intprec.ok \
iobug1.awk \
iobug1.ok \
+ jarebug.awk \
+ jarebug.in \
+ jarebug.ok \
lc_num1.awk \
lc_num1.ok \
leaddig.awk \
@@ -1012,6 +1015,7 @@ BASIC_TESTS = \
getline getline2 getline3 getline4 getlnbuf getnr2tb getnr2tm \
gsubasgn gsubtest gsubtst2 gsubtst3 gsubtst4 gsubtst5 gsubtst6 \
gsubtst7 gsubtst8 \
+ jarebug \
hex hsprint \
inputred intest intprec iobug1 \
leaddig leadnl litoct longsub longwrds \
@@ -1879,6 +1883,12 @@ mpfrbigint:
@echo $@
@$(AWK) -M -f $(srcdir)/$@.awk > _$@ 2>&1
@-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+
+jarebug::
+ @echo $@
+ @GAWKLOCALE=ja_JP.EUC-JP ; export GAWKLOCALE ; \
+ $(AWK) -f $(srcdir)/$@.awk $(srcdir)/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >> _$@
+ @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
Gt-dummy:
# file Maketests, generated from Makefile.am by the Gentests program
addcomma:
@@ -2957,7 +2967,7 @@ printfbad1:
@-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
printfbad3:
- @echo printfbad3
+ @echo $@
@AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
@-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
diff --git a/test/Maketests b/test/Maketests
index 96825721..f179ab73 100644
--- a/test/Maketests
+++ b/test/Maketests
@@ -1076,7 +1076,7 @@ printfbad1:
@-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
printfbad3:
- @echo printfbad3
+ @echo $@
@AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
@-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
diff --git a/test/jarebug.awk b/test/jarebug.awk
new file mode 100644
index 00000000..906d1846
--- /dev/null
+++ b/test/jarebug.awk
@@ -0,0 +1 @@
+/.*/ { gsub ("·½", "ERROR"); print; }
diff --git a/test/jarebug.in b/test/jarebug.in
new file mode 100644
index 00000000..6ce66826
--- /dev/null
+++ b/test/jarebug.in
@@ -0,0 +1,4 @@
+aa·ïa¿·½è
+aaa·ïa¿·½è
+aaaa·ïa¿·½è
+aaaaa·ïa¿·½è
diff --git a/test/jarebug.ok b/test/jarebug.ok
new file mode 100644
index 00000000..6ce66826
--- /dev/null
+++ b/test/jarebug.ok
@@ -0,0 +1,4 @@
+aa·ïa¿·½è
+aaa·ïa¿·½è
+aaaa·ïa¿·½è
+aaaaa·ïa¿·½è
diff --git a/xalloc.h b/xalloc.h
index 5810fc55..eb0ef1a0 100644
--- a/xalloc.h
+++ b/xalloc.h
@@ -169,6 +169,16 @@ xalloc_die (void)
r_fatal(_("xalloc: malloc failed: %s"), strerror(errno));
}
+
+/* Clone an object P of size S, with error checking. There's no need
+ for xnmemdup (P, N, S), since xmemdup (P, N * S) works without any
+ need for an arithmetic overflow check. */
+
+void *
+xmemdup (void const *p, size_t s)
+{
+ return memcpy (xmalloc (s), p, s);
+}
#endif
/* Change the size of an allocated block of memory P to an array of N