gawk-diffs
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[gawk-diffs] [SCM] gawk branch, master, updated. gawk-4.1.0-1655-geaec4c


From: Arnold Robbins
Subject: [gawk-diffs] [SCM] gawk branch, master, updated. gawk-4.1.0-1655-geaec4c7
Date: Sun, 14 Feb 2016 21:08:30 +0000

This is an automated email from the git hooks/post-receive script. It was
generated because a ref change was pushed to the repository containing
the project "gawk".

The branch, master has been updated
       via  eaec4c7a7ca63e0123ee8bddba7aef632c5e47ef (commit)
       via  d259a3a82a64490a7e307c8f6c6f2f9fdffb4538 (commit)
       via  7224d3f6b8db04439e8fdf8025b99db321a3f5ea (commit)
      from  d18edce5957afdc3a286cf4ce1ca141a3cdc7be5 (commit)

Those revisions listed above that are new to this repository have
not appeared on any other notification email; so we list those
revisions in full, below.

- Log -----------------------------------------------------------------
http://git.sv.gnu.org/cgit/gawk.git/commit/?id=eaec4c7a7ca63e0123ee8bddba7aef632c5e47ef

commit eaec4c7a7ca63e0123ee8bddba7aef632c5e47ef
Author: Arnold D. Robbins <address@hidden>
Date:   Sun Feb 14 23:08:08 2016 +0200

    Enable C99 compilation. Fix dfa.c.

diff --git a/ChangeLog b/ChangeLog
index 80a878d..83a4914 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -2,6 +2,13 @@
 
        * README, NEWS: Updated to reflect use of Texinfo 6.1.
 
+       Unrelated:
+
+       * configure.ac: Switch to AC_PROG_CC_C99 to enable C99
+       compilation and features.
+       * dfa.c: Sync with GNU grep, go back to C99 style declarations
+       at point of use.
+
 2016-02-05         Arnold D. Robbins     <address@hidden>
 
        Make optimization (constant folding and tail call recursion)
diff --git a/configure b/configure
index af1b8ec..35d2285 100755
--- a/configure
+++ b/configure
@@ -4931,524 +4931,167 @@ else
 $as_echo "no, using $LN_S" >&6; }
 fi
 
-ac_ext=c
-ac_cpp='$CPP $CPPFLAGS'
-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
-if test -n "$ac_tool_prefix"; then
-  # Extract the first word of "${ac_tool_prefix}gcc", so it can be a program 
name with args.
-set dummy ${ac_tool_prefix}gcc; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_prog_CC+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  if test -n "$CC"; then
-  ac_cv_prog_CC="$CC" # Let the user override the test.
-else
-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-    for ac_exec_ext in '' $ac_executable_extensions; do
-  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
-    ac_cv_prog_CC="${ac_tool_prefix}gcc"
-    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" 
>&5
-    break 2
-  fi
-done
-  done
-IFS=$as_save_IFS
-
-fi
-fi
-CC=$ac_cv_prog_CC
-if test -n "$CC"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5
-$as_echo "$CC" >&6; }
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-fi
-
-
-fi
-if test -z "$ac_cv_prog_CC"; then
-  ac_ct_CC=$CC
-  # Extract the first word of "gcc", so it can be a program name with args.
-set dummy gcc; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_prog_ac_ct_CC+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  if test -n "$ac_ct_CC"; then
-  ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test.
-else
-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-    for ac_exec_ext in '' $ac_executable_extensions; do
-  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
-    ac_cv_prog_ac_ct_CC="gcc"
-    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" 
>&5
-    break 2
-  fi
-done
-  done
-IFS=$as_save_IFS
-
-fi
-fi
-ac_ct_CC=$ac_cv_prog_ac_ct_CC
-if test -n "$ac_ct_CC"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CC" >&5
-$as_echo "$ac_ct_CC" >&6; }
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-fi
-
-  if test "x$ac_ct_CC" = x; then
-    CC=""
-  else
-    case $cross_compiling:$ac_tool_warned in
-yes:)
-{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not 
prefixed with host triplet" >&5
-$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" 
>&2;}
-ac_tool_warned=yes ;;
-esac
-    CC=$ac_ct_CC
-  fi
-else
-  CC="$ac_cv_prog_CC"
-fi
-
-if test -z "$CC"; then
-          if test -n "$ac_tool_prefix"; then
-    # Extract the first word of "${ac_tool_prefix}cc", so it can be a program 
name with args.
-set dummy ${ac_tool_prefix}cc; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_prog_CC+:} false; then :
+   { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $CC option to accept 
ISO C99" >&5
+$as_echo_n "checking for $CC option to accept ISO C99... " >&6; }
+if ${ac_cv_prog_cc_c99+:} false; then :
   $as_echo_n "(cached) " >&6
 else
