gawk-diffs
[Top][All Lists]
Advanced

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

[gawk-diffs] [SCM] gawk branch, gawk-4.1-stable, updated. gawk-4.1.0-822


From: Arnold Robbins
Subject: [gawk-diffs] [SCM] gawk branch, gawk-4.1-stable, updated. gawk-4.1.0-822-g2d88b04
Date: Sat, 20 Feb 2016 19:08:57 +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, gawk-4.1-stable has been updated
       via  2d88b04891825ae4e687b95813cff87627404930 (commit)
       via  090687d94ad8a411c5e2cc434345e843ad381082 (commit)
      from  7744707de0e95e1e0009204a7d4886d69db24530 (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=2d88b04891825ae4e687b95813cff87627404930

commit 2d88b04891825ae4e687b95813cff87627404930
Author: Arnold D. Robbins <address@hidden>
Date:   Sat Feb 20 21:08:35 2016 +0200

    Sync regex with GLIBC.

diff --git a/ChangeLog b/ChangeLog
index 3309d36..898a5f4 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,8 @@
+2016-02-20         Arnold D. Robbins     <address@hidden>
+
+       * regcomp.c, regex.c, regex.h, regex_internal.c, regex_internal.h,
+       regexec.c: Sync with GLIBC, mostly prototype changes.
+
 2016-02-18         Arnold D. Robbins     <address@hidden>
 
        Fix profile / pretty-printing to chain else-ifs.
diff --git a/regcomp.c b/regcomp.c
index 4541037..c2fe06b 100644
--- a/regcomp.c
+++ b/regcomp.c
@@ -1,5 +1,5 @@
 /* Extended regular expression matching and search library.
-   Copyright (C) 2002-2015 Free Software Foundation, Inc.
+   Copyright (C) 2002-2016 Free Software Foundation, Inc.
    This file is part of the GNU C Library.
    Contributed by Isamu Hasegawa <address@hidden>.
 
@@ -240,10 +240,8 @@ btowc (int c)
    are set in BUFP on entry.  */
 
 const char *
-re_compile_pattern (pattern, length, bufp)
-    const char *pattern;
-    size_t length;
-    struct re_pattern_buffer *bufp;
+re_compile_pattern (const char *pattern, size_t length,
+                   struct re_pattern_buffer *bufp)
 {
   reg_errcode_t ret;
 
@@ -281,8 +279,7 @@ reg_syntax_t re_syntax_options;
    defined in regex.h.  We return the old syntax.  */
 
 reg_syntax_t
-re_set_syntax (syntax)
-    reg_syntax_t syntax;
+re_set_syntax (reg_syntax_t syntax)
 {
   reg_syntax_t ret = re_syntax_options;
 
@@ -294,8 +291,7 @@ weak_alias (__re_set_syntax, re_set_syntax)
 #endif
 
 int
-re_compile_fastmap (bufp)
-    struct re_pattern_buffer *bufp;
+re_compile_fastmap (struct re_pattern_buffer *bufp)
 {
   re_dfa_t *dfa = (re_dfa_t *) bufp->buffer;
   char *fastmap = bufp->fastmap;
@@ -494,10 +490,7 @@ re_compile_fastmap_iter (regex_t *bufp, const 
re_dfastate_t *init_state,
    the return codes and their meanings.)  */
 
 int
-regcomp (preg, pattern, cflags)
-    regex_t *__restrict preg;
-    const char *__restrict pattern;
-    int cflags;
+regcomp (regex_t *__restrict preg, const char *__restrict pattern, int cflags)
 {
   reg_errcode_t ret;
   reg_syntax_t syntax = ((cflags & REG_EXTENDED) ? RE_SYNTAX_POSIX_EXTENDED
@@ -556,11 +549,8 @@ weak_alias (__regcomp, regcomp)
    from either regcomp or regexec.   We don't use PREG here.  */
 
 size_t
-regerror (errcode, preg, errbuf, errbuf_size)
-    int errcode;
-    const regex_t *__restrict preg;
-    char *__restrict errbuf;
-    size_t errbuf_size;
+regerror (int errcode, const regex_t *__restrict preg, char *__restrict errbuf,
+         size_t errbuf_size)
 {
   const char *msg;
   size_t msg_size;
@@ -667,8 +657,7 @@ free_dfa_content (re_dfa_t *dfa)
 /* Free dynamically allocated space used by PREG.  */
 
 void
-regfree (preg)
-    regex_t *preg;
+regfree (regex_t *preg)
 {
   re_dfa_t *dfa = (re_dfa_t *) preg->buffer;
   if (BE (dfa != NULL, 1))
@@ -701,8 +690,7 @@ char *
    regcomp/regexec above without link errors.  */
 weak_function
 # endif
-re_comp (s)
-     const char *s;
+re_comp (const char *s)
 {
   reg_errcode_t ret;
   char *fastmap;
diff --git a/regex.c b/regex.c
index ed6a4f5..9f133fa 100644
--- a/regex.c
+++ b/regex.c
@@ -1,5 +1,5 @@
 /* Extended regular expression matching and search library.
-   Copyright (C) 2002-2015 Free Software Foundation, Inc.
+   Copyright (C) 2002-2016 Free Software Foundation, Inc.
    This file is part of the GNU C Library.
    Contributed by Isamu Hasegawa <address@hidden>.
 
diff --git a/regex.h b/regex.h
index 0a183df..872c4b6 100644
--- a/regex.h
+++ b/regex.h
@@ -1,6 +1,6 @@
 /* Definitions for data structures and routines for the regular
    expression library.
-   Copyright (C) 1985, 1989-2015 Free Software Foundation, Inc.
+   Copyright (C) 1985, 1989-2016 Free Software Foundation, Inc.
    This file is part of the GNU C Library.
 
    The GNU C Library is free software; you can redistribute it and/or
diff --git a/regex_internal.c b/regex_internal.c
index 2d17093..759c7c8 100644
--- a/regex_internal.c
+++ b/regex_internal.c
@@ -320,12 +320,13 @@ build_wcs_upper_buffer (re_string_t *pstr)
                               + byte_idx), remain_len, &pstr->cur_state);
          if (BE (mbclen + 2 > 2, 1))
            {
-             wchar_t wcu = towupper (wc);
-             if (wcu != wc)
+             wchar_t wcu = wc;
+             if (iswlower (wc))
                {
                  size_t mbcdlen;
 
-                 mbcdlen = wcrtomb (buf, wcu, &prev_st);
+                 wcu = towupper (wc);
+                 mbcdlen = __wcrtomb (buf, wcu, &prev_st);
                  if (BE (mbclen == mbcdlen, 1))
                    memcpy (pstr->mbs + byte_idx, buf, mbclen);
                  else
@@ -389,11 +390,12 @@ build_wcs_upper_buffer (re_string_t *pstr)
        mbclen = __mbrtowc (&wc, p, remain_len, &pstr->cur_state);
        if (BE (mbclen + 2 > 2, 1))
          {
-           wchar_t wcu = towupper (wc);
-           if (wcu != wc)
+           wchar_t wcu = wc;
+           if (iswlower (wc))
              {
                size_t mbcdlen;
 
+               wcu = towupper (wc);
                mbcdlen = wcrtomb ((char *) buf, wcu, &prev_st);
                if (BE (mbclen == mbcdlen, 1))
                  memcpy (pstr->mbs + byte_idx, buf, mbclen);
@@ -838,7 +840,7 @@ re_string_reconstruct (re_string_t *pstr, int idx, int 
eflags)
 }
 
 static unsigned char
-internal_function __attribute__ ((pure))
+internal_function __attribute ((pure))
 re_string_peek_byte_case (const re_string_t *pstr, int idx)
 {
   int ch, off;
@@ -1370,7 +1372,7 @@ re_node_set_insert_last (re_node_set *set, int elem)
    return 1 if SET1 and SET2 are equivalent, return 0 otherwise.  */
 
 static int
-internal_function __attribute__ ((pure))
+internal_function __attribute ((pure))
 re_node_set_compare (const re_node_set *set1, const re_node_set *set2)
 {
   int i;
@@ -1385,7 +1387,7 @@ re_node_set_compare (const re_node_set *set1, const 
re_node_set *set2)
 /* Return (idx + 1) if SET contains the element ELEM, return 0 otherwise.  */
 
 static int
-internal_function __attribute__ ((pure))
+internal_function __attribute ((pure))
 re_node_set_contains (const re_node_set *set, int elem)
 {
   unsigned int idx, right, mid;
diff --git a/regex_internal.h b/regex_internal.h
index 28b4239..09f17b2 100644
--- a/regex_internal.h
+++ b/regex_internal.h
@@ -1,5 +1,5 @@
 /* Extended regular expression matching and search library.
-   Copyright (C) 2002-2015 Free Software Foundation, Inc.
+   Copyright (C) 2002-2016 Free Software Foundation, Inc.
    This file is part of the GNU C Library.
    Contributed by Isamu Hasegawa <address@hidden>.
 
@@ -45,7 +45,7 @@
 # include <stdint.h>
 #endif /* HAVE_STDINT_H || _LIBC */
 #if defined _LIBC
-# include <bits/libc-lock.h>
+# include <libc-lock.h>
 #else
 # define __libc_lock_define(CLASS,NAME)
 # define __libc_lock_init(NAME) do { } while (0)
@@ -770,7 +770,7 @@ bitset_mask (bitset_t dest, const bitset_t src)
 }
 
 #ifdef RE_ENABLE_I18N
-/* Functions for re_string.  */
+/* Inline functions for re_string.  */
 static int
 internal_function __attribute__ ((pure, unused))
 re_string_char_size_at (const re_string_t *pstr, int idx)
diff --git a/regexec.c b/regexec.c
index 74f1a5b..84264bb 100644
--- a/regexec.c
+++ b/regexec.c
@@ -229,12 +229,8 @@ MIN(size_t a, size_t b)
    We return 0 if we find a match and REG_NOMATCH if not.  */
 
 int
-regexec (preg, string, nmatch, pmatch, eflags)
-    const regex_t *__restrict preg;
-    const char *__restrict string;
-    size_t nmatch;
-    regmatch_t pmatch[];
-    int eflags;
+regexec (const regex_t *__restrict preg, const char *__restrict string,
+        size_t nmatch, regmatch_t pmatch[], int eflags)
 {
   reg_errcode_t err;
   int start, length;
@@ -314,11 +310,8 @@ compat_symbol (libc, __compat_regexec, regexec, GLIBC_2_0);
    match was found and -2 indicates an internal error.  */
 
 int
-re_match (bufp, string, length, start, regs)
-    struct re_pattern_buffer *bufp;
-    const char *string;
-    int length, start;
-    struct re_registers *regs;
+re_match (struct re_pattern_buffer *bufp, const char *string, int length,
+         int start, struct re_registers *regs)
 {
   return re_search_stub (bufp, string, length, start, 0, length, regs, 1);
 }
@@ -327,11 +320,8 @@ weak_alias (__re_match, re_match)
 #endif
 
 int
-re_search (bufp, string, length, start, range, regs)
-    struct re_pattern_buffer *bufp;
-    const char *string;
-    int length, start, range;
-    struct re_registers *regs;
+re_search (struct re_pattern_buffer *bufp, const char *string, int length,
+          int start, int range, struct re_registers *regs)
 {
   return re_search_stub (bufp, string, length, start, range, length, regs, 0);
 }
@@ -340,11 +330,9 @@ weak_alias (__re_search, re_search)
 #endif
 
 int
-re_match_2 (bufp, string1, length1, string2, length2, start, regs, stop)
-    struct re_pattern_buffer *bufp;
-    const char *string1, *string2;
-    int length1, length2, start, stop;
-    struct re_registers *regs;
+re_match_2 (struct re_pattern_buffer *bufp, const char *string1, int length1,
+           const char *string2, int length2, int start,
+           struct re_registers *regs, int stop)
 {
   return re_search_2_stub (bufp, string1, length1, string2, length2,
                           start, 0, regs, stop, 1);
@@ -354,11 +342,9 @@ weak_alias (__re_match_2, re_match_2)
 #endif
 
 int
-re_search_2 (bufp, string1, length1, string2, length2, start, range, regs, 
stop)
-    struct re_pattern_buffer *bufp;
-    const char *string1, *string2;
-    int length1, length2, start, range, stop;
-    struct re_registers *regs;
+re_search_2 (struct re_pattern_buffer *bufp, const char *string1, int length1,
+            const char *string2, int length2, int start, int range,
+            struct re_registers *regs, int stop)
 {
   return re_search_2_stub (bufp, string1, length1, string2, length2,
                           start, range, regs, stop, 0);
@@ -368,12 +354,11 @@ weak_alias (__re_search_2, re_search_2)
 #endif
 
 static int
-re_search_2_stub (bufp, string1, length1, string2, length2, start, range, regs,
-                 stop, ret_len)
-    struct re_pattern_buffer *bufp;
-    const char *string1, *string2;
-    int length1, length2, start, range, stop, ret_len;
-    struct re_registers *regs;
+internal_function
+re_search_2_stub (struct re_pattern_buffer *bufp, const char *string1,
+                 int length1, const char *string2, int length2, int start,
+                 int range, struct re_registers *regs,
+                 int stop, int ret_len)
 {
   const char *str;
   int rval;
@@ -415,11 +400,10 @@ re_search_2_stub (bufp, string1, length1, string2, 
length2, start, range, regs,
    otherwise the position of the match is returned.  */
 
 static int
-re_search_stub (bufp, string, length, start, range, stop, regs, ret_len)
-    struct re_pattern_buffer *bufp;
-    const char *string;
-    int length, start, range, stop, ret_len;
-    struct re_registers *regs;
+internal_function
+re_search_stub (struct re_pattern_buffer *bufp, const char *string, int length,
+               int start, int range, int stop, struct re_registers *regs,
+               int ret_len)
 {
   reg_errcode_t result;
   regmatch_t *pmatch;
@@ -503,10 +487,9 @@ re_search_stub (bufp, string, length, start, range, stop, 
regs, ret_len)
 }
 
 static unsigned
-re_copy_regs (regs, pmatch, nregs, regs_allocated)
-    struct re_registers *regs;
-    regmatch_t *pmatch;
-    int nregs, regs_allocated;
+internal_function
+re_copy_regs (struct re_registers *regs, regmatch_t *pmatch, int nregs,
+             int regs_allocated)
 {
   int rval = REGS_REALLOCATE;
   int i;
@@ -583,11 +566,8 @@ re_copy_regs (regs, pmatch, nregs, regs_allocated)
    freeing the old data.  */
 
 void
-re_set_registers (bufp, regs, num_regs, starts, ends)
-    struct re_pattern_buffer *bufp;
-    struct re_registers *regs;
-    unsigned num_regs;
-    regoff_t *starts, *ends;
+re_set_registers (struct re_pattern_buffer *bufp, struct re_registers *regs,
+                 unsigned num_regs, regoff_t *starts, regoff_t *ends)
 {
   if (num_regs)
     {
@@ -615,8 +595,7 @@ int
 # ifdef _LIBC
 weak_function
 # endif
-re_exec (s)
-     const char *s;
+re_exec (const char *s)
 {
   return 0 == regexec (&re_comp_buf, s, 0, NULL, 0);
 }
@@ -634,14 +613,10 @@ re_exec (s)
    (START + RANGE >= 0 && START + RANGE <= LENGTH)  */
 
 static reg_errcode_t
-__attribute_warn_unused_result__
-re_search_internal (preg, string, length, start, range, stop, nmatch, pmatch,
-                   eflags)
-    const regex_t *preg;
-    const char *string;
-    int length, start, range, stop, eflags;
-    size_t nmatch;
-    regmatch_t pmatch[];
+__attribute_warn_unused_result__ internal_function
+re_search_internal (const regex_t *preg, const char *string, int length,
+                   int start, int range, int stop, size_t nmatch,
+                   regmatch_t pmatch[], int eflags)
 {
   reg_errcode_t err;
   const re_dfa_t *dfa = (const re_dfa_t *) preg->buffer;
@@ -962,6 +937,7 @@ re_search_internal (preg, string, length, start, range, 
stop, nmatch, pmatch,
 }
 
 static reg_errcode_t
+internal_function __attribute_warn_unused_result__
 prune_impossible_nodes (re_match_context_t *mctx)
 {
   const re_dfa_t *const dfa = mctx->dfa;
@@ -1057,7 +1033,7 @@ prune_impossible_nodes (re_match_context_t *mctx)
    since initial states may have constraints like "\<", "^", etc..  */
 
 static inline re_dfastate_t *
-__attribute__ ((always_inline)) internal_function
+__attribute ((always_inline)) internal_function
 acquire_init_state_context (reg_errcode_t *err, const re_match_context_t *mctx,
                            int idx)
 {

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

commit 090687d94ad8a411c5e2cc434345e843ad381082
Author: Arnold D. Robbins <address@hidden>
Date:   Sat Feb 20 21:07:13 2016 +0200

    Doc update: Unicode in bracket expresssions.

diff --git a/doc/ChangeLog b/doc/ChangeLog
index d368c60..bf5f47f 100644
--- a/doc/ChangeLog
+++ b/doc/ChangeLog
@@ -1,3 +1,8 @@
+2016-02-20         Arnold D. Robbins     <address@hidden>
+
+       * gawktexilin (Bracket Expressions): Add a small note about
+       Unicode in bracket expressions.
+
 2016-02-18         Arnold D. Robbins     <address@hidden>
 
        * gawktexi.in: Fixes in wc.awk and in cut.awk. Thanks to David Ward,
diff --git a/doc/gawk.info b/doc/gawk.info
index 94516fd..b5b4547 100644
--- a/doc/gawk.info
+++ b/doc/gawk.info
@@ -3718,6 +3718,14 @@ character set.  For example, '[0-9]' is equivalent to 
'[0123456789]'.
 standard and 'gawk' have changed over time.  This is mainly of
 historical interest.)
 
+   With the increasing popularity of the Unicode character standard
+(http://www.unicode.org), there is an additional wrinkle to consider.
+Octal and hexadecimal escape sequences inside bracket expressions are
+taken to represent only single-byte characters (characters whose values
+fit within the range 0-256).  To match a range of characters where the
+endpoints of the range are larger than 256, enter the multibyte
+encodings of the characters directly.
+
    To include one of the characters '\', ']', '-', or '^' in a bracket
 expression, put a '\' in front of it.  For example:
 
@@ -31581,7 +31589,7 @@ Index
 * - (hyphen), -= operator:               Assignment Ops.      (line 129)
 * - (hyphen), -= operator <1>:           Precedence.          (line  94)
 * - (hyphen), filenames beginning with:  Options.             (line  60)
-* - (hyphen), in bracket expressions:    Bracket Expressions. (line  17)
+* - (hyphen), in bracket expressions:    Bracket Expressions. (line  25)
 * --assign option:                       Options.             (line  32)
 * --bignum option:                       Options.             (line 203)
 * --characters-as-bytes option:          Options.             (line  69)
@@ -31734,7 +31742,7 @@ Index
                                                               (line  43)
 * \ (backslash), gsub()/gensub()/sub() functions and: Gory Details.
                                                               (line   6)
-* \ (backslash), in bracket expressions: Bracket Expressions. (line  17)
+* \ (backslash), in bracket expressions: Bracket Expressions. (line  25)
 * \ (backslash), in escape sequences:    Escape Sequences.    (line   6)
 * \ (backslash), in escape sequences <1>: Escape Sequences.   (line 100)
 * \ (backslash), in escape sequences, POSIX and: Escape Sequences.
@@ -31773,7 +31781,7 @@ Index
                                                               (line  41)
 * \ (backslash), \` operator (gawk):     GNU Regexp Operators.
                                                               (line  57)
-* ^ (caret), in bracket expressions:     Bracket Expressions. (line  17)
+* ^ (caret), in bracket expressions:     Bracket Expressions. (line  25)
 * ^ (caret), in FS:                      Regexp Field Splitting.
                                                               (line  59)
 * ^ (caret), regexp operator:            Regexp Operators.    (line  22)
@@ -32031,7 +32039,7 @@ Index
                                                               (line  43)
 * backslash (\), gsub()/gensub()/sub() functions and: Gory Details.
                                                               (line   6)
-* backslash (\), in bracket expressions: Bracket Expressions. (line  17)
+* backslash (\), in bracket expressions: Bracket Expressions. (line  25)
 * backslash (\), in escape sequences:    Escape Sequences.    (line   6)
 * backslash (\), in escape sequences <1>: Escape Sequences.   (line 100)
 * backslash (\), in escape sequences, POSIX and: Escape Sequences.
@@ -32132,15 +32140,15 @@ Index
 * bracket expressions:                   Regexp Operators.    (line  56)
 * bracket expressions <1>:               Bracket Expressions. (line   6)
 * bracket expressions, character classes: Bracket Expressions.
-                                                              (line  32)
+                                                              (line  40)
 * bracket expressions, collating elements: Bracket Expressions.
-                                                              (line  78)
+                                                              (line  86)
 * bracket expressions, collating symbols: Bracket Expressions.
-                                                              (line  85)
+                                                              (line  93)
 * bracket expressions, complemented:     Regexp Operators.    (line  64)
 * bracket expressions, equivalence classes: Bracket Expressions.
-                                                              (line  91)
-* bracket expressions, non-ASCII:        Bracket Expressions. (line  78)
+                                                              (line  99)
+* bracket expressions, non-ASCII:        Bracket Expressions. (line  86)
 * bracket expressions, range expressions: Bracket Expressions.
                                                               (line   6)
 * break debugger command:                Breakpoint Control.  (line  11)
@@ -32205,7 +32213,7 @@ Index
 * call by value:                         Pass By Value/Reference.
                                                               (line  15)
 * call stack, display in debugger:       Execution Stack.     (line  13)
-* caret (^), in bracket expressions:     Bracket Expressions. (line  17)
+* caret (^), in bracket expressions:     Bracket Expressions. (line  25)
 * caret (^), regexp operator:            Regexp Operators.    (line  22)
 * caret (^), regexp operator <1>:        GNU Regexp Operators.
                                                               (line  62)
@@ -32257,8 +32265,8 @@ Index
 * Close, Diane:                          Manual History.      (line  34)
 * Close, Diane <1>:                      Contributors.        (line  21)
 * Collado, Manuel:                       Acknowledgments.     (line  60)
-* collating elements:                    Bracket Expressions. (line  78)
-* collating symbols:                     Bracket Expressions. (line  85)
+* collating elements:                    Bracket Expressions. (line  86)
+* collating symbols:                     Bracket Expressions. (line  93)
 * Colombo, Antonio:                      Acknowledgments.     (line  60)
 * Colombo, Antonio <1>:                  Contributors.        (line 141)
 * columns, aligning:                     Print Examples.      (line  69)
@@ -32687,7 +32695,7 @@ Index
 * EBCDIC:                                Ordinal Functions.   (line  45)
 * effective group ID of gawk user:       Auto-set.            (line 134)
 * effective user ID of gawk user:        Auto-set.            (line 138)
-* egrep utility:                         Bracket Expressions. (line  26)
+* egrep utility:                         Bracket Expressions. (line  34)
 * egrep utility <1>:                     Egrep Program.       (line   6)
 * egrep.awk program:                     Egrep Program.       (line  53)
 * elements in arrays, assigning values:  Assigning Elements.  (line   6)
@@ -32739,7 +32747,7 @@ Index
 * equals sign (=), == operator:          Comparison Operators.
                                                               (line  11)
 * equals sign (=), == operator <1>:      Precedence.          (line  64)
-* EREs (Extended Regular Expressions):   Bracket Expressions. (line  26)
+* EREs (Extended Regular Expressions):   Bracket Expressions. (line  34)
 * ERRNO variable:                        Auto-set.            (line  73)
 * ERRNO variable <1>:                    TCP/IP Networking.   (line  54)
 * ERRNO variable, with BEGINFILE pattern: BEGINFILE/ENDFILE.  (line  26)
@@ -32800,7 +32808,7 @@ Index
 * expressions, matching, See comparison expressions: Typing and Comparison.
                                                               (line   9)
 * expressions, selecting:                Conditional Exp.     (line   6)
-* Extended Regular Expressions (EREs):   Bracket Expressions. (line  26)
+* Extended Regular Expressions (EREs):   Bracket Expressions. (line  34)
 * extension API:                         Extension API Description.
                                                               (line   6)
 * extension API informational variables: Extension API Informational Variables.
@@ -33070,7 +33078,7 @@ Index
 * gawk, awk and <1>:                     This Manual.         (line  14)
 * gawk, bitwise operations in:           Bitwise Functions.   (line  40)
 * gawk, break statement in:              Break Statement.     (line  51)
-* gawk, character classes and:           Bracket Expressions. (line 100)
+* gawk, character classes and:           Bracket Expressions. (line 108)
 * gawk, coding style in:                 Adding Code.         (line  37)
 * gawk, command-line options, and regular expressions: GNU Regexp Operators.
                                                               (line  73)
@@ -33268,7 +33276,7 @@ Index
 * hyphen (-), -= operator:               Assignment Ops.      (line 129)
 * hyphen (-), -= operator <1>:           Precedence.          (line  94)
 * hyphen (-), filenames beginning with:  Options.             (line  60)
-* hyphen (-), in bracket expressions:    Bracket Expressions. (line  17)
+* hyphen (-), in bracket expressions:    Bracket Expressions. (line  25)
 * i debugger command (alias for info):   Debugger Info.       (line  13)
 * id utility:                            Id Program.          (line   6)
 * id.awk program:                        Id Program.          (line  31)
@@ -33355,7 +33363,7 @@ Index
 * internationalization, localization <1>: Internationalization.
                                                               (line  13)
 * internationalization, localization, character classes: Bracket Expressions.
-                                                              (line 100)
+                                                              (line 108)
 * internationalization, localization, gawk and: Internationalization.
                                                               (line  13)
 * internationalization, localization, locale categories: Explaining gettext.
@@ -33820,11 +33828,11 @@ Index
 * POSIX awk, backslashes in string constants: Escape Sequences.
                                                               (line 105)
 * POSIX awk, BEGIN/END patterns:         I/O And BEGIN/END.   (line  15)
-* POSIX awk, bracket expressions and:    Bracket Expressions. (line  26)
+* POSIX awk, bracket expressions and:    Bracket Expressions. (line  34)
 * POSIX awk, bracket expressions and, character classes: Bracket Expressions.
-                                                              (line  32)
+                                                              (line  40)
 * POSIX awk, bracket expressions and, character classes <1>: Bracket 
Expressions.
-                                                              (line 100)
+                                                              (line 108)
 * POSIX awk, break statement and:        Break Statement.     (line  51)
 * POSIX awk, changes in awk versions:    POSIX.               (line   6)
 * POSIX awk, continue statement and:     Continue Statement.  (line  44)
@@ -34687,496 +34695,496 @@ 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 Checking637515
-Ref: File Checking-Footnote-1638849
-Node: Empty Files639050
-Node: Ignoring Assigns641029
-Node: Getopt Function642579
-Ref: Getopt Function-Footnote-1654048
-Node: Passwd Functions654248
-Ref: Passwd Functions-Footnote-1663087
-Node: Group Functions663175
-Ref: Group Functions-Footnote-1671072
-Node: Walking Arrays671279
-Node: Library Functions Summary674287
-Node: Library Exercises675693
-Node: Sample Programs676158
-Node: Running Examples676928
-Node: Clones677656
-Node: Cut Program678880
-Node: Egrep Program688809
-Ref: Egrep Program-Footnote-1696321
-Node: Id Program696431
-Node: Split Program700111
-Ref: Split Program-Footnote-1703570
-Node: Tee Program703699
-Node: Uniq Program706489
-Node: Wc Program713915
-Ref: Wc Program-Footnote-1718170
-Node: Miscellaneous Programs718264
-Node: Dupword Program719477
-Node: Alarm Program721507
-Node: Translate Program726362
-Ref: Translate Program-Footnote-1730927
-Node: Labels Program731197
-Ref: Labels Program-Footnote-1734548
-Node: Word Sorting734632
-Node: History Sorting738704
-Node: Extract Program740539
-Node: Simple Sed748068
-Node: Igawk Program751142
-Ref: Igawk Program-Footnote-1765473
-Ref: Igawk Program-Footnote-2765675
-Ref: Igawk Program-Footnote-3765797
-Node: Anagram Program765912
-Node: Signature Program768974
-Node: Programs Summary770221
-Node: Programs Exercises771435
-Ref: Programs Exercises-Footnote-1775564
-Node: Advanced Features775655
-Node: Nondecimal Data777645
-Node: Array Sorting779236
-Node: Controlling Array Traversal779936
-Ref: Controlling Array Traversal-Footnote-1788303
-Node: Array Sorting Functions788421
-Ref: Array Sorting Functions-Footnote-1793512
-Node: Two-way I/O793708
-Ref: Two-way I/O-Footnote-1799528
-Ref: Two-way I/O-Footnote-2799715
-Node: TCP/IP Networking799797
-Node: Profiling802915
-Node: Advanced Features Summary810454
-Node: Internationalization812390
-Node: I18N and L10N813870
-Node: Explaining gettext814557
-Ref: Explaining gettext-Footnote-1819580
-Ref: Explaining gettext-Footnote-2819765
-Node: Programmer i18n819930
-Ref: Programmer i18n-Footnote-1824785
-Node: Translator i18n824834
-Node: String Extraction825628
-Ref: String Extraction-Footnote-1826760
-Node: Printf Ordering826846
-Ref: Printf Ordering-Footnote-1829632
-Node: I18N Portability829696
-Ref: I18N Portability-Footnote-1832152
-Node: I18N Example832215
-Ref: I18N Example-Footnote-1835021
-Node: Gawk I18N835094
-Node: I18N Summary835739
-Node: Debugger837080
-Node: Debugging838102
-Node: Debugging Concepts838543
-Node: Debugging Terms840352
-Node: Awk Debugging842927
-Node: Sample Debugging Session843833
-Node: Debugger Invocation844367
-Node: Finding The Bug845753
-Node: List of Debugger Commands852231
-Node: Breakpoint Control853564
-Node: Debugger Execution Control857258
-Node: Viewing And Changing Data860620
-Node: Execution Stack863994
-Node: Debugger Info865631
-Node: Miscellaneous Debugger Commands869702
-Node: Readline Support874790
-Node: Limitations875686
-Node: Debugging Summary877795
-Node: Arbitrary Precision Arithmetic878968
-Node: Computer Arithmetic880384
-Ref: table-numeric-ranges883975
-Ref: Computer Arithmetic-Footnote-1884697
-Node: Math Definitions884754
-Ref: table-ieee-formats888068
-Ref: Math Definitions-Footnote-1888671
-Node: MPFR features888776
-Node: FP Math Caution890493
-Ref: FP Math Caution-Footnote-1891565
-Node: Inexactness of computations891934
-Node: Inexact representation892894
-Node: Comparing FP Values894254
-Node: Errors accumulate895336
-Node: Getting Accuracy896769
-Node: Try To Round899479
-Node: Setting precision900378
-Ref: table-predefined-precision-strings901075
-Node: Setting the rounding mode902905
-Ref: table-gawk-rounding-modes903279
-Ref: Setting the rounding mode-Footnote-1906687
-Node: Arbitrary Precision Integers906866
-Ref: Arbitrary Precision Integers-Footnote-1909850
-Node: POSIX Floating Point Problems909999
-Ref: POSIX Floating Point Problems-Footnote-1913881
-Node: Floating point summary913919
-Node: Dynamic Extensions916109
-Node: Extension Intro917662
-Node: Plugin License918928
-Node: Extension Mechanism Outline919725
-Ref: figure-load-extension920164
-Ref: figure-register-new-function921729
-Ref: figure-call-new-function922821
-Node: Extension API Description924883
-Node: Extension API Functions Introduction926331
-Node: General Data Types931143
-Ref: General Data Types-Footnote-1937098
-Node: Memory Allocation Functions937397
-Ref: Memory Allocation Functions-Footnote-1940242
-Node: Constructor Functions940341
-Node: Registration Functions942086
-Node: Extension Functions942771
-Node: Exit Callback Functions945070
-Node: Extension Version String946320
-Node: Input Parsers946983
-Node: Output Wrappers956868
-Node: Two-way processors961380
-Node: Printing Messages963644
-Ref: Printing Messages-Footnote-1964718
-Node: Updating ERRNO964871
-Node: Requesting Values965610
-Ref: table-value-types-returned966347
-Node: Accessing Parameters967230
-Node: Symbol Table Access968465
-Node: Symbol table by name968977
-Node: Symbol table by cookie970998
-Ref: Symbol table by cookie-Footnote-1975147
-Node: Cached values975211
-Ref: Cached values-Footnote-1978712
-Node: Array Manipulation978803
-Ref: Array Manipulation-Footnote-1979902
-Node: Array Data Types979939
-Ref: Array Data Types-Footnote-1982597
-Node: Array Functions982689
-Node: Flattening Arrays986547
-Node: Creating Arrays993455
-Node: Extension API Variables998226
-Node: Extension Versioning998862
-Node: Extension API Informational Variables1000753
-Node: Extension API Boilerplate1001817
-Node: Finding Extensions1005631
-Node: Extension Example1006190
-Node: Internal File Description1006988
-Node: Internal File Ops1011068
-Ref: Internal File Ops-Footnote-11022830
-Node: Using Internal File Ops1022970
-Ref: Using Internal File Ops-Footnote-11025353
-Node: Extension Samples1025627
-Node: Extension Sample File Functions1027156
-Node: Extension Sample Fnmatch1034805
-Node: Extension Sample Fork1036292
-Node: Extension Sample Inplace1037510
-Node: Extension Sample Ord1040720
-Node: Extension Sample Readdir1041556
-Ref: table-readdir-file-types1042445
-Node: Extension Sample Revout1043250
-Node: Extension Sample Rev2way1043839
-Node: Extension Sample Read write array1044579
-Node: Extension Sample Readfile1046521
-Node: Extension Sample Time1047616
-Node: Extension Sample API Tests1048964
-Node: gawkextlib1049456
-Node: Extension summary1051880
-Node: Extension Exercises1055572
-Node: Language History1057069
-Node: V7/SVR3.11058725
-Node: SVR41060877
-Node: POSIX1062311
-Node: BTL1063690
-Node: POSIX/GNU1064419
-Node: Feature History1069940
-Node: Common Extensions1083269
-Node: Ranges and Locales1084552
-Ref: Ranges and Locales-Footnote-11089168
-Ref: Ranges and Locales-Footnote-21089195
-Ref: Ranges and Locales-Footnote-31089430
-Node: Contributors1089651
-Node: History summary1095220
-Node: Installation1096600
-Node: Gawk Distribution1097544
-Node: Getting1098028
-Node: Extracting1098989
-Node: Distribution contents1100627
-Node: Unix Installation1106378
-Node: Quick Installation1106994
-Node: Additional Configuration Options1109421
-Node: Configuration Philosophy1111225
-Node: Non-Unix Installation1113594
-Node: PC Installation1114052
-Node: PC Binary Installation1115372
-Node: PC Compiling1117224
-Ref: PC Compiling-Footnote-11120248
-Node: PC Testing1120357
-Node: PC Using1121537
-Node: Cygwin1125651
-Node: MSYS1126421
-Node: VMS Installation1126922
-Node: VMS Compilation1127713
-Ref: VMS Compilation-Footnote-11128942
-Node: VMS Dynamic Extensions1129000
-Node: VMS Installation Details1130685
-Node: VMS Running1132938
-Node: VMS GNV1137217
-Node: VMS Old Gawk1137952
-Node: Bugs1138423
-Node: Other Versions1142620
-Node: Installation summary1149204
-Node: Notes1150262
-Node: Compatibility Mode1151127
-Node: Additions1151909
-Node: Accessing The Source1152834
-Node: Adding Code1154269
-Node: New Ports1160488
-Node: Derived Files1164976
-Ref: Derived Files-Footnote-11170461
-Ref: Derived Files-Footnote-21170496
-Ref: Derived Files-Footnote-31171094
-Node: Future Extensions1171208
-Node: Implementation Limitations1171866
-Node: Extension Design1173049
-Node: Old Extension Problems1174203
-Ref: Old Extension Problems-Footnote-11175721
-Node: Extension New Mechanism Goals1175778
-Ref: Extension New Mechanism Goals-Footnote-11179142
-Node: Extension Other Design Decisions1179331
-Node: Extension Future Growth1181444
-Node: Old Extension Mechanism1182280
-Node: Notes summary1184043
-Node: Basic Concepts1185225
-Node: Basic High Level1185906
-Ref: figure-general-flow1186188
-Ref: figure-process-flow1186873
-Ref: Basic High Level-Footnote-11190174
-Node: Basic Data Typing1190359
-Node: Glossary1193687
-Node: Copying1225633
-Node: GNU Free Documentation License1263172
-Node: Index1288290
+Ref: table-char-classes173319
+Node: Leftmost Longest176456
+Node: Computed Regexps177759
+Node: GNU Regexp Operators181186
+Node: Case-sensitivity184865
+Ref: Case-sensitivity-Footnote-1187752
+Ref: Case-sensitivity-Footnote-2187987
+Node: Regexp Summary188095
+Node: Reading Files189561
+Node: Records191655
+Node: awk split records192388
+Node: gawk split records197319
+Ref: gawk split records-Footnote-1201859
+Node: Fields201896
+Ref: Fields-Footnote-1204676
+Node: Nonconstant Fields204762
+Ref: Nonconstant Fields-Footnote-1206998
+Node: Changing Fields207202
+Node: Field Separators213130
+Node: Default Field Splitting215828
+Node: Regexp Field Splitting216946
+Node: Single Character Fields220299
+Node: Command Line Field Separator221359
+Node: Full Line Fields224577
+Ref: Full Line Fields-Footnote-1226099
+Ref: Full Line Fields-Footnote-2226145
+Node: Field Splitting Summary226246
+Node: Constant Size228320
+Node: Splitting By Content232898
+Ref: Splitting By Content-Footnote-1236869
+Node: Multiple Line237032
+Ref: Multiple Line-Footnote-1242914
+Node: Getline243093
+Node: Plain Getline245297
+Node: Getline/Variable247936
+Node: Getline/File249085
+Node: Getline/Variable/File250471
+Ref: Getline/Variable/File-Footnote-1252074
+Node: Getline/Pipe252162
+Node: Getline/Variable/Pipe254867
+Node: Getline/Coprocess256000
+Node: Getline/Variable/Coprocess257265
+Node: Getline Notes258005
+Node: Getline Summary260800
+Ref: table-getline-variants261222
+Node: Read Timeout261970
+Ref: Read Timeout-Footnote-1265811
+Node: Command-line directories265869
+Node: Input Summary266773
+Node: Input Exercises269945
+Node: Printing270673
+Node: Print272449
+Node: Print Examples273906
+Node: Output Separators276686
+Node: OFMT278703
+Node: Printf280059
+Node: Basic Printf280844
+Node: Control Letters282418
+Node: Format Modifiers286406
+Node: Printf Examples292421
+Node: Redirection294907
+Node: Special FD301748
+Ref: Special FD-Footnote-1304916
+Node: Special Files304990
+Node: Other Inherited Files305607
+Node: Special Network306608
+Node: Special Caveats307468
+Node: Close Files And Pipes308417
+Ref: Close Files And Pipes-Footnote-1315610
+Ref: Close Files And Pipes-Footnote-2315758
+Node: Output Summary315909
+Node: Output Exercises316907
+Node: Expressions317586
+Node: Values318774
+Node: Constants319452
+Node: Scalar Constants320143
+Ref: Scalar Constants-Footnote-1321007
+Node: Nondecimal-numbers321257
+Node: Regexp Constants324270
+Node: Using Constant Regexps324796
+Node: Variables327959
+Node: Using Variables328616
+Node: Assignment Options330526
+Node: Conversion332399
+Node: Strings And Numbers332923
+Ref: Strings And Numbers-Footnote-1335986
+Node: Locale influences conversions336095
+Ref: table-locale-affects338853
+Node: All Operators339471
+Node: Arithmetic Ops340100
+Node: Concatenation342606
+Ref: Concatenation-Footnote-1345453
+Node: Assignment Ops345560
+Ref: table-assign-ops350551
+Node: Increment Ops351864
+Node: Truth Values and Conditions355324
+Node: Truth Values356398
+Node: Typing and Comparison357446
+Node: Variable Typing358266
+Node: Comparison Operators361890
+Ref: table-relational-ops362309
+Node: POSIX String Comparison365804
+Ref: POSIX String Comparison-Footnote-1366878
+Node: Boolean Ops367017
+Ref: Boolean Ops-Footnote-1371499
+Node: Conditional Exp371591
+Node: Function Calls373327
+Node: Precedence377204
+Node: Locales380863
+Node: Expressions Summary382495
+Node: Patterns and Actions385068
+Node: Pattern Overview386188
+Node: Regexp Patterns387865
+Node: Expression Patterns388407
+Node: Ranges392188
+Node: BEGIN/END395296
+Node: Using BEGIN/END396057
+Ref: Using BEGIN/END-Footnote-1398793
+Node: I/O And BEGIN/END398899
+Node: BEGINFILE/ENDFILE401213
+Node: Empty404120
+Node: Using Shell Variables404437
+Node: Action Overview406711
+Node: Statements409036
+Node: If Statement410884
+Node: While Statement412379
+Node: Do Statement414407
+Node: For Statement415555
+Node: Switch Statement418713
+Node: Break Statement421099
+Node: Continue Statement423191
+Node: Next Statement425018
+Node: Nextfile Statement427401
+Node: Exit Statement430053
+Node: Built-in Variables432456
+Node: User-modified433589
+Ref: User-modified-Footnote-1441214
+Node: Auto-set441276
+Ref: Auto-set-Footnote-1454366
+Ref: Auto-set-Footnote-2454572
+Node: ARGC and ARGV454628
+Node: Pattern Action Summary458841
+Node: Arrays461271
+Node: Array Basics462600
+Node: Array Intro463444
+Ref: figure-array-elements465419
+Ref: Array Intro-Footnote-1468123
+Node: Reference to Elements468251
+Node: Assigning Elements470715
+Node: Array Example471206
+Node: Scanning an Array472965
+Node: Controlling Scanning475987
+Ref: Controlling Scanning-Footnote-1481386
+Node: Numeric Array Subscripts481702
+Node: Uninitialized Subscripts483886
+Node: Delete485505
+Ref: Delete-Footnote-1488257
+Node: Multidimensional488314
+Node: Multiscanning491409
+Node: Arrays of Arrays493000
+Node: Arrays Summary497767
+Node: Functions499860
+Node: Built-in500898
+Node: Calling Built-in501976
+Node: Numeric Functions503972
+Ref: Numeric Functions-Footnote-1508000
+Ref: Numeric Functions-Footnote-2508357
+Ref: Numeric Functions-Footnote-3508405
+Node: String Functions508677
+Ref: String Functions-Footnote-1532181
+Ref: String Functions-Footnote-2532309
+Ref: String Functions-Footnote-3532557
+Node: Gory Details532644
+Ref: table-sub-escapes534435
+Ref: table-sub-proposed535954
+Ref: table-posix-sub537317
+Ref: table-gensub-escapes538858
+Ref: Gory Details-Footnote-1539681
+Node: I/O Functions539832
+Ref: I/O Functions-Footnote-1547052
+Node: Time Functions547200
+Ref: Time Functions-Footnote-1557705
+Ref: Time Functions-Footnote-2557773
+Ref: Time Functions-Footnote-3557931
+Ref: Time Functions-Footnote-4558042
+Ref: Time Functions-Footnote-5558154
+Ref: Time Functions-Footnote-6558381
+Node: Bitwise Functions558647
+Ref: table-bitwise-ops559241
+Ref: Bitwise Functions-Footnote-1563579
+Node: Type Functions563752
+Node: I18N Functions564908
+Node: User-defined566559
+Node: Definition Syntax567364
+Ref: Definition Syntax-Footnote-1573051
+Node: Function Example573122
+Ref: Function Example-Footnote-1576044
+Node: Function Caveats576066
+Node: Calling A Function576584
+Node: Variable Scope577542
+Node: Pass By Value/Reference580536
+Node: Return Statement584035
+Node: Dynamic Typing587014
+Node: Indirect Calls587944
+Ref: Indirect Calls-Footnote-1598195
+Node: Functions Summary598323
+Node: Library Functions601028
+Ref: Library Functions-Footnote-1604635
+Ref: Library Functions-Footnote-2604778
+Node: Library Names604949
+Ref: Library Names-Footnote-1608409
+Ref: Library Names-Footnote-2608632
+Node: General Functions608718
+Node: Strtonum Function609821
+Node: Assert Function612843
+Node: Round Function616169
+Node: Cliff Random Function617710
+Node: Ordinal Functions618726
+Ref: Ordinal Functions-Footnote-1621789
+Ref: Ordinal Functions-Footnote-2622041
+Node: Join Function622251
+Ref: Join Function-Footnote-1624021
+Node: Getlocaltime Function624221
+Node: Readfile Function627963
+Node: Shell Quoting629935
+Node: Data File Management631336
+Node: Filetrans Function631968
+Node: Rewind Function636064
+Node: File Checking637969
+Ref: File Checking-Footnote-1639303
+Node: Empty Files639504
+Node: Ignoring Assigns641483
+Node: Getopt Function643033
+Ref: Getopt Function-Footnote-1654502
+Node: Passwd Functions654702
+Ref: Passwd Functions-Footnote-1663541
+Node: Group Functions663629
+Ref: Group Functions-Footnote-1671526
+Node: Walking Arrays671733
+Node: Library Functions Summary674741
+Node: Library Exercises676147
+Node: Sample Programs676612
+Node: Running Examples677382
+Node: Clones678110
+Node: Cut Program679334
+Node: Egrep Program689263
+Ref: Egrep Program-Footnote-1696775
+Node: Id Program696885
+Node: Split Program700565
+Ref: Split Program-Footnote-1704024
+Node: Tee Program704153
+Node: Uniq Program706943
+Node: Wc Program714369
+Ref: Wc Program-Footnote-1718624
+Node: Miscellaneous Programs718718
+Node: Dupword Program719931
+Node: Alarm Program721961
+Node: Translate Program726816
+Ref: Translate Program-Footnote-1731381
+Node: Labels Program731651
+Ref: Labels Program-Footnote-1735002
+Node: Word Sorting735086
+Node: History Sorting739158
+Node: Extract Program740993
+Node: Simple Sed748522
+Node: Igawk Program751596
+Ref: Igawk Program-Footnote-1765927
+Ref: Igawk Program-Footnote-2766129
+Ref: Igawk Program-Footnote-3766251
+Node: Anagram Program766366
+Node: Signature Program769428
+Node: Programs Summary770675
+Node: Programs Exercises771889
+Ref: Programs Exercises-Footnote-1776018
+Node: Advanced Features776109
+Node: Nondecimal Data778099
+Node: Array Sorting779690
+Node: Controlling Array Traversal780390
+Ref: Controlling Array Traversal-Footnote-1788757
+Node: Array Sorting Functions788875
+Ref: Array Sorting Functions-Footnote-1793966
+Node: Two-way I/O794162
+Ref: Two-way I/O-Footnote-1799982
+Ref: Two-way I/O-Footnote-2800169
+Node: TCP/IP Networking800251
+Node: Profiling803369
+Node: Advanced Features Summary810908
+Node: Internationalization812844
+Node: I18N and L10N814324
+Node: Explaining gettext815011
+Ref: Explaining gettext-Footnote-1820034
+Ref: Explaining gettext-Footnote-2820219
+Node: Programmer i18n820384
+Ref: Programmer i18n-Footnote-1825239
+Node: Translator i18n825288
+Node: String Extraction826082
+Ref: String Extraction-Footnote-1827214
+Node: Printf Ordering827300
+Ref: Printf Ordering-Footnote-1830086
+Node: I18N Portability830150
+Ref: I18N Portability-Footnote-1832606
+Node: I18N Example832669
+Ref: I18N Example-Footnote-1835475
+Node: Gawk I18N835548
+Node: I18N Summary836193
+Node: Debugger837534
+Node: Debugging838556
+Node: Debugging Concepts838997
+Node: Debugging Terms840806
+Node: Awk Debugging843381
+Node: Sample Debugging Session844287
+Node: Debugger Invocation844821
+Node: Finding The Bug846207
+Node: List of Debugger Commands852685
+Node: Breakpoint Control854018
+Node: Debugger Execution Control857712
+Node: Viewing And Changing Data861074
+Node: Execution Stack864448
+Node: Debugger Info866085
+Node: Miscellaneous Debugger Commands870156
+Node: Readline Support875244
+Node: Limitations876140
+Node: Debugging Summary878249
+Node: Arbitrary Precision Arithmetic879422
+Node: Computer Arithmetic880838
+Ref: table-numeric-ranges884429
+Ref: Computer Arithmetic-Footnote-1885151
+Node: Math Definitions885208
+Ref: table-ieee-formats888522
+Ref: Math Definitions-Footnote-1889125
+Node: MPFR features889230
+Node: FP Math Caution890947
+Ref: FP Math Caution-Footnote-1892019
+Node: Inexactness of computations892388
+Node: Inexact representation893348
+Node: Comparing FP Values894708
+Node: Errors accumulate895790
+Node: Getting Accuracy897223
+Node: Try To Round899933
+Node: Setting precision900832
+Ref: table-predefined-precision-strings901529
+Node: Setting the rounding mode903359
+Ref: table-gawk-rounding-modes903733
+Ref: Setting the rounding mode-Footnote-1907141
+Node: Arbitrary Precision Integers907320
+Ref: Arbitrary Precision Integers-Footnote-1910304
+Node: POSIX Floating Point Problems910453
+Ref: POSIX Floating Point Problems-Footnote-1914335
+Node: Floating point summary914373
+Node: Dynamic Extensions916563
+Node: Extension Intro918116
+Node: Plugin License919382
+Node: Extension Mechanism Outline920179
+Ref: figure-load-extension920618
+Ref: figure-register-new-function922183
+Ref: figure-call-new-function923275
+Node: Extension API Description925337
+Node: Extension API Functions Introduction926785
+Node: General Data Types931597
+Ref: General Data Types-Footnote-1937552
+Node: Memory Allocation Functions937851
+Ref: Memory Allocation Functions-Footnote-1940696
+Node: Constructor Functions940795
+Node: Registration Functions942540
+Node: Extension Functions943225
+Node: Exit Callback Functions945524
+Node: Extension Version String946774
+Node: Input Parsers947437
+Node: Output Wrappers957322
+Node: Two-way processors961834
+Node: Printing Messages964098
+Ref: Printing Messages-Footnote-1965172
+Node: Updating ERRNO965325
+Node: Requesting Values966064
+Ref: table-value-types-returned966801
+Node: Accessing Parameters967684
+Node: Symbol Table Access968919
+Node: Symbol table by name969431
+Node: Symbol table by cookie971452
+Ref: Symbol table by cookie-Footnote-1975601
+Node: Cached values975665
+Ref: Cached values-Footnote-1979166
+Node: Array Manipulation979257
+Ref: Array Manipulation-Footnote-1980356
+Node: Array Data Types980393
+Ref: Array Data Types-Footnote-1983051
+Node: Array Functions983143
+Node: Flattening Arrays987001
+Node: Creating Arrays993909
+Node: Extension API Variables998680
+Node: Extension Versioning999316
+Node: Extension API Informational Variables1001207
+Node: Extension API Boilerplate1002271
+Node: Finding Extensions1006085
+Node: Extension Example1006644
+Node: Internal File Description1007442
+Node: Internal File Ops1011522
+Ref: Internal File Ops-Footnote-11023284
+Node: Using Internal File Ops1023424
+Ref: Using Internal File Ops-Footnote-11025807
+Node: Extension Samples1026081
+Node: Extension Sample File Functions1027610
+Node: Extension Sample Fnmatch1035259
+Node: Extension Sample Fork1036746
+Node: Extension Sample Inplace1037964
+Node: Extension Sample Ord1041174
+Node: Extension Sample Readdir1042010
+Ref: table-readdir-file-types1042899
+Node: Extension Sample Revout1043704
+Node: Extension Sample Rev2way1044293
+Node: Extension Sample Read write array1045033
+Node: Extension Sample Readfile1046975
+Node: Extension Sample Time1048070
+Node: Extension Sample API Tests1049418
+Node: gawkextlib1049910
+Node: Extension summary1052334
+Node: Extension Exercises1056026
+Node: Language History1057523
+Node: V7/SVR3.11059179
+Node: SVR41061331
+Node: POSIX1062765
+Node: BTL1064144
+Node: POSIX/GNU1064873
+Node: Feature History1070394
+Node: Common Extensions1083723
+Node: Ranges and Locales1085006
+Ref: Ranges and Locales-Footnote-11089622
+Ref: Ranges and Locales-Footnote-21089649
+Ref: Ranges and Locales-Footnote-31089884
+Node: Contributors1090105
+Node: History summary1095674
+Node: Installation1097054
+Node: Gawk Distribution1097998
+Node: Getting1098482
+Node: Extracting1099443
+Node: Distribution contents1101081
+Node: Unix Installation1106832
+Node: Quick Installation1107448
+Node: Additional Configuration Options1109875
+Node: Configuration Philosophy1111679
+Node: Non-Unix Installation1114048
+Node: PC Installation1114506
+Node: PC Binary Installation1115826
+Node: PC Compiling1117678
+Ref: PC Compiling-Footnote-11120702
+Node: PC Testing1120811
+Node: PC Using1121991
+Node: Cygwin1126105
+Node: MSYS1126875
+Node: VMS Installation1127376
+Node: VMS Compilation1128167
+Ref: VMS Compilation-Footnote-11129396
+Node: VMS Dynamic Extensions1129454
+Node: VMS Installation Details1131139
+Node: VMS Running1133392
+Node: VMS GNV1137671
+Node: VMS Old Gawk1138406
+Node: Bugs1138877
+Node: Other Versions1143074
+Node: Installation summary1149658
+Node: Notes1150716
+Node: Compatibility Mode1151581
+Node: Additions1152363
+Node: Accessing The Source1153288
+Node: Adding Code1154723
+Node: New Ports1160942
+Node: Derived Files1165430
+Ref: Derived Files-Footnote-11170915
+Ref: Derived Files-Footnote-21170950
+Ref: Derived Files-Footnote-31171548
+Node: Future Extensions1171662
+Node: Implementation Limitations1172320
+Node: Extension Design1173503
+Node: Old Extension Problems1174657
+Ref: Old Extension Problems-Footnote-11176175
+Node: Extension New Mechanism Goals1176232
+Ref: Extension New Mechanism Goals-Footnote-11179596
+Node: Extension Other Design Decisions1179785
+Node: Extension Future Growth1181898
+Node: Old Extension Mechanism1182734
+Node: Notes summary1184497
+Node: Basic Concepts1185679
+Node: Basic High Level1186360
+Ref: figure-general-flow1186642
+Ref: figure-process-flow1187327
+Ref: Basic High Level-Footnote-11190628
+Node: Basic Data Typing1190813
+Node: Glossary1194141
+Node: Copying1226087
+Node: GNU Free Documentation License1263626
+Node: Index1288744
 
 End Tag Table
diff --git a/doc/gawk.texi b/doc/gawk.texi
index 211a0a7..dcd49e6 100644
--- a/doc/gawk.texi
+++ b/doc/gawk.texi
@@ -5618,6 +5618,15 @@ set.  For example, @samp{[0-9]} is equivalent to 
@samp{[0123456789]}.
 standard and @command{gawk} have changed over time.  This is mainly
 of historical interest.)
 
+With the increasing popularity of the
address@hidden://www.unicode.org, Unicode character standard},
+there is an additional wrinkle to consider. Octal and hexadecimal
+escape sequences inside bracket expressions are taken to represent
+only single-byte characters (characters whose values fit within
+the range 0--256).  To match a range of characters where the endpoints
+of the range are larger than 256, enter the multibyte encodings of
+the characters directly.
+
 @cindex @code{\} (backslash), in bracket expressions
 @cindex backslash (@code{\}), in bracket expressions
 @cindex @code{^} (caret), in bracket expressions
diff --git a/doc/gawktexi.in b/doc/gawktexi.in
index 1a6b2dd..ff5672a 100644
--- a/doc/gawktexi.in
+++ b/doc/gawktexi.in
@@ -5446,6 +5446,15 @@ set.  For example, @samp{[0-9]} is equivalent to 
@samp{[0123456789]}.
 standard and @command{gawk} have changed over time.  This is mainly
 of historical interest.)
 
+With the increasing popularity of the
address@hidden://www.unicode.org, Unicode character standard},
+there is an additional wrinkle to consider. Octal and hexadecimal
+escape sequences inside bracket expressions are taken to represent
+only single-byte characters (characters whose values fit within
+the range 0--256).  To match a range of characters where the endpoints
+of the range are larger than 256, enter the multibyte encodings of
+the characters directly.
+
 @cindex @code{\} (backslash), in bracket expressions
 @cindex backslash (@code{\}), in bracket expressions
 @cindex @code{^} (caret), in bracket expressions

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

Summary of changes:
 ChangeLog        |    5 +
 doc/ChangeLog    |    5 +
 doc/gawk.info    | 1032 +++++++++++++++++++++++++++---------------------------
 doc/gawk.texi    |    9 +
 doc/gawktexi.in  |    9 +
 regcomp.c        |   32 +--
 regex.c          |    2 +-
 regex.h          |    2 +-
 regex_internal.c |   18 +-
 regex_internal.h |    6 +-
 regexec.c        |   90 ++---
 11 files changed, 606 insertions(+), 604 deletions(-)


hooks/post-receive
-- 
gawk



reply via email to

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