[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[gawk-diffs] [SCM] gawk branch, master, updated. gawk-4.1.0-2788-g161ab8
From: |
Arnold Robbins |
Subject: |
[gawk-diffs] [SCM] gawk branch, master, updated. gawk-4.1.0-2788-g161ab89 |
Date: |
Sun, 1 Oct 2017 15:20:34 -0400 (EDT) |
This is an automated email from the git hooks/post-receive script. It was
generated because a ref change was pushed to the repository containing
the project "gawk".
The branch, master has been updated
via 161ab89bfe117326be4452eaca2bd7b268cf4b08 (commit)
via ed0fa913b717fc17d1f2e870fa0cc8737a8d32fd (commit)
via 6776d0066ac3bd96228fe6fc98395023562e29d7 (commit)
via dff88ee5892900fe96fa0601f1489c6207bbbaf6 (commit)
via b023c62b459dfe369ac4eb39d7043f4e8c2c9d2e (commit)
from 7be45aa2f873b6647a40cd6f53a9b63969b25662 (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=161ab89bfe117326be4452eaca2bd7b268cf4b08
commit 161ab89bfe117326be4452eaca2bd7b268cf4b08
Author: Arnold D. Robbins <address@hidden>
Date: Sun Oct 1 22:20:10 2017 +0300
Removed awklib/eg/lib/intdiv.awk.
diff --git a/awklib/eg/lib/intdiv.awk b/awklib/eg/lib/intdiv.awk
deleted file mode 100644
index 9de5978..0000000
--- a/awklib/eg/lib/intdiv.awk
+++ /dev/null
@@ -1,23 +0,0 @@
-# intdiv0 --- do integer division
-
-#
-# Arnold Robbins, address@hidden, Public Domain
-# July, 2014
-#
-# Name changed from div() to intdiv()
-# April, 2015
-#
-# Changed to intdiv0()
-# April, 2016
-
-function intdiv0(numerator, denominator, result)
-{
- split("", result)
-
- numerator = int(numerator)
- denominator = int(denominator)
- result["quotient"] = int(numerator / denominator)
- result["remainder"] = int(numerator % denominator)
-
- return 0.0
-}
http://git.sv.gnu.org/cgit/gawk.git/commit/?id=ed0fa913b717fc17d1f2e870fa0cc8737a8d32fd
commit ed0fa913b717fc17d1f2e870fa0cc8737a8d32fd
Author: Arnold D. Robbins <address@hidden>
Date: Sun Oct 1 22:19:43 2017 +0300
Add pointer to mawk 2.0 in the doc.
diff --git a/doc/ChangeLog b/doc/ChangeLog
index cbe042a..2da1fab 100644
--- a/doc/ChangeLog
+++ b/doc/ChangeLog
@@ -1,3 +1,7 @@
+2017-10-01 Arnold D. Robbins <address@hidden>
+
+ * gawktexi.in: Add pointer to mawk 2.0 GitHub page.
+
2017-10-01 Antonio Giovanni Colombo <address@hidden>
* gawktexi.in: Update many URLs to https. Some other small fixes.
diff --git a/doc/gawk.info b/doc/gawk.info
index fb56cbf..94b8869 100644
--- a/doc/gawk.info
+++ b/doc/gawk.info
@@ -29668,6 +29668,11 @@ Unix 'awk'
*Note Common Extensions:: for a list of extensions in 'mawk' that
are not in POSIX 'awk'.
+'mawk' 2.0
+ In 2016, Michael Brennan resumed 'mawk' development. His
+ development snapshots are available via Git from the project's
+ GitHub page (https://github.com/mikebrennan000/mawk-2).
+
'awka'
Written by Andrew Sumner, 'awka' translates 'awk' programs into C,
compiles them, and links them with a library of functions that
@@ -33257,7 +33262,7 @@ Index
* awk, versions of, See Also Brian Kernighan's awk: BTL. (line 6)
* awk, versions of, See Also Brian Kernighan's awk <1>: Other Versions.
(line 13)
-* awka compiler for awk: Other Versions. (line 68)
+* awka compiler for awk: Other Versions. (line 73)
* AWKLIBPATH environment variable: AWKLIBPATH Variable. (line 6)
* AWKPATH environment variable: AWKPATH Variable. (line 6)
* AWKPATH environment variable <1>: PC Using. (line 9)
@@ -33316,7 +33321,7 @@ Index
(line 57)
* backtrace debugger command: Execution Stack. (line 13)
* Beebe, Nelson H.F.: Acknowledgments. (line 60)
-* Beebe, Nelson H.F. <1>: Other Versions. (line 82)
+* Beebe, Nelson H.F. <1>: Other Versions. (line 87)
* BEGIN pattern: Field Separators. (line 44)
* BEGIN pattern <1>: BEGIN/END. (line 6)
* BEGIN pattern <2>: Using BEGIN/END. (line 6)
@@ -33442,7 +33447,7 @@ Index
* address@hidden bug reporting address: Bug address. (line 31)
* built-in functions: Functions. (line 6)
* built-in functions, evaluation order: Calling Built-in. (line 30)
-* BusyBox Awk: Other Versions. (line 92)
+* BusyBox Awk: Other Versions. (line 97)
* c.e., See common extensions: Conventions. (line 51)
* call by reference: Pass By Value/Reference.
(line 44)
@@ -34543,8 +34548,8 @@ Index
(line 53)
* IGNORECASE variable, with ~ and !~ operators: Case-sensitivity.
(line 26)
-* Illumos: Other Versions. (line 109)
-* Illumos, POSIX-compliant awk: Other Versions. (line 109)
+* Illumos: Other Versions. (line 114)
+* Illumos, POSIX-compliant awk: Other Versions. (line 114)
* implementation issues, gawk: Notes. (line 6)
* implementation issues, gawk, debugging: Compatibility Mode. (line 6)
* implementation issues, gawk, limits: Getline Notes. (line 14)
@@ -34634,9 +34639,9 @@ Index
* Jacobs, Andrew: Passwd Functions. (line 90)
* Jaegermann, Michal: Acknowledgments. (line 60)
* Jaegermann, Michal <1>: Contributors. (line 46)
-* Java implementation of awk: Other Versions. (line 117)
+* Java implementation of awk: Other Versions. (line 122)
* Java programming language: Glossary. (line 468)
-* jawk: Other Versions. (line 117)
+* jawk: Other Versions. (line 122)
* Jedi knights: Undocumented. (line 6)
* Johansen, Chris: Signature Program. (line 25)
* join() user-defined function: Join Function. (line 18)
@@ -34688,7 +34693,7 @@ Index
* length of string: String Functions. (line 170)
* Lesser General Public License (LGPL): Glossary. (line 491)
* LGPL (Lesser General Public License): Glossary. (line 491)
-* libmawk: Other Versions. (line 125)
+* libmawk: Other Versions. (line 130)
* libraries of awk functions: Library Functions. (line 6)
* libraries of awk functions, assertions: Assert Function. (line 6)
* libraries of awk functions, associative arrays and: Library Names.
@@ -34911,7 +34916,7 @@ Index
* OFS variable <1>: Output Separators. (line 6)
* OFS variable <2>: User-modified. (line 116)
* OpenBSD: Glossary. (line 748)
-* OpenSolaris: Other Versions. (line 100)
+* OpenSolaris: Other Versions. (line 105)
* operating systems, BSD-based: Manual History. (line 28)
* operating systems, PC, gawk on: PC Using. (line 6)
* operating systems, PC, gawk on, installing: PC Installation.
@@ -35001,8 +35006,8 @@ Index
* patterns, regexp constants as: Expression Patterns. (line 34)
* patterns, types of: Pattern Overview. (line 15)
* pawk (profiling version of Brian Kernighan's awk): Other Versions.
- (line 82)
-* pawk, awk-like facilities for Python: Other Versions. (line 129)
+ (line 87)
+* pawk, awk-like facilities for Python: Other Versions. (line 134)
* PC operating systems, gawk on: PC Using. (line 6)
* PC operating systems, gawk on, installing: PC Installation. (line 6)
* percent sign (%), % operator: Precedence. (line 54)
@@ -35197,13 +35202,13 @@ Index
* pwcat program: Passwd Functions. (line 23)
* q debugger command (alias for quit): Miscellaneous Debugger Commands.
(line 102)
-* QSE awk: Other Versions. (line 135)
+* QSE awk: Other Versions. (line 140)
* Quanstrom, Erik: Alarm Program. (line 8)
* question mark (?), ?: operator: Precedence. (line 91)
* question mark (?), regexp operator: Regexp Operators. (line 111)
* question mark (?), regexp operator <1>: GNU Regexp Operators.
(line 62)
-* QuikTrim Awk: Other Versions. (line 139)
+* QuikTrim Awk: Other Versions. (line 144)
* quit debugger command: Miscellaneous Debugger Commands.
(line 102)
* QUIT signal (MS-Windows): Profiling. (line 212)
@@ -35517,7 +35522,7 @@ Index
* sleep utility: Alarm Program. (line 109)
* sleep() extension function: Extension Sample Time.
(line 22)
-* Solaris, POSIX-compliant awk: Other Versions. (line 100)
+* Solaris, POSIX-compliant awk: Other Versions. (line 105)
* sort array: String Functions. (line 42)
* sort array indices: String Functions. (line 42)
* sort function, arrays, sorting: Array Sorting Functions.
@@ -35526,20 +35531,20 @@ Index
* sort utility, coprocesses and: Two-way I/O. (line 66)
* sorting characters in different languages: Explaining gettext.
(line 94)
-* source code, awka: Other Versions. (line 68)
+* source code, awka: Other Versions. (line 73)
* source code, Brian Kernighan's awk: Other Versions. (line 13)
-* source code, BusyBox Awk: Other Versions. (line 92)
+* source code, BusyBox Awk: Other Versions. (line 97)
* source code, gawk: Gawk Distribution. (line 6)
-* source code, Illumos awk: Other Versions. (line 109)
-* source code, jawk: Other Versions. (line 117)
-* source code, libmawk: Other Versions. (line 125)
+* source code, Illumos awk: Other Versions. (line 114)
+* source code, jawk: Other Versions. (line 122)
+* source code, libmawk: Other Versions. (line 130)
* source code, mawk: Other Versions. (line 48)
* source code, mixing: Options. (line 117)
-* source code, pawk: Other Versions. (line 82)
-* source code, pawk (Python version): Other Versions. (line 129)
-* source code, QSE awk: Other Versions. (line 135)
-* source code, QuikTrim Awk: Other Versions. (line 139)
-* source code, Solaris awk: Other Versions. (line 100)
+* source code, pawk: Other Versions. (line 87)
+* source code, pawk (Python version): Other Versions. (line 134)
+* source code, QSE awk: Other Versions. (line 140)
+* source code, QuikTrim Awk: Other Versions. (line 144)
+* source code, Solaris awk: Other Versions. (line 105)
* source files, search path for: Programs Exercises. (line 70)
* sparse arrays: Array Intro. (line 76)
* Spencer, Henry: Glossary. (line 16)
@@ -35627,7 +35632,7 @@ Index
* substitute in string: String Functions. (line 89)
* substr: String Functions. (line 484)
* substring: String Functions. (line 484)
-* Sumner, Andrew: Other Versions. (line 68)
+* Sumner, Andrew: Other Versions. (line 73)
* supplementary groups of gawk process: Auto-set. (line 271)
* switch statement: Switch Statement. (line 6)
* SYMTAB array: Auto-set. (line 332)
@@ -36426,37 +36431,37 @@ Node: Bug address1189819
Node: Usenet1192611
Node: Maintainers1193388
Node: Other Versions1194649
-Node: Installation summary1201240
-Node: Notes1202442
-Node: Compatibility Mode1203307
-Node: Additions1204089
-Node: Accessing The Source1205014
-Node: Adding Code1206451
-Node: New Ports1212670
-Node: Derived Files1217158
-Ref: Derived Files-Footnote-11222804
-Ref: Derived Files-Footnote-21222839
-Ref: Derived Files-Footnote-31223437
-Node: Future Extensions1223551
-Node: Implementation Limitations1224209
-Node: Extension Design1225392
-Node: Old Extension Problems1226546
-Ref: Old Extension Problems-Footnote-11228064
-Node: Extension New Mechanism Goals1228121
-Ref: Extension New Mechanism Goals-Footnote-11231485
-Node: Extension Other Design Decisions1231674
-Node: Extension Future Growth1233787
-Node: Old Extension Mechanism1234623
-Node: Notes summary1236386
-Node: Basic Concepts1237568
-Node: Basic High Level1238249
-Ref: figure-general-flow1238531
-Ref: figure-process-flow1239216
-Ref: Basic High Level-Footnote-11242517
-Node: Basic Data Typing1242702
-Node: Glossary1246030
-Node: Copying1277980
-Node: GNU Free Documentation License1315519
-Node: Index1340637
+Node: Installation summary1201444
+Node: Notes1202646
+Node: Compatibility Mode1203511
+Node: Additions1204293
+Node: Accessing The Source1205218
+Node: Adding Code1206655
+Node: New Ports1212874
+Node: Derived Files1217362
+Ref: Derived Files-Footnote-11223008
+Ref: Derived Files-Footnote-21223043
+Ref: Derived Files-Footnote-31223641
+Node: Future Extensions1223755
+Node: Implementation Limitations1224413
+Node: Extension Design1225596
+Node: Old Extension Problems1226750
+Ref: Old Extension Problems-Footnote-11228268
+Node: Extension New Mechanism Goals1228325
+Ref: Extension New Mechanism Goals-Footnote-11231689
+Node: Extension Other Design Decisions1231878
+Node: Extension Future Growth1233991
+Node: Old Extension Mechanism1234827
+Node: Notes summary1236590
+Node: Basic Concepts1237772
+Node: Basic High Level1238453
+Ref: figure-general-flow1238735
+Ref: figure-process-flow1239420
+Ref: Basic High Level-Footnote-11242721
+Node: Basic Data Typing1242906
+Node: Glossary1246234
+Node: Copying1278184
+Node: GNU Free Documentation License1315723
+Node: Index1340841
End Tag Table
diff --git a/doc/gawk.texi b/doc/gawk.texi
index 2f7a11b..c9b2cdf 100644
--- a/doc/gawk.texi
+++ b/doc/gawk.texi
@@ -40190,6 +40190,11 @@ is similar to @command{gawk}'s
@xref{Common Extensions}
for a list of extensions in @command{mawk} that are not in POSIX @command{awk}.
address@hidden @command{mawk} 2.0
+In 2016, Michael Brennan resumed @command{mawk} development.
+His development snapshots are available via Git from the project's
address@hidden://github.com/mikebrennan000/mawk-2, GitHub page}.
+
@cindex Sumner, Andrew
@cindex @command{awka} compiler for @command{awk}
@cindex source code, @command{awka}
diff --git a/doc/gawktexi.in b/doc/gawktexi.in
index 3dd93c3..c82a4e8 100644
--- a/doc/gawktexi.in
+++ b/doc/gawktexi.in
@@ -39204,6 +39204,11 @@ is similar to @command{gawk}'s
@xref{Common Extensions}
for a list of extensions in @command{mawk} that are not in POSIX @command{awk}.
address@hidden @command{mawk} 2.0
+In 2016, Michael Brennan resumed @command{mawk} development.
+His development snapshots are available via Git from the project's
address@hidden://github.com/mikebrennan000/mawk-2, GitHub page}.
+
@cindex Sumner, Andrew
@cindex @command{awka} compiler for @command{awk}
@cindex source code, @command{awka}
http://git.sv.gnu.org/cgit/gawk.git/commit/?id=6776d0066ac3bd96228fe6fc98395023562e29d7
commit 6776d0066ac3bd96228fe6fc98395023562e29d7
Author: Arnold D. Robbins <address@hidden>
Date: Sun Oct 1 22:11:30 2017 +0300
Manual updates from Antonio, mainly URL fixes.
diff --git a/awklib/eg/prog/anagram.awk b/awklib/eg/prog/anagram.awk
index df2768d..4c2ce1f 100644
--- a/awklib/eg/prog/anagram.awk
+++ b/awklib/eg/prog/anagram.awk
@@ -9,7 +9,7 @@
# - split() with "" as separator splits out individual characters
# - asort() and asorti() functions
#
-# See http://savannah.gnu.org/projects/gawk.
+# See https://savannah.gnu.org/projects/gawk.
#
# Arnold Robbins
# address@hidden
diff --git a/awklib/eg/prog/pi.awk b/awklib/eg/prog/pi.awk
index e1b5bc4..91060db 100644
--- a/awklib/eg/prog/pi.awk
+++ b/awklib/eg/prog/pi.awk
@@ -10,7 +10,7 @@ BEGIN {
for (m = digits * 4; m > 0; --m) {
d = m * 2 + 1
x = pi * m
- intdiv(x, d, result)
+ intdiv0(x, d, result)
pi = result["quotient"]
pi = pi + two
}
diff --git a/doc/ChangeLog b/doc/ChangeLog
index acf6395..cbe042a 100644
--- a/doc/ChangeLog
+++ b/doc/ChangeLog
@@ -1,3 +1,7 @@
+2017-10-01 Antonio Giovanni Colombo <address@hidden>
+
+ * gawktexi.in: Update many URLs to https. Some other small fixes.
+
2017-10-01 Arnold D. Robbins <address@hidden>
* awkcard.in: One more small change.
diff --git a/doc/gawk.info b/doc/gawk.info
index e19e7b6..fb56cbf 100644
--- a/doc/gawk.info
+++ b/doc/gawk.info
@@ -5441,7 +5441,7 @@ being used:
else if (PROCINFO["FS"] == "FIELDWIDTHS")
FIXED-WIDTH FIELD SPLITTING ...
else if (PROCINFO["FS"] == "FPAT")
- CONTENT-BASED FIELD SPLITTING
+ CONTENT-BASED FIELD SPLITTING ...
else
API INPUT PARSER FIELD SPLITTING ... (advanced feature)
@@ -9786,7 +9786,8 @@ tasks that would otherwise be difficult or impossible to
perform:
inserting an "input parser"; *note Input Parsers::), you can invoke
them at this point, before 'gawk' has started processing the file.
(This is a _very_ advanced feature, currently used only by the
- 'gawkextlib' project (http://sourceforge.net/projects/gawkextlib).)
+ 'gawkextlib' project
+ (https://sourceforge.net/projects/gawkextlib).)
The 'ENDFILE' rule is called when 'gawk' has finished processing the
last record in an input file. For the last input file, it will be
@@ -14789,7 +14790,7 @@ pointers," which are a mechanism for calling a function
chosen at
runtime. One of the most well-known uses of this ability is the C
'qsort()' function, which sorts an array using the famous "quicksort"
algorithm (see the Wikipedia article
-(http://en.wikipedia.org/wiki/Quicksort) for more information). To use
+(https://en.wikipedia.org/wiki/Quicksort) for more information). To use
this function, you supply a pointer to a comparison function. This
mechanism allows you to sort arbitrary data in an arbitrary fashion.
@@ -22678,12 +22679,12 @@ material here:
"Stability"
From the Wikipedia article on numerical stability
- (http://en.wikipedia.org/wiki/Numerical_stability): "Calculations
+ (https://en.wikipedia.org/wiki/Numerical_stability): "Calculations
that can be proven not to magnify approximation errors are called
"numerically stable"."
See the Wikipedia article on accuracy and precision
-(http://en.wikipedia.org/wiki/Accuracy_and_precision) for more
+(https://en.wikipedia.org/wiki/Accuracy_and_precision) for more
information on some of those terms.
On modern systems, floating-point hardware uses the representation
@@ -22722,7 +22723,7 @@ File: gawk.info, Node: MPFR features, Next: FP Math
Caution, Prev: Math Defin
By default, 'gawk' uses the double-precision floating-point values
supplied by the hardware of the system it runs on. However, if it was
compiled to do so, and the '-M' command-line option is supplied, 'gawk'
-uses the GNU MPFR (http://www.mpfr.org) and GNU MP (http://gmplib.org)
+uses the GNU MPFR (http://www.mpfr.org) and GNU MP (https://gmplib.org)
(GMP) libraries for arbitrary-precision arithmetic on numbers. You can
see if MPFR support is available like so:
@@ -24101,13 +24102,13 @@ code would use them:
'static inline awk_value_t *'
'make_number_mpz(void *mpz, awk_value_t *result);'
This function creates a GMP number value in 'result'. The 'mpz'
- must be from a call to 'get_mpz_ptr()' (and thus be or real
+ must be from a call to 'get_mpz_ptr()' (and thus be of real
underlying type 'mpz_ptr'). 'gawk' takes ownership of this memory.
'static inline awk_value_t *'
'make_number_mpfr(void *mpfr, awk_value_t *result);'
This function creates an MPFR number value in 'result'. The 'mpfr'
- must be from a call to 'get_mpfr_ptr()'. (and thus be or real
+ must be from a call to 'get_mpfr_ptr()'. (and thus be of real
underlying type 'mpfr_ptr') 'gawk' takes ownership of this memory.
'static inline awk_value_t *'
@@ -27166,7 +27167,7 @@ File: gawk.info, Node: gawkextlib, Next: Extension
summary, Prev: Extension S
16.8 The 'gawkextlib' Project
=============================
-The 'gawkextlib' (http://sourceforge.net/projects/gawkextlib/) project
+The 'gawkextlib' (https://sourceforge.net/projects/gawkextlib/) project
provides a number of 'gawk' extensions, including one for processing XML
files. This is the evolution of the original 'xgawk' (XML 'gawk')
project.
@@ -27189,15 +27190,15 @@ project.
* Select extension
* XML parser extension, using the Expat
- (http://expat.sourceforge.net) XML parsing library
+ (https://expat.sourceforge.net) XML parsing library
You can check out the code for the 'gawkextlib' project using the Git
-(http://git-scm.com) distributed source code control system. The
+(https://git-scm.com) distributed source code control system. The
command is as follows:
git clone git://git.code.sf.net/p/gawkextlib/code gawkextlib-code
- You will need to have the Expat (http://expat.sourceforge.net) XML
+ You will need to have the Expat (https://expat.sourceforge.net) XML
parser library installed in order to build and use the XML extension.
In addition, you must have the GNU Autotools installed (Autoconf
@@ -27214,7 +27215,7 @@ follows. First, build and install 'gawk':
make && make check Build and check that all is OK
make install Install gawk
- Next, go to <http://sourceforge.net/projects/gawkextlib/files> to
+ Next, go to <https://sourceforge.net/projects/gawkextlib/files> to
download 'gawkextlib' and any extensions that you would like to build.
The 'README' file at that site explains how to build the code. If you
installed 'gawk' in a non-standard location, you will need to specify
@@ -27523,7 +27524,7 @@ many years were finally added to POSIX. They are:
permitted by the POSIX standard.
The 2008 POSIX standard can be found online at
-<http://www.opengroup.org/onlinepubs/9699919799/>.
+<http://pubs.opengroup.org/onlinepubs/9699919799/>.
File: gawk.info, Node: BTL, Next: POSIX/GNU, Prev: POSIX, Up: Language
History
@@ -29632,7 +29633,7 @@ Unix 'awk'
git clone git://github.com/onetrueawk/awk bwkawk
- This command creates a copy of the Git (http://git-scm.com)
+ This command creates a copy of the Git (https://git-scm.com)
repository in a directory named 'bwkawk'. If you leave that
argument off the 'git' command line, the repository copy is created
in a directory named 'awk'.
@@ -29676,7 +29677,7 @@ Unix 'awk'
The 'awk' translator is released under the GPL, and the library is
under the LGPL.
- To get 'awka', go to <http://sourceforge.net/projects/awka>.
+ To get 'awka', go to <https://sourceforge.net/projects/awka>.
The project seems to be frozen; no new code changes have been made
since approximately 2001.
@@ -29697,7 +29698,7 @@ BusyBox 'awk'
building it, be careful not to do 'make install' as it will
overwrite copies of other applications in your '/usr/local/bin'.
For more information, see the project's home page
- (http://busybox.net).
+ (https://busybox.net).
The OpenSolaris POSIX 'awk'
The versions of 'awk' in '/usr/xpg4/bin' and '/usr/xpg6/bin' on
@@ -29711,7 +29712,7 @@ The OpenSolaris POSIX 'awk'
The source code used to be available from the OpenSolaris website.
However, that project was ended and the website shut down.
Fortunately, the Illumos project
- (http://wiki.illumos.org/display/illumos/illumos+Home) makes this
+ (https://wiki.illumos.org/display/illumos/illumos+Home) makes this
implementation available. You can view the files one at a time
from
<https://github.com/joyent/illumos-joyent/blob/master/usr/src/cmd/awk_xpg4>.
@@ -29721,7 +29722,7 @@ The OpenSolaris POSIX 'awk'
a full interpreter, although because it uses Java facilities for
I/O and for regexp matching, the language it supports is different
from POSIX 'awk'. More information is available on the project's
- home page (http://jawk.sourceforge.net).
+ home page (https://jawk.sourceforge.net).
Libmawk
This is an embeddable 'awk' interpreter derived from 'mawk'. For
@@ -29735,7 +29736,7 @@ Libmawk
QSE 'awk'
This is an embeddable 'awk' interpreter. For more information, see
- <http://code.google.com/p/qse/> and <http://awk.info/?tools/qse>.
+ <https://code.google.com/p/qse/> and <http://awk.info/?tools/qse>.
'QTawk'
This is an independent implementation of 'awk' distributed under
@@ -29752,7 +29753,7 @@ QSE 'awk'
Other versions
See also the "Versions and implementations" section of the
Wikipedia article
- (http://en.wikipedia.org/wiki/Awk_language#Versions_and_implementations)
+ (https://en.wikipedia.org/wiki/Awk_language#Versions_and_implementations)
on 'awk' for information on additional versions.
@@ -29868,7 +29869,7 @@ versions of 'gawk'.
changes, you will probably wish to work with the development version.
To do so, you will need to access the 'gawk' source code repository.
The code is maintained using the Git distributed version control system
-(http://git-scm.com). You will need to install it if your system
+(https://git-scm.com). You will need to install it if your system
doesn't have it. Once you have done so, use the command:
git clone git://git.savannah.gnu.org/gawk.git
@@ -31235,7 +31236,7 @@ ISO
POSIX become both American national and ISO international standards
simultaneously. This Info file refers to Standard C as "ISO C"
throughout. See the ISO website
- (http://www.iso.org/iso/home/about.htm) for more information about
+ (https://www.iso.org/iso/home/about.htm) for more information about
the name of the organization and its language-independent
three-letter acronym.
@@ -31354,7 +31355,7 @@ POSIX
these standards. The main standard of interest for 'awk' users is
'IEEE Standard for Information Technology, Standard 1003.1-2008'.
The 2008 POSIX standard can be found online at
- <http://www.opengroup.org/onlinepubs/9699919799/>.
+ <http://pubs.opengroup.org/onlinepubs/9699919799/>.
Precedence
The order in which operations are performed when operators are used
@@ -31527,7 +31528,7 @@ Unix
system. There are many commercial versions of Unix, as well as
several work-alike systems whose source code is freely available
(such as GNU/Linux, NetBSD (http://www.netbsd.org), FreeBSD
- (http://www.freebsd.org), and OpenBSD (http://www.openbsd.org)).
+ (https://www.freebsd.org), and OpenBSD (http://www.openbsd.org)).
UTC
The accepted abbreviation for "Universal Coordinated Time." This
@@ -34444,7 +34445,7 @@ Index
* getline from a file: Getline/File. (line 6)
* getline into a variable: Getline/Variable. (line 6)
* getline statement, BEGINFILE/ENDFILE patterns and: BEGINFILE/ENDFILE.
- (line 53)
+ (line 54)
* getlocaltime() user-defined function: Getlocaltime Function.
(line 16)
* getopt() function (C library): Getopt Function. (line 15)
@@ -34842,7 +34843,7 @@ Index
* next statement <1>: Next Statement. (line 6)
* next statement, BEGIN/END patterns and: I/O And BEGIN/END. (line 36)
* next statement, BEGINFILE/ENDFILE patterns and: BEGINFILE/ENDFILE.
- (line 49)
+ (line 50)
* next statement, user-defined functions and: Next Statement. (line 44)
* nextfile statement: Nextfile Statement. (line 6)
* nextfile statement, BEGIN/END patterns and: I/O And BEGIN/END.
@@ -35978,484 +35979,484 @@ Node: Fields with fixed data237747
Node: Splitting By Content239265
Ref: Splitting By Content-Footnote-1242915
Node: Testing field creation243078
-Node: Multiple Line244699
-Ref: Multiple Line-Footnote-1250583
-Node: Getline250762
-Node: Plain Getline253231
-Node: Getline/Variable255872
-Node: Getline/File257023
-Node: Getline/Variable/File258411
-Ref: Getline/Variable/File-Footnote-1260016
-Node: Getline/Pipe260104
-Node: Getline/Variable/Pipe262811
-Node: Getline/Coprocess263946
-Node: Getline/Variable/Coprocess265213
-Node: Getline Notes265955
-Node: Getline Summary268752
-Ref: table-getline-variants269176
-Node: Read Timeout269924
-Ref: Read Timeout-Footnote-1273830
-Node: Retrying Input273888
-Node: Command-line directories275087
-Node: Input Summary275993
-Node: Input Exercises279165
-Node: Printing279893
-Node: Print281727
-Node: Print Examples283184
-Node: Output Separators285964
-Node: OFMT287981
-Node: Printf289337
-Node: Basic Printf290122
-Node: Control Letters291696
-Node: Format Modifiers295684
-Node: Printf Examples301699
-Node: Redirection304185
-Node: Special FD311026
-Ref: Special FD-Footnote-1314194
-Node: Special Files314268
-Node: Other Inherited Files314885
-Node: Special Network315886
-Node: Special Caveats316746
-Node: Close Files And Pipes317695
-Ref: table-close-pipe-return-values324602
-Ref: Close Files And Pipes-Footnote-1325385
-Ref: Close Files And Pipes-Footnote-2325533
-Node: Nonfatal325685
-Node: Output Summary328010
-Node: Output Exercises329232
-Node: Expressions329911
-Node: Values331099
-Node: Constants331777
-Node: Scalar Constants332468
-Ref: Scalar Constants-Footnote-1333332
-Node: Nondecimal-numbers333582
-Node: Regexp Constants336583
-Node: Using Constant Regexps337109
-Node: Standard Regexp Constants337731
-Node: Strong Regexp Constants340919
-Node: Variables343877
-Node: Using Variables344534
-Node: Assignment Options346444
-Node: Conversion348317
-Node: Strings And Numbers348841
-Ref: Strings And Numbers-Footnote-1351904
-Node: Locale influences conversions352013
-Ref: table-locale-affects354771
-Node: All Operators355389
-Node: Arithmetic Ops356018
-Node: Concatenation358524
-Ref: Concatenation-Footnote-1361371
-Node: Assignment Ops361478
-Ref: table-assign-ops366469
-Node: Increment Ops367782
-Node: Truth Values and Conditions371242
-Node: Truth Values372316
-Node: Typing and Comparison373364
-Node: Variable Typing374184
-Ref: Variable Typing-Footnote-1380647
-Ref: Variable Typing-Footnote-2380719
-Node: Comparison Operators380796
-Ref: table-relational-ops381215
-Node: POSIX String Comparison384710
-Ref: POSIX String Comparison-Footnote-1386405
-Ref: POSIX String Comparison-Footnote-2386544
-Node: Boolean Ops386628
-Ref: Boolean Ops-Footnote-1391110
-Node: Conditional Exp391202
-Node: Function Calls392938
-Node: Precedence396815
-Node: Locales400474
-Node: Expressions Summary402106
-Node: Patterns and Actions404679
-Node: Pattern Overview405799
-Node: Regexp Patterns407476
-Node: Expression Patterns408018
-Node: Ranges411799
-Node: BEGIN/END414907
-Node: Using BEGIN/END415668
-Ref: Using BEGIN/END-Footnote-1418404
-Node: I/O And BEGIN/END418510
-Node: BEGINFILE/ENDFILE420824
-Node: Empty423731
-Node: Using Shell Variables424048
-Node: Action Overview426322
-Node: Statements428647
-Node: If Statement430495
-Node: While Statement431990
-Node: Do Statement434018
-Node: For Statement435166
-Node: Switch Statement438324
-Node: Break Statement440710
-Node: Continue Statement442802
-Node: Next Statement444629
-Node: Nextfile Statement447012
-Node: Exit Statement449664
-Node: Built-in Variables452067
-Node: User-modified453200
-Node: Auto-set460967
-Ref: Auto-set-Footnote-1477304
-Ref: Auto-set-Footnote-2477510
-Node: ARGC and ARGV477566
-Node: Pattern Action Summary481779
-Node: Arrays484209
-Node: Array Basics485538
-Node: Array Intro486382
-Ref: figure-array-elements488357
-Ref: Array Intro-Footnote-1491061
-Node: Reference to Elements491189
-Node: Assigning Elements493653
-Node: Array Example494144
-Node: Scanning an Array495903
-Node: Controlling Scanning498925
-Ref: Controlling Scanning-Footnote-1504324
-Node: Numeric Array Subscripts504640
-Node: Uninitialized Subscripts506824
-Node: Delete508443
-Ref: Delete-Footnote-1511195
-Node: Multidimensional511252
-Node: Multiscanning514347
-Node: Arrays of Arrays515938
-Node: Arrays Summary520705
-Node: Functions522798
-Node: Built-in523836
-Node: Calling Built-in524917
-Node: Numeric Functions526913
-Ref: Numeric Functions-Footnote-1530941
-Ref: Numeric Functions-Footnote-2531298
-Ref: Numeric Functions-Footnote-3531346
-Node: String Functions531618
-Ref: String Functions-Footnote-1555276
-Ref: String Functions-Footnote-2555404
-Ref: String Functions-Footnote-3555652
-Node: Gory Details555739
-Ref: table-sub-escapes557530
-Ref: table-sub-proposed559049
-Ref: table-posix-sub560412
-Ref: table-gensub-escapes561953
-Ref: Gory Details-Footnote-1562776
-Node: I/O Functions562930
-Ref: table-system-return-values569512
-Ref: I/O Functions-Footnote-1571492
-Ref: I/O Functions-Footnote-2571640
-Node: Time Functions571760
-Ref: Time Functions-Footnote-1582431
-Ref: Time Functions-Footnote-2582499
-Ref: Time Functions-Footnote-3582657
-Ref: Time Functions-Footnote-4582768
-Ref: Time Functions-Footnote-5582880
-Ref: Time Functions-Footnote-6583107
-Node: Bitwise Functions583373
-Ref: table-bitwise-ops583967
-Ref: Bitwise Functions-Footnote-1590000
-Ref: Bitwise Functions-Footnote-2590173
-Node: Type Functions590364
-Node: I18N Functions593281
-Node: User-defined594932
-Node: Definition Syntax595737
-Ref: Definition Syntax-Footnote-1601424
-Node: Function Example601495
-Ref: Function Example-Footnote-1604417
-Node: Function Caveats604439
-Node: Calling A Function604957
-Node: Variable Scope605915
-Node: Pass By Value/Reference608909
-Node: Return Statement612408
-Node: Dynamic Typing615387
-Node: Indirect Calls616317
-Ref: Indirect Calls-Footnote-1626568
-Node: Functions Summary626696
-Node: Library Functions629401
-Ref: Library Functions-Footnote-1633008
-Ref: Library Functions-Footnote-2633151
-Node: Library Names633322
-Ref: Library Names-Footnote-1636782
-Ref: Library Names-Footnote-2637005
-Node: General Functions637091
-Node: Strtonum Function638194
-Node: Assert Function641216
-Node: Round Function644542
-Node: Cliff Random Function646083
-Node: Ordinal Functions647099
-Ref: Ordinal Functions-Footnote-1650162
-Ref: Ordinal Functions-Footnote-2650414
-Node: Join Function650624
-Ref: Join Function-Footnote-1652394
-Node: Getlocaltime Function652594
-Node: Readfile Function656336
-Node: Shell Quoting658308
-Node: Data File Management659709
-Node: Filetrans Function660341
-Node: Rewind Function664437
-Node: File Checking666347
-Ref: File Checking-Footnote-1667681
-Node: Empty Files667882
-Node: Ignoring Assigns669861
-Node: Getopt Function671411
-Ref: Getopt Function-Footnote-1682880
-Node: Passwd Functions683080
-Ref: Passwd Functions-Footnote-1691919
-Node: Group Functions692007
-Ref: Group Functions-Footnote-1699905
-Node: Walking Arrays700112
-Node: Library Functions Summary703120
-Node: Library Exercises704526
-Node: Sample Programs704991
-Node: Running Examples705761
-Node: Clones706489
-Node: Cut Program707713
-Node: Egrep Program717642
-Ref: Egrep Program-Footnote-1725154
-Node: Id Program725264
-Node: Split Program728944
-Ref: Split Program-Footnote-1732403
-Node: Tee Program732532
-Node: Uniq Program735322
-Node: Wc Program742748
-Ref: Wc Program-Footnote-1747003
-Node: Miscellaneous Programs747097
-Node: Dupword Program748310
-Node: Alarm Program750340
-Node: Translate Program755195
-Ref: Translate Program-Footnote-1759760
-Node: Labels Program760030
-Ref: Labels Program-Footnote-1763381
-Node: Word Sorting763465
-Node: History Sorting767537
-Node: Extract Program769372
-Node: Simple Sed776902
-Node: Igawk Program779976
-Ref: Igawk Program-Footnote-1794307
-Ref: Igawk Program-Footnote-2794509
-Ref: Igawk Program-Footnote-3794631
-Node: Anagram Program794746
-Node: Signature Program797808
-Node: Programs Summary799055
-Node: Programs Exercises800269
-Ref: Programs Exercises-Footnote-1804398
-Node: Advanced Features804489
-Node: Nondecimal Data806479
-Node: Array Sorting808070
-Node: Controlling Array Traversal808770
-Ref: Controlling Array Traversal-Footnote-1817137
-Node: Array Sorting Functions817255
-Ref: Array Sorting Functions-Footnote-1822346
-Node: Two-way I/O822542
-Ref: Two-way I/O-Footnote-1829094
-Ref: Two-way I/O-Footnote-2829281
-Node: TCP/IP Networking829363
-Node: Profiling832481
-Ref: Profiling-Footnote-1841153
-Node: Advanced Features Summary841476
-Node: Internationalization843320
-Node: I18N and L10N844800
-Node: Explaining gettext845487
-Ref: Explaining gettext-Footnote-1851379
-Ref: Explaining gettext-Footnote-2851564
-Node: Programmer i18n851729
-Ref: Programmer i18n-Footnote-1856678
-Node: Translator i18n856727
-Node: String Extraction857521
-Ref: String Extraction-Footnote-1858653
-Node: Printf Ordering858739
-Ref: Printf Ordering-Footnote-1861525
-Node: I18N Portability861589
-Ref: I18N Portability-Footnote-1864045
-Node: I18N Example864108
-Ref: I18N Example-Footnote-1866914
-Node: Gawk I18N866987
-Node: I18N Summary867632
-Node: Debugger868973
-Node: Debugging869996
-Node: Debugging Concepts870437
-Node: Debugging Terms872246
-Node: Awk Debugging874821
-Node: Sample Debugging Session875727
-Node: Debugger Invocation876261
-Node: Finding The Bug877647
-Node: List of Debugger Commands884125
-Node: Breakpoint Control885458
-Node: Debugger Execution Control889152
-Node: Viewing And Changing Data892514
-Node: Execution Stack895888
-Node: Debugger Info897525
-Node: Miscellaneous Debugger Commands901596
-Node: Readline Support906684
-Node: Limitations907580
-Node: Debugging Summary909689
-Node: Arbitrary Precision Arithmetic910968
-Node: Computer Arithmetic912453
-Ref: table-numeric-ranges916044
-Ref: Computer Arithmetic-Footnote-1916766
-Node: Math Definitions916823
-Ref: table-ieee-formats920137
-Ref: Math Definitions-Footnote-1920740
-Node: MPFR features920845
-Node: FP Math Caution922562
-Ref: FP Math Caution-Footnote-1923634
-Node: Inexactness of computations924003
-Node: Inexact representation924963
-Node: Comparing FP Values926323
-Node: Errors accumulate927405
-Node: Getting Accuracy928838
-Node: Try To Round931548
-Node: Setting precision932447
-Ref: table-predefined-precision-strings933144
-Node: Setting the rounding mode934974
-Ref: table-gawk-rounding-modes935348
-Ref: Setting the rounding mode-Footnote-1938756
-Node: Arbitrary Precision Integers938935
-Ref: Arbitrary Precision Integers-Footnote-1942110
-Node: Checking for MPFR942259
-Node: POSIX Floating Point Problems943556
-Ref: POSIX Floating Point Problems-Footnote-1947427
-Node: Floating point summary947465
-Node: Dynamic Extensions949655
-Node: Extension Intro951208
-Node: Plugin License952474
-Node: Extension Mechanism Outline953271
-Ref: figure-load-extension953710
-Ref: figure-register-new-function955275
-Ref: figure-call-new-function956367
-Node: Extension API Description958429
-Node: Extension API Functions Introduction960071
-Node: General Data Types965611
-Ref: General Data Types-Footnote-1973732
-Node: Memory Allocation Functions974031
-Ref: Memory Allocation Functions-Footnote-1978239
-Node: Constructor Functions978338
-Node: Registration Functions981924
-Node: Extension Functions982609
-Node: Exit Callback Functions987824
-Node: Extension Version String989074
-Node: Input Parsers989737
-Node: Output Wrappers1002458
-Node: Two-way processors1006970
-Node: Printing Messages1009235
-Ref: Printing Messages-Footnote-11010406
-Node: Updating ERRNO1010559
-Node: Requesting Values1011298
-Ref: table-value-types-returned1012035
-Node: Accessing Parameters1012971
-Node: Symbol Table Access1014206
-Node: Symbol table by name1014718
-Node: Symbol table by cookie1016507
-Ref: Symbol table by cookie-Footnote-11020692
-Node: Cached values1020756
-Ref: Cached values-Footnote-11024292
-Node: Array Manipulation1024445
-Ref: Array Manipulation-Footnote-11025536
-Node: Array Data Types1025573
-Ref: Array Data Types-Footnote-11028231
-Node: Array Functions1028323
-Node: Flattening Arrays1032821
-Node: Creating Arrays1039797
-Node: Redirection API1044566
-Node: Extension API Variables1047399
-Node: Extension Versioning1048110
-Ref: gawk-api-version1048539
-Node: Extension GMP/MPFR Versioning1050267
-Node: Extension API Informational Variables1051895
-Node: Extension API Boilerplate1052968
-Node: Changes from API V11056942
-Node: Finding Extensions1057602
-Node: Extension Example1058161
-Node: Internal File Description1058959
-Node: Internal File Ops1063039
-Ref: Internal File Ops-Footnote-11074439
-Node: Using Internal File Ops1074579
-Ref: Using Internal File Ops-Footnote-11076962
-Node: Extension Samples1077236
-Node: Extension Sample File Functions1078765
-Node: Extension Sample Fnmatch1086414
-Node: Extension Sample Fork1087901
-Node: Extension Sample Inplace1089119
-Node: Extension Sample Ord1092336
-Node: Extension Sample Readdir1093172
-Ref: table-readdir-file-types1094061
-Node: Extension Sample Revout1094866
-Node: Extension Sample Rev2way1095455
-Node: Extension Sample Read write array1096195
-Node: Extension Sample Readfile1098137
-Node: Extension Sample Time1099232
-Node: Extension Sample API Tests1100580
-Node: gawkextlib1101072
-Node: Extension summary1103523
-Node: Extension Exercises1107225
-Node: Language History1108723
-Node: V7/SVR3.11110379
-Node: SVR41112531
-Node: POSIX1113965
-Node: BTL1115344
-Node: POSIX/GNU1116073
-Node: Feature History1121851
-Node: Common Extensions1137710
-Node: Ranges and Locales1138993
-Ref: Ranges and Locales-Footnote-11143609
-Ref: Ranges and Locales-Footnote-21143636
-Ref: Ranges and Locales-Footnote-31143871
-Node: Contributors1144092
-Node: History summary1150037
-Node: Installation1151417
-Node: Gawk Distribution1152361
-Node: Getting1152845
-Node: Extracting1153808
-Node: Distribution contents1155446
-Node: Unix Installation1161926
-Node: Quick Installation1162608
-Node: Shell Startup Files1165022
-Node: Additional Configuration Options1166111
-Node: Configuration Philosophy1168100
-Node: Non-Unix Installation1170469
-Node: PC Installation1170929
-Node: PC Binary Installation1171767
-Node: PC Compiling1172202
-Node: PC Using1173319
-Node: Cygwin1176364
-Node: MSYS1177134
-Node: VMS Installation1177635
-Node: VMS Compilation1178426
-Ref: VMS Compilation-Footnote-11179655
-Node: VMS Dynamic Extensions1179713
-Node: VMS Installation Details1181398
-Node: VMS Running1183651
-Node: VMS GNV1187930
-Node: VMS Old Gawk1188665
-Node: Bugs1189136
-Node: Bug address1189799
-Node: Usenet1192591
-Node: Maintainers1193368
-Node: Other Versions1194629
-Node: Installation summary1201213
-Node: Notes1202415
-Node: Compatibility Mode1203280
-Node: Additions1204062
-Node: Accessing The Source1204987
-Node: Adding Code1206423
-Node: New Ports1212642
-Node: Derived Files1217130
-Ref: Derived Files-Footnote-11222776
-Ref: Derived Files-Footnote-21222811
-Ref: Derived Files-Footnote-31223409
-Node: Future Extensions1223523
-Node: Implementation Limitations1224181
-Node: Extension Design1225364
-Node: Old Extension Problems1226518
-Ref: Old Extension Problems-Footnote-11228036
-Node: Extension New Mechanism Goals1228093
-Ref: Extension New Mechanism Goals-Footnote-11231457
-Node: Extension Other Design Decisions1231646
-Node: Extension Future Growth1233759
-Node: Old Extension Mechanism1234595
-Node: Notes summary1236358
-Node: Basic Concepts1237540
-Node: Basic High Level1238221
-Ref: figure-general-flow1238503
-Ref: figure-process-flow1239188
-Ref: Basic High Level-Footnote-11242489
-Node: Basic Data Typing1242674
-Node: Glossary1246002
-Node: Copying1277949
-Node: GNU Free Documentation License1315488
-Node: Index1340606
+Node: Multiple Line244703
+Ref: Multiple Line-Footnote-1250587
+Node: Getline250766
+Node: Plain Getline253235
+Node: Getline/Variable255876
+Node: Getline/File257027
+Node: Getline/Variable/File258415
+Ref: Getline/Variable/File-Footnote-1260020
+Node: Getline/Pipe260108
+Node: Getline/Variable/Pipe262815
+Node: Getline/Coprocess263950
+Node: Getline/Variable/Coprocess265217
+Node: Getline Notes265959
+Node: Getline Summary268756
+Ref: table-getline-variants269180
+Node: Read Timeout269928
+Ref: Read Timeout-Footnote-1273834
+Node: Retrying Input273892
+Node: Command-line directories275091
+Node: Input Summary275997
+Node: Input Exercises279169
+Node: Printing279897
+Node: Print281731
+Node: Print Examples283188
+Node: Output Separators285968
+Node: OFMT287985
+Node: Printf289341
+Node: Basic Printf290126
+Node: Control Letters291700
+Node: Format Modifiers295688
+Node: Printf Examples301703
+Node: Redirection304189
+Node: Special FD311030
+Ref: Special FD-Footnote-1314198
+Node: Special Files314272
+Node: Other Inherited Files314889
+Node: Special Network315890
+Node: Special Caveats316750
+Node: Close Files And Pipes317699
+Ref: table-close-pipe-return-values324606
+Ref: Close Files And Pipes-Footnote-1325389
+Ref: Close Files And Pipes-Footnote-2325537
+Node: Nonfatal325689
+Node: Output Summary328014
+Node: Output Exercises329236
+Node: Expressions329915
+Node: Values331103
+Node: Constants331781
+Node: Scalar Constants332472
+Ref: Scalar Constants-Footnote-1333336
+Node: Nondecimal-numbers333586
+Node: Regexp Constants336587
+Node: Using Constant Regexps337113
+Node: Standard Regexp Constants337735
+Node: Strong Regexp Constants340923
+Node: Variables343881
+Node: Using Variables344538
+Node: Assignment Options346448
+Node: Conversion348321
+Node: Strings And Numbers348845
+Ref: Strings And Numbers-Footnote-1351908
+Node: Locale influences conversions352017
+Ref: table-locale-affects354775
+Node: All Operators355393
+Node: Arithmetic Ops356022
+Node: Concatenation358528
+Ref: Concatenation-Footnote-1361375
+Node: Assignment Ops361482
+Ref: table-assign-ops366473
+Node: Increment Ops367786
+Node: Truth Values and Conditions371246
+Node: Truth Values372320
+Node: Typing and Comparison373368
+Node: Variable Typing374188
+Ref: Variable Typing-Footnote-1380651
+Ref: Variable Typing-Footnote-2380723
+Node: Comparison Operators380800
+Ref: table-relational-ops381219
+Node: POSIX String Comparison384714
+Ref: POSIX String Comparison-Footnote-1386409
+Ref: POSIX String Comparison-Footnote-2386548
+Node: Boolean Ops386632
+Ref: Boolean Ops-Footnote-1391114
+Node: Conditional Exp391206
+Node: Function Calls392942
+Node: Precedence396819
+Node: Locales400478
+Node: Expressions Summary402110
+Node: Patterns and Actions404683
+Node: Pattern Overview405803
+Node: Regexp Patterns407480
+Node: Expression Patterns408022
+Node: Ranges411803
+Node: BEGIN/END414911
+Node: Using BEGIN/END415672
+Ref: Using BEGIN/END-Footnote-1418408
+Node: I/O And BEGIN/END418514
+Node: BEGINFILE/ENDFILE420828
+Node: Empty423741
+Node: Using Shell Variables424058
+Node: Action Overview426332
+Node: Statements428657
+Node: If Statement430505
+Node: While Statement432000
+Node: Do Statement434028
+Node: For Statement435176
+Node: Switch Statement438334
+Node: Break Statement440720
+Node: Continue Statement442812
+Node: Next Statement444639
+Node: Nextfile Statement447022
+Node: Exit Statement449674
+Node: Built-in Variables452077
+Node: User-modified453210
+Node: Auto-set460977
+Ref: Auto-set-Footnote-1477314
+Ref: Auto-set-Footnote-2477520
+Node: ARGC and ARGV477576
+Node: Pattern Action Summary481789
+Node: Arrays484219
+Node: Array Basics485548
+Node: Array Intro486392
+Ref: figure-array-elements488367
+Ref: Array Intro-Footnote-1491071
+Node: Reference to Elements491199
+Node: Assigning Elements493663
+Node: Array Example494154
+Node: Scanning an Array495913
+Node: Controlling Scanning498935
+Ref: Controlling Scanning-Footnote-1504334
+Node: Numeric Array Subscripts504650
+Node: Uninitialized Subscripts506834
+Node: Delete508453
+Ref: Delete-Footnote-1511205
+Node: Multidimensional511262
+Node: Multiscanning514357
+Node: Arrays of Arrays515948
+Node: Arrays Summary520715
+Node: Functions522808
+Node: Built-in523846
+Node: Calling Built-in524927
+Node: Numeric Functions526923
+Ref: Numeric Functions-Footnote-1530951
+Ref: Numeric Functions-Footnote-2531308
+Ref: Numeric Functions-Footnote-3531356
+Node: String Functions531628
+Ref: String Functions-Footnote-1555286
+Ref: String Functions-Footnote-2555414
+Ref: String Functions-Footnote-3555662
+Node: Gory Details555749
+Ref: table-sub-escapes557540
+Ref: table-sub-proposed559059
+Ref: table-posix-sub560422
+Ref: table-gensub-escapes561963
+Ref: Gory Details-Footnote-1562786
+Node: I/O Functions562940
+Ref: table-system-return-values569522
+Ref: I/O Functions-Footnote-1571502
+Ref: I/O Functions-Footnote-2571650
+Node: Time Functions571770
+Ref: Time Functions-Footnote-1582441
+Ref: Time Functions-Footnote-2582509
+Ref: Time Functions-Footnote-3582667
+Ref: Time Functions-Footnote-4582778
+Ref: Time Functions-Footnote-5582890
+Ref: Time Functions-Footnote-6583117
+Node: Bitwise Functions583383
+Ref: table-bitwise-ops583977
+Ref: Bitwise Functions-Footnote-1590010
+Ref: Bitwise Functions-Footnote-2590183
+Node: Type Functions590374
+Node: I18N Functions593291
+Node: User-defined594942
+Node: Definition Syntax595747
+Ref: Definition Syntax-Footnote-1601434
+Node: Function Example601505
+Ref: Function Example-Footnote-1604427
+Node: Function Caveats604449
+Node: Calling A Function604967
+Node: Variable Scope605925
+Node: Pass By Value/Reference608919
+Node: Return Statement612418
+Node: Dynamic Typing615397
+Node: Indirect Calls616327
+Ref: Indirect Calls-Footnote-1626579
+Node: Functions Summary626707
+Node: Library Functions629412
+Ref: Library Functions-Footnote-1633019
+Ref: Library Functions-Footnote-2633162
+Node: Library Names633333
+Ref: Library Names-Footnote-1636793
+Ref: Library Names-Footnote-2637016
+Node: General Functions637102
+Node: Strtonum Function638205
+Node: Assert Function641227
+Node: Round Function644553
+Node: Cliff Random Function646094
+Node: Ordinal Functions647110
+Ref: Ordinal Functions-Footnote-1650173
+Ref: Ordinal Functions-Footnote-2650425
+Node: Join Function650635
+Ref: Join Function-Footnote-1652405
+Node: Getlocaltime Function652605
+Node: Readfile Function656347
+Node: Shell Quoting658319
+Node: Data File Management659720
+Node: Filetrans Function660352
+Node: Rewind Function664448
+Node: File Checking666358
+Ref: File Checking-Footnote-1667692
+Node: Empty Files667893
+Node: Ignoring Assigns669872
+Node: Getopt Function671422
+Ref: Getopt Function-Footnote-1682891
+Node: Passwd Functions683091
+Ref: Passwd Functions-Footnote-1691930
+Node: Group Functions692018
+Ref: Group Functions-Footnote-1699916
+Node: Walking Arrays700123
+Node: Library Functions Summary703131
+Node: Library Exercises704537
+Node: Sample Programs705002
+Node: Running Examples705772
+Node: Clones706500
+Node: Cut Program707724
+Node: Egrep Program717653
+Ref: Egrep Program-Footnote-1725165
+Node: Id Program725275
+Node: Split Program728955
+Ref: Split Program-Footnote-1732414
+Node: Tee Program732543
+Node: Uniq Program735333
+Node: Wc Program742759
+Ref: Wc Program-Footnote-1747014
+Node: Miscellaneous Programs747108
+Node: Dupword Program748321
+Node: Alarm Program750351
+Node: Translate Program755206
+Ref: Translate Program-Footnote-1759771
+Node: Labels Program760041
+Ref: Labels Program-Footnote-1763392
+Node: Word Sorting763476
+Node: History Sorting767548
+Node: Extract Program769383
+Node: Simple Sed776913
+Node: Igawk Program779987
+Ref: Igawk Program-Footnote-1794318
+Ref: Igawk Program-Footnote-2794520
+Ref: Igawk Program-Footnote-3794642
+Node: Anagram Program794757
+Node: Signature Program797819
+Node: Programs Summary799066
+Node: Programs Exercises800280
+Ref: Programs Exercises-Footnote-1804409
+Node: Advanced Features804500
+Node: Nondecimal Data806490
+Node: Array Sorting808081
+Node: Controlling Array Traversal808781
+Ref: Controlling Array Traversal-Footnote-1817148
+Node: Array Sorting Functions817266
+Ref: Array Sorting Functions-Footnote-1822357
+Node: Two-way I/O822553
+Ref: Two-way I/O-Footnote-1829105
+Ref: Two-way I/O-Footnote-2829292
+Node: TCP/IP Networking829374
+Node: Profiling832492
+Ref: Profiling-Footnote-1841164
+Node: Advanced Features Summary841487
+Node: Internationalization843331
+Node: I18N and L10N844811
+Node: Explaining gettext845498
+Ref: Explaining gettext-Footnote-1851390
+Ref: Explaining gettext-Footnote-2851575
+Node: Programmer i18n851740
+Ref: Programmer i18n-Footnote-1856689
+Node: Translator i18n856738
+Node: String Extraction857532
+Ref: String Extraction-Footnote-1858664
+Node: Printf Ordering858750
+Ref: Printf Ordering-Footnote-1861536
+Node: I18N Portability861600
+Ref: I18N Portability-Footnote-1864056
+Node: I18N Example864119
+Ref: I18N Example-Footnote-1866925
+Node: Gawk I18N866998
+Node: I18N Summary867643
+Node: Debugger868984
+Node: Debugging870007
+Node: Debugging Concepts870448
+Node: Debugging Terms872257
+Node: Awk Debugging874832
+Node: Sample Debugging Session875738
+Node: Debugger Invocation876272
+Node: Finding The Bug877658
+Node: List of Debugger Commands884136
+Node: Breakpoint Control885469
+Node: Debugger Execution Control889163
+Node: Viewing And Changing Data892525
+Node: Execution Stack895899
+Node: Debugger Info897536
+Node: Miscellaneous Debugger Commands901607
+Node: Readline Support906695
+Node: Limitations907591
+Node: Debugging Summary909700
+Node: Arbitrary Precision Arithmetic910979
+Node: Computer Arithmetic912464
+Ref: table-numeric-ranges916055
+Ref: Computer Arithmetic-Footnote-1916777
+Node: Math Definitions916834
+Ref: table-ieee-formats920150
+Ref: Math Definitions-Footnote-1920753
+Node: MPFR features920858
+Node: FP Math Caution922576
+Ref: FP Math Caution-Footnote-1923648
+Node: Inexactness of computations924017
+Node: Inexact representation924977
+Node: Comparing FP Values926337
+Node: Errors accumulate927419
+Node: Getting Accuracy928852
+Node: Try To Round931562
+Node: Setting precision932461
+Ref: table-predefined-precision-strings933158
+Node: Setting the rounding mode934988
+Ref: table-gawk-rounding-modes935362
+Ref: Setting the rounding mode-Footnote-1938770
+Node: Arbitrary Precision Integers938949
+Ref: Arbitrary Precision Integers-Footnote-1942124
+Node: Checking for MPFR942273
+Node: POSIX Floating Point Problems943570
+Ref: POSIX Floating Point Problems-Footnote-1947441
+Node: Floating point summary947479
+Node: Dynamic Extensions949669
+Node: Extension Intro951222
+Node: Plugin License952488
+Node: Extension Mechanism Outline953285
+Ref: figure-load-extension953724
+Ref: figure-register-new-function955289
+Ref: figure-call-new-function956381
+Node: Extension API Description958443
+Node: Extension API Functions Introduction960085
+Node: General Data Types965625
+Ref: General Data Types-Footnote-1973746
+Node: Memory Allocation Functions974045
+Ref: Memory Allocation Functions-Footnote-1978253
+Node: Constructor Functions978352
+Node: Registration Functions981938
+Node: Extension Functions982623
+Node: Exit Callback Functions987838
+Node: Extension Version String989088
+Node: Input Parsers989751
+Node: Output Wrappers1002472
+Node: Two-way processors1006984
+Node: Printing Messages1009249
+Ref: Printing Messages-Footnote-11010420
+Node: Updating ERRNO1010573
+Node: Requesting Values1011312
+Ref: table-value-types-returned1012049
+Node: Accessing Parameters1012985
+Node: Symbol Table Access1014220
+Node: Symbol table by name1014732
+Node: Symbol table by cookie1016521
+Ref: Symbol table by cookie-Footnote-11020706
+Node: Cached values1020770
+Ref: Cached values-Footnote-11024306
+Node: Array Manipulation1024459
+Ref: Array Manipulation-Footnote-11025550
+Node: Array Data Types1025587
+Ref: Array Data Types-Footnote-11028245
+Node: Array Functions1028337
+Node: Flattening Arrays1032835
+Node: Creating Arrays1039811
+Node: Redirection API1044580
+Node: Extension API Variables1047413
+Node: Extension Versioning1048124
+Ref: gawk-api-version1048553
+Node: Extension GMP/MPFR Versioning1050281
+Node: Extension API Informational Variables1051909
+Node: Extension API Boilerplate1052982
+Node: Changes from API V11056956
+Node: Finding Extensions1057616
+Node: Extension Example1058175
+Node: Internal File Description1058973
+Node: Internal File Ops1063053
+Ref: Internal File Ops-Footnote-11074453
+Node: Using Internal File Ops1074593
+Ref: Using Internal File Ops-Footnote-11076976
+Node: Extension Samples1077250
+Node: Extension Sample File Functions1078779
+Node: Extension Sample Fnmatch1086428
+Node: Extension Sample Fork1087915
+Node: Extension Sample Inplace1089133
+Node: Extension Sample Ord1092350
+Node: Extension Sample Readdir1093186
+Ref: table-readdir-file-types1094075
+Node: Extension Sample Revout1094880
+Node: Extension Sample Rev2way1095469
+Node: Extension Sample Read write array1096209
+Node: Extension Sample Readfile1098151
+Node: Extension Sample Time1099246
+Node: Extension Sample API Tests1100594
+Node: gawkextlib1101086
+Node: Extension summary1103542
+Node: Extension Exercises1107244
+Node: Language History1108742
+Node: V7/SVR3.11110398
+Node: SVR41112550
+Node: POSIX1113984
+Node: BTL1115364
+Node: POSIX/GNU1116093
+Node: Feature History1121871
+Node: Common Extensions1137730
+Node: Ranges and Locales1139013
+Ref: Ranges and Locales-Footnote-11143629
+Ref: Ranges and Locales-Footnote-21143656
+Ref: Ranges and Locales-Footnote-31143891
+Node: Contributors1144112
+Node: History summary1150057
+Node: Installation1151437
+Node: Gawk Distribution1152381
+Node: Getting1152865
+Node: Extracting1153828
+Node: Distribution contents1155466
+Node: Unix Installation1161946
+Node: Quick Installation1162628
+Node: Shell Startup Files1165042
+Node: Additional Configuration Options1166131
+Node: Configuration Philosophy1168120
+Node: Non-Unix Installation1170489
+Node: PC Installation1170949
+Node: PC Binary Installation1171787
+Node: PC Compiling1172222
+Node: PC Using1173339
+Node: Cygwin1176384
+Node: MSYS1177154
+Node: VMS Installation1177655
+Node: VMS Compilation1178446
+Ref: VMS Compilation-Footnote-11179675
+Node: VMS Dynamic Extensions1179733
+Node: VMS Installation Details1181418
+Node: VMS Running1183671
+Node: VMS GNV1187950
+Node: VMS Old Gawk1188685
+Node: Bugs1189156
+Node: Bug address1189819
+Node: Usenet1192611
+Node: Maintainers1193388
+Node: Other Versions1194649
+Node: Installation summary1201240
+Node: Notes1202442
+Node: Compatibility Mode1203307
+Node: Additions1204089
+Node: Accessing The Source1205014
+Node: Adding Code1206451
+Node: New Ports1212670
+Node: Derived Files1217158
+Ref: Derived Files-Footnote-11222804
+Ref: Derived Files-Footnote-21222839
+Ref: Derived Files-Footnote-31223437
+Node: Future Extensions1223551
+Node: Implementation Limitations1224209
+Node: Extension Design1225392
+Node: Old Extension Problems1226546
+Ref: Old Extension Problems-Footnote-11228064
+Node: Extension New Mechanism Goals1228121
+Ref: Extension New Mechanism Goals-Footnote-11231485
+Node: Extension Other Design Decisions1231674
+Node: Extension Future Growth1233787
+Node: Old Extension Mechanism1234623
+Node: Notes summary1236386
+Node: Basic Concepts1237568
+Node: Basic High Level1238249
+Ref: figure-general-flow1238531
+Ref: figure-process-flow1239216
+Ref: Basic High Level-Footnote-11242517
+Node: Basic Data Typing1242702
+Node: Glossary1246030
+Node: Copying1277980
+Node: GNU Free Documentation License1315519
+Node: Index1340637
End Tag Table
diff --git a/doc/gawk.texi b/doc/gawk.texi
index 74610f9..2f7a11b 100644
--- a/doc/gawk.texi
+++ b/doc/gawk.texi
@@ -2104,7 +2104,7 @@ contact me if you are interested.
@ignore
Other links:
-http://www.reddit.com/r/linux/comments/dtect/composing_music_in_awk/
+https://www.reddit.com/r/linux/comments/dtect/composing_music_in_awk/
@end ignore
@end ifclear
@@ -7887,7 +7887,7 @@ There are times when fixed-width data may be followed by
additional data
that has no fixed length. Such data may or may not be present, but if
it is, it should be possible to get at it from an @command{awk} program.
-Starting with version 4.2, in order to provide a way to say ``anything
+Starting with @value{PVERSION} 4.2, in order to provide a way to say ``anything
else in the record after the defined fields,'' @command{gawk}
allows you to add a final @samp{*} character to the value of
@code{FIELDWIDTHS}. There can only be one such character, and it must
@@ -7912,7 +7912,7 @@ should be based on the contents of @code{FIELDWIDTHS}?
Or, what happens
if there is more data than expected?
For many years, what happens in these cases was not well defined. Starting
-with version 4.2, the rules are as follows:
+with @value{PVERSION} 4.2, the rules are as follows:
@table @asis
@item Enough data for some fields
@@ -8094,7 +8094,7 @@ if (PROCINFO["FS"] == "FS")
else if (PROCINFO["FS"] == "FIELDWIDTHS")
@var{fixed-width field splitting} @dots{}
else if (PROCINFO["FS"] == "FPAT")
- @var{content-based field splitting}
+ @var{content-based field splitting} @dots{}
else
@var{API input parser field splitting} @dots{} @ii{(advanced feature)}
@end example
@@ -14069,7 +14069,7 @@ If you have written extensions that modify the record
handling (by
inserting an ``input parser''; @pxref{Input Parsers}), you can invoke
them at this point, before @command{gawk} has started processing the file.
(This is a @emph{very} advanced feature, currently used only by the
address@hidden://sourceforge.net/projects/gawkextlib, @code{gawkextlib}
project}.)
address@hidden://sourceforge.net/projects/gawkextlib, @code{gawkextlib}
project}.)
@end itemize
The @code{ENDFILE} rule is called when @command{gawk} has finished processing
@@ -21035,7 +21035,7 @@ think at first. The C and C++ languages provide
``function pointers,'' which
are a mechanism for calling a function chosen at runtime. One of the most
well-known uses of this ability is the C @code{qsort()} function, which sorts
an array using the famous ``quicksort'' algorithm
-(see @uref{http://en.wikipedia.org/wiki/Quicksort, the Wikipedia article}
+(see @uref{https://en.wikipedia.org/wiki/Quicksort, the Wikipedia article}
for more information). To use this function, you supply a pointer to a
comparison
function. This mechanism allows you to sort arbitrary data in an arbitrary
fashion.
@@ -27212,7 +27212,7 @@ in sorted order:
# - split() with "" as separator splits out individual characters
# - asort() and asorti() functions
#
-# See http://savannah.gnu.org/projects/gawk.
+# See https://savannah.gnu.org/projects/gawk.
#
# Arnold Robbins
# arnold@@skeeve.com
@@ -27375,7 +27375,7 @@ certainty through the space-time continuum.
# From "13.3.11 And Now For Something Completely Different"
#
https://www.gnu.org/software/gawk/manual/html_node/Signature-Program.html#Signature-Program
-# Copyright © 2008 Davide Brini
+# Copyright @copyright{} 2008 Davide Brini
# Copying and distribution of the code published in this page, with
# or without modification, are permitted in any medium without
@@ -31437,13 +31437,13 @@ to the power of the exponent. For example, in
@code{1.2345e67},
the significand is @code{1.2345}.
@item Stability
-From @uref{http://en.wikipedia.org/wiki/Numerical_stability,
+From @uref{https://en.wikipedia.org/wiki/Numerical_stability,
the Wikipedia article on numerical stability}:
``Calculations that can be proven not to magnify approximation errors
are called @dfn{numerically stable}.''
@end table
-See @uref{http://en.wikipedia.org/wiki/Accuracy_and_precision,
+See @uref{https://en.wikipedia.org/wiki/Accuracy_and_precision,
the Wikipedia article on accuracy and precision} for more information
on some of those terms.
@@ -31480,7 +31480,7 @@ By default, @command{gawk} uses the double-precision
floating-point values
supplied by the hardware of the system it runs on. However, if it was
compiled to do so, and the @option{-M} command-line option is supplied,
@command{gawk} uses the @uref{http://www.mpfr.org,
-GNU MPFR} and @uref{http://gmplib.org, GNU MP} (GMP) libraries for
+GNU MPFR} and @uref{https://gmplib.org, GNU MP} (GMP) libraries for
arbitrary-precision arithmetic on numbers. You can see if MPFR support
is available like so:
@@ -32051,12 +32051,12 @@ You can simulate the @code{intdiv0()} function in
standard @command{awk}
using this user-defined function:
@example
address@hidden file eg/lib/intdiv.awk
address@hidden file eg/lib/intdiv0.awk
# intdiv0 --- do integer division
@c endfile
@ignore
address@hidden file eg/lib/intdiv.awk
address@hidden file eg/lib/intdiv0.awk
#
# Arnold Robbins, arnold@@skeeve.com, Public Domain
# July, 2014
@@ -32070,7 +32070,7 @@ using this user-defined function:
@c endfile
@end ignore
address@hidden file eg/lib/intdiv.awk
address@hidden file eg/lib/intdiv0.awk
function intdiv0(numerator, denominator, result)
@{
split("", result)
@@ -32086,7 +32086,7 @@ function intdiv0(numerator, denominator, result)
@end example
The following example program, contributed by Katie Wasserman,
-uses @code{intdiv()} to
+uses @code{intdiv0()} to
compute the digits of @value{PI} to as many places as you
choose to set:
@@ -32111,7 +32111,7 @@ BEGIN @{
for (m = digits * 4; m > 0; --m) @{
d = m * 2 + 1
x = pi * m
- intdiv(x, d, result)
+ intdiv0(x, d, result)
pi = result["quotient"]
pi = pi + two
@}
@@ -33154,14 +33154,14 @@ pointed to by @code{result}.
@itemx make_number_mpz(void *mpz, awk_value_t *result);
This function creates a GMP number value in @code{result}.
The @code{mpz} must be from a call to @code{get_mpz_ptr()}
-(and thus be or real underlying type @code{mpz_ptr}).
+(and thus be of real underlying type @code{mpz_ptr}).
@command{gawk} takes ownership of this memory.
@item static inline awk_value_t *
@itemx make_number_mpfr(void *mpfr, awk_value_t *result);
This function creates an MPFR number value in @code{result}.
The @code{mpfr} must be from a call to @code{get_mpfr_ptr()}.
-(and thus be or real underlying type @code{mpfr_ptr})
+(and thus be of real underlying type @code{mpfr_ptr})
@command{gawk} takes ownership of this memory.
@item static inline awk_value_t *
@@ -36671,7 +36671,7 @@ for more information.
@cindex extensions, where to find
@cindex @code{gawkextlib} project
-The @uref{http://sourceforge.net/projects/gawkextlib/, @code{gawkextlib}}
+The @uref{https://sourceforge.net/projects/gawkextlib/, @code{gawkextlib}}
project provides a number of @command{gawk} extensions, including one for
processing XML files. This is the evolution of the original @command{xgawk}
(XML @command{gawk}) project.
@@ -36703,13 +36703,13 @@ Redis extension
Select extension
@item
-XML parser extension, using the @uref{http://expat.sourceforge.net, Expat}
+XML parser extension, using the @uref{https://expat.sourceforge.net, Expat}
XML parsing library
@end itemize
@cindex @command{git} utility
You can check out the code for the @code{gawkextlib} project
-using the @uref{http://git-scm.com, Git} distributed source
+using the @uref{https://git-scm.com, Git} distributed source
code control system. The command is as follows:
@example
@@ -36717,7 +36717,7 @@ git clone git://git.code.sf.net/p/gawkextlib/code
gawkextlib-code
@end example
@cindex Expat XML parser library
-You will need to have the @uref{http://expat.sourceforge.net, Expat}
+You will need to have the @uref{https://expat.sourceforge.net, Expat}
XML parser library installed in order to build and use the XML extension.
In addition, you must have the GNU Autotools installed
@@ -36737,7 +36737,7 @@ make && make check @ii{Build and
check that all is OK}
make install @ii{Install gawk}
@end example
-Next, go to @url{http://sourceforge.net/projects/gawkextlib/files} to
+Next, go to @url{https://sourceforge.net/projects/gawkextlib/files} to
download @code{gawkextlib} and any extensions that you would like to build.
The @file{README} file at that site explains how to build the code. If you
installed @command{gawk} in a non-standard location, you will need to
@@ -37194,7 +37194,7 @@ The ability to delete all of an array at once with
@samp{delete @var{array}}
not permitted by the POSIX standard.
The 2008 POSIX standard can be found online at
address@hidden://www.opengroup.org/onlinepubs/9699919799/}.
address@hidden://pubs.opengroup.org/onlinepubs/9699919799/}.
@node BTL
@@ -40143,7 +40143,7 @@ git clone git://github.com/onetrueawk/awk bwkawk
@end example
@noindent
-This command creates a copy of the @uref{http://git-scm.com, Git}
+This command creates a copy of the @uref{https://git-scm.com, Git}
repository in a directory named @file{bwkawk}. If you leave that argument
off the @command{git} command line, the repository copy is created in a
directory named @file{awk}.
@@ -40203,7 +40203,7 @@ It also has a number of extensions.
The @command{awk} translator is released under the GPL, and the library
is under the LGPL.
-To get @command{awka}, go to @url{http://sourceforge.net/projects/awka}.
+To get @command{awka}, go to @url{https://sourceforge.net/projects/awka}.
@c You can reach Andrew Sumner at @email{andrew@@zbcom.net}.
@c andrewsumner@@yahoo.net
@@ -40232,7 +40232,7 @@ applications within a single executable. It is aimed at
embedded systems.
It includes a full implementation of POSIX @command{awk}. When building
it, be careful not to do @samp{make install} as it will overwrite
copies of other applications in your @file{/usr/local/bin}. For more
-information, see the @uref{http://busybox.net, project's home page}.
+information, see the @uref{https://busybox.net, project's home page}.
@cindex OpenSolaris
@cindex Solaris, POSIX-compliant @command{awk}
@@ -40251,7 +40251,7 @@ has not been done, at least to our knowledge.
@cindex source code, Illumos @command{awk}
The source code used to be available from the OpenSolaris website.
However, that project was ended and the website shut down. Fortunately, the
address@hidden://wiki.illumos.org/display/illumos/illumos+Home, Illumos project}
address@hidden://wiki.illumos.org/display/illumos/illumos+Home, Illumos project}
makes this implementation available. You can view the files one at a time from
@uref{https://github.com/joyent/illumos-joyent/blob/master/usr/src/cmd/awk_xpg4}.
@@ -40263,7 +40263,7 @@ This is an interpreter for @command{awk} written in
Java. It claims
to be a full interpreter, although because it uses Java facilities
for I/O and for regexp matching, the language it supports is different
from POSIX @command{awk}. More information is available on the
address@hidden://jawk.sourceforge.net, project's home page}.
address@hidden://jawk.sourceforge.net, project's home page}.
@item Libmawk
@cindex libmawk
@@ -40284,7 +40284,7 @@ modified version of BWK @command{awk}, described
earlier.)
@cindex QSE @command{awk}
@cindex source code, QSE @command{awk}
This is an embeddable @command{awk} interpreter. For more information,
-see @uref{http://code.google.com/p/qse/} and @uref{http://awk.info/?tools/qse}.
+see @uref{https://code.google.com/p/qse/} and
@uref{http://awk.info/?tools/qse}.
@item @command{QTawk}
@cindex QuikTrim Awk
@@ -40302,7 +40302,7 @@ since approximately 2014.
@item Other versions
See also the ``Versions and implementations'' section of the
address@hidden://en.wikipedia.org/wiki/Awk_language#Versions_and_implementations,
address@hidden://en.wikipedia.org/wiki/Awk_language#Versions_and_implementations,
Wikipedia article} on @command{awk} for information on additional versions.
@end table
@@ -40428,7 +40428,7 @@ However, if you want to modify @command{gawk} and
contribute back your
changes, you will probably wish to work with the development version.
To do so, you will need to access the @command{gawk} source code
repository. The code is maintained using the
address@hidden://git-scm.com, Git distributed version control system}.
address@hidden://git-scm.com, Git distributed version control system}.
You will need to install it if your system doesn't have it.
Once you have done so, use the command:
@@ -42158,7 +42158,7 @@ programming languages, such as C and C++.
In the computer arena, important standards like those for C, C++, and POSIX
become both American national and ISO international standards simultaneously.
This @value{DOCUMENT} refers to Standard C as ``ISO C'' throughout.
-See @uref{http://www.iso.org/iso/home/about.htm, the ISO website} for more
+See @uref{https://www.iso.org/iso/home/about.htm, the ISO website} for more
information about the name of the organization and its language-independent
three-letter acronym.
@@ -42300,7 +42300,7 @@ the Unix heritage of these standards. The main
standard of interest for
@command{awk} users is
@cite{IEEE Standard for Information Technology, Standard 1003.1-2008}.
The 2008 POSIX standard can be found online at
address@hidden://www.opengroup.org/onlinepubs/9699919799/}.
address@hidden://pubs.opengroup.org/onlinepubs/9699919799/}.
@item Precedence
The order in which operations are performed when operators are used
@@ -42479,7 +42479,7 @@ the world and later moved into commercial environments
as a software
development system and network server system. There are many commercial
versions of Unix, as well as several work-alike systems whose source code
is freely available (such as GNU/Linux, @uref{http://www.netbsd.org, NetBSD},
address@hidden://www.freebsd.org, FreeBSD}, and @uref{http://www.openbsd.org,
OpenBSD}).
address@hidden://www.freebsd.org, FreeBSD}, and @uref{http://www.openbsd.org,
OpenBSD}).
@item UTC
The accepted abbreviation for ``Universal Coordinated Time.''
diff --git a/doc/gawktexi.in b/doc/gawktexi.in
index 7a73558..3dd93c3 100644
--- a/doc/gawktexi.in
+++ b/doc/gawktexi.in
@@ -2071,7 +2071,7 @@ contact me if you are interested.
@ignore
Other links:
-http://www.reddit.com/r/linux/comments/dtect/composing_music_in_awk/
+https://www.reddit.com/r/linux/comments/dtect/composing_music_in_awk/
@end ignore
@end ifclear
@@ -7487,7 +7487,7 @@ There are times when fixed-width data may be followed by
additional data
that has no fixed length. Such data may or may not be present, but if
it is, it should be possible to get at it from an @command{awk} program.
-Starting with version 4.2, in order to provide a way to say ``anything
+Starting with @value{PVERSION} 4.2, in order to provide a way to say ``anything
else in the record after the defined fields,'' @command{gawk}
allows you to add a final @samp{*} character to the value of
@code{FIELDWIDTHS}. There can only be one such character, and it must
@@ -7512,7 +7512,7 @@ should be based on the contents of @code{FIELDWIDTHS}?
Or, what happens
if there is more data than expected?
For many years, what happens in these cases was not well defined. Starting
-with version 4.2, the rules are as follows:
+with @value{PVERSION} 4.2, the rules are as follows:
@table @asis
@item Enough data for some fields
@@ -7694,7 +7694,7 @@ if (PROCINFO["FS"] == "FS")
else if (PROCINFO["FS"] == "FIELDWIDTHS")
@var{fixed-width field splitting} @dots{}
else if (PROCINFO["FS"] == "FPAT")
- @var{content-based field splitting}
+ @var{content-based field splitting} @dots{}
else
@var{API input parser field splitting} @dots{} @ii{(advanced feature)}
@end example
@@ -13388,7 +13388,7 @@ If you have written extensions that modify the record
handling (by
inserting an ``input parser''; @pxref{Input Parsers}), you can invoke
them at this point, before @command{gawk} has started processing the file.
(This is a @emph{very} advanced feature, currently used only by the
address@hidden://sourceforge.net/projects/gawkextlib, @code{gawkextlib}
project}.)
address@hidden://sourceforge.net/projects/gawkextlib, @code{gawkextlib}
project}.)
@end itemize
The @code{ENDFILE} rule is called when @command{gawk} has finished processing
@@ -20079,7 +20079,7 @@ think at first. The C and C++ languages provide
``function pointers,'' which
are a mechanism for calling a function chosen at runtime. One of the most
well-known uses of this ability is the C @code{qsort()} function, which sorts
an array using the famous ``quicksort'' algorithm
-(see @uref{http://en.wikipedia.org/wiki/Quicksort, the Wikipedia article}
+(see @uref{https://en.wikipedia.org/wiki/Quicksort, the Wikipedia article}
for more information). To use this function, you supply a pointer to a
comparison
function. This mechanism allows you to sort arbitrary data in an arbitrary
fashion.
@@ -26226,7 +26226,7 @@ in sorted order:
# - split() with "" as separator splits out individual characters
# - asort() and asorti() functions
#
-# See http://savannah.gnu.org/projects/gawk.
+# See https://savannah.gnu.org/projects/gawk.
#
# Arnold Robbins
# arnold@@skeeve.com
@@ -26389,7 +26389,7 @@ certainty through the space-time continuum.
# From "13.3.11 And Now For Something Completely Different"
#
https://www.gnu.org/software/gawk/manual/html_node/Signature-Program.html#Signature-Program
-# Copyright © 2008 Davide Brini
+# Copyright @copyright{} 2008 Davide Brini
# Copying and distribution of the code published in this page, with
# or without modification, are permitted in any medium without
@@ -30451,13 +30451,13 @@ to the power of the exponent. For example, in
@code{1.2345e67},
the significand is @code{1.2345}.
@item Stability
-From @uref{http://en.wikipedia.org/wiki/Numerical_stability,
+From @uref{https://en.wikipedia.org/wiki/Numerical_stability,
the Wikipedia article on numerical stability}:
``Calculations that can be proven not to magnify approximation errors
are called @dfn{numerically stable}.''
@end table
-See @uref{http://en.wikipedia.org/wiki/Accuracy_and_precision,
+See @uref{https://en.wikipedia.org/wiki/Accuracy_and_precision,
the Wikipedia article on accuracy and precision} for more information
on some of those terms.
@@ -30494,7 +30494,7 @@ By default, @command{gawk} uses the double-precision
floating-point values
supplied by the hardware of the system it runs on. However, if it was
compiled to do so, and the @option{-M} command-line option is supplied,
@command{gawk} uses the @uref{http://www.mpfr.org,
-GNU MPFR} and @uref{http://gmplib.org, GNU MP} (GMP) libraries for
+GNU MPFR} and @uref{https://gmplib.org, GNU MP} (GMP) libraries for
arbitrary-precision arithmetic on numbers. You can see if MPFR support
is available like so:
@@ -31065,12 +31065,12 @@ You can simulate the @code{intdiv0()} function in
standard @command{awk}
using this user-defined function:
@example
address@hidden file eg/lib/intdiv.awk
address@hidden file eg/lib/intdiv0.awk
# intdiv0 --- do integer division
@c endfile
@ignore
address@hidden file eg/lib/intdiv.awk
address@hidden file eg/lib/intdiv0.awk
#
# Arnold Robbins, arnold@@skeeve.com, Public Domain
# July, 2014
@@ -31084,7 +31084,7 @@ using this user-defined function:
@c endfile
@end ignore
address@hidden file eg/lib/intdiv.awk
address@hidden file eg/lib/intdiv0.awk
function intdiv0(numerator, denominator, result)
@{
split("", result)
@@ -31100,7 +31100,7 @@ function intdiv0(numerator, denominator, result)
@end example
The following example program, contributed by Katie Wasserman,
-uses @code{intdiv()} to
+uses @code{intdiv0()} to
compute the digits of @value{PI} to as many places as you
choose to set:
@@ -31125,7 +31125,7 @@ BEGIN @{
for (m = digits * 4; m > 0; --m) @{
d = m * 2 + 1
x = pi * m
- intdiv(x, d, result)
+ intdiv0(x, d, result)
pi = result["quotient"]
pi = pi + two
@}
@@ -32168,14 +32168,14 @@ pointed to by @code{result}.
@itemx make_number_mpz(void *mpz, awk_value_t *result);
This function creates a GMP number value in @code{result}.
The @code{mpz} must be from a call to @code{get_mpz_ptr()}
-(and thus be or real underlying type @code{mpz_ptr}).
+(and thus be of real underlying type @code{mpz_ptr}).
@command{gawk} takes ownership of this memory.
@item static inline awk_value_t *
@itemx make_number_mpfr(void *mpfr, awk_value_t *result);
This function creates an MPFR number value in @code{result}.
The @code{mpfr} must be from a call to @code{get_mpfr_ptr()}.
-(and thus be or real underlying type @code{mpfr_ptr})
+(and thus be of real underlying type @code{mpfr_ptr})
@command{gawk} takes ownership of this memory.
@item static inline awk_value_t *
@@ -35685,7 +35685,7 @@ for more information.
@cindex extensions, where to find
@cindex @code{gawkextlib} project
-The @uref{http://sourceforge.net/projects/gawkextlib/, @code{gawkextlib}}
+The @uref{https://sourceforge.net/projects/gawkextlib/, @code{gawkextlib}}
project provides a number of @command{gawk} extensions, including one for
processing XML files. This is the evolution of the original @command{xgawk}
(XML @command{gawk}) project.
@@ -35717,13 +35717,13 @@ Redis extension
Select extension
@item
-XML parser extension, using the @uref{http://expat.sourceforge.net, Expat}
+XML parser extension, using the @uref{https://expat.sourceforge.net, Expat}
XML parsing library
@end itemize
@cindex @command{git} utility
You can check out the code for the @code{gawkextlib} project
-using the @uref{http://git-scm.com, Git} distributed source
+using the @uref{https://git-scm.com, Git} distributed source
code control system. The command is as follows:
@example
@@ -35731,7 +35731,7 @@ git clone git://git.code.sf.net/p/gawkextlib/code
gawkextlib-code
@end example
@cindex Expat XML parser library
-You will need to have the @uref{http://expat.sourceforge.net, Expat}
+You will need to have the @uref{https://expat.sourceforge.net, Expat}
XML parser library installed in order to build and use the XML extension.
In addition, you must have the GNU Autotools installed
@@ -35751,7 +35751,7 @@ make && make check @ii{Build and
check that all is OK}
make install @ii{Install gawk}
@end example
-Next, go to @url{http://sourceforge.net/projects/gawkextlib/files} to
+Next, go to @url{https://sourceforge.net/projects/gawkextlib/files} to
download @code{gawkextlib} and any extensions that you would like to build.
The @file{README} file at that site explains how to build the code. If you
installed @command{gawk} in a non-standard location, you will need to
@@ -36208,7 +36208,7 @@ The ability to delete all of an array at once with
@samp{delete @var{array}}
not permitted by the POSIX standard.
The 2008 POSIX standard can be found online at
address@hidden://www.opengroup.org/onlinepubs/9699919799/}.
address@hidden://pubs.opengroup.org/onlinepubs/9699919799/}.
@node BTL
@@ -39157,7 +39157,7 @@ git clone git://github.com/onetrueawk/awk bwkawk
@end example
@noindent
-This command creates a copy of the @uref{http://git-scm.com, Git}
+This command creates a copy of the @uref{https://git-scm.com, Git}
repository in a directory named @file{bwkawk}. If you leave that argument
off the @command{git} command line, the repository copy is created in a
directory named @file{awk}.
@@ -39217,7 +39217,7 @@ It also has a number of extensions.
The @command{awk} translator is released under the GPL, and the library
is under the LGPL.
-To get @command{awka}, go to @url{http://sourceforge.net/projects/awka}.
+To get @command{awka}, go to @url{https://sourceforge.net/projects/awka}.
@c You can reach Andrew Sumner at @email{andrew@@zbcom.net}.
@c andrewsumner@@yahoo.net
@@ -39246,7 +39246,7 @@ applications within a single executable. It is aimed at
embedded systems.
It includes a full implementation of POSIX @command{awk}. When building
it, be careful not to do @samp{make install} as it will overwrite
copies of other applications in your @file{/usr/local/bin}. For more
-information, see the @uref{http://busybox.net, project's home page}.
+information, see the @uref{https://busybox.net, project's home page}.
@cindex OpenSolaris
@cindex Solaris, POSIX-compliant @command{awk}
@@ -39265,7 +39265,7 @@ has not been done, at least to our knowledge.
@cindex source code, Illumos @command{awk}
The source code used to be available from the OpenSolaris website.
However, that project was ended and the website shut down. Fortunately, the
address@hidden://wiki.illumos.org/display/illumos/illumos+Home, Illumos project}
address@hidden://wiki.illumos.org/display/illumos/illumos+Home, Illumos project}
makes this implementation available. You can view the files one at a time from
@uref{https://github.com/joyent/illumos-joyent/blob/master/usr/src/cmd/awk_xpg4}.
@@ -39277,7 +39277,7 @@ This is an interpreter for @command{awk} written in
Java. It claims
to be a full interpreter, although because it uses Java facilities
for I/O and for regexp matching, the language it supports is different
from POSIX @command{awk}. More information is available on the
address@hidden://jawk.sourceforge.net, project's home page}.
address@hidden://jawk.sourceforge.net, project's home page}.
@item Libmawk
@cindex libmawk
@@ -39298,7 +39298,7 @@ modified version of BWK @command{awk}, described
earlier.)
@cindex QSE @command{awk}
@cindex source code, QSE @command{awk}
This is an embeddable @command{awk} interpreter. For more information,
-see @uref{http://code.google.com/p/qse/} and @uref{http://awk.info/?tools/qse}.
+see @uref{https://code.google.com/p/qse/} and
@uref{http://awk.info/?tools/qse}.
@item @command{QTawk}
@cindex QuikTrim Awk
@@ -39316,7 +39316,7 @@ since approximately 2014.
@item Other versions
See also the ``Versions and implementations'' section of the
address@hidden://en.wikipedia.org/wiki/Awk_language#Versions_and_implementations,
address@hidden://en.wikipedia.org/wiki/Awk_language#Versions_and_implementations,
Wikipedia article} on @command{awk} for information on additional versions.
@end table
@@ -39442,7 +39442,7 @@ However, if you want to modify @command{gawk} and
contribute back your
changes, you will probably wish to work with the development version.
To do so, you will need to access the @command{gawk} source code
repository. The code is maintained using the
address@hidden://git-scm.com, Git distributed version control system}.
address@hidden://git-scm.com, Git distributed version control system}.
You will need to install it if your system doesn't have it.
Once you have done so, use the command:
@@ -41172,7 +41172,7 @@ programming languages, such as C and C++.
In the computer arena, important standards like those for C, C++, and POSIX
become both American national and ISO international standards simultaneously.
This @value{DOCUMENT} refers to Standard C as ``ISO C'' throughout.
-See @uref{http://www.iso.org/iso/home/about.htm, the ISO website} for more
+See @uref{https://www.iso.org/iso/home/about.htm, the ISO website} for more
information about the name of the organization and its language-independent
three-letter acronym.
@@ -41314,7 +41314,7 @@ the Unix heritage of these standards. The main
standard of interest for
@command{awk} users is
@cite{IEEE Standard for Information Technology, Standard 1003.1-2008}.
The 2008 POSIX standard can be found online at
address@hidden://www.opengroup.org/onlinepubs/9699919799/}.
address@hidden://pubs.opengroup.org/onlinepubs/9699919799/}.
@item Precedence
The order in which operations are performed when operators are used
@@ -41493,7 +41493,7 @@ the world and later moved into commercial environments
as a software
development system and network server system. There are many commercial
versions of Unix, as well as several work-alike systems whose source code
is freely available (such as GNU/Linux, @uref{http://www.netbsd.org, NetBSD},
address@hidden://www.freebsd.org, FreeBSD}, and @uref{http://www.openbsd.org,
OpenBSD}).
address@hidden://www.freebsd.org, FreeBSD}, and @uref{http://www.openbsd.org,
OpenBSD}).
@item UTC
The accepted abbreviation for ``Universal Coordinated Time.''
http://git.sv.gnu.org/cgit/gawk.git/commit/?id=dff88ee5892900fe96fa0601f1489c6207bbbaf6
commit dff88ee5892900fe96fa0601f1489c6207bbbaf6
Author: Arnold D. Robbins <address@hidden>
Date: Sun Oct 1 22:04:08 2017 +0300
Update man page. Small updates to refcard and manual.
diff --git a/doc/ChangeLog b/doc/ChangeLog
index 30eac63..acf6395 100644
--- a/doc/ChangeLog
+++ b/doc/ChangeLog
@@ -1,3 +1,9 @@
+2017-10-01 Arnold D. Robbins <address@hidden>
+
+ * awkcard.in: One more small change.
+ * gawk.1: Brought up to date and polished a bit.
+ * gawktexi.in: Some small additional fixes.
+
2017-09-29 Arnold D. Robbins <address@hidden>
* awkcard.in: Finish changes (we hope) for next release.
diff --git a/doc/awkcard.in b/doc/awkcard.in
index da1081b..31e37a8 100644
--- a/doc/awkcard.in
+++ b/doc/awkcard.in
@@ -1327,8 +1327,8 @@ The next input record comes from the
next input file. Update \*(FCFILENAME\fP \*(CBand
\*(FCARGIND\fP\*(CD, reset \*(FCFNR\fP to 1,
and start over with the first
-pattern. Upon end
-of input data, execute any \*(FCEND\fP rule(s).
+pattern. At end
+of file, execute any \*(CB\*(FCENDFILE\fP and\*(CD \*(FCEND\fP rule(s).
.in -.2i
.sp .5
.fi
diff --git a/doc/gawk.1 b/doc/gawk.1
index d161888..c55ceca 100644
--- a/doc/gawk.1
+++ b/doc/gawk.1
@@ -13,7 +13,7 @@
. if \w'\(rq' .ds rq "\(rq
. \}
.\}
-.TH GAWK 1 "Aug 13 2017" "Free Software Foundation" "Utility Commands"
+.TH GAWK 1 "Oct 01 2017" "Free Software Foundation" "Utility Commands"
.SH NAME
gawk \- pattern scanning and processing language
.SH SYNOPSIS
@@ -36,7 +36,7 @@ file .\|.\|.
.I Gawk
is the \*(GN Project's implementation of the \*(AK programming language.
It conforms to the definition of the language in
-the \*(PX 1003.1 Standard.
+the \*(PX 1003.1 standard.
This version in turn is based on the description in
.IR "The AWK Programming Language" ,
by Aho, Kernighan, and Weinberger.
@@ -44,14 +44,14 @@ by Aho, Kernighan, and Weinberger.
provides the additional features found in the current version
of Brian Kernighan's
.I awk
-and a number of \*(GN-specific extensions.
+and numerous \*(GN-specific extensions.
.PP
The command line consists of options to
.I gawk
itself, the \*(AK program text (if not supplied via the
.B \-f
or
-.B \-\^\-file
+.B \-i
options), and values to be made
available in the
.B ARGC
@@ -249,7 +249,7 @@ as \*(AK program source code.
This option allows the easy intermixing of library functions (used via the
.B \-f
and
-.B \-\^\-file
+.B \-i
options) with source code entered on the command line.
It is intended primarily for medium to large \*(AK programs used
in shell scripts.
@@ -316,7 +316,9 @@ the main program source.
.TP
.PD
.BI \-\^\-load " lib"
-Load a shared library
+Load a
+.I gawk
+extension from the shared library
.IR lib .
This searches for the library using the
.B AWKLIBPATH
@@ -351,6 +353,9 @@ Force arbitrary precision arithmetic on numbers. This
option has
no effect if
.I gawk
is not compiled to use the GNU MPFR and MP libraries.
+(In such a case,
+.I gawk
+issues a warning.)
.TP
.PD 0
.B \-n
@@ -365,7 +370,7 @@ Recognize octal and hexadecimal values in input data.
.TP
.PD
.B \-\^\-use\-lc\-numeric
-This forces
+Force
.I gawk
to use the locale's decimal point character when parsing input data.
Although the POSIX standard requires this behavior, and
@@ -506,7 +511,7 @@ default optimizations upon the internal representation of
the program.
.TP
.PD
.BI \-\^\-sandbox
-Runs
+Run
.I gawk
in sandbox mode, disabling the
.B system()
@@ -516,8 +521,8 @@ output redirection with
.BR print " and " printf ,
and loading dynamic extensions.
Command execution (through pipelines) is also disabled.
-This effectively blocks a script from accessing local resources
-(except for the files specified on the command line).
+This effectively blocks a script from accessing local resources,
+except for the files specified on the command line.
.TP
.PD 0
.B \-t
@@ -558,14 +563,18 @@ In normal operation, as long as program text has been
supplied, unknown
options are passed on to the \*(AK program in the
.B ARGV
array for processing. This is particularly useful for running \*(AK
-programs via the \*(lq#!\*(rq executable interpreter mechanism.
+programs via the
+.B #!
+executable interpreter mechanism.
.PP
For \*(PX compatibility, the
.B \-W
option may be used, followed by the name of a long option.
.SH AWK PROGRAM EXECUTION
.PP
-An \*(AK program consists of a sequence of pattern-action statements
+An \*(AK program consists of a sequence of
+optional directives,
+pattern-action statements,
and optional function definitions.
.RS
.PP
@@ -609,7 +618,7 @@ option.
.PP
Lines beginning with
.B @load
-may be used to load shared libraries into your program. This is equivalent
+may be used to load extension functions into your program. This is equivalent
to using the
.B \-l
option.
@@ -659,7 +668,7 @@ and then proceeds to read
each file named in the
.B ARGV
array (up to
-.BR ARGV[ARGC] ).
+.BR ARGV[ARGC\-1] ).
If there are no files named on the command line,
.I gawk
reads the standard input.
@@ -739,7 +748,11 @@ treating directories on the command line as a fatal error.
\*(AK variables are dynamic; they come into existence when they are
first used. Their values are either floating-point numbers or strings,
or both,
-depending upon how they are used. \*(AK also has one dimensional
+depending upon how they are used.
+Additionally,
+.I gawk
+allows variables to have regular-expression type.
+\*(AK also has one dimensional
arrays; arrays with multiple dimensions may be simulated.
.I Gawk
provides true arrays of arrays; see
@@ -764,7 +777,7 @@ value is used for separating records.
If
.B RS
is set to the null string, then records are separated by
-blank lines.
+empty lines.
When
.B RS
is set to the null string, the newline character always acts as
@@ -948,7 +961,7 @@ or during a
.BR close() ,
then
.B ERRNO
-will contain
+is set to
a string describing the error.
The value is subject to translation in non-English locales.
If the string in
@@ -1114,6 +1127,12 @@ operator to test for these elements.
The following elements are guaranteed to be available:
.RS
.TP \w'\fBPROCINFO["strftime"]\fR'u+1n
+\fBPROCINFO["argv"]\fP
+The command line arguments as received by
+.I gawk
+at the C-language level.
+The subscripts start from zero.
+.TP
\fBPROCINFO["egid"]\fP
The value of the
.IR getegid (2)
@@ -1268,7 +1287,7 @@ If an I/O error that may be retried occurs when reading
data from
.IR input ,
and this array entry exists, then
.B getline
-will return \-2 instead of following the default behavior of returning \-1
+returns \-2 instead of following the default behavior of returning \-1
and configuring
.IR input
to return no further data.
@@ -1377,7 +1396,7 @@ print foo # prints 4
.in -5m
.sp
The
-.B isarray()
+.B typeof()
function may be used to test if an element in
.B SYMTAB
is an array.
@@ -1412,7 +1431,7 @@ x[i, j, k] = "hello, world\en"
.ft R
.RE
.PP
-assigns the string \fB"hello, world\en"\fR to the element of the array
+assigns the string \fB"hello,\ world\en"\fR to the element of the array
.B x
which is indexed by the string \fB"A\e034B\e034C"\fR. All arrays in \*(AK
are associative, i.e., indexed by string values.
@@ -1482,15 +1501,16 @@ statement.
.SS Variable Typing And Conversion
.PP
Variables and fields
-may be (floating point) numbers, or strings, or both. How the
+may be (floating point) numbers, or strings, or both.
+They may also be regular expressions. How the
value of a variable is interpreted depends upon its context. If used in
a numeric expression, it will be treated as a number; if used as a string
it will be treated as a string.
.PP
-To force a variable to be treated as a number, add 0 to it; to force it
+To force a variable to be treated as a number, add zero to it; to force it
to be treated as a string, concatenate it with the null string.
.PP
-Uninitialized variables have the numeric value 0 and the string value ""
+Uninitialized variables have the numeric value zero and the string value ""
(the null, or empty, string).
.PP
When a string must be converted to a number, the conversion is accomplished
@@ -1620,17 +1640,35 @@ E.g., \fB"\e033"\fR is the \s-1ASCII\s+1 \s-1ESC\s+1
(escape) character.
The literal character
.IR c\^ .
.PP
-The escape sequences may also be used inside constant regular expressions
-(e.g.,
-.B "/[\ \et\ef\en\er\ev]/"
-matches whitespace characters).
-.PP
In compatibility mode, the characters represented by octal and
hexadecimal escape sequences are treated literally when used in
regular expression constants. Thus,
.B /a\e52b/
is equivalent to
.BR /a\e*b/ .
+.SS "Regexp Constants"
+A regular expression constant is a sequence of characters enclosed
+between forward slashes (like
+.BR /value/ ).
+Regular expression matching is described more fully below; see
+.BR "Regular Expressions" .
+.PP
+The escape sequences described earlier may also be used inside
+constant regular expressions
+(e.g.,
+.B "/[\ \et\ef\en\er\ev]/"
+matches whitespace characters).
+.TP
+.I Gawk
+provides
+.I "strongly typed"
+regular expression constants. These are written with a leading
+.B @
+symbol (like so:
+.BR @/value/ ).
+Such constants may be assigned to scalars (variables, array elements)
+and passed to user-defined functions. Variables that have been so
+assigned have regular expression type.
.SH PATTERNS AND ACTIONS
\*(AK is a line-oriented language. The pattern comes first, and then the
action. Action statements are enclosed in
@@ -1638,8 +1676,8 @@ action. Action statements are enclosed in
and
.BR } .
Either the pattern may be missing, or the action may be missing, but,
-of course, not both. If the pattern is missing, the action is
-executed for every single record of input.
+of course, not both. If the pattern is missing, the action
+executes for every single record of input.
A missing action is equivalent to
.RS
.PP
@@ -1652,7 +1690,7 @@ Comments begin with the
.B #
character, and continue until the
end of the line.
-Blank lines may be used to separate statements.
+Empty lines may be used to separate statements.
Normally, a statement ends with a newline, however, this is not the
case for lines ending in
a comma,
@@ -1731,7 +1769,7 @@ Inside the
.B BEGINFILE
rule, the value of
.B ERRNO
-will be the empty string if the file was opened successfully.
+is the empty string if the file was opened successfully.
Otherwise, there is some problem with the file and the code should
use
.B nextfile
@@ -2114,7 +2152,7 @@ Piped I/O for
and
.BR printf .
.TP
-.B "< > <= >= != =="
+.B "< > <= >= == !="
The regular relational operators.
.TP
.B "~ !~"
@@ -2193,11 +2231,11 @@ The input/output statements are as follows:
.PP
.TP "\w'\fBprintf \fIfmt, expr-list\fR'u+1n"
\fBclose(\fIfile \fR[\fB, \fIhow\fR]\fB)\fR
-Close file, pipe or co-process.
+Close file, pipe or coprocess.
The optional
.I how
should only be used when closing one end of a
-two-way pipe to a co-process.
+two-way pipe to a coprocess.
It must be a string value, either
\fB"to"\fR or \fB"from"\fR.
.TP
@@ -2247,14 +2285,14 @@ as above, and
\fIcommand\fB |& getline \fR[\fIvar\fR]
Run
.I command
-as a co-process
+as a coprocess
piping the output either into
.B $0
or
.IR var ,
as above, and
.BR RT .
-Co-processes are a
+Coprocesses are a
.I gawk
extension.
.RI ( command
@@ -2285,6 +2323,8 @@ is reset to 1, and processing starts over with the first
pattern in the
Upon reaching the end of the input data,
.I gawk
executes any
+.B ENDFILE
+and
.B END
rule(s).
.TP
@@ -2321,7 +2361,7 @@ Execute the command
.IR cmd-line ,
and return the exit status.
(This may not be available on non-\*(PX systems.)
-See the manual for the full details on the exit status.
+See \*(EP for the full details on the exit status.
.TP
\&\fBfflush(\fR[\fIfile\^\fR]\fB)\fR
Flush any buffers associated with the open output file or pipe
@@ -2345,19 +2385,19 @@ Appends output to the
Writes on a pipe.
.TP
.BI "print .\|.\|. |&" " command"
-Sends data to a co-process or socket.
+Sends data to a coprocess or socket.
(See also the subsection
.BR "Special File Names" ,
below.)
.PP
The
.B getline
-command returns 1 on success, 0 on end of file, and \-1 on an error.
+command returns 1 on success, zero on end of file, and \-1 on an error.
If the
.IR errno (3)
value indicates that the I/O operation may be retried,
and \fBPROCINFO["\fIinput\^\fP", "RETRY"]\fR
-is set, then \-2 will be returned instead of \-1, and further calls to
+is set, then \-2 is returned instead of \-1, and further calls to
.B getline
may be attempted.
Upon an error,
@@ -2366,7 +2406,7 @@ is set to a string describing the problem.
.PP
.BR NOTE :
Failure in opening a two-way socket results in a non-fatal error being
-returned to the calling function. If using a pipe, co-process, or socket to
+returned to the calling function. If using a pipe, coprocess, or socket to
.BR getline ,
or from
.B print
@@ -2377,7 +2417,7 @@ within a loop, you
use
.B close()
to create new instances of the command or socket.
-\*(AK does not automatically close pipes, sockets, or co-processes when
+\*(AK does not automatically close pipes, sockets, or coprocesses when
they return EOF.
.SS The \fIprintf\fP\^ Statement
.PP
@@ -2525,7 +2565,7 @@ trailing zeros are not removed from the result.
.B 0
A leading
.B 0
-(zero) acts as a flag, that indicates output should be
+(zero) acts as a flag, indicating that output should be
padded with zeroes instead of spaces.
This applies only to the numeric output formats.
This flag only has an effect when the field width is wider than the
@@ -2652,7 +2692,7 @@ print "You blew it!" | "cat 1>&2"
.PP
The following special filenames may be used with the
.B |&
-co-process operator for creating TCP/IP network connections:
+coprocess operator for creating TCP/IP network connections:
.TP
.PD 0
.BI /inet/tcp/ lport / rhost / rport
@@ -2737,7 +2777,7 @@ The natural logarithm function.
.B rand()
Return a random number
.IR N ,
-between 0 and 1,
+between zero and one,
such that 0 \(<= \fIN\fP < 1.
.TP
.BI sin( expr )
@@ -2817,9 +2857,9 @@ The original values are lost; thus provide
a second array if you wish to preserve the original.
The purpose of the optional string
.I how
-is the same as described in
-.B asort()
-above.
+is the same as described
+previously for
+.BR asort() .
.TP
\fBgensub(\fIr\fB, \fIs\fB, \fIh \fR[\fB, \fIt\fR]\fB)\fR
Search the target string
@@ -2889,8 +2929,7 @@ to get a literal
.BR & .
(This must be typed as \fB"\e\e&"\fP;
see \*(EP
-for a fuller discussion of the rules for
-.BR & 's
+for a fuller discussion of the rules for ampersands
and backslashes in the replacement text of
.BR sub() ,
.BR gsub() ,
@@ -2902,7 +2941,7 @@ Return the index of the string
.I t
in the string
.IR s ,
-or 0 if
+or zero if
.I t
is not present.
(This implies that character indices start at one.)
@@ -2926,7 +2965,7 @@ Return the position in
.I s
where the regular expression
.I r
-occurs, or 0 if
+occurs, or zero if
.I r
is not present, and set the values of
.B RSTART
@@ -2949,7 +2988,7 @@ are filled with the portions of
that match the corresponding parenthesized
subexpression in
.IR r .
-The 0'th element of
+The zero'th element of
.I a
contains the portion
of
@@ -3071,6 +3110,7 @@ Otherwise, assume it is a decimal number.
Just like
.BR gsub() ,
but replace only the first matching substring.
+Return either zero or one.
.TP
\fBsubstr(\fIs\fB, \fIi \fR[\fB, \fIn\fR]\fB)\fR
Return the at most
@@ -3143,7 +3183,9 @@ If
is present and is non-zero or non-null, the time is assumed to be in
the UTC time zone; otherwise, the
time is assumed to be in the local time zone.
-If the daylight saving flag is positive,
+If the
+.I DST
+daylight saving flag is positive,
the time is assumed to be daylight saving time;
if zero, the time is assumed to be standard time;
and if negative (the default),
@@ -3240,6 +3282,7 @@ The following function is for use with multidimensional
arrays.
Return true if
.I x
is an array, false otherwise.
+This function is deprecated.
.PP
You can tell the type of any variable or array element with the
following function:
@@ -3343,7 +3386,7 @@ Functions in \*(AK are defined as follows:
\fBfunction \fIname\fB(\fIparameter list\fB) { \fIstatements \fB}\fR
.RE
.PP
-Functions are executed when they are called from within expressions
+Functions execute when they are called from within expressions
in either patterns or actions. Actual parameters supplied in the function
call are used to instantiate the formal parameters declared in the function.
Arrays are passed by reference, other variables are passed by value.
@@ -3576,7 +3619,7 @@ in
.I gawk
also returns its current seed.
.PP
-Other new features are:
+Other features are:
The use of multiple
.B \-f
options (from MKS
@@ -3672,16 +3715,12 @@ mechanism).
The
.B \ex
escape sequence.
-(Disabled with
-.BR \-\^\-posix .)
.TP
\(bu
The ability to continue lines after
.B ?
and
.BR : .
-(Disabled with
-.BR \-\^\-posix .)
.TP
\(bu
Octal and hexadecimal constants in AWK programs.
@@ -3693,6 +3732,8 @@ The
.BR BINMODE ,
.BR ERRNO ,
.BR LINT ,
+.BR PREC ,
+.BR ROUNDMODE ,
.B RT
and
.B TEXTDOMAIN
@@ -3715,8 +3756,11 @@ variable and field splitting based on field values.
.TP
\(bu
The
+.BR FUNCTAB ,
+.BR SYMTAB ,
+and
.B PROCINFO
-array is not available.
+arrays are not available.
.\" I/O stuff
.TP
\(bu
@@ -3730,7 +3774,7 @@ The special file names available for I/O redirection are
not recognized.
\(bu
The
.B |&
-operator for creating co-processes.
+operator for creating coprocesses.
.TP
\(bu
The
@@ -3810,6 +3854,12 @@ functions.
.TP
\(bu
Localizable strings.
+.TP
+\(bu
+Non-fatal I/O.
+.TP
+\(bu
+Retryable I/O.
.PP
The \*(AK book does not define the return value of the
.B close()
@@ -3823,7 +3873,7 @@ or
when closing an output file or pipe, respectively.
It returns the process's exit status when closing an input pipe.
The return value is \-1 if the named file, pipe
-or co-process was not opened with a redirection.
+or coprocess was not opened with a redirection.
.PP
When
.I gawk
@@ -3883,7 +3933,9 @@ searches when looking for files named via the
.B \-i
and
.B \-\^\-include
-options. If the initial search fails, the path is searched again after
+options, and the
+.B @include
+directive. If the initial search fails, the path is searched again after
appending
.B \&.awk
to the filename.
@@ -4047,6 +4099,8 @@ it remains only for backwards compatibility.
.IR getgid (2),
.IR getegid (2),
.IR getgroups (2),
+.IR printf (3),
+.IR strftime (3),
.IR usleep (3)
.PP
.IR "The AWK Programming Language" ,
@@ -4058,7 +4112,12 @@ Edition 4.2, shipped with the
.I gawk
source.
The current version of this document is available online at
-.BR http://www.gnu.org/software/gawk/manual .
+.BR https://www.gnu.org/software/gawk/manual .
+.PP
+The GNU
+.B gettext
+documentation, available online at
+.BR https://www.gnu.org/software/gettext .
.SH EXAMPLES
.nf
Print and sort the login names of all users:
diff --git a/doc/gawk.info b/doc/gawk.info
index 5b757a5..e19e7b6 100644
--- a/doc/gawk.info
+++ b/doc/gawk.info
@@ -10997,6 +10997,19 @@ they are not special:
Set a timeout for reading from input redirection INPUT_NAME.
*Note Read Timeout:: for more information.
+ 'PROCINFO["IINPUT_NAME", "RETRY"]'
+ If an I/O error that may be retried occurs when reading data
+ from INPUT_NAME, and this array entry exists, then 'getline'
+ returns -2 instead of following the default behavior of
+ returning -1 and configuring INPUT_NAME to return no further
+ data. An I/O error that may be retried is one where 'errno'
+ has the value 'EAGAIN', 'EWOULDBLOCK', 'EINTR', or
+ 'ETIMEDOUT'. This may be useful in conjunction with
+ '\fBPROCINFO["INPUT_NAME", "READ_TIMEOUT"]' or situations
+ where a file descriptor has been configured to behave in a
+ non-blocking fashion. *Note Retrying Input:: for more
+ information.
+
'PROCINFO["sorted_in"]'
If this element exists in 'PROCINFO', its value controls the
order in which array indices will be processed by 'for (INDX
@@ -13455,9 +13468,9 @@ enclosed in square brackets ([ ]):
preceding year 1 and year -1 preceding year 0. If UTC-FLAG is
present and is either nonzero or non-null, the time is assumed to
be in the UTC time zone; otherwise, the time is assumed to be in
- the local time zone. If the daylight-savings flag is positive, the
- time is assumed to be daylight savings time; if zero, the time is
- assumed to be standard time; and if negative (the default),
+ the local time zone. If the DST daylight-savings flag is positive,
+ the time is assumed to be daylight savings time; if zero, the time
+ is assumed to be standard time; and if negative (the default),
'mktime()' attempts to determine whether daylight savings time is
in effect for the specified time.
@@ -29486,16 +29499,25 @@ B.4.1 Submitting Bug Reports
----------------------------
Before reporting a bug, make sure you have really found a genuine bug.
-Carefully reread the documentation and see if it says you can do what
-you're trying to do. If it's not clear whether you should be able to do
-something or not, report that too; it's a bug in the documentation!
-
- Before reporting a bug or trying to fix it yourself, try to isolate
-it to the smallest possible 'awk' program and input data file that
-reproduce the problem. Then send us the program and data file, some
-idea of what kind of Unix system you're using, the compiler you used to
-compile 'gawk', and the exact results 'gawk' gave you. Also say what
-you expected to occur; this helps us decide whether the problem is
+First, verify that you have the latest version of 'gawk'. Many bugs
+(usually subtle ones) are fixed at each release, and if yours is out of
+date, the problem may already have been solved.
+
+ Second, please see if setting the environment variable 'LC_ALL' to
+'LC_ALL=C' causes things to behave as you expect. If so, it's a locale
+issue, and may or may not really be a bug.
+
+ Third, carefully reread the documentation and see if it says you can
+do what you're trying to do. If it's not clear whether you should be
+able to do something or not, report that too; it's a bug in the
+documentation!
+
+ Finally, before reporting a bug or trying to fix it yourself, try to
+isolate it to the smallest possible 'awk' program and input data file
+that reproduce the problem. Then send us the program and data file,
+some idea of what kind of Unix system you're using, the compiler you
+used to compile 'gawk', and the exact results 'gawk' gave you. Also say
+what you expected to occur; this helps us decide whether the problem is
really in the documentation.
Make sure to include the version number of 'gawk' you are using. You
@@ -33415,8 +33437,8 @@ Index
* buffers, flushing <1>: I/O Functions. (line 166)
* buffers, operators for: GNU Regexp Operators.
(line 51)
-* bug reports, email address, address@hidden: Bug address. (line 22)
-* address@hidden bug reporting address: Bug address. (line 22)
+* bug reports, email address, address@hidden: Bug address. (line 31)
+* address@hidden bug reporting address: Bug address. (line 31)
* built-in functions: Functions. (line 6)
* built-in functions, evaluation order: Calling Built-in. (line 30)
* BusyBox Awk: Other Versions. (line 92)
@@ -33629,7 +33651,7 @@ Index
* dark corner, field separators: Full Line Fields. (line 22)
* dark corner, FILENAME variable: Getline Notes. (line 19)
* dark corner, FILENAME variable <1>: Auto-set. (line 108)
-* dark corner, FNR/NR variables: Auto-set. (line 377)
+* dark corner, FNR/NR variables: Auto-set. (line 390)
* dark corner, format-control characters: Control Letters. (line 18)
* dark corner, format-control characters <1>: Control Letters.
(line 93)
@@ -33863,7 +33885,7 @@ Index
(line 6)
* differences in awk and gawk, RS/RT variables: gawk split records.
(line 58)
-* differences in awk and gawk, RT variable: Auto-set. (line 315)
+* differences in awk and gawk, RT variable: Auto-set. (line 328)
* differences in awk and gawk, single-character fields: Single Character
Fields.
(line 6)
* differences in awk and gawk, split() function: String Functions.
@@ -33871,7 +33893,7 @@ Index
* differences in awk and gawk, strings: Scalar Constants. (line 20)
* differences in awk and gawk, strings, storing: gawk split records.
(line 76)
-* differences in awk and gawk, SYMTAB variable: Auto-set. (line 319)
+* differences in awk and gawk, SYMTAB variable: Auto-set. (line 332)
* differences in awk and gawk, TEXTDOMAIN variable: User-modified.
(line 155)
* differences in awk and gawk, trunc-mod operation: Arithmetic Ops.
@@ -33924,7 +33946,7 @@ Index
* elements of arrays: Reference to Elements.
(line 6)
* email address for bug reports, address@hidden: Bug address.
- (line 22)
+ (line 31)
* empty array elements: Reference to Elements.
(line 18)
* empty pattern: Empty. (line 6)
@@ -34186,7 +34208,7 @@ Index
(line 12)
* FNR variable: Records. (line 6)
* FNR variable <1>: Auto-set. (line 118)
-* FNR variable, changing: Auto-set. (line 377)
+* FNR variable, changing: Auto-set. (line 390)
* for statement: For Statement. (line 6)
* for statement, looping over arrays: Scanning an Array. (line 20)
* fork() extension function: Extension Sample Fork.
@@ -34366,13 +34388,13 @@ Index
* gawk, regular expressions, precedence: Regexp Operators. (line 161)
* gawk, RT variable in: awk split records. (line 124)
* gawk, RT variable in <1>: Multiple Line. (line 130)
-* gawk, RT variable in <2>: Auto-set. (line 315)
+* gawk, RT variable in <2>: Auto-set. (line 328)
* gawk, See Also awk: Preface. (line 34)
* gawk, source code, obtaining: Getting. (line 6)
* gawk, splitting fields and: Testing field creation.
(line 6)
* gawk, string-translation functions: I18N Functions. (line 6)
-* gawk, SYMTAB array in: Auto-set. (line 319)
+* gawk, SYMTAB array in: Auto-set. (line 332)
* gawk, TEXTDOMAIN variable in: User-modified. (line 155)
* gawk, timestamps: Time Functions. (line 6)
* gawk, uses for: Preface. (line 34)
@@ -34842,7 +34864,7 @@ Index
* not Boolean-logic operator: Boolean Ops. (line 6)
* NR variable: Records. (line 6)
* NR variable <1>: Auto-set. (line 143)
-* NR variable, changing: Auto-set. (line 377)
+* NR variable, changing: Auto-set. (line 390)
* null strings: awk split records. (line 114)
* null strings <1>: Regexp Field Splitting.
(line 43)
@@ -35308,7 +35330,7 @@ Index
* right shift: Bitwise Functions. (line 54)
* right shift, bitwise: Bitwise Functions. (line 32)
* Ritchie, Dennis: Basic Data Typing. (line 54)
-* RLENGTH variable: Auto-set. (line 302)
+* RLENGTH variable: Auto-set. (line 315)
* RLENGTH variable, match() function and: String Functions. (line 227)
* Robbins, Arnold: Command Line Field Separator.
(line 71)
@@ -35334,11 +35356,11 @@ Index
* RS variable <1>: User-modified. (line 136)
* RS variable, multiline records and: Multiple Line. (line 17)
* rshift: Bitwise Functions. (line 54)
-* RSTART variable: Auto-set. (line 308)
+* RSTART variable: Auto-set. (line 321)
* RSTART variable, match() function and: String Functions. (line 227)
* RT variable: awk split records. (line 124)
* RT variable <1>: Multiple Line. (line 130)
-* RT variable <2>: Auto-set. (line 315)
+* RT variable <2>: Auto-set. (line 328)
* Rubin, Paul: History. (line 30)
* Rubin, Paul <1>: Contributors. (line 16)
* rule, definition of: Getting Started. (line 21)
@@ -35356,7 +35378,7 @@ Index
* scanning arrays: Scanning an Array. (line 6)
* scanning multidimensional arrays: Multiscanning. (line 11)
* Schorr, Andrew: Acknowledgments. (line 60)
-* Schorr, Andrew <1>: Auto-set. (line 347)
+* Schorr, Andrew <1>: Auto-set. (line 360)
* Schorr, Andrew <2>: Contributors. (line 136)
* Schreiber, Bert: Acknowledgments. (line 38)
* Schreiber, Rita: Acknowledgments. (line 38)
@@ -35442,7 +35464,7 @@ Index
* sidebar, Beware The Smoke and Mirrors!: Bitwise Functions. (line 126)
* sidebar, Changing FS Does Not Affect the Fields: Full Line Fields.
(line 14)
-* sidebar, Changing NR and FNR: Auto-set. (line 375)
+* sidebar, Changing NR and FNR: Auto-set. (line 388)
* sidebar, Controlling Output Buffering with system(): I/O Functions.
(line 164)
* sidebar, Escape Sequences for Metacharacters: Escape Sequences.
@@ -35607,7 +35629,7 @@ Index
* Sumner, Andrew: Other Versions. (line 68)
* supplementary groups of gawk process: Auto-set. (line 271)
* switch statement: Switch Statement. (line 6)
-* SYMTAB array: Auto-set. (line 319)
+* SYMTAB array: Auto-set. (line 332)
* syntactic ambiguity: /= operator vs. /=.../ regexp constant: Assignment Ops.
(line 149)
* system: I/O Functions. (line 107)
@@ -36071,369 +36093,369 @@ Node: Exit Statement449664
Node: Built-in Variables452067
Node: User-modified453200
Node: Auto-set460967
-Ref: Auto-set-Footnote-1476564
-Ref: Auto-set-Footnote-2476770
-Node: ARGC and ARGV476826
-Node: Pattern Action Summary481039
-Node: Arrays483469
-Node: Array Basics484798
-Node: Array Intro485642
-Ref: figure-array-elements487617
-Ref: Array Intro-Footnote-1490321
-Node: Reference to Elements490449
-Node: Assigning Elements492913
-Node: Array Example493404
-Node: Scanning an Array495163
-Node: Controlling Scanning498185
-Ref: Controlling Scanning-Footnote-1503584
-Node: Numeric Array Subscripts503900
-Node: Uninitialized Subscripts506084
-Node: Delete507703
-Ref: Delete-Footnote-1510455
-Node: Multidimensional510512
-Node: Multiscanning513607
-Node: Arrays of Arrays515198
-Node: Arrays Summary519965
-Node: Functions522058
-Node: Built-in523096
-Node: Calling Built-in524177
-Node: Numeric Functions526173
-Ref: Numeric Functions-Footnote-1530201
-Ref: Numeric Functions-Footnote-2530558
-Ref: Numeric Functions-Footnote-3530606
-Node: String Functions530878
-Ref: String Functions-Footnote-1554536
-Ref: String Functions-Footnote-2554664
-Ref: String Functions-Footnote-3554912
-Node: Gory Details554999
-Ref: table-sub-escapes556790
-Ref: table-sub-proposed558309
-Ref: table-posix-sub559672
-Ref: table-gensub-escapes561213
-Ref: Gory Details-Footnote-1562036
-Node: I/O Functions562190
-Ref: table-system-return-values568772
-Ref: I/O Functions-Footnote-1570752
-Ref: I/O Functions-Footnote-2570900
-Node: Time Functions571020
-Ref: Time Functions-Footnote-1581687
-Ref: Time Functions-Footnote-2581755
-Ref: Time Functions-Footnote-3581913
-Ref: Time Functions-Footnote-4582024
-Ref: Time Functions-Footnote-5582136
-Ref: Time Functions-Footnote-6582363
-Node: Bitwise Functions582629
-Ref: table-bitwise-ops583223
-Ref: Bitwise Functions-Footnote-1589256
-Ref: Bitwise Functions-Footnote-2589429
-Node: Type Functions589620
-Node: I18N Functions592537
-Node: User-defined594188
-Node: Definition Syntax594993
-Ref: Definition Syntax-Footnote-1600680
-Node: Function Example600751
-Ref: Function Example-Footnote-1603673
-Node: Function Caveats603695
-Node: Calling A Function604213
-Node: Variable Scope605171
-Node: Pass By Value/Reference608165
-Node: Return Statement611664
-Node: Dynamic Typing614643
-Node: Indirect Calls615573
-Ref: Indirect Calls-Footnote-1625824
-Node: Functions Summary625952
-Node: Library Functions628657
-Ref: Library Functions-Footnote-1632264
-Ref: Library Functions-Footnote-2632407
-Node: Library Names632578
-Ref: Library Names-Footnote-1636038
-Ref: Library Names-Footnote-2636261
-Node: General Functions636347
-Node: Strtonum Function637450
-Node: Assert Function640472
-Node: Round Function643798
-Node: Cliff Random Function645339
-Node: Ordinal Functions646355
-Ref: Ordinal Functions-Footnote-1649418
-Ref: Ordinal Functions-Footnote-2649670
-Node: Join Function649880
-Ref: Join Function-Footnote-1651650
-Node: Getlocaltime Function651850
-Node: Readfile Function655592
-Node: Shell Quoting657564
-Node: Data File Management658965
-Node: Filetrans Function659597
-Node: Rewind Function663693
-Node: File Checking665603
-Ref: File Checking-Footnote-1666937
-Node: Empty Files667138
-Node: Ignoring Assigns669117
-Node: Getopt Function670667
-Ref: Getopt Function-Footnote-1682136
-Node: Passwd Functions682336
-Ref: Passwd Functions-Footnote-1691175
-Node: Group Functions691263
-Ref: Group Functions-Footnote-1699161
-Node: Walking Arrays699368
-Node: Library Functions Summary702376
-Node: Library Exercises703782
-Node: Sample Programs704247
-Node: Running Examples705017
-Node: Clones705745
-Node: Cut Program706969
-Node: Egrep Program716898
-Ref: Egrep Program-Footnote-1724410
-Node: Id Program724520
-Node: Split Program728200
-Ref: Split Program-Footnote-1731659
-Node: Tee Program731788
-Node: Uniq Program734578
-Node: Wc Program742004
-Ref: Wc Program-Footnote-1746259
-Node: Miscellaneous Programs746353
-Node: Dupword Program747566
-Node: Alarm Program749596
-Node: Translate Program754451
-Ref: Translate Program-Footnote-1759016
-Node: Labels Program759286
-Ref: Labels Program-Footnote-1762637
-Node: Word Sorting762721
-Node: History Sorting766793
-Node: Extract Program768628
-Node: Simple Sed776158
-Node: Igawk Program779232
-Ref: Igawk Program-Footnote-1793563
-Ref: Igawk Program-Footnote-2793765
-Ref: Igawk Program-Footnote-3793887
-Node: Anagram Program794002
-Node: Signature Program797064
-Node: Programs Summary798311
-Node: Programs Exercises799525
-Ref: Programs Exercises-Footnote-1803654
-Node: Advanced Features803745
-Node: Nondecimal Data805735
-Node: Array Sorting807326
-Node: Controlling Array Traversal808026
-Ref: Controlling Array Traversal-Footnote-1816393
-Node: Array Sorting Functions816511
-Ref: Array Sorting Functions-Footnote-1821602
-Node: Two-way I/O821798
-Ref: Two-way I/O-Footnote-1828350
-Ref: Two-way I/O-Footnote-2828537
-Node: TCP/IP Networking828619
-Node: Profiling831737
-Ref: Profiling-Footnote-1840409
-Node: Advanced Features Summary840732
-Node: Internationalization842576
-Node: I18N and L10N844056
-Node: Explaining gettext844743
-Ref: Explaining gettext-Footnote-1850635
-Ref: Explaining gettext-Footnote-2850820
-Node: Programmer i18n850985
-Ref: Programmer i18n-Footnote-1855934
-Node: Translator i18n855983
-Node: String Extraction856777
-Ref: String Extraction-Footnote-1857909
-Node: Printf Ordering857995
-Ref: Printf Ordering-Footnote-1860781
-Node: I18N Portability860845
-Ref: I18N Portability-Footnote-1863301
-Node: I18N Example863364
-Ref: I18N Example-Footnote-1866170
-Node: Gawk I18N866243
-Node: I18N Summary866888
-Node: Debugger868229
-Node: Debugging869252
-Node: Debugging Concepts869693
-Node: Debugging Terms871502
-Node: Awk Debugging874077
-Node: Sample Debugging Session874983
-Node: Debugger Invocation875517
-Node: Finding The Bug876903
-Node: List of Debugger Commands883381
-Node: Breakpoint Control884714
-Node: Debugger Execution Control888408
-Node: Viewing And Changing Data891770
-Node: Execution Stack895144
-Node: Debugger Info896781
-Node: Miscellaneous Debugger Commands900852
-Node: Readline Support905940
-Node: Limitations906836
-Node: Debugging Summary908945
-Node: Arbitrary Precision Arithmetic910224
-Node: Computer Arithmetic911709
-Ref: table-numeric-ranges915300
-Ref: Computer Arithmetic-Footnote-1916022
-Node: Math Definitions916079
-Ref: table-ieee-formats919393
-Ref: Math Definitions-Footnote-1919996
-Node: MPFR features920101
-Node: FP Math Caution921818
-Ref: FP Math Caution-Footnote-1922890
-Node: Inexactness of computations923259
-Node: Inexact representation924219
-Node: Comparing FP Values925579
-Node: Errors accumulate926661
-Node: Getting Accuracy928094
-Node: Try To Round930804
-Node: Setting precision931703
-Ref: table-predefined-precision-strings932400
-Node: Setting the rounding mode934230
-Ref: table-gawk-rounding-modes934604
-Ref: Setting the rounding mode-Footnote-1938012
-Node: Arbitrary Precision Integers938191
-Ref: Arbitrary Precision Integers-Footnote-1941366
-Node: Checking for MPFR941515
-Node: POSIX Floating Point Problems942812
-Ref: POSIX Floating Point Problems-Footnote-1946683
-Node: Floating point summary946721
-Node: Dynamic Extensions948911
-Node: Extension Intro950464
-Node: Plugin License951730
-Node: Extension Mechanism Outline952527
-Ref: figure-load-extension952966
-Ref: figure-register-new-function954531
-Ref: figure-call-new-function955623
-Node: Extension API Description957685
-Node: Extension API Functions Introduction959327
-Node: General Data Types964867
-Ref: General Data Types-Footnote-1972988
-Node: Memory Allocation Functions973287
-Ref: Memory Allocation Functions-Footnote-1977495
-Node: Constructor Functions977594
-Node: Registration Functions981180
-Node: Extension Functions981865
-Node: Exit Callback Functions987080
-Node: Extension Version String988330
-Node: Input Parsers988993
-Node: Output Wrappers1001714
-Node: Two-way processors1006226
-Node: Printing Messages1008491
-Ref: Printing Messages-Footnote-11009662
-Node: Updating ERRNO1009815
-Node: Requesting Values1010554
-Ref: table-value-types-returned1011291
-Node: Accessing Parameters1012227
-Node: Symbol Table Access1013462
-Node: Symbol table by name1013974
-Node: Symbol table by cookie1015763
-Ref: Symbol table by cookie-Footnote-11019948
-Node: Cached values1020012
-Ref: Cached values-Footnote-11023548
-Node: Array Manipulation1023701
-Ref: Array Manipulation-Footnote-11024792
-Node: Array Data Types1024829
-Ref: Array Data Types-Footnote-11027487
-Node: Array Functions1027579
-Node: Flattening Arrays1032077
-Node: Creating Arrays1039053
-Node: Redirection API1043822
-Node: Extension API Variables1046655
-Node: Extension Versioning1047366
-Ref: gawk-api-version1047795
-Node: Extension GMP/MPFR Versioning1049523
-Node: Extension API Informational Variables1051151
-Node: Extension API Boilerplate1052224
-Node: Changes from API V11056198
-Node: Finding Extensions1056858
-Node: Extension Example1057417
-Node: Internal File Description1058215
-Node: Internal File Ops1062295
-Ref: Internal File Ops-Footnote-11073695
-Node: Using Internal File Ops1073835
-Ref: Using Internal File Ops-Footnote-11076218
-Node: Extension Samples1076492
-Node: Extension Sample File Functions1078021
-Node: Extension Sample Fnmatch1085670
-Node: Extension Sample Fork1087157
-Node: Extension Sample Inplace1088375
-Node: Extension Sample Ord1091592
-Node: Extension Sample Readdir1092428
-Ref: table-readdir-file-types1093317
-Node: Extension Sample Revout1094122
-Node: Extension Sample Rev2way1094711
-Node: Extension Sample Read write array1095451
-Node: Extension Sample Readfile1097393
-Node: Extension Sample Time1098488
-Node: Extension Sample API Tests1099836
-Node: gawkextlib1100328
-Node: Extension summary1102779
-Node: Extension Exercises1106481
-Node: Language History1107979
-Node: V7/SVR3.11109635
-Node: SVR41111787
-Node: POSIX1113221
-Node: BTL1114600
-Node: POSIX/GNU1115329
-Node: Feature History1121107
-Node: Common Extensions1136966
-Node: Ranges and Locales1138249
-Ref: Ranges and Locales-Footnote-11142865
-Ref: Ranges and Locales-Footnote-21142892
-Ref: Ranges and Locales-Footnote-31143127
-Node: Contributors1143348
-Node: History summary1149293
-Node: Installation1150673
-Node: Gawk Distribution1151617
-Node: Getting1152101
-Node: Extracting1153064
-Node: Distribution contents1154702
-Node: Unix Installation1161182
-Node: Quick Installation1161864
-Node: Shell Startup Files1164278
-Node: Additional Configuration Options1165367
-Node: Configuration Philosophy1167356
-Node: Non-Unix Installation1169725
-Node: PC Installation1170185
-Node: PC Binary Installation1171023
-Node: PC Compiling1171458
-Node: PC Using1172575
-Node: Cygwin1175620
-Node: MSYS1176390
-Node: VMS Installation1176891
-Node: VMS Compilation1177682
-Ref: VMS Compilation-Footnote-11178911
-Node: VMS Dynamic Extensions1178969
-Node: VMS Installation Details1180654
-Node: VMS Running1182907
-Node: VMS GNV1187186
-Node: VMS Old Gawk1187921
-Node: Bugs1188392
-Node: Bug address1189055
-Node: Usenet1191452
-Node: Maintainers1192229
-Node: Other Versions1193490
-Node: Installation summary1200074
-Node: Notes1201276
-Node: Compatibility Mode1202141
-Node: Additions1202923
-Node: Accessing The Source1203848
-Node: Adding Code1205284
-Node: New Ports1211503
-Node: Derived Files1215991
-Ref: Derived Files-Footnote-11221637
-Ref: Derived Files-Footnote-21221672
-Ref: Derived Files-Footnote-31222270
-Node: Future Extensions1222384
-Node: Implementation Limitations1223042
-Node: Extension Design1224225
-Node: Old Extension Problems1225379
-Ref: Old Extension Problems-Footnote-11226897
-Node: Extension New Mechanism Goals1226954
-Ref: Extension New Mechanism Goals-Footnote-11230318
-Node: Extension Other Design Decisions1230507
-Node: Extension Future Growth1232620
-Node: Old Extension Mechanism1233456
-Node: Notes summary1235219
-Node: Basic Concepts1236401
-Node: Basic High Level1237082
-Ref: figure-general-flow1237364
-Ref: figure-process-flow1238049
-Ref: Basic High Level-Footnote-11241350
-Node: Basic Data Typing1241535
-Node: Glossary1244863
-Node: Copying1276810
-Node: GNU Free Documentation License1314349
-Node: Index1339467
+Ref: Auto-set-Footnote-1477304
+Ref: Auto-set-Footnote-2477510
+Node: ARGC and ARGV477566
+Node: Pattern Action Summary481779
+Node: Arrays484209
+Node: Array Basics485538
+Node: Array Intro486382
+Ref: figure-array-elements488357
+Ref: Array Intro-Footnote-1491061
+Node: Reference to Elements491189
+Node: Assigning Elements493653
+Node: Array Example494144
+Node: Scanning an Array495903
+Node: Controlling Scanning498925
+Ref: Controlling Scanning-Footnote-1504324
+Node: Numeric Array Subscripts504640
+Node: Uninitialized Subscripts506824
+Node: Delete508443
+Ref: Delete-Footnote-1511195
+Node: Multidimensional511252
+Node: Multiscanning514347
+Node: Arrays of Arrays515938
+Node: Arrays Summary520705
+Node: Functions522798
+Node: Built-in523836
+Node: Calling Built-in524917
+Node: Numeric Functions526913
+Ref: Numeric Functions-Footnote-1530941
+Ref: Numeric Functions-Footnote-2531298
+Ref: Numeric Functions-Footnote-3531346
+Node: String Functions531618
+Ref: String Functions-Footnote-1555276
+Ref: String Functions-Footnote-2555404
+Ref: String Functions-Footnote-3555652
+Node: Gory Details555739
+Ref: table-sub-escapes557530
+Ref: table-sub-proposed559049
+Ref: table-posix-sub560412
+Ref: table-gensub-escapes561953
+Ref: Gory Details-Footnote-1562776
+Node: I/O Functions562930
+Ref: table-system-return-values569512
+Ref: I/O Functions-Footnote-1571492
+Ref: I/O Functions-Footnote-2571640
+Node: Time Functions571760
+Ref: Time Functions-Footnote-1582431
+Ref: Time Functions-Footnote-2582499
+Ref: Time Functions-Footnote-3582657
+Ref: Time Functions-Footnote-4582768
+Ref: Time Functions-Footnote-5582880
+Ref: Time Functions-Footnote-6583107
+Node: Bitwise Functions583373
+Ref: table-bitwise-ops583967
+Ref: Bitwise Functions-Footnote-1590000
+Ref: Bitwise Functions-Footnote-2590173
+Node: Type Functions590364
+Node: I18N Functions593281
+Node: User-defined594932
+Node: Definition Syntax595737
+Ref: Definition Syntax-Footnote-1601424
+Node: Function Example601495
+Ref: Function Example-Footnote-1604417
+Node: Function Caveats604439
+Node: Calling A Function604957
+Node: Variable Scope605915
+Node: Pass By Value/Reference608909
+Node: Return Statement612408
+Node: Dynamic Typing615387
+Node: Indirect Calls616317
+Ref: Indirect Calls-Footnote-1626568
+Node: Functions Summary626696
+Node: Library Functions629401
+Ref: Library Functions-Footnote-1633008
+Ref: Library Functions-Footnote-2633151
+Node: Library Names633322
+Ref: Library Names-Footnote-1636782
+Ref: Library Names-Footnote-2637005
+Node: General Functions637091
+Node: Strtonum Function638194
+Node: Assert Function641216
+Node: Round Function644542
+Node: Cliff Random Function646083
+Node: Ordinal Functions647099
+Ref: Ordinal Functions-Footnote-1650162
+Ref: Ordinal Functions-Footnote-2650414
+Node: Join Function650624
+Ref: Join Function-Footnote-1652394
+Node: Getlocaltime Function652594
+Node: Readfile Function656336
+Node: Shell Quoting658308
+Node: Data File Management659709
+Node: Filetrans Function660341
+Node: Rewind Function664437
+Node: File Checking666347
+Ref: File Checking-Footnote-1667681
+Node: Empty Files667882
+Node: Ignoring Assigns669861
+Node: Getopt Function671411
+Ref: Getopt Function-Footnote-1682880
+Node: Passwd Functions683080
+Ref: Passwd Functions-Footnote-1691919
+Node: Group Functions692007
+Ref: Group Functions-Footnote-1699905
+Node: Walking Arrays700112
+Node: Library Functions Summary703120
+Node: Library Exercises704526
+Node: Sample Programs704991
+Node: Running Examples705761
+Node: Clones706489
+Node: Cut Program707713
+Node: Egrep Program717642
+Ref: Egrep Program-Footnote-1725154
+Node: Id Program725264
+Node: Split Program728944
+Ref: Split Program-Footnote-1732403
+Node: Tee Program732532
+Node: Uniq Program735322
+Node: Wc Program742748
+Ref: Wc Program-Footnote-1747003
+Node: Miscellaneous Programs747097
+Node: Dupword Program748310
+Node: Alarm Program750340
+Node: Translate Program755195
+Ref: Translate Program-Footnote-1759760
+Node: Labels Program760030
+Ref: Labels Program-Footnote-1763381
+Node: Word Sorting763465
+Node: History Sorting767537
+Node: Extract Program769372
+Node: Simple Sed776902
+Node: Igawk Program779976
+Ref: Igawk Program-Footnote-1794307
+Ref: Igawk Program-Footnote-2794509
+Ref: Igawk Program-Footnote-3794631
+Node: Anagram Program794746
+Node: Signature Program797808
+Node: Programs Summary799055
+Node: Programs Exercises800269
+Ref: Programs Exercises-Footnote-1804398
+Node: Advanced Features804489
+Node: Nondecimal Data806479
+Node: Array Sorting808070
+Node: Controlling Array Traversal808770
+Ref: Controlling Array Traversal-Footnote-1817137
+Node: Array Sorting Functions817255
+Ref: Array Sorting Functions-Footnote-1822346
+Node: Two-way I/O822542
+Ref: Two-way I/O-Footnote-1829094
+Ref: Two-way I/O-Footnote-2829281
+Node: TCP/IP Networking829363
+Node: Profiling832481
+Ref: Profiling-Footnote-1841153
+Node: Advanced Features Summary841476
+Node: Internationalization843320
+Node: I18N and L10N844800
+Node: Explaining gettext845487
+Ref: Explaining gettext-Footnote-1851379
+Ref: Explaining gettext-Footnote-2851564
+Node: Programmer i18n851729
+Ref: Programmer i18n-Footnote-1856678
+Node: Translator i18n856727
+Node: String Extraction857521
+Ref: String Extraction-Footnote-1858653
+Node: Printf Ordering858739
+Ref: Printf Ordering-Footnote-1861525
+Node: I18N Portability861589
+Ref: I18N Portability-Footnote-1864045
+Node: I18N Example864108
+Ref: I18N Example-Footnote-1866914
+Node: Gawk I18N866987
+Node: I18N Summary867632
+Node: Debugger868973
+Node: Debugging869996
+Node: Debugging Concepts870437
+Node: Debugging Terms872246
+Node: Awk Debugging874821
+Node: Sample Debugging Session875727
+Node: Debugger Invocation876261
+Node: Finding The Bug877647
+Node: List of Debugger Commands884125
+Node: Breakpoint Control885458
+Node: Debugger Execution Control889152
+Node: Viewing And Changing Data892514
+Node: Execution Stack895888
+Node: Debugger Info897525
+Node: Miscellaneous Debugger Commands901596
+Node: Readline Support906684
+Node: Limitations907580
+Node: Debugging Summary909689
+Node: Arbitrary Precision Arithmetic910968
+Node: Computer Arithmetic912453
+Ref: table-numeric-ranges916044
+Ref: Computer Arithmetic-Footnote-1916766
+Node: Math Definitions916823
+Ref: table-ieee-formats920137
+Ref: Math Definitions-Footnote-1920740
+Node: MPFR features920845
+Node: FP Math Caution922562
+Ref: FP Math Caution-Footnote-1923634
+Node: Inexactness of computations924003
+Node: Inexact representation924963
+Node: Comparing FP Values926323
+Node: Errors accumulate927405
+Node: Getting Accuracy928838
+Node: Try To Round931548
+Node: Setting precision932447
+Ref: table-predefined-precision-strings933144
+Node: Setting the rounding mode934974
+Ref: table-gawk-rounding-modes935348
+Ref: Setting the rounding mode-Footnote-1938756
+Node: Arbitrary Precision Integers938935
+Ref: Arbitrary Precision Integers-Footnote-1942110
+Node: Checking for MPFR942259
+Node: POSIX Floating Point Problems943556
+Ref: POSIX Floating Point Problems-Footnote-1947427
+Node: Floating point summary947465
+Node: Dynamic Extensions949655
+Node: Extension Intro951208
+Node: Plugin License952474
+Node: Extension Mechanism Outline953271
+Ref: figure-load-extension953710
+Ref: figure-register-new-function955275
+Ref: figure-call-new-function956367
+Node: Extension API Description958429
+Node: Extension API Functions Introduction960071
+Node: General Data Types965611
+Ref: General Data Types-Footnote-1973732
+Node: Memory Allocation Functions974031
+Ref: Memory Allocation Functions-Footnote-1978239
+Node: Constructor Functions978338
+Node: Registration Functions981924
+Node: Extension Functions982609
+Node: Exit Callback Functions987824
+Node: Extension Version String989074
+Node: Input Parsers989737
+Node: Output Wrappers1002458
+Node: Two-way processors1006970
+Node: Printing Messages1009235
+Ref: Printing Messages-Footnote-11010406
+Node: Updating ERRNO1010559
+Node: Requesting Values1011298
+Ref: table-value-types-returned1012035
+Node: Accessing Parameters1012971
+Node: Symbol Table Access1014206
+Node: Symbol table by name1014718
+Node: Symbol table by cookie1016507
+Ref: Symbol table by cookie-Footnote-11020692
+Node: Cached values1020756
+Ref: Cached values-Footnote-11024292
+Node: Array Manipulation1024445
+Ref: Array Manipulation-Footnote-11025536
+Node: Array Data Types1025573
+Ref: Array Data Types-Footnote-11028231
+Node: Array Functions1028323
+Node: Flattening Arrays1032821
+Node: Creating Arrays1039797
+Node: Redirection API1044566
+Node: Extension API Variables1047399
+Node: Extension Versioning1048110
+Ref: gawk-api-version1048539
+Node: Extension GMP/MPFR Versioning1050267
+Node: Extension API Informational Variables1051895
+Node: Extension API Boilerplate1052968
+Node: Changes from API V11056942
+Node: Finding Extensions1057602
+Node: Extension Example1058161
+Node: Internal File Description1058959
+Node: Internal File Ops1063039
+Ref: Internal File Ops-Footnote-11074439
+Node: Using Internal File Ops1074579
+Ref: Using Internal File Ops-Footnote-11076962
+Node: Extension Samples1077236
+Node: Extension Sample File Functions1078765
+Node: Extension Sample Fnmatch1086414
+Node: Extension Sample Fork1087901
+Node: Extension Sample Inplace1089119
+Node: Extension Sample Ord1092336
+Node: Extension Sample Readdir1093172
+Ref: table-readdir-file-types1094061
+Node: Extension Sample Revout1094866
+Node: Extension Sample Rev2way1095455
+Node: Extension Sample Read write array1096195
+Node: Extension Sample Readfile1098137
+Node: Extension Sample Time1099232
+Node: Extension Sample API Tests1100580
+Node: gawkextlib1101072
+Node: Extension summary1103523
+Node: Extension Exercises1107225
+Node: Language History1108723
+Node: V7/SVR3.11110379
+Node: SVR41112531
+Node: POSIX1113965
+Node: BTL1115344
+Node: POSIX/GNU1116073
+Node: Feature History1121851
+Node: Common Extensions1137710
+Node: Ranges and Locales1138993
+Ref: Ranges and Locales-Footnote-11143609
+Ref: Ranges and Locales-Footnote-21143636
+Ref: Ranges and Locales-Footnote-31143871
+Node: Contributors1144092
+Node: History summary1150037
+Node: Installation1151417
+Node: Gawk Distribution1152361
+Node: Getting1152845
+Node: Extracting1153808
+Node: Distribution contents1155446
+Node: Unix Installation1161926
+Node: Quick Installation1162608
+Node: Shell Startup Files1165022
+Node: Additional Configuration Options1166111
+Node: Configuration Philosophy1168100
+Node: Non-Unix Installation1170469
+Node: PC Installation1170929
+Node: PC Binary Installation1171767
+Node: PC Compiling1172202
+Node: PC Using1173319
+Node: Cygwin1176364
+Node: MSYS1177134
+Node: VMS Installation1177635
+Node: VMS Compilation1178426
+Ref: VMS Compilation-Footnote-11179655
+Node: VMS Dynamic Extensions1179713
+Node: VMS Installation Details1181398
+Node: VMS Running1183651
+Node: VMS GNV1187930
+Node: VMS Old Gawk1188665
+Node: Bugs1189136
+Node: Bug address1189799
+Node: Usenet1192591
+Node: Maintainers1193368
+Node: Other Versions1194629
+Node: Installation summary1201213
+Node: Notes1202415
+Node: Compatibility Mode1203280
+Node: Additions1204062
+Node: Accessing The Source1204987
+Node: Adding Code1206423
+Node: New Ports1212642
+Node: Derived Files1217130
+Ref: Derived Files-Footnote-11222776
+Ref: Derived Files-Footnote-21222811
+Ref: Derived Files-Footnote-31223409
+Node: Future Extensions1223523
+Node: Implementation Limitations1224181
+Node: Extension Design1225364
+Node: Old Extension Problems1226518
+Ref: Old Extension Problems-Footnote-11228036
+Node: Extension New Mechanism Goals1228093
+Ref: Extension New Mechanism Goals-Footnote-11231457
+Node: Extension Other Design Decisions1231646
+Node: Extension Future Growth1233759
+Node: Old Extension Mechanism1234595
+Node: Notes summary1236358
+Node: Basic Concepts1237540
+Node: Basic High Level1238221
+Ref: figure-general-flow1238503
+Ref: figure-process-flow1239188
+Ref: Basic High Level-Footnote-11242489
+Node: Basic Data Typing1242674
+Node: Glossary1246002
+Node: Copying1277949
+Node: GNU Free Documentation License1315488
+Node: Index1340606
End Tag Table
diff --git a/doc/gawk.texi b/doc/gawk.texi
index d2a4945..74610f9 100644
--- a/doc/gawk.texi
+++ b/doc/gawk.texi
@@ -15639,6 +15639,18 @@ of setting up a two-way pipe.
Set a timeout for reading from input redirection @var{input_name}.
@xref{Read Timeout} for more information.
address@hidden PROCINFO["@var{Iinput_name}", "RETRY"]
+If an I/O error that may be retried occurs when reading data from
address@hidden, and this array entry exists, then @code{getline} returns
address@hidden instead of following the default behavior of returning @minus{}1
+and configuring @var{input_name} to return no further data. An I/O error
+that may be retried is one where @code{errno} has the value @code{EAGAIN},
address@hidden, @code{EINTR}, or @code{ETIMEDOUT}. This may be useful
+in conjunction with @code{\fBPROCINFO["@var{input_name}", "READ_TIMEOUT"]}
+or situations where a file descriptor has been configured to behave in
+a non-blocking fashion.
address@hidden Input} for more information.
+
@item PROCINFO["sorted_in"]
If this element exists in @code{PROCINFO}, its value controls the
order in which array indices will be processed by
@@ -19263,7 +19275,7 @@ year 1 and year @minus{}1 preceding year 0.
If @var{utc-flag} is present and is either nonzero or non-null, the time
is assumed to be in the UTC time zone; otherwise, the
time is assumed to be in the local time zone.
-If the daylight-savings flag is positive, the time is assumed to be
+If the @var{DST} daylight-savings flag is positive, the time is assumed to be
daylight savings time; if zero, the time is assumed to be standard
time; and if negative (the default), @code{mktime()} attempts to determine
whether daylight savings time is in effect for the specified time.
@@ -39931,11 +39943,19 @@ but we might well want to fix it.
@appendixsubsec Submitting Bug Reports
Before reporting a bug, make sure you have really found a genuine bug.
-Carefully reread the documentation and see if it says you can do
+First, verify that you have the latest version of @command{gawk}.
+Many bugs (usually subtle ones) are fixed at each release, and if yours
+is out of date, the problem may already have been solved.
+
+Second, please see if setting the environment variable @env{LC_ALL}
+to @code{LC_ALL=C} causes things to behave as you expect. If so, it's
+a locale issue, and may or may not really be a bug.
+
+Third, carefully reread the documentation and see if it says you can do
what you're trying to do. If it's not clear whether you should be able
to do something or not, report that too; it's a bug in the documentation!
-Before reporting a bug or trying to fix it yourself, try to isolate it
+Finally, before reporting a bug or trying to fix it yourself, try to isolate it
to the smallest possible @command{awk} program and input @value{DF} that
reproduce the problem. Then send us the program and @value{DF},
some idea of what kind of Unix system you're using,
diff --git a/doc/gawktexi.in b/doc/gawktexi.in
index 2a30a87..7a73558 100644
--- a/doc/gawktexi.in
+++ b/doc/gawktexi.in
@@ -14958,6 +14958,18 @@ of setting up a two-way pipe.
Set a timeout for reading from input redirection @var{input_name}.
@xref{Read Timeout} for more information.
address@hidden PROCINFO["@var{Iinput_name}", "RETRY"]
+If an I/O error that may be retried occurs when reading data from
address@hidden, and this array entry exists, then @code{getline} returns
address@hidden instead of following the default behavior of returning @minus{}1
+and configuring @var{input_name} to return no further data. An I/O error
+that may be retried is one where @code{errno} has the value @code{EAGAIN},
address@hidden, @code{EINTR}, or @code{ETIMEDOUT}. This may be useful
+in conjunction with @code{\fBPROCINFO["@var{input_name}", "READ_TIMEOUT"]}
+or situations where a file descriptor has been configured to behave in
+a non-blocking fashion.
address@hidden Input} for more information.
+
@item PROCINFO["sorted_in"]
If this element exists in @code{PROCINFO}, its value controls the
order in which array indices will be processed by
@@ -18375,7 +18387,7 @@ year 1 and year @minus{}1 preceding year 0.
If @var{utc-flag} is present and is either nonzero or non-null, the time
is assumed to be in the UTC time zone; otherwise, the
time is assumed to be in the local time zone.
-If the daylight-savings flag is positive, the time is assumed to be
+If the @var{DST} daylight-savings flag is positive, the time is assumed to be
daylight savings time; if zero, the time is assumed to be standard
time; and if negative (the default), @code{mktime()} attempts to determine
whether daylight savings time is in effect for the specified time.
@@ -38945,11 +38957,19 @@ but we might well want to fix it.
@appendixsubsec Submitting Bug Reports
Before reporting a bug, make sure you have really found a genuine bug.
-Carefully reread the documentation and see if it says you can do
+First, verify that you have the latest version of @command{gawk}.
+Many bugs (usually subtle ones) are fixed at each release, and if yours
+is out of date, the problem may already have been solved.
+
+Second, please see if setting the environment variable @env{LC_ALL}
+to @code{LC_ALL=C} causes things to behave as you expect. If so, it's
+a locale issue, and may or may not really be a bug.
+
+Third, carefully reread the documentation and see if it says you can do
what you're trying to do. If it's not clear whether you should be able
to do something or not, report that too; it's a bug in the documentation!
-Before reporting a bug or trying to fix it yourself, try to isolate it
+Finally, before reporting a bug or trying to fix it yourself, try to isolate it
to the smallest possible @command{awk} program and input @value{DF} that
reproduce the problem. Then send us the program and @value{DF},
some idea of what kind of Unix system you're using,
http://git.sv.gnu.org/cgit/gawk.git/commit/?id=b023c62b459dfe369ac4eb39d7043f4e8c2c9d2e
commit b023c62b459dfe369ac4eb39d7043f4e8c2c9d2e
Author: Arnold D. Robbins <address@hidden>
Date: Sun Oct 1 22:03:49 2017 +0300
Italian translation updated.
diff --git a/doc/it/ChangeLog b/doc/it/ChangeLog
index 112686c..91e2110 100644
--- a/doc/it/ChangeLog
+++ b/doc/it/ChangeLog
@@ -1,3 +1,7 @@
+2017-10-01 Antonio Giovanni Colombo <address@hidden>
+
+ * gawktexi.in: Italian translation updated.
+
2017-04-12 Arnold D. Robbins <address@hidden>
* ChangeLog: created.
diff --git a/doc/it/gawktexi.in b/doc/it/gawktexi.in
old mode 100644
new mode 100755
index 678125e..d238dba
--- a/doc/it/gawktexi.in
+++ b/doc/it/gawktexi.in
@@ -13,7 +13,7 @@
@end direntry
@dircategory Programmi di address@hidden individuale
@direntry
-* awk: (gawk)Avviare gawk. Scansione e processo di testi.
+* awk: (gawk)Avviare Gawk. Scansione e processo di testi.
@end direntry
@c Enable better indexing, requires texindex from Texinfo 6 or later.
@@ -46,6 +46,14 @@
@set MINUS
@end ifdocbook
address@hidden
address@hidden TIMES @times
address@hidden iftex
address@hidden
address@hidden TIMES *
address@hidden ifnottex
+
+
@set xref-automatic-section-title
@c The following information should be updated here only!
@@ -54,9 +62,9 @@
@c These apply across the board.
@c Aggiornata alla versione del 3 marzo 2017
address@hidden UPDATE-MONTH gennaio 2017
address@hidden VERSION 4.1
address@hidden PATCHLEVEL 4
address@hidden UPDATE-MONTH Settembre 2017
address@hidden VERSION 4.2
address@hidden PATCHLEVEL 0
@c added Italian hyphenation stuff
@hyphenation{ven-go-no o-met-te-re o-met-ten-do}
@@ -78,6 +86,7 @@
@set SECTION sezione
@set SECTIONS sezioni
@set SUBSECTION sottosezione
address@hidden SUBSECTIONS sottosezioni
@ifclear SMALLPRINT
@set DARKCORNER @address@hidden,1cm}, @image{rflashlight,1cm}}
@end ifclear
@@ -94,6 +103,7 @@
@set SECTION nodo secondario
@set SECTIONS nodi secondari
@set SUBSECTION nodo
address@hidden SUBSECTIONS nodi
@set DARKCORNER (a.b.)
@set COMMONEXT (e.c.)
@set PAGE videata
@@ -105,6 +115,7 @@
@set SECTION sezione
@set SECTIONS sezioni
@set SUBSECTION sottosezione
address@hidden SUBSECTIONS sottosezioni
@set DARKCORNER (a.b.)
@set COMMONEXT (e.c.)
@set PAGE videata
@@ -116,6 +127,7 @@
@set SECTION sezione
@set SECTIONS sezioni
@set SUBSECTION sottosezione
address@hidden SUBSECTIONS sottosezioni
@set DARKCORNER (a.b.)
@set COMMONEXT (e.c.)
@set PAGE pagina
@@ -127,6 +139,7 @@
@set SECTION sezione
@set SECTIONS sezioni
@set SUBSECTION sottosezione
address@hidden SUBSECTIONS sottosezioni
@set DARKCORNER (a.b.)
@set COMMONEXT (e.c.)
@set PAGE pagina
@@ -138,6 +151,7 @@
@set SECTION sezione
@set SECTIONS sezioni
@set SUBSECTION sottosezione
address@hidden SUBSECTIONS sottosezioni
@set DARKCORNER (a.b.)
@set COMMONEXT (e.c.)
@set PAGE pagina
@@ -293,7 +307,7 @@ Some comments on the layout for TeX.
<literallayout class="normal">Free Software Foundation
51 Franklin Street, Fifth Floor -- Boston, MA 02110-1301 USA
Tel.: +1-617-542-5942 Fax: +1-617-542-2652 Email: <email>gnu@@gnu.org</email>
-URL: <ulink
url="http://www.gnu.org">http://www.gnu.org/</ulink></literallayout>
+URL: <ulink
url="https://www.gnu.org">https://www.gnu.org/</ulink></literallayout>
<literallayout class="normal">Copyright © 1989, 1991, 1992, 1993,
1996–2005, 2007, 2009–2017
Free Software Foundation, Inc.
@@ -310,7 +324,7 @@ Marco Curreli --
<email>marcocurreli(chiocciola)tiscali(punto)it</email>
<para>Pubblicato da:</para>
<literallayout class="normal">Free Software Foundation
Email: <email>gnu@@gnu.org</email>
-URL: <ulink url="http://www.gnu.org">http://www.gnu.org/</ulink>
+URL: <ulink url="https://www.gnu.org">https://www.gnu.org/</ulink>
e da:
Italian Linux Documentation Project (ILDP)
@@ -353,7 +367,7 @@ Una copia della licenza @`e acclusa nella sezione intitolata
@ifset FOR_PRINT
Una copia della licenza
si address@hidden trovare in internet all'indirizzo
address@hidden://www.gnu.org/software/gawk/manual/html_node/GNU-Free-Documentation-License.html,
address@hidden://www.gnu.org/software/gawk/manual/html_node/GNU-Free-Documentation-License.html,
il sito web del Progetto GNU}.
@end ifset
@@ -404,7 +418,7 @@ Titolo originale:@*
Published by @strong{Free Software address@hidden
51 Franklin Street, Fifth Floor -- Boston, MA 02110-1301 USA @*
Tel.: +1-617-542-5942 -- Fax: +1-617-542-2652 -- Email: @email{gnu@@gnu.org} @*
-URL: @uref{http://www.gnu.org/}
+URL: @uref{https://www.gnu.org/}
@sp 0
@c This one is correct for gawk 3.1.0 from the FSF
ISBN 1-882114-28-0
@@ -419,7 +433,7 @@ Marco Curreli --
@email{marcocurreli(chiocciola)tiscali(punto)address@hidden
@sp 1
Pubblicato da:
Free Software address@hidden
-Email: @email{gnu@@gnu.org}; URL: @uref{http://www.gnu.org/}
+Email: @email{gnu@@gnu.org}; URL: @uref{https://www.gnu.org/}
e da:
Italian Linux Documentation Project (ILDP)@*
@@ -660,7 +674,14 @@ Copyright dell'edizione italiana @copyright{} 2016 -- Free
Software Foundation,
* Sommario sulla separazione campi:: Alcuni punti finali e una tavola di
sommario.
* Dimensione costante:: Leggere campi di larghezza costante.
-* Separazione in base al contenuto:: Definire campi dal loro Contenuto.
+* Dati di larghezza fissa:: Elaborare dati di lunghezza fissa.
+* Saltare campi intermedi:: Saltare campi intermedi.
+* Consentire dati a fine record:: Trattare dati opzionali a fine record.
+* Campi con dati a larghezza fissa:: Valore di campi con dati a larghezza
+ fissa.
+* Separazione in base al contenuto:: Definire campi dal loro contenuto.
+* Controllare la creazione di campi:: Controllare come @command{gawk} sta
+ dividendo i record.
* Righe multiple:: Record su righe multiple
* Getline:: Richiedere input usando @code{getline}.
* Getline semplice:: Usare @code{getline} senza argomenti.
@@ -1028,8 +1049,9 @@ Copyright dell'edizione italiana @copyright{} 2016 --
Free Software Foundation,
* Tentare di arrotondare:: Tentare di aggiungere bit di
precisione e
arrotondare.
* Impostare la precisione:: Impostare la precisione.
-* Impostare modi di arrotondare:: Impostare la address@hidden di
+* Impostare modo di arrotondare:: Impostare la address@hidden di
arrotondamento.
+* Controllare address@hidden MPFR:: Come controllare se MPFR @`e
disponibile.
* Interi a precisione arbitraria:: Aritmetica dei numeri interi a
precisione
arbitraria con @command{gawk}.
* Problemi virgola mobile POSIX:: Confronto tra standard e uso corrente.
@@ -1070,6 +1092,8 @@ Copyright dell'edizione italiana @copyright{} 2016 --
Free Software Foundation,
modificarle.
* Variabili dell'estensione API:: Variabili fornite dall'API.
* Versione dell'estensione:: Informazioni sulla versione API.
+* Versione estensione GMP/MPFR:: Informazioni sulla versione disponibile
+ di GMP ed MPFR.
* Variabili informative di estens. API:: Variabili che forniscono informazioni
sull'invocazione di @command{gawk}.
* Codice predefinito di un'estensione API:: Codice predefinito di interfaccia
API.
@@ -1714,12 +1738,12 @@ Infine, vien fatta rilevare ogni address@hidden di
@command{gawk} non
inclusa nello standard POSIX per @command{awk}.
@ifnotinfo
-Questo @value{DOCUMENT} ha il difficile compito di essere tanto una guida
+Questo @value{DOCUMENT} ha il difficile compito di essere sia una guida
introduttiva che un manuale di riferimento. I neofiti possono
tranquillamente saltare i dettagli che sembrano loro troppo complessi.
Possono anche ignorare i molti riferimenti incrociati, preparati avendo in
mente gli utenti esperti e per le versioni Info e
address@hidden://www.gnu.org/software/gawk/manual/, HTML}
address@hidden://www.gnu.org/software/gawk/manual/, HTML}
del @value{DOCUMENT}.
@end ifnotinfo
@@ -1946,7 +1970,7 @@ delle appendici. Si possono trovare in rete ai seguenti
indirizzi:
@itemize @value{BULLET}
@item
address@hidden://www.gnu.org/software/gawk/manual/html_node/Notes.html,
address@hidden://www.gnu.org/software/gawk/manual/html_node/Notes.html,
L'appendice sulle note di implementazione}
descrive come disabilitare le estensioni @command{gawk}, come contribuire
scrivendo del nuovo codice per @command{gawk}, dove reperire informazioni
@@ -1954,20 +1978,20 @@ su alcune possibili future direzioni dello sviluppo di
@command{gawk}, e
sulle decisioni di progetto che hanno influito sulle estensioni API.
@item
address@hidden://www.gnu.org/software/gawk/manual/html_node/Basic-Concepts.html,
address@hidden://www.gnu.org/software/gawk/manual/html_node/Basic-Concepts.html,
L'appendice sui concetti fondamentali}
fornisce del materiale di riferimento a livello elementare per chi sia
completamente a
digiuno di programmazione informatica.
@item
address@hidden://www.gnu.org/software/gawk/manual/html_node/Glossary.html,
address@hidden://www.gnu.org/software/gawk/manual/html_node/Glossary.html,
Il Glossario}
-definisce la maggior parte, se non tutti, i termini significativi usati
+definisce la maggior parte, o quasi, dei termini significativi usati
nel corso del libro. Se si incontrano termini con cui non si ha
address@hidden,
questo @`e il posto dove cercarli.
@item
address@hidden://www.gnu.org/software/gawk/manual/html_node/GNU-Free-Documentation-License.html,
la licenza GNU FDL}
address@hidden://www.gnu.org/software/gawk/manual/html_node/GNU-Free-Documentation-License.html,
la licenza GNU FDL}
@`e la licenza che vale per questo @value{DOCUMENT}.
@end itemize
@@ -1982,7 +2006,7 @@ state omesse dall'edizione a stampa ma sono disponibili
online.
@unnumberedsec Convenzioni tipografiche
@cindex Texinfo
-Questo @value{DOCUMENT} @`e scritto in
@uref{http://www.gnu.org/software/texinfo/, Texinfo},
+Questo @value{DOCUMENT} @`e scritto in
@uref{https://www.gnu.org/software/texinfo/, Texinfo},
il linguaggio di formattazione della documentazione GNU. Viene usato un unico
file sorgente Texinfo per produrre sia la versione a stampa della
documentazione
sia quella online.
@@ -2130,9 +2154,9 @@ per la consultazione
@end ifclear
La GPL si applica al codice sorgente in linguaggio C per @command{gawk}.
Per saperne di address@hidden sulla FSF e sul Progetto GNU,
-si veda @uref{http://www.gnu.org, la pagina principale del Progetto GNU}.
+si veda @uref{https://www.gnu.org, la pagina principale del Progetto GNU}.
Questo @value{DOCUMENT} si address@hidden leggere anche dal
address@hidden://www.gnu.org/software/gawk/manual/, sito di GNU}.
address@hidden://www.gnu.org/software/gawk/manual/, sito di GNU}.
@ifclear FOR_PRINT
Una shell, un editor (Emacs), compilatori ottimizzanti C, C++ e
@@ -2223,8 +2247,9 @@ dovreste prima guardare il file @file{NEWS} nella
distribuzione di
@command{gawk}, che fornisce un sommario ad alto livello dei
cambiamenti in ciascuna versione.
-You can then look at the @uref{http://www.gnu.org/software/gawk/manual/,
-online version} of this @value{DOCUMENT} to read about any new features.
address@hidden poi possibile consultare la
@uref{https://www.gnu.org/software/gawk/manual/,
+versione online} di questo @value{DOCUMENT} per informazioni su eventuali
+nuove address@hidden
@end ifset
@ifclear FOR_PRINT
@@ -2379,6 +2404,7 @@ versione 3.1 di @command{gawk}.
@cindex Deifik, Scott
@cindex Demaille, Akim
@cindex G., Daniel Richard
address@hidden Guerrero, Juan Manuel
@cindex Hankerson, Darrel
@cindex Jaegermann, Michal
@cindex Kahrs, J@"urgen
@@ -2399,6 +2425,7 @@ Stephen Davies,
Scott Deifik,
Akim Demaille,
Daniel Richard G.,
+Juan Manuel Guerrero,
Darrel Hankerson,
Michal Jaegermann,
J@"urgen Kahrs,
@@ -2784,7 +2811,7 @@ awk -f consiglio
@end example
@noindent
address@hidden equivalente al comando:
+equivale al comando:
@example
awk 'BEGIN @{ print \"Non v\47allarmate!\" @}'
@@ -3215,16 +3242,65 @@ e della shell POSIX, il problema che stiamo per vedere
emerge abbastanza
spesso presso parecchi utenti, e per questo ne parliamo.
@cindex Brink, Jeroen
-Le ``shell'' nei sistemi Microsoft Windows usaso il carattere doppio apice
+Le ``shell'' nei sistemi Microsoft Windows usano il carattere doppio apice
per protezione, e rendono difficile o impossibile inserire un carattere
-doppio apice in uno @dfn{script} scritto su una riga di comando.
-l'esempio che segue, per il quale ringraziamo Jeroen Brink, mostra come
-stampare tutte le righe di un file, racchiudendole tra doppi apici:
+doppio apice letterale in uno @dfn{script} scritto su una riga di comando.
+L'esempio che segue, per il quale ringraziamo Jeroen Brink, mostra come
+proteggere i doppi apici, con questo script di una sola riga, che stampa
+tutte le righe di un file, racchiudendole tra doppi apici:
+
address@hidden
address@hidden print "\"" $0 "\"" @} @var{file}
address@hidden example
+
address@hidden
+In una riga di comando in ambiente MS-Windows lo script di una riga
+mostrato sopra address@hidden essere eseguito immettendo:
@example
gawk "@{ print \"\042\" $0 \"\042\" @}" @var{file}
@end example
+In questo esempio, lo @samp{\042} @`e il codice ottale che rappresenta un
+doppio apice; @command{gawk} lo trasforma in un carattere doppio apice
+per poi scriverlo in output con l'istruzione @code{print}.
+
+In ambiente MS-Windows proteggere i doppi apici richiede questo
+espediente perch@'e occorre usare delle barre inverse per proteggere
+i doppi apici, ma le barre inverse non sono protette nella solita maniera;
+in effetti le barre inverse vanno raddoppiate (oppure no), a seconda che
+siano seguite (oppure no) da un doppio apice.
+La regola in ambiente MS-Windows per racchiudere tra doppi apici una
+stringa @`e la seguente:
+
address@hidden
address@hidden
+Per ogni doppio apice presente nella stringa originale, sia @var{N} il
+numero di barre inverse presenti nella stringa prima di esso (@var{N}
+potrebbe anche valere zero). Si rimpiazzino queste @var{N} barre inverse
+con @address@hidden@var{N}+1} barre inverse.
+
address@hidden
+Sia poi @var{N} il numero di barre inverse alla fine della stringa originale,
+(@var{N} potrebbe anche valere zero). Si rimpiazzino queste @var{N}
+barre inverse con @address@hidden@var{N}} barre inverse
+
address@hidden
+La stringa address@hidden@dotless{i}} prodotta va racchiusa fra doppi apici.
address@hidden enumerate
+
+Quindi, per racchiudere fra doppi apici lo script di
+una linea @address@hidden print "\"" $0 "\"" @}} del precedente esempio, si
+dovrebbe fare address@hidden@dotless{i}}:
+
address@hidden
+gawk "@{ print \"\\\"\" $0 \"\\\"\" @}" @var{file}
address@hidden example
+
address@hidden
+Comunque, usare la notazione @samp{\042} invece che @samp{\\\"} rimane
+possibile, e di address@hidden facile lettura, perch@'e le barre inverse che
non sono
+seguite da un doppio apice non hanno bisogno di essere duplicate.
@node File dati di esempio
@section @value{DDF} per gli esempi
@@ -4151,6 +4227,25 @@ Questo @`e particolarmente utile quando si hanno
funzioni di libreria che si
vogliono usare dai programmi da riga di comando
(@pxref{AWKPATH (Variabile)}).
+Si noti che @command{gawk} elabora ogni stringa come se fosse terminata
+da un carattere di ritorno a capo (anche se non @`e questo il caso).
address@hidden facilita la costruzione del programma completo.
+
address@hidden ATTENZIONE
+Non c'@`e ancora alcuna specifica che imponga che ogni @var{testo-di-programma}
+costituisca un'address@hidden sintattica completa. P.es., il codice che segue
+funziona a tutt'oggi:
+
address@hidden
+$ @kbd{gawk -e 'BEGIN @{ a = 5 ;' -e 'print a @}'}
address@hidden 5
address@hidden example
+
address@hidden
+Comunque address@hidden potrebbe cambiare in futuro, e per questo motivo non
@`e una
+buona idea utilizzare questa address@hidden
address@hidden quotation
+
@item @option{-E} @var{file}
@itemx @option{--exec} @var{file}
@cindex @option{-E}, opzione
@@ -4178,7 +4273,7 @@ codice sorgente @command{awk} (con @option{-e})
all'applicazione
address@hidden maggiori dettagli,
si veda la Sezione 4.4 di @uref{http://www.ietf.org/rfc/rfc3875,
RFC 3875}. Si veda anche
address@hidden://lists.gnu.org/archive/html/bug-gawk/2014-11/msg00022.html,
address@hidden://lists.gnu.org/archive/html/bug-gawk/2014-11/msg00022.html,
note esplicative spedite alla mailing list @command{gawk} bug}.}
Quest'opzione dovrebbe essere usata
con @dfn{script} @samp{#!}
@@ -4725,7 +4820,7 @@ il percorso viene cercato di nuovo dopo aver aggiunto il
suffisso
Il meccanismo di ricerca del percorso di @command{gawk} @`e simile a quello
della shell.
-(Si veda @uref{http://www.gnu.org/software/bash/manual/,
+(Si veda @uref{https://www.gnu.org/software/bash/manual/,
@cite{The Bourne-Again SHell manual}}.)
Un elemento nullo nel percorso indica la directory corrente.
(Un elemento nullo @`e indicato iniziando o terminando il percorso con un segno
@@ -5091,7 +5186,7 @@ $ @kbd{gawk '@@load "ordchr"; BEGIN @{print chr(65)@}'}
@end example
@noindent
-Questo @`e equivalente all'esempio seguente:
+Questo equivale all'esempio seguente:
@example
$ @kbd{gawk -lordchr 'BEGIN @{print chr(65)@}'}
@@ -5224,27 +5319,6 @@ programmi erano stati scritti.
Le funzioni predefinite standard di command{awk}, per esempio
@code{sin()} o @code{substr()} @emph{non} ammettono questa address@hidden
-Il vettore @code{PROCINFO["argv"]} contiene tutti gli argomenti della
-riga di comando (una volta espansi i metacaratteri ed elaborata la
-ridirezione, nelle piattaforme in cui address@hidden dev'essere fatto
manualmente
-dal programma), con indici che vanno da 0 as @code{argc} @minus{} 1.
-Per esempio, @code{PROCINFO["argv"][0]} address@hidden il nome con cui @`e
-stato invocato @command{gawk}. L'esempio seguente mostra come @`e
-possibile usare questa address@hidden:
-
address@hidden
-awk '
-BEGIN @{
- for (i = 0; i < length(PROCINFO["argv"]); i++)
- print i, PROCINFO["argv"][i]
address@hidden'
address@hidden example
-
address@hidden da tener presente che questo vettore @`e diverso dal vettore
-standard @code{ARGV} che non comprende quegli argomenti della riga di
-comando che sono address@hidden stati elaborati da
address@hidden (@pxref{ARGC e ARGV}).
-
@end ignore
@node Sommario invocazione
@@ -5671,7 +5745,7 @@ come metacaratteri veri e propri, e questo @`e
address@hidden che @command{gawk} fa.
In address@hidden compatibile (@pxref{Opzioni}),
@command{gawk} tratta i caratteri scritti come sequenze ottali ed esadecimali
letteramente, quando sono usati in costanti @dfn{regexp}. Quindi,
address@hidden/a\52b/} @`e equivalente a @code{/a\*b/}.
address@hidden/a\52b/} equivale a @code{/a\*b/}.
@end sidebar
@node Operatori di espressioni regolari
@@ -5933,7 +6007,7 @@ All'interno di un'espressione tra parentesi quadre, una
@dfn{espressione di intervallo} @`e formata da due caratteri separati da un
trattino. Individua ogni singolo carattere compreso tra i due caratteri,
ordinati secondo l'insieme di caratteri in uso nel sistema. Per esempio,
address@hidden @`e equivalente a @samp{[0123456789]}.
address@hidden equivale a @samp{[0123456789]}.
(Si veda @ref{Intervalli e localizzazione} per una spiegazione di come
lo standard POSIX e @command{gawk} sono cambiati nel corso degli anni.
La cosa ha un interesse principalmente storico.)
@@ -6631,6 +6705,8 @@ getline (@pxref{Getline}).
* Dimensione costante:: Leggere campi di larghezza costante.
* Separazione in base al contenuto:: Definire campi dal loro contenuto.
* Righe multiple:: Leggere record che sono su address@hidden
righe.
+* Controllare la creazione di campi:: Controllare come @command{gawk} sta
+ dividendo i record.
* Getline:: Leggere file sotto il controllo del
programma, usando la funzione
@code{getline}.
@@ -7230,7 +7306,7 @@ $ @kbd{echo a b c d | awk '@{ OFS = ":"; $2 = ""; $6 =
"nuovo"}
@noindent
Il campo intermedio, @code{$5}, @`e creato con un valore vuoto
-(indicato dalla seconda coppia di due punti adiacenti),
+(indicato dalla seconda coppia di due punti @code{:} adiacenti),
e @code{NF} @`e aggiornato col valore sei.
@cindex angolo buio, variabile @code{NF}, decremento
@@ -7812,18 +7888,38 @@ di @command{gawk}. Se si @`e un utente alle prime armi
di @command{awk},
la si address@hidden saltare in prima lettura.
@command{gawk} fornisce una address@hidden per il trattamento di campi
-a larghezza fissa senza un separatore di campo distintivo. Per esempio,
-dati di questo tipo si trovano nell'input per vecchi programmi Fortran dove
-dei numeri sono elencati uno dopo l'altro, o nell'output di programmi che
-non prevedono che il loro output sia dato in input ad altri programmi.
+a larghezza fissa senza un separatore di campo distintivo. Questa
address@hidden @`e trattata
address@hidden
+nelle seguenti
address@hidden ifnotinfo
address@hidden
+nei seguenti
address@hidden ifinfo
address@hidden
+
address@hidden
+* Dati di larghezza fissa:: Elaborare dati di lunghezza fissa.
+* Saltare campi intermedi:: Saltare campi intermedi.
+* Consentire dati a fine record:: Trattare dati opzionali a fine record.
+* Campi con dati a larghezza fissa:: Valore di campi con dati a larghezza
+ fissa.
address@hidden menu
+
address@hidden Dati di lunghezza fissa
address@hidden Elaborare dati di lunghezza fissa
+
+Un esempio di dati a lunghezza fissa address@hidden essere l'input per vecchi
programmi
+Fortran dove dei numeri sono elencati uno dopo l'altro, o l'output di
+programmi che non prevedono che questo loro output sia dato in input ad
+altri programmi.
Un esempio di quest'ultimo caso @`e una tabella dove tutte le colonne sono
allineate usando un numero variabile di spazi e dove @emph{i campi vuoti
sono solo spazi}. Chiaramente, la normale divisione in campi di
@command{awk} basata su @code{FS} non funziona bene in questa situazione.
-Sebbene un programma @command{awk}
-portabile possa usare una serie di chiamate @code{substr()} su @code{$0}
-(@pxref{Funzioni per stringhe}),
+Sebbene un programma @command{awk} portabile possa usare una serie di
+chiamate @code{substr()} su @code{$0} (@pxref{Funzioni per stringhe}),
questo @`e scomodo e inefficiente se il numero dei campi @`e elevato.
@cindex risoluzione di problemi, errori fatali, specificare larghezza dei campi
@@ -7839,7 +7935,9 @@ del campo, @emph{comprese} le colonne tra i campi. Se si
vogliono ignorare le
colonne tra i campi si address@hidden specificare la loro larghezza come un
campo
separato che address@hidden poi ignorato.
@`E un errore fatale definire una larghezza di campo che abbia un valore
-negativo. I dati seguenti costituiscono l'output del programma di
address@hidden
+negativo.
+
+I dati seguenti costituiscono un output del programma di address@hidden
Unix @command{w}. @`E utile per spiegare l'uso di @code{FIELDWIDTHS}:
@example
@@ -7869,7 +7967,7 @@ NR > 2 @{
sub(/^ +/, "", inat) # togli spazi prima del valore
if (inat == "")
inat = 0
- if (inat ~ /:/) @{
+ if (inat ~ /:/) @{ # hh:mm
split(inat, t, ":")
inat = t[1] * 60 + t[2]
@}
@@ -7910,7 +8008,96 @@ usare la address@hidden @code{FIELDWIDTHS} per
semplificare la lettura dei dati.
(Naturalmente, riuscire a eseguire @command{gawk} su un sistema con lettori di
schede @`e un'altra storia!)
address@hidden @command{gawk}, separazione in campi e
address@hidden Saltare campi intermedi
address@hidden Saltare campi intermedi
+
+A partire dalla @value{PVERSION} 4.2, ogni specifica di una larghezza di campo
address@hidden essere facoltativamente preceduta da un valore, delimitato dai
due punti
address@hidden:}, che indica il numero di caratteri da saltare prima
dell'inizio del campo
+successivo. Quindi, il programma precedente potrebbe essere riscritto per
+specificare @code{FIELDWIDTHS} in questo modo:
+
address@hidden
+BEGIN @{ FIELDWIDTHS = "8 1:5 4:7 6 1:6 1:6 2:33" @}
address@hidden example
+
+In questo modo si eliminano alcuni degli spazi bianchi che separano fra
+loro i campo. Dopo esser stato address@hidden@dotless{i}} modificato, il
programma produce
+i risultati seguenti:
+
address@hidden
+hzang ttyV3 50
+eklye ttyV5 0
+dportein ttyV6 107
+gierd ttyD3 1
+dave ttyD4 0
+brent ttyp0 286
+dave ttyq4 1296000
address@hidden example
+
address@hidden Consentire dati a fine record
address@hidden Trattare dati opzionali a fine record
+
+A volte dati di larghezza fissa possono essere seguiti da ulteriori dati
+la cui lunghezza non @`e nota @dfn{a priori}. Tali dati possono essere
+presenti o meno, ma, nel caso siano presenti, dovrebbe essere possibile
+elaborarli all'interno di un programma @command{awk}.
+
+A partire dalla @value{PVERSION} 4.2, per consentire di poter designare
+``tutto il resto del record dopo i campi a lunghezza fissa''
address@hidden prevede la address@hidden di aggiungere un carattere @samp{*}
+in fondo alla descrizione contenuta in @code{FIELDWIDTHS}.
+Ci address@hidden essere un solo carattere @samp{*}, e dev'essere l'ultimo
carattere
+diverso da uno spazio in @code{FIELDWIDTHS}.
+Per esempio:
+
address@hidden
+$ @kbd{cat fw.awk} @ii{Visualizza il programma}
address@hidden BEGIN @{ FIELDWIDTHS = "2 2 *" @}
address@hidden @{ print NF, $1, $2, $3 @}
+$ @kbd{cat fw.in} @ii{Visualizza l'input dell'esempio}
address@hidden 1234abcdefghi
+$ @kbd{gawk -f fw.awk fw.in} @ii{Esegui il programma}
address@hidden 3 12 34 abcdefghi
address@hidden example
+
address@hidden Campi con dati a larghezza fissa
address@hidden Valore di campi con dati a larghezza fissa
+
+Fin qui, tutto bene. Ma cosa succede se non ci sono abbastanza dati
+rispetto a quelli che dovrebbero essere presenti in base alla descrizione
+contenuta in @code{FIELDWIDTHS}? E invece cosa succede se i dati sono
address@hidden di quelli previsti?
+
+Per molti anni, quel che succede in questi casi non era definito con
+esattezza. A partire dalla @value{PVERSION} 4.2 le regole sono le seguenti:
+
address@hidden @asis
address@hidden Dati sufficienti per uno o address@hidden campi
+Per esempio, se @code{FIELDWIDTHS} @`e impostato a @code{"2 3 4"} e il record
+in input @`e @samp{aabbb}. In questo caso, @code{NF} @`e impostato a due.
+
address@hidden Dati insufficienti per la specifica di un campo
+Per esempio, se @code{FIELDWIDTHS} @`e impostato a @code{"2 3 4"} e il record
+in input @`e @samp{aab}. In questo caso, @code{NF} @`e impostato a due e
+il campo numero @code{$2} ha come valore @code{"b"}. L'idea @`e che, anche se
+ci sono meno caratteri di quelli previsti, qualcosa @`e presente, e quindi il
+dato dovrebbe essere reso disponibile al programma.
+
address@hidden Troppi dati
+Per esempio, se @code{FIELDWIDTHS} @`e impostato a @code{"2 3 4"} e il record
+in input @`e @samp{aabbbccccddd}. In questo caso, @code{NF} @`e impostato a
+tre e i caratteri in eccesso (@samp{ddd}) sono ignorati. Se si vuole che
address@hidden elabori i caratteri in address@hidden, si deve aggiungere un
@samp{*}
+in fondo, nel valore di @code{FIELDWIDTHS}.
+
address@hidden Troppi dati, ma @`e stato specificato @samp{*}
+Per esempio, se @code{FIELDWIDTHS} @`e impostato a @code{"2 3 4 *"} e il record
+in input @`e @samp{aabbbccccddd}. In questo caso, @code{NF} @`e impostato a
+quattro, e @code{$4} ha come valore @code{"ddd"}.
+
address@hidden table
+
L'assegnazione di un valore a @code{FS} fa address@hidden@dotless{i}} che
@command{gawk} usi @code{FS}
per separare nuovamente i campi. Si address@hidden usare @samp{FS = FS} per
ottenere
questo effetto, senza dover conoscere il valore corrente di @code{FS}.
@@ -7956,6 +8143,7 @@ di @command{gawk}. Se si @`e un utente alle prime armi
di @command{awk},
la si address@hidden saltare in prima lettura.
@cindex address@hidden avanzate, specificare il contenuto dei campi
+
Normalmente, quando si usa @code{FS}, @command{gawk} definisce i campi come
le parti del record che si trovano tra due separatori di campo. In altre
parole, @code{FS} definisce cosa un campo @emph{non @`e}, invece di cosa
@@ -8057,8 +8245,6 @@ campi con @code{FPAT}.
Se si assegna un valore a @code{FPAT} la divisione in campi non viene
effettuata utilizzando @code{FS} o @code{FIELDWIDTHS}.
-Analogamente a @code{FIELDWIDTHS}, il valore di @code{PROCINFO["FS"]}
address@hidden @code{"FPAT"} se @`e in uso la suddivisione in campi in base al
contenuto.
@quotation NOTA
Alcuni programmi esportano dei dati CSV che contengono dei ritorni a capo al
@@ -8092,6 +8278,48 @@ Il meccanismo usato @`e determinato da quella tra le tre
address@hidden, @code{FIELDWIDTHS}, o @code{FPAT}---a cui
sia stato assegnato un valore address@hidden recentemente.
address@hidden Controllare la creazione di campi
address@hidden Controllare come @command{gawk} sta dividendo i record
+
address@hidden @command{gawk}, separazione in campi e
+Come visto sopra, @command{gawk} fornisce tre metodi indipendenti per
+dividere i record in input in campi. Il meccanismo utilizzato dipende da
+quale delle tre address@hidden, @code{FIELDWIDTHS}, o
address@hidden@`e stato definito per ultimo.
+Inoltre, un analizzatore di input che utilizzi l'API (Application
+Programming Interface) address@hidden scegliere di modificare il meccanismo di
+analisi dei record; si veda @ref{Analizzatori di input} per ulteriori
informazioni
+riguardo a questa address@hidden
+
+Per ripristinare la normale divisione in campi dopo aver fatto uso
+di @code{FIELDWIDTHS} e/o @code{FPAT}, @`e sufficiente assegnare un valore
+alla variabile @code{FS}.
+Si address@hidden usare @samp{FS = FS} per farlo, senza bisogno di conoscere il
+valore corrente di @code{FS}.
+
+Per determinare quale sia il tipo di divisione dei campi attiva al momento,
+si usi @code{PROCINFO["FS"]} (@pxref{Variabili auto-assegnate}).
+Il valore @`e @code{"FS"} se si usa la maniera normale di divisione dei campi,
address@hidden"FIELDWIDTHS"} se si usa la divisione in campi di lunghezza fissa
+oppure @code{"FPAT"} se si una la divisione in campi in base al contenuto:
+
address@hidden
+if (PROCINFO["FS"] == "FS")
+ @var{divisione normale in campi} @dots{}
+else if (PROCINFO["FS"] == "FIELDWIDTHS")
+ @var{divisione in campi a lunghezza fissa} @dots{}
+else if (PROCINFO["FS"] == "FPAT")
+ @var{divisione in campi in base al contenuto} @dots{}
+else
+ @var{divisione in campi da analizzatore di input API} @dots{}
+ @ii{(address@hidden avanzata)}
address@hidden example
+
+Quest'informazione @`e utile se si sta scrivendo una funzione che
+deve cambiare provvisoriamente @code{FS} o @code{FIELDWIDTHS}, leggere alcuni
+record e poi ripristinare le inpostazioni originali. Si veda
+(@pxref{Funzioni Passwd} per un esempio si una funzione di questo tipo.
+
@node Righe multiple
@section Record su righe multiple
@@ -11779,7 +12007,7 @@ in ordine di precedenza, da quella address@hidden alta
a quella address@hidden bassa:
@item @var{x} ^ @var{y}
@itemx @var{x} ** @var{y}
Elevamento a potenza; @var{x} elevato alla potenza @var{y}. @samp{2 ^ 3}
-ha il valore otto; la sequenza di caratteri @samp{**} @`e equivalente a
+ha il valore otto; la sequenza di caratteri @samp{**} equivale a
@samp{^}. @value{COMMONEXT}
@item - @var{x}
@@ -12121,7 +12349,7 @@ pippo += 5
@end example
@noindent
-Questo @`e equivalente a:
+Questo equivale a:
@example
pippo = pippo + 5
@@ -14194,7 +14422,7 @@ Se sono state scritte estensioni che modificano la
gestione del record
@pxref{Analizzatori di input}), @`e possibile richiamarle
a questo punto, prima che @command{gawk} inizi a elaborare il file.
(Questa @`e una address@hidden @emph{molto} avanzata, usata al momento solo dal
address@hidden://sourceforge.net/projects/gawkextlib, progetto
@code{gawkextlib}}.)
address@hidden://sourceforge.net/projects/gawkextlib, progetto
@code{gawkextlib}}.)
@end itemize
La regola @code{ENDFILE} @`e chiamata quando @command{gawk} ha finito di
@@ -14368,7 +14596,7 @@ da dei punti e virgola.
Le parentesi graffe attorno a un'azione vanno usate anche se l'azione
contiene una sola istruzione o se non contiene alcuna istruzione.
Comunque, se si omette completamente l'azione, si possono omettere anche le
-parentesi graffe. Un'azione omessa @`e equivalente a specificare
+parentesi graffe. Un'azione omessa equivale a specificare
@address@hidden print $0 @}}:
@example
@@ -14715,7 +14943,7 @@ for (i = 1; i <= 100; i *= 2)
Se non @`e necessaria, ognuna delle tre espressioni fra
parentesi che segue la parola chiave @code{for} address@hidden essere omessa.
Quindi,
address@hidden@samp{for (; x > 0;)}} @`e equivalente a @address@hidden (x >
0)}}. Se la
address@hidden@samp{for (; x > 0;)}} equivale a @address@hidden (x > 0)}}. Se
la
@var{condizione} @`e omessa del tutto, @`e ritenuta sempre vera, producendo
un @dfn{ciclo infinito} (address@hidden, un ciclo che non finisce mai).
@@ -15314,6 +15542,9 @@ Il suo valore di default @`e @code{"%.6g"}.
Una lista di posizioni di colonna, separate da spazi, per dire a
@command{gawk}
come dividere campi in input posti su colonne fisse.
+A partire dalla @value{PVERSION} 4.2, ogni lunghezza di campo address@hidden
essere
+facoltativamente preceduta da un valore, separato da due punti @code{:}
+che specifica il numero di caratteri da ignorare prima dell'inizio del campo.
Assegnando un valore a @code{FIELDWIDTHS}, le variabili @code{FS} e
@code{FPAT}
@emph{non} vengono usate per effettuare la divisione in campi.
@@ -15478,7 +15709,7 @@ per default 53 bit (@pxref{Impostare la precisione}).
La address@hidden di arrotondamento da usare per operazioni aritmetiche a
precisione
arbitraria svolte sui numeri, per default @code{"N"}
(@code{roundTiesToEven} nello standard
-IEEE 754; @pxref{Impostare modi di arrotondare}).
+IEEE 754; @pxref{Impostare modo di arrotondare}).
@cindex @code{RS}, variabile
@cindex variabile @code{RS}
@@ -15766,6 +15997,27 @@ I seguenti elementi (elencati in ordine alfabetico)
sono sicuramente sempre disponibili:
@table @code
address@hidden PROCINFO["argv"]
address@hidden argomenti, riga di comando, @code{PROCINFO["argv"}
+Il vettore @code{PROCINFO["argv"]} contiene tutti gli argomenti della riga di
+comando (dopo che l'eventuale elaborazione di valutazione e ridirezione,
+nelle piattaforme in cui address@hidden debba essere fatto a cura del
programma), con
+indici che vanno da 0 a @code{argc} @minus{} 1. Per esempio,
address@hidden"argv"][0]} address@hidden il nome con cui @command{gawk} @`e
stato
+richiamato. Ecco un esempio di come si address@hidden usare questa
address@hidden:
+
address@hidden
+gawk '
+BEGIN @{
+ for (i = 0; i < length(PROCINFO["argv"]); i++)
+ print i, PROCINFO["argv"][i]
address@hidden'
address@hidden example
+
+Si prega di notare che questo vettore @`e diverso dal vettore standard
address@hidden il quale non include quegli argomenti della riga di comando
+che sono address@hidden stati elaborati da @command{gawk} (@pxref{ARGC e
ARGV}).
+
@cindex effettivo, @dfn{ID di gruppo} dell'utente di @command{gawk}
@item PROCINFO["egid"]
Il valore restituito dalla chiamata di sistema @code{getegid()}.
@@ -15782,7 +16034,9 @@ Il valore restituito dalla chiamata di sistema
@code{geteuid()}.
Questo elemento vale
@code{"FS"} se @`e in uso la separazione in campi con @code{FS},
@code{"FIELDWIDTHS"} se @`e in uso quella con @code{FIELDWIDTHS},
-oppure @code{"FPAT"} se @`e in uso l'individuazione di campo con @code{FPAT}.
address@hidden"FPAT"} se @`e in uso l'individuazione di campo con @code{FPAT}, o
address@hidden"API"} se la divisione in campi @`e controllata da un analizzatore
+di input tramite API.
@item PROCINFO["gid"]
@cindex @dfn{ID di gruppo} dell'utente @command{gawk}
@@ -17923,11 +18177,12 @@ troncato togliendo i decimali.
Per esempio, @code{int(3)} @`e 3, @code{int(3.9)} @`e 3, @code{int(-3.9)}
@`e @minus{}3, e @code{int(-3)} @`e ancora @minus{}3.
address@hidden @code{intdiv(@var{numeratore}, @var{denominatore},
@var{risultato})}
address@hidden
address@hidden funzione @code{intdiv}
address@hidden INTDIV
address@hidden @code{intdiv0(@var{numeratore}, @var{denominatore},
@var{risultato})}
address@hidden
address@hidden funzione @code{intdiv0}
Esegue una divisione tra numeri interi, simile alla funzione standard C
-che ha lo stesso nome. Dapprima, il @code{numeratore} e il
address@hidden Dapprima, il @code{numeratore} e il
@code{denominatore} vengono troncati, eliminando la parte decimale,
per trasformarli in numeri interi.
Il vettore @code{risultato} viene dapprima svuotato, e poi viene impostato
@@ -17936,7 +18191,9 @@ l'elemento @code{risultato["quotient"]} al risultato
della divisione
mediante l'eliminazione dei decimali,
e viene impostato l'elemento @code{risultato["remainder"]} al
risultato dell'operazione @samp{numeratore % denominatore}, troncato a
-numero intero allo stesso modo del risultato. Questa funzione @`e
+numero intero allo stesso modo del risultato.
+Il tentativo di effettuare una divisione per zero provoca la fine del
+programma. Questa funzione @`e
rivolta principalmente a chi usa numeri interi di lunghezza arbitraria;
consente di evitare la creazione di numeri in virgola mobile
di precisione arbitaria usando la address@hidden MPFR
@@ -17944,6 +18201,7 @@ di precisione arbitaria usando la address@hidden MPFR
Questa funzione @`e un'estensione @code{gawk}. Non @`e disponibile in
address@hidden compatibile (@pxref{Opzioni}).
address@hidden ifset
@item @code{log(@var{x})}
@cindexawkfunc{log}
@@ -18518,7 +18776,7 @@ l'impiego di un terzo argomento causa un errore fatale.
@cindex dividere in un vettore una stringa
@cindex creare un vettore da una stringa
Divide
address@hidden in parti definite da @var{regexpdelim}
address@hidden in pezzi (o ``campi'') definiti da @var{fieldpat}
e memorizza i pezzi in @var{vettore} e le stringhe di separazione nel
vettore @var{separatori}. Il primo pezzo @`e memorizzato in
@address@hidden, il secondo pezzo in @address@hidden, e
@@ -18530,9 +18788,12 @@ address@hidden essere una costante @dfn{regexp} o una
stringa.
Se @var{regexpdelim} @`e omesso, viene usato il valore di @code{FPAT}.
@code{patsplit()} restituisce il numero di elementi creati.
@address@hidden@var{i}]} @`e
-la stringa che separa
-l'elemento @address@hidden@var{i}]} e @address@hidden@var{i}+1]}.
-Ogni separatore iniziale address@hidden in @address@hidden
+la stringa (che potrebbe anche essere la stringa nulla) dopo
+l'elemento @address@hidden@var{i}]}.
+Il separatore iniziale (che potrebbe anche essere la stringa nulla)
address@hidden in @address@hidden
+Quindi, una @var{stringa} non nulla, con @var{n} campi address@hidden @var{n+1}
+separatori. Una stringa nulla non address@hidden n@'e campi n@'e separatori.
La funzione @code{patsplit()} divide delle stringhe in pezzi in modo
simile a quello con cui le righe in input vengono divise in campi
@@ -20368,23 +20629,31 @@ Per esempio:
BEGIN @{
# crea a[1] ma non gli attribuisce alcun valore
a[1]
- print typeof(a[1]) # unassigned
+ print typeof(a[1]) # non assegnato
@}
@end example
@item "untyped"
@var{x} non @`e stata usata per nulla; address@hidden diventare uno scalare o
un
-vettore.
+vettore. @`E anche possibile che il tipo sia differente, in differenti
+esecuzioni del medesimo programma!
Per esempio:
@example
BEGIN @{
- print typeof(x) # x non @`e mai stato usato --> untyped
- mk_arr(x)
- print typeof(x) # x ora @`e un vettore --> array
+ print "all'inizio, typeof(v) = ", typeof(v)
+
+ if ("FOO" in ENVIRON)
+ make_scalar(v)
+ else
+ make_array(v)
+
+ print "typeof(v) =", typeof(v)
@}
-function mk_arr(a) @{ a[1] = 1 @}
+function make_scalar(p, l) @{ l = p @}
+
+function make_array(p) @{ p[1] = 1 @}
@end example
@end table
@@ -21421,7 +21690,7 @@ sono un metodo per chiamare una funzione scelta al
momento dell'esecuzione.
Uno dei address@hidden noti usi di questa address@hidden @`e
la funzione C @code{qsort()}, che ordina un vettore usando il famoso
algoritmo noto come ``quicksort''
-(si veda @uref{http://en.wikipedia.org/wiki/Quicksort, l'articolo di Wikipedia}
+(si veda @uref{https://en.wikipedia.org/wiki/Quicksort, l'articolo di
Wikipedia}
per ulteriori informazioni). Per usare questa funzione, si specifica un
puntatore a una funzione di confronto. Questo meccanismo consente
di ordinare dei dati arbitrari in una maniera arbitraria.
@@ -23065,8 +23334,8 @@ $ @kbd{cat dati}
$ cat @kbd{test.awk}
@print{} FNR == 3 && ! riavvolto @{
address@hidden riavvolto = 1
address@hidden rewind()
address@hidden riavvolto = 1
address@hidden rewind()
@print{} @}
@print{}
@print{} @{ print FILENAME, FNR, $0 @}
@@ -23303,7 +23572,7 @@ elaborare gli argomenti presenti
sulla riga di comando. Il programmatore fornisce una
stringa che descrive le opzioni, ognuna delle quali consiste di
una sola lettera. Se un'opzione richiede un
-argomento, nella stringa l'opzione @`e seguita da due punti.
+argomento, nella stringa l'opzione @`e seguita da due punti @code{:}.
A @code{getopt()} vengono anche
passati il numero e i valori degli argomenti presenti sulla riga di comando
e viene chiamata in un ciclo.
@@ -23491,7 +23760,7 @@ mantiene il suo valore attraverso chiamate successive a
@code{getopt()}, perch@'
L'espressione regolare che viene usata, @address@hidden/^-[^:[:space:]/}},
chiede di cercare un
@samp{-} seguito da qualsiasi cosa che non sia uno spazio vuoto o un carattere
-di due punti. Se l'argomento corrente sulla riga di comando non corrisponde a
+di due punti @code{:}. Se l'argomento corrente sulla riga di comando non
corrisponde a
quest'espressione regolare, vuol dire che non si tratta di un'opzione, e
quindi viene terminata l'elaborazione delle opzioni. Continuando:
@@ -23560,7 +23829,8 @@ conoscere quale lettera di opzione @`e quella non
valida. Proseguendo:
@c endfile
@end example
-Se l'opzione richiede un argomento, la lettera di opzione @`e seguita da due
punti
+Se l'opzione richiede un argomento, la lettera di opzione @`e seguita da
+due punti @code{:}
nella stringa @code{opzioni}. Se rimangono altri caratteri nell'argomento
corrente sulla riga di comando (@code{argv[Optind]}), il resto di quella
stringa
viene assegnato a @code{Optarg}. Altrimenti, viene usato il successivo
@@ -23797,7 +24067,7 @@ main(int argc, char **argv)
Se non si conosce il linguaggio C, non @`e il caso di preoccuparsi.
L'output di @command{pwcat} @`e la lista degli utenti, nel formato
-tradizionale del file @file{/etc/passwd} con campi separati da due punti.
+tradizionale del file @file{/etc/passwd} con campi separati da due punti
@code{:}.
I campi sono:
@table @asis
@@ -24190,7 +24460,7 @@ main(int argc, char **argv)
@end example
Ciascuna riga nella lista dei gruppi rappresenta un gruppo. I campi sono
-separati da due punti e rappresentano le seguenti informazioni:
+separati da due punti @code{:} e rappresentano le seguenti informazioni:
@table @asis
@item Nome del gruppo
@@ -25190,7 +25460,7 @@ carattere speciale come @value{FN}.
Normalmente, @command{egrep} stampa le righe per cui @`e stata trovata una
corrispondenza. Se nella riga di comando si richiede di operare su
address@hidden di un
@value{FN}, ogni riga in output @`e preceduta dal nome del file, e dal segno
-due punti.
+due punti @code{:}.
Le opzioni di @command{egrep} sono le seguenti:
@@ -25406,7 +25676,7 @@ usando @code{nextfile}. Analogamente, se stiamo solo
stampando @value{FNS},
possiamo stampare il @value{FN}, e quindi saltare al file successivo con
@code{nextfile}.
Infine, ogni riga viene stampata, preceduta, se necessario, dal @value{FN} e
-dai due punti:
+dai due punti @code{:}:
@cindex @code{!} (punto esclamativo), operatore @code{!}
@cindex punto esclamativo (@code{!}), operatore @code{!}
@@ -27199,7 +27469,7 @@ in grado di estrarre parti di un file in input Texinfo
e metterli in file
separati.
@cindex Texinfo
-Questo @value{DOCUMENT} @`e scritto in
@uref{http://www.gnu.org/software/texinfo/, Texinfo},
+Questo @value{DOCUMENT} @`e scritto in
@uref{https://www.gnu.org/software/texinfo/, Texinfo},
il programma di formattazione di documenti del progetto GNU.
Un solo file sorgente Texinfo address@hidden essere usato per produrre sia la
documentazione stampata, usando @TeX{}, sia quella online.
@@ -27207,7 +27477,7 @@ documentazione stampata, usando @TeX{}, sia quella
online.
(Texinfo @`e esaurientemente documentato nel libro
@cite{Texinfo---The GNU Documentation Format},
disponibile alla Free Software Foundation,
-e anche @uref{http://www.gnu.org/software/texinfo/manual/texinfo/, online}.)
+e anche @uref{https://www.gnu.org/software/texinfo/manual/texinfo/, online}.)
@end ifnotinfo
@ifinfo
(Il linguaggio Texinfo @`e descritto esaurientemente, a partire da
@@ -28258,9 +28528,9 @@ certainty through the space-time continuum.
#! /usr/bin/gawk -f
# Da "13.3.11 E ora per qualcosa di completamente differente"
-#
http://www.gnu.org/software/gawk/manual/html_node/Signature-Program.html#Signature-Program
+#
https://www.gnu.org/software/gawk/manual/html_node/Signature-Program.html#Signature-Program
-# Copyright é 2008 Davide Brini
+# Copyright @copyright{} 2008 Davide Brini
# Copying and distribution of the code published in this page, with
# or without modification, are permitted in any medium without
@@ -28882,7 +29152,7 @@ END @{
@end example
Il primo campo di ogni elemento del file delle password @`e il nome d'accesso
-dell'utente, e i campi sono separati tra loro da due punti.
+dell'utente, e i campi sono separati tra loro da due punti @code{:}.
Ogni record definisce un sottovettore,
con ogni campo come elemento nel sottovettore.
L'esecuzione del programma produce
@@ -29372,7 +29642,7 @@ Usare le @dfn{pty} in genere evita i problemi di stallo
del buffer descritti
precedentemente, in cambio di un piccolo calo di prestazioni. address@hidden
dipende
dal fatto che la gestione delle @dfn{tty} @`e fatta una riga per volta.
Su sistemi che hanno il comando @command{stdbuf} (parte del pacchetto
address@hidden://www.gnu.org/software/coreutils/coreutils.html,
address@hidden://www.gnu.org/software/coreutils/coreutils.html,
GNU Coreutils}), si address@hidden usare tale programma, invece delle
@dfn{pty}.
Si noti anche che le @dfn{pty} non sono completamente trasparenti.
@@ -29515,7 +29785,7 @@ Si veda
@end ifinfo
@ifnotinfo
Si veda
address@hidden://www.gnu.org/software/gawk/manual/gawkinet/,
address@hidden://www.gnu.org/software/gawk/manual/gawkinet/,
@address@hidden,
che fa parte della distribuzione @command{gawk},
@end ifnotinfo
@@ -30838,7 +31108,7 @@ maniera esauriente in
@inforef{Top, , GNU @command{gettext} utilities, gettext, GNU
@command{gettext} utilities}.)
@end ifinfo
@ifnotinfo
address@hidden://www.gnu.org/software/gettext/manual/,
address@hidden://www.gnu.org/software/gettext/manual/,
@cite{GNU @command{gettext} utilities}}.)
@end ifnotinfo
Al momento in cui questo libro @`e stato scritto, la versione address@hidden
recente di
@@ -30909,7 +31179,7 @@ eccezione.
Il @dfn{debugger} di @command{gawk} @`e di proposito costruito sul modello del
debugger da riga di comando
address@hidden://www.gnu.org/software/gdb/, GNU Debugger (GDB)}.
address@hidden://www.gnu.org/software/gdb/, GNU Debugger (GDB)}.
Se si ha address@hidden con GDB, address@hidden facile imparare come usare
@command{gawk}
per eseguire il debug dei propri programmi.
@@ -31391,7 +31661,14 @@ Ottenere informazioni
Comandi vari
@end itemize
-Ciascuna di esse @`e trattata nelle sottosezioni che seguono.
+Ciascuna di esse @`e trattata
address@hidden
+nelle seguenti
address@hidden ifnotinfo
address@hidden
+nei seguenti
address@hidden ifinfo
address@hidden
Nelle descrizioni seguenti, i comandi che possono essere abbreviati
mostrano l'abbreviazione su una seconda riga di descrizione.
Un nome di comando del debugger address@hidden essere anche troncato se la
parte address@hidden scritta
@@ -32455,6 +32732,7 @@ questo capitolo. Tuttavia, se si vogliono eseguire
calcoli scientifici con
* Cautela col calcolo in VM:: Cose da sapere.
* Interi a precisione arbitraria:: Calcolo con numeri interi a precisione
arbitraria con @command{gawk}.
+* Controllare address@hidden MPFR:: Come controllare se MPFR @`e disponibile.
* Problemi virgola mobile POSIX:: Confronto tra standard e uso corrente.
* Sommario virgola mobile:: Sommario della trattazione della
virgola mobile.
@@ -32652,13 +32930,13 @@ Qui, @emph{prec} indica la precisione binaria
indica le cifre decimali.
@item address@hidden
address@hidden://en.wikipedia.org/wiki/Numerical_stability,
address@hidden://en.wikipedia.org/wiki/Numerical_stability,
l'articolo di Wikipedia sulla address@hidden numerica}:
``I calcoli per i quali si address@hidden dimostrare che non amplificano gli
errori di
approssimazione sono chiamati @dfn{numericamente stabili}.''
@end table
-Si veda @uref{http://en.wikipedia.org/wiki/Accuracy_and_precision,
+Si veda @uref{https://en.wikipedia.org/wiki/Accuracy_and_precision,
l'articolo di Wikipedia su accuratezza e precisione} per maggiori informazioni
su questi due termini.
@@ -32732,7 +33010,7 @@ a livello globale per ogni operazione da eseguire.
@iftex
la
@end iftex
address@hidden modi di arrotondare}
address@hidden modo di arrotondare}
per maggiori informazioni.
@node Cautela col calcolo in VM
@@ -32769,7 +33047,7 @@ ottenere ulteriori informazioni, e non basarsi solo su
quanto qui detto.
sforzo.
* Tentare di arrotondare:: Aggiungere cifre di precisione e arrotondare.
* Impostare la precisione:: Come impostare la precisione.
-* Impostare modi di arrotondare:: Impostare le address@hidden di
arrotondamento.
+* Impostare modo di arrotondare:: Impostare le address@hidden di
arrotondamento.
@end menu
@node Inesattezza nei calcoli
@@ -33075,7 +33353,7 @@ $ @kbd{gawk -M 'BEGIN @{ PREC = 113; printf("%0.25f\n",
1/10) @}'}
@end example
@end quotation
address@hidden Impostare modi di arrotondare
address@hidden Impostare modo di arrotondare
@subsection Impostare la address@hidden di arrotondamento
La variabile @code{ROUNDMODE} permette di controllare a livello di programma
@@ -33293,16 +33571,17 @@ gawk -M 'BEGIN @{ n = 13; print n % 2 @}'
Dividendo due interi a precisione arbitraria con @samp{/} o con @samp{%}, il
risultato @`e tipicamente un valore a virgola mobile con precisione arbitraria
(a meno che il risultato non sia un numero intero esatto).
address@hidden INTDIV
Per eseguire divisioni intere o calcolare moduli con interi a precisione
arbitraria, usare la funzione predefinita
address@hidden()} (@pxref{Funzioni numeriche}).
address@hidden()} (@pxref{Funzioni numeriche}).
-Si address@hidden simulare la funzione @code{intdiv()} in @command{awk}
standard
+Si address@hidden simulare la funzione @code{intdiv0()} in @command{awk}
standard
usando questa funzione definita dall'utente:
@example
@c file eg/lib/intdiv.awk
-# intdiv --- fa una divisione intera
+# intdiv0 --- fa una divisione intera
@c endfile
@ignore
@@ -33313,12 +33592,15 @@ usando questa funzione definita dall'utente:
#
# Name changed from div() to intdiv()
# April, 2015
+#
+# Changed to intdiv0()
+# April, 2016
@c endfile
@end ignore
@c file eg/lib/intdiv.awk
-function intdiv(numerator, denominator, result)
+function intdiv0(numerator, denominator, result)
@{
split("", result)
@@ -33333,7 +33615,7 @@ function intdiv(numerator, denominator, result)
@end example
Il seguente programma d'esempio, proposto da Katie Wasserman,
-usa @code{intdiv()} per
+usa @code{intdiv0()} per
calcolare le cifre di @value{PI} al numero di cifre significative
che si @`e scelto di impostare:
@@ -33358,7 +33640,7 @@ BEGIN @{
for (m = cifre * 4; m > 0; --m) @{
d = m * 2 + 1
x = pi * m
- intdiv(x, d, risultato)
+ intdiv0(x, d, risultato)
pi = risultato["quotient"]
pi = pi + due
@}
@@ -33385,12 +33667,15 @@ It's Euler's modification to Newton's method for
calculating pi.
Take a look at lines (23) - (25) here:
http://mathworld.wolfram.com/PiFormulas.htm
-The algorithm I wrote simply expands the multiply by 2 and works from the
innermost expression outwards. I used this to program HP calculators because
it's quite easy to modify for tiny memory devices with smallish word sizes.
+The algorithm I wrote simply expands the multiply by 2 and works from
+the innermost expression outwards. I used this to program HP calculators
+because it's quite easy to modify for tiny memory devices with smallish
+word sizes.
http://www.hpmuseum.org/cgi-sys/cgiwrap/hpmuseum/articles.cgi?read=899
address@hidden quotation
-Katie
address@hidden ignore
Quando gli fu chiesto dell'algoritmo usato, Katie rispose:
@@ -33407,6 +33692,63 @@ dispositivi di scarsa memoria con dimensioni di parola
piuttosto piccole.
Si veda
@uref{http://www.hpmuseum.org/cgi-sys/cgiwrap/hpmuseum/articles.cgi?read=899}.
@end quotation
address@hidden ifset
+
address@hidden Controllare address@hidden MPFR
address@hidden Come controllare se MPFR @`e disponibile
+
address@hidden MPFR, controllare se disponibile
address@hidden controllare address@hidden MPFR
+In qualche occasione, potreste voler controllare se @command{gawk} sia stato
+chiamato specificando l'opzione @option{-M}, che consente di effettuare
+calcoli aritmetici di precisione arbitraria.
+Lo si address@hidden fare con la funzione seguente, messa a disposizione da
+Andrew Schorr:
+
address@hidden
address@hidden file eg/lib/have_mpfr.awk
+# precisione_matematica_sufficiente
+# --- restituisce "true" [vero]
+# se il numero di bit "n" di precisione richiesto
+# @`e disponibile per il programma
address@hidden endfile
address@hidden
address@hidden file eg/lib/have_mpfr.awk
+#
+# Andrew Schorr, aschorr@@telemetry-investments.com, Public Domain
+# May 2017
address@hidden endfile
address@hidden ignore
address@hidden file eg/lib/have_mpfr.awk
+
+function adequate_math_precision(n)
address@hidden
+ return (1 != (1+(1/(2^(n-1)))))
address@hidden
address@hidden endfile
address@hidden example
+
+Ecco un frammento di codice che invoca la funzione per controllare
+se l'aritmetica a precisione arbitraria @`e disponibile:
+
address@hidden
+BEGIN @{
+ # Quanti bit di precisione nella mantissa sono necessari
+ # perch@'e questo programma funzioni correttamente?
+ fpbits = 123
+
+ # Si spera che il programma sia stato invocato con MPFR abilitata.
+ # Se @`e questo il caso, le istruzioni seguenti dovrebbero configurare
+ # i calcoli al livello di precisione desiderato.
+ PREC = fpbits
+
+ if (! adequate_math_precision(fpbits)) @{
+ print("Errore: la precisione di calcolo disponibile non basta.\n" \
+ "Provare ancora specificando l'argomento -M?") > "/dev/stderr"
+ exit 1
+ @}
address@hidden
address@hidden example
@node Problemi virgola mobile POSIX
@section Confronto tra standard e uso corrente
@@ -33659,7 +34001,7 @@ e viene descritto il progetto @code{gawkextlib}.
progetto del meccanismo delle estensioni.
@end ifclear
@ifset FOR_PRINT
-Si veda
@uref{http://www.gnu.org/software/gawk/manual/html_node/estensione-Design.html}
+Si veda
@uref{https://www.gnu.org/software/gawk/manual/html_node/Extension-Design.html}
per una disamina degli obiettivi e del
progetto del meccanismo delle estensioni.
@end ifset
@@ -33974,6 +34316,12 @@ un'accozzaglia di problemi di address@hidden, quale si
address@hidden vedere in alcune
parti del codice sorgente di @command{gawk}.
@item
+Se l'estensione usa le address@hidden MPFR, e si desidera ricevere valori
+numerici di precisione arbitraria da @command{gawk} e/o passare ad esso
+tali valori, si deve includere l'intestazione
address@hidden<mpfr.h>} prima di includere @code{<gawkapi.h>}.
+
address@hidden
Il file @file{gawkapi.h} address@hidden essere incluso address@hidden volte,
senza conseguenze
negative. Tuttavia sarebbe meglio evitare di farlo, per uno
stile di programmazione migliore.
@@ -34137,7 +34485,7 @@ L'elenco @code{enum} indica di che tipo @`e un certo
valore.
@itemx @ @ @ @ awk_valtype_t val_type;
@itemx @ @ @ @ union @{
@itemx @ @ @ @ @ @ @ @ awk_string_t@ @ @ @ @ @ @ s;
address@hidden @ @ @ @ @ @ @ @ double@ @ @ @ @ @ @ @ @ @ @ @ @ d;
address@hidden @ @ @ @ @ @ @ @ awknum_t@ @ @ @ @ @ @ @ @ @ @ n;
@itemx @ @ @ @ @ @ @ @ awk_array_t@ @ @ @ @ @ @ @ a;
@itemx @ @ @ @ @ @ @ @ awk_scalar_t@ @ @ @ @ @ @ scl;
@itemx @ @ @ @ @ @ @ @ awk_value_cookie_t@ vc;
@@ -34150,13 +34498,39 @@ e ogni campo @`e del tipo appropriato.
@item #define str_value@ @ @ @ @ @ u.s
@itemx #define strnum_value@ @ @ str_value
@itemx #define regex_value@ @ @ @ str_value
address@hidden #define num_value@ @ @ @ @ @ u.d
address@hidden #define num_value@ @ @ @ @ @ u.n.d
address@hidden #define num_type@ @ @ @ @ @ @ u.n.type
address@hidden #define num_ptr@ @ @ @ @ @ @ @ u.n.ptr
@itemx #define array_cookie@ @ @ u.a
@itemx #define scalar_cookie@ @ u.scl
@itemx #define value_cookie@ @ @ u.vc
L'uso di queste macro rende address@hidden facile da seguire l'accesso ai
campi di
@code{awk_value_t}.
address@hidden typedef struct awk_number @{
address@hidden @ @ @ @ double d;
address@hidden @ @ @ @ enum AWK_NUMBER_TYPE @{
address@hidden @ @ @ @ @ @ @ @ AWK_NUMBER_TYPE_DOUBLE,
address@hidden @ @ @ @ @ @ @ @ AWK_NUMBER_TYPE_MPFR,
address@hidden @ @ @ @ @ @ @ @ AWK_NUMBER_TYPE_MPZ
address@hidden @ @ @ @ @} type;
address@hidden @ @ @ @ void *ptr;
address@hidden @} awk_number_t;
+Questo rappresenta un valore numerico. Internamente, @command{gawk}
+memorizza ogni numero o come una variabile C di tipo @code{double},
+o come un numero intero GMP, o come un numero MPFR a virgola mobile
+di precisione arbitraria. Per consentire alle estensioni di
+supportare valori numerici GMP ed MPFR, i valori numerici sono
+comunicati utilizzando questa struttura.
+
+L'elemento in doppia-precisione @code{d} @`e sempre valorizzato nei dati
+ricevuti da @command{gawk}. Inoltre, esaminando il membro
address@hidden, un'estensione @`e in grado di determinare se il membro puntato
+da @code{ptr} sia un numero intero GMP (tipo @code{mpz_ptr}), o un numero
+MPFR a virgola mobile (tipo @code{mpfr_ptr_t}), e trasformarlo a seconda
+delle address@hidden
+
+
@item typedef void *awk_scalar_t;
La variabili scalari possono essere rappresentate da un tipo opaco. Questi
valori sono ottenuti da @command{gawk} e in seguito gli vengono restituiti.
@@ -34333,8 +34707,8 @@ Se @command{gawk} usasse la propria versione di
@code{free()} per liberare
della memoria acquisita tramite una differente versione di @code{malloc()},
il risultato sarebbe molto probabilmente differente da quello atteso.
-Due macro di address@hidden possono essere usate per allocare memoria
-tramite @code{gawk_malloc()} e
+Tre macro di address@hidden possono essere usate per allocare memoria
+tramite @code{gawk_malloc()}, @code{gawk_calloc}, e
@code{gawk_realloc()}. Se l'allocazione non riesce, @command{gawk}
termina l'esecuzione con un messaggio di errore fatale.
Queste macro dovrebbero essere usate come se fossero dei richiami a
@@ -34374,12 +34748,45 @@ strcpy(message, greet);
make_malloced_string(message, strlen(message), & risultato);
@end example
address@hidden #define ezalloc(pointer, type, size, message) @dots{}
+Questo @`e simile a @code{emalloc()}, ma chiama @code{gawk_calloc()}
+invece che @code{gawk_malloc()}.
+Gli argomenti sono gli stessi della macro @code{emalloc()}, ma
+questa macro garantisce che la memoria allocata sia inizializzata
+a zeri binari.
+
@item #define erealloc(pointer, type, size, message) @dots{}
Questo @`e simile a @code{emalloc()}, ma chiama @code{gawk_realloc()}
invece che @code{gawk_malloc()}.
Gli argomenti sono gli stessi della macro @code{emalloc()}.
@end table
+Due ulteriori funzioni allocano oggetti MPFR e GMP per l'utilizzo
+da parte di funzioni di estensione che necessitino di creare e di
+restituire valori di questo tipo:
+
address@hidden @code
address@hidden void *get_mpfr_ptr();
+Alloca e inizializza un oggetto MPFR e restituisce un puntatore allo stesso.
+Se l'allocazione non riesce, @command{gawk} termina con un errore fatale
+``out of memory'' (memoria esaurita). Se @command{gawk} era stato compilato
+senza il supporto MPFR, chiamare questa funzione genera un errore fatale.
+
address@hidden void *get_mpz_ptr();
+Alloca e inizializza un oggetto GMP e restituisce un puntatore allo stesso.
+Se l'allocazione non riesce, @command{gawk} termina con un errore fatale
+``out of memory'' (memoria esaurita). Se @command{gawk} era stato compilato
+senza il supporto MPFR, chiamare questa funzione genera un errore fatale.
address@hidden table
+
+Entrambe queste funzioni restituiscono un codice di ritorno @samp{void *},
+poich@'e il file di intestazione @file{gawkapi.h} non dovrebbe avere dipendenze
+da @code{<mpfr.h>} (e @code{<gmp.h>},
+che @`e incluso da @code{<mpfr.h>}). I valori di ritorno effettivamente
+restituiti sono di tipo @code{mpfr_ptr} e @code{mpz_ptr} rispettivamente,
+e si dovrebbero assegnare in maniera appropriata questi valori di ritorno
+prima di assegnare i risultati a variabili del tipo corretto.
+
@node Funzioni di costruzione
@subsection Funzioni per creare valori
@@ -34428,6 +34835,20 @@ Questa funzione crea semplicemente un valore numerico
nella variabile
@code{awk_value_t}, puntata da @code{risultato}.
@item static inline awk_value_t *
address@hidden make_number_mpz(void *mpz, awk_value_t *result);
+Questa funzione crea un valore di numero GMP number in @code{result}.
address@hidden deve provenire da una chiamata a @code{get_mpz_ptr()}
+(e quindi essere veramente del corrispondente tipo @code{mpz_ptr}).
address@hidden assume la address@hidden di questa memoria.
+
address@hidden static inline awk_value_t *
address@hidden make_number_mpfr(void *mpfr, awk_value_t *result);
+Questa funzione crea un valore di numero MPFR number in @code{result}.
address@hidden deve provenire da una chiamata a @code{get_mpfr_ptr()}
+(e quindi essere veramente del corrispondente tipo @code{mpfr_ptr}).
address@hidden assume la address@hidden di questa memoria.
+
address@hidden static inline awk_value_t *
@itemx make_const_user_input(const char *stringa, size_t lunghezza,
awk_value_t *risultato);
Questa funzione @`e identica a @code{make_const_string()}, ma la stringa @`e
marcata come input dell'utente, che address@hidden essere trattata come
@dfn{strnum}
@@ -34562,10 +34983,10 @@ Una volta preparato un record che descrive
l'estensione, la funzione di
estensione va registrata con @command{gawk} usando questa funzione dell'API:
@table @code
address@hidden awk_bool_t add_ext_func(const char *namespace, awk_ext_func_t
*func);
address@hidden awk_bool_t add_ext_func(const char *name_space, awk_ext_func_t
*func);
Questa funzione restituisce il valore @dfn{true} se ha successo,
oppure @dfn{false} in caso contrario.
-Il parametro @code{namespace} non @`e usato per ora; dovrebbe puntare a una
+Il parametro @code{name_space} non @`e usato per ora; dovrebbe puntare a una
stringa vuota (@code{""}). Il puntatore @code{func} @`e l'indirizzo di una
@code{struct} che rappresenta la funzione stessa, come descritto sopra.
@@ -34760,7 +35181,8 @@ typedef struct awk_input @{
void *opaque; /* area dati privata
per l'analizzatore di input */
int (*get_record)(char **out, struct awk_input *iobuf,
- int *errcode, char **rt_start, size_t *rt_len);
+ int *errcode, char **rt_start, size_t *rt_len,
+ const awk_fieldwidth_info_t **field_width);
ssize_t (*read_func)();
void (*close_func)(struct awk_input *iobuf);
struct stat sbuf; /* buffer per stat */
@@ -34816,7 +35238,8 @@ L'analizzatore di input non @`e obbligato a usare
questo puntatore.
@itemx @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ struct@ awk_input *iobuf,
@itemx @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ int *errcode,
@itemx @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ char **rt_start,
address@hidden @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ size_t *rt_len);
address@hidden @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ size_t *rt_len,
address@hidden @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ const awk_fieldwidth_info_t
**field_width);
Questo puntatore a funzione dovrebbe puntare a una funzione che crea i record
in input. Tale funzione @`e il nucleo centrale dell'analizzatore di input.
Il suo modo di operare @`e descritto nel testo che segue questo elenco.
@@ -34869,6 +35292,22 @@ Se il concetto ``fine record'' @`e applicabile,
campo. In caso contrario, @code{*rt_len} dovrebbe essere impostata a zero.
@command{gawk} usa una sua copia di questi dati, quindi l'estensione deve
gestire tale memoria.
+
address@hidden const awk_fieldwidth_info_t **field_width
+Se @code{field_width} non @`e @code{NULL}, allora @code{*field_width}
address@hidden
+inizializzato a @code{NULL}, e la funzione address@hidden impostarlo per
puntare a una
+struttura che fornisca l'informazione sulla lunghezza del campo, che
address@hidden utilizzata al posto di quella determinata dall'analizzatore di
default
+del campo. Si noti che qeusta struttura non address@hidden copiata da
@command{gawk};
+inoltre essa deve rimanere disponibile almeno fino alla prossima chiamata a
address@hidden o a @code{close_func}. Si noti inoltre che
address@hidden vale @code{NULL} quando @code{getline} sta assegnando
+i risultati a una variabile, e quindi un'analisi del campo non @`e necessaria.
+Se l'analizzatore imposta @code{*field_width},
+allora @command{gawk} usa questa descrizione per analizzare il record in
+input, e il valore di @code{PROCINFO["FS"]} address@hidden @code{"API"}
finch@'e questo
+record rimane corrente come @code{$0}.
+La struttura dati @code{awk_fieldwidth_info_t} @`e descritta sotto.
@end table
Il codice di ritorno @`e la lunghezza del buffer puntato da
@@ -34932,6 +35371,51 @@ Registra l'analizzatore di input puntato da
@code{input_parser} con
@command{gawk}.
@end table
+Se si vuole sostituire il meccanismo di default per determinare i campi
+[con uno scritto dall'utente], si deve riempire una struttura
address@hidden che ha questo aspetto:
+
address@hidden
+typedef struct @{
+ awk_bool_t use_chars; /* falso ==> usare byte */
+ size_t nf; /* numero di campi nel record (NF) */
+ struct awk_field_info @{
+ size_t skip; /* da ignorare prima dell'inizio di un campo
*/
+ size_t len; /* lunghezza del campo */
+ @} fields[1]; /* la dimensione effettiva dovrebbe essere
nf */
address@hidden awk_fieldwidth_info_t;
address@hidden example
+
+I campi sono:
+
address@hidden @code
address@hidden awk_bool_t use_chars;
+Impostare ad @code{awk_true} se le lunghezze di campo sono specificate in
address@hidden di caratteri---potenzialmente multi-byte, oppure impostarlo a
address@hidden se le lunghezze sono espresse in numero di byte.
+L'efficienza del programma address@hidden maggiore utilizzando la dimensione
in byte.
+
address@hidden size_t nf;
+Impostare al numero di campi nel record in input, address@hidden a @code{NF}.
+
address@hidden struct awk_field_info fields[nf];
+Questo @`e un vettore di lunghezza variabile la cui dimensione effettiva
+dovrebbe essere @code{nf}.
+Per ogni campo, l'elemento @code{skip} dovrebbe essere impostato al numero
+di caratteri o byte, come richiesto dal flag @code{use_chars},
+da saltare prima dell'inizio di questo campo. L'elemento @code{len} fornisce
+la lunghezza del campo. I valori in @code{fields[0]} fornisce l'informazione
+per @code{$1}, e address@hidden@dotless{i}} via, fino all'elemento
@code{fields[nf-1]} che contiene
+l'informazione per @code{$NF}.
address@hidden table
+
+Una macro di address@hidden @code{awk_fieldwidth_info_size(numfields)} @`e
disponibile
+per calcolare la dimensione appropriata della struttura a lunghezza variabile
address@hidden che contiene @code{numfields} campi. Questa
+dimensione address@hidden essere usata come argomento per @code{malloc()} o in
una
+struttura @dfn{union} per allocare spazio staticamente.
+Per un esempio si address@hidden vedere l'estensione di esempio
@code{readdir_test}.
+
@node Processori di output
@subsubsection Registrare un processore di output
@cindex personalizzato, processore di output
@@ -35623,7 +36107,8 @@ se si pone mente al fatto che la memoria di @emph{ogni}
valore di stringa
Se ci sono 20 variabili, e tutte hanno per valore la stessa stringa,
si devono creare 20 copie identiche della address@hidden valori
numerici creano molti meno problemi, in quanto richiedono solo una variabile
-C @code{double} (8 byte) per contenerli.}
+C @code{double} (8 byte) per contenerli. Naturalmente, valori di tipo
+GMP ed MPFR usano @emph{molta} address@hidden memoria.}
Chiaramente @`e address@hidden efficiente, se possibile, creare il valore una
sola volta,
e fare in modo che @command{gawk} utilizzi quell'unico valore per molte
@@ -35886,10 +36371,13 @@ creare un nuovo vettore e aggiungervi elementi.
Svuota il vettore rappresentato da @code{a_cookie}.
Restituisce @dfn{false} in presenza di qualche tipo di problema, @dfn{true}
in caso contrario. Il vettore non viene eliminato ma, dopo aver chiamato
-questa funzione, resta privo di elementi. Questo @`e equivalente a usare
+questa funzione, resta privo di elementi. Questo equivale a usare
l'istruzione @code{delete} (@pxref{Cancellazione}).
address@hidden awk_bool_t flatten_array_typed(awk_array_t a_cookie,
awk_flat_array_t **data, awk_valtype_t index_type, awk_valtype_t value_type);
address@hidden awk_bool_t flatten_array_typed(awk_array_t a_cookie,
address@hidden @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @
awk_flat_array_t **data,
address@hidden @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @
awk_valtype_t index_type,
address@hidden @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @
awk_valtype_t value_type);
Per il vettore rappresentato da @code{a_cookie}, crea una struttura
@code{awk_flat_array_t} e la riempie con indici e valori del tipo richiesto.
Imposta il puntatore il cui indirizzo @`e passato in @code{data} per puntare a
@@ -36379,16 +36867,21 @@ Una @dfn{pipe} aperta in input.
Un coprocesso bidirezionale.
@end table
-In caso di errore, restituisce il valore @address@hidden
+In caso di errore, restituisce il valore @code{awk_false}.
Altrimenti, restituisce
address@hidden@dfn{awk_true}}, insieme a ulteriori informazioni sulla
ridirezione
address@hidden, insieme a ulteriori informazioni sulla ridirezione
nei puntatori @code{ibufp} e @code{obufp}.
Per ridirezioni di input il valore @code{*ibufp} non dovrebbe essere
@code{NULL}, mentre @code{*obufp} dovrebbe essere @code{NULL}.
+
+Per ridirezioni di input,
+il valore di @code{*ibufp} dovrebbe essere address@hidden, e @code{*obufp}
+dovrebbe essere @code{NULL}.
Per ridirezioni di output,
-il valore di @code{*obufp} non dovrebbe essere @code{NULL}, e @code{*ibufp}
-dovrebbe essere @code{NULL}. Per coprocessi bidirezionali, nessuno dei due
-valori dovrebbe essere @code{NULL}.
+il valore di @code{*obufp} dovrebbe essere address@hidden, e @code{*ibufp}
+dovrebbe essere @code{NULL}.
+Per coprocessi bidirezionali, ognuno dei due
+valori dovrebbe essere address@hidden
Normalmente, l'estensione @`e interessata a @code{(*ibufp)->fd}
e/o @code{fileno((*obufp)->fp)}. Se il file non @`e address@hidden
@@ -36425,8 +36918,10 @@ insieme contiene informazioni su come @command{gawk}
@`e stato invocato.
@menu
* Versione dell'estensione:: Informazioni sulla versione API.
+* Versione estensione GMP/MPFR:: Informazioni sulla versione disponibile
+ di GMP ed MPFR.
* Variabili informative di estens. API:: Variabili che forniscono informationi
- sull'invocazione di @command{gawk}.
+ sull'invocazione di @command{gawk}.
@end menu
@node Versione dell'estensione
@@ -36496,6 +36991,58 @@ in
@end ifnottex
@ref{Codice predefinito di un'estensione API}).
address@hidden Versione estensione GMP/MPFR
address@hidden Informazioni sulla versione disponibile di GMP ed MPFR
+
+L'API include anche informazioni sulle versioni di GMP ed MPFR con cui
+il comando @command{gawk} in esecuzione @`e stato compilato (se disponibile).
+Queste sono incluse nella @code{struct} dell'API come costanti intere
+in sola lettura:
+
address@hidden @code
address@hidden api->gmp_major_version
+La versione principale della libreria GMP usata per compilare @command{gawk}.
+
address@hidden api->gmp_minor_version
+La versione secondaria della libreria GMP usata per compilare @command{gawk}.
+
address@hidden api->mpfr_major_version
+La versione principale della libreria MPFR usata per compilare @command{gawk}.
+
address@hidden api->mpfr_minor_version
+La versione secondaria della libreria MPFR usata per compilare @command{gawk}.
address@hidden table
+
+Questi campi hanno un valore di zero se @command{gawk} @`e stato compilato
+senza supporto MPFR.
+
+Si address@hidden controllare se le versioni di MPFR e GMP dell'utente
corrispondono
+a quelle contenute in @command{gawk} con le seguenti macro:
+
address@hidden @code
address@hidden check_mpfr_version(extension)
+La @code{extension} @`e l'ID dell'estensione, passato a tutte le altre macro
+e funzioni definite in @file{gawkapi.h}. Se il file di intestazione
address@hidden<mpfr.h>} non @`e stato incluso, questa macro address@hidden
definita in
+modo da non fare nulla.
+
+Se invece il predetto file @`e stato incluso, questa macro confronta
+le versioni principale e secondaria di MPFR e GMP con quelle delle
+librerie in uso da parte dell'utente. Se queste ultime sono address@hidden
+recenti di quelle di @command{gawk}, stampa un messaggio di
+errore fatale ed esce.
+
+La macro @code{dl_load_func()} (trattata
address@hidden
+nella
address@hidden iftex
address@hidden
+in
address@hidden ifnottex
address@hidden predefinito di un'estensione API})
+chiama @code{check_mpfr_version()}.
address@hidden table
+
@node Variabili informative di estens. API
@subsubsection Variabili informative
@cindex API, variabili informative dell'estensione
@@ -36640,6 +37187,11 @@ dell'estensione @`e maggiore di quella di
@command{gawk}, stampa un messaggio
di errore fatale ed esce.
@item
+Controlla le versioni di MPFR e GMP. Se non sono allo stesso livello con
+quelle in uso localmente, stampa un messaggio
+di errore fatale ed esce.
+
address@hidden
Carica le funzioni definite in @code{func_table}.
Se qualche caricamento non riesce, stampa un messaggio di
avvertimento ma continua l'esecuzione.
@@ -37727,6 +38279,34 @@ l'estensione in maniera corretta:
@c file eg/lib/inplace.awk
@group
# inplace --- carica e richiama l'estensione inplace.
address@hidden endfile
address@hidden
address@hidden file eg/lib/inplace.awk
+#
+# Copyright (C) 2013, 2017 the Free Software Foundation, Inc.
+#
+# This file is part of GAWK, the GNU implementation of the
+# AWK Programming Language.
+#
+# GAWK is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 3 of the License, or
+# (at your option) any later version.
+#
+# GAWK is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301,
USA
+#
+# Andrew J. Schorr, aschorr@@telemetry-investments.com
+# January 2013
address@hidden endfile
address@hidden ignore
address@hidden file eg/lib/inplace.awk
@@load "inplace"
@@ -37739,6 +38319,7 @@ l'estensione in maniera corretta:
# address@hidden modificato sovrascrivendo il file originale.
# Ma @`e possibile evitarlo specificando l'argomento inplace=0
# davanti al nome del file che non si desidera elaborare in questo modo.
+
# Si address@hidden poi abilitare di nuovo l'aggiornamento diretto del file
# sulla riga di comando, specificando inplace=1 prima del file
# che si vuole modificare direttamente.
@@ -37746,11 +38327,15 @@ l'estensione in maniera corretta:
# N.B. La funzione inplace_end() @`e invocata nelle regole
# BEGINFILE ed END, in modo che ogni eventuale azione
# in una regola ENDFILE address@hidden ridiretta come previsto.
address@hidden group
address@hidden
BEGIN @{
- inplace = 1 # abilitato per default
+ inplace = 1 # abilitato per default
@}
address@hidden group
address@hidden
BEGINFILE @{
if (_inplace_filename != "")
inplace_end(_inplace_filename, INPLACE_SUFFIX)
@@ -37759,6 +38344,9 @@ BEGINFILE @{
else
_inplace_filename = ""
@}
address@hidden group
+
address@hidden
END @{
if (_inplace_filename != "")
@@ -38120,7 +38708,7 @@ sorgente per maggiori informazioni.
@cindex @code{gawkextlib}, progetto
@cindex progetto @code{gawkextlib}
-Il progetto @uref{http://sourceforge.net/projects/gawkextlib/,
@code{gawkextlib}}
+Il progetto @uref{https://sourceforge.net/projects/gawkextlib/,
@code{gawkextlib}}
fornisce varie estensioni per @command{gawk}, compresa una per
l'elaborazione dei file XML. Questa @`e un'evoluzione del progetto noto come
@command{xgawk} (XML @command{gawk}).
@@ -38153,14 +38741,14 @@ Estensione Select
@item
Estensione analizzatore XML, usando la libreria di analisi XML
address@hidden://expat.sourceforge.net, Expat}
address@hidden://expat.sourceforge.net, Expat}
@end itemize
@cindex @command{git}, programma di address@hidden
@cindex programma di address@hidden @command{git}
Si address@hidden scaricare il codice del progetto @code{gawkextlib}
usando il codice sorgente mantenuto tramite
address@hidden://git-scm.com, Git}.
address@hidden://git-scm.com, Git}.
Il comando per farlo @`e il seguente:
@example
@@ -38170,14 +38758,14 @@ git clone git://git.code.sf.net/p/gawkextlib/code
gawkextlib-code
@cindex Expat, libreria per analizzare XML
@cindex XML, Expat, libreria per analizzare
Per poter compilare e usare l'estensione XML, @`e necessario installare
-la libreria di analisi XML @uref{http://expat.sourceforge.net, Expat}.
+la libreria di analisi XML @uref{https://expat.sourceforge.net, Expat}.
Inoltre, @`e necessario installare gli strumenti GNU Autotools
-(@uref{http://www.gnu.org/software/autoconf, Autoconf},
address@hidden://www.gnu.org/software/automake, Automake},
address@hidden://www.gnu.org/software/libtool, Libtool}
+(@uref{https://www.gnu.org/software/autoconf, Autoconf},
address@hidden://www.gnu.org/software/automake, Automake},
address@hidden://www.gnu.org/software/libtool, Libtool}
e
address@hidden://www.gnu.org/software/gettext, GNU @command{gettext}}).
address@hidden://www.gnu.org/software/gettext, GNU @command{gettext}}).
La semplice procedura per compilare e testare @code{gawkextlib} @`e la
seguente.
Dapprima, occorre compilare e installare @command{gawk}:
@@ -38189,7 +38777,7 @@ make && make check @ii{Compila e
controlla che tutto sia a post
make install @ii{Installa gawk}
@end example
-Poi, dal sito @url{http://sourceforge.net/projects/gawkextlib/files} si deve
+Poi, dal sito @url{https://sourceforge.net/projects/gawkextlib/files} si deve
scaricare @code{gawkextlib} e le estensioni che si vogliono installare.
Il file @file{README} del sito spiega come compilare il codice. Se si @`e
installato @command{gawk} in una posizione non-standard, occorre
@@ -38454,7 +39042,7 @@ del linguaggio @command{awk}, facendo riferimento ad
altre parti del
@ifset FOR_PRINT
Per amor di address@hidden, sono state omesse in questa edizione informazioni
sulla storia delle address@hidden di @command{gawk}. Si possono trovare nella
address@hidden://www.gnu.org/software/gawk/manual/html_node/Feature-History.html,
address@hidden://www.gnu.org/software/gawk/manual/html_node/Feature-History.html,
documentazione online}.
@end ifset
@@ -38942,10 +39530,12 @@ Le funzioni @code{bindtextdomain()},
@code{dcgettext()}
e @code{dcngettext()} per l'internazionalizzazione
(@pxref{I18N per programmatore})
address@hidden INTDIV
@item
-La funzione @code{intdiv()} per effettuare divisioni a numeri interi e
+La funzione @code{intdiv0()} per effettuare divisioni a numeri interi e
ottenere il resto della divisione
(@pxref{Funzioni numeriche})
address@hidden ifset
@end itemize
@item
@@ -39120,7 +39710,9 @@ I've tried to follow this general order, esp.@: for the
3.0 and 3.1 sections:
new keywords
new command-line options
behavioral changes
- new ports
+ extension API changes
+ new / deprecated / removed ports
+ installation time stuff
Within each category, be alphabetical.
@end ignore
@@ -39683,10 +40275,10 @@ Cray
MIPS RiscOS
@item
-MS-DOS con Compilatore Microsoft
+MS-DOS col Compilatore Microsoft
@item
-MS-Windows con Compilatore Microsoft
+MS-Windows col Compilatore Microsoft
@item
NeXT
@@ -39781,37 +40373,54 @@ Il supporto per Ultrix @`e stato rimosso.
@end itemize
-La versione 4.2 ha introdotto le seguenti address@hidden:
+La versione 4.2 di @command{gawk} ha introdotto le seguenti modifiche:
@itemize @bullet
@item
-Differenze apportate alle variabili di ambiente (@code{ENVIRON}) sono riflesse
in quelle
-rese disponibili a @command{gawk} e in quelle di programmi che siano da esso
richiamati.
+Differenze apportate alle variabili di ambiente (@code{ENVIRON}) sono
+riflesse in quelle rese disponibili a @command{gawk} e in quelle di
+programmi che siano da esso richiamati.
@xref{Variabili auto-assegnate}.
@item
-L'opzione @option{--pretty-print} non esegue address@hidden, dopo averlo
stampato,
-il programma @command{awk}.
address@hidden
address@hidden @`e stato migliorato per consentire di saltare dei
+caratteri prima di assegnare il valore di un campo
+(@pxref{Separazione in base al contenuto}).
@item
-Il programma @command{igawk} e le relative pagine di manuale non sono
address@hidden installati come parte dell'installazione di @command{gawk}.
address@hidden igawk}.
+Il vettore @code{PROCINFO["argv"]}.
address@hidden auto-assegnate}.
+
address@hidden
+Il numero massimo di cifre esadecimali consentito nelle sequenze di
+protezione @samp{\x} @`e ora limitato a due.
address@hidden di protezione}.
+
address@hidden
+Costanti @dfn{regexp} forti nella forma @samp{@@/@dots{}/}
+(@pxref{Costanti @dfn{regexp} forti}).
@item
-La funzione @code{intdiv()}.
+Le funzioni a livello di bit sono state modificate. Se si
+forniscono argomenti negativi, viene generato un errore fatale.
+(@pxref{Funzioni a livello di bit}).
+
address@hidden INTDIV
address@hidden
+La funzione @code{intdiv0()}.
@xref{Funzioni numeriche}.
address@hidden ifset
@item
-Il massimo numero di cifre esadecimali permesse nelle sequenze di
-protezione @samp{\x} @`e ora limitato a due.
address@hidden di protezione}.
+La funzione @code{mktime()} ora acctte un secondo argomento facoltativo
+(@pxref{Funzioni di tempo}).
@item
address@hidden e @code{printf} non terminano il programma dopo alcuni
-errori di output.
address@hidden dopo errori}.
+La funzione @code{typeof()} (@pxref{Funzioni per i tipi}).
+
address@hidden
+Le ottimizzazioni sono abilitate per default. Si usi @option{-s} /
address@hidden per non effettuare ottimizzazioni.
@item
Per molti anni, lo standard POSIX richiedeva che la separazione dei campi
@@ -39823,10 +40432,72 @@ il default per separare i campi con l'opzione
@option{--posix} ammette
anche il ritorno a capo come separatore di campi.
@item
+Continuazione dopo errori [non fatali] con @code{print} e @code{printf}.
address@hidden dopo errori}.
+
address@hidden
address@hidden di tentare di nuovo l'I/O in input
+attraverso @address@hidden, "RETRY"]};
+(@pxref{Proseguire dopo errore in input}).
+
address@hidden
+Modifiche all'opzione @option{--pretty-print}
+(@pxref{Profilare}):
+
address@hidden nested table
address@hidden @value{MINUS}
address@hidden
+L'opzione @option{--pretty-print} non esegue address@hidden il programma
@command{awk}
+come in precedenza.
+
address@hidden
+I commenti nel programma sorgente sono conservati e inseriti nel file
+in output.
+
address@hidden
+Parentesi esplicite [anche se non strettamente necessarie] nelle espressioni
+in input sono mantenute nell'output generato.
address@hidden itemize
+
address@hidden
+Miglioramenti all'API per l'estensione
+(@pxref{Estensioni dinamiche}):
+
address@hidden nested
address@hidden @value{MINUS}
address@hidden
+La funzione @code{get_file()} @`e in grado di accedere
+a ridirezioni in fase di @dfn{open}.
+
address@hidden
+La funzione @code{nonfatal()} per generare messaggi di errore non fatali
+(che non provocano la fine del programma).
+
address@hidden
+Supporto per i numeri scritti per essere usati tramite GMP ed MPFR.
+
address@hidden
+Gli analizzatori di input possono ora prevalere sul meccanismo di
+analisi dei campi, specificando delle posizioni precise.
address@hidden itemize
+
address@hidden
+Dei file per iniziare una sessione sono inclusi nella distribuzione
+e installati da @samp{make install}
+(@pxref{File da usare a inizio sessione}).
+
address@hidden
+Il programma @command{igawk} e la relativa pagina di manuale non
+sono address@hidden installati quando si compila @command{gawk} [il programma
+non @`e address@hidden necessario].
address@hidden igawk}.
+
address@hidden
Il supporto per MirBSD @`e stato rimosso.
@item
Il supporto per GNU/Linux sull'architettura Alpha @`e stato rimosso.
+
@end itemize
@c XXX ADD MORE STUFF HERE
@@ -40102,7 +40773,8 @@ documentazione.
@item
@cindex Deifik, Scott
Scott Deifik
-si @`e occupato della manutenzione per MS-DOS usando il compilatore DJGPP.
+si @`e occupato in passato della manutenzione per MS-DOS usando
+il compilatore DJGPP.
@item
@cindex Zaretskii, Eli
@@ -40116,6 +40788,7 @@ Juan Grigera
@`e autore di una versione di @command{gawk} per sistemi Windows32.
(Questa versione non @`e address@hidden supportata.)
+
@item
@cindex Hankerson, Darrel
Per molti anni, il
@@ -40149,6 +40822,9 @@ anche la relativa documentazione.
Stephen @`e anche stato determinante nel lavoro iniziale per integrare il
codice
interno di gestione dei byte nel
complesso del codice di @command{gawk}.
+Inoltre, ha svolto molto del lavoro necessario per far
address@hidden@dotless{i}} che usando
+l'opzione @option{--pretty-print} i commenti venissero conservati e
+stampati nell'output.
@item
@cindex Woehlke, Matthew
@@ -40265,6 +40941,19 @@ OpenVMS e alla relativa documentazione.
@cindex Colombo, Antonio
Antonio Giovanni Colombo ha riscritto diversi esempi, che non erano
address@hidden
attuali, contenuti nei primi capitoli, e gliene sono estremamente grato.
+Ha inoltre preparato con Marco Curreli e mantiene la traduzione in
+italiano di questo libro.
+
address@hidden
address@hidden Curreli, Marco
+Marco Curreli, insieme con Antonio Colombo, ha tradotto questo
address@hidden in italiano. @`E ora incluso nella distribuzione
+di @command{gawk}.
+
address@hidden
address@hidden Guerrero, Juan Manuel
+Juan Manuel Guerrero ha preso in carico la manutenzione dellla
+versione DJGPP di @command{gawk}.
@item
@cindex Robbins, Arnold
@@ -40378,14 +41067,14 @@ Se si dispone del programma @command{wget}, si
address@hidden utilizzarlo digitando un
comando simile a questo:
@example
-wget http://ftp.gnu.org/gnu/gawk/address@hidden@value{PATCHLEVEL}.tar.gz
+wget https://ftp.gnu.org/gnu/gawk/address@hidden@value{PATCHLEVEL}.tar.gz
@end example
@end itemize
L'archivio che contiene il software GNU @`e disponibile in vari cloni
(@dfn{mirror}) in tutto il mondo.
La lista aggiornata dei siti clone @`e disponibile nel
address@hidden://www.gnu.org/order/ftp.html, sito web principale della FSF}.
address@hidden://www.gnu.org/order/ftp.html, sito web principale della FSF}.
Si tenti di usare uno dei siti-clone; dovrebbero essere meno trafficati, ed @`e
possibile che ce ne sia uno address@hidden vicino.
@@ -40586,6 +41275,10 @@ nella
@code{@@include},
n@'e @command{igawk} n@'e @file{igawk.1} sono effettivamente installati.)
address@hidden doc/it/*
+File per la traduzione italiana di questo @value{DOCUMENT}, preparata e
+contribuita da Antonio Colombo e Marco Curreli.
+
@item doc/Makefile.in
Il file in input usato durante la procedura di configurazione per
generare l'effettivo @file{Makefile} da usare per creare la documentazione.
@@ -40719,7 +41412,7 @@ usando il comando GNU Autoconf.
descritto in dettaglio in
@cite{Autoconf---Generating Automatic Configuration Scripts},
che address@hidden essere trovato in rete sul sito
address@hidden://www.gnu.org/software/autoconf/manual/index.html,
address@hidden://www.gnu.org/software/autoconf/manual/index.html,
della Free Software Foundation}.)
@end ifnotinfo
@ifinfo
@@ -40879,6 +41572,14 @@ Se si usa quest'opzione alcuni dei test di
address@hidden non avranno successo.
Quest'opzione address@hidden essere rimossa in futuro.
@end quotation
address@hidden @option{--disable-mpfr}, opzione di configurazione
address@hidden opzione di configurazione @code{--disable-mpfr}
address@hidden --disable-mpfr
+Non viene effettuato il controllo delle librerie MPFR e GMP.
address@hidden address@hidden essere utile principalmente per gli sviluppatori,
+per essere sicuro che tutto funzioni regolarmente nel caso in cui
+il supporto MPFR non sia disponibile.
+
@cindex @option{--disable-nls}, opzione di configurazione
@cindex opzione di configurazione @code{--disable-nls}
@item --disable-nls
@@ -41711,12 +42412,12 @@ Le persone che si occupano delle varie versioni di
@command{gawk} sono:
@c put the index entries outside the table, for docbook
@cindex Buening, Andreas
address@hidden Deifik, Scott
@cindex Malmberg, John E.
@cindex Pitts, Dave
@cindex G., Daniel Richard
@cindex Robbins, Arnold
@cindex Zaretskii, Eli
address@hidden Guerrero, Juan Manuel
@ifset SMALLPRINT
@multitable {MS-Windows} {123456789012345678901234567890123456789001234567890}
@end ifset
@@ -41725,7 +42426,7 @@ Le persone che si occupano delle varie versioni di
@command{gawk} sono:
@end ifclear
@item Unix e sistemi POSIX @tab Arnold Robbins,
@EMAIL{arnold@@skeeve.com,arnold at skeeve dot com}
address@hidden @item MS-DOS con DJGPP @tab Scott Deifik,
@EMAIL{scottd.mail@@sbcglobal.net,scottd dot mail at sbcglobal dot net}
address@hidden MS-DOS with DJGPP @tab Juan Manuel Guerrero,
@EMAIL{juan.guerrero@@gmx.de, juan dot guerrero at gmx dot de}
@item MS-Windows con MinGW @tab Eli Zaretskii, @EMAIL{eliz@@gnu.org,eliz at
gnu dot org}
@@ -41749,6 +42450,13 @@ nel caso che qualche volontario desideri prenderla in
carico.
Se questo non dovesse succedere, la parte di codice relativa questa
versione address@hidden rimossa dalla distribuzione.
address@hidden 7/2017, Juan Guerrero has taken over the DJGPP port.
address@hidden
+The DJGPP port is no longer supported; it will remain in the code base
+for a while in case a volunteer wishes to take it over. If this does
+not happen, then eventually code for this port will be removed.
address@hidden ignore
+
@node Altre versioni
@appendixsec Altre implementazioni di @command{awk} liberamente disponibili
@cindex @command{awk}, implementazioni di
@@ -41817,7 +42525,7 @@ git clone git://github.com/onetrueawk/awk bwkawk
@end example
@noindent
-Questo comando crea una copia del deposito @uref{http://git-scm.com, Git}
+Questo comando crea una copia del deposito @uref{https://git-scm.com, Git}
in una directory chiamata @file{bwkawk}. Se si omette questo argomento della
riga di comando @command{git}, la copia del deposito @`e creata nella
directory di nome @file{awk}.
@@ -41882,7 +42590,7 @@ Il traduttore di @command{awk} @`e rilasciato sotto la
licenza GPL, e la
relativa libreria sotto la licenza LGPL.
Per ottenere @command{awka}, si visiti
-il sito @url{http://sourceforge.net/projects/awka}.
+il sito @url{https://sourceforge.net/projects/awka}.
@c You can reach Andrew Sumner at @email{andrew@@zbcom.net}.
@c andrewsumner@@yahoo.net
@@ -41954,7 +42662,7 @@ essere un interprete completo, anche se, poich@'e usa
address@hidden di Java
per l'I/O e per la ricerca di @dfn{regexp}, il linguaggio che supporta
@`e differente da @command{awk} POSIX.
Ulteriori informazioni sono disponibili sulla
address@hidden://jawk.sourceforge.net, pagina principale del progetto}.
address@hidden://jawk.sourceforge.net, pagina principale del progetto}.
@item Libmawk
@cindex @command{libmawk}
@@ -41979,7 +42687,7 @@ modificata da Nelson Beebe di BWK @command{awk},
descritta prima.)
@cindex sorgente, codice, QSE @command{awk}
Questo @`e un interprete di @command{awk} incorporabile. Per ulteriori
informazioni, si veda
address@hidden://code.google.com/p/qse/} e @uref{http://awk.info/?tools/qse}.
address@hidden://code.google.com/p/qse/} e @uref{http://awk.info/?tools/qse}.
@item @command{QTawk}
@cindex QuikTrim Awk
@@ -41999,7 +42707,7 @@ a partire dal 2014 circa.
@item Altre versioni
Si veda anche [in inglese] la sezione ``Versions and implementations''
della voce di
address@hidden://en.wikipedia.org/wiki/Awk_language#Versions_and_implementations,
address@hidden://en.wikipedia.org/wiki/Awk_language#Versions_and_implementations,
Wikipedia} su @command{awk} per informazioni su ulteriori versioni.
@end table
@@ -42014,16 +42722,23 @@ di distribuzione del Progetto GNU
@code{ftp.gnu.org}. La maniera canonica per scaricarlo e installarlo @`e:
@example
-wget http://ftp.gnu.org/gnu/gawk/address@hidden@value{PATCHLEVEL}.tar.gz
+wget https://ftp.gnu.org/gnu/gawk/address@hidden@value{PATCHLEVEL}.tar.gz
tar -xvpzf address@hidden@value{PATCHLEVEL}.tar.gz
cd address@hidden@value{PATCHLEVEL}
./configure && make && make check
@end example
address@hidden NOTA
+A causa degli URL di tipo @samp{https://}, address@hidden essere necessario
+specificare l'opzione @option{--no-check-certificate} a @command{wget}
+per poter scaricare il file.
address@hidden quotation
+
@item
@command{gawk} address@hidden essere installato anche su sistemi non-POSIX. I
sistemi
correntemente supportati sono MS-Windows, usando
-MSYS, MinGW, e Cygwin,
+MSYS, DJGPP, MinGW, e Cygwin,
address@hidden OS/2,
e sia Vax/VMS che OpenVMS. Le istruzioni per ognuno di questi sistemi sono
incluse in questa @value{APPENDIX}.
@@ -42137,12 +42852,12 @@ le versioni ufficiali rilasciate di @command{gawk}.
Peraltro, se si intende modificare @command{gawk} e mettere a disposizione le
modifiche, @`e preferibile lavorare sulla versione in via di sviluppo. Per far
address@hidden @`e necessario accedere al deposito del codice sorgente di
@command{gawk}.
-Il codice @`e mantenuto usando il @uref{http://git-scm.com, sistema distribuito
+Il codice @`e mantenuto usando il @uref{https://git-scm.com, sistema
distribuito
di controllo delle versioni Git}. address@hidden necessario installarlo se
non @`e address@hidden
presente nel sistema. Quando @command{git} @`e disponibile, va usato il
comando:
@example
-git clone git://git.savannah.gnu.org/gawk.git
+git clone https://git.savannah.gnu.org/gawk.git
@end example
@noindent
@@ -42214,7 +42929,7 @@ Questo documento descrive come dovrebbe essere scritto
il software GNU.
Se non lo si @`e letto, @`e bene farlo, preferibilmente @emph{prima}
di iniziare a modificare @command{gawk}.
(Gli @cite{Standard di codifica GNU} sono disponibili nel sito web del
address@hidden://www.gnu.org/prep/standards/, Progetto GNU}.
address@hidden://www.gnu.org/prep/standards/, Progetto GNU}.
Sono disponibili anche versioni in formato Texinfo, Info, e DVI.)
@cindex @command{gawk}, stile di codifica in
@@ -42632,13 +43347,19 @@ Egli aveva @file{/usr/local/bin} all'inizio del suo
@env{PATH} e dava i
seguenti comandi:
@example
-wget http://ftp.gnu.org/gnu/@var{package}/@address@hidden@address@hidden
+wget https://ftp.gnu.org/gnu/@var{package}/@address@hidden@address@hidden
tar -xpzvf @address@hidden@address@hidden
cd @address@hidden@address@hidden
./configure && make && make check
make install # come utente root
@end example
address@hidden NOTA
+A causa degli URL di tipo @samp{https://}, address@hidden essere necessario
+specificare l'opzione @option{--no-check-certificate} a @command{wget}
+per poter scaricare il file.
address@hidden quotation
+
@c @item
@ignore
These days the maintainer uses Ubuntu 12.04 which is medium current, but
@@ -42687,7 +43408,7 @@ Fortunatamente, il server Git address@hidden rispondere
a questa esigenza. Per ogni
dato ramo chiamato @var{nome-ramo}, basta usare:
@example
-wget http://git.savannah.gnu.org/cgit/gawk.git/snapshot/address@hidden
+wget https://git.savannah.gnu.org/cgit/gawk.git/snapshot/address@hidden
@end example
@noindent
@@ -43428,7 +44149,7 @@ Si veda ``Passaggio per valore/riferimento''.
Arrotondare il risultato di un'operazione aritmetica address@hidden essere
difficile.
C'@`e address@hidden di un modo di arrotondare, e in @command{gawk} @`e
possibile scegliere
quale metodo dovrebbe essere usato all'interno di un programma.
address@hidden modi di arrotondare}.
address@hidden modo di arrotondare}.
@item Assegnamento
Un'espressione @command{awk} che cambia il valore di qualche variabile o
@@ -44410,7 +45131,7 @@ Copyright @copyright{} 2007 Free Software Foundation,
Inc. @url{http://fsf.org/}
This is an unofficial translation of the GNU General Public License into
Italian. It was not published by the Free Software Foundation, and does not
-legally state the distribution terms for software that uses the GNU GPLâonly
+legally state the distribution terms for software that uses the GNU GPL---only
the original English text of the GNU GPL does that. However, we hope that this
translation will help Italian speakers understand the GNU GPL better.
@@ -45205,7 +45926,7 @@ Copyright @copyright{} 2000, 2001, 2002, 2007, 2008
Free Software Foundation, In
This is an unofficial translation of the GNU Free Documentation License into
Italian. It was not published by the Free Software Foundation, and does not
-legally state the distribution terms for software that uses the GNU FDLâonly
+legally state the distribution terms for software that uses the GNU FDL---only
the original English text of the GNU FDL does that. However, we hope that this
translation will help Italian speakers understand the GNU FDL better.
@@ -45679,10 +46400,10 @@ Una MMC @`e ``qualificata a cambiare questa licenza''
se ha adottato questa
licenza e se tutte le opere precedentemente pubblicate con questa licenza
altrove rispetto alla MMC e successivamente incorporate del tutto o in
parte nella MMC (1) non hanno testo di copertina o sezioni invarianti e
-(2) sono state incorporate prima del 1° Novembre 2008.
+(2) sono state incorporate prima del 1^ Novembre 2008.
L'operatore di un sito MMC address@hidden ripubblicare un MMC contenuto nel
sito con
-una CC-BY-SA nello stesso sito in qualsiasi momento prima del 1° Agosto
+una CC-BY-SA nello stesso sito in qualsiasi momento prima del 1^ Agosto
2009, da parte di una MMC qualificata a cambiare questa licenza.
@end enumerate
-----------------------------------------------------------------------
Summary of changes:
awklib/eg/lib/intdiv.awk | 23 -
awklib/eg/prog/anagram.awk | 2 +-
awklib/eg/prog/pi.awk | 2 +-
doc/ChangeLog | 14 +
doc/awkcard.in | 4 +-
doc/gawk.1 | 191 +++++---
doc/gawk.info | 1148 +++++++++++++++++++++++---------------------
doc/gawk.texi | 101 ++--
doc/gawktexi.in | 101 ++--
doc/it/ChangeLog | 4 +
doc/it/gawktexi.in | 1109 ++++++++++++++++++++++++++++++++++--------
11 files changed, 1776 insertions(+), 923 deletions(-)
delete mode 100644 awklib/eg/lib/intdiv.awk
mode change 100644 => 100755 doc/it/gawktexi.in
hooks/post-receive
--
gawk
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- [gawk-diffs] [SCM] gawk branch, master, updated. gawk-4.1.0-2788-g161ab89,
Arnold Robbins <=