-  if test -n "$CC"; then
-  ac_cv_prog_CC="$CC" # Let the user override the test.
-else
-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-    for ac_exec_ext in '' $ac_executable_extensions; do
-  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
-    ac_cv_prog_CC="${ac_tool_prefix}cc"
-    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" 
>&5
-    break 2
-  fi
-done
-  done
-IFS=$as_save_IFS
-
-fi
-fi
-CC=$ac_cv_prog_CC
-if test -n "$CC"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5
-$as_echo "$CC" >&6; }
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-fi
-
-
-  fi
-fi
-if test -z "$CC"; then
-  # Extract the first word of "cc", so it can be a program name with args.
-set dummy cc; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_prog_CC+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  if test -n "$CC"; then
-  ac_cv_prog_CC="$CC" # Let the user override the test.
-else
-  ac_prog_rejected=no
-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-    for ac_exec_ext in '' $ac_executable_extensions; do
-  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
-    if test "$as_dir/$ac_word$ac_exec_ext" = "/usr/ucb/cc"; then
-       ac_prog_rejected=yes
-       continue
-     fi
-    ac_cv_prog_CC="cc"
-    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" 
>&5
-    break 2
-  fi
-done
-  done
-IFS=$as_save_IFS
-
-if test $ac_prog_rejected = yes; then
-  # We found a bogon in the path, so make sure we never use it.
-  set dummy $ac_cv_prog_CC
-  shift
-  if test $# != 0; then
-    # We chose a different compiler from the bogus one.
-    # However, it has the same basename, so the bogon will be chosen
-    # first if we set CC to just the basename; use the full file name.
-    shift
-    ac_cv_prog_CC="$as_dir/$ac_word${1+' '}$@"
-  fi
-fi
-fi
-fi
-CC=$ac_cv_prog_CC
-if test -n "$CC"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5
-$as_echo "$CC" >&6; }
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-fi
-
-
-fi
-if test -z "$CC"; then
-  if test -n "$ac_tool_prefix"; then
-  for ac_prog in cl.exe
-  do
-    # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a 
program name with args.
-set dummy $ac_tool_prefix$ac_prog; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_prog_CC+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  if test -n "$CC"; then
-  ac_cv_prog_CC="$CC" # Let the user override the test.
-else
-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-    for ac_exec_ext in '' $ac_executable_extensions; do
-  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
-    ac_cv_prog_CC="$ac_tool_prefix$ac_prog"
-    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" 
>&5
-    break 2
-  fi
-done
-  done
-IFS=$as_save_IFS
-
-fi
-fi
-CC=$ac_cv_prog_CC
-if test -n "$CC"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5
-$as_echo "$CC" >&6; }
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-fi
-
-
-    test -n "$CC" && break
-  done
-fi
-if test -z "$CC"; then
-  ac_ct_CC=$CC
-  for ac_prog in cl.exe
-do
-  # Extract the first word of "$ac_prog", so it can be a program name with 
args.
-set dummy $ac_prog; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_prog_ac_ct_CC+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  if test -n "$ac_ct_CC"; then
-  ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test.
-else
-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-    for ac_exec_ext in '' $ac_executable_extensions; do
-  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
-    ac_cv_prog_ac_ct_CC="$ac_prog"
-    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" 
>&5
-    break 2
-  fi
-done
-  done
-IFS=$as_save_IFS
-
-fi
-fi
-ac_ct_CC=$ac_cv_prog_ac_ct_CC
-if test -n "$ac_ct_CC"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CC" >&5
-$as_echo "$ac_ct_CC" >&6; }
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-fi
-
-
-  test -n "$ac_ct_CC" && break
-done
-
-  if test "x$ac_ct_CC" = x; then
-    CC=""
-  else
-    case $cross_compiling:$ac_tool_warned in
-yes:)
-{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not 
prefixed with host triplet" >&5
-$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" 
>&2;}
-ac_tool_warned=yes ;;
-esac
-    CC=$ac_ct_CC
-  fi
-fi
-
-fi
-
-
-test -z "$CC" && { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in 
\`$ac_pwd':" >&5
-$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
-as_fn_error $? "no acceptable C compiler found in \$PATH
-See \`config.log' for more details" "$LINENO" 5; }
-
-# Provide some information about the compiler.
-$as_echo "$as_me:${as_lineno-$LINENO}: checking for C compiler version" >&5
-set X $ac_compile
-ac_compiler=$2
-for ac_option in --version -v -V -qversion; do
-  { { ac_try="$ac_compiler $ac_option >&5"
-case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
-$as_echo "$ac_try_echo"; } >&5
-  (eval "$ac_compiler $ac_option >&5") 2>conftest.err
-  ac_status=$?
-  if test -s conftest.err; then
-    sed '10a\
-... rest of stderr output deleted ...
-         10q' conftest.err >conftest.er1
-    cat conftest.er1 >&5
-  fi
-  rm -f conftest.er1 conftest.err
-  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
-  test $ac_status = 0; }
-done
-
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether we are using the GNU 
C compiler" >&5
-$as_echo_n "checking whether we are using the GNU C compiler... " >&6; }
-if ${ac_cv_c_compiler_gnu+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-
-int
-main ()
-{
-#ifndef __GNUC__
-       choke me
-#endif
-
-  ;
-  return 0;
-}
-_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
-  ac_compiler_gnu=yes
-else
-  ac_compiler_gnu=no
-fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-ac_cv_c_compiler_gnu=$ac_compiler_gnu
-
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_compiler_gnu" >&5
-$as_echo "$ac_cv_c_compiler_gnu" >&6; }
-if test $ac_compiler_gnu = yes; then
-  GCC=yes
-else
-  GCC=
-fi
-ac_test_CFLAGS=${CFLAGS+set}
-ac_save_CFLAGS=$CFLAGS
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CC accepts -g" >&5
-$as_echo_n "checking whether $CC accepts -g... " >&6; }
-if ${ac_cv_prog_cc_g+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  ac_save_c_werror_flag=$ac_c_werror_flag
-   ac_c_werror_flag=yes
-   ac_cv_prog_cc_g=no
-   CFLAGS="-g"
-   cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-
-int
-main ()
-{
-
-  ;
-  return 0;
-}
-_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
-  ac_cv_prog_cc_g=yes
-else
-  CFLAGS=""
-      cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+  ac_cv_prog_cc_c99=no
+ac_save_CC=$CC
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
+#include <stdarg.h>
+#include <stdbool.h>
+#include <stdlib.h>
+#include <wchar.h>
+#include <stdio.h>
 
-int
-main ()
+// Check varargs macros.  These examples are taken from C99 6.10.3.5.
+#define debug(...) fprintf (stderr, __VA_ARGS__)
+#define showlist(...) puts (#__VA_ARGS__)
+#define report(test,...) ((test) ? puts (#test) : printf (__VA_ARGS__))
+static void
+test_varargs_macros (void)
 {
-
-  ;
-  return 0;
+  int x = 1234;
+  int y = 5678;
+  debug ("Flag");
+  debug ("X = %d\n", x);
+  showlist (The first, second, and third items.);
+  report (x>y, "x is %d but y is %d", x, y);
 }
-_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
 
-else
-  ac_c_werror_flag=$ac_save_c_werror_flag
-        CFLAGS="-g"
-        cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
+// Check long long types.
+#define BIG64 18446744073709551615ull
+#define BIG32 4294967295ul
+#define BIG_OK (BIG64 / BIG32 == 4294967297ull && BIG64 % BIG32 == 0)
+#if !BIG_OK
+  your preprocessor is broken;
+#endif
+#if BIG_OK
+#else
+  your preprocessor is broken;
+#endif
+static long long int bignum = -9223372036854775807LL;
+static unsigned long long int ubignum = BIG64;
 
-int
-main ()
+struct incomplete_array
 {
-
-  ;
-  return 0;
-}
-_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
-  ac_cv_prog_cc_g=yes
-fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-   ac_c_werror_flag=$ac_save_c_werror_flag
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_g" >&5
-$as_echo "$ac_cv_prog_cc_g" >&6; }
-if test "$ac_test_CFLAGS" = set; then
-  CFLAGS=$ac_save_CFLAGS
-elif test $ac_cv_prog_cc_g = yes; then
-  if test "$GCC" = yes; then
-    CFLAGS="-g -O2"
-  else
-    CFLAGS="-g"
-  fi
-else
-  if test "$GCC" = yes; then
-    CFLAGS="-O2"
-  else
-    CFLAGS=
-  fi
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $CC option to accept ISO 
C89" >&5
-$as_echo_n "checking for $CC option to accept ISO C89... " >&6; }
-if ${ac_cv_prog_cc_c89+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  ac_cv_prog_cc_c89=no
-ac_save_CC=$CC
-cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-#include <stdarg.h>
-#include <stdio.h>
-struct stat;
-/* Most of the following tests are stolen from RCS 5.7's src/conf.sh.  */
-struct buf { int x; };
-FILE * (*rcsopen) (struct buf *, struct stat *, int);
-static char *e (p, i)
-     char **p;
-     int i;
+  int datasize;
+  double data[];
+};
+
+struct named_init {
+  int number;
+  const wchar_t *name;
+  double average;
+};
+
+typedef const char *ccp;
+
+static inline int
+test_restrict (ccp restrict text)
 {
-  return p[i];
+  // See if C++-style comments work.
+  // Iterate through items via the restricted pointer.
+  // Also check for declarations in for loops.
+  for (unsigned int i = 0; *(text+i) != '\0'; ++i)
+    continue;
+  return 0;
 }
-static char *f (char * (*g) (char **, int), char **p, ...)
+
+// Check varargs and va_copy.
+static void
+test_varargs (const char *format, ...)
 {
-  char *s;
-  va_list v;
-  va_start (v,p);
-  s = g (p, va_arg (v,int));
-  va_end (v);
-  return s;
-}
+  va_list args;
+  va_start (args, format);
+  va_list args_copy;
+  va_copy (args_copy, args);
 
-/* OSF 4.0 Compaq cc is some sort of almost-ANSI by default.  It has
-   function prototypes and stuff, but not '\xHH' hex character constants.
-   These don't provoke an error unfortunately, instead are silently treated
-   as 'x'.  The following induces an error, until -std is added to get
-   proper ANSI mode.  Curiously '\x00'!='x' always comes out true, for an
-   array size at least.  It's necessary to write '\x00'==0 to get something
-   that's true only with -std.  */
-int osf4_cc_array ['\x00' == 0 ? 1 : -1];
+  const char *str;
+  int number;
+  float fnumber;
 
-/* IBM C 6 for AIX is almost-ANSI by default, but it replaces macro parameters
-   inside strings and character constants.  */
-#define FOO(x) 'x'
-int xlc6_cc_array[FOO(a) == 'x' ? 1 : -1];
+  while (*format)
+    {
+      switch (*format++)
+       {
+       case 's': // string
+         str = va_arg (args_copy, const char *);
+         break;
+       case 'd': // int
+         number = va_arg (args_copy, int);
+         break;
+       case 'f': // float
+         fnumber = va_arg (args_copy, double);
+         break;
+       default:
+         break;
+       }
+    }
+  va_end (args_copy);
+  va_end (args);
+}
 
-int test (int i, double x);
-struct s1 {int (*f) (int a);};
-struct s2 {int (*f) (double a);};
-int pairnames (int, char **, FILE *(*)(struct buf *, struct stat *, int), int, 
int);
-int argc;
-char **argv;
 int
 main ()
 {
-return f (e, argv, 0) != argv[0]  ||  f (e, argv, 1) != argv[1];
+
+  // Check bool.
+  _Bool success = false;
+
+  // Check restrict.
+  if (test_restrict ("String literal") == 0)
+    success = true;
+  char *restrict newvar = "Another string";
+
+  // Check varargs.
+  test_varargs ("s, d' f .", "string", 65, 34.234);
+  test_varargs_macros ();
+
+  // Check flexible array members.
+  struct incomplete_array *ia =
+    malloc (sizeof (struct incomplete_array) + (sizeof (double) * 10));
+  ia->datasize = 10;
+  for (int i = 0; i < ia->datasize; ++i)
+    ia->data[i] = i * 1.234;
+
+  // Check named initializers.
+  struct named_init ni = {
+    .number = 34,
+    .name = L"Test wide string",
+    .average = 543.34343,
+  };
+
+  ni.number = 58;
+
+  int dynamic_array[ni.number];
+  dynamic_array[ni.number - 1] = 543;
+
+  // work around unused variable warnings
+  return (!success || bignum == 0LL || ubignum == 0uLL || newvar[0] == 'x'
+         || dynamic_array[ni.number - 1] != 543);
+
   ;
   return 0;
 }
 _ACEOF
-for ac_arg in '' -qlanglvl=extc89 -qlanglvl=ansi -std \
-       -Ae "-Aa -D_HPUX_SOURCE" "-Xc -D__EXTENSIONS__"
+for ac_arg in '' -std=gnu99 -std=c99 -c99 -AC99 -D_STDC_C99= -qlanglvl=extc99
 do
   CC="$ac_save_CC $ac_arg"
   if ac_fn_c_try_compile "$LINENO"; then :
-  ac_cv_prog_cc_c89=$ac_arg
+  ac_cv_prog_cc_c99=$ac_arg
 fi
 rm -f core conftest.err conftest.$ac_objext
-  test "x$ac_cv_prog_cc_c89" != "xno" && break
+  test "x$ac_cv_prog_cc_c99" != "xno" && break
 done
 rm -f conftest.$ac_ext
 CC=$ac_save_CC
 
 fi
 # AC_CACHE_VAL
-case "x$ac_cv_prog_cc_c89" in
+case "x$ac_cv_prog_cc_c99" in
   x)
     { $as_echo "$as_me:${as_lineno-$LINENO}: result: none needed" >&5
 $as_echo "none needed" >&6; } ;;
@@ -5456,204 +5099,12 @@ $as_echo "none needed" >&6; } ;;
     { $as_echo "$as_me:${as_lineno-$LINENO}: result: unsupported" >&5
 $as_echo "unsupported" >&6; } ;;
   *)
-    CC="$CC $ac_cv_prog_cc_c89"
-    { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_c89" >&5
-$as_echo "$ac_cv_prog_cc_c89" >&6; } ;;
+    CC="$CC $ac_cv_prog_cc_c99"
+    { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_c99" >&5
+$as_echo "$ac_cv_prog_cc_c99" >&6; } ;;
 esac
-if test "x$ac_cv_prog_cc_c89" != xno; then :
-
-fi
-
-ac_ext=c
-ac_cpp='$CPP $CPPFLAGS'
-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
-
-ac_ext=c
-ac_cpp='$CPP $CPPFLAGS'
-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
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CC understands -c 
and -o together" >&5
-$as_echo_n "checking whether $CC understands -c and -o together... " >&6; }
-if ${am_cv_prog_cc_c_o+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-
-int
-main ()
-{
-
-  ;
-  return 0;
-}
-_ACEOF
-  # Make sure it works both with $CC and with simple cc.
-  # Following AC_PROG_CC_C_O, we do the test twice because some
-  # compilers refuse to overwrite an existing .o file with -o,
-  # though they will create one.
-  am_cv_prog_cc_c_o=yes
-  for am_i in 1 2; do
-    if { echo "$as_me:$LINENO: $CC -c conftest.$ac_ext -o 
conftest2.$ac_objext" >&5
-   ($CC -c conftest.$ac_ext -o conftest2.$ac_objext) >&5 2>&5
-   ac_status=$?
-   echo "$as_me:$LINENO: \$? = $ac_status" >&5
-   (exit $ac_status); } \
-         && test -f conftest2.$ac_objext; then
-      : OK
-    else
-      am_cv_prog_cc_c_o=no
-      break
-    fi
-  done
-  rm -f core conftest*
-  unset am_i
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_prog_cc_c_o" >&5
-$as_echo "$am_cv_prog_cc_c_o" >&6; }
-if test "$am_cv_prog_cc_c_o" != yes; then
-   # Losing compiler, so override with the script.
-   # FIXME: It is wrong to rewrite CC.
-   # But if we don't then we get into trouble of one sort or another.
-   # A longer-term fix would be to have automake use am__CC in this case,
-   # and then we could set am__CC="\$(top_srcdir)/compile \$(CC)"
-   CC="$am_aux_dir/compile $CC"
-fi
-ac_ext=c
-ac_cpp='$CPP $CPPFLAGS'
-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
-
-
-depcc="$CC"   am_compiler_list=
-
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking dependency style of $depcc" 
>&5
-$as_echo_n "checking dependency style of $depcc... " >&6; }
-if ${am_cv_CC_dependencies_compiler_type+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  if test -z "$AMDEP_TRUE" && test -f "$am_depcomp"; then
-  # We make a subdir and do the tests there.  Otherwise we can end up
-  # making bogus files that we don't know about and never remove.  For
-  # instance it was reported that on HP-UX the gcc test will end up
-  # making a dummy file named 'D' -- because '-MD' means "put the output
-  # in D".
-  rm -rf conftest.dir
-  mkdir conftest.dir
-  # Copy depcomp to subdir because otherwise we won't find it if we're
-  # using a relative directory.
-  cp "$am_depcomp" conftest.dir
-  cd conftest.dir
-  # We will build objects and dependencies in a subdirectory because
-  # it helps to detect inapplicable dependency modes.  For instance
-  # both Tru64's cc and ICC support -MD to output dependencies as a
-  # side effect of compilation, but ICC will put the dependencies in
-  # the current directory while Tru64 will put them in the object
-  # directory.
-  mkdir sub
-
-  am_cv_CC_dependencies_compiler_type=none
-  if test "$am_compiler_list" = ""; then
-     am_compiler_list=`sed -n 's/^#*\([a-zA-Z0-9]*\))$/\1/p' < ./depcomp`
-  fi
-  am__universal=false
-  case " $depcc " in #(
-     *\ -arch\ *\ -arch\ *) am__universal=true ;;
-     esac
-
-  for depmode in $am_compiler_list; do
-    # Setup a source with many dependencies, because some compilers
-    # like to wrap large dependency lists on column 80 (with \), and
-    # we should not choose a depcomp mode which is confused by this.
-    #
-    # We need to recreate these files for each test, as the compiler may
-    # overwrite some of them when testing with obscure command lines.
-    # This happens at least with the AIX C compiler.
-    : > sub/conftest.c
-    for i in 1 2 3 4 5 6; do
-      echo '#include "conftst'$i'.h"' >> sub/conftest.c
-      # Using ": > sub/conftst$i.h" creates only sub/conftst1.h with
-      # Solaris 10 /bin/sh.
-      echo '/* dummy */' > sub/conftst$i.h
-    done
-    echo "${am__include} ${am__quote}sub/conftest.Po${am__quote}" > confmf
-
-    # We check with '-c' and '-o' for the sake of the "dashmstdout"
-    # mode.  It turns out that the SunPro C++ compiler does not properly
-    # handle '-M -o', and we need to detect this.  Also, some Intel
-    # versions had trouble with output in subdirs.
-    am__obj=sub/conftest.${OBJEXT-o}
-    am__minus_obj="-o $am__obj"
-    case $depmode in
-    gcc)
-      # This depmode causes a compiler race in universal mode.
-      test "$am__universal" = false || continue
-      ;;
-    nosideeffect)
-      # After this tag, mechanisms are not by side-effect, so they'll
-      # only be used when explicitly requested.
-      if test "x$enable_dependency_tracking" = xyes; then
-       continue
-      else
-       break
-      fi
-      ;;
-    msvc7 | msvc7msys | msvisualcpp | msvcmsys)
-      # This compiler won't grok '-c -o', but also, the minuso test has
-      # not run yet.  These depmodes are late enough in the game, and
-      # so weak that their functioning should not be impacted.
-      am__obj=conftest.${OBJEXT-o}
-      am__minus_obj=
-      ;;
-    none) break ;;
-    esac
-    if depmode=$depmode \
-       source=sub/conftest.c object=$am__obj \
-       depfile=sub/conftest.Po tmpdepfile=sub/conftest.TPo \
-       $SHELL ./depcomp $depcc -c $am__minus_obj sub/conftest.c \
-         >/dev/null 2>conftest.err &&
-       grep sub/conftst1.h sub/conftest.Po > /dev/null 2>&1 &&
-       grep sub/conftst6.h sub/conftest.Po > /dev/null 2>&1 &&
-       grep $am__obj sub/conftest.Po > /dev/null 2>&1 &&
-       ${MAKE-make} -s -f confmf > /dev/null 2>&1; then
-      # icc doesn't choke on unknown options, it will just issue warnings
-      # or remarks (even with -Werror).  So we grep stderr for any message
-      # that says an option was ignored or not supported.
-      # When given -MP, icc 7.0 and 7.1 complain thusly:
-      #   icc: Command line warning: ignoring option '-M'; no argument required
-      # The diagnosis changed in icc 8.0:
-      #   icc: Command line remark: option '-MP' not supported
-      if (grep 'ignoring option' conftest.err ||
-          grep 'not supported' conftest.err) >/dev/null 2>&1; then :; else
-        am_cv_CC_dependencies_compiler_type=$depmode
-        break
-      fi
-    fi
-  done
-
-  cd ..
-  rm -rf conftest.dir
-else
-  am_cv_CC_dependencies_compiler_type=none
-fi
-
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: 
$am_cv_CC_dependencies_compiler_type" >&5
-$as_echo "$am_cv_CC_dependencies_compiler_type" >&6; }
-CCDEPMODE=depmode=$am_cv_CC_dependencies_compiler_type
+if test "x$ac_cv_prog_cc_c99" != xno; then :
 
- if
-  test "x$enable_dependency_tracking" != xno \
-  && test "$am_cv_CC_dependencies_compiler_type" = gcc3; then
-  am__fastdepCC_TRUE=
-  am__fastdepCC_FALSE='#'
-else
-  am__fastdepCC_TRUE='#'
-  am__fastdepCC_FALSE=
 fi
 
 
@@ -11561,10 +11012,6 @@ if test -z "${am__fastdepCC_TRUE}" && test -z 
"${am__fastdepCC_FALSE}"; then
   as_fn_error $? "conditional \"am__fastdepCC\" was never defined.
 Usually this means the macro was only invoked conditionally." "$LINENO" 5
 fi
-if test -z "${am__fastdepCC_TRUE}" && test -z "${am__fastdepCC_FALSE}"; then
-  as_fn_error $? "conditional \"am__fastdepCC\" was never defined.
-Usually this means the macro was only invoked conditionally." "$LINENO" 5
-fi
 if test -z "${TEST_CROSS_COMPILE_TRUE}" && test -z 
"${TEST_CROSS_COMPILE_FALSE}"; then
   as_fn_error $? "conditional \"TEST_CROSS_COMPILE\" was never defined.
 Usually this means the macro was only invoked conditionally." "$LINENO" 5
diff --git a/configure.ac b/configure.ac
index f57d2a7..dd39de6 100644
--- a/configure.ac
+++ b/configure.ac
@@ -72,7 +72,7 @@ dnl checks for programs
 AC_PROG_EGREP
 AC_PROG_YACC
 AC_PROG_LN_S
-AC_PROG_CC
+AC_PROG_CC_C99
 AC_PROG_CPP
 
 AC_OBJEXT
diff --git a/dfa.c b/dfa.c
index b7ad51e..08f7290 100644
--- a/dfa.c
+++ b/dfa.c
@@ -3508,8 +3508,7 @@ dfainit (struct dfa *d)
 static bool _GL_ATTRIBUTE_PURE
 dfa_supported (struct dfa const *d)
 {
-  size_t i;
-  for (i = 0; i < d->tindex; i++)
+  for (size_t i = 0; i < d->tindex; i++)
     {
       switch (d->tokens[i])
         {
@@ -3964,18 +3963,15 @@ dfamust (struct dfa const *d)
 {
   must *mp = NULL;
   char const *result = "";
-  size_t ri;
   size_t i;
   bool exact = false;
   bool begline = false;
   bool endline = false;
-  size_t rj;
   bool need_begline = false;
   bool need_endline = false;
   bool case_fold_unibyte = case_fold && MB_CUR_MAX == 1;
-  struct dfamust *dm;
 
-  for (ri = 0; ri < d->tindex; ++ri)
+  for (size_t ri = 0; ri < d->tindex; ++ri)
     {
       token t = d->tokens[ri];
       switch (t)
@@ -4150,7 +4146,7 @@ dfamust (struct dfa const *d)
                 }
             }
 
-          rj = ri + 2;
+          size_t rj = ri + 2;
           if (d->tokens[ri + 1] == CAT)
             {
               for (; rj < d->tindex - 1; rj += 2)
@@ -4179,7 +4175,7 @@ dfamust (struct dfa const *d)
     }
  done:;
 
-  dm = NULL;
+  struct dfamust *dm = NULL;
   if (*result)
     {
       dm = xmalloc (sizeof *dm);

http://git.sv.gnu.org/cgit/gawk.git/commit/?id=d259a3a82a64490a7e307c8f6c6f2f9fdffb4538

commit d259a3a82a64490a7e307c8f6c6f2f9fdffb4538
Merge: d18edce 7224d3f
Author: Arnold D. Robbins <address@hidden>
Date:   Sun Feb 14 23:05:22 2016 +0200

    Merge branch 'gawk-4.1-stable'

diff --cc ChangeLog
index b67eabb,57db1c0..80a878d
--- a/ChangeLog
+++ b/ChangeLog
@@@ -1,33 -1,7 +1,37 @@@
+ 2016-02-14         Arnold D. Robbins     <address@hidden>
+ 
+       * README, NEWS: Updated to reflect use of Texinfo 6.1.
+ 
 +2016-02-05         Arnold D. Robbins     <address@hidden>
 +
 +      Make optimization (constant folding and tail call recursion)
 +      be on by default.
 +
 +      * awkgram.y (common_exp): Only do concatenation of two strings(!)
 +      * main.c (do_optimize): Init to true.
 +      (optab): Add new -s/--no-optimize option.
 +      (usage): Update message to include it.
 +      (parse_args): Parse it. Set do_optimize to false if pretty
 +      printing or profiling.
 +      * NEWS: Updated.
 +
 +2016-01-28         Arnold D. Robbins     <address@hidden>
 +
 +      * Makefile.am (SUBDIRS): Include extras. Otherwise dist does
 +      doesn't work.
 +
 +2016-01-27         Arnold D. Robbins     <address@hidden>
 +
 +      * configure.ac (GAWK_AC_AIX_TWEAK): Remove call.
 +      * configure: Regenerated.
 +      * io.c (GAWK_AIX): Check _AIX instead.
 +      * custom.h (_AIX): Add define of _XOPEN_SOURCE_EXTENDED.
 +
 +      Unrelated:
 +
 +      * configure.ac: Remove old stuff for ISC Unix, no longer needed.
 +      * configure: Regenerated.
 +
  2016-01-25         John E. Malmberg      <address@hidden>
  
        * io.c (redirect): Need to call close_one more than once after
diff --cc doc/ChangeLog
index 221bf40,7ecd1b9..035486f
--- a/doc/ChangeLog
+++ b/doc/ChangeLog
@@@ -1,11 -1,11 +1,19 @@@
+ 2016-02-14         Arnold D. Robbins     <address@hidden>
+ 
+       * gawktexi.in: Revise for use with Texinfo 6.1.
+       Remove ` @c' at the end of inline docbook constructs.
+       Remove special @DB*REF macros, not needed anymore.
+       Use @sup for superscripts where possible.
+       * texinfo.tex: Updated.
+ 
 +2016-02-05         Arnold D. Robbins     <address@hidden>
 +
 +      * gawk.texi: Document that optimization in now the default,
 +      there are new -s/--no-optimize options and that
 +      pretty-printing and profiling disable optimization.
 +      * gawk.1: Ditto.
 +      * awkcard.in: Ditto.
 +
  2016-02-03         Andrew J. Schorr     <address@hidden>
  
        * gawktexi.in (Command-Line Options): Change wording of -M description
diff --cc doc/gawk.info
index 16c76d2,f66dacb..2eb590d
--- a/doc/gawk.info
+++ b/doc/gawk.info
@@@ -2666,10 -2658,13 +2666,10 @@@ The following list describes options ma
  '--posix'
       Operate in strict POSIX mode.  This disables all 'gawk' extensions
       (just like '--traditional') and disables all extensions not allowed
-      by POSIX. *Note Common Extensions::, for a summary of the
-      extensions in 'gawk' that are disabled by this option.  Also, the
-      following additional restrictions apply:
+      by POSIX. *Note Common Extensions:: for a summary of the extensions
+      in 'gawk' that are disabled by this option.  Also, the following
+      additional restrictions apply:
  
 -        * Newlines do not act as whitespace to separate fields when 'FS'
 -          is equal to a single space (*note Fields::).
 -
          * Newlines are not allowed after '?' or ':' (*note Conditional
            Exp::).
  
@@@ -5508,11 -5428,6 +5508,11 @@@ record, such as a file that cannot be o
  In this case, 'gawk' sets the variable 'ERRNO' to a string describing
  the error that occurred.
  
 +   If 'ERRNO' indicates that the I/O operation may be retried, and
 +'PROCINFO["INPUT", "RETRY"]' is set, then 'getline' returns -2 instead
 +of -1, and further calls to 'getline' may be attemped.  *Note Retrying
- Input::, for further information about this feature.
++Input:: for further information about this feature.
 +
     In the following examples, COMMAND stands for a string value that
  represents a shell command.
  
@@@ -6027,8 -5942,7 +6027,8 @@@ per-command or per-connection basis
     'gawk' considers a timeout event to be an error even though the
  attempt to read from the underlying device may succeed in a later
  attempt.  This is a limitation, and it also means that you cannot use
 -this to multiplex input from two or more sources.
 +this to multiplex input from two or more sources.  *Note Retrying
- Input::, for a way to enable later I/O attempts to succeed.
++Input:: for a way to enable later I/O attempts to succeed.
  
     Assigning a timeout value prevents read operations from blocking
  indefinitely.  But bear in mind that there are other ways 'gawk' can
@@@ -10658,17 -10461,9 +10658,17 @@@ they are not special
  
       The following elements allow you to change 'gawk''s behavior:
  
 +     'PROCINFO["NONFATAL"]'
 +          If this element exists, then I/O errors for all output
-           redirections become nonfatal.  *Note Nonfatal::,.
++          redirections become nonfatal.  *Note Nonfatal::.
 +
 +     'PROCINFO["OUTPUT_NAME", "NONFATAL"]'
 +          Make output errors for OUTPUT_NAME be nonfatal.  *Note
-           Nonfatal::,.
++          Nonfatal::.
 +
       'PROCINFO["COMMAND", "pty"]'
            For two-way communication to COMMAND, use a pseudo-tty instead
-           of setting up a two-way pipe.  *Note Two-way I/O::, for more
+           of setting up a two-way pipe.  *Note Two-way I/O:: for more
            information.
  
       'PROCINFO["INPUT_NAME", "READ_TIMEOUT"]'
@@@ -35160,564 -34592,560 +35159,564 @@@ Inde
  
  
  Tag Table:
- Node: Top1203
- Node: Foreword342509
- Node: Foreword446951
- Node: Preface48483
- Ref: Preface-Footnote-151355
- Ref: Preface-Footnote-251462
- Ref: Preface-Footnote-351696
- Node: History51838
- Node: Names54191
- Ref: Names-Footnote-155285
- Node: This Manual55432
- Ref: This Manual-Footnote-161914
- Node: Conventions62014
- Node: Manual History64369
- Ref: Manual History-Footnote-167365
- Ref: Manual History-Footnote-267406
- Node: How To Contribute67480
- Node: Acknowledgments68609
- Node: Getting Started73496
- Node: Running gawk75935
- Node: One-shot77125
- Node: Read Terminal78388
- Node: Long80420
- Node: Executable Scripts81933
- Ref: Executable Scripts-Footnote-184728
- Node: Comments84831
- Node: Quoting87315
- Node: DOS Quoting92833
- Node: Sample Data Files93508
- Node: Very Simple96103
- Node: Two Rules101005
- Node: More Complex102891
- Node: Statements/Lines105754
- Ref: Statements/Lines-Footnote-1110213
- Node: Other Features110478
- Node: When111415
- Ref: When-Footnote-1113169
- Node: Intro Summary113234
- Node: Invoking Gawk114118
- Node: Command Line115632
- Node: Options116430
- Ref: Options-Footnote-1132529
- Ref: Options-Footnote-2132759
- Node: Other Arguments132784
- Node: Naming Standard Input135731
- Node: Environment Variables136824
- Node: AWKPATH Variable137382
- Ref: AWKPATH Variable-Footnote-1140793
- Ref: AWKPATH Variable-Footnote-2140838
- Node: AWKLIBPATH Variable141099
- Node: Other Environment Variables142356
- Node: Exit Status145994
- Node: Include Files146671
- Node: Loading Shared Libraries150266
- Node: Obsolete151694
- Node: Undocumented152386
- Node: Invoking Summary152683
- Node: Regexp154343
- Node: Regexp Usage155862
- Node: Escape Sequences157899
- Node: Regexp Operators164132
- Ref: Regexp Operators-Footnote-1171549
- Ref: Regexp Operators-Footnote-2171696
- Node: Bracket Expressions171794
- Ref: table-char-classes173817
- Node: Leftmost Longest176954
- Node: Computed Regexps178257
- Node: GNU Regexp Operators181684
- Node: Case-sensitivity185363
- Ref: Case-sensitivity-Footnote-1188259
- Ref: Case-sensitivity-Footnote-2188494
- Node: Strong Regexp Constants188602
- Node: Regexp Summary191544
- Node: Reading Files193150
- Node: Records195313
- Node: awk split records196046
- Node: gawk split records200978
- Ref: gawk split records-Footnote-1205522
- Node: Fields205559
- Node: Nonconstant Fields208300
- Ref: Nonconstant Fields-Footnote-1210536
- Node: Changing Fields210740
- Node: Field Separators216670
- Node: Default Field Splitting219368
- Node: Regexp Field Splitting220486
- Node: Single Character Fields223839
- Node: Command Line Field Separator224899
- Node: Full Line Fields228117
- Ref: Full Line Fields-Footnote-1229639
- Ref: Full Line Fields-Footnote-2229685
- Node: Field Splitting Summary229786
- Node: Constant Size231860
- Node: Splitting By Content236439
- Ref: Splitting By Content-Footnote-1240410
- Node: Multiple Line240573
- Ref: Multiple Line-Footnote-1246456
- Node: Getline246635
- Node: Plain Getline249102
- Node: Getline/Variable251741
- Node: Getline/File252890
- Node: Getline/Variable/File254276
- Ref: Getline/Variable/File-Footnote-1255880
- Node: Getline/Pipe255968
- Node: Getline/Variable/Pipe258673
- Node: Getline/Coprocess259806
- Node: Getline/Variable/Coprocess261071
- Node: Getline Notes261811
- Node: Getline Summary264606
- Ref: table-getline-variants265028
- Node: Read Timeout265776
- Ref: Read Timeout-Footnote-1269683
- Node: Retrying Input269741
- Node: Command-line directories270940
- Node: Input Summary271847
- Node: Input Exercises275019
- Node: Printing275747
- Node: Print277582
- Node: Print Examples279039
- Node: Output Separators281819
- Node: OFMT283836
- Node: Printf285192
- Node: Basic Printf285977
- Node: Control Letters287551
- Node: Format Modifiers291539
- Node: Printf Examples297554
- Node: Redirection300040
- Node: Special FD306883
- Ref: Special FD-Footnote-1310051
- Node: Special Files310125
- Node: Other Inherited Files310742
- Node: Special Network311743
- Node: Special Caveats312603
- Node: Close Files And Pipes313552
- Ref: Close Files And Pipes-Footnote-1320739
- Ref: Close Files And Pipes-Footnote-2320887
- Node: Nonfatal321038
- Node: Output Summary323363
- Node: Output Exercises324585
- Node: Expressions325264
- Node: Values326452
- Node: Constants327130
- Node: Scalar Constants327821
- Ref: Scalar Constants-Footnote-1328685
- Node: Nondecimal-numbers328935
- Node: Regexp Constants331949
- Node: Using Constant Regexps332475
- Node: Variables335638
- Node: Using Variables336295
- Node: Assignment Options338206
- Node: Conversion340080
- Node: Strings And Numbers340604
- Ref: Strings And Numbers-Footnote-1343668
- Node: Locale influences conversions343777
- Ref: table-locale-affects346535
- Node: All Operators347153
- Node: Arithmetic Ops347782
- Node: Concatenation350288
- Ref: Concatenation-Footnote-1353135
- Node: Assignment Ops353242
- Ref: table-assign-ops358234
- Node: Increment Ops359547
- Node: Truth Values and Conditions363007
- Node: Truth Values364081
- Node: Typing and Comparison365129
- Node: Variable Typing365949
- Node: Comparison Operators369573
- Ref: table-relational-ops369992
- Node: POSIX String Comparison373487
- Ref: POSIX String Comparison-Footnote-1374561
- Node: Boolean Ops374700
- Ref: Boolean Ops-Footnote-1379182
- Node: Conditional Exp379274
- Node: Function Calls381010
- Node: Precedence384890
- Node: Locales388549
- Node: Expressions Summary390181
- Node: Patterns and Actions392754
- Node: Pattern Overview393874
- Node: Regexp Patterns395551
- Node: Expression Patterns396093
- Node: Ranges399874
- Node: BEGIN/END402982
- Node: Using BEGIN/END403743
- Ref: Using BEGIN/END-Footnote-1406480
- Node: I/O And BEGIN/END406586
- Node: BEGINFILE/ENDFILE408902
- Node: Empty411809
- Node: Using Shell Variables412126
- Node: Action Overview414400
- Node: Statements416725
- Node: If Statement418573
- Node: While Statement420068
- Node: Do Statement422096
- Node: For Statement423244
- Node: Switch Statement426403
- Node: Break Statement428789
- Node: Continue Statement430881
- Node: Next Statement432708
- Node: Nextfile Statement435091
- Node: Exit Statement437743
- Node: Built-in Variables440148
- Node: User-modified441281
- Node: Auto-set448869
- Ref: Auto-set-Footnote-1463262
- Ref: Auto-set-Footnote-2463468
- Node: ARGC and ARGV463524
- Node: Pattern Action Summary467743
- Node: Arrays470173
- Node: Array Basics471502
- Node: Array Intro472346
- Ref: figure-array-elements474321
- Ref: Array Intro-Footnote-1477025
- Node: Reference to Elements477153
- Node: Assigning Elements479617
- Node: Array Example480108
- Node: Scanning an Array481867
- Node: Controlling Scanning484891
- Ref: Controlling Scanning-Footnote-1490290
- Node: Numeric Array Subscripts490606
- Node: Uninitialized Subscripts492790
- Node: Delete494409
- Ref: Delete-Footnote-1497161
- Node: Multidimensional497218
- Node: Multiscanning500313
- Node: Arrays of Arrays501904
- Node: Arrays Summary506672
- Node: Functions508765
- Node: Built-in509803
- Node: Calling Built-in510881
- Node: Numeric Functions512877
- Ref: Numeric Functions-Footnote-1517710
- Ref: Numeric Functions-Footnote-2518067
- Ref: Numeric Functions-Footnote-3518115
- Node: String Functions518387
- Ref: String Functions-Footnote-1541895
- Ref: String Functions-Footnote-2542024
- Ref: String Functions-Footnote-3542272
- Node: Gory Details542359
- Ref: table-sub-escapes544150
- Ref: table-sub-proposed545669
- Ref: table-posix-sub547032
- Ref: table-gensub-escapes548573
- Ref: Gory Details-Footnote-1549396
- Node: I/O Functions549547
- Ref: I/O Functions-Footnote-1556768
- Node: Time Functions556916
- Ref: Time Functions-Footnote-1567421
- Ref: Time Functions-Footnote-2567489
- Ref: Time Functions-Footnote-3567647
- Ref: Time Functions-Footnote-4567758
- Ref: Time Functions-Footnote-5567870
- Ref: Time Functions-Footnote-6568097
- Node: Bitwise Functions568363
- Ref: table-bitwise-ops568957
- Ref: Bitwise Functions-Footnote-1573295
- Node: Type Functions573468
- Node: I18N Functions576129
- Node: User-defined577780
- Node: Definition Syntax578585
- Ref: Definition Syntax-Footnote-1584272
- Node: Function Example584343
- Ref: Function Example-Footnote-1587265
- Node: Function Caveats587287
- Node: Calling A Function587805
- Node: Variable Scope588763
- Node: Pass By Value/Reference591757
- Node: Return Statement595256
- Node: Dynamic Typing598235
- Node: Indirect Calls599165
- Ref: Indirect Calls-Footnote-1609416
- Node: Functions Summary609544
- Node: Library Functions612249
- Ref: Library Functions-Footnote-1615858
- Ref: Library Functions-Footnote-2616001
- Node: Library Names616172
- Ref: Library Names-Footnote-1619633
- Ref: Library Names-Footnote-2619856
- Node: General Functions619942
- Node: Strtonum Function621045
- Node: Assert Function624067
- Node: Round Function627393
- Node: Cliff Random Function628934
- Node: Ordinal Functions629950
- Ref: Ordinal Functions-Footnote-1633013
- Ref: Ordinal Functions-Footnote-2633265
- Node: Join Function633475
- Ref: Join Function-Footnote-1635245
- Node: Getlocaltime Function635445
- Node: Readfile Function639189
- Node: Shell Quoting641163
- Node: Data File Management642564
- Node: Filetrans Function643196
- Node: Rewind Function647293
- Node: File Checking648679
- Ref: File Checking-Footnote-1650013
- Node: Empty Files650214
- Node: Ignoring Assigns652193
- Node: Getopt Function653743
- Ref: Getopt Function-Footnote-1665213
- Node: Passwd Functions665413
- Ref: Passwd Functions-Footnote-1674254
- Node: Group Functions674342
- Ref: Group Functions-Footnote-1682241
- Node: Walking Arrays682448
- Node: Library Functions Summary685458
- Node: Library Exercises686864
- Node: Sample Programs687329
- Node: Running Examples688099
- Node: Clones688827
- Node: Cut Program690051
- Node: Egrep Program699772
- Ref: Egrep Program-Footnote-1707284
- Node: Id Program707394
- Node: Split Program711074
- Ref: Split Program-Footnote-1714533
- Node: Tee Program714662
- Node: Uniq Program717452
- Node: Wc Program724878
- Ref: Wc Program-Footnote-1729133
- Node: Miscellaneous Programs729227
- Node: Dupword Program730440
- Node: Alarm Program732470
- Node: Translate Program737325
- Ref: Translate Program-Footnote-1741890
- Node: Labels Program742160
- Ref: Labels Program-Footnote-1745511
- Node: Word Sorting745595
- Node: History Sorting749667
- Node: Extract Program751502
- Node: Simple Sed759031
- Node: Igawk Program762105
- Ref: Igawk Program-Footnote-1776436
- Ref: Igawk Program-Footnote-2776638
- Ref: Igawk Program-Footnote-3776760
- Node: Anagram Program776875
- Node: Signature Program779937
- Node: Programs Summary781184
- Node: Programs Exercises782399
- Ref: Programs Exercises-Footnote-1786528
- Node: Advanced Features786619
- Node: Nondecimal Data788609
- Node: Array Sorting790200
- Node: Controlling Array Traversal790900
- Ref: Controlling Array Traversal-Footnote-1799269
- Node: Array Sorting Functions799387
- Ref: Array Sorting Functions-Footnote-1804478
- Node: Two-way I/O804674
- Ref: Two-way I/O-Footnote-1810494
- Ref: Two-way I/O-Footnote-2810681
- Node: TCP/IP Networking810763
- Node: Profiling813881
- Node: Advanced Features Summary822335
- Node: Internationalization824179
- Node: I18N and L10N825659
- Node: Explaining gettext826346
- Ref: Explaining gettext-Footnote-1831369
- Ref: Explaining gettext-Footnote-2831554
- Node: Programmer i18n831719
- Ref: Programmer i18n-Footnote-1836575
- Node: Translator i18n836624
- Node: String Extraction837418
- Ref: String Extraction-Footnote-1838551
- Node: Printf Ordering838637
- Ref: Printf Ordering-Footnote-1841423
- Node: I18N Portability841487
- Ref: I18N Portability-Footnote-1843943
- Node: I18N Example844006
- Ref: I18N Example-Footnote-1846812
- Node: Gawk I18N846885
- Node: I18N Summary847530
- Node: Debugger848871
- Node: Debugging849893
- Node: Debugging Concepts850334
- Node: Debugging Terms852143
- Node: Awk Debugging854718
- Node: Sample Debugging Session855624
- Node: Debugger Invocation856158
- Node: Finding The Bug857544
- Node: List of Debugger Commands864022
- Node: Breakpoint Control865355
- Node: Debugger Execution Control869049
- Node: Viewing And Changing Data872411
- Node: Execution Stack875785
- Node: Debugger Info877422
- Node: Miscellaneous Debugger Commands881493
- Node: Readline Support886581
- Node: Limitations887477
- Ref: Limitations-Footnote-1891708
- Node: Debugging Summary891759
- Node: Arbitrary Precision Arithmetic893038
- Node: Computer Arithmetic894454
- Ref: table-numeric-ranges898045
- Ref: Computer Arithmetic-Footnote-1898767
- Node: Math Definitions898824
- Ref: table-ieee-formats902138
- Ref: Math Definitions-Footnote-1902741
- Node: MPFR features902846
- Node: FP Math Caution904565
- Ref: FP Math Caution-Footnote-1905637
- Node: Inexactness of computations906006
- Node: Inexact representation906966
- Node: Comparing FP Values908326
- Node: Errors accumulate909408
- Node: Getting Accuracy910841
- Node: Try To Round913551
- Node: Setting precision914450
- Ref: table-predefined-precision-strings915147
- Node: Setting the rounding mode916977
- Ref: table-gawk-rounding-modes917351
- Ref: Setting the rounding mode-Footnote-1920759
- Node: Arbitrary Precision Integers920938
- Ref: Arbitrary Precision Integers-Footnote-1925855
- Node: POSIX Floating Point Problems926004
- Ref: POSIX Floating Point Problems-Footnote-1929886
- Node: Floating point summary929924
- Node: Dynamic Extensions932114
- Node: Extension Intro933667
- Node: Plugin License934933
- Node: Extension Mechanism Outline935730
- Ref: figure-load-extension936169
- Ref: figure-register-new-function937734
- Ref: figure-call-new-function938826
- Node: Extension API Description940889
- Node: Extension API Functions Introduction942421
- Node: General Data Types947280
- Ref: General Data Types-Footnote-1953235
- Node: Memory Allocation Functions953534
- Ref: Memory Allocation Functions-Footnote-1956379
- Node: Constructor Functions956478
- Node: Registration Functions958223
- Node: Extension Functions958908
- Node: Exit Callback Functions961207
- Node: Extension Version String962457
- Node: Input Parsers963120
- Node: Output Wrappers973005
- Node: Two-way processors977517
- Node: Printing Messages979781
- Ref: Printing Messages-Footnote-1980855
- Node: Updating ERRNO981008
- Node: Requesting Values981747
- Ref: table-value-types-returned982484
- Node: Accessing Parameters983367
- Node: Symbol Table Access984603
- Node: Symbol table by name985115
- Node: Symbol table by cookie987136
- Ref: Symbol table by cookie-Footnote-1991285
- Node: Cached values991349
- Ref: Cached values-Footnote-1994850
- Node: Array Manipulation994941
- Ref: Array Manipulation-Footnote-1996032
- Node: Array Data Types996069
- Ref: Array Data Types-Footnote-1998727
- Node: Array Functions998819
- Node: Flattening Arrays1002678
- Node: Creating Arrays1009586
- Node: Redirection API1014358
- Node: Extension API Variables1017189
- Node: Extension Versioning1017822
- Node: Extension API Informational Variables1019713
- Node: Extension API Boilerplate1020777
- Node: Finding Extensions1024591
- Node: Extension Example1025151
- Node: Internal File Description1025949
- Node: Internal File Ops1030029
- Ref: Internal File Ops-Footnote-11041791
- Node: Using Internal File Ops1041931
- Ref: Using Internal File Ops-Footnote-11044314
- Node: Extension Samples1044589
- Node: Extension Sample File Functions1046118
- Node: Extension Sample Fnmatch1053767
- Node: Extension Sample Fork1055254
- Node: Extension Sample Inplace1056472
- Node: Extension Sample Ord1059682
- Node: Extension Sample Readdir1060518
- Ref: table-readdir-file-types1061407
- Node: Extension Sample Revout1062212
- Node: Extension Sample Rev2way1062801
- Node: Extension Sample Read write array1063541
- Node: Extension Sample Readfile1065483
- Node: Extension Sample Time1066578
- Node: Extension Sample API Tests1067926
- Node: gawkextlib1068418
- Node: Extension summary1070865
- Node: Extension Exercises1074557
- Node: Language History1076054
- Node: V7/SVR3.11077710
- Node: SVR41079862
- Node: POSIX1081296
- Node: BTL1082676
- Node: POSIX/GNU1083406
- Node: Feature History1089268
- Node: Common Extensions1103638
- Node: Ranges and Locales1104921
- Ref: Ranges and Locales-Footnote-11109537
- Ref: Ranges and Locales-Footnote-21109564
- Ref: Ranges and Locales-Footnote-31109799
- Node: Contributors1110020
- Node: History summary1115589
- Node: Installation1116969
- Node: Gawk Distribution1117914
- Node: Getting1118398
- Node: Extracting1119359
- Node: Distribution contents1120997
- Node: Unix Installation1127093
- Node: Quick Installation1127775
- Node: Shell Startup Files1130189
- Node: Additional Configuration Options1131267
- Node: Configuration Philosophy1133072
- Node: Non-Unix Installation1135442
- Node: PC Installation1135900
- Node: PC Binary Installation1137220
- Node: PC Compiling1139072
- Ref: PC Compiling-Footnote-11142096
- Node: PC Testing1142205
- Node: PC Using1143385
- Node: Cygwin1147499
- Node: MSYS1148269
- Node: VMS Installation1148770
- Node: VMS Compilation1149561
- Ref: VMS Compilation-Footnote-11150791
- Node: VMS Dynamic Extensions1150849
- Node: VMS Installation Details1152534
- Node: VMS Running1154787
- Node: VMS GNV1159066
- Node: VMS Old Gawk1159801
- Node: Bugs1160272
- Node: Other Versions1164469
- Node: Installation summary1171055
- Node: Notes1172113
- Node: Compatibility Mode1172978
- Node: Additions1173760
- Node: Accessing The Source1174685
- Node: Adding Code1176121
- Node: New Ports1182340
- Node: Derived Files1186828
- Ref: Derived Files-Footnote-11192313
- Ref: Derived Files-Footnote-21192348
- Ref: Derived Files-Footnote-31192946
- Node: Future Extensions1193060
- Node: Implementation Limitations1193718
- Node: Extension Design1194901
- Node: Old Extension Problems1196055
- Ref: Old Extension Problems-Footnote-11197573
- Node: Extension New Mechanism Goals1197630
- Ref: Extension New Mechanism Goals-Footnote-11200994
- Node: Extension Other Design Decisions1201183
- Node: Extension Future Growth1203296
- Node: Old Extension Mechanism1204132
- Node: Notes summary1205895
- Node: Basic Concepts1207077
- Node: Basic High Level1207758
- Ref: figure-general-flow1208040
- Ref: figure-process-flow1208725
- Ref: Basic High Level-Footnote-11212026
- Node: Basic Data Typing1212211
- Node: Glossary1215539
- Node: Copying1247485
- Node: GNU Free Documentation License1285024
- Node: Index1310142
+ Node: Top1200
 -Node: Foreword342138
 -Node: Foreword446580
 -Node: Preface48112
 -Ref: Preface-Footnote-150984
 -Ref: Preface-Footnote-251091
 -Ref: Preface-Footnote-351325
 -Node: History51467
 -Node: Names53819
 -Ref: Names-Footnote-154913
 -Node: This Manual55060
 -Ref: This Manual-Footnote-161542
 -Node: Conventions61642
 -Node: Manual History63996
 -Ref: Manual History-Footnote-166991
 -Ref: Manual History-Footnote-267032
 -Node: How To Contribute67106
 -Node: Acknowledgments68235
 -Node: Getting Started73121
 -Node: Running gawk75560
 -Node: One-shot76750
 -Node: Read Terminal78013
 -Node: Long80045
 -Node: Executable Scripts81558
 -Ref: Executable Scripts-Footnote-184353
 -Node: Comments84456
 -Node: Quoting86940
 -Node: DOS Quoting92457
 -Node: Sample Data Files93132
 -Node: Very Simple95727
 -Node: Two Rules100629
 -Node: More Complex102514
 -Node: Statements/Lines105377
 -Ref: Statements/Lines-Footnote-1109836
 -Node: Other Features110101
 -Node: When111037
 -Ref: When-Footnote-1112791
 -Node: Intro Summary112856
 -Node: Invoking Gawk113740
 -Node: Command Line115254
 -Node: Options116052
 -Ref: Options-Footnote-1131959
 -Ref: Options-Footnote-2132189
 -Node: Other Arguments132214
 -Node: Naming Standard Input135161
 -Node: Environment Variables136254
 -Node: AWKPATH Variable136812
 -Ref: AWKPATH Variable-Footnote-1140113
 -Ref: AWKPATH Variable-Footnote-2140158
 -Node: AWKLIBPATH Variable140419
 -Node: Other Environment Variables141563
 -Node: Exit Status145328
 -Node: Include Files146005
 -Node: Loading Shared Libraries149600
 -Node: Obsolete151028
 -Node: Undocumented151720
 -Node: Invoking Summary152017
 -Node: Regexp153677
 -Node: Regexp Usage155131
 -Node: Escape Sequences157168
 -Node: Regexp Operators163182
 -Ref: Regexp Operators-Footnote-1170598
 -Ref: Regexp Operators-Footnote-2170745
 -Node: Bracket Expressions170843
 -Ref: table-char-classes172865
 -Node: Leftmost Longest176002
 -Node: Computed Regexps177305
 -Node: GNU Regexp Operators180732
 -Node: Case-sensitivity184411
 -Ref: Case-sensitivity-Footnote-1187298
 -Ref: Case-sensitivity-Footnote-2187533
 -Node: Regexp Summary187641
 -Node: Reading Files189107
 -Node: Records191201
 -Node: awk split records191934
 -Node: gawk split records196865
 -Ref: gawk split records-Footnote-1201405
 -Node: Fields201442
 -Ref: Fields-Footnote-1204222
 -Node: Nonconstant Fields204308
 -Ref: Nonconstant Fields-Footnote-1206544
 -Node: Changing Fields206748
 -Node: Field Separators212676
 -Node: Default Field Splitting215374
 -Node: Regexp Field Splitting216492
 -Node: Single Character Fields219845
 -Node: Command Line Field Separator220905
 -Node: Full Line Fields224123
 -Ref: Full Line Fields-Footnote-1225645
 -Ref: Full Line Fields-Footnote-2225691
 -Node: Field Splitting Summary225792
 -Node: Constant Size227866
 -Node: Splitting By Content232444
 -Ref: Splitting By Content-Footnote-1236415
 -Node: Multiple Line236578
 -Ref: Multiple Line-Footnote-1242460
 -Node: Getline242639
 -Node: Plain Getline244843
 -Node: Getline/Variable247482
 -Node: Getline/File248631
 -Node: Getline/Variable/File250017
 -Ref: Getline/Variable/File-Footnote-1251620
 -Node: Getline/Pipe251708
 -Node: Getline/Variable/Pipe254413
 -Node: Getline/Coprocess255546
 -Node: Getline/Variable/Coprocess256811
 -Node: Getline Notes257551
 -Node: Getline Summary260346
 -Ref: table-getline-variants260768
 -Node: Read Timeout261516
 -Ref: Read Timeout-Footnote-1265357
 -Node: Command-line directories265415
 -Node: Input Summary266319
 -Node: Input Exercises269491
 -Node: Printing270219
 -Node: Print271995
 -Node: Print Examples273452
 -Node: Output Separators276232
 -Node: OFMT278249
 -Node: Printf279605
 -Node: Basic Printf280390
 -Node: Control Letters281964
 -Node: Format Modifiers285952
 -Node: Printf Examples291967
 -Node: Redirection294453
 -Node: Special FD301294
 -Ref: Special FD-Footnote-1304462
 -Node: Special Files304536
 -Node: Other Inherited Files305153
 -Node: Special Network306154
 -Node: Special Caveats307014
 -Node: Close Files And Pipes307963
 -Ref: Close Files And Pipes-Footnote-1315156
 -Ref: Close Files And Pipes-Footnote-2315304
 -Node: Output Summary315455
 -Node: Output Exercises316453
 -Node: Expressions317132
 -Node: Values318320
 -Node: Constants318998
 -Node: Scalar Constants319689
 -Ref: Scalar Constants-Footnote-1320553
 -Node: Nondecimal-numbers320803
 -Node: Regexp Constants323816
 -Node: Using Constant Regexps324342
 -Node: Variables327505
 -Node: Using Variables328162
 -Node: Assignment Options330072
 -Node: Conversion331945
 -Node: Strings And Numbers332469
 -Ref: Strings And Numbers-Footnote-1335532
 -Node: Locale influences conversions335641
 -Ref: table-locale-affects338399
 -Node: All Operators339017
 -Node: Arithmetic Ops339646
 -Node: Concatenation342152
 -Ref: Concatenation-Footnote-1344999
 -Node: Assignment Ops345106
 -Ref: table-assign-ops350097
 -Node: Increment Ops351410
 -Node: Truth Values and Conditions354870
 -Node: Truth Values355944
 -Node: Typing and Comparison356992
 -Node: Variable Typing357812
 -Node: Comparison Operators361436
 -Ref: table-relational-ops361855
 -Node: POSIX String Comparison365350
 -Ref: POSIX String Comparison-Footnote-1366424
 -Node: Boolean Ops366563
 -Ref: Boolean Ops-Footnote-1371045
 -Node: Conditional Exp371137
 -Node: Function Calls372873
 -Node: Precedence376750
 -Node: Locales380409
 -Node: Expressions Summary382041
 -Node: Patterns and Actions384614
 -Node: Pattern Overview385734
 -Node: Regexp Patterns387411
 -Node: Expression Patterns387953
 -Node: Ranges391734
 -Node: BEGIN/END394842
 -Node: Using BEGIN/END395603
 -Ref: Using BEGIN/END-Footnote-1398339
 -Node: I/O And BEGIN/END398445
 -Node: BEGINFILE/ENDFILE400759
 -Node: Empty403666
 -Node: Using Shell Variables403983
 -Node: Action Overview406257
 -Node: Statements408582
 -Node: If Statement410430
 -Node: While Statement411925
 -Node: Do Statement413953
 -Node: For Statement415101
 -Node: Switch Statement418259
 -Node: Break Statement420645
 -Node: Continue Statement422737
 -Node: Next Statement424564
 -Node: Nextfile Statement426947
 -Node: Exit Statement429599
 -Node: Built-in Variables432002
 -Node: User-modified433135
 -Ref: User-modified-Footnote-1440760
 -Node: Auto-set440822
 -Ref: Auto-set-Footnote-1453912
 -Ref: Auto-set-Footnote-2454118
 -Node: ARGC and ARGV454174
 -Node: Pattern Action Summary458387
 -Node: Arrays460817
 -Node: Array Basics462146
 -Node: Array Intro462990
 -Ref: figure-array-elements464965
 -Ref: Array Intro-Footnote-1467669
 -Node: Reference to Elements467797
 -Node: Assigning Elements470261
 -Node: Array Example470752
 -Node: Scanning an Array472511
 -Node: Controlling Scanning475533
 -Ref: Controlling Scanning-Footnote-1480932
 -Node: Numeric Array Subscripts481248
 -Node: Uninitialized Subscripts483432
 -Node: Delete485051
 -Ref: Delete-Footnote-1487803
 -Node: Multidimensional487860
 -Node: Multiscanning490955
 -Node: Arrays of Arrays492546
 -Node: Arrays Summary497313
 -Node: Functions499406
 -Node: Built-in500444
 -Node: Calling Built-in501522
 -Node: Numeric Functions503518
 -Ref: Numeric Functions-Footnote-1507546
 -Ref: Numeric Functions-Footnote-2507903
 -Ref: Numeric Functions-Footnote-3507951
 -Node: String Functions508223
 -Ref: String Functions-Footnote-1531727
 -Ref: String Functions-Footnote-2531855
 -Ref: String Functions-Footnote-3532103
 -Node: Gory Details532190
 -Ref: table-sub-escapes533981
 -Ref: table-sub-proposed535500
 -Ref: table-posix-sub536863
 -Ref: table-gensub-escapes538404
 -Ref: Gory Details-Footnote-1539227
 -Node: I/O Functions539378
 -Ref: I/O Functions-Footnote-1546598
 -Node: Time Functions546746
 -Ref: Time Functions-Footnote-1557251
 -Ref: Time Functions-Footnote-2557319
 -Ref: Time Functions-Footnote-3557477
 -Ref: Time Functions-Footnote-4557588
 -Ref: Time Functions-Footnote-5557700
 -Ref: Time Functions-Footnote-6557927
 -Node: Bitwise Functions558193
 -Ref: table-bitwise-ops558787
 -Ref: Bitwise Functions-Footnote-1563125
 -Node: Type Functions563298
 -Node: I18N Functions564454
 -Node: User-defined566105
 -Node: Definition Syntax566910
 -Ref: Definition Syntax-Footnote-1572597
 -Node: Function Example572668
 -Ref: Function Example-Footnote-1575590
 -Node: Function Caveats575612
 -Node: Calling A Function576130
 -Node: Variable Scope577088
 -Node: Pass By Value/Reference580082
 -Node: Return Statement583581
 -Node: Dynamic Typing586560
 -Node: Indirect Calls587490
 -Ref: Indirect Calls-Footnote-1597741
 -Node: Functions Summary597869
 -Node: Library Functions600574
 -Ref: Library Functions-Footnote-1604181
 -Ref: Library Functions-Footnote-2604324
 -Node: Library Names604495
 -Ref: Library Names-Footnote-1607955
 -Ref: Library Names-Footnote-2608178
 -Node: General Functions608264
 -Node: Strtonum Function609367
 -Node: Assert Function612389
 -Node: Round Function615715
 -Node: Cliff Random Function617256
 -Node: Ordinal Functions618272
 -Ref: Ordinal Functions-Footnote-1621335
 -Ref: Ordinal Functions-Footnote-2621587
 -Node: Join Function621797
 -Ref: Join Function-Footnote-1623567
 -Node: Getlocaltime Function623767
 -Node: Readfile Function627509
 -Node: Shell Quoting629481
 -Node: Data File Management630882
 -Node: Filetrans Function631514
 -Node: Rewind Function635610
 -Node: File Checking636996
 -Ref: File Checking-Footnote-1638330
 -Node: Empty Files638531
 -Node: Ignoring Assigns640510
 -Node: Getopt Function642060
 -Ref: Getopt Function-Footnote-1653529
 -Node: Passwd Functions653729
 -Ref: Passwd Functions-Footnote-1662568
 -Node: Group Functions662656
 -Ref: Group Functions-Footnote-1670553
 -Node: Walking Arrays670760
 -Node: Library Functions Summary673768
 -Node: Library Exercises675174
 -Node: Sample Programs675639
 -Node: Running Examples676409
 -Node: Clones677137
 -Node: Cut Program678361
 -Node: Egrep Program688082
 -Ref: Egrep Program-Footnote-1695594
 -Node: Id Program695704
 -Node: Split Program699384
 -Ref: Split Program-Footnote-1702843
 -Node: Tee Program702972
 -Node: Uniq Program705762
 -Node: Wc Program713188
 -Ref: Wc Program-Footnote-1717443
 -Node: Miscellaneous Programs717537
 -Node: Dupword Program718750
 -Node: Alarm Program720780
 -Node: Translate Program725635
 -Ref: Translate Program-Footnote-1730200
 -Node: Labels Program730470
 -Ref: Labels Program-Footnote-1733821
 -Node: Word Sorting733905
 -Node: History Sorting737977
 -Node: Extract Program739812
 -Node: Simple Sed747341
 -Node: Igawk Program750415
 -Ref: Igawk Program-Footnote-1764746
 -Ref: Igawk Program-Footnote-2764948
 -Ref: Igawk Program-Footnote-3765070
 -Node: Anagram Program765185
 -Node: Signature Program768247
 -Node: Programs Summary769494
 -Node: Programs Exercises770708
 -Ref: Programs Exercises-Footnote-1774837
 -Node: Advanced Features774928
 -Node: Nondecimal Data776918
 -Node: Array Sorting778509
 -Node: Controlling Array Traversal779209
 -Ref: Controlling Array Traversal-Footnote-1787576
 -Node: Array Sorting Functions787694
 -Ref: Array Sorting Functions-Footnote-1792785
 -Node: Two-way I/O792981
 -Ref: Two-way I/O-Footnote-1798801
 -Ref: Two-way I/O-Footnote-2798988
 -Node: TCP/IP Networking799070
 -Node: Profiling802188
 -Node: Advanced Features Summary809727
 -Node: Internationalization811663
 -Node: I18N and L10N813143
 -Node: Explaining gettext813830
 -Ref: Explaining gettext-Footnote-1818853
 -Ref: Explaining gettext-Footnote-2819038
 -Node: Programmer i18n819203
 -Ref: Programmer i18n-Footnote-1824058
 -Node: Translator i18n824107
 -Node: String Extraction824901
 -Ref: String Extraction-Footnote-1826033
 -Node: Printf Ordering826119
 -Ref: Printf Ordering-Footnote-1828905
 -Node: I18N Portability828969
 -Ref: I18N Portability-Footnote-1831425
 -Node: I18N Example831488
 -Ref: I18N Example-Footnote-1834294
 -Node: Gawk I18N834367
 -Node: I18N Summary835012
 -Node: Debugger836353
 -Node: Debugging837375
 -Node: Debugging Concepts837816
 -Node: Debugging Terms839625
 -Node: Awk Debugging842200
 -Node: Sample Debugging Session843106
 -Node: Debugger Invocation843640
 -Node: Finding The Bug845026
 -Node: List of Debugger Commands851504
 -Node: Breakpoint Control852837
 -Node: Debugger Execution Control856531
 -Node: Viewing And Changing Data859893
 -Node: Execution Stack863267
 -Node: Debugger Info864904
 -Node: Miscellaneous Debugger Commands868975
 -Node: Readline Support874063
 -Node: Limitations874959
 -Node: Debugging Summary877068
 -Node: Arbitrary Precision Arithmetic878241
 -Node: Computer Arithmetic879657
 -Ref: table-numeric-ranges883248
 -Ref: Computer Arithmetic-Footnote-1883970
 -Node: Math Definitions884027
 -Ref: table-ieee-formats887341
 -Ref: Math Definitions-Footnote-1887944
 -Node: MPFR features888049
 -Node: FP Math Caution889766
 -Ref: FP Math Caution-Footnote-1890838
 -Node: Inexactness of computations891207
 -Node: Inexact representation892167
 -Node: Comparing FP Values893527
 -Node: Errors accumulate894609
 -Node: Getting Accuracy896042
 -Node: Try To Round898752
 -Node: Setting precision899651
 -Ref: table-predefined-precision-strings900348
 -Node: Setting the rounding mode902178
 -Ref: table-gawk-rounding-modes902552
 -Ref: Setting the rounding mode-Footnote-1905960
 -Node: Arbitrary Precision Integers906139
 -Ref: Arbitrary Precision Integers-Footnote-1909123
 -Node: POSIX Floating Point Problems909272
 -Ref: POSIX Floating Point Problems-Footnote-1913154
 -Node: Floating point summary913192
 -Node: Dynamic Extensions915382
 -Node: Extension Intro916935
 -Node: Plugin License918201
 -Node: Extension Mechanism Outline918998
 -Ref: figure-load-extension919437
 -Ref: figure-register-new-function921002
 -Ref: figure-call-new-function922094
 -Node: Extension API Description924156
 -Node: Extension API Functions Introduction925604
 -Node: General Data Types930416
 -Ref: General Data Types-Footnote-1936371
 -Node: Memory Allocation Functions936670
 -Ref: Memory Allocation Functions-Footnote-1939515
 -Node: Constructor Functions939614
 -Node: Registration Functions941359
 -Node: Extension Functions942044
 -Node: Exit Callback Functions944343
 -Node: Extension Version String945593
 -Node: Input Parsers946256
 -Node: Output Wrappers956141
 -Node: Two-way processors960653
 -Node: Printing Messages962917
 -Ref: Printing Messages-Footnote-1963991
 -Node: Updating ERRNO964144
 -Node: Requesting Values964883
 -Ref: table-value-types-returned965620
 -Node: Accessing Parameters966503
 -Node: Symbol Table Access967738
 -Node: Symbol table by name968250
 -Node: Symbol table by cookie970271
 -Ref: Symbol table by cookie-Footnote-1974420
 -Node: Cached values974484
 -Ref: Cached values-Footnote-1977985
 -Node: Array Manipulation978076
 -Ref: Array Manipulation-Footnote-1979175
 -Node: Array Data Types979212
 -Ref: Array Data Types-Footnote-1981870
 -Node: Array Functions981962
 -Node: Flattening Arrays985820
 -Node: Creating Arrays992728
 -Node: Extension API Variables997499
 -Node: Extension Versioning998135
 -Node: Extension API Informational Variables1000026
 -Node: Extension API Boilerplate1001090
 -Node: Finding Extensions1004904
 -Node: Extension Example1005463
 -Node: Internal File Description1006261
 -Node: Internal File Ops1010341
 -Ref: Internal File Ops-Footnote-11022103
 -Node: Using Internal File Ops1022243
 -Ref: Using Internal File Ops-Footnote-11024626
 -Node: Extension Samples1024900
 -Node: Extension Sample File Functions1026429
 -Node: Extension Sample Fnmatch1034078
 -Node: Extension Sample Fork1035565
 -Node: Extension Sample Inplace1036783
 -Node: Extension Sample Ord1039993
 -Node: Extension Sample Readdir1040829
 -Ref: table-readdir-file-types1041718
 -Node: Extension Sample Revout1042523
 -Node: Extension Sample Rev2way1043112
 -Node: Extension Sample Read write array1043852
 -Node: Extension Sample Readfile1045794
 -Node: Extension Sample Time1046889
 -Node: Extension Sample API Tests1048237
 -Node: gawkextlib1048729
 -Node: Extension summary1051153
 -Node: Extension Exercises1054845
 -Node: Language History1056342
 -Node: V7/SVR3.11057998
 -Node: SVR41060150
 -Node: POSIX1061584
 -Node: BTL1062963
 -Node: POSIX/GNU1063692
 -Node: Feature History1069213
 -Node: Common Extensions1082542
 -Node: Ranges and Locales1083825
 -Ref: Ranges and Locales-Footnote-11088441
 -Ref: Ranges and Locales-Footnote-21088468
 -Ref: Ranges and Locales-Footnote-31088703
 -Node: Contributors1088924
 -Node: History summary1094493
 -Node: Installation1095873
 -Node: Gawk Distribution1096817
 -Node: Getting1097301
 -Node: Extracting1098262
 -Node: Distribution contents1099900
 -Node: Unix Installation1105651
 -Node: Quick Installation1106267
 -Node: Additional Configuration Options1108694
 -Node: Configuration Philosophy1110498
 -Node: Non-Unix Installation1112867
 -Node: PC Installation1113325
 -Node: PC Binary Installation1114645
 -Node: PC Compiling1116497
 -Ref: PC Compiling-Footnote-11119521
 -Node: PC Testing1119630
 -Node: PC Using1120810
 -Node: Cygwin1124924
 -Node: MSYS1125694
 -Node: VMS Installation1126195
 -Node: VMS Compilation1126986
 -Ref: VMS Compilation-Footnote-11128215
 -Node: VMS Dynamic Extensions1128273
 -Node: VMS Installation Details1129958
 -Node: VMS Running1132211
 -Node: VMS GNV1136490
 -Node: VMS Old Gawk1137225
 -Node: Bugs1137696
 -Node: Other Versions1141893
 -Node: Installation summary1148477
 -Node: Notes1149535
 -Node: Compatibility Mode1150400
 -Node: Additions1151182
 -Node: Accessing The Source1152107
 -Node: Adding Code1153542
 -Node: New Ports1159761
 -Node: Derived Files1164249
 -Ref: Derived Files-Footnote-11169734
 -Ref: Derived Files-Footnote-21169769
 -Ref: Derived Files-Footnote-31170367
 -Node: Future Extensions1170481
 -Node: Implementation Limitations1171139
 -Node: Extension Design1172322
 -Node: Old Extension Problems1173476
 -Ref: Old Extension Problems-Footnote-11174994
 -Node: Extension New Mechanism Goals1175051
 -Ref: Extension New Mechanism Goals-Footnote-11178415
 -Node: Extension Other Design Decisions1178604
 -Node: Extension Future Growth1180717
 -Node: Old Extension Mechanism1181553
 -Node: Notes summary1183316
 -Node: Basic Concepts1184498
 -Node: Basic High Level1185179
 -Ref: figure-general-flow1185461
 -Ref: figure-process-flow1186146
 -Ref: Basic High Level-Footnote-11189447
 -Node: Basic Data Typing1189632
 -Node: Glossary1192960
 -Node: Copying1224906
 -Node: GNU Free Documentation License1262445
 -Node: Index1287563
++Node: Foreword342506
++Node: Foreword446948
++Node: Preface48480
++Ref: Preface-Footnote-151352
++Ref: Preface-Footnote-251459
++Ref: Preface-Footnote-351693
++Node: History51835
++Node: Names54187
++Ref: Names-Footnote-155281
++Node: This Manual55428
++Ref: This Manual-Footnote-161910
++Node: Conventions62010
++Node: Manual History64364
++Ref: Manual History-Footnote-167359
++Ref: Manual History-Footnote-267400
++Node: How To Contribute67474
++Node: Acknowledgments68603
++Node: Getting Started73489
++Node: Running gawk75928
++Node: One-shot77118
++Node: Read Terminal78381
++Node: Long80413
++Node: Executable Scripts81926
++Ref: Executable Scripts-Footnote-184721
++Node: Comments84824
++Node: Quoting87308
++Node: DOS Quoting92825
++Node: Sample Data Files93500
++Node: Very Simple96095
++Node: Two Rules100997
++Node: More Complex102882
++Node: Statements/Lines105745
++Ref: Statements/Lines-Footnote-1110204
++Node: Other Features110469
++Node: When111405
++Ref: When-Footnote-1113159
++Node: Intro Summary113224
++Node: Invoking Gawk114108
++Node: Command Line115622
++Node: Options116420
++Ref: Options-Footnote-1132518
++Ref: Options-Footnote-2132748
++Node: Other Arguments132773
++Node: Naming Standard Input135720
++Node: Environment Variables136813
++Node: AWKPATH Variable137371
++Ref: AWKPATH Variable-Footnote-1140782
++Ref: AWKPATH Variable-Footnote-2140827
++Node: AWKLIBPATH Variable141088
++Node: Other Environment Variables142345
++Node: Exit Status145983
++Node: Include Files146660
++Node: Loading Shared Libraries150255
++Node: Obsolete151683
++Node: Undocumented152375
++Node: Invoking Summary152672
++Node: Regexp154332
++Node: Regexp Usage155851
++Node: Escape Sequences157888
++Node: Regexp Operators164120
++Ref: Regexp Operators-Footnote-1171536
++Ref: Regexp Operators-Footnote-2171683
++Node: Bracket Expressions171781
++Ref: table-char-classes173803
++Node: Leftmost Longest176940
++Node: Computed Regexps178243
++Node: GNU Regexp Operators181670
++Node: Case-sensitivity185349
++Ref: Case-sensitivity-Footnote-1188245
++Ref: Case-sensitivity-Footnote-2188480
++Node: Strong Regexp Constants188588
++Node: Regexp Summary191530
++Node: Reading Files193136
++Node: Records195299
++Node: awk split records196032
++Node: gawk split records200963
++Ref: gawk split records-Footnote-1205503
++Node: Fields205540
++Node: Nonconstant Fields208281
++Ref: Nonconstant Fields-Footnote-1210517
++Node: Changing Fields210721
++Node: Field Separators216649
++Node: Default Field Splitting219347
++Node: Regexp Field Splitting220465
++Node: Single Character Fields223818
++Node: Command Line Field Separator224878
++Node: Full Line Fields228096
++Ref: Full Line Fields-Footnote-1229618
++Ref: Full Line Fields-Footnote-2229664
++Node: Field Splitting Summary229765
++Node: Constant Size231839
++Node: Splitting By Content236417
++Ref: Splitting By Content-Footnote-1240388
++Node: Multiple Line240551
++Ref: Multiple Line-Footnote-1246433
++Node: Getline246612
++Node: Plain Getline249078
++Node: Getline/Variable251717
++Node: Getline/File252866
++Node: Getline/Variable/File254252
++Ref: Getline/Variable/File-Footnote-1255855
++Node: Getline/Pipe255943
++Node: Getline/Variable/Pipe258648
++Node: Getline/Coprocess259781
++Node: Getline/Variable/Coprocess261046
++Node: Getline Notes261786
++Node: Getline Summary264581
++Ref: table-getline-variants265003
++Node: Read Timeout265751
++Ref: Read Timeout-Footnote-1269657
++Node: Retrying Input269715
++Node: Command-line directories270914
++Node: Input Summary271820
++Node: Input Exercises274992
++Node: Printing275720
++Node: Print277554
++Node: Print Examples279011
++Node: Output Separators281791
++Node: OFMT283808
++Node: Printf285164
++Node: Basic Printf285949
++Node: Control Letters287523
++Node: Format Modifiers291511
++Node: Printf Examples297526
++Node: Redirection300012
++Node: Special FD306853
++Ref: Special FD-Footnote-1310021
++Node: Special Files310095
++Node: Other Inherited Files310712
++Node: Special Network311713
++Node: Special Caveats312573
++Node: Close Files And Pipes313522
++Ref: Close Files And Pipes-Footnote-1320709
++Ref: Close Files And Pipes-Footnote-2320857
++Node: Nonfatal321008
++Node: Output Summary323333
++Node: Output Exercises324555
++Node: Expressions325234
++Node: Values326422
++Node: Constants327100
++Node: Scalar Constants327791
++Ref: Scalar Constants-Footnote-1328655
++Node: Nondecimal-numbers328905
++Node: Regexp Constants331918
++Node: Using Constant Regexps332444
++Node: Variables335607
++Node: Using Variables336264
++Node: Assignment Options338174
++Node: Conversion340047
++Node: Strings And Numbers340571
++Ref: Strings And Numbers-Footnote-1343634
++Node: Locale influences conversions343743
++Ref: table-locale-affects346501
++Node: All Operators347119
++Node: Arithmetic Ops347748
++Node: Concatenation350254
++Ref: Concatenation-Footnote-1353101
++Node: Assignment Ops353208
++Ref: table-assign-ops358199
++Node: Increment Ops359512
++Node: Truth Values and Conditions362972
++Node: Truth Values364046
++Node: Typing and Comparison365094
++Node: Variable Typing365914
++Node: Comparison Operators369538
++Ref: table-relational-ops369957
++Node: POSIX String Comparison373452
++Ref: POSIX String Comparison-Footnote-1374526
++Node: Boolean Ops374665
++Ref: Boolean Ops-Footnote-1379147
++Node: Conditional Exp379239
++Node: Function Calls380975
++Node: Precedence384852
++Node: Locales388511
++Node: Expressions Summary390143
++Node: Patterns and Actions392716
++Node: Pattern Overview393836
++Node: Regexp Patterns395513
++Node: Expression Patterns396055
++Node: Ranges399836
++Node: BEGIN/END402944
++Node: Using BEGIN/END403705
++Ref: Using BEGIN/END-Footnote-1406441
++Node: I/O And BEGIN/END406547
++Node: BEGINFILE/ENDFILE408861
++Node: Empty411768
++Node: Using Shell Variables412085
++Node: Action Overview414359
++Node: Statements416684
++Node: If Statement418532
++Node: While Statement420027
++Node: Do Statement422055
++Node: For Statement423203
++Node: Switch Statement426361
++Node: Break Statement428747
++Node: Continue Statement430839
++Node: Next Statement432666
++Node: Nextfile Statement435049
++Node: Exit Statement437701
++Node: Built-in Variables440104
++Node: User-modified441237
++Node: Auto-set448823
++Ref: Auto-set-Footnote-1463210
++Ref: Auto-set-Footnote-2463416
++Node: ARGC and ARGV463472
++Node: Pattern Action Summary467685
++Node: Arrays470115
++Node: Array Basics471444
++Node: Array Intro472288
++Ref: figure-array-elements474263
++Ref: Array Intro-Footnote-1476967
++Node: Reference to Elements477095
++Node: Assigning Elements479559
++Node: Array Example480050
++Node: Scanning an Array481809
++Node: Controlling Scanning484831
++Ref: Controlling Scanning-Footnote-1490230
++Node: Numeric Array Subscripts490546
++Node: Uninitialized Subscripts492730
++Node: Delete494349
++Ref: Delete-Footnote-1497101
++Node: Multidimensional497158
++Node: Multiscanning500253
++Node: Arrays of Arrays501844
++Node: Arrays Summary506611
++Node: Functions508704
++Node: Built-in509742
++Node: Calling Built-in510820
++Node: Numeric Functions512816
++Ref: Numeric Functions-Footnote-1517649
++Ref: Numeric Functions-Footnote-2518006
++Ref: Numeric Functions-Footnote-3518054
++Node: String Functions518326
++Ref: String Functions-Footnote-1541830
++Ref: String Functions-Footnote-2541958
++Ref: String Functions-Footnote-3542206
++Node: Gory Details542293
++Ref: table-sub-escapes544084
++Ref: table-sub-proposed545603
++Ref: table-posix-sub546966
++Ref: table-gensub-escapes548507
++Ref: Gory Details-Footnote-1549330
++Node: I/O Functions549481
++Ref: I/O Functions-Footnote-1556701
++Node: Time Functions556849
++Ref: Time Functions-Footnote-1567354
++Ref: Time Functions-Footnote-2567422
++Ref: Time Functions-Footnote-3567580
++Ref: Time Functions-Footnote-4567691
++Ref: Time Functions-Footnote-5567803
++Ref: Time Functions-Footnote-6568030
++Node: Bitwise Functions568296
++Ref: table-bitwise-ops568890
++Ref: Bitwise Functions-Footnote-1573228
++Node: Type Functions573401
++Node: I18N Functions576062
++Node: User-defined577713
++Node: Definition Syntax578518
++Ref: Definition Syntax-Footnote-1584205
++Node: Function Example584276
++Ref: Function Example-Footnote-1587198
++Node: Function Caveats587220
++Node: Calling A Function587738
++Node: Variable Scope588696
++Node: Pass By Value/Reference591690
++Node: Return Statement595189
++Node: Dynamic Typing598168
++Node: Indirect Calls599098
++Ref: Indirect Calls-Footnote-1609349
++Node: Functions Summary609477
++Node: Library Functions612182
++Ref: Library Functions-Footnote-1615789
++Ref: Library Functions-Footnote-2615932
++Node: Library Names616103
++Ref: Library Names-Footnote-1619563
++Ref: Library Names-Footnote-2619786
++Node: General Functions619872
++Node: Strtonum Function620975
++Node: Assert Function623997
++Node: Round Function627323
++Node: Cliff Random Function628864
++Node: Ordinal Functions629880
++Ref: Ordinal Functions-Footnote-1632943
++Ref: Ordinal Functions-Footnote-2633195
++Node: Join Function633405
++Ref: Join Function-Footnote-1635175
++Node: Getlocaltime Function635375
++Node: Readfile Function639117
++Node: Shell Quoting641089
++Node: Data File Management642490
++Node: Filetrans Function643122
++Node: Rewind Function647218
++Node: File Checking648604
++Ref: File Checking-Footnote-1649938
++Node: Empty Files650139
++Node: Ignoring Assigns652118
++Node: Getopt Function653668
++Ref: Getopt Function-Footnote-1665137
++Node: Passwd Functions665337
++Ref: Passwd Functions-Footnote-1674176
++Node: Group Functions674264
++Ref: Group Functions-Footnote-1682161
++Node: Walking Arrays682368
++Node: Library Functions Summary685376
++Node: Library Exercises686782
++Node: Sample Programs687247
++Node: Running Examples688017
++Node: Clones688745
++Node: Cut Program689969
++Node: Egrep Program699690
++Ref: Egrep Program-Footnote-1707202
++Node: Id Program707312
++Node: Split Program710992
++Ref: Split Program-Footnote-1714451
++Node: Tee Program714580
++Node: Uniq Program717370
++Node: Wc Program724796
++Ref: Wc Program-Footnote-1729051
++Node: Miscellaneous Programs729145
++Node: Dupword Program730358
++Node: Alarm Program732388
++Node: Translate Program737243
++Ref: Translate Program-Footnote-1741808
++Node: Labels Program742078
++Ref: Labels Program-Footnote-1745429
++Node: Word Sorting745513
++Node: History Sorting749585
++Node: Extract Program751420
++Node: Simple Sed758949
++Node: Igawk Program762023
++Ref: Igawk Program-Footnote-1776354
++Ref: Igawk Program-Footnote-2776556
++Ref: Igawk Program-Footnote-3776678
++Node: Anagram Program776793
++Node: Signature Program779855
++Node: Programs Summary781102
++Node: Programs Exercises782316
++Ref: Programs Exercises-Footnote-1786445
++Node: Advanced Features786536
++Node: Nondecimal Data788526
++Node: Array Sorting790117
++Node: Controlling Array Traversal790817
++Ref: Controlling Array Traversal-Footnote-1799184
++Node: Array Sorting Functions799302
++Ref: Array Sorting Functions-Footnote-1804393
++Node: Two-way I/O804589
++Ref: Two-way I/O-Footnote-1810409
++Ref: Two-way I/O-Footnote-2810596
++Node: TCP/IP Networking810678
++Node: Profiling813796
++Node: Advanced Features Summary822250
++Node: Internationalization824094
++Node: I18N and L10N825574
++Node: Explaining gettext826261
++Ref: Explaining gettext-Footnote-1831284
++Ref: Explaining gettext-Footnote-2831469
++Node: Programmer i18n831634
++Ref: Programmer i18n-Footnote-1836489
++Node: Translator i18n836538
++Node: String Extraction837332
++Ref: String Extraction-Footnote-1838464
++Node: Printf Ordering838550
++Ref: Printf Ordering-Footnote-1841336
++Node: I18N Portability841400
++Ref: I18N Portability-Footnote-1843856
++Node: I18N Example843919
++Ref: I18N Example-Footnote-1846725
++Node: Gawk I18N846798
++Node: I18N Summary847443
++Node: Debugger848784
++Node: Debugging849806
++Node: Debugging Concepts850247
++Node: Debugging Terms852056
++Node: Awk Debugging854631
++Node: Sample Debugging Session855537
++Node: Debugger Invocation856071
++Node: Finding The Bug857457
++Node: List of Debugger Commands863935
++Node: Breakpoint Control865268
++Node: Debugger Execution Control868962
++Node: Viewing And Changing Data872324
++Node: Execution Stack875698
++Node: Debugger Info877335
++Node: Miscellaneous Debugger Commands881406
++Node: Readline Support886494
++Node: Limitations887390
++Ref: Limitations-Footnote-1891621
++Node: Debugging Summary891672
++Node: Arbitrary Precision Arithmetic892951
++Node: Computer Arithmetic894367
++Ref: table-numeric-ranges897958
++Ref: Computer Arithmetic-Footnote-1898680
++Node: Math Definitions898737
++Ref: table-ieee-formats902051
++Ref: Math Definitions-Footnote-1902654
++Node: MPFR features902759
++Node: FP Math Caution904476
++Ref: FP Math Caution-Footnote-1905548
++Node: Inexactness of computations905917
++Node: Inexact representation906877
++Node: Comparing FP Values908237
++Node: Errors accumulate909319
++Node: Getting Accuracy910752
++Node: Try To Round913462
++Node: Setting precision914361
++Ref: table-predefined-precision-strings915058
++Node: Setting the rounding mode916888
++Ref: table-gawk-rounding-modes917262
++Ref: Setting the rounding mode-Footnote-1920670
++Node: Arbitrary Precision Integers920849
++Ref: Arbitrary Precision Integers-Footnote-1925766
++Node: POSIX Floating Point Problems925915
++Ref: POSIX Floating Point Problems-Footnote-1929797
++Node: Floating point summary929835
++Node: Dynamic Extensions932025
++Node: Extension Intro933578
++Node: Plugin License934844
++Node: Extension Mechanism Outline935641
++Ref: figure-load-extension936080
++Ref: figure-register-new-function937645
++Ref: figure-call-new-function938737
++Node: Extension API Description940799
++Node: Extension API Functions Introduction942331
++Node: General Data Types947190
++Ref: General Data Types-Footnote-1953145
++Node: Memory Allocation Functions953444
++Ref: Memory Allocation Functions-Footnote-1956289
++Node: Constructor Functions956388
++Node: Registration Functions958133
++Node: Extension Functions958818
++Node: Exit Callback Functions961117
++Node: Extension Version String962367
++Node: Input Parsers963030
++Node: Output Wrappers972915
++Node: Two-way processors977427
++Node: Printing Messages979691
++Ref: Printing Messages-Footnote-1980765
++Node: Updating ERRNO980918
++Node: Requesting Values981657
++Ref: table-value-types-returned982394
++Node: Accessing Parameters983277
++Node: Symbol Table Access984512
++Node: Symbol table by name985024
++Node: Symbol table by cookie987045
++Ref: Symbol table by cookie-Footnote-1991194
++Node: Cached values991258
++Ref: Cached values-Footnote-1994759
++Node: Array Manipulation994850
++Ref: Array Manipulation-Footnote-1995941
++Node: Array Data Types995978
++Ref: Array Data Types-Footnote-1998636
++Node: Array Functions998728
++Node: Flattening Arrays1002586
++Node: Creating Arrays1009494
++Node: Redirection API1014265
++Node: Extension API Variables1017096
++Node: Extension Versioning1017729
++Node: Extension API Informational Variables1019620
++Node: Extension API Boilerplate1020684
++Node: Finding Extensions1024498
++Node: Extension Example1025057
++Node: Internal File Description1025855
++Node: Internal File Ops1029935
++Ref: Internal File Ops-Footnote-11041697
++Node: Using Internal File Ops1041837
++Ref: Using Internal File Ops-Footnote-11044220
++Node: Extension Samples1044494
++Node: Extension Sample File Functions1046023
++Node: Extension Sample Fnmatch1053672
++Node: Extension Sample Fork1055159
++Node: Extension Sample Inplace1056377
++Node: Extension Sample Ord1059587
++Node: Extension Sample Readdir1060423
++Ref: table-readdir-file-types1061312
++Node: Extension Sample Revout1062117
++Node: Extension Sample Rev2way1062706
++Node: Extension Sample Read write array1063446
++Node: Extension Sample Readfile1065388
++Node: Extension Sample Time1066483
++Node: Extension Sample API Tests1067831
++Node: gawkextlib1068323
++Node: Extension summary1070770
++Node: Extension Exercises1074462
++Node: Language History1075959
++Node: V7/SVR3.11077615
++Node: SVR41079767
++Node: POSIX1081201
++Node: BTL1082580
++Node: POSIX/GNU1083309
++Node: Feature History1089171
++Node: Common Extensions1103541
++Node: Ranges and Locales1104824
++Ref: Ranges and Locales-Footnote-11109440
++Ref: Ranges and Locales-Footnote-21109467
++Ref: Ranges and Locales-Footnote-31109702
++Node: Contributors1109923
++Node: History summary1115492
++Node: Installation1116872
++Node: Gawk Distribution1117816
++Node: Getting1118300
++Node: Extracting1119261
++Node: Distribution contents1120899
++Node: Unix Installation1126993
++Node: Quick Installation1127675
++Node: Shell Startup Files1130089
++Node: Additional Configuration Options1131167
++Node: Configuration Philosophy1132972
++Node: Non-Unix Installation1135341
++Node: PC Installation1135799
++Node: PC Binary Installation1137119
++Node: PC Compiling1138971
++Ref: PC Compiling-Footnote-11141995
++Node: PC Testing1142104
++Node: PC Using1143284
++Node: Cygwin1147398
++Node: MSYS1148168
++Node: VMS Installation1148669
++Node: VMS Compilation1149460
++Ref: VMS Compilation-Footnote-11150689
++Node: VMS Dynamic Extensions1150747
++Node: VMS Installation Details1152432
++Node: VMS Running1154685
++Node: VMS GNV1158964
++Node: VMS Old Gawk1159699
++Node: Bugs1160170
++Node: Other Versions1164367
++Node: Installation summary1170951
++Node: Notes1172009
++Node: Compatibility Mode1172874
++Node: Additions1173656
++Node: Accessing The Source1174581
++Node: Adding Code1176016
++Node: New Ports1182235
++Node: Derived Files1186723
++Ref: Derived Files-Footnote-11192208
++Ref: Derived Files-Footnote-21192243
++Ref: Derived Files-Footnote-31192841
++Node: Future Extensions1192955
++Node: Implementation Limitations1193613
++Node: Extension Design1194796
++Node: Old Extension Problems1195950
++Ref: Old Extension Problems-Footnote-11197468
++Node: Extension New Mechanism Goals1197525
++Ref: Extension New Mechanism Goals-Footnote-11200889
++Node: Extension Other Design Decisions1201078
++Node: Extension Future Growth1203191
++Node: Old Extension Mechanism1204027
++Node: Notes summary1205790
++Node: Basic Concepts1206972
++Node: Basic High Level1207653
++Ref: figure-general-flow1207935
++Ref: figure-process-flow1208620
++Ref: Basic High Level-Footnote-11211921
++Node: Basic Data Typing1212106
++Node: Glossary1215434
++Node: Copying1247380
++Node: GNU Free Documentation License1284919
++Node: Index1310037
  
  End Tag Table
diff --cc doc/gawk.texi
index fe5c569,ec816c3..5ffc533
--- a/doc/gawk.texi
+++ b/doc/gawk.texi
@@@ -8248,13 -8095,6 +8223,13 @@@ a record, such as a file that cannot b
  returns @minus{}1.  In this case, @command{gawk} sets the variable
  @code{ERRNO} to a string describing the error that occurred.
  
 +If @code{ERRNO} indicates that the I/O operation may be
 +retried, and @code{PROCINFO["@var{input}", "RETRY"]} is set,
 +then @code{getline} returns @minus{}2
 +instead of @minus{}1, and further calls to @code{getline}
- may be attemped.  @DBXREF{Retrying Input} for further information about
++may be attemped.  @xref{Retrying Input} for further information about
 +this feature.
 +
  In the following examples, @var{command} stands for a string value that
  represents a shell command.
  
@@@ -8909,8 -8749,7 +8884,8 @@@ on a per-command or per-connection basi
  the attempt to read from the underlying device may
  succeed in a later attempt. This is a limitation, and it also
  means that you cannot use this to multiplex input from
- two or more sources.  @DBXREF{Retrying Input} for a way to enable 
 -two or more sources.
++two or more sources.  @xref{Retrying Input} for a way to enable 
 +later I/O attempts to succeed.
  
  Assigning a timeout value prevents read operations from
  blocking indefinitely. But bear in mind that there are other ways
@@@ -15299,14 -15014,6 +15273,14 @@@ to test for these element
  The following elements allow you to change @command{gawk}'s behavior:
  
  @table @code
 address@hidden PROCINFO["NONFATAL"]
 +If this element exists, then I/O errors for all output redirections become 
nonfatal.
- @DBXREF{Nonfatal}.
address@hidden
 +
 address@hidden PROCINFO["@var{output_name}", "NONFATAL"]
 +Make output errors for @var{output_name} be nonfatal.
- @DBXREF{Nonfatal}.
address@hidden
 +
  @item PROCINFO["@var{command}", "pty"]
  For two-way communication to @var{command}, use a pseudo-tty instead
  of setting up a two-way pipe.
@@@ -34009,78 -33418,9 +33966,78 @@@ $ @kbd{AWKLIBPATH=$PWD ./gawk -f subarr
  @end example
  
  @noindent
- (@DBXREF{Finding Extensions} for more information on the
+ (@xref{Finding Extensions} for more information on the
  @env{AWKLIBPATH} environment variable.)
  
 address@hidden Redirection API
 address@hidden Accessing and Manipulating Redirections
 +
 +The following function allows extensions to access and manipulate 
redirections.
 +
 address@hidden @code
 address@hidden awk_bool_t get_file(const char *name,
 address@hidden @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ size_t name_len,
 address@hidden @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ const char *filetype,
 address@hidden @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ int fd,
 address@hidden @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ const awk_input_buf_t 
**ibufp,
 address@hidden @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ const awk_output_buf_t 
**obufp);
 +Look up a file in @command{gawk}'s internal redirection table.
 +If @code{name} is @code{NULL} or @code{name_len} is zero, return
 +data for the currently open input file corresponding to @code{FILENAME}.
 +(This does not access the @code{filetype} argument, so that may be 
undefined).  
 +If the file is not already open, attempt to open it.
 +The @code{filetype} argument must be zero-terminated and should be one of:
 +
 address@hidden @code
 address@hidden ">"
 +A file opened for output.
 +
 address@hidden ">>"
 +A file opened for append.
 +
 address@hidden "<"
 +A file opened for input.
 +
 address@hidden "|>"
 +A pipe opened for output.
 +
 address@hidden "|<"
 +A pipe opened for input.
 +
 address@hidden "|&"
 +A two-way coprocess.
 address@hidden table
 +
 +On error, return a @code{false} value.  Otherwise, return
 address@hidden, and return additional information about the redirection
 +in the @code{ibufp} and @code{obufp} pointers.  For input
 +redirections, the @code{*ibufp} value should be address@hidden,
 +and @code{*obufp} should be @code{NULL}.  For output redirections,
 +the @code{*obufp} value should be address@hidden, and @code{*ibufp}
 +should be @code{NULL}.  For two-way coprocesses, both values should
 +be address@hidden
 +
 +In the usual case, the extension is interested in @code{(*ibufp)->fd}
 +and/or @code{fileno((*obufp)->fp)}.  If the file is not already
 +open, and the @code{fd} argument is non-negative, @command{gawk}
 +will use that file descriptor instead of opening the file in the
 +usual way.  If @code{fd} is non-negative, but the file exists already,
 address@hidden ignores @code{fd} and returns the existing file.  It is
 +the caller's responsibility to notice that neither the @code{fd} in
 +the returned @code{awk_input_buf_t} nor the @code{fd} in the returned
 address@hidden matches the requested value.
 +
 +Note that supplying a file descriptor is currently @emph{not} supported
 +for pipes.  However, supplying a file descriptor should work for input,
 +output, append, and two-way (coprocess) sockets.  If @code{filetype}
 +is two-way, @command{gawk} assumes that it is a socket!  Note that in
 +the two-way case, the input and output file descriptors may differ.
 +To check for success, you must check whether either matches.
 address@hidden table
 +
 +It is anticipated that this API function will be used to implement I/O
 +multiplexing and a socket library.
 +
  @node Extension API Variables
  @subsection API Variables
  
diff --cc doc/gawktexi.in
index 8218dd6,678fac3..14257c8
--- a/doc/gawktexi.in
+++ b/doc/gawktexi.in
@@@ -7848,13 -7695,6 +7823,13 @@@ a record, such as a file that cannot b
  returns @minus{}1.  In this case, @command{gawk} sets the variable
  @code{ERRNO} to a string describing the error that occurred.
  
 +If @code{ERRNO} indicates that the I/O operation may be
 +retried, and @code{PROCINFO["@var{input}", "RETRY"]} is set,
 +then @code{getline} returns @minus{}2
 +instead of @minus{}1, and further calls to @code{getline}
- may be attemped.  @DBXREF{Retrying Input} for further information about
++may be attemped.  @xref{Retrying Input} for further information about
 +this feature.
 +
  In the following examples, @var{command} stands for a string value that
  represents a shell command.
  
@@@ -8509,8 -8349,7 +8484,8 @@@ on a per-command or per-connection basi
  the attempt to read from the underlying device may
  succeed in a later attempt. This is a limitation, and it also
  means that you cannot use this to multiplex input from
- two or more sources.  @DBXREF{Retrying Input} for a way to enable 
 -two or more sources.
++two or more sources.  @xref{Retrying Input} for a way to enable 
 +later I/O attempts to succeed.
  
  Assigning a timeout value prevents read operations from
  blocking indefinitely. But bear in mind that there are other ways
@@@ -14627,14 -14342,6 +14601,14 @@@ to test for these element
  The following elements allow you to change @command{gawk}'s behavior:
  
  @table @code
 address@hidden PROCINFO["NONFATAL"]
 +If this element exists, then I/O errors for all output redirections become 
nonfatal.
- @DBXREF{Nonfatal}.
address@hidden
 +
 address@hidden PROCINFO["@var{output_name}", "NONFATAL"]
 +Make output errors for @var{output_name} be nonfatal.
- @DBXREF{Nonfatal}.
address@hidden
 +
  @item PROCINFO["@var{command}", "pty"]
  For two-way communication to @var{command}, use a pseudo-tty instead
  of setting up a two-way pipe.
@@@ -33100,78 -32509,9 +33057,78 @@@ $ @kbd{AWKLIBPATH=$PWD ./gawk -f subarr
  @end example
  
  @noindent
- (@DBXREF{Finding Extensions} for more information on the
+ (@xref{Finding Extensions} for more information on the
  @env{AWKLIBPATH} environment variable.)
  
 address@hidden Redirection API
 address@hidden Accessing and Manipulating Redirections
 +
 +The following function allows extensions to access and manipulate 
redirections.
 +
 address@hidden @code
 address@hidden awk_bool_t get_file(const char *name,
 address@hidden @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ size_t name_len,
 address@hidden @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ const char *filetype,
 address@hidden @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ int fd,
 address@hidden @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ const awk_input_buf_t 
**ibufp,
 address@hidden @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ const awk_output_buf_t 
**obufp);
 +Look up a file in @command{gawk}'s internal redirection table.
 +If @code{name} is @code{NULL} or @code{name_len} is zero, return
 +data for the currently open input file corresponding to @code{FILENAME}.
 +(This does not access the @code{filetype} argument, so that may be 
undefined).  
 +If the file is not already open, attempt to open it.
 +The @code{filetype} argument must be zero-terminated and should be one of:
 +
 address@hidden @code
 address@hidden ">"
 +A file opened for output.
 +
 address@hidden ">>"
 +A file opened for append.
 +
 address@hidden "<"
 +A file opened for input.
 +
 address@hidden "|>"
 +A pipe opened for output.
 +
 address@hidden "|<"
 +A pipe opened for input.
 +
 address@hidden "|&"
 +A two-way coprocess.
 address@hidden table
 +
 +On error, return a @code{false} value.  Otherwise, return
 address@hidden, and return additional information about the redirection
 +in the @code{ibufp} and @code{obufp} pointers.  For input
 +redirections, the @code{*ibufp} value should be address@hidden,
 +and @code{*obufp} should be @code{NULL}.  For output redirections,
 +the @code{*obufp} value should be address@hidden, and @code{*ibufp}
 +should be @code{NULL}.  For two-way coprocesses, both values should
 +be address@hidden
 +
 +In the usual case, the extension is interested in @code{(*ibufp)->fd}
 +and/or @code{fileno((*obufp)->fp)}.  If the file is not already
 +open, and the @code{fd} argument is non-negative, @command{gawk}
 +will use that file descriptor instead of opening the file in the
 +usual way.  If @code{fd} is non-negative, but the file exists already,
 address@hidden ignores @code{fd} and returns the existing file.  It is
 +the caller's responsibility to notice that neither the @code{fd} in
 +the returned @code{awk_input_buf_t} nor the @code{fd} in the returned
 address@hidden matches the requested value.
 +
 +Note that supplying a file descriptor is currently @emph{not} supported
 +for pipes.  However, supplying a file descriptor should work for input,
 +output, append, and two-way (coprocess) sockets.  If @code{filetype}
 +is two-way, @command{gawk} assumes that it is a socket!  Note that in
 +the two-way case, the input and output file descriptors may differ.
 +To check for success, you must check whether either matches.
 address@hidden table
 +
 +It is anticipated that this API function will be used to implement I/O
 +multiplexing and a socket library.
 +
  @node Extension API Variables
  @subsection API Variables
  

-----------------------------------------------------------------------

Summary of changes:
 ChangeLog       |   11 +
 NEWS            |    3 +-
 README          |    6 +-
 configure       |  817 ++++++----------------------------
 configure.ac    |    2 +-
 dfa.c           |   12 +-
 doc/ChangeLog   |    8 +
 doc/gawk.info   | 1353 +++++++++++++++++++++++++++----------------------------
 doc/gawk.texi   |  329 ++++++--------
 doc/gawktexi.in |  321 ++++++--------
 doc/texinfo.tex | 1090 +++++++++++++++++++++++++++++++-------------
 11 files changed, 1894 insertions(+), 2058 deletions(-)


hooks/post-receive
-- 
gawk



reply via email to

[Prev in Thread] Current Thread [Next in Thread]