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.0-stable, updated. 44892d91d04830


From: Arnold Robbins
Subject: [gawk-diffs] [SCM] gawk branch, gawk-4.0-stable, updated. 44892d91d048309234aebd820d312d357eb4b2df
Date: Tue, 06 Dec 2011 20:49:32 +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.0-stable has been updated
       via  44892d91d048309234aebd820d312d357eb4b2df (commit)
       via  3ba2f61ff006c308a904c8b1a4bc433082ce87c8 (commit)
       via  1527865d3c430aa203ed23fa7ecbeea30a604724 (commit)
       via  fc2a0c145fdb78834c69c375144bfebe976cf2e8 (commit)
       via  c7c362089112180c0d66f9342be4f03704adeb87 (commit)
       via  c399d8f8226bba46d34b8672ca50722605f95e37 (commit)
       via  77620464b7805e03fcfc5de21a6e46b32426c6f0 (commit)
       via  c45c07f2825065fdeb701c5dff763b988f6d9653 (commit)
       via  958b6cb452c88e7ba064253b6f461ebacfc1b736 (commit)
      from  fd3e8f9c332bd76e7f8fa0c61c1451f52f3b1998 (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=44892d91d048309234aebd820d312d357eb4b2df

commit 44892d91d048309234aebd820d312d357eb4b2df
Author: Arnold D. Robbins <address@hidden>
Date:   Tue Dec 6 22:48:34 2011 +0200

    Revise pc/Makefile.tst.

diff --git a/pc/ChangeLog b/pc/ChangeLog
index 3d8ef41..429a88e 100644
--- a/pc/ChangeLog
+++ b/pc/ChangeLog
@@ -1,3 +1,12 @@
+2011-12-06   Scott Deifik  <address@hidden>
+
+       * Makefile.tst: Sync with mainline version.
+       Use testoutcmp.awk script.
+
+2011-12-06         Arnold D. Robbins     <address@hidden>
+
+       * testoutcmp.awk: Script to replace cmd for DJGPP.
+
 2011-11-01   Scott Deifik  <address@hidden>
 
        * config.sed: Additional update.
diff --git a/pc/Makefile.tst b/pc/Makefile.tst
index e63b8eb..db21434 100644
--- a/pc/Makefile.tst
+++ b/pc/Makefile.tst
@@ -90,6 +90,10 @@ CMP = diff
 #CMP = diff -c
 #CMP = gcmp
 
+# cmp replacement program for PC where the error messages aren't
+# exactly the same.  Should run even on old awk.
+TESTOUTCMP = $(AWK) -f ../testoutcmp.awk
+
 # Set your "cp," "mv," and "mkdir" commands here.  Note: DOS's copy must take
 # forward slashes.
 #CP = cp
@@ -115,6 +119,7 @@ PATH_SEPARATOR = ;
 # ============================================================================
 
 srcdir = .
+abs_builddir = .
 
 # Get rid of core files when cleaning and generated .ok file
 CLEANFILES = core core.* fmtspcl.ok
@@ -512,9 +517,9 @@ gsubtst3::
 
 space::
        @echo $@
-       @echo Expect space to fail with DJGPP.
        @$(AWK) -f ' ' $(srcdir)/space.awk >_$@ 2>&1 || echo EXIT CODE: $$? 
>>_$@
-       @-$(CMP) $(srcdir)/address@hidden _$@ && rm -f _$@
+#      @-$(CMP) $(srcdir)/address@hidden _$@ && rm -f _$@
+       @-$(TESTOUTCMP) $(srcdir)/address@hidden _$@ && rm -f _$@
 
 printf0::
        @echo $@
@@ -741,7 +746,8 @@ beginfile1::
 beginfile2:
        @echo $@
        @-( cd $(srcdir) && AWK="$(abs_builddir)/$(AWKPROG)" 
$(srcdir)/address@hidden $(srcdir)/address@hidden ) > _$@ 2>&1
-       @-$(CMP) $(srcdir)/address@hidden _$@ && rm -f _$@
+#      @-$(CMP) $(srcdir)/address@hidden _$@ && rm -f _$@
+       @-$(TESTOUTCMP) $(srcdir)/address@hidden _$@ && rm -f _$@
 
 dumpvars::
        @echo $@
@@ -1876,6 +1882,7 @@ procinfs:
 
 pty1:
        @echo pty1
+       @echo Expect pty1 to fail with DJGPP.
        @AWKPATH=$(srcdir) $(AWK) -f address@hidden  >_$@ 2>&1 || echo EXIT 
CODE: $$? >>_$@
        @-$(CMP) $(srcdir)/address@hidden _$@ && rm -f _$@
 
diff --git a/pc/testoutcmp.awk b/pc/testoutcmp.awk
new file mode 100644
index 0000000..ff19015
--- /dev/null
+++ b/pc/testoutcmp.awk
@@ -0,0 +1,38 @@
+# cmp replacement program for PC where the error messages aren't
+# exactly the same.  should run even on old awk
+
+{
+       if (FNR == NR)
+               file = 0
+       else
+               file = 1
+       gsub(/\r/, "", $0)
+       lines[file, FNR] = $0
+}
+
+END {
+       if (NR/2 != FNR) {
+               printf("testoutcmp: warning: files are not of equal length!\n") 
> "/dev/stderr"
+               exit 1
+       }
+
+       for (i = 1; i <= FNR; i++) {
+               good = lines[0, i]
+               actual = lines[1, i]
+               if (good == actual)
+                       continue
+
+               l = length(good)
+               if (substr(good, l, 1) == ")")
+                       l--
+               if (substr(good, 1, l) == substr(actual, 1, l))
+                       continue
+               else {
+                       printf("%s and %s are not equal\n", ARGV[1],
+                               ARGV[2]) > "/dev/stderr"
+                       exit 1
+               }
+       }
+
+       exit 0
+}

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

commit 3ba2f61ff006c308a904c8b1a4bc433082ce87c8
Author: Arnold D. Robbins <address@hidden>
Date:   Tue Dec 6 22:00:44 2011 +0200

    Misc fixes from John.

diff --git a/ChangeLog b/ChangeLog
index 42fe783..660b719 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,12 @@
+2011-12-06         John Haque      <address@hidden>
+
+       * debug.c (source_find): Fix misplaced call to efree.
+       * profile.c (redir2str): Add a missing comma in the redirtab array.
+       * eval.c (r_interpret): Disallow call to exit if currule is undefined.
+       This avoids the possiblity of running END blocks more than once when
+       used in a user-defined sorted-in comparision function.
+       * array.c (sort_user_func): Adjust appropriately.
+
 2011-12-06         Arnold D. Robbins     <address@hidden>
 
        * awk.h, mbsupport.h: Changes for MBS support on DJGPP
diff --git a/array.c b/array.c
index 82e99a4..e814e97 100644
--- a/array.c
+++ b/array.c
@@ -1509,7 +1509,6 @@ sort_user_func(const void *p1, const void *p2)
        NODE *idx1, *idx2, *val1, *val2;
        AWKNUM ret;
        INSTRUCTION *code;
-       extern int exiting;
 
        t1 = *((const NODE *const *) p1);
        t2 = *((const NODE *const *) p2);
@@ -1534,9 +1533,6 @@ sort_user_func(const void *p1, const void *p2)
        /* execute the comparison function */
        (void) interpret(code);
 
-       if (exiting)    /* do not assume anything about the user-defined 
function! */
-               gawk_exit(exit_val);
-
        /* return value of the comparison function */
        POP_NUMBER(ret);
 
@@ -1672,9 +1668,9 @@ assoc_list(NODE *array, const char *sort_str, SORT_CTXT 
sort_ctxt)
                (code + 1)->expr_count = 4;     /* function takes 4 arguments */
                code->nexti = bcalloc(Op_stop, 1, 0);   
 
-               /* make non-local jumps `next' and `nextfile' fatal in
+               /* make non-redirected getline, exit, `next' and `nextfile' 
fatal in
                 * callback function by setting currule in interpret()
-                * to undefined (0). `exit' is handled in sort_user_func.
+                * to undefined (0).
                 */
 
                (code + 1)->inrule = currule;   /* save current rule */
diff --git a/debug.c b/debug.c
index 0a66b46..ea65247 100644
--- a/debug.c
+++ b/debug.c
@@ -498,8 +498,8 @@ source_find(char *src)
                                efree(path);
                                return s;
                        }
-               efree(path);
                }
+               efree(path);
        }
 
        d_error(_("cannot find source file named `%s' (%s)"), src, 
strerror(errno_val));
diff --git a/eval.c b/eval.c
index cd5a584..22f3077 100644
--- a/eval.c
+++ b/eval.c
@@ -2507,7 +2507,7 @@ func_call:
                        break;
 
                case Op_K_getline:      /* no redirection */
