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-614


From: Arnold Robbins
Subject: [gawk-diffs] [SCM] gawk branch, gawk-4.1-stable, updated. gawk-4.1.0-614-gcffd092
Date: Tue, 17 Mar 2015 20:47:07 +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  cffd09247c1681fbf3d5cad5253b3199704f83e7 (commit)
       via  1b047a42077ca58eeeaa93e0561c0b589350702b (commit)
       via  822d727b719ad486bb5eca0f064c69047a424bf5 (commit)
       via  93a817e1d94bf7227391b131b6df2d1f3e5176cc (commit)
      from  8c76e6abfa7857da0ecb64cc545b5cbea2a0ca68 (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=cffd09247c1681fbf3d5cad5253b3199704f83e7

commit cffd09247c1681fbf3d5cad5253b3199704f83e7
Author: Arnold D. Robbins <address@hidden>
Date:   Tue Mar 17 22:46:11 2015 +0200

    Fix bad allocs -M and profiling.

diff --git a/ChangeLog b/ChangeLog
index 9dfad08..cf18c51 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,9 @@
+2015-03-17         Arnold D. Robbins     <address@hidden>
+
+       * profile.c (pp_number): Allocate enough room to print the number
+       in all cases. Was a problem mixing -M with profiling with a really
+       big number. Thanks to Hermann Peifer for the bug report.
+
 2015-03-08         Arnold D. Robbins     <address@hidden>
 
        * re.c (regexflags2str): Removed. It was redundant.
diff --git a/profile.c b/profile.c
index 316ba39..fd37bc6 100644
--- a/profile.c
+++ b/profile.c
@@ -1304,16 +1304,30 @@ pp_number(NODE *n)
 {
 #define PP_PRECISION 6
        char *str;
+       size_t count;
 
-       emalloc(str, char *, PP_PRECISION + 10, "pp_number");
 #ifdef HAVE_MPFR
-       if (is_mpg_float(n))
-               mpfr_sprintf(str, "%0.*R*g", PP_PRECISION, ROUND_MODE, 
n->mpg_numbr);
-       else if (is_mpg_integer(n))
+       if (is_mpg_float(n)) {
+               count = mpfr_get_prec(n->mpg_numbr) / 3;        /* ~ 3.22 
binary digits per decimal digit */
+               emalloc(str, char *, count, "pp_number");
+               /*
+                * 3/2015: Format string used to be "%0.*R*g". That padded
+                * with leading zeros. But it doesn't do that for regular
+                * numbers in the non-MPFR case.
+                */
+               mpfr_sprintf(str, "%.*R*g", PP_PRECISION, ROUND_MODE, 
n->mpg_numbr);
+       } else if (is_mpg_integer(n)) {
+               count = mpz_sizeinbase(n->mpg_i, 10) + 2;       /* +1 for sign, 
+1 for NUL at end */
+               emalloc(str, char *, count, "pp_number");
                mpfr_sprintf(str, "%Zd", n->mpg_i);
-       else
+       } else
 #endif
-       sprintf(str, "%0.*g", PP_PRECISION, n->numbr);
+       {
+               count = PP_PRECISION + 10;
+               emalloc(str, char *, count, "pp_number");
+               sprintf(str, "%0.*g", PP_PRECISION, n->numbr);
+       }
+
        return str;
 #undef PP_PRECISION
 }
diff --git a/test/ChangeLog b/test/ChangeLog
index 8a264e3..24d6bcd 100644
--- a/test/ChangeLog
+++ b/test/ChangeLog
@@ -1,3 +1,8 @@
+2015-03-17         Arnold D. Robbins     <address@hidden>
+
+       * Makefile.am (mpfrmemok1): New test.
+       * mpfrmemok1.awk, mpfrmemok1.ok: New files.
+
 2015-03-10         Arnold D. Robbins     <address@hidden>
 
        * Makefile.am (fpat4): New test.
diff --git a/test/Makefile.am b/test/Makefile.am
index 3489994..f1a0a27 100644
--- a/test/Makefile.am
+++ b/test/Makefile.am
@@ -537,6 +537,8 @@ EXTRA_DIST = \
        mpfrexprange.ok \
        mpfrieee.awk \
        mpfrieee.ok \
+       mpfrmemok1.awk \
+       mpfrmemok1.ok \
        mpfrnegzero.awk \
        mpfrnegzero.ok \
        mpfrnr.awk \
@@ -1059,8 +1061,8 @@ INET_TESTS = inetdayu inetdayt inetechu inetecht
 
 MACHINE_TESTS = double1 double2 fmtspcl intformat
 
-MPFR_TESTS = mpfrnr mpfrnegzero mpfrrem mpfrrnd mpfrieee mpfrexprange \
-       mpfrsort mpfrsqrt mpfrbigint
+MPFR_TESTS = mpfrnr mpfrnegzero mpfrmemok1 mpfrrem mpfrrnd mpfrieee \
+       mpfrexprange mpfrsort mpfrsqrt mpfrbigint
 
 LOCALE_CHARSET_TESTS = \
        asort asorti backbigs1 backsmalls1 backsmalls2 \
@@ -1812,6 +1814,11 @@ mpfrrem:
        @$(AWK) -M -f "$(srcdir)"/address@hidden > _$@ 2>&1
        @-$(CMP) "$(srcdir)"/address@hidden _$@ && rm -f _$@
 
+mpfrmemok1:
+       @echo $@
+       @$(AWK) -p/dev/stdout -M -f "$(srcdir)"/address@hidden 2>&1 | sed 1d > 
_$@
+       @-$(CMP) "$(srcdir)"/address@hidden _$@ && rm -f _$@
+
 jarebug::
        @echo $@
        @"$(srcdir)"/address@hidden "$(AWKPROG)" "$(srcdir)"/address@hidden 
"$(srcdir)"/address@hidden "_$@"
diff --git a/test/Makefile.in b/test/Makefile.in
index 489b0d1..b794e04 100644
--- a/test/Makefile.in
+++ b/test/Makefile.in
@@ -794,6 +794,8 @@ EXTRA_DIST = \
        mpfrexprange.ok \
        mpfrieee.awk \
        mpfrieee.ok \
+       mpfrmemok1.awk \
+       mpfrmemok1.ok \
        mpfrnegzero.awk \
        mpfrnegzero.ok \
        mpfrnr.awk \
@@ -1312,8 +1314,8 @@ GAWK_EXT_TESTS = \
 EXTRA_TESTS = inftest regtest
 INET_TESTS = inetdayu inetdayt inetechu inetecht
 MACHINE_TESTS = double1 double2 fmtspcl intformat
-MPFR_TESTS = mpfrnr mpfrnegzero mpfrrem mpfrrnd mpfrieee mpfrexprange \
-       mpfrsort mpfrsqrt mpfrbigint
+MPFR_TESTS = mpfrnr mpfrnegzero mpfrmemok1 mpfrrem mpfrrnd mpfrieee \
+       mpfrexprange mpfrsort mpfrsqrt mpfrbigint
 
 LOCALE_CHARSET_TESTS = \
        asort asorti backbigs1 backsmalls1 backsmalls2 \
@@ -2249,6 +2251,11 @@ mpfrrem:
        @$(AWK) -M -f "$(srcdir)"/address@hidden > _$@ 2>&1
        @-$(CMP) "$(srcdir)"/address@hidden _$@ && rm -f _$@
 
+mpfrmemok1:
+       @echo $@
+       @$(AWK) -p/dev/stdout -M -f "$(srcdir)"/address@hidden 2>&1 | sed 1d > 
_$@
+       @-$(CMP) "$(srcdir)"/address@hidden _$@ && rm -f _$@
+
 jarebug::
        @echo $@
        @"$(srcdir)"/address@hidden "$(AWKPROG)" "$(srcdir)"/address@hidden 
"$(srcdir)"/address@hidden "_$@"
diff --git a/test/mpfrmemok1.awk b/test/mpfrmemok1.awk
new file mode 100644
index 0000000..9331a34
--- /dev/null
+++ b/test/mpfrmemok1.awk
@@ -0,0 +1,7 @@
+# This program tests that -M works with profiling.
+# It does not do anything real, but there should not be glibc memory
+# errors and it should be valgrind-clean too.
+
+BEGIN {
+       v = 0x0100000000000000000000000000000000
+}
diff --git a/test/mpfrmemok1.ok b/test/mpfrmemok1.ok
new file mode 100644
index 0000000..2389a2d
--- /dev/null
+++ b/test/mpfrmemok1.ok
@@ -0,0 +1,7 @@
+
+       # BEGIN rule(s)
+
+       BEGIN {
+     1         v = 340282366920938463463374607431768211456
+       }
+

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

commit 1b047a42077ca58eeeaa93e0561c0b589350702b
Author: Arnold D. Robbins <address@hidden>
Date:   Tue Mar 17 22:28:56 2015 +0200

    Documentation fix: positive -> nonnegative as appropriate.

diff --git a/doc/ChangeLog b/doc/ChangeLog
index 654d0cc..f8a317f 100644
--- a/doc/ChangeLog
+++ b/doc/ChangeLog
@@ -1,3 +1,9 @@
+2015-03-17         Arnold D. Robbins     <address@hidden>
+
+       * gawktexi.in: Turn "positive" into non-negative as appropriate.
+       Thanks to Nicholas Mills <address@hidden> for pointing out
+       the issue.
+
 2015-03-01         Arnold D. Robbins     <address@hidden>
 
        * gawktexi.in: Change quotes to @dfn for pseudorandom.
diff --git a/doc/gawk.info b/doc/gawk.info
index 9c23943..2d4fd90 100644
--- a/doc/gawk.info
+++ b/doc/gawk.info
@@ -5097,9 +5097,9 @@ the built-in variable `FIELDWIDTHS'.  Each number 
specifies the width
 of the field, _including_ columns between fields.  If you want to
 ignore the columns between fields, you can specify the width as a
 separate field that is subsequently ignored.  It is a fatal error to
-supply a field width that is not a positive number.  The following data
-is the output of the Unix `w' utility.  It is useful to illustrate the
-use of `FIELDWIDTHS':
+supply a field width that has a negative value.  The following data is
+the output of the Unix `w' utility.  It is useful to illustrate the use
+of `FIELDWIDTHS':
 
       10:06pm  up 21 days, 14:04,  23 users
      User     tty       login  idle   JCPU   PCPU  what
@@ -10851,7 +10851,7 @@ be used as an array index.
 including a specification of how many elements or components they
 contain.  In such languages, the declaration causes a contiguous block
 of memory to be allocated for that many elements.  Usually, an index in
-the array must be a positive integer.  For example, the index zero
+the array must be a nonnegative integer.  For example, the index zero
 specifies the first element in the array, which is actually stored at
 the beginning of the block of memory.  Index one specifies the second
 element, which is stored in memory right after the first element, and
@@ -10906,8 +10906,8 @@ It has elements 0-3 and 10, but doesn't have elements 
4, 5, 6, 7, 8, or
 9.
 
    Another consequence of associative arrays is that the indices don't
-have to be positive integers.  Any number, or even a string, can be an
-index.  For example, the following is an array that translates words
+have to be nonnegative integers.  Any number, or even a string, can be
+an index.  For example, the following is an array that translates words
 from English to French:
 
         Index   Value
@@ -11078,7 +11078,7 @@ File: gawk.info,  Node: Scanning an Array,  Next: 
Controlling Scanning,  Prev: A
 
 In programs that use arrays, it is often necessary to use a loop that
 executes once for each element of an array.  In other languages, where
-arrays are contiguous and indices are limited to positive integers,
+arrays are contiguous and indices are limited to nonnegative integers,
 this is easy: all the valid indices can be found by counting from the
 lowest index up to the highest.  This technique won't do the job in
 `awk', because any number or string can be an array index.  So `awk'
@@ -21791,8 +21791,7 @@ Integer arithmetic
 
      In computers, integer values come in two flavors: "signed" and
      "unsigned".  Signed values may be negative or positive, whereas
-     unsigned values are always positive (i.e., greater than or equal
-     to zero).
+     unsigned values are always greater than or equal to zero.
 
      In computer systems, integer arithmetic is exact, but the possible
      range of values is limited.  Integer arithmetic is generally
@@ -34579,468 +34578,468 @@ Ref: Full Line Fields-Footnote-1225370
 Ref: Full Line Fields-Footnote-2225416
 Node: Field Splitting Summary225517
 Node: Constant Size227591
-Node: Splitting By Content232174
-Ref: Splitting By Content-Footnote-1236139
-Node: Multiple Line236302
-Ref: Multiple Line-Footnote-1242183
-Node: Getline242362
-Node: Plain Getline244569
-Node: Getline/Variable247209
-Node: Getline/File248358
-Node: Getline/Variable/File249743
-Ref: Getline/Variable/File-Footnote-1251346
-Node: Getline/Pipe251433
-Node: Getline/Variable/Pipe254111
-Node: Getline/Coprocess255242
-Node: Getline/Variable/Coprocess256506
-Node: Getline Notes257245
-Node: Getline Summary260039
-Ref: table-getline-variants260451
-Node: Read Timeout261280
-Ref: Read Timeout-Footnote-1265117
-Node: Command-line directories265175
-Node: Input Summary266080
-Node: Input Exercises269465
-Node: Printing270193
-Node: Print271970
-Node: Print Examples273427
-Node: Output Separators276206
-Node: OFMT278224
-Node: Printf279579
-Node: Basic Printf280364
-Node: Control Letters281936
-Node: Format Modifiers285921
-Node: Printf Examples291927
-Node: Redirection294413
-Node: Special FD301251
-Ref: Special FD-Footnote-1304417
-Node: Special Files304491
-Node: Other Inherited Files305108
-Node: Special Network306108
-Node: Special Caveats306970
-Node: Close Files And Pipes307919
-Ref: Close Files And Pipes-Footnote-1315110
-Ref: Close Files And Pipes-Footnote-2315258
-Node: Output Summary315408
-Node: Output Exercises316406
-Node: Expressions317086
-Node: Values318275
-Node: Constants318952
-Node: Scalar Constants319643
-Ref: Scalar Constants-Footnote-1320505
-Node: Nondecimal-numbers320755
-Node: Regexp Constants323765
-Node: Using Constant Regexps324291
-Node: Variables327454
-Node: Using Variables328111
-Node: Assignment Options330022
-Node: Conversion331897
-Node: Strings And Numbers332421
-Ref: Strings And Numbers-Footnote-1335486
-Node: Locale influences conversions335595
-Ref: table-locale-affects338341
-Node: All Operators338933
-Node: Arithmetic Ops339562
-Node: Concatenation342067
-Ref: Concatenation-Footnote-1344886
-Node: Assignment Ops344993
-Ref: table-assign-ops349972
-Node: Increment Ops351282
-Node: Truth Values and Conditions354713
-Node: Truth Values355796
-Node: Typing and Comparison356845
-Node: Variable Typing357661
-Node: Comparison Operators361328
-Ref: table-relational-ops361738
-Node: POSIX String Comparison365233
-Ref: POSIX String Comparison-Footnote-1366305
-Node: Boolean Ops366444
-Ref: Boolean Ops-Footnote-1370922
-Node: Conditional Exp371013
-Node: Function Calls372751
-Node: Precedence376631
-Node: Locales380291
-Node: Expressions Summary381923
-Node: Patterns and Actions384494
-Node: Pattern Overview385614
-Node: Regexp Patterns387293
-Node: Expression Patterns387836
-Node: Ranges391616
-Node: BEGIN/END394723
-Node: Using BEGIN/END395484
-Ref: Using BEGIN/END-Footnote-1398220
-Node: I/O And BEGIN/END398326
-Node: BEGINFILE/ENDFILE400641
-Node: Empty403538
-Node: Using Shell Variables403855
-Node: Action Overview406128
-Node: Statements408454
-Node: If Statement410302
-Node: While Statement411797
-Node: Do Statement413825
-Node: For Statement414973
-Node: Switch Statement418131
-Node: Break Statement420513
-Node: Continue Statement422606
-Node: Next Statement424433
-Node: Nextfile Statement426814
-Node: Exit Statement429442
-Node: Built-in Variables431853
-Node: User-modified432986
-Ref: User-modified-Footnote-1440620
-Node: Auto-set440682
-Ref: Auto-set-Footnote-1453734
-Ref: Auto-set-Footnote-2453939
-Node: ARGC and ARGV453995
-Node: Pattern Action Summary458213
-Node: Arrays460646
-Node: Array Basics461975
-Node: Array Intro462819
-Ref: figure-array-elements464753
-Ref: Array Intro-Footnote-1467373
-Node: Reference to Elements467501
-Node: Assigning Elements469963
-Node: Array Example470454
-Node: Scanning an Array472213
-Node: Controlling Scanning475233
-Ref: Controlling Scanning-Footnote-1480627
-Node: Numeric Array Subscripts480943
-Node: Uninitialized Subscripts483128
-Node: Delete484745
-Ref: Delete-Footnote-1487494
-Node: Multidimensional487551
-Node: Multiscanning490648
-Node: Arrays of Arrays492237
-Node: Arrays Summary496991
-Node: Functions499082
-Node: Built-in500121
-Node: Calling Built-in501199
-Node: Numeric Functions503194
-Ref: Numeric Functions-Footnote-1507210
-Ref: Numeric Functions-Footnote-2507567
-Ref: Numeric Functions-Footnote-3507615
-Node: String Functions507887
-Ref: String Functions-Footnote-1531388
-Ref: String Functions-Footnote-2531517
-Ref: String Functions-Footnote-3531765
-Node: Gory Details531852
-Ref: table-sub-escapes533633
-Ref: table-sub-proposed535148
-Ref: table-posix-sub536510
-Ref: table-gensub-escapes538047
-Ref: Gory Details-Footnote-1538880
-Node: I/O Functions539031
-Ref: I/O Functions-Footnote-1546267
-Node: Time Functions546414
-Ref: Time Functions-Footnote-1556923
-Ref: Time Functions-Footnote-2556991
-Ref: Time Functions-Footnote-3557149
-Ref: Time Functions-Footnote-4557260
-Ref: Time Functions-Footnote-5557372
-Ref: Time Functions-Footnote-6557599
-Node: Bitwise Functions557865
-Ref: table-bitwise-ops558427
-Ref: Bitwise Functions-Footnote-1562755
-Node: Type Functions562927
-Node: I18N Functions564079
-Node: User-defined565726
-Node: Definition Syntax566531
-Ref: Definition Syntax-Footnote-1572190
-Node: Function Example572261
-Ref: Function Example-Footnote-1575182
-Node: Function Caveats575204
-Node: Calling A Function575722
-Node: Variable Scope576680
-Node: Pass By Value/Reference579673
-Node: Return Statement583170
-Node: Dynamic Typing586149
-Node: Indirect Calls587078
-Ref: Indirect Calls-Footnote-1596943
-Node: Functions Summary597071
-Node: Library Functions599773
-Ref: Library Functions-Footnote-1603381
-Ref: Library Functions-Footnote-2603524
-Node: Library Names603695
-Ref: Library Names-Footnote-1607153
-Ref: Library Names-Footnote-2607376
-Node: General Functions607462
-Node: Strtonum Function608565
-Node: Assert Function611587
-Node: Round Function614911
-Node: Cliff Random Function616452
-Node: Ordinal Functions617468
-Ref: Ordinal Functions-Footnote-1620531
-Ref: Ordinal Functions-Footnote-2620783
-Node: Join Function620994
-Ref: Join Function-Footnote-1622764
-Node: Getlocaltime Function622964
-Node: Readfile Function626708
-Node: Shell Quoting628680
-Node: Data File Management630081
-Node: Filetrans Function630713
-Node: Rewind Function634809
-Node: File Checking636195
-Ref: File Checking-Footnote-1637528
-Node: Empty Files637729
-Node: Ignoring Assigns639708
-Node: Getopt Function641258
-Ref: Getopt Function-Footnote-1652722
-Node: Passwd Functions652922
-Ref: Passwd Functions-Footnote-1661762
-Node: Group Functions661850
-Ref: Group Functions-Footnote-1669747
-Node: Walking Arrays669952
-Node: Library Functions Summary672958
-Node: Library Exercises674360
-Node: Sample Programs675640
-Node: Running Examples676410
-Node: Clones677138
-Node: Cut Program678362
-Node: Egrep Program688082
-Ref: Egrep Program-Footnote-1695585
-Node: Id Program695695
-Node: Split Program699371
-Ref: Split Program-Footnote-1702825
-Node: Tee Program702953
-Node: Uniq Program705742
-Node: Wc Program713161
-Ref: Wc Program-Footnote-1717411
-Node: Miscellaneous Programs717505
-Node: Dupword Program718718
-Node: Alarm Program720749
-Node: Translate Program725554
-Ref: Translate Program-Footnote-1730117
-Node: Labels Program730387
-Ref: Labels Program-Footnote-1733738
-Node: Word Sorting733822
-Node: History Sorting737892
-Node: Extract Program739727
-Node: Simple Sed747251
-Node: Igawk Program750321
-Ref: Igawk Program-Footnote-1764647
-Ref: Igawk Program-Footnote-2764848
-Ref: Igawk Program-Footnote-3764970
-Node: Anagram Program765085
-Node: Signature Program768146
-Node: Programs Summary769393
-Node: Programs Exercises770614
-Ref: Programs Exercises-Footnote-1774745
-Node: Advanced Features774836
-Node: Nondecimal Data776818
-Node: Array Sorting778408
-Node: Controlling Array Traversal779108
-Ref: Controlling Array Traversal-Footnote-1787474
-Node: Array Sorting Functions787592
-Ref: Array Sorting Functions-Footnote-1791478
-Node: Two-way I/O791674
-Ref: Two-way I/O-Footnote-1796619
-Ref: Two-way I/O-Footnote-2796805
-Node: TCP/IP Networking796887
-Node: Profiling799759
-Node: Advanced Features Summary807300
-Node: Internationalization809233
-Node: I18N and L10N810713
-Node: Explaining gettext811399
-Ref: Explaining gettext-Footnote-1816424
-Ref: Explaining gettext-Footnote-2816608
-Node: Programmer i18n816773
-Ref: Programmer i18n-Footnote-1821649
-Node: Translator i18n821698
-Node: String Extraction822492
-Ref: String Extraction-Footnote-1823623
-Node: Printf Ordering823709
-Ref: Printf Ordering-Footnote-1826495
-Node: I18N Portability826559
-Ref: I18N Portability-Footnote-1829015
-Node: I18N Example829078
-Ref: I18N Example-Footnote-1831881
-Node: Gawk I18N831953
-Node: I18N Summary832597
-Node: Debugger833937
-Node: Debugging834959
-Node: Debugging Concepts835400
-Node: Debugging Terms837210
-Node: Awk Debugging839782
-Node: Sample Debugging Session840688
-Node: Debugger Invocation841222
-Node: Finding The Bug842607
-Node: List of Debugger Commands849086
-Node: Breakpoint Control850418
-Node: Debugger Execution Control854095
-Node: Viewing And Changing Data857454
-Node: Execution Stack860830
-Node: Debugger Info862465
-Node: Miscellaneous Debugger Commands866510
-Node: Readline Support871511
-Node: Limitations872405
-Node: Debugging Summary874520
-Node: Arbitrary Precision Arithmetic875694
-Node: Computer Arithmetic877110
-Ref: table-numeric-ranges880709
-Ref: Computer Arithmetic-Footnote-1881233
-Node: Math Definitions881290
-Ref: table-ieee-formats884585
-Ref: Math Definitions-Footnote-1885189
-Node: MPFR features885294
-Node: FP Math Caution886965
-Ref: FP Math Caution-Footnote-1888015
-Node: Inexactness of computations888384
-Node: Inexact representation889343
-Node: Comparing FP Values890701
-Node: Errors accumulate891783
-Node: Getting Accuracy893215
-Node: Try To Round895919
-Node: Setting precision896818
-Ref: table-predefined-precision-strings897502
-Node: Setting the rounding mode899331
-Ref: table-gawk-rounding-modes899695
-Ref: Setting the rounding mode-Footnote-1903147
-Node: Arbitrary Precision Integers903326
-Ref: Arbitrary Precision Integers-Footnote-1906310
-Node: POSIX Floating Point Problems906459
-Ref: POSIX Floating Point Problems-Footnote-1910338
-Node: Floating point summary910376
-Node: Dynamic Extensions912563
-Node: Extension Intro914115
-Node: Plugin License915380
-Node: Extension Mechanism Outline916177
-Ref: figure-load-extension916605
-Ref: figure-register-new-function918085
-Ref: figure-call-new-function919089
-Node: Extension API Description921076
-Node: Extension API Functions Introduction922526
-Node: General Data Types927347
-Ref: General Data Types-Footnote-1933247
-Node: Memory Allocation Functions933546
-Ref: Memory Allocation Functions-Footnote-1936385
-Node: Constructor Functions936484
-Node: Registration Functions938223
-Node: Extension Functions938908
-Node: Exit Callback Functions941205
-Node: Extension Version String942453
-Node: Input Parsers943116
-Node: Output Wrappers952991
-Node: Two-way processors957504
-Node: Printing Messages959767
-Ref: Printing Messages-Footnote-1960843
-Node: Updating `ERRNO'960995
-Node: Requesting Values961735
-Ref: table-value-types-returned962462
-Node: Accessing Parameters963419
-Node: Symbol Table Access964653
-Node: Symbol table by name965167
-Node: Symbol table by cookie967187
-Ref: Symbol table by cookie-Footnote-1971332
-Node: Cached values971395
-Ref: Cached values-Footnote-1974891
-Node: Array Manipulation974982
-Ref: Array Manipulation-Footnote-1976080
-Node: Array Data Types976117
-Ref: Array Data Types-Footnote-1978772
-Node: Array Functions978864
-Node: Flattening Arrays982723
-Node: Creating Arrays989625
-Node: Extension API Variables994396
-Node: Extension Versioning995032
-Node: Extension API Informational Variables996923
-Node: Extension API Boilerplate997988
-Node: Finding Extensions1001797
-Node: Extension Example1002357
-Node: Internal File Description1003129
-Node: Internal File Ops1007196
-Ref: Internal File Ops-Footnote-11018947
-Node: Using Internal File Ops1019087
-Ref: Using Internal File Ops-Footnote-11021470
-Node: Extension Samples1021743
-Node: Extension Sample File Functions1023271
-Node: Extension Sample Fnmatch1030952
-Node: Extension Sample Fork1032440
-Node: Extension Sample Inplace1033655
-Node: Extension Sample Ord1035331
-Node: Extension Sample Readdir1036167
-Ref: table-readdir-file-types1037044
-Node: Extension Sample Revout1037855
-Node: Extension Sample Rev2way1038444
-Node: Extension Sample Read write array1039184
-Node: Extension Sample Readfile1041124
-Node: Extension Sample Time1042219
-Node: Extension Sample API Tests1043567
-Node: gawkextlib1044058
-Node: Extension summary1046736
-Node: Extension Exercises1050425
-Node: Language History1051147
-Node: V7/SVR3.11052803
-Node: SVR41054956
-Node: POSIX1056390
-Node: BTL1057771
-Node: POSIX/GNU1058502
-Node: Feature History1064023
-Node: Common Extensions1077121
-Node: Ranges and Locales1078493
-Ref: Ranges and Locales-Footnote-11083112
-Ref: Ranges and Locales-Footnote-21083139
-Ref: Ranges and Locales-Footnote-31083374
-Node: Contributors1083595
-Node: History summary1089135
-Node: Installation1090514
-Node: Gawk Distribution1091460
-Node: Getting1091944
-Node: Extracting1092767
-Node: Distribution contents1094404
-Node: Unix Installation1100158
-Node: Quick Installation1100775
-Node: Additional Configuration Options1103199
-Node: Configuration Philosophy1105002
-Node: Non-Unix Installation1107371
-Node: PC Installation1107829
-Node: PC Binary Installation1109149
-Node: PC Compiling1110997
-Ref: PC Compiling-Footnote-11114018
-Node: PC Testing1114127
-Node: PC Using1115303
-Node: Cygwin1119418
-Node: MSYS1120188
-Node: VMS Installation1120689
-Node: VMS Compilation1121481
-Ref: VMS Compilation-Footnote-11122710
-Node: VMS Dynamic Extensions1122768
-Node: VMS Installation Details1124452
-Node: VMS Running1126703
-Node: VMS GNV1129543
-Node: VMS Old Gawk1130278
-Node: Bugs1130748
-Node: Other Versions1134637
-Node: Installation summary1141071
-Node: Notes1142130
-Node: Compatibility Mode1142995
-Node: Additions1143777
-Node: Accessing The Source1144702
-Node: Adding Code1146137
-Node: New Ports1152294
-Node: Derived Files1156776
-Ref: Derived Files-Footnote-11162251
-Ref: Derived Files-Footnote-21162285
-Ref: Derived Files-Footnote-31162881
-Node: Future Extensions1162995
-Node: Implementation Limitations1163601
-Node: Extension Design1164849
-Node: Old Extension Problems1166003
-Ref: Old Extension Problems-Footnote-11167520
-Node: Extension New Mechanism Goals1167577
-Ref: Extension New Mechanism Goals-Footnote-11170937
-Node: Extension Other Design Decisions1171126
-Node: Extension Future Growth1173234
-Node: Old Extension Mechanism1174070
-Node: Notes summary1175832
-Node: Basic Concepts1177018
-Node: Basic High Level1177699
-Ref: figure-general-flow1177971
-Ref: figure-process-flow1178570
-Ref: Basic High Level-Footnote-11181799
-Node: Basic Data Typing1181984
-Node: Glossary1185312
-Node: Copying1217241
-Node: GNU Free Documentation License1254797
-Node: Index1279933
+Node: Splitting By Content232170
+Ref: Splitting By Content-Footnote-1236135
+Node: Multiple Line236298
+Ref: Multiple Line-Footnote-1242179
+Node: Getline242358
+Node: Plain Getline244565
+Node: Getline/Variable247205
+Node: Getline/File248354
+Node: Getline/Variable/File249739
+Ref: Getline/Variable/File-Footnote-1251342
+Node: Getline/Pipe251429
+Node: Getline/Variable/Pipe254107
+Node: Getline/Coprocess255238
+Node: Getline/Variable/Coprocess256502
+Node: Getline Notes257241
+Node: Getline Summary260035
+Ref: table-getline-variants260447
+Node: Read Timeout261276
+Ref: Read Timeout-Footnote-1265113
+Node: Command-line directories265171
+Node: Input Summary266076
+Node: Input Exercises269461
+Node: Printing270189
+Node: Print271966
+Node: Print Examples273423
+Node: Output Separators276202
+Node: OFMT278220
+Node: Printf279575
+Node: Basic Printf280360
+Node: Control Letters281932
+Node: Format Modifiers285917
+Node: Printf Examples291923
+Node: Redirection294409
+Node: Special FD301247
+Ref: Special FD-Footnote-1304413
+Node: Special Files304487
+Node: Other Inherited Files305104
+Node: Special Network306104
+Node: Special Caveats306966
+Node: Close Files And Pipes307915
+Ref: Close Files And Pipes-Footnote-1315106
+Ref: Close Files And Pipes-Footnote-2315254
+Node: Output Summary315404
+Node: Output Exercises316402
+Node: Expressions317082
+Node: Values318271
+Node: Constants318948
+Node: Scalar Constants319639
+Ref: Scalar Constants-Footnote-1320501
+Node: Nondecimal-numbers320751
+Node: Regexp Constants323761
+Node: Using Constant Regexps324287
+Node: Variables327450
+Node: Using Variables328107
+Node: Assignment Options330018
+Node: Conversion331893
+Node: Strings And Numbers332417
+Ref: Strings And Numbers-Footnote-1335482
+Node: Locale influences conversions335591
+Ref: table-locale-affects338337
+Node: All Operators338929
+Node: Arithmetic Ops339558
+Node: Concatenation342063
+Ref: Concatenation-Footnote-1344882
+Node: Assignment Ops344989
+Ref: table-assign-ops349968
+Node: Increment Ops351278
+Node: Truth Values and Conditions354709
+Node: Truth Values355792
+Node: Typing and Comparison356841
+Node: Variable Typing357657
+Node: Comparison Operators361324
+Ref: table-relational-ops361734
+Node: POSIX String Comparison365229
+Ref: POSIX String Comparison-Footnote-1366301
+Node: Boolean Ops366440
+Ref: Boolean Ops-Footnote-1370918
+Node: Conditional Exp371009
+Node: Function Calls372747
+Node: Precedence376627
+Node: Locales380287
+Node: Expressions Summary381919
+Node: Patterns and Actions384490
+Node: Pattern Overview385610
+Node: Regexp Patterns387289
+Node: Expression Patterns387832
+Node: Ranges391612
+Node: BEGIN/END394719
+Node: Using BEGIN/END395480
+Ref: Using BEGIN/END-Footnote-1398216
+Node: I/O And BEGIN/END398322
+Node: BEGINFILE/ENDFILE400637
+Node: Empty403534
+Node: Using Shell Variables403851
+Node: Action Overview406124
+Node: Statements408450
+Node: If Statement410298
+Node: While Statement411793
+Node: Do Statement413821
+Node: For Statement414969
+Node: Switch Statement418127
+Node: Break Statement420509
+Node: Continue Statement422602
+Node: Next Statement424429
+Node: Nextfile Statement426810
+Node: Exit Statement429438
+Node: Built-in Variables431849
+Node: User-modified432982
+Ref: User-modified-Footnote-1440616
+Node: Auto-set440678
+Ref: Auto-set-Footnote-1453730
+Ref: Auto-set-Footnote-2453935
+Node: ARGC and ARGV453991
+Node: Pattern Action Summary458209
+Node: Arrays460642
+Node: Array Basics461971
+Node: Array Intro462815
+Ref: figure-array-elements464752
+Ref: Array Intro-Footnote-1467375
+Node: Reference to Elements467503
+Node: Assigning Elements469965
+Node: Array Example470456
+Node: Scanning an Array472215
+Node: Controlling Scanning475238
+Ref: Controlling Scanning-Footnote-1480632
+Node: Numeric Array Subscripts480948
+Node: Uninitialized Subscripts483133
+Node: Delete484750
+Ref: Delete-Footnote-1487499
+Node: Multidimensional487556
+Node: Multiscanning490653
+Node: Arrays of Arrays492242
+Node: Arrays Summary496996
+Node: Functions499087
+Node: Built-in500126
+Node: Calling Built-in501204
+Node: Numeric Functions503199
+Ref: Numeric Functions-Footnote-1507215
+Ref: Numeric Functions-Footnote-2507572
+Ref: Numeric Functions-Footnote-3507620
+Node: String Functions507892
+Ref: String Functions-Footnote-1531393
+Ref: String Functions-Footnote-2531522
+Ref: String Functions-Footnote-3531770
+Node: Gory Details531857
+Ref: table-sub-escapes533638
+Ref: table-sub-proposed535153
+Ref: table-posix-sub536515
+Ref: table-gensub-escapes538052
+Ref: Gory Details-Footnote-1538885
+Node: I/O Functions539036
+Ref: I/O Functions-Footnote-1546272
+Node: Time Functions546419
+Ref: Time Functions-Footnote-1556928
+Ref: Time Functions-Footnote-2556996
+Ref: Time Functions-Footnote-3557154
+Ref: Time Functions-Footnote-4557265
+Ref: Time Functions-Footnote-5557377
+Ref: Time Functions-Footnote-6557604
+Node: Bitwise Functions557870
+Ref: table-bitwise-ops558432
+Ref: Bitwise Functions-Footnote-1562760
+Node: Type Functions562932
+Node: I18N Functions564084
+Node: User-defined565731
+Node: Definition Syntax566536
+Ref: Definition Syntax-Footnote-1572195
+Node: Function Example572266
+Ref: Function Example-Footnote-1575187
+Node: Function Caveats575209
+Node: Calling A Function575727
+Node: Variable Scope576685
+Node: Pass By Value/Reference579678
+Node: Return Statement583175
+Node: Dynamic Typing586154
+Node: Indirect Calls587083
+Ref: Indirect Calls-Footnote-1596948
+Node: Functions Summary597076
+Node: Library Functions599778
+Ref: Library Functions-Footnote-1603386
+Ref: Library Functions-Footnote-2603529
+Node: Library Names603700
+Ref: Library Names-Footnote-1607158
+Ref: Library Names-Footnote-2607381
+Node: General Functions607467
+Node: Strtonum Function608570
+Node: Assert Function611592
+Node: Round Function614916
+Node: Cliff Random Function616457
+Node: Ordinal Functions617473
+Ref: Ordinal Functions-Footnote-1620536
+Ref: Ordinal Functions-Footnote-2620788
+Node: Join Function620999
+Ref: Join Function-Footnote-1622769
+Node: Getlocaltime Function622969
+Node: Readfile Function626713
+Node: Shell Quoting628685
+Node: Data File Management630086
+Node: Filetrans Function630718
+Node: Rewind Function634814
+Node: File Checking636200
+Ref: File Checking-Footnote-1637533
+Node: Empty Files637734
+Node: Ignoring Assigns639713
+Node: Getopt Function641263
+Ref: Getopt Function-Footnote-1652727
+Node: Passwd Functions652927
+Ref: Passwd Functions-Footnote-1661767
+Node: Group Functions661855
+Ref: Group Functions-Footnote-1669752
+Node: Walking Arrays669957
+Node: Library Functions Summary672963
+Node: Library Exercises674365
+Node: Sample Programs675645
+Node: Running Examples676415
+Node: Clones677143
+Node: Cut Program678367
+Node: Egrep Program688087
+Ref: Egrep Program-Footnote-1695590
+Node: Id Program695700
+Node: Split Program699376
+Ref: Split Program-Footnote-1702830
+Node: Tee Program702958
+Node: Uniq Program705747
+Node: Wc Program713166
+Ref: Wc Program-Footnote-1717416
+Node: Miscellaneous Programs717510
+Node: Dupword Program718723
+Node: Alarm Program720754
+Node: Translate Program725559
+Ref: Translate Program-Footnote-1730122
+Node: Labels Program730392
+Ref: Labels Program-Footnote-1733743
+Node: Word Sorting733827
+Node: History Sorting737897
+Node: Extract Program739732
+Node: Simple Sed747256
+Node: Igawk Program750326
+Ref: Igawk Program-Footnote-1764652
+Ref: Igawk Program-Footnote-2764853
+Ref: Igawk Program-Footnote-3764975
+Node: Anagram Program765090
+Node: Signature Program768151
+Node: Programs Summary769398
+Node: Programs Exercises770619
+Ref: Programs Exercises-Footnote-1774750
+Node: Advanced Features774841
+Node: Nondecimal Data776823
+Node: Array Sorting778413
+Node: Controlling Array Traversal779113
+Ref: Controlling Array Traversal-Footnote-1787479
+Node: Array Sorting Functions787597
+Ref: Array Sorting Functions-Footnote-1791483
+Node: Two-way I/O791679
+Ref: Two-way I/O-Footnote-1796624
+Ref: Two-way I/O-Footnote-2796810
+Node: TCP/IP Networking796892
+Node: Profiling799764
+Node: Advanced Features Summary807305
+Node: Internationalization809238
+Node: I18N and L10N810718
+Node: Explaining gettext811404
+Ref: Explaining gettext-Footnote-1816429
+Ref: Explaining gettext-Footnote-2816613
+Node: Programmer i18n816778
+Ref: Programmer i18n-Footnote-1821654
+Node: Translator i18n821703
+Node: String Extraction822497
+Ref: String Extraction-Footnote-1823628
+Node: Printf Ordering823714
+Ref: Printf Ordering-Footnote-1826500
+Node: I18N Portability826564
+Ref: I18N Portability-Footnote-1829020
+Node: I18N Example829083
+Ref: I18N Example-Footnote-1831886
+Node: Gawk I18N831958
+Node: I18N Summary832602
+Node: Debugger833942
+Node: Debugging834964
+Node: Debugging Concepts835405
+Node: Debugging Terms837215
+Node: Awk Debugging839787
+Node: Sample Debugging Session840693
+Node: Debugger Invocation841227
+Node: Finding The Bug842612
+Node: List of Debugger Commands849091
+Node: Breakpoint Control850423
+Node: Debugger Execution Control854100
+Node: Viewing And Changing Data857459
+Node: Execution Stack860835
+Node: Debugger Info862470
+Node: Miscellaneous Debugger Commands866515
+Node: Readline Support871516
+Node: Limitations872410
+Node: Debugging Summary874525
+Node: Arbitrary Precision Arithmetic875699
+Node: Computer Arithmetic877115
+Ref: table-numeric-ranges880692
+Ref: Computer Arithmetic-Footnote-1881216
+Node: Math Definitions881273
+Ref: table-ieee-formats884568
+Ref: Math Definitions-Footnote-1885172
+Node: MPFR features885277
+Node: FP Math Caution886948
+Ref: FP Math Caution-Footnote-1887998
+Node: Inexactness of computations888367
+Node: Inexact representation889326
+Node: Comparing FP Values890684
+Node: Errors accumulate891766
+Node: Getting Accuracy893198
+Node: Try To Round895902
+Node: Setting precision896801
+Ref: table-predefined-precision-strings897485
+Node: Setting the rounding mode899314
+Ref: table-gawk-rounding-modes899678
+Ref: Setting the rounding mode-Footnote-1903130
+Node: Arbitrary Precision Integers903309
+Ref: Arbitrary Precision Integers-Footnote-1906293
+Node: POSIX Floating Point Problems906442
+Ref: POSIX Floating Point Problems-Footnote-1910321
+Node: Floating point summary910359
+Node: Dynamic Extensions912546
+Node: Extension Intro914098
+Node: Plugin License915363
+Node: Extension Mechanism Outline916160
+Ref: figure-load-extension916588
+Ref: figure-register-new-function918068
+Ref: figure-call-new-function919072
+Node: Extension API Description921059
+Node: Extension API Functions Introduction922509
+Node: General Data Types927330
+Ref: General Data Types-Footnote-1933230
+Node: Memory Allocation Functions933529
+Ref: Memory Allocation Functions-Footnote-1936368
+Node: Constructor Functions936467
+Node: Registration Functions938206
+Node: Extension Functions938891
+Node: Exit Callback Functions941188
+Node: Extension Version String942436
+Node: Input Parsers943099
+Node: Output Wrappers952974
+Node: Two-way processors957487
+Node: Printing Messages959750
+Ref: Printing Messages-Footnote-1960826
+Node: Updating `ERRNO'960978
+Node: Requesting Values961718
+Ref: table-value-types-returned962445
+Node: Accessing Parameters963402
+Node: Symbol Table Access964636
+Node: Symbol table by name965150
+Node: Symbol table by cookie967170
+Ref: Symbol table by cookie-Footnote-1971315
+Node: Cached values971378
+Ref: Cached values-Footnote-1974874
+Node: Array Manipulation974965
+Ref: Array Manipulation-Footnote-1976063
+Node: Array Data Types976100
+Ref: Array Data Types-Footnote-1978755
+Node: Array Functions978847
+Node: Flattening Arrays982706
+Node: Creating Arrays989608
+Node: Extension API Variables994379
+Node: Extension Versioning995015
+Node: Extension API Informational Variables996906
+Node: Extension API Boilerplate997971
+Node: Finding Extensions1001780
+Node: Extension Example1002340
+Node: Internal File Description1003112
+Node: Internal File Ops1007179
+Ref: Internal File Ops-Footnote-11018930
+Node: Using Internal File Ops1019070
+Ref: Using Internal File Ops-Footnote-11021453
+Node: Extension Samples1021726
+Node: Extension Sample File Functions1023254
+Node: Extension Sample Fnmatch1030935
+Node: Extension Sample Fork1032423
+Node: Extension Sample Inplace1033638
+Node: Extension Sample Ord1035314
+Node: Extension Sample Readdir1036150
+Ref: table-readdir-file-types1037027
+Node: Extension Sample Revout1037838
+Node: Extension Sample Rev2way1038427
+Node: Extension Sample Read write array1039167
+Node: Extension Sample Readfile1041107
+Node: Extension Sample Time1042202
+Node: Extension Sample API Tests1043550
+Node: gawkextlib1044041
+Node: Extension summary1046719
+Node: Extension Exercises1050408
+Node: Language History1051130
+Node: V7/SVR3.11052786
+Node: SVR41054939
+Node: POSIX1056373
+Node: BTL1057754
+Node: POSIX/GNU1058485
+Node: Feature History1064006
+Node: Common Extensions1077104
+Node: Ranges and Locales1078476
+Ref: Ranges and Locales-Footnote-11083095
+Ref: Ranges and Locales-Footnote-21083122
+Ref: Ranges and Locales-Footnote-31083357
+Node: Contributors1083578
+Node: History summary1089118
+Node: Installation1090497
+Node: Gawk Distribution1091443
+Node: Getting1091927
+Node: Extracting1092750
+Node: Distribution contents1094387
+Node: Unix Installation1100141
+Node: Quick Installation1100758
+Node: Additional Configuration Options1103182
+Node: Configuration Philosophy1104985
+Node: Non-Unix Installation1107354
+Node: PC Installation1107812
+Node: PC Binary Installation1109132
+Node: PC Compiling1110980
+Ref: PC Compiling-Footnote-11114001
+Node: PC Testing1114110
+Node: PC Using1115286
+Node: Cygwin1119401
+Node: MSYS1120171
+Node: VMS Installation1120672
+Node: VMS Compilation1121464
+Ref: VMS Compilation-Footnote-11122693
+Node: VMS Dynamic Extensions1122751
+Node: VMS Installation Details1124435
+Node: VMS Running1126686
+Node: VMS GNV1129526
+Node: VMS Old Gawk1130261
+Node: Bugs1130731
+Node: Other Versions1134620
+Node: Installation summary1141054
+Node: Notes1142113
+Node: Compatibility Mode1142978
+Node: Additions1143760
+Node: Accessing The Source1144685
+Node: Adding Code1146120
+Node: New Ports1152277
+Node: Derived Files1156759
+Ref: Derived Files-Footnote-11162234
+Ref: Derived Files-Footnote-21162268
+Ref: Derived Files-Footnote-31162864
+Node: Future Extensions1162978
+Node: Implementation Limitations1163584
+Node: Extension Design1164832
+Node: Old Extension Problems1165986
+Ref: Old Extension Problems-Footnote-11167503
+Node: Extension New Mechanism Goals1167560
+Ref: Extension New Mechanism Goals-Footnote-11170920
+Node: Extension Other Design Decisions1171109
+Node: Extension Future Growth1173217
+Node: Old Extension Mechanism1174053
+Node: Notes summary1175815
+Node: Basic Concepts1177001
+Node: Basic High Level1177682
+Ref: figure-general-flow1177954
+Ref: figure-process-flow1178553
+Ref: Basic High Level-Footnote-11181782
+Node: Basic Data Typing1181967
+Node: Glossary1185295
+Node: Copying1217224
+Node: GNU Free Documentation License1254780
+Node: Index1279916
 
 End Tag Table
diff --git a/doc/gawk.texi b/doc/gawk.texi
index 05d03a6..8d219a0 100644
--- a/doc/gawk.texi
+++ b/doc/gawk.texi
@@ -7671,7 +7671,7 @@ variable @code{FIELDWIDTHS}.  Each number specifies the 
width of the field,
 @emph{including} columns between fields.  If you want to ignore the columns
 between fields, you can specify the width as a separate field that is
 subsequently ignored.
-It is a fatal error to supply a field width that is not a positive number.
+It is a fatal error to supply a field width that has a negative value.
 The following data is the output of the Unix @command{w} utility.  It is useful
 to illustrate the use of @code{FIELDWIDTHS}:
 
@@ -15496,7 +15496,7 @@ In most other languages, arrays must be @dfn{declared} 
before use,
 including a specification of
 how many elements or components they contain.  In such languages, the
 declaration causes a contiguous block of memory to be allocated for that
-many elements.  Usually, an index in the array must be a positive integer.
+many elements.  Usually, an index in the array must be a nonnegative integer.
 For example, the index zero specifies the first element in the array, which is
 actually stored at the beginning of the block of memory.  Index one
 specifies the second element, which is stored in memory right after the
@@ -15676,7 +15676,7 @@ Now the array is @dfn{sparse}, which just means some 
indices are missing.
 It has elements 0--3 and 10, but doesn't have elements 4, 5, 6, 7, 8, or 9.
 
 Another consequence of associative arrays is that the indices don't
-have to be positive integers.  Any number, or even a string, can be
+have to be nonnegative integers.  Any number, or even a string, can be
 an index.  For example, the following is an array that translates words from
 English to French:
 
@@ -15939,7 +15939,7 @@ END @{
 
 In programs that use arrays, it is often necessary to use a loop that
 executes once for each element of an array.  In other languages, where
-arrays are contiguous and indices are limited to positive integers,
+arrays are contiguous and indices are limited to nonnegative integers,
 this is easy: all the valid indices can be found by counting from
 the lowest index up to the highest.  This technique won't do the job
 in @command{awk}, because any number or string can be an array index.
@@ -30165,8 +30165,8 @@ The disadvantage is that their range is limited.
 @cindex integers, unsigned
 In computers, integer values come in two flavors: @dfn{signed} and
 @dfn{unsigned}.  Signed values may be negative or positive, whereas
-unsigned values are always positive (i.e., greater than or equal
-to zero).
+unsigned values are always greater than or equal
+to zero.
 
 In computer systems, integer arithmetic is exact, but the possible
 range of values is limited.  Integer arithmetic is generally faster than
diff --git a/doc/gawktexi.in b/doc/gawktexi.in
index 1efff5a..d4067f7 100644
--- a/doc/gawktexi.in
+++ b/doc/gawktexi.in
@@ -7271,7 +7271,7 @@ variable @code{FIELDWIDTHS}.  Each number specifies the 
width of the field,
 @emph{including} columns between fields.  If you want to ignore the columns
 between fields, you can specify the width as a separate field that is
 subsequently ignored.
-It is a fatal error to supply a field width that is not a positive number.
+It is a fatal error to supply a field width that has a negative value.
 The following data is the output of the Unix @command{w} utility.  It is useful
 to illustrate the use of @code{FIELDWIDTHS}:
 
@@ -14778,7 +14778,7 @@ In most other languages, arrays must be @dfn{declared} 
before use,
 including a specification of
 how many elements or components they contain.  In such languages, the
 declaration causes a contiguous block of memory to be allocated for that
-many elements.  Usually, an index in the array must be a positive integer.
+many elements.  Usually, an index in the array must be a nonnegative integer.
 For example, the index zero specifies the first element in the array, which is
 actually stored at the beginning of the block of memory.  Index one
 specifies the second element, which is stored in memory right after the
@@ -14958,7 +14958,7 @@ Now the array is @dfn{sparse}, which just means some 
indices are missing.
 It has elements 0--3 and 10, but doesn't have elements 4, 5, 6, 7, 8, or 9.
 
 Another consequence of associative arrays is that the indices don't
-have to be positive integers.  Any number, or even a string, can be
+have to be nonnegative integers.  Any number, or even a string, can be
 an index.  For example, the following is an array that translates words from
 English to French:
 
@@ -15221,7 +15221,7 @@ END @{
 
 In programs that use arrays, it is often necessary to use a loop that
 executes once for each element of an array.  In other languages, where
-arrays are contiguous and indices are limited to positive integers,
+arrays are contiguous and indices are limited to nonnegative integers,
 this is easy: all the valid indices can be found by counting from
 the lowest index up to the highest.  This technique won't do the job
 in @command{awk}, because any number or string can be an array index.
@@ -29256,8 +29256,8 @@ The disadvantage is that their range is limited.
 @cindex integers, unsigned
 In computers, integer values come in two flavors: @dfn{signed} and
 @dfn{unsigned}.  Signed values may be negative or positive, whereas
-unsigned values are always positive (i.e., greater than or equal
-to zero).
+unsigned values are always greater than or equal
+to zero.
 
 In computer systems, integer arithmetic is exact, but the possible
 range of values is limited.  Integer arithmetic is generally faster than

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

commit 822d727b719ad486bb5eca0f064c69047a424bf5
Author: Arnold D. Robbins <address@hidden>
Date:   Tue Mar 17 22:28:00 2015 +0200

    Document a limitation in the inplace extension.

diff --git a/extension/ChangeLog b/extension/ChangeLog
index b10ff17..9d7e617 100644
--- a/extension/ChangeLog
+++ b/extension/ChangeLog
@@ -2,6 +2,7 @@
 
        * inplace.c (do_inplace_begin): Jump through more hoops to satisfy
        a newer version of clang.
+       * inplace.3am (BUGS): Add new section and documentation.
 
 2015-02-26         Arnold D. Robbins     <address@hidden>
 
diff --git a/extension/inplace.3am b/extension/inplace.3am
index 5ca04be..d6339c4 100644
--- a/extension/inplace.3am
+++ b/extension/inplace.3am
@@ -1,4 +1,4 @@
-.TH INPLACE 3am "Jan 15 2013" "Free Software Foundation" "GNU Awk Extension 
Modules"
+.TH INPLACE 3am "Mar 16 2015" "Free Software Foundation" "GNU Awk Extension 
Modules"
 .SH NAME
 inplace \- emulate sed/perl/ruby in-place editing
 .SH SYNOPSIS
@@ -45,7 +45,10 @@ extension concatenates that suffix onto the original
 filename and uses the result as a filename for renaming
 the original.
 ... .SH NOTES
-... .SH BUGS
+.SH BUGS
+As currently written, output from an \f(CWENDFILE\fP
+rule does not get redirected into the replacement file.
+Neither does output from an \f(CWEND\fP rule.
 .SH EXAMPLE
 .ft CW
 .nf

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

commit 93a817e1d94bf7227391b131b6df2d1f3e5176cc
Author: Arnold D. Robbins <address@hidden>
Date:   Tue Mar 17 22:27:09 2015 +0200

    Fix a compiler warning.

diff --git a/extension/ChangeLog b/extension/ChangeLog
index 749871d..b10ff17 100644
--- a/extension/ChangeLog
+++ b/extension/ChangeLog
@@ -1,3 +1,8 @@
+2015-03-17         Arnold D. Robbins     <address@hidden>
+
+       * inplace.c (do_inplace_begin): Jump through more hoops to satisfy
+       a newer version of clang.
+
 2015-02-26         Arnold D. Robbins     <address@hidden>
 
        * Makefile.am (EXTRA_DIST): Add rwarray0.c to the list.
diff --git a/extension/inplace.c b/extension/inplace.c
index 0693ad9..e3685e3 100644
--- a/extension/inplace.c
+++ b/extension/inplace.c
@@ -171,10 +171,10 @@ do_inplace_begin(int nargs, awk_value_t *result)
 
        /* N.B. chown/chmod should be more portable than fchown/fchmod */
        if (chown(state.tname, sbuf.st_uid, sbuf.st_gid) < 0) {
-               /* jumping through hoops to silence gcc. :-( */
+               /* jumping through hoops to silence gcc and clang. :-( */
                int junk;
                junk = chown(state.tname, -1, sbuf.st_gid);
-               junk = junk;
+               ++junk;
        }
 
        if (chmod(state.tname, sbuf.st_mode) < 0)

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

Summary of changes:
 ChangeLog             |    6 +
 doc/ChangeLog         |    6 +
 doc/gawk.info         |  943 ++++++++++++++++++++++++-------------------------
 doc/gawk.texi         |   12 +-
 doc/gawktexi.in       |   12 +-
 extension/ChangeLog   |    6 +
 extension/inplace.3am |    7 +-
 extension/inplace.c   |    4 +-
 profile.c             |   26 +-
 test/ChangeLog        |    5 +
 test/Makefile.am      |   11 +-
 test/Makefile.in      |   11 +-
 test/mpfrmemok1.awk   |    7 +
 test/mpfrmemok1.ok    |    7 +
 14 files changed, 565 insertions(+), 498 deletions(-)
 create mode 100644 test/mpfrmemok1.awk
 create mode 100644 test/mpfrmemok1.ok


hooks/post-receive
-- 
gawk



reply via email to

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