-                       if (currule == BEGINFILE || currule == ENDFILE)
+                       if (! currule || currule == BEGINFILE || currule == 
ENDFILE)
                                fatal(_("non-redirected `getline' invalid 
inside `%s' rule"),
                                                ruletab[currule]);
 
@@ -2654,6 +2654,12 @@ func_call:
                        break;
 
                case Op_K_exit:
+                       /* exit not allowed in user-defined comparison 
functions for "sorted_in";
+                        * This is done so that END blocks aren't executed more 
than once.
+                        */
+                       if (! currule)
+                               fatal(_("`exit' cannot be called in the current 
context"));
+
                        exiting = TRUE;
                        POP_NUMBER(x1);
                        exit_val = (int) x1;
diff --git a/profile.c b/profile.c
index 01d1e42..eb78837 100644
--- a/profile.c
+++ b/profile.c
@@ -1362,8 +1362,8 @@ redir2str(int redirtype)
                " >> ", /* redirect_append */
                " | ",  /* redirect_pipe */
                " | ",  /* redirect_pipein */
-               " < "   /* redirect_input */
-               " |& "  /* redirect_twoway */
+               " < ",  /* redirect_input */
+               " |& ", /* redirect_twoway */
        };
 
        if (redirtype < 0 || redirtype > redirect_twoway)

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

commit 1527865d3c430aa203ed23fa7ecbeea30a604724
Author: Arnold D. Robbins <address@hidden>
Date:   Tue Dec 6 22:00:01 2011 +0200

    Update doc/gawk.info too.

diff --git a/doc/gawk.info b/doc/gawk.info
index 38ddd47..8d9422f 100644
--- a/doc/gawk.info
+++ b/doc/gawk.info
@@ -9905,7 +9905,7 @@ internal implementation of arrays and will vary from one 
version of
    Often, though, you may wish to do something simple, such as
 "traverse the array by comparing the indices in ascending order," or
 "traverse the array by on comparing the values in descending order."
-`gawk' provides two mechanims which give you this control.
+`gawk' provides two mechanisms which give you this control.
 
    * Set `PROCINFO["sorted_in"]' to one of a set of predefined values.
      We describe this now.
@@ -13730,7 +13730,7 @@ specific field position and can be used for this 
purpose:
      }
 
    The first field in each entry of the password file is the user's
-login name, and the fields are seperated by colons.  Each record
+login name, and the fields are separated by colons.  Each record
 defines a subarray, with each field as an element in the subarray.
 Running the program produces the following output:
 
@@ -20127,14 +20127,14 @@ inclusive.  Ordering was based on the numeric value 
of each character
 in the machine's native character set.  Thus, on ASCII-based systems,
 `[a-z]' matched all the lowercase letters, and only the lowercase
 letters, since the numeric values for the letters from `a' through `z'
-were contigous.  (On an EBCDIC system, the range `[a-z]' includes
+were contiguous.  (On an EBCDIC system, the range `[a-z]' includes
 additional, non-alphabetic characters as well.)
 
    Almost all introductory Unix literature explained range expressions
 as working in this fashion, and in particular, would teach that the
 "correct" way to match lowercase letters was with `[a-z]', and that
-`[A-Z]' was the the "correct" way to match uppercase letters.  And
-indeed, this was true.
+`[A-Z]' was the "correct" way to match uppercase letters.  And indeed,
+this was true.
 
    The 1993 POSIX standard introduced the idea of locales (*note
 Locales::).  Since many locales include other letters besides the plain
@@ -27624,225 +27624,225 @@ Node: Assigning Elements413593
 Node: Array Example414084
 Node: Scanning an Array415816
 Node: Controlling Scanning418130
-Ref: Controlling Scanning-Footnote-1423062
-Node: Delete423378
-Ref: Delete-Footnote-1425813
-Node: Numeric Array Subscripts425870
-Node: Uninitialized Subscripts428053
-Node: Multi-dimensional429681
-Node: Multi-scanning432775
-Node: Arrays of Arrays434366
-Node: Functions439011
-Node: Built-in439833
-Node: Calling Built-in440911
-Node: Numeric Functions442899
-Ref: Numeric Functions-Footnote-1446664
-Ref: Numeric Functions-Footnote-2447021
-Ref: Numeric Functions-Footnote-3447069
-Node: String Functions447338
-Ref: String Functions-Footnote-1470835
-Ref: String Functions-Footnote-2470964
-Ref: String Functions-Footnote-3471212
-Node: Gory Details471299
-Ref: table-sub-escapes472978
-Ref: table-sub-posix-92474332
-Ref: table-sub-proposed475675
-Ref: table-posix-sub477025
-Ref: table-gensub-escapes478571
-Ref: Gory Details-Footnote-1479778
-Ref: Gory Details-Footnote-2479829
-Node: I/O Functions479980
-Ref: I/O Functions-Footnote-1486635
-Node: Time Functions486782
-Ref: Time Functions-Footnote-1497674
-Ref: Time Functions-Footnote-2497742
-Ref: Time Functions-Footnote-3497900
-Ref: Time Functions-Footnote-4498011
-Ref: Time Functions-Footnote-5498123
-Ref: Time Functions-Footnote-6498350
-Node: Bitwise Functions498616
-Ref: table-bitwise-ops499174
-Ref: Bitwise Functions-Footnote-1503334
-Node: Type Functions503518
-Node: I18N Functions503988
-Node: User-defined505615
-Node: Definition Syntax506419
-Ref: Definition Syntax-Footnote-1511329
-Node: Function Example511398
-Node: Function Caveats513992
-Node: Calling A Function514413
-Node: Variable Scope515528
-Node: Pass By Value/Reference517503
-Node: Return Statement520943
-Node: Dynamic Typing523924
-Node: Indirect Calls524659
-Node: Internationalization534344
-Node: I18N and L10N535770
-Node: Explaining gettext536456
-Ref: Explaining gettext-Footnote-1541522
-Ref: Explaining gettext-Footnote-2541706
-Node: Programmer i18n541871
-Node: Translator i18n546071
-Node: String Extraction546864
-Ref: String Extraction-Footnote-1547825
-Node: Printf Ordering547911
-Ref: Printf Ordering-Footnote-1550695
-Node: I18N Portability550759
-Ref: I18N Portability-Footnote-1553208
-Node: I18N Example553271
-Ref: I18N Example-Footnote-1555906
-Node: Gawk I18N555978
-Node: Advanced Features556595
-Node: Nondecimal Data558108
-Node: Array Sorting559691
-Node: Controlling Array Traversal560388
-Node: Array Sorting Functions568625
-Ref: Array Sorting Functions-Footnote-1572299
-Ref: Array Sorting Functions-Footnote-2572392
-Node: Two-way I/O572586
-Ref: Two-way I/O-Footnote-1578018
-Node: TCP/IP Networking578088
-Node: Profiling580932
-Node: Library Functions588406
-Ref: Library Functions-Footnote-1591413
-Node: Library Names591584
-Ref: Library Names-Footnote-1595055
-Ref: Library Names-Footnote-2595275
-Node: General Functions595361
-Node: Strtonum Function596314
-Node: Assert Function599244
-Node: Round Function602570
-Node: Cliff Random Function604113
-Node: Ordinal Functions605129
-Ref: Ordinal Functions-Footnote-1608199
-Ref: Ordinal Functions-Footnote-2608451
-Node: Join Function608660
-Ref: Join Function-Footnote-1610431
-Node: Gettimeofday Function610631
-Node: Data File Management614346
-Node: Filetrans Function614978
-Node: Rewind Function619117
-Node: File Checking620504
-Node: Empty Files621598
-Node: Ignoring Assigns623828
-Node: Getopt Function625381
-Ref: Getopt Function-Footnote-1636685
-Node: Passwd Functions636888
-Ref: Passwd Functions-Footnote-1645863
-Node: Group Functions645951
-Node: Walking Arrays654035
-Node: Sample Programs655604
-Node: Running Examples656269
-Node: Clones656997
-Node: Cut Program658221
-Node: Egrep Program668066
-Ref: Egrep Program-Footnote-1675839
-Node: Id Program675949
-Node: Split Program679565
-Ref: Split Program-Footnote-1683084
-Node: Tee Program683212
-Node: Uniq Program686015
-Node: Wc Program693444
-Ref: Wc Program-Footnote-1697710
-Ref: Wc Program-Footnote-2697910
-Node: Miscellaneous Programs698002
-Node: Dupword Program699190
-Node: Alarm Program701221
-Node: Translate Program705970
-Ref: Translate Program-Footnote-1710357
-Ref: Translate Program-Footnote-2710585
-Node: Labels Program710719
-Ref: Labels Program-Footnote-1714090
-Node: Word Sorting714174
-Node: History Sorting718058
-Node: Extract Program719897
-Ref: Extract Program-Footnote-1727380
-Node: Simple Sed727508
-Node: Igawk Program730570
-Ref: Igawk Program-Footnote-1745727
-Ref: Igawk Program-Footnote-2745928
-Node: Anagram Program746066
-Node: Signature Program749134
-Node: Debugger750234
-Node: Debugging751145
-Node: Debugging Concepts751558
-Node: Debugging Terms753414
-Node: Awk Debugging756037
-Node: Sample dgawk session756929
-Node: dgawk invocation757421
-Node: Finding The Bug758603
-Node: List of Debugger Commands765089
-Node: Breakpoint Control766400
-Node: Dgawk Execution Control770036
-Node: Viewing And Changing Data773387
-Node: Dgawk Stack776724
-Node: Dgawk Info778184
-Node: Miscellaneous Dgawk Commands782132
-Node: Readline Support787560
-Node: Dgawk Limitations788398
-Node: Language History790587
-Node: V7/SVR3.1792099
-Node: SVR4794420
-Node: POSIX795862
-Node: BTL796870
-Node: POSIX/GNU797604
-Node: Common Extensions802755
-Node: Ranges and Locales803862
-Ref: Ranges and Locales-Footnote-1808469
-Node: Contributors808690
-Node: Installation812952
-Node: Gawk Distribution813846
-Node: Getting814330
-Node: Extracting815156
-Node: Distribution contents816848
-Node: Unix Installation822070
-Node: Quick Installation822687
-Node: Additional Configuration Options824649
-Node: Configuration Philosophy826126
-Node: Non-Unix Installation828468
-Node: PC Installation828926
-Node: PC Binary Installation830225
-Node: PC Compiling832073
-Node: PC Testing835017
-Node: PC Using836193
-Node: Cygwin840378
-Node: MSYS841378
-Node: VMS Installation841892
-Node: VMS Compilation842495
-Ref: VMS Compilation-Footnote-1843502
-Node: VMS Installation Details843560
-Node: VMS Running845195
-Node: VMS Old Gawk846802
-Node: Bugs847276
-Node: Other Versions851128
-Node: Notes856409
-Node: Compatibility Mode857101
-Node: Additions857884
-Node: Accessing The Source858696
-Node: Adding Code860121
-Node: New Ports866088
-Node: Dynamic Extensions870201
-Node: Internals871577
-Node: Plugin License880680
-Node: Sample Library881314
-Node: Internal File Description882000
-Node: Internal File Ops885715
-Ref: Internal File Ops-Footnote-1890496
-Node: Using Internal File Ops890636
-Node: Future Extensions893013
-Node: Basic Concepts895517
-Node: Basic High Level896274
-Ref: Basic High Level-Footnote-1900309
-Node: Basic Data Typing900494
-Node: Floating Point Issues905019
-Node: String Conversion Precision906102
-Ref: String Conversion Precision-Footnote-1907802
-Node: Unexpected Results907911
-Node: POSIX Floating Point Problems909737
-Ref: POSIX Floating Point Problems-Footnote-1913442
-Node: Glossary913480
-Node: Copying938456
-Node: GNU Free Documentation License976013
-Node: Index1001150
+Ref: Controlling Scanning-Footnote-1423063
+Node: Delete423379
+Ref: Delete-Footnote-1425814
+Node: Numeric Array Subscripts425871
+Node: Uninitialized Subscripts428054
+Node: Multi-dimensional429682
+Node: Multi-scanning432776
+Node: Arrays of Arrays434367
+Node: Functions439012
+Node: Built-in439834
+Node: Calling Built-in440912
+Node: Numeric Functions442900
+Ref: Numeric Functions-Footnote-1446665
+Ref: Numeric Functions-Footnote-2447022
+Ref: Numeric Functions-Footnote-3447070
+Node: String Functions447339
+Ref: String Functions-Footnote-1470836
+Ref: String Functions-Footnote-2470965
+Ref: String Functions-Footnote-3471213
+Node: Gory Details471300
+Ref: table-sub-escapes472979
+Ref: table-sub-posix-92474333
+Ref: table-sub-proposed475676
+Ref: table-posix-sub477026
+Ref: table-gensub-escapes478572
+Ref: Gory Details-Footnote-1479779
+Ref: Gory Details-Footnote-2479830
+Node: I/O Functions479981
+Ref: I/O Functions-Footnote-1486636
+Node: Time Functions486783
+Ref: Time Functions-Footnote-1497675
+Ref: Time Functions-Footnote-2497743
+Ref: Time Functions-Footnote-3497901
+Ref: Time Functions-Footnote-4498012
+Ref: Time Functions-Footnote-5498124
+Ref: Time Functions-Footnote-6498351
+Node: Bitwise Functions498617
+Ref: table-bitwise-ops499175
+Ref: Bitwise Functions-Footnote-1503335
+Node: Type Functions503519
+Node: I18N Functions503989
+Node: User-defined505616
+Node: Definition Syntax506420
+Ref: Definition Syntax-Footnote-1511330
+Node: Function Example511399
+Node: Function Caveats513993
+Node: Calling A Function514414
+Node: Variable Scope515529
+Node: Pass By Value/Reference517504
+Node: Return Statement520944
+Node: Dynamic Typing523925
+Node: Indirect Calls524660
+Node: Internationalization534345
+Node: I18N and L10N535771
+Node: Explaining gettext536457
+Ref: Explaining gettext-Footnote-1541523
+Ref: Explaining gettext-Footnote-2541707
+Node: Programmer i18n541872
+Node: Translator i18n546072
+Node: String Extraction546865
+Ref: String Extraction-Footnote-1547826
+Node: Printf Ordering547912
+Ref: Printf Ordering-Footnote-1550696
+Node: I18N Portability550760
+Ref: I18N Portability-Footnote-1553209
+Node: I18N Example553272
+Ref: I18N Example-Footnote-1555907
+Node: Gawk I18N555979
+Node: Advanced Features556596
+Node: Nondecimal Data558109
+Node: Array Sorting559692
+Node: Controlling Array Traversal560389
+Node: Array Sorting Functions568626
+Ref: Array Sorting Functions-Footnote-1572300
+Ref: Array Sorting Functions-Footnote-2572393
+Node: Two-way I/O572587
+Ref: Two-way I/O-Footnote-1578019
+Node: TCP/IP Networking578089
+Node: Profiling580933
+Node: Library Functions588407
+Ref: Library Functions-Footnote-1591414
+Node: Library Names591585
+Ref: Library Names-Footnote-1595056
+Ref: Library Names-Footnote-2595276
+Node: General Functions595362
+Node: Strtonum Function596315
+Node: Assert Function599245
+Node: Round Function602571
+Node: Cliff Random Function604114
+Node: Ordinal Functions605130
+Ref: Ordinal Functions-Footnote-1608200
+Ref: Ordinal Functions-Footnote-2608452
+Node: Join Function608661
+Ref: Join Function-Footnote-1610432
+Node: Gettimeofday Function610632
+Node: Data File Management614347
+Node: Filetrans Function614979
+Node: Rewind Function619118
+Node: File Checking620505
+Node: Empty Files621599
+Node: Ignoring Assigns623829
+Node: Getopt Function625382
+Ref: Getopt Function-Footnote-1636686
+Node: Passwd Functions636889
+Ref: Passwd Functions-Footnote-1645864
+Node: Group Functions645952
+Node: Walking Arrays654036
+Node: Sample Programs655605
+Node: Running Examples656270
+Node: Clones656998
+Node: Cut Program658222
+Node: Egrep Program668067
+Ref: Egrep Program-Footnote-1675840
+Node: Id Program675950
+Node: Split Program679566
+Ref: Split Program-Footnote-1683085
+Node: Tee Program683213
+Node: Uniq Program686016
+Node: Wc Program693445
+Ref: Wc Program-Footnote-1697711
+Ref: Wc Program-Footnote-2697911
+Node: Miscellaneous Programs698003
+Node: Dupword Program699191
+Node: Alarm Program701222
+Node: Translate Program705971
+Ref: Translate Program-Footnote-1710358
+Ref: Translate Program-Footnote-2710586
+Node: Labels Program710720
+Ref: Labels Program-Footnote-1714091
+Node: Word Sorting714175
+Node: History Sorting718059
+Node: Extract Program719898
+Ref: Extract Program-Footnote-1727381
+Node: Simple Sed727509
+Node: Igawk Program730571
+Ref: Igawk Program-Footnote-1745728
+Ref: Igawk Program-Footnote-2745929
+Node: Anagram Program746067
+Node: Signature Program749135
+Node: Debugger750235
+Node: Debugging751146
+Node: Debugging Concepts751559
+Node: Debugging Terms753415
+Node: Awk Debugging756038
+Node: Sample dgawk session756930
+Node: dgawk invocation757422
+Node: Finding The Bug758604
+Node: List of Debugger Commands765090
+Node: Breakpoint Control766401
+Node: Dgawk Execution Control770037
+Node: Viewing And Changing Data773388
+Node: Dgawk Stack776725
+Node: Dgawk Info778185
+Node: Miscellaneous Dgawk Commands782133
+Node: Readline Support787561
+Node: Dgawk Limitations788399
+Node: Language History790588
+Node: V7/SVR3.1792100
+Node: SVR4794421
+Node: POSIX795863
+Node: BTL796871
+Node: POSIX/GNU797605
+Node: Common Extensions802756
+Node: Ranges and Locales803863
+Ref: Ranges and Locales-Footnote-1808467
+Node: Contributors808688
+Node: Installation812950
+Node: Gawk Distribution813844
+Node: Getting814328
+Node: Extracting815154
+Node: Distribution contents816846
+Node: Unix Installation822068
+Node: Quick Installation822685
+Node: Additional Configuration Options824647
+Node: Configuration Philosophy826124
+Node: Non-Unix Installation828466
+Node: PC Installation828924
+Node: PC Binary Installation830223
+Node: PC Compiling832071
+Node: PC Testing835015
+Node: PC Using836191
+Node: Cygwin840376
+Node: MSYS841376
+Node: VMS Installation841890
+Node: VMS Compilation842493
+Ref: VMS Compilation-Footnote-1843500
+Node: VMS Installation Details843558
+Node: VMS Running845193
+Node: VMS Old Gawk846800
+Node: Bugs847274
+Node: Other Versions851126
+Node: Notes856407
+Node: Compatibility Mode857099
+Node: Additions857882
+Node: Accessing The Source858694
+Node: Adding Code860119
+Node: New Ports866086
+Node: Dynamic Extensions870199
+Node: Internals871575
+Node: Plugin License880678
+Node: Sample Library881312
+Node: Internal File Description881998
+Node: Internal File Ops885713
+Ref: Internal File Ops-Footnote-1890494
+Node: Using Internal File Ops890634
+Node: Future Extensions893011
+Node: Basic Concepts895515
+Node: Basic High Level896272
+Ref: Basic High Level-Footnote-1900307
+Node: Basic Data Typing900492
+Node: Floating Point Issues905017
+Node: String Conversion Precision906100
+Ref: String Conversion Precision-Footnote-1907800
+Node: Unexpected Results907909
+Node: POSIX Floating Point Problems909735
+Ref: POSIX Floating Point Problems-Footnote-1913440
+Node: Glossary913478
+Node: Copying938454
+Node: GNU Free Documentation License976011
+Node: Index1001148
 
 End Tag Table

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

commit fc2a0c145fdb78834c69c375144bfebe976cf2e8
Author: Arnold D. Robbins <address@hidden>
Date:   Tue Dec 6 21:58:58 2011 +0200

    Fix a problem in improving test/Makefile.

diff --git a/test/Makefile.am b/test/Makefile.am
index 873d984..aae3051 100644
--- a/test/Makefile.am
+++ b/test/Makefile.am
@@ -1063,7 +1063,7 @@ tweakfld::
 mmap8k::
        @echo $@
        @$(AWK) '{ print }' $(srcdir)/mmap8k.in >_$@
-       @-$(CMP) $(srcdir)/address@hidden _$@ && rm -f _$@
+       @-$(CMP) $(srcdir)/mmap8k.in _$@ && rm -f _$@
 
 tradanch::
        @echo $@
diff --git a/test/Makefile.in b/test/Makefile.in
index 5dbb0e5..800c55d 100644
--- a/test/Makefile.in
+++ b/test/Makefile.in
@@ -1413,7 +1413,7 @@ tweakfld::
 mmap8k::
        @echo $@
        @$(AWK) '{ print }' $(srcdir)/mmap8k.in >_$@
-       @-$(CMP) $(srcdir)/address@hidden _$@ && rm -f _$@
+       @-$(CMP) $(srcdir)/mmap8k.in _$@ && rm -f _$@
 
 tradanch::
        @echo $@

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

commit c7c362089112180c0d66f9342be4f03704adeb87
Author: Arnold D. Robbins <address@hidden>
Date:   Tue Dec 6 21:54:21 2011 +0200

    Rationalize $(CMP) calls in test/Makefile.

diff --git a/test/ChangeLog b/test/ChangeLog
index 05a74f8..1ceb5b3 100644
--- a/test/ChangeLog
+++ b/test/ChangeLog
@@ -1,3 +1,7 @@
+2011-12-06         Arnold D. Robbins     <address@hidden>
+
+       * Makefile.am: Rationalize the $(CMP) lines wherever possible.
+
 2011-10-24         Arnold D. Robbins     <address@hidden>
 
        * beginfile2.sh: Use `...` instead of $(...) for broken systems
diff --git a/test/Makefile.am b/test/Makefile.am
index 3307881..873d984 100644
--- a/test/Makefile.am
+++ b/test/Makefile.am
@@ -976,7 +976,7 @@ argarray::
        .)      : ;; \
        *)      rm -f ./argarray.in ;; \
        esac
-       @-$(CMP) $(srcdir)/argarray.ok _$@ && rm -f _$@
+       @-$(CMP) $(srcdir)/address@hidden _$@ && rm -f _$@
 
 regtest::
        @echo 'Some of the output from regtest is very system specific, do not'
@@ -991,43 +991,44 @@ manyfiles::
        @$(AWK) 'BEGIN { for (i = 1; i <= 1030; i++) print i, i}' >_$@
        @$(AWK) -f $(srcdir)/manyfiles.awk _$@ _$@
        @wc -l junk/* | $(AWK) '$$1 != 2' | wc -l | sed "s/  *//g" > _$@
-       @rm -rf junk ; $(CMP) $(srcdir)/address@hidden _$@ && rm -f _$@
+       @rm -rf junk
+       @-$(CMP) $(srcdir)/address@hidden _$@ && rm -f _$@
 
 compare::
        @echo $@
        @$(AWK) -f $(srcdir)/compare.awk 0 1 $(srcdir)/compare.in >_$@
-       @-$(CMP) $(srcdir)/compare.ok _$@ && rm -f _$@
+       @-$(CMP) $(srcdir)/address@hidden _$@ && rm -f _$@
 
 inftest::
        @echo $@
        @echo This test is very machine specific...
        @$(AWK) -f $(srcdir)/inftest.awk | sed "s/inf/Inf/g" >_$@
-       @-$(CMP) $(srcdir)/inftest.ok _$@ && rm -f _$@
+       @-$(CMP) $(srcdir)/address@hidden _$@ && rm -f _$@
 
 getline2::
        @echo $@
        @$(AWK) -f $(srcdir)/getline2.awk $(srcdir)/getline2.awk 
$(srcdir)/getline2.awk >_$@
-       @-$(CMP) $(srcdir)/getline2.ok _$@ && rm -f _$@
+       @-$(CMP) $(srcdir)/address@hidden _$@ && rm -f _$@
 
 awkpath::
        @echo $@
        @AWKPATH="$(srcdir)$(PATH_SEPARATOR)$(srcdir)/lib" $(AWK) -f 
awkpath.awk >_$@
-       @-$(CMP) $(srcdir)/awkpath.ok _$@ && rm -f _$@
+       @-$(CMP) $(srcdir)/address@hidden _$@ && rm -f _$@
 
 argtest::
        @echo $@
        @$(AWK) -f $(srcdir)/argtest.awk -x -y abc >_$@
-       @-$(CMP) $(srcdir)/argtest.ok _$@ && rm -f _$@
+       @-$(CMP) $(srcdir)/address@hidden _$@ && rm -f _$@
 
 badargs::
        @echo $@
        @-$(AWK) -f 2>&1 | grep -v patchlevel >_$@
-       @-$(CMP) $(srcdir)/badargs.ok _$@ && rm -f _$@
+       @-$(CMP) $(srcdir)/address@hidden _$@ && rm -f _$@
 
 nonl::
        @echo $@
        @-AWKPATH=$(srcdir) $(AWK) --lint -f nonl.awk /dev/null >_$@ 2>&1
-       @-$(CMP) $(srcdir)/nonl.ok _$@ && rm -f _$@
+       @-$(CMP) $(srcdir)/address@hidden _$@ && rm -f _$@
 
 strftime::
        @echo This test could fail on slow machines or on a minute boundary,
@@ -1041,7 +1042,7 @@ strftime::
 litoct::
        @echo $@
        @echo ab | $(AWK) --traditional -f $(srcdir)/litoct.awk >_$@
-       @-$(CMP) $(srcdir)/litoct.ok _$@ && rm -f _$@
+       @-$(CMP) $(srcdir)/address@hidden _$@ && rm -f _$@
 
 devfd::
        @echo $@
@@ -1051,23 +1052,23 @@ devfd::
 fflush::
        @echo $@
        @$(srcdir)/fflush.sh >_$@
-       @-$(CMP) $(srcdir)/fflush.ok _$@ && rm -f _$@
+       @-$(CMP) $(srcdir)/address@hidden _$@ && rm -f _$@
 
 tweakfld::
        @echo $@
        @$(AWK) -f $(srcdir)/tweakfld.awk $(srcdir)/tweakfld.in >_$@
        @rm -f errors.cleanup
-       @-$(CMP) $(srcdir)/tweakfld.ok _$@ && rm -f _$@
+       @-$(CMP) $(srcdir)/address@hidden _$@ && rm -f _$@
 
 mmap8k::
        @echo $@
        @$(AWK) '{ print }' $(srcdir)/mmap8k.in >_$@
-       @-$(CMP) $(srcdir)/mmap8k.in _$@ && rm -f _$@
+       @-$(CMP) $(srcdir)/address@hidden _$@ && rm -f _$@
 
 tradanch::
        @echo $@
        @$(AWK) --traditional -f $(srcdir)/tradanch.awk $(srcdir)/tradanch.in 
>_$@
-       @-$(CMP) $(srcdir)/tradanch.ok _$@ && rm -f _$@
+       @-$(CMP) $(srcdir)/address@hidden _$@ && rm -f _$@
 
 # AIX /bin/sh exec's the last command in a list, therefore issue a ":"
 # command so that pid.sh is fork'ed as a child before being exec'ed.
@@ -1082,12 +1083,12 @@ strftlng::
        @if $(CMP) $(srcdir)/strftlng.ok _$@ >/dev/null 2>&1 ; then : ; else \
        TZ=UTC0; export TZ; $(AWK) -f $(srcdir)/strftlng.awk >_$@ ; \
        fi
-       @-$(CMP) $(srcdir)/strftlng.ok _$@ && rm -f _$@
+       @-$(CMP) $(srcdir)/address@hidden _$@ && rm -f _$@
 
 nors::
        @echo $@
        @echo A B C D E | tr -d '\12\15' | $(AWK) '{ print $$NF }' - 
$(srcdir)/nors.in > _$@
-       @-$(CMP) $(srcdir)/nors.ok _$@ && rm -f _$@
+       @-$(CMP) $(srcdir)/address@hidden _$@ && rm -f _$@
 
 fmtspcl.ok: fmtspcl.tok Makefile
        @$(AWK) -v "sd=$(srcdir)" 'BEGIN {pnan = sprintf("%g",sqrt(-1)); nnan = 
sprintf("%g",-sqrt(-1)); pinf = sprintf("%g",-log(0)); ninf = 
sprintf("%g",log(0))} {sub(/positive_nan/,pnan); sub(/negative_nan/,nnan); 
sub(/positive_infinity/,pinf); sub(/negative_infinity/,ninf); 
sub(/fmtspcl/,(sd"/fmtspcl")); print}' < $(srcdir)/fmtspcl.tok > $@ 2>/dev/null
@@ -1100,18 +1101,18 @@ fmtspcl: fmtspcl.ok
 reint::
        @echo $@
        @$(AWK) --re-interval -f $(srcdir)/reint.awk $(srcdir)/reint.in >_$@
-       @-$(CMP) $(srcdir)/reint.ok _$@ && rm -f _$@
+       @-$(CMP) $(srcdir)/address@hidden _$@ && rm -f _$@
 
 pipeio1::
        @echo $@
        @$(AWK) -f $(srcdir)/pipeio1.awk >_$@
        @rm -f test1 test2
-       @-$(CMP) $(srcdir)/pipeio1.ok _$@ && rm -f _$@
+       @-$(CMP) $(srcdir)/address@hidden _$@ && rm -f _$@
 
 pipeio2::
        @echo $@
        @$(AWK) -v SRCDIR=$(srcdir) -f $(srcdir)/pipeio2.awk >_$@
-       @-$(CMP) $(srcdir)/pipeio2.ok _$@ && rm -f _$@
+       @-$(CMP) $(srcdir)/address@hidden _$@ && rm -f _$@
 
 clobber::
        @echo $@
@@ -1122,7 +1123,7 @@ clobber::
 arynocls::
        @echo $@
        @-AWKPATH=$(srcdir) $(AWK) -v INPUT=$(srcdir)/arynocls.in -f 
arynocls.awk >_$@
-       @-$(CMP) $(srcdir)/arynocls.ok _$@ && rm -f _$@
+       @-$(CMP) $(srcdir)/address@hidden _$@ && rm -f _$@
 
 getlnbuf::
        @echo $@
@@ -1156,12 +1157,12 @@ inetdayt::
 redfilnm::
        @echo $@
        @$(AWK) -f $(srcdir)/redfilnm.awk srcdir=$(srcdir) 
$(srcdir)/redfilnm.in >_$@
-       @-$(CMP) $(srcdir)/redfilnm.ok _$@ && rm -f _$@
+       @-$(CMP) $(srcdir)/address@hidden _$@ && rm -f _$@
 
 leaddig::
        @echo $@
        @$(AWK) -v x=2E  -f $(srcdir)/leaddig.awk >_$@
-       @-$(CMP) $(srcdir)/leaddig.ok _$@ && rm -f _$@
+       @-$(CMP) $(srcdir)/address@hidden _$@ && rm -f _$@
 
 gsubtst3::
        @echo $@
diff --git a/test/Makefile.in b/test/Makefile.in
index 0d37429..5dbb0e5 100644
--- a/test/Makefile.in
+++ b/test/Makefile.in
@@ -1326,7 +1326,7 @@ argarray::
        .)      : ;; \
        *)      rm -f ./argarray.in ;; \
        esac
-       @-$(CMP) $(srcdir)/argarray.ok _$@ && rm -f _$@
+       @-$(CMP) $(srcdir)/address@hidden _$@ && rm -f _$@
 
 regtest::
        @echo 'Some of the output from regtest is very system specific, do not'
@@ -1341,43 +1341,44 @@ manyfiles::
        @$(AWK) 'BEGIN { for (i = 1; i <= 1030; i++) print i, i}' >_$@
        @$(AWK) -f $(srcdir)/manyfiles.awk _$@ _$@
        @wc -l junk/* | $(AWK) '$$1 != 2' | wc -l | sed "s/  *//g" > _$@
-       @rm -rf junk ; $(CMP) $(srcdir)/address@hidden _$@ && rm -f _$@
+       @rm -rf junk
+       @-$(CMP) $(srcdir)/address@hidden _$@ && rm -f _$@
 
 compare::
        @echo $@
        @$(AWK) -f $(srcdir)/compare.awk 0 1 $(srcdir)/compare.in >_$@
-       @-$(CMP) $(srcdir)/compare.ok _$@ && rm -f _$@
+       @-$(CMP) $(srcdir)/address@hidden _$@ && rm -f _$@
 
 inftest::
        @echo $@
        @echo This test is very machine specific...
        @$(AWK) -f $(srcdir)/inftest.awk | sed "s/inf/Inf/g" >_$@
-       @-$(CMP) $(srcdir)/inftest.ok _$@ && rm -f _$@
+       @-$(CMP) $(srcdir)/address@hidden _$@ && rm -f _$@
 
 getline2::
        @echo $@
        @$(AWK) -f $(srcdir)/getline2.awk $(srcdir)/getline2.awk 
$(srcdir)/getline2.awk >_$@
-       @-$(CMP) $(srcdir)/getline2.ok _$@ && rm -f _$@
+       @-$(CMP) $(srcdir)/address@hidden _$@ && rm -f _$@
 
 awkpath::
        @echo $@
        @AWKPATH="$(srcdir)$(PATH_SEPARATOR)$(srcdir)/lib" $(AWK) -f 
awkpath.awk >_$@
-       @-$(CMP) $(srcdir)/awkpath.ok _$@ && rm -f _$@
+       @-$(CMP) $(srcdir)/address@hidden _$@ && rm -f _$@
 
 argtest::
        @echo $@
        @$(AWK) -f $(srcdir)/argtest.awk -x -y abc >_$@
-       @-$(CMP) $(srcdir)/argtest.ok _$@ && rm -f _$@
+       @-$(CMP) $(srcdir)/address@hidden _$@ && rm -f _$@
 
 badargs::
        @echo $@
        @-$(AWK) -f 2>&1 | grep -v patchlevel >_$@
-       @-$(CMP) $(srcdir)/badargs.ok _$@ && rm -f _$@
+       @-$(CMP) $(srcdir)/address@hidden _$@ && rm -f _$@
 
 nonl::
        @echo $@
        @-AWKPATH=$(srcdir) $(AWK) --lint -f nonl.awk /dev/null >_$@ 2>&1
-       @-$(CMP) $(srcdir)/nonl.ok _$@ && rm -f _$@
+       @-$(CMP) $(srcdir)/address@hidden _$@ && rm -f _$@
 
 strftime::
        @echo This test could fail on slow machines or on a minute boundary,
@@ -1391,7 +1392,7 @@ strftime::
 litoct::
        @echo $@
        @echo ab | $(AWK) --traditional -f $(srcdir)/litoct.awk >_$@
-       @-$(CMP) $(srcdir)/litoct.ok _$@ && rm -f _$@
+       @-$(CMP) $(srcdir)/address@hidden _$@ && rm -f _$@
 
 devfd::
        @echo $@
@@ -1401,23 +1402,23 @@ devfd::
 fflush::
        @echo $@
        @$(srcdir)/fflush.sh >_$@
-       @-$(CMP) $(srcdir)/fflush.ok _$@ && rm -f _$@
+       @-$(CMP) $(srcdir)/address@hidden _$@ && rm -f _$@
 
 tweakfld::
        @echo $@
        @$(AWK) -f $(srcdir)/tweakfld.awk $(srcdir)/tweakfld.in >_$@
        @rm -f errors.cleanup
-       @-$(CMP) $(srcdir)/tweakfld.ok _$@ && rm -f _$@
+       @-$(CMP) $(srcdir)/address@hidden _$@ && rm -f _$@
 
 mmap8k::
        @echo $@
        @$(AWK) '{ print }' $(srcdir)/mmap8k.in >_$@
-       @-$(CMP) $(srcdir)/mmap8k.in _$@ && rm -f _$@
+       @-$(CMP) $(srcdir)/address@hidden _$@ && rm -f _$@
 
 tradanch::
        @echo $@
        @$(AWK) --traditional -f $(srcdir)/tradanch.awk $(srcdir)/tradanch.in 
>_$@
-       @-$(CMP) $(srcdir)/tradanch.ok _$@ && rm -f _$@
+       @-$(CMP) $(srcdir)/address@hidden _$@ && rm -f _$@
 
 # AIX /bin/sh exec's the last command in a list, therefore issue a ":"
 # command so that pid.sh is fork'ed as a child before being exec'ed.
@@ -1432,12 +1433,12 @@ strftlng::
        @if $(CMP) $(srcdir)/strftlng.ok _$@ >/dev/null 2>&1 ; then : ; else \
        TZ=UTC0; export TZ; $(AWK) -f $(srcdir)/strftlng.awk >_$@ ; \
        fi
-       @-$(CMP) $(srcdir)/strftlng.ok _$@ && rm -f _$@
+       @-$(CMP) $(srcdir)/address@hidden _$@ && rm -f _$@
 
 nors::
        @echo $@
        @echo A B C D E | tr -d '\12\15' | $(AWK) '{ print $$NF }' - 
$(srcdir)/nors.in > _$@
-       @-$(CMP) $(srcdir)/nors.ok _$@ && rm -f _$@
+       @-$(CMP) $(srcdir)/address@hidden _$@ && rm -f _$@
 
 fmtspcl.ok: fmtspcl.tok Makefile
        @$(AWK) -v "sd=$(srcdir)" 'BEGIN {pnan = sprintf("%g",sqrt(-1)); nnan = 
sprintf("%g",-sqrt(-1)); pinf = sprintf("%g",-log(0)); ninf = 
sprintf("%g",log(0))} {sub(/positive_nan/,pnan); sub(/negative_nan/,nnan); 
sub(/positive_infinity/,pinf); sub(/negative_infinity/,ninf); 
sub(/fmtspcl/,(sd"/fmtspcl")); print}' < $(srcdir)/fmtspcl.tok > $@ 2>/dev/null
@@ -1450,18 +1451,18 @@ fmtspcl: fmtspcl.ok
 reint::
        @echo $@
        @$(AWK) --re-interval -f $(srcdir)/reint.awk $(srcdir)/reint.in >_$@
-       @-$(CMP) $(srcdir)/reint.ok _$@ && rm -f _$@
+       @-$(CMP) $(srcdir)/address@hidden _$@ && rm -f _$@
 
 pipeio1::
        @echo $@
        @$(AWK) -f $(srcdir)/pipeio1.awk >_$@
        @rm -f test1 test2
-       @-$(CMP) $(srcdir)/pipeio1.ok _$@ && rm -f _$@
+       @-$(CMP) $(srcdir)/address@hidden _$@ && rm -f _$@
 
 pipeio2::
        @echo $@
        @$(AWK) -v SRCDIR=$(srcdir) -f $(srcdir)/pipeio2.awk >_$@
-       @-$(CMP) $(srcdir)/pipeio2.ok _$@ && rm -f _$@
+       @-$(CMP) $(srcdir)/address@hidden _$@ && rm -f _$@
 
 clobber::
        @echo $@
@@ -1472,7 +1473,7 @@ clobber::
 arynocls::
        @echo $@
        @-AWKPATH=$(srcdir) $(AWK) -v INPUT=$(srcdir)/arynocls.in -f 
arynocls.awk >_$@
-       @-$(CMP) $(srcdir)/arynocls.ok _$@ && rm -f _$@
+       @-$(CMP) $(srcdir)/address@hidden _$@ && rm -f _$@
 
 getlnbuf::
        @echo $@
@@ -1506,12 +1507,12 @@ inetdayt::
 redfilnm::
        @echo $@
        @$(AWK) -f $(srcdir)/redfilnm.awk srcdir=$(srcdir) 
$(srcdir)/redfilnm.in >_$@
-       @-$(CMP) $(srcdir)/redfilnm.ok _$@ && rm -f _$@
+       @-$(CMP) $(srcdir)/address@hidden _$@ && rm -f _$@
 
 leaddig::
        @echo $@
        @$(AWK) -v x=2E  -f $(srcdir)/leaddig.awk >_$@
-       @-$(CMP) $(srcdir)/leaddig.ok _$@ && rm -f _$@
+       @-$(CMP) $(srcdir)/address@hidden _$@ && rm -f _$@
 
 gsubtst3::
        @echo $@

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

commit c399d8f8226bba46d34b8672ca50722605f95e37
Author: Arnold D. Robbins <address@hidden>
Date:   Tue Dec 6 21:39:57 2011 +0200

    MBS support tweaks for DJGPP and z/OS.

diff --git a/ChangeLog b/ChangeLog
index 4de4154..42fe783 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,9 @@
+2011-12-06         Arnold D. Robbins     <address@hidden>
+
+       * awk.h, mbsupport.h: Changes for MBS support on DJGPP
+       and z/OS.
+       * io.c: Disable pty support on z/OS.
+
 2011-11-27         Arnold D. Robbins     <address@hidden>
 
        * dfa.c: Sync with GNU grep.
diff --git a/awk.h b/awk.h
index 0c95472..a267d2e 100644
--- a/awk.h
+++ b/awk.h
@@ -76,6 +76,10 @@
 extern int errno;
 #endif
 
+#ifdef STDC_HEADERS
+#include <stdlib.h>
+#endif /* not STDC_HEADERS */
+
 #include "mbsupport.h" /* defines MBS_SUPPORT */
 
 #if MBS_SUPPORT
@@ -131,10 +135,6 @@ typedef int off_t;
 #define        S_ISREG(m) (((m) & S_IFMT) == S_IFREG)
 #endif
 
-#ifdef STDC_HEADERS
-#include <stdlib.h>
-#endif /* not STDC_HEADERS */
-
 #include "protos.h"
 
 #ifdef HAVE_STRING_H
diff --git a/io.c b/io.c
index e423a43..9c827ed 100644
--- a/io.c
+++ b/io.c
@@ -1594,7 +1594,7 @@ two_way_open(const char *str, struct redirect *rp)
        }
 #endif /* HAVE_SOCKETS */
 
-#ifdef HAVE_TERMIOS_H
+#if defined(HAVE_TERMIOS_H) && ! defined(ZOS_USS)
        /* case 2: use ptys for two-way communications to child */
        if (! no_ptys && pty_vs_pipe(str)) {
                static int initialized = FALSE;
@@ -1809,7 +1809,7 @@ two_way_open(const char *str, struct redirect *rp)
                first_pty_letter = '\0';        /* reset for next command */
                return TRUE;
        }
-#endif /* HAVE_TERMIOS_H */
+#endif /* defined(HAVE_TERMIOS_H) && ! defined(ZOS_USS) */
 
 use_pipes:
 #ifndef PIPES_SIMULATED                /* real pipes */
diff --git a/mbsupport.h b/mbsupport.h
index 57abaa6..f647d78 100644
--- a/mbsupport.h
+++ b/mbsupport.h
@@ -40,7 +40,7 @@
 
 #if    defined(HAVE_ISWCTYPE) \
     && defined(HAVE_LOCALE_H) \
-    && defined(HAVE_BTOWC) \
+    && (defined(HAVE_BTOWC) || defined(ZOS_USS)) \
     && defined(HAVE_MBRLEN) \
     && defined(HAVE_MBRTOWC) \
     && defined(HAVE_WCHAR_H) \
@@ -71,7 +71,10 @@
 
 /* All this glop is for dfa.c. Bleah. */
 
-#define wchar_t                char
+#ifndef DJGPP
+#define wchar_t         char
+#endif
+
 #define wctype_t       int
 #define wint_t         int
 #define mbstate_t      int

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

commit 77620464b7805e03fcfc5de21a6e46b32426c6f0
Author: Arnold D. Robbins <address@hidden>
Date:   Tue Dec 6 21:37:17 2011 +0200

    Also need this change for dfa.h for dfa.c sync.

diff --git a/ChangeLog b/ChangeLog
index d2d677a..4de4154 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,6 +1,7 @@
 2011-11-27         Arnold D. Robbins     <address@hidden>
 
        * dfa.c: Sync with GNU grep.
+       * dfa.h: Add _GL_ATTRIBUTE_PURE macro. Bleah.
 
 2011-11-14         John Haque      <address@hidden>
 
diff --git a/dfa.h b/dfa.h
index 4d65ee3..d45f313 100644
--- a/dfa.h
+++ b/dfa.h
@@ -22,6 +22,13 @@
 # define __attribute__(x)
 #endif
 
+/* The __pure__ attribute was added in gcc 2.96.  */
+#if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 96)
+# define _GL_ATTRIBUTE_PURE __attribute__ ((__pure__))
+#else
+# define _GL_ATTRIBUTE_PURE /* empty */
+#endif
+
 /* Element of a list of strings, at least one of which is known to
    appear in any R.E. matching the DFA. */
 struct dfamust

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

commit c45c07f2825065fdeb701c5dff763b988f6d9653
Author: Arnold D. Robbins <address@hidden>
Date:   Tue Dec 6 21:35:33 2011 +0200

    Documentation updates of various sorts.

diff --git a/NEWS b/NEWS
index 0745c32..289ce86 100644
--- a/NEWS
+++ b/NEWS
@@ -7,12 +7,12 @@
 Changes from 4.0.0 to 4.0.1
 ---------------------------
 
-1. The default handling of backslash in sub() and gsub() has been reverted to 
the
-   behavior of 3.1. It was silly to think I could break compatibility that way,
-   even for standards compliance.
+1. The default handling of backslash in sub() and gsub() has been reverted to
+   the behavior of 3.1. It was silly to think I could break compatibility that
+   way, even for standards compliance.
 
-XXX. Lots of minor bugs fixed and portability clean-ups along the way. See the 
ChangeLog
-   for details.
+XXX. Lots of minor bugs fixed and portability clean-ups along the way. See
+   the ChangeLog for details.
 
 Changes from 3.1.8 to 4.0.0
 ---------------------------
diff --git a/README_d/README.bootstrap b/README_d/README.bootstrap
new file mode 100644
index 0000000..152bbef
--- /dev/null
+++ b/README_d/README.bootstrap
@@ -0,0 +1,32 @@
+Tue Dec  6 21:33:19 IST 2011
+============================
+
+As documented in the mail below, if you are using a system without any
+version of awk installed, you will have bootstrapping problems (i.e., running
+configure).  The solution is to install mawk or Brian Kernighan's awk
+first.
+
+Arnold Robbins
+------------------------------------
+From: Simon Josefsson <address@hidden>
+To: address@hidden
+Date: Sat, 19 Nov 2011 15:24:22 +0100
+Message-ID: <address@hidden>
+Subject: [bug-gawk] building gawk requires an awk?
+
+Hello,
+
+I was not able to build gawk 4.0.0 on a GNU/Hurd machine that didn't
+have any awk, the ./configure script failed at the end:
+
+config.status: creating Makefile
+./config.status: line 1169: awk: command not found
+config.status: error: could not create Makefile
+
+Is this a known bootstrapping issue?  Same happened for 3.1.8.  I looked
+in README but didn't find anything obvious.
+
+Btw, building 'mawk' first and then gawk 4.0.0 works.  Running self
+checks didn't work because there is no 'cmp' on the system either...
+
+/Simon
diff --git a/doc/ChangeLog b/doc/ChangeLog
index dec5ddc..2921a91 100644
--- a/doc/ChangeLog
+++ b/doc/ChangeLog
@@ -1,3 +1,7 @@
+2011-12-06         Arnold D. Robbins     <address@hidden>
+
+       * gawk.texi: Various typo fixes from mailing list.
+
 2011-11-10         Arnold D. Robbins     <address@hidden>
 
        * gawk.1: Fix some .BR to be .B.
diff --git a/doc/gawk.info b/doc/gawk.info
index 877f50d..38ddd47 100644
--- a/doc/gawk.info
+++ b/doc/gawk.info
@@ -7973,7 +7973,7 @@ summary of the types of `awk' patterns:
 
 `BEGINFILE'
 `ENDFILE'
-     Special patterns for you to supply startup or cleanup actions to
+     Special patterns for you to supply startup or cleanup actions to be
      done on a per file basis.  (*Note BEGINFILE/ENDFILE::.)
 
 `EMPTY'
@@ -8852,12 +8852,12 @@ the previous example with the following `while' loop:
 This program loops forever once `x' reaches 5.
 
    The `continue' statement has no special meaning with respect to the
-`switch' statement, nor does it any meaning when used outside the body
-of a loop.  Historical versions of `awk' treated a `continue' statement
-outside a loop the same way they treated a `break' statement outside a
-loop: as if it were a `next' statement (*note Next Statement::).
-(d.c.)  Recent versions of Brian Kernighan's `awk' no longer work this
-way, nor does `gawk'.
+`switch' statement, nor does it have any meaning when used outside the
+body of a loop.  Historical versions of `awk' treated a `continue'
+statement outside a loop the same way they treated a `break' statement
+outside a loop: as if it were a `next' statement (*note Next
+Statement::).  (d.c.)  Recent versions of Brian Kernighan's `awk' no
+longer work this way, nor does `gawk'.
 
 
 File: gawk.info,  Node: Next Statement,  Next: Nextfile Statement,  Prev: 
Continue Statement,  Up: Statements
@@ -27588,261 +27588,261 @@ Node: Precedence330801
 Node: Locales334470
 Node: Patterns and Actions335559
 Node: Pattern Overview336613
-Node: Regexp Patterns338279
-Node: Expression Patterns338822
-Node: Ranges342507
-Node: BEGIN/END345473
-Node: Using BEGIN/END346235
-Ref: Using BEGIN/END-Footnote-1348966
-Node: I/O And BEGIN/END349072
-Node: BEGINFILE/ENDFILE351354
-Node: Empty354247
-Node: Using Shell Variables354563
-Node: Action Overview356848
-Node: Statements359205
-Node: If Statement361059
-Node: While Statement362558
-Node: Do Statement364602
-Node: For Statement365758
-Node: Switch Statement368910
-Node: Break Statement371007
-Node: Continue Statement372997
-Node: Next Statement374784
-Node: Nextfile Statement377174
-Node: Exit Statement379719
-Node: Built-in Variables382135
-Node: User-modified383230
-Ref: User-modified-Footnote-1391256
-Node: Auto-set391318
-Ref: Auto-set-Footnote-1400609
-Node: ARGC and ARGV400814
-Node: Arrays404665
-Node: Array Basics406170
-Node: Array Intro406996
-Node: Reference to Elements411314
-Node: Assigning Elements413584
-Node: Array Example414075
-Node: Scanning an Array415807
-Node: Controlling Scanning418121
-Ref: Controlling Scanning-Footnote-1423053
-Node: Delete423369
-Ref: Delete-Footnote-1425804
-Node: Numeric Array Subscripts425861
-Node: Uninitialized Subscripts428044
-Node: Multi-dimensional429672
-Node: Multi-scanning432766
-Node: Arrays of Arrays434357
-Node: Functions439002
-Node: Built-in439824
-Node: Calling Built-in440902
-Node: Numeric Functions442890
-Ref: Numeric Functions-Footnote-1446655
-Ref: Numeric Functions-Footnote-2447012
-Ref: Numeric Functions-Footnote-3447060
-Node: String Functions447329
-Ref: String Functions-Footnote-1470826
-Ref: String Functions-Footnote-2470955
-Ref: String Functions-Footnote-3471203
-Node: Gory Details471290
-Ref: table-sub-escapes472969
-Ref: table-sub-posix-92474323
-Ref: table-sub-proposed475666
-Ref: table-posix-sub477016
-Ref: table-gensub-escapes478562
-Ref: Gory Details-Footnote-1479769
-Ref: Gory Details-Footnote-2479820
-Node: I/O Functions479971
-Ref: I/O Functions-Footnote-1486626
-Node: Time Functions486773
-Ref: Time Functions-Footnote-1497665
-Ref: Time Functions-Footnote-2497733
-Ref: Time Functions-Footnote-3497891
-Ref: Time Functions-Footnote-4498002
-Ref: Time Functions-Footnote-5498114
-Ref: Time Functions-Footnote-6498341
-Node: Bitwise Functions498607
-Ref: table-bitwise-ops499165
-Ref: Bitwise Functions-Footnote-1503325
-Node: Type Functions503509
-Node: I18N Functions503979
-Node: User-defined505606
-Node: Definition Syntax506410
-Ref: Definition Syntax-Footnote-1511320
-Node: Function Example511389
-Node: Function Caveats513983
-Node: Calling A Function514404
-Node: Variable Scope515519
-Node: Pass By Value/Reference517494
-Node: Return Statement520934
-Node: Dynamic Typing523915
-Node: Indirect Calls524650
-Node: Internationalization534335
-Node: I18N and L10N535761
-Node: Explaining gettext536447
-Ref: Explaining gettext-Footnote-1541513
-Ref: Explaining gettext-Footnote-2541697
-Node: Programmer i18n541862
-Node: Translator i18n546062
-Node: String Extraction546855
-Ref: String Extraction-Footnote-1547816
-Node: Printf Ordering547902
-Ref: Printf Ordering-Footnote-1550686
-Node: I18N Portability550750
-Ref: I18N Portability-Footnote-1553199
-Node: I18N Example553262
-Ref: I18N Example-Footnote-1555897
-Node: Gawk I18N555969
-Node: Advanced Features556586
-Node: Nondecimal Data558099
-Node: Array Sorting559682
-Node: Controlling Array Traversal560379
-Node: Array Sorting Functions568616
-Ref: Array Sorting Functions-Footnote-1572290
-Ref: Array Sorting Functions-Footnote-2572383
-Node: Two-way I/O572577
-Ref: Two-way I/O-Footnote-1578009
-Node: TCP/IP Networking578079
-Node: Profiling580923
-Node: Library Functions588397
-Ref: Library Functions-Footnote-1591404
-Node: Library Names591575
-Ref: Library Names-Footnote-1595046
-Ref: Library Names-Footnote-2595266
-Node: General Functions595352
-Node: Strtonum Function596305
-Node: Assert Function599235
-Node: Round Function602561
-Node: Cliff Random Function604104
-Node: Ordinal Functions605120
-Ref: Ordinal Functions-Footnote-1608190
-Ref: Ordinal Functions-Footnote-2608442
-Node: Join Function608651
-Ref: Join Function-Footnote-1610422
-Node: Gettimeofday Function610622
-Node: Data File Management614337
-Node: Filetrans Function614969
-Node: Rewind Function619108
-Node: File Checking620495
-Node: Empty Files621589
-Node: Ignoring Assigns623819
-Node: Getopt Function625372
-Ref: Getopt Function-Footnote-1636676
-Node: Passwd Functions636879
-Ref: Passwd Functions-Footnote-1645854
-Node: Group Functions645942
-Node: Walking Arrays654026
-Node: Sample Programs655595
-Node: Running Examples656260
-Node: Clones656988
-Node: Cut Program658212
-Node: Egrep Program668057
-Ref: Egrep Program-Footnote-1675830
-Node: Id Program675940
-Node: Split Program679556
-Ref: Split Program-Footnote-1683075
-Node: Tee Program683203
-Node: Uniq Program686006
-Node: Wc Program693435
-Ref: Wc Program-Footnote-1697701
-Ref: Wc Program-Footnote-2697901
-Node: Miscellaneous Programs697993
-Node: Dupword Program699181
-Node: Alarm Program701212
-Node: Translate Program705961
-Ref: Translate Program-Footnote-1710348
-Ref: Translate Program-Footnote-2710576
-Node: Labels Program710710
-Ref: Labels Program-Footnote-1714081
-Node: Word Sorting714165
-Node: History Sorting718049
-Node: Extract Program719888
-Ref: Extract Program-Footnote-1727371
-Node: Simple Sed727499
-Node: Igawk Program730561
-Ref: Igawk Program-Footnote-1745718
-Ref: Igawk Program-Footnote-2745919
-Node: Anagram Program746057
-Node: Signature Program749125
-Node: Debugger750225
-Node: Debugging751136
-Node: Debugging Concepts751549
-Node: Debugging Terms753405
-Node: Awk Debugging756028
-Node: Sample dgawk session756920
-Node: dgawk invocation757412
-Node: Finding The Bug758594
-Node: List of Debugger Commands765080
-Node: Breakpoint Control766391
-Node: Dgawk Execution Control770027
-Node: Viewing And Changing Data773378
-Node: Dgawk Stack776715
-Node: Dgawk Info778175
-Node: Miscellaneous Dgawk Commands782123
-Node: Readline Support787551
-Node: Dgawk Limitations788389
-Node: Language History790578
-Node: V7/SVR3.1792090
-Node: SVR4794411
-Node: POSIX795853
-Node: BTL796861
-Node: POSIX/GNU797595
-Node: Common Extensions802746
-Node: Ranges and Locales803853
-Ref: Ranges and Locales-Footnote-1808460
-Node: Contributors808681
-Node: Installation812943
-Node: Gawk Distribution813837
-Node: Getting814321
-Node: Extracting815147
-Node: Distribution contents816839
-Node: Unix Installation822061
-Node: Quick Installation822678
-Node: Additional Configuration Options824640
-Node: Configuration Philosophy826117
-Node: Non-Unix Installation828459
-Node: PC Installation828917
-Node: PC Binary Installation830216
-Node: PC Compiling832064
-Node: PC Testing835008
-Node: PC Using836184
-Node: Cygwin840369
-Node: MSYS841369
-Node: VMS Installation841883
-Node: VMS Compilation842486
-Ref: VMS Compilation-Footnote-1843493
-Node: VMS Installation Details843551
-Node: VMS Running845186
-Node: VMS Old Gawk846793
-Node: Bugs847267
-Node: Other Versions851119
-Node: Notes856400
-Node: Compatibility Mode857092
-Node: Additions857875
-Node: Accessing The Source858687
-Node: Adding Code860112
-Node: New Ports866079
-Node: Dynamic Extensions870192
-Node: Internals871568
-Node: Plugin License880671
-Node: Sample Library881305
-Node: Internal File Description881991
-Node: Internal File Ops885706
-Ref: Internal File Ops-Footnote-1890487
-Node: Using Internal File Ops890627
-Node: Future Extensions893004
-Node: Basic Concepts895508
-Node: Basic High Level896265
-Ref: Basic High Level-Footnote-1900300
-Node: Basic Data Typing900485
-Node: Floating Point Issues905010
-Node: String Conversion Precision906093
-Ref: String Conversion Precision-Footnote-1907793
-Node: Unexpected Results907902
-Node: POSIX Floating Point Problems909728
-Ref: POSIX Floating Point Problems-Footnote-1913433
-Node: Glossary913471
-Node: Copying938447
-Node: GNU Free Documentation License976004
-Node: Index1001141
+Node: Regexp Patterns338282
+Node: Expression Patterns338825
+Node: Ranges342510
+Node: BEGIN/END345476
+Node: Using BEGIN/END346238
+Ref: Using BEGIN/END-Footnote-1348969
+Node: I/O And BEGIN/END349075
+Node: BEGINFILE/ENDFILE351357
+Node: Empty354250
+Node: Using Shell Variables354566
+Node: Action Overview356851
+Node: Statements359208
+Node: If Statement361062
+Node: While Statement362561
+Node: Do Statement364605
+Node: For Statement365761
+Node: Switch Statement368913
+Node: Break Statement371010
+Node: Continue Statement373000
+Node: Next Statement374793
+Node: Nextfile Statement377183
+Node: Exit Statement379728
+Node: Built-in Variables382144
+Node: User-modified383239
+Ref: User-modified-Footnote-1391265
+Node: Auto-set391327
+Ref: Auto-set-Footnote-1400618
+Node: ARGC and ARGV400823
+Node: Arrays404674
+Node: Array Basics406179
+Node: Array Intro407005
+Node: Reference to Elements411323
+Node: Assigning Elements413593
+Node: Array Example414084
+Node: Scanning an Array415816
+Node: Controlling Scanning418130
+Ref: Controlling Scanning-Footnote-1423062
+Node: Delete423378
+Ref: Delete-Footnote-1425813
+Node: Numeric Array Subscripts425870
+Node: Uninitialized Subscripts428053
+Node: Multi-dimensional429681
+Node: Multi-scanning432775
+Node: Arrays of Arrays434366
+Node: Functions439011
+Node: Built-in439833
+Node: Calling Built-in440911
+Node: Numeric Functions442899
+Ref: Numeric Functions-Footnote-1446664
+Ref: Numeric Functions-Footnote-2447021
+Ref: Numeric Functions-Footnote-3447069
+Node: String Functions447338
+Ref: String Functions-Footnote-1470835
+Ref: String Functions-Footnote-2470964
+Ref: String Functions-Footnote-3471212
+Node: Gory Details471299
+Ref: table-sub-escapes472978
+Ref: table-sub-posix-92474332
+Ref: table-sub-proposed475675
+Ref: table-posix-sub477025
+Ref: table-gensub-escapes478571
+Ref: Gory Details-Footnote-1479778
+Ref: Gory Details-Footnote-2479829
+Node: I/O Functions479980
+Ref: I/O Functions-Footnote-1486635
+Node: Time Functions486782
+Ref: Time Functions-Footnote-1497674
+Ref: Time Functions-Footnote-2497742
+Ref: Time Functions-Footnote-3497900
+Ref: Time Functions-Footnote-4498011
+Ref: Time Functions-Footnote-5498123
+Ref: Time Functions-Footnote-6498350
+Node: Bitwise Functions498616
+Ref: table-bitwise-ops499174
+Ref: Bitwise Functions-Footnote-1503334
+Node: Type Functions503518
+Node: I18N Functions503988
+Node: User-defined505615
+Node: Definition Syntax506419
+Ref: Definition Syntax-Footnote-1511329
+Node: Function Example511398
+Node: Function Caveats513992
+Node: Calling A Function514413
+Node: Variable Scope515528
+Node: Pass By Value/Reference517503
+Node: Return Statement520943
+Node: Dynamic Typing523924
+Node: Indirect Calls524659
+Node: Internationalization534344
+Node: I18N and L10N535770
+Node: Explaining gettext536456
+Ref: Explaining gettext-Footnote-1541522
+Ref: Explaining gettext-Footnote-2541706
+Node: Programmer i18n541871
+Node: Translator i18n546071
+Node: String Extraction546864
+Ref: String Extraction-Footnote-1547825
+Node: Printf Ordering547911
+Ref: Printf Ordering-Footnote-1550695
+Node: I18N Portability550759
+Ref: I18N Portability-Footnote-1553208
+Node: I18N Example553271
+Ref: I18N Example-Footnote-1555906
+Node: Gawk I18N555978
+Node: Advanced Features556595
+Node: Nondecimal Data558108
+Node: Array Sorting559691
+Node: Controlling Array Traversal560388
+Node: Array Sorting Functions568625
+Ref: Array Sorting Functions-Footnote-1572299
+Ref: Array Sorting Functions-Footnote-2572392
+Node: Two-way I/O572586
+Ref: Two-way I/O-Footnote-1578018
+Node: TCP/IP Networking578088
+Node: Profiling580932
+Node: Library Functions588406
+Ref: Library Functions-Footnote-1591413
+Node: Library Names591584
+Ref: Library Names-Footnote-1595055
+Ref: Library Names-Footnote-2595275
+Node: General Functions595361
+Node: Strtonum Function596314
+Node: Assert Function599244
+Node: Round Function602570
+Node: Cliff Random Function604113
+Node: Ordinal Functions605129
+Ref: Ordinal Functions-Footnote-1608199
+Ref: Ordinal Functions-Footnote-2608451
+Node: Join Function608660
+Ref: Join Function-Footnote-1610431
+Node: Gettimeofday Function610631
+Node: Data File Management614346
+Node: Filetrans Function614978
+Node: Rewind Function619117
+Node: File Checking620504
+Node: Empty Files621598
+Node: Ignoring Assigns623828
+Node: Getopt Function625381
+Ref: Getopt Function-Footnote-1636685
+Node: Passwd Functions636888
+Ref: Passwd Functions-Footnote-1645863
+Node: Group Functions645951
+Node: Walking Arrays654035
+Node: Sample Programs655604
+Node: Running Examples656269
+Node: Clones656997
+Node: Cut Program658221
+Node: Egrep Program668066
+Ref: Egrep Program-Footnote-1675839
+Node: Id Program675949
+Node: Split Program679565
+Ref: Split Program-Footnote-1683084
+Node: Tee Program683212
+Node: Uniq Program686015
+Node: Wc Program693444
+Ref: Wc Program-Footnote-1697710
+Ref: Wc Program-Footnote-2697910
+Node: Miscellaneous Programs698002
+Node: Dupword Program699190
+Node: Alarm Program701221
+Node: Translate Program705970
+Ref: Translate Program-Footnote-1710357
+Ref: Translate Program-Footnote-2710585
+Node: Labels Program710719
+Ref: Labels Program-Footnote-1714090
+Node: Word Sorting714174
+Node: History Sorting718058
+Node: Extract Program719897
+Ref: Extract Program-Footnote-1727380
+Node: Simple Sed727508
+Node: Igawk Program730570
+Ref: Igawk Program-Footnote-1745727
+Ref: Igawk Program-Footnote-2745928
+Node: Anagram Program746066
+Node: Signature Program749134
+Node: Debugger750234
+Node: Debugging751145
+Node: Debugging Concepts751558
+Node: Debugging Terms753414
+Node: Awk Debugging756037
+Node: Sample dgawk session756929
+Node: dgawk invocation757421
+Node: Finding The Bug758603
+Node: List of Debugger Commands765089
+Node: Breakpoint Control766400
+Node: Dgawk Execution Control770036
+Node: Viewing And Changing Data773387
+Node: Dgawk Stack776724
+Node: Dgawk Info778184
+Node: Miscellaneous Dgawk Commands782132
+Node: Readline Support787560
+Node: Dgawk Limitations788398
+Node: Language History790587
+Node: V7/SVR3.1792099
+Node: SVR4794420
+Node: POSIX795862
+Node: BTL796870
+Node: POSIX/GNU797604
+Node: Common Extensions802755
+Node: Ranges and Locales803862
+Ref: Ranges and Locales-Footnote-1808469
+Node: Contributors808690
+Node: Installation812952
+Node: Gawk Distribution813846
+Node: Getting814330
+Node: Extracting815156
+Node: Distribution contents816848
+Node: Unix Installation822070
+Node: Quick Installation822687
+Node: Additional Configuration Options824649
+Node: Configuration Philosophy826126
+Node: Non-Unix Installation828468
+Node: PC Installation828926
+Node: PC Binary Installation830225
+Node: PC Compiling832073
+Node: PC Testing835017
+Node: PC Using836193
+Node: Cygwin840378
+Node: MSYS841378
+Node: VMS Installation841892
+Node: VMS Compilation842495
+Ref: VMS Compilation-Footnote-1843502
+Node: VMS Installation Details843560
+Node: VMS Running845195
+Node: VMS Old Gawk846802
+Node: Bugs847276
+Node: Other Versions851128
+Node: Notes856409
+Node: Compatibility Mode857101
+Node: Additions857884
+Node: Accessing The Source858696
+Node: Adding Code860121
+Node: New Ports866088
+Node: Dynamic Extensions870201
+Node: Internals871577
+Node: Plugin License880680
+Node: Sample Library881314
+Node: Internal File Description882000
+Node: Internal File Ops885715
+Ref: Internal File Ops-Footnote-1890496
+Node: Using Internal File Ops890636
+Node: Future Extensions893013
+Node: Basic Concepts895517
+Node: Basic High Level896274
+Ref: Basic High Level-Footnote-1900309
+Node: Basic Data Typing900494
+Node: Floating Point Issues905019
+Node: String Conversion Precision906102
+Ref: String Conversion Precision-Footnote-1907802
+Node: Unexpected Results907911
+Node: POSIX Floating Point Problems909737
+Ref: POSIX Floating Point Problems-Footnote-1913442
+Node: Glossary913480
+Node: Copying938456
+Node: GNU Free Documentation License976013
+Node: Index1001150
 
 End Tag Table
diff --git a/doc/gawk.texi b/doc/gawk.texi
index 9cd4b74..33e66d7 100644
--- a/doc/gawk.texi
+++ b/doc/gawk.texi
@@ -10908,7 +10908,7 @@ Special patterns for you to supply startup or cleanup 
actions for your
 
 @item BEGINFILE
 @itemx ENDFILE
-Special patterns for you to supply startup or cleanup actions to
+Special patterns for you to supply startup or cleanup actions to be
 done on a per file basis.
 (@xref{BEGINFILE/ENDFILE}.)
 
@@ -12023,8 +12023,8 @@ This program loops forever once @code{x} reaches 5.
 @cindex dark corner, @code{continue} statement
 @cindex @command{gawk}, @code{continue} statement in
 The @code{continue} statement has no special meaning with respect to the
address@hidden statement, nor does it any meaning when used outside the body of
-a loop.  Historical versions of @command{awk} treated a @code{continue}
address@hidden statement, nor does it have any meaning when used outside the
+body of a loop.  Historical versions of @command{awk} treated a @code{continue}
 statement outside a loop the same way they treated a @code{break}
 statement outside a loop: as if it were a @code{next}
 statement
@@ -13415,7 +13415,7 @@ and will vary from one version of @command{awk} to the 
next.
 Often, though, you may wish to do something simple, such as
 ``traverse the array by comparing the indices in ascending order,''
 or ``traverse the array by on comparing the values in descending order.''
address@hidden provides two mechanims which give you this control.
address@hidden provides two mechanisms which give you this control.
 
 @itemize @bullet
 @item
@@ -18455,7 +18455,7 @@ END @{
 @end example
 
 The first field in each entry of the password file is the user's login name,
-and the fields are seperated by colons.
+and the fields are separated by colons.
 Each record defines a subarray,
 with each field as an element in the subarray.
 Running the program produces the
@@ -27011,13 +27011,13 @@ inclusive.  Ordering was based on the numeric value 
of each character
 in the machine's native character set.  Thus, on ASCII-based systems,
 @code{[a-z]} matched all the lowercase letters, and only the lowercase
 letters, since the numeric values for the letters from @samp{a} through
address@hidden were contigous.  (On an EBCDIC system, the range @samp{[a-z]}
address@hidden were contiguous.  (On an EBCDIC system, the range @samp{[a-z]}
 includes additional, non-alphabetic characters as well.)
 
 Almost all introductory Unix literature explained range expressions
 as working in this fashion, and in particular, would teach that the
 ``correct'' way to match lowercase letters was with @samp{[a-z]}, and
-that @samp{[A-Z]} was the the ``correct'' way to match uppercase letters.
+that @samp{[A-Z]} was the ``correct'' way to match uppercase letters.
 And indeed, this was true.
 
 The 1993 POSIX standard introduced the idea of locales (@pxref{Locales}).

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

commit 958b6cb452c88e7ba064253b6f461ebacfc1b736
Author: Arnold D. Robbins <address@hidden>
Date:   Tue Dec 6 21:30:15 2011 +0200

    Sync dfa.c with GNU grep.

diff --git a/ChangeLog b/ChangeLog
index a7a8be6..d2d677a 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,7 @@
+2011-11-27         Arnold D. Robbins     <address@hidden>
+
+       * dfa.c: Sync with GNU grep.
+
 2011-11-14         John Haque      <address@hidden>
 
        * debug.c (set_breakpoint_at): Fix problem with setting
diff --git a/dfa.c b/dfa.c
index cba6688..37ddc1b 100644
--- a/dfa.c
+++ b/dfa.c
@@ -608,7 +608,8 @@ setbit_c (int b, charclass c)
 }
 #else
 # define setbit_c setbit
-static inline bool setbit_wc (wint_t wc, charclass c)
+static inline bool
+setbit_wc (wint_t wc, charclass c)
 {
   abort ();
   /*NOTREACHED*/
@@ -782,7 +783,7 @@ static const struct dfa_ctype prednames[] = {
   { NULL, NULL, false }
 };
 
-static const struct dfa_ctype *
+static const struct dfa_ctype * _GL_ATTRIBUTE_PURE
 find_pred (const char *str)
 {
   unsigned int i;
@@ -802,7 +803,6 @@ parse_bracket_exp (void)
   int invert;
   int c, c1, c2;
   charclass ccl;
-  wint_t wc1 = 0;
 
   /* Used to warn about [:space:].
      Bit 0 = first character is a colon.
@@ -813,6 +813,7 @@ parse_bracket_exp (void)
 
   wint_t wc;
   wint_t wc2;
+  wint_t wc1 = 0;
 
   /* Work area to build a mb_char_classes.  */
   struct mb_char_classes *work_mbc;
@@ -1080,8 +1081,18 @@ parse_bracket_exp (void)
   return CSET + charclass_index(ccl);
 }
 
+/* Add this to the test for whether a byte is word-constituent, since on
+   BSD-based systems, many values in the 128..255 range are classified as
+   alphabetic, while on glibc-based systems, they are not.  */
+#ifdef __GLIBC__
+# define is_valid_unibyte_character(c) 1
+#else
+# define is_valid_unibyte_character(c) (MBS_SUPPORT && btowc (c) != WEOF)
+#endif
+
 /* Return non-zero if C is a `word-constituent' byte; zero otherwise.  */
-#define IS_WORD_CONSTITUENT(C) (isalnum(C) || (C) == '_')
+#define IS_WORD_CONSTITUENT(C) \
+  (is_valid_unibyte_character(C) && (isalnum(C) || (C) == '_'))
 
 static token
 lex (void)
@@ -1678,7 +1689,7 @@ atom (void)
 }
 
 /* Return the number of tokens in the given subexpression. */
-static int
+static int _GL_ATTRIBUTE_PURE
 nsubtoks (int tindex)
 {
   int ntoks1;
@@ -2128,9 +2139,7 @@ dfaanalyze (struct dfa *d, int searchflag)
   CALLOC(d->follows, d->tindex);
 
   for (i = 0; i < d->tindex; ++i)
-#ifdef DEBUG
-    {                          /* Nonsyntactic #ifdef goo... */
-#endif
+    {
     switch (d->tokens[i])
       {
       case EMPTY:
@@ -2255,8 +2264,8 @@ dfaanalyze (struct dfa *d, int searchflag)
           prtok(d->tokens[lastpos[j].index]);
         }
       putc('\n', stderr);
-    }
 #endif
+    }
 
   /* For each follow set that is the follow set of a real position, replace
      it with its epsilon closure. */
@@ -3256,7 +3265,7 @@ dfaexec (struct dfa *d, char const *begin, char *end,
   for (;;)
     {
       if (d->mb_cur_max > 1)
-        while ((t = trans[s]))
+        while ((t = trans[s]) != NULL)
           {
             if (p > buf_end)
               break;
@@ -3289,10 +3298,10 @@ dfaexec (struct dfa *d, char const *begin, char *end,
           }
       else
         {
-          while ((t = trans[s]) != 0)
+          while ((t = trans[s]) != NULL)
             {
               s1 = t[*p++];
-              if ((t = trans[s1]) == 0)
+              if ((t = trans[s1]) == NULL)
                 {
                   int tmp = s; s = s1; s1 = tmp; /* swap */
                   break;
@@ -3603,7 +3612,7 @@ icpyalloc (char const *string)
   return icatalloc (NULL, string);
 }
 
-static char *
+static char * _GL_ATTRIBUTE_PURE
 istrstr (char const *lookin, char const *lookfor)
 {
   char const *cp;
@@ -4015,7 +4024,7 @@ dfaalloc (void)
   return xmalloc (sizeof (struct dfa));
 }
 
-struct dfamust *
+struct dfamust * _GL_ATTRIBUTE_PURE
 dfamusts (struct dfa const *d)
 {
   return d->musts;

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

Summary of changes:
 ChangeLog                 |   20 ++
 NEWS                      |   10 +-
 README_d/README.bootstrap |   32 +++
 array.c                   |    8 +-
 awk.h                     |    8 +-
 debug.c                   |    2 +-
 dfa.c                     |   37 ++--
 dfa.h                     |    7 +
 doc/ChangeLog             |    4 +
 doc/gawk.info             |  536 ++++++++++++++++++++++----------------------
 doc/gawk.texi             |   14 +-
 eval.c                    |    8 +-
 io.c                      |    4 +-
 mbsupport.h               |    7 +-
 pc/ChangeLog              |    9 +
 pc/Makefile.tst           |   13 +-
 pc/testoutcmp.awk         |   38 ++++
 profile.c                 |    4 +-
 test/ChangeLog            |    4 +
 test/Makefile.am          |   43 ++--
 test/Makefile.in          |   43 ++--
 21 files changed, 494 insertions(+), 357 deletions(-)
 create mode 100644 README_d/README.bootstrap
 create mode 100644 pc/testoutcmp.awk


hooks/post-receive
-- 
gawk



reply via email to

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