[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[gawk-diffs] [SCM] gawk branch, select, updated. gawk-4.1.0-1228-g6522e5
From: |
Arnold Robbins |
Subject: |
[gawk-diffs] [SCM] gawk branch, select, updated. gawk-4.1.0-1228-g6522e5b |
Date: |
Tue, 24 Mar 2015 20:58:44 +0000 |
This is an automated email from the git hooks/post-receive script. It was
generated because a ref change was pushed to the repository containing
the project "gawk".
The branch, select has been updated
via 6522e5b623e083565229dc742336219a0dda1344 (commit)
via 0bb831721d3feeac20977e5a14be6b5bbf13e52a (commit)
via 56e848ab0b55cc98f206ab7e187ba8269f2e8e4c (commit)
via 981e106b111672aac520fbb397ee82c64f3c4f2a (commit)
from a31a42403b841ef05ca9143a431c8b6f1021a958 (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=6522e5b623e083565229dc742336219a0dda1344
commit 6522e5b623e083565229dc742336219a0dda1344
Author: Arnold D. Robbins <address@hidden>
Date: Tue Mar 24 22:58:20 2015 +0200
General cleanups prepatory to merging.
diff --git a/ChangeLog b/ChangeLog
index d52c86f..468875f 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,7 @@
+2015-03-24 Arnold D. Robbins <address@hidden>
+
+ * awk.h, gawkapi.c, io.c: Minor code reformatting.
+
2015-03-18 Arnold D. Robbins <address@hidden>
* config.guess, config.sub: Updated, from libtool 2.4.6.
@@ -1672,6 +1676,7 @@
* eval.c (update_ERRNO_int, unset_ERRNO): Update PROCINFO["errno"].
2013-06-30 Andrew J. Schorr <address@hidden>
+
* awk.h (redirect_string): Declare new function that provides API access
to the redirection mechanism.
* gawkapi.h (GAWK_API_MINOR_VERSION): Bump from 0 to 1 since 2 new
diff --git a/awk.h b/awk.h
index 101e586..6b9ac10 100644
--- a/awk.h
+++ b/awk.h
@@ -1483,7 +1483,9 @@ extern void set_FNR(void);
extern void set_NR(void);
extern struct redirect *redirect(NODE *redir_exp, int redirtype, int *errflg,
bool failure_fatal);
-extern struct redirect *redirect_string(const char *redir_exp_str, size_t
redir_exp_len, bool not_string_flag, int redirtype, int *errflg, int extfd,
bool failure_fatal);
+extern struct redirect *redirect_string(const char *redir_exp_str,
+ size_t redir_exp_len, bool not_string_flag, int redirtype,
+ int *errflg, int extfd, bool failure_fatal);
extern NODE *do_close(int nargs);
extern int flush_io(void);
extern int close_io(bool *stdio_problem);
diff --git a/doc/ChangeLog b/doc/ChangeLog
index f0c7523..679e1be 100644
--- a/doc/ChangeLog
+++ b/doc/ChangeLog
@@ -2,6 +2,9 @@
* gawktexi.in: Minor fixes from Antonio Colombo and new exercise
in chapter 16.
+ * gawk.1: Minor edits.
+ * gawktexi.in: Edits in material on errno and retryable and get_file
+ API.
2015-03-17 Andrew J. Schorr <address@hidden>
diff --git a/doc/gawk.1 b/doc/gawk.1
index b425c24..45a4c9f 100644
--- a/doc/gawk.1
+++ b/doc/gawk.1
@@ -13,7 +13,7 @@
. if \w'\(rq' .ds rq "\(rq
. \}
.\}
-.TH GAWK 1 "Aug 03 2014" "Free Software Foundation" "Utility Commands"
+.TH GAWK 1 "Mar 24 2015" "Free Software Foundation" "Utility Commands"
.SH NAME
gawk \- pattern scanning and processing language
.SH SYNOPSIS
@@ -1241,8 +1241,8 @@ less than zero means no timeout.
If an I/O error that may be retried occurs when reading data from
.IR input ,
and this array entry exists, then
-.BR getline
-will return -2 instead of following the default behavior of returning -1
+.B getline
+will return \-2 instead of following the default behavior of returning \-1
and configuring
.IR input
to return no further data.
diff --git a/doc/gawk.info b/doc/gawk.info
index f0318e2..6b10734 100644
--- a/doc/gawk.info
+++ b/doc/gawk.info
@@ -5451,11 +5451,11 @@ how `awk' works.
encounters the end of the file. If there is some error in getting a
record, such as a file that cannot be opened, then `getline' returns
-1. In this case, `gawk' sets the variable `ERRNO' to a string
-describing the error that occurred. If the `errno' variable indicates
-that the I/O operation may be retried, and `PROCINFO["input", "RETRY"]'
-is set, then -2 will be returned instead of -1, and further calls to
-`getline' may be attemped. *Note Retrying Input::, for further
-information about this feature.
+describing the error that occurred. If `ERRNO' indicates that the I/O
+operation may be retried, and `PROCINFO["input", "RETRY"]' is set, then
+-2 will be returned instead of -1, and further calls to `getline' may
+be attemped. *Note Retrying Input::, for further information about
+this feature.
In the following examples, COMMAND stands for a string value that
represents a shell command.
@@ -5995,22 +5995,22 @@ File: gawk.info, Node: Retrying Input, Next:
Command-line directories, Prev:
This minor node describes a feature that is specific to `gawk'.
- When `gawk' encounters an error while reading input, it will by
-default return -1 from getline, and subsequent attempts to read from
-that file will result in an end-of-file indication. However, you may
-optionally instruct `gawk' to allow I/O to be retried when certain
-errors are encountered by setting setting a special element in the
-`PROCINFO' array (*note Auto-set::):
+ When `gawk' encounters an error while reading input, by default
+`getline' returns -1, and subsequent attempts to read from that file
+result in an end-of-file indication. However, you may optionally
+instruct `gawk' to allow I/O to be retried when certain errors are
+encountered by setting setting a special element in the `PROCINFO'
+array (*note Auto-set::):
- PROCINFO["input_name", "RETRY"]
+ PROCINFO["INPUT_NAME", "RETRY"] = 1
- When set, this causes `gawk' to check the value of the system
+ When this element exists, `gawk' checks the value of the system
`errno' variable when an I/O error occurs. If `errno' indicates a
-subsequent I/O attempt may succeed, `getline' will instead return -2 and
+subsequent I/O attempt may succeed, `getline' instead returns -2 and
further calls to `getline' may succeed. This applies to `errno' values
-EAGAIN, EWOULDBLOCK, EINTR, or ETIMEDOUT.
+`EAGAIN', `EWOULDBLOCK', `EINTR', or `ETIMEDOUT'.
- This feature is useful in conjunction with `PROCINFO["input_name",
+ This feature is useful in conjunction with `PROCINFO["INPUT_NAME",
"READ_TIMEOUT"]' or situations where a file descriptor has been
configured to behave in a non-blocking fashion.
@@ -24796,49 +24796,55 @@ redirections.
` const awk_input_buf_t **ibufp,'
` const awk_output_buf_t **obufp);'
Look up a file in `gawk''s internal redirection table. If `name'
- is NULL or `name_len' is 0, it returns data for the currently open
- input file corresponding to `FILENAME' (and it will not access the
- `filetype' argument, so that may be undefined). If the file is
- not already open, it tries to open it. The `filetype' argument
- must be NUL-terminated and should be one of:
- `>'
+ is `NULL' or `name_len' is zero, return data for the currently
+ open input file corresponding to `FILENAME'. (This does not
+ access the `filetype' argument, so that may be undefined). If the
+ file is not already open, attempt to open it. The `filetype'
+ argument must be zero-terminated and should be one of:
+
+ `">"'
A file opened for output.
- `>>'
+ `">>"'
A file opened for append.
- `<'
+ `"<"'
A file opened for input.
- `|>'
+ `"|>"'
A pipe opened for output.
- `|<'
+ `"|<"'
A pipe opened for input.
- `|&'
+ `"|&"'
A two-way coprocess.
- On error, a `false' value is returned. Otherwise, the return
- status is `true', and additional information about the redirection
- is returned in the `ibufp' and `obufp' pointers. For input
- redirections, the `*ibufp' value should be non-NULL, and `*obufp'
- should be NULL. For output redirections, the `*obufp' value
- should be non-NULL, and `*ibufp' should be NULL. For two-way
- coprocesses, both values should be non-NULL. In the usual case,
- the extension is interested in `(*ibufp)->fd' and/or
- `fileno((*obufp)->fp)'. If the file is not already open, and the
- fd argument is non-negative, `gawk' will use that file descriptor
- instead of opening the file in the usual way. If the fd is
- non-negative, but the file exists already, `gawk' ignores the fd
+
+ On error, return a `false' value. Otherwise, return `true', and
+ return additional information about the redirection in the `ibufp'
+ and `obufp' pointers. For input redirections, the `*ibufp' value
+ should be non-`NULL', and `*obufp' should be `NULL'. For output
+ redirections, the `*obufp' value should be non-`NULL', and `*ibufp'
+ should be `NULL'. For two-way coprocesses, both values should be
+ non-`NULL'.
+
+ In the usual case, the extension is interested in `(*ibufp)->fd'
+ and/or `fileno((*obufp)->fp)'. If the file is not already open,
+ and the `fd' argument is non-negative, `gawk' will use that file
+ descriptor instead of opening the file in the usual way. If `fd'
+ is non-negative, but the file exists already, `gawk' ignores `fd'
and returns the existing file. It is the caller's responsibility
- to notice that neither the fd in the returned `awk_input_buf_t'
- nor the fd in the returned `awk_output_buf_t' matches the
- requested value. Note that supplying a file descriptor is
- currently NOT supported for pipes. It should work for input,
- output, append, and two-way (coprocess) sockets. If `filetype' is
- two-way, we assume that it is a socket! Note that in the two-way
- case, the input and output file descriptors may differ. To check
- for success, one must check whether either matches.
+ to notice that neither the `fd' in the returned `awk_input_buf_t'
+ nor the `fd' in the returned `awk_output_buf_t' matches the
+ requested value.
+
+ Note that supplying a file descriptor is currently _not_ supported
+ for pipes. However, supplying a file descriptor should work for
+ input, output, append, and two-way (coprocess) sockets. If
+ `filetype' is two-way, `gawk' assumes that it is a socket! Note
+ that in the two-way case, the input and output file descriptors
+ may differ. To check for success, you must check whether either
+ matches.
It is anticipated that this API function will be used to implement
I/O multiplexing and a socket library.
@@ -34975,467 +34981,467 @@ Ref: Splitting By Content-Footnote-1236687
Node: Multiple Line236850
Ref: Multiple Line-Footnote-1242731
Node: Getline242910
-Node: Plain Getline245389
-Node: Getline/Variable248029
-Node: Getline/File249178
-Node: Getline/Variable/File250563
-Ref: Getline/Variable/File-Footnote-1252166
-Node: Getline/Pipe252253
-Node: Getline/Variable/Pipe254931
-Node: Getline/Coprocess256062
-Node: Getline/Variable/Coprocess257326
-Node: Getline Notes258065
-Node: Getline Summary260859
-Ref: table-getline-variants261271
-Node: Read Timeout262100
-Ref: Read Timeout-Footnote-1266003
-Node: Retrying Input266061
-Node: Command-line directories267256
-Node: Input Summary268163
-Node: Input Exercises271548
-Node: Printing272276
-Node: Print274111
-Node: Print Examples275568
-Node: Output Separators278347
-Node: OFMT280365
-Node: Printf281720
-Node: Basic Printf282505
-Node: Control Letters284077
-Node: Format Modifiers288062
-Node: Printf Examples294068
-Node: Redirection296554
-Node: Special FD303392
-Ref: Special FD-Footnote-1306558
-Node: Special Files306632
-Node: Other Inherited Files307249
-Node: Special Network308249
-Node: Special Caveats309111
-Node: Close Files And Pipes310060
-Ref: Close Files And Pipes-Footnote-1317245
-Ref: Close Files And Pipes-Footnote-2317393
-Node: Nonfatal317543
-Node: Output Summary319868
-Node: Output Exercises321089
-Node: Expressions321769
-Node: Values322958
-Node: Constants323635
-Node: Scalar Constants324326
-Ref: Scalar Constants-Footnote-1325188
-Node: Nondecimal-numbers325438
-Node: Regexp Constants328448
-Node: Using Constant Regexps328974
-Node: Variables332137
-Node: Using Variables332794
-Node: Assignment Options334705
-Node: Conversion336580
-Node: Strings And Numbers337104
-Ref: Strings And Numbers-Footnote-1340169
-Node: Locale influences conversions340278
-Ref: table-locale-affects343024
-Node: All Operators343616
-Node: Arithmetic Ops344245
-Node: Concatenation346750
-Ref: Concatenation-Footnote-1349569
-Node: Assignment Ops349676
-Ref: table-assign-ops354655
-Node: Increment Ops355965
-Node: Truth Values and Conditions359396
-Node: Truth Values360479
-Node: Typing and Comparison361528
-Node: Variable Typing362344
-Node: Comparison Operators366011
-Ref: table-relational-ops366421
-Node: POSIX String Comparison369916
-Ref: POSIX String Comparison-Footnote-1370988
-Node: Boolean Ops371127
-Ref: Boolean Ops-Footnote-1375605
-Node: Conditional Exp375696
-Node: Function Calls377434
-Node: Precedence381314
-Node: Locales384974
-Node: Expressions Summary386606
-Node: Patterns and Actions389177
-Node: Pattern Overview390297
-Node: Regexp Patterns391976
-Node: Expression Patterns392519
-Node: Ranges396299
-Node: BEGIN/END399406
-Node: Using BEGIN/END400167
-Ref: Using BEGIN/END-Footnote-1402903
-Node: I/O And BEGIN/END403009
-Node: BEGINFILE/ENDFILE405324
-Node: Empty408221
-Node: Using Shell Variables408538
-Node: Action Overview410811
-Node: Statements413137
-Node: If Statement414985
-Node: While Statement416480
-Node: Do Statement418508
-Node: For Statement419656
-Node: Switch Statement422814
-Node: Break Statement425196
-Node: Continue Statement427289
-Node: Next Statement429116
-Node: Nextfile Statement431497
-Node: Exit Statement434125
-Node: Built-in Variables436536
-Node: User-modified437669
-Ref: User-modified-Footnote-1445303
-Node: Auto-set445365
-Ref: Auto-set-Footnote-1459598
-Ref: Auto-set-Footnote-2459803
-Node: ARGC and ARGV459859
-Node: Pattern Action Summary464077
-Node: Arrays466510
-Node: Array Basics467839
-Node: Array Intro468683
-Ref: figure-array-elements470620
-Ref: Array Intro-Footnote-1473243
-Node: Reference to Elements473371
-Node: Assigning Elements475833
-Node: Array Example476324
-Node: Scanning an Array478083
-Node: Controlling Scanning481106
-Ref: Controlling Scanning-Footnote-1486500
-Node: Numeric Array Subscripts486816
-Node: Uninitialized Subscripts489001
-Node: Delete490618
-Ref: Delete-Footnote-1493367
-Node: Multidimensional493424
-Node: Multiscanning496521
-Node: Arrays of Arrays498110
-Node: Arrays Summary502864
-Node: Functions504955
-Node: Built-in505994
-Node: Calling Built-in507072
-Node: Numeric Functions509067
-Ref: Numeric Functions-Footnote-1513885
-Ref: Numeric Functions-Footnote-2514242
-Ref: Numeric Functions-Footnote-3514290
-Node: String Functions514562
-Ref: String Functions-Footnote-1538063
-Ref: String Functions-Footnote-2538192
-Ref: String Functions-Footnote-3538440
-Node: Gory Details538527
-Ref: table-sub-escapes540308
-Ref: table-sub-proposed541823
-Ref: table-posix-sub543185
-Ref: table-gensub-escapes544722
-Ref: Gory Details-Footnote-1545555
-Node: I/O Functions545706
-Ref: I/O Functions-Footnote-1552942
-Node: Time Functions553089
-Ref: Time Functions-Footnote-1563598
-Ref: Time Functions-Footnote-2563666
-Ref: Time Functions-Footnote-3563824
-Ref: Time Functions-Footnote-4563935
-Ref: Time Functions-Footnote-5564047
-Ref: Time Functions-Footnote-6564274
-Node: Bitwise Functions564540
-Ref: table-bitwise-ops565102
-Ref: Bitwise Functions-Footnote-1569430
-Node: Type Functions569602
-Node: I18N Functions570754
-Node: User-defined572401
-Node: Definition Syntax573206
-Ref: Definition Syntax-Footnote-1578865
-Node: Function Example578936
-Ref: Function Example-Footnote-1581857
-Node: Function Caveats581879
-Node: Calling A Function582397
-Node: Variable Scope583355
-Node: Pass By Value/Reference586348
-Node: Return Statement589845
-Node: Dynamic Typing592824
-Node: Indirect Calls593753
-Ref: Indirect Calls-Footnote-1603618
-Node: Functions Summary603746
-Node: Library Functions606448
-Ref: Library Functions-Footnote-1610056
-Ref: Library Functions-Footnote-2610199
-Node: Library Names610370
-Ref: Library Names-Footnote-1613828
-Ref: Library Names-Footnote-2614051
-Node: General Functions614137
-Node: Strtonum Function615240
-Node: Assert Function618262
-Node: Round Function621586
-Node: Cliff Random Function623127
-Node: Ordinal Functions624143
-Ref: Ordinal Functions-Footnote-1627206
-Ref: Ordinal Functions-Footnote-2627458
-Node: Join Function627669
-Ref: Join Function-Footnote-1629439
-Node: Getlocaltime Function629639
-Node: Readfile Function633383
-Node: Shell Quoting635355
-Node: Data File Management636756
-Node: Filetrans Function637388
-Node: Rewind Function641484
-Node: File Checking642870
-Ref: File Checking-Footnote-1644203
-Node: Empty Files644404
-Node: Ignoring Assigns646383
-Node: Getopt Function647933
-Ref: Getopt Function-Footnote-1659397
-Node: Passwd Functions659597
-Ref: Passwd Functions-Footnote-1668437
-Node: Group Functions668525
-Ref: Group Functions-Footnote-1676422
-Node: Walking Arrays676627
-Node: Library Functions Summary679633
-Node: Library Exercises681035
-Node: Sample Programs682315
-Node: Running Examples683085
-Node: Clones683813
-Node: Cut Program685037
-Node: Egrep Program694757
-Ref: Egrep Program-Footnote-1702260
-Node: Id Program702370
-Node: Split Program706046
-Ref: Split Program-Footnote-1709500
-Node: Tee Program709628
-Node: Uniq Program712417
-Node: Wc Program719836
-Ref: Wc Program-Footnote-1724086
-Node: Miscellaneous Programs724180
-Node: Dupword Program725393
-Node: Alarm Program727424
-Node: Translate Program732229
-Ref: Translate Program-Footnote-1736792
-Node: Labels Program737062
-Ref: Labels Program-Footnote-1740413
-Node: Word Sorting740497
-Node: History Sorting744567
-Node: Extract Program746402
-Node: Simple Sed753926
-Node: Igawk Program756996
-Ref: Igawk Program-Footnote-1771322
-Ref: Igawk Program-Footnote-2771523
-Ref: Igawk Program-Footnote-3771645
-Node: Anagram Program771760
-Node: Signature Program774821
-Node: Programs Summary776068
-Node: Programs Exercises777289
-Ref: Programs Exercises-Footnote-1781420
-Node: Advanced Features781511
-Node: Nondecimal Data783493
-Node: Array Sorting785083
-Node: Controlling Array Traversal785783
-Ref: Controlling Array Traversal-Footnote-1794149
-Node: Array Sorting Functions794267
-Ref: Array Sorting Functions-Footnote-1798153
-Node: Two-way I/O798349
-Ref: Two-way I/O-Footnote-1803294
-Ref: Two-way I/O-Footnote-2803480
-Node: TCP/IP Networking803562
-Node: Profiling806434
-Node: Advanced Features Summary814705
-Node: Internationalization816638
-Node: I18N and L10N818118
-Node: Explaining gettext818804
-Ref: Explaining gettext-Footnote-1823829
-Ref: Explaining gettext-Footnote-2824013
-Node: Programmer i18n824178
-Ref: Programmer i18n-Footnote-1829054
-Node: Translator i18n829103
-Node: String Extraction829897
-Ref: String Extraction-Footnote-1831028
-Node: Printf Ordering831114
-Ref: Printf Ordering-Footnote-1833900
-Node: I18N Portability833964
-Ref: I18N Portability-Footnote-1836420
-Node: I18N Example836483
-Ref: I18N Example-Footnote-1839286
-Node: Gawk I18N839358
-Node: I18N Summary840002
-Node: Debugger841342
-Node: Debugging842364
-Node: Debugging Concepts842805
-Node: Debugging Terms844615
-Node: Awk Debugging847187
-Node: Sample Debugging Session848093
-Node: Debugger Invocation848627
-Node: Finding The Bug850012
-Node: List of Debugger Commands856491
-Node: Breakpoint Control857823
-Node: Debugger Execution Control861500
-Node: Viewing And Changing Data864859
-Node: Execution Stack868235
-Node: Debugger Info869870
-Node: Miscellaneous Debugger Commands873915
-Node: Readline Support878916
-Node: Limitations879810
-Node: Debugging Summary881925
-Node: Arbitrary Precision Arithmetic883099
-Node: Computer Arithmetic884515
-Ref: table-numeric-ranges888092
-Ref: Computer Arithmetic-Footnote-1888616
-Node: Math Definitions888673
-Ref: table-ieee-formats891968
-Ref: Math Definitions-Footnote-1892572
-Node: MPFR features892677
-Node: FP Math Caution894348
-Ref: FP Math Caution-Footnote-1895398
-Node: Inexactness of computations895767
-Node: Inexact representation896726
-Node: Comparing FP Values898084
-Node: Errors accumulate899166
-Node: Getting Accuracy900598
-Node: Try To Round903302
-Node: Setting precision904201
-Ref: table-predefined-precision-strings904885
-Node: Setting the rounding mode906714
-Ref: table-gawk-rounding-modes907078
-Ref: Setting the rounding mode-Footnote-1910530
-Node: Arbitrary Precision Integers910709
-Ref: Arbitrary Precision Integers-Footnote-1915607
-Node: POSIX Floating Point Problems915756
-Ref: POSIX Floating Point Problems-Footnote-1919635
-Node: Floating point summary919673
-Node: Dynamic Extensions921860
-Node: Extension Intro923412
-Node: Plugin License924677
-Node: Extension Mechanism Outline925474
-Ref: figure-load-extension925902
-Ref: figure-register-new-function927382
-Ref: figure-call-new-function928386
-Node: Extension API Description930373
-Node: Extension API Functions Introduction931907
-Node: General Data Types936776
-Ref: General Data Types-Footnote-1942676
-Node: Memory Allocation Functions942975
-Ref: Memory Allocation Functions-Footnote-1945814
-Node: Constructor Functions945913
-Node: Registration Functions947652
-Node: Extension Functions948337
-Node: Exit Callback Functions950634
-Node: Extension Version String951882
-Node: Input Parsers952545
-Node: Output Wrappers962420
-Node: Two-way processors966933
-Node: Printing Messages969196
-Ref: Printing Messages-Footnote-1970272
-Node: Updating `ERRNO'970424
-Node: Requesting Values971164
-Ref: table-value-types-returned971891
-Node: Accessing Parameters972848
-Node: Symbol Table Access974082
-Node: Symbol table by name974596
-Node: Symbol table by cookie976616
-Ref: Symbol table by cookie-Footnote-1980761
-Node: Cached values980824
-Ref: Cached values-Footnote-1984320
-Node: Array Manipulation984411
-Ref: Array Manipulation-Footnote-1985501
-Node: Array Data Types985538
-Ref: Array Data Types-Footnote-1988193
-Node: Array Functions988285
-Node: Flattening Arrays992144
-Node: Creating Arrays999046
-Node: Redirection API1003817
-Node: Extension API Variables1006588
-Node: Extension Versioning1007221
-Node: Extension API Informational Variables1009112
-Node: Extension API Boilerplate1010177
-Node: Finding Extensions1013986
-Node: Extension Example1014546
-Node: Internal File Description1015318
-Node: Internal File Ops1019385
-Ref: Internal File Ops-Footnote-11031136
-Node: Using Internal File Ops1031276
-Ref: Using Internal File Ops-Footnote-11033659
-Node: Extension Samples1033932
-Node: Extension Sample File Functions1035460
-Node: Extension Sample Fnmatch1043141
-Node: Extension Sample Fork1044629
-Node: Extension Sample Inplace1045844
-Node: Extension Sample Ord1047930
-Node: Extension Sample Readdir1048766
-Ref: table-readdir-file-types1049643
-Node: Extension Sample Revout1050454
-Node: Extension Sample Rev2way1051043
-Node: Extension Sample Read write array1051783
-Node: Extension Sample Readfile1053723
-Node: Extension Sample Time1054818
-Node: Extension Sample API Tests1056166
-Node: gawkextlib1056657
-Node: Extension summary1059335
-Node: Extension Exercises1063024
-Node: Language History1064520
-Node: V7/SVR3.11066176
-Node: SVR41068329
-Node: POSIX1069763
-Node: BTL1071144
-Node: POSIX/GNU1071875
-Node: Feature History1077711
-Node: Common Extensions1091505
-Node: Ranges and Locales1092877
-Ref: Ranges and Locales-Footnote-11097496
-Ref: Ranges and Locales-Footnote-21097523
-Ref: Ranges and Locales-Footnote-31097758
-Node: Contributors1097979
-Node: History summary1103519
-Node: Installation1104898
-Node: Gawk Distribution1105844
-Node: Getting1106328
-Node: Extracting1107151
-Node: Distribution contents1108788
-Node: Unix Installation1114890
-Node: Quick Installation1115573
-Node: Shell Startup Files1117984
-Node: Additional Configuration Options1119063
-Node: Configuration Philosophy1120867
-Node: Non-Unix Installation1123236
-Node: PC Installation1123694
-Node: PC Binary Installation1125014
-Node: PC Compiling1126862
-Ref: PC Compiling-Footnote-11129883
-Node: PC Testing1129992
-Node: PC Using1131168
-Node: Cygwin1135283
-Node: MSYS1136053
-Node: VMS Installation1136554
-Node: VMS Compilation1137346
-Ref: VMS Compilation-Footnote-11138575
-Node: VMS Dynamic Extensions1138633
-Node: VMS Installation Details1140317
-Node: VMS Running1142568
-Node: VMS GNV1145408
-Node: VMS Old Gawk1146143
-Node: Bugs1146613
-Node: Other Versions1150502
-Node: Installation summary1156936
-Node: Notes1157995
-Node: Compatibility Mode1158860
-Node: Additions1159642
-Node: Accessing The Source1160567
-Node: Adding Code1162002
-Node: New Ports1168159
-Node: Derived Files1172641
-Ref: Derived Files-Footnote-11178116
-Ref: Derived Files-Footnote-21178150
-Ref: Derived Files-Footnote-31178746
-Node: Future Extensions1178860
-Node: Implementation Limitations1179466
-Node: Extension Design1180714
-Node: Old Extension Problems1181868
-Ref: Old Extension Problems-Footnote-11183385
-Node: Extension New Mechanism Goals1183442
-Ref: Extension New Mechanism Goals-Footnote-11186802
-Node: Extension Other Design Decisions1186991
-Node: Extension Future Growth1189099
-Node: Old Extension Mechanism1189935
-Node: Notes summary1191697
-Node: Basic Concepts1192883
-Node: Basic High Level1193564
-Ref: figure-general-flow1193836
-Ref: figure-process-flow1194435
-Ref: Basic High Level-Footnote-11197664
-Node: Basic Data Typing1197849
-Node: Glossary1201177
-Node: Copying1233106
-Node: GNU Free Documentation License1270662
-Node: Index1295798
+Node: Plain Getline245376
+Node: Getline/Variable248016
+Node: Getline/File249165
+Node: Getline/Variable/File250550
+Ref: Getline/Variable/File-Footnote-1252153
+Node: Getline/Pipe252240
+Node: Getline/Variable/Pipe254918
+Node: Getline/Coprocess256049
+Node: Getline/Variable/Coprocess257313
+Node: Getline Notes258052
+Node: Getline Summary260846
+Ref: table-getline-variants261258
+Node: Read Timeout262087
+Ref: Read Timeout-Footnote-1265990
+Node: Retrying Input266048
+Node: Command-line directories267238
+Node: Input Summary268145
+Node: Input Exercises271530
+Node: Printing272258
+Node: Print274093
+Node: Print Examples275550
+Node: Output Separators278329
+Node: OFMT280347
+Node: Printf281702
+Node: Basic Printf282487
+Node: Control Letters284059
+Node: Format Modifiers288044
+Node: Printf Examples294050
+Node: Redirection296536
+Node: Special FD303374
+Ref: Special FD-Footnote-1306540
+Node: Special Files306614
+Node: Other Inherited Files307231
+Node: Special Network308231
+Node: Special Caveats309093
+Node: Close Files And Pipes310042
+Ref: Close Files And Pipes-Footnote-1317227
+Ref: Close Files And Pipes-Footnote-2317375
+Node: Nonfatal317525
+Node: Output Summary319850
+Node: Output Exercises321071
+Node: Expressions321751
+Node: Values322940
+Node: Constants323617
+Node: Scalar Constants324308
+Ref: Scalar Constants-Footnote-1325170
+Node: Nondecimal-numbers325420
+Node: Regexp Constants328430
+Node: Using Constant Regexps328956
+Node: Variables332119
+Node: Using Variables332776
+Node: Assignment Options334687
+Node: Conversion336562
+Node: Strings And Numbers337086
+Ref: Strings And Numbers-Footnote-1340151
+Node: Locale influences conversions340260
+Ref: table-locale-affects343006
+Node: All Operators343598
+Node: Arithmetic Ops344227
+Node: Concatenation346732
+Ref: Concatenation-Footnote-1349551
+Node: Assignment Ops349658
+Ref: table-assign-ops354637
+Node: Increment Ops355947
+Node: Truth Values and Conditions359378
+Node: Truth Values360461
+Node: Typing and Comparison361510
+Node: Variable Typing362326
+Node: Comparison Operators365993
+Ref: table-relational-ops366403
+Node: POSIX String Comparison369898
+Ref: POSIX String Comparison-Footnote-1370970
+Node: Boolean Ops371109
+Ref: Boolean Ops-Footnote-1375587
+Node: Conditional Exp375678
+Node: Function Calls377416
+Node: Precedence381296
+Node: Locales384956
+Node: Expressions Summary386588
+Node: Patterns and Actions389159
+Node: Pattern Overview390279
+Node: Regexp Patterns391958
+Node: Expression Patterns392501
+Node: Ranges396281
+Node: BEGIN/END399388
+Node: Using BEGIN/END400149
+Ref: Using BEGIN/END-Footnote-1402885
+Node: I/O And BEGIN/END402991
+Node: BEGINFILE/ENDFILE405306
+Node: Empty408203
+Node: Using Shell Variables408520
+Node: Action Overview410793
+Node: Statements413119
+Node: If Statement414967
+Node: While Statement416462
+Node: Do Statement418490
+Node: For Statement419638
+Node: Switch Statement422796
+Node: Break Statement425178
+Node: Continue Statement427271
+Node: Next Statement429098
+Node: Nextfile Statement431479
+Node: Exit Statement434107
+Node: Built-in Variables436518
+Node: User-modified437651
+Ref: User-modified-Footnote-1445285
+Node: Auto-set445347
+Ref: Auto-set-Footnote-1459580
+Ref: Auto-set-Footnote-2459785
+Node: ARGC and ARGV459841
+Node: Pattern Action Summary464059
+Node: Arrays466492
+Node: Array Basics467821
+Node: Array Intro468665
+Ref: figure-array-elements470602
+Ref: Array Intro-Footnote-1473225
+Node: Reference to Elements473353
+Node: Assigning Elements475815
+Node: Array Example476306
+Node: Scanning an Array478065
+Node: Controlling Scanning481088
+Ref: Controlling Scanning-Footnote-1486482
+Node: Numeric Array Subscripts486798
+Node: Uninitialized Subscripts488983
+Node: Delete490600
+Ref: Delete-Footnote-1493349
+Node: Multidimensional493406
+Node: Multiscanning496503
+Node: Arrays of Arrays498092
+Node: Arrays Summary502846
+Node: Functions504937
+Node: Built-in505976
+Node: Calling Built-in507054
+Node: Numeric Functions509049
+Ref: Numeric Functions-Footnote-1513867
+Ref: Numeric Functions-Footnote-2514224
+Ref: Numeric Functions-Footnote-3514272
+Node: String Functions514544
+Ref: String Functions-Footnote-1538045
+Ref: String Functions-Footnote-2538174
+Ref: String Functions-Footnote-3538422
+Node: Gory Details538509
+Ref: table-sub-escapes540290
+Ref: table-sub-proposed541805
+Ref: table-posix-sub543167
+Ref: table-gensub-escapes544704
+Ref: Gory Details-Footnote-1545537
+Node: I/O Functions545688
+Ref: I/O Functions-Footnote-1552924
+Node: Time Functions553071
+Ref: Time Functions-Footnote-1563580
+Ref: Time Functions-Footnote-2563648
+Ref: Time Functions-Footnote-3563806
+Ref: Time Functions-Footnote-4563917
+Ref: Time Functions-Footnote-5564029
+Ref: Time Functions-Footnote-6564256
+Node: Bitwise Functions564522
+Ref: table-bitwise-ops565084
+Ref: Bitwise Functions-Footnote-1569412
+Node: Type Functions569584
+Node: I18N Functions570736
+Node: User-defined572383
+Node: Definition Syntax573188
+Ref: Definition Syntax-Footnote-1578847
+Node: Function Example578918
+Ref: Function Example-Footnote-1581839
+Node: Function Caveats581861
+Node: Calling A Function582379
+Node: Variable Scope583337
+Node: Pass By Value/Reference586330
+Node: Return Statement589827
+Node: Dynamic Typing592806
+Node: Indirect Calls593735
+Ref: Indirect Calls-Footnote-1603600
+Node: Functions Summary603728
+Node: Library Functions606430
+Ref: Library Functions-Footnote-1610038
+Ref: Library Functions-Footnote-2610181
+Node: Library Names610352
+Ref: Library Names-Footnote-1613810
+Ref: Library Names-Footnote-2614033
+Node: General Functions614119
+Node: Strtonum Function615222
+Node: Assert Function618244
+Node: Round Function621568
+Node: Cliff Random Function623109
+Node: Ordinal Functions624125
+Ref: Ordinal Functions-Footnote-1627188
+Ref: Ordinal Functions-Footnote-2627440
+Node: Join Function627651
+Ref: Join Function-Footnote-1629421
+Node: Getlocaltime Function629621
+Node: Readfile Function633365
+Node: Shell Quoting635337
+Node: Data File Management636738
+Node: Filetrans Function637370
+Node: Rewind Function641466
+Node: File Checking642852
+Ref: File Checking-Footnote-1644185
+Node: Empty Files644386
+Node: Ignoring Assigns646365
+Node: Getopt Function647915
+Ref: Getopt Function-Footnote-1659379
+Node: Passwd Functions659579
+Ref: Passwd Functions-Footnote-1668419
+Node: Group Functions668507
+Ref: Group Functions-Footnote-1676404
+Node: Walking Arrays676609
+Node: Library Functions Summary679615
+Node: Library Exercises681017
+Node: Sample Programs682297
+Node: Running Examples683067
+Node: Clones683795
+Node: Cut Program685019
+Node: Egrep Program694739
+Ref: Egrep Program-Footnote-1702242
+Node: Id Program702352
+Node: Split Program706028
+Ref: Split Program-Footnote-1709482
+Node: Tee Program709610
+Node: Uniq Program712399
+Node: Wc Program719818
+Ref: Wc Program-Footnote-1724068
+Node: Miscellaneous Programs724162
+Node: Dupword Program725375
+Node: Alarm Program727406
+Node: Translate Program732211
+Ref: Translate Program-Footnote-1736774
+Node: Labels Program737044
+Ref: Labels Program-Footnote-1740395
+Node: Word Sorting740479
+Node: History Sorting744549
+Node: Extract Program746384
+Node: Simple Sed753908
+Node: Igawk Program756978
+Ref: Igawk Program-Footnote-1771304
+Ref: Igawk Program-Footnote-2771505
+Ref: Igawk Program-Footnote-3771627
+Node: Anagram Program771742
+Node: Signature Program774803
+Node: Programs Summary776050
+Node: Programs Exercises777271
+Ref: Programs Exercises-Footnote-1781402
+Node: Advanced Features781493
+Node: Nondecimal Data783475
+Node: Array Sorting785065
+Node: Controlling Array Traversal785765
+Ref: Controlling Array Traversal-Footnote-1794131
+Node: Array Sorting Functions794249
+Ref: Array Sorting Functions-Footnote-1798135
+Node: Two-way I/O798331
+Ref: Two-way I/O-Footnote-1803276
+Ref: Two-way I/O-Footnote-2803462
+Node: TCP/IP Networking803544
+Node: Profiling806416
+Node: Advanced Features Summary814687
+Node: Internationalization816620
+Node: I18N and L10N818100
+Node: Explaining gettext818786
+Ref: Explaining gettext-Footnote-1823811
+Ref: Explaining gettext-Footnote-2823995
+Node: Programmer i18n824160
+Ref: Programmer i18n-Footnote-1829036
+Node: Translator i18n829085
+Node: String Extraction829879
+Ref: String Extraction-Footnote-1831010
+Node: Printf Ordering831096
+Ref: Printf Ordering-Footnote-1833882
+Node: I18N Portability833946
+Ref: I18N Portability-Footnote-1836402
+Node: I18N Example836465
+Ref: I18N Example-Footnote-1839268
+Node: Gawk I18N839340
+Node: I18N Summary839984
+Node: Debugger841324
+Node: Debugging842346
+Node: Debugging Concepts842787
+Node: Debugging Terms844597
+Node: Awk Debugging847169
+Node: Sample Debugging Session848075
+Node: Debugger Invocation848609
+Node: Finding The Bug849994
+Node: List of Debugger Commands856473
+Node: Breakpoint Control857805
+Node: Debugger Execution Control861482
+Node: Viewing And Changing Data864841
+Node: Execution Stack868217
+Node: Debugger Info869852
+Node: Miscellaneous Debugger Commands873897
+Node: Readline Support878898
+Node: Limitations879792
+Node: Debugging Summary881907
+Node: Arbitrary Precision Arithmetic883081
+Node: Computer Arithmetic884497
+Ref: table-numeric-ranges888074
+Ref: Computer Arithmetic-Footnote-1888598
+Node: Math Definitions888655
+Ref: table-ieee-formats891950
+Ref: Math Definitions-Footnote-1892554
+Node: MPFR features892659
+Node: FP Math Caution894330
+Ref: FP Math Caution-Footnote-1895380
+Node: Inexactness of computations895749
+Node: Inexact representation896708
+Node: Comparing FP Values898066
+Node: Errors accumulate899148
+Node: Getting Accuracy900580
+Node: Try To Round903284
+Node: Setting precision904183
+Ref: table-predefined-precision-strings904867
+Node: Setting the rounding mode906696
+Ref: table-gawk-rounding-modes907060
+Ref: Setting the rounding mode-Footnote-1910512
+Node: Arbitrary Precision Integers910691
+Ref: Arbitrary Precision Integers-Footnote-1915589
+Node: POSIX Floating Point Problems915738
+Ref: POSIX Floating Point Problems-Footnote-1919617
+Node: Floating point summary919655
+Node: Dynamic Extensions921842
+Node: Extension Intro923394
+Node: Plugin License924659
+Node: Extension Mechanism Outline925456
+Ref: figure-load-extension925884
+Ref: figure-register-new-function927364
+Ref: figure-call-new-function928368
+Node: Extension API Description930355
+Node: Extension API Functions Introduction931889
+Node: General Data Types936758
+Ref: General Data Types-Footnote-1942658
+Node: Memory Allocation Functions942957
+Ref: Memory Allocation Functions-Footnote-1945796
+Node: Constructor Functions945895
+Node: Registration Functions947634
+Node: Extension Functions948319
+Node: Exit Callback Functions950616
+Node: Extension Version String951864
+Node: Input Parsers952527
+Node: Output Wrappers962402
+Node: Two-way processors966915
+Node: Printing Messages969178
+Ref: Printing Messages-Footnote-1970254
+Node: Updating `ERRNO'970406
+Node: Requesting Values971146
+Ref: table-value-types-returned971873
+Node: Accessing Parameters972830
+Node: Symbol Table Access974064
+Node: Symbol table by name974578
+Node: Symbol table by cookie976598
+Ref: Symbol table by cookie-Footnote-1980743
+Node: Cached values980806
+Ref: Cached values-Footnote-1984302
+Node: Array Manipulation984393
+Ref: Array Manipulation-Footnote-1985483
+Node: Array Data Types985520
+Ref: Array Data Types-Footnote-1988175
+Node: Array Functions988267
+Node: Flattening Arrays992126
+Node: Creating Arrays999028
+Node: Redirection API1003799
+Node: Extension API Variables1006624
+Node: Extension Versioning1007257
+Node: Extension API Informational Variables1009148
+Node: Extension API Boilerplate1010213
+Node: Finding Extensions1014022
+Node: Extension Example1014582
+Node: Internal File Description1015354
+Node: Internal File Ops1019421
+Ref: Internal File Ops-Footnote-11031172
+Node: Using Internal File Ops1031312
+Ref: Using Internal File Ops-Footnote-11033695
+Node: Extension Samples1033968
+Node: Extension Sample File Functions1035496
+Node: Extension Sample Fnmatch1043177
+Node: Extension Sample Fork1044665
+Node: Extension Sample Inplace1045880
+Node: Extension Sample Ord1047966
+Node: Extension Sample Readdir1048802
+Ref: table-readdir-file-types1049679
+Node: Extension Sample Revout1050490
+Node: Extension Sample Rev2way1051079
+Node: Extension Sample Read write array1051819
+Node: Extension Sample Readfile1053759
+Node: Extension Sample Time1054854
+Node: Extension Sample API Tests1056202
+Node: gawkextlib1056693
+Node: Extension summary1059371
+Node: Extension Exercises1063060
+Node: Language History1064556
+Node: V7/SVR3.11066212
+Node: SVR41068365
+Node: POSIX1069799
+Node: BTL1071180
+Node: POSIX/GNU1071911
+Node: Feature History1077747
+Node: Common Extensions1091541
+Node: Ranges and Locales1092913
+Ref: Ranges and Locales-Footnote-11097532
+Ref: Ranges and Locales-Footnote-21097559
+Ref: Ranges and Locales-Footnote-31097794
+Node: Contributors1098015
+Node: History summary1103555
+Node: Installation1104934
+Node: Gawk Distribution1105880
+Node: Getting1106364
+Node: Extracting1107187
+Node: Distribution contents1108824
+Node: Unix Installation1114926
+Node: Quick Installation1115609
+Node: Shell Startup Files1118020
+Node: Additional Configuration Options1119099
+Node: Configuration Philosophy1120903
+Node: Non-Unix Installation1123272
+Node: PC Installation1123730
+Node: PC Binary Installation1125050
+Node: PC Compiling1126898
+Ref: PC Compiling-Footnote-11129919
+Node: PC Testing1130028
+Node: PC Using1131204
+Node: Cygwin1135319
+Node: MSYS1136089
+Node: VMS Installation1136590
+Node: VMS Compilation1137382
+Ref: VMS Compilation-Footnote-11138611
+Node: VMS Dynamic Extensions1138669
+Node: VMS Installation Details1140353
+Node: VMS Running1142604
+Node: VMS GNV1145444
+Node: VMS Old Gawk1146179
+Node: Bugs1146649
+Node: Other Versions1150538
+Node: Installation summary1156972
+Node: Notes1158031
+Node: Compatibility Mode1158896
+Node: Additions1159678
+Node: Accessing The Source1160603
+Node: Adding Code1162038
+Node: New Ports1168195
+Node: Derived Files1172677
+Ref: Derived Files-Footnote-11178152
+Ref: Derived Files-Footnote-21178186
+Ref: Derived Files-Footnote-31178782
+Node: Future Extensions1178896
+Node: Implementation Limitations1179502
+Node: Extension Design1180750
+Node: Old Extension Problems1181904
+Ref: Old Extension Problems-Footnote-11183421
+Node: Extension New Mechanism Goals1183478
+Ref: Extension New Mechanism Goals-Footnote-11186838
+Node: Extension Other Design Decisions1187027
+Node: Extension Future Growth1189135
+Node: Old Extension Mechanism1189971
+Node: Notes summary1191733
+Node: Basic Concepts1192919
+Node: Basic High Level1193600
+Ref: figure-general-flow1193872
+Ref: figure-process-flow1194471
+Ref: Basic High Level-Footnote-11197700
+Node: Basic Data Typing1197885
+Node: Glossary1201213
+Node: Copying1233142
+Node: GNU Free Documentation License1270698
+Node: Index1295834
End Tag Table
diff --git a/doc/gawk.texi b/doc/gawk.texi
index ff730b2..0c21d92 100644
--- a/doc/gawk.texi
+++ b/doc/gawk.texi
@@ -8115,7 +8115,7 @@ it encounters the end of the file. If there is some
error in getting
a record, such as a file that cannot be opened, then @code{getline}
returns @minus{}1. In this case, @command{gawk} sets the variable
@code{ERRNO} to a string describing the error that occurred.
-If the @code{errno} variable indicates that the I/O operation may be
+If @code{ERRNO} indicates that the I/O operation may be
retried, and @code{PROCINFO["input", "RETRY"]} is set, then @minus{}2
will be returned instead of @minus{}1, and further calls to @code{getline}
may be attemped. @DBXREF{Retrying Input} for further information about
@@ -8793,26 +8793,26 @@ indefinitely until some other process opens it for
writing.
@cindex differences in @command{awk} and @command{gawk}, retrying input
This @value{SECTION} describes a feature that is specific to @command{gawk}.
-When @command{gawk} encounters an error while reading input, it will by default
-return @minus{}1 from getline, and subsequent attempts to read from that file
-will result in an end-of-file indication. However, you may optionally instruct
address@hidden to allow I/O to be retried when certain errors are encountered
-by setting setting a special element
-in the @code{PROCINFO} array (@pxref{Auto-set}):
+When @command{gawk} encounters an error while reading input, by
+default @code{getline} returns @minus{}1, and subsequent attempts to
+read from that file result in an end-of-file indication. However, you
+may optionally instruct @command{gawk} to allow I/O to be retried when
+certain errors are encountered by setting setting a special element in
+the @code{PROCINFO} array (@pxref{Auto-set}):
@example
-PROCINFO["input_name", "RETRY"]
+PROCINFO["@var{input_name}", "RETRY"] = 1
@end example
-When set, this causes @command{gawk} to check the value of the system
+When this element exists, @command{gawk} checks the value of the system
@code{errno} variable when an I/O error occurs. If @code{errno} indicates
-a subsequent I/O attempt may succeed, @code{getline} will instead return
+a subsequent I/O attempt may succeed, @code{getline} instead returns
@minus{}2 and
further calls to @code{getline} may succeed. This applies to @code{errno}
-values EAGAIN, EWOULDBLOCK, EINTR, or ETIMEDOUT.
+values @code{EAGAIN}, @code{EWOULDBLOCK}, @code{EINTR}, or @code{ETIMEDOUT}.
This feature is useful in conjunction with
address@hidden"input_name", "READ_TIMEOUT"]} or situations where a file
address@hidden"@var{input_name}", "READ_TIMEOUT"]} or situations where a file
descriptor has been configured to behave in a non-blocking fashion.
@node Command-line directories
@@ -33685,45 +33685,58 @@ The following function allows extensions to access
and manipulate redirections.
@itemx @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ int fd,
@itemx @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ const awk_input_buf_t **ibufp,
@itemx @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ const awk_output_buf_t **obufp);
-Look up a file in @command{gawk}'s internal redirection table. If @code{name}
is NULL or @code{name_len} is 0, it returns
-data for the currently open input file corresponding to @code{FILENAME}
-(and it will not access the @code{filetype} argument, so that may be
-undefined).
-If the file is not already open, it tries to open it.
-The @code{filetype} argument must be NUL-terminated and should be one of:
+Look up a file in @command{gawk}'s internal redirection table.
+If @code{name} is @code{NULL} or @code{name_len} is zero, return
+data for the currently open input file corresponding to @code{FILENAME}.
+(This does not access the @code{filetype} argument, so that may be undefined).
+If the file is not already open, attempt to open it.
+The @code{filetype} argument must be zero-terminated and should be one of:
+
@table @code
address@hidden >
address@hidden ">"
A file opened for output.
address@hidden >>
+
address@hidden ">>"
A file opened for append.
address@hidden <
+
address@hidden "<"
A file opened for input.
address@hidden |>
+
address@hidden "|>"
A pipe opened for output.
address@hidden |<
+
address@hidden "|<"
A pipe opened for input.
address@hidden |&
+
address@hidden "|&"
A two-way coprocess.
@end table
-On error, a @code{false} value is returned. Otherwise, the return status
-is @code{true}, and additional information about the redirection is
-returned in the @code{ibufp} and @code{obufp} pointers. For input
redirections,
-the @code{*ibufp} value should be non-NULL, and @code{*obufp} should be NULL.
-For output redirections,
-the @code{*obufp} value should be non-NULL, and @code{*ibufp} should be NULL.
-For two-way coprocesses, both values should be non-NULL. In the usual case,
-the extension is interested in @code{(*ibufp)->fd} and/or
@code{fileno((*obufp)->fp)}.
-If the file is not already open, and the fd argument is non-negative,
address@hidden will use that file descriptor instead of opening the file
-in the usual way. If the fd is non-negative, but the file exists
-already, @command{gawk} ignores the fd and returns the existing file. It is
-the caller's responsibility to notice that neither the fd in the returned
address@hidden nor the fd in the returned @code{awk_output_buf_t} matches the
requested value. Note that
-supplying a file descriptor is currently NOT supported for pipes.
-It should work for input, output, append, and two-way (coprocess)
-sockets. If @code{filetype} is two-way, we assume that it is a socket!
-Note that in the two-way case, the input and output file descriptors
-may differ. To check for success, one must check whether either matches.
+
+On error, return a @code{false} value. Otherwise, return
address@hidden, and return additional information about the redirection
+in the @code{ibufp} and @code{obufp} pointers. For input
+redirections, the @code{*ibufp} value should be address@hidden,
+and @code{*obufp} should be @code{NULL}. For output redirections,
+the @code{*obufp} value should be address@hidden, and @code{*ibufp}
+should be @code{NULL}. For two-way coprocesses, both values should
+be address@hidden
+
+In the usual case, the extension is interested in @code{(*ibufp)->fd}
+and/or @code{fileno((*obufp)->fp)}. If the file is not already
+open, and the @code{fd} argument is non-negative, @command{gawk}
+will use that file descriptor instead of opening the file in the
+usual way. If @code{fd} is non-negative, but the file exists already,
address@hidden ignores @code{fd} and returns the existing file. It is
+the caller's responsibility to notice that neither the @code{fd} in
+the returned @code{awk_input_buf_t} nor the @code{fd} in the returned
address@hidden matches the requested value.
+
+Note that supplying a file descriptor is currently @emph{not} supported
+for pipes. However, supplying a file descriptor should work for input,
+output, append, and two-way (coprocess) sockets. If @code{filetype}
+is two-way, @command{gawk} assumes that it is a socket! Note that in
+the two-way case, the input and output file descriptors may differ.
+To check for success, you must check whether either matches.
@end table
It is anticipated that this API function will be used to implement I/O
diff --git a/doc/gawktexi.in b/doc/gawktexi.in
index eda9fc9..7aa427a 100644
--- a/doc/gawktexi.in
+++ b/doc/gawktexi.in
@@ -7715,7 +7715,7 @@ it encounters the end of the file. If there is some
error in getting
a record, such as a file that cannot be opened, then @code{getline}
returns @minus{}1. In this case, @command{gawk} sets the variable
@code{ERRNO} to a string describing the error that occurred.
-If the @code{errno} variable indicates that the I/O operation may be
+If @code{ERRNO} indicates that the I/O operation may be
retried, and @code{PROCINFO["input", "RETRY"]} is set, then @minus{}2
will be returned instead of @minus{}1, and further calls to @code{getline}
may be attemped. @DBXREF{Retrying Input} for further information about
@@ -8393,26 +8393,26 @@ indefinitely until some other process opens it for
writing.
@cindex differences in @command{awk} and @command{gawk}, retrying input
This @value{SECTION} describes a feature that is specific to @command{gawk}.
-When @command{gawk} encounters an error while reading input, it will by default
-return @minus{}1 from getline, and subsequent attempts to read from that file
-will result in an end-of-file indication. However, you may optionally instruct
address@hidden to allow I/O to be retried when certain errors are encountered
-by setting setting a special element
-in the @code{PROCINFO} array (@pxref{Auto-set}):
+When @command{gawk} encounters an error while reading input, by
+default @code{getline} returns @minus{}1, and subsequent attempts to
+read from that file result in an end-of-file indication. However, you
+may optionally instruct @command{gawk} to allow I/O to be retried when
+certain errors are encountered by setting setting a special element in
+the @code{PROCINFO} array (@pxref{Auto-set}):
@example
-PROCINFO["input_name", "RETRY"]
+PROCINFO["@var{input_name}", "RETRY"] = 1
@end example
-When set, this causes @command{gawk} to check the value of the system
+When this element exists, @command{gawk} checks the value of the system
@code{errno} variable when an I/O error occurs. If @code{errno} indicates
-a subsequent I/O attempt may succeed, @code{getline} will instead return
+a subsequent I/O attempt may succeed, @code{getline} instead returns
@minus{}2 and
further calls to @code{getline} may succeed. This applies to @code{errno}
-values EAGAIN, EWOULDBLOCK, EINTR, or ETIMEDOUT.
+values @code{EAGAIN}, @code{EWOULDBLOCK}, @code{EINTR}, or @code{ETIMEDOUT}.
This feature is useful in conjunction with
address@hidden"input_name", "READ_TIMEOUT"]} or situations where a file
address@hidden"@var{input_name}", "READ_TIMEOUT"]} or situations where a file
descriptor has been configured to behave in a non-blocking fashion.
@node Command-line directories
@@ -32776,45 +32776,58 @@ The following function allows extensions to access
and manipulate redirections.
@itemx @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ int fd,
@itemx @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ const awk_input_buf_t **ibufp,
@itemx @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ const awk_output_buf_t **obufp);
-Look up a file in @command{gawk}'s internal redirection table. If @code{name}
is NULL or @code{name_len} is 0, it returns
-data for the currently open input file corresponding to @code{FILENAME}
-(and it will not access the @code{filetype} argument, so that may be
-undefined).
-If the file is not already open, it tries to open it.
-The @code{filetype} argument must be NUL-terminated and should be one of:
+Look up a file in @command{gawk}'s internal redirection table.
+If @code{name} is @code{NULL} or @code{name_len} is zero, return
+data for the currently open input file corresponding to @code{FILENAME}.
+(This does not access the @code{filetype} argument, so that may be undefined).
+If the file is not already open, attempt to open it.
+The @code{filetype} argument must be zero-terminated and should be one of:
+
@table @code
address@hidden >
address@hidden ">"
A file opened for output.
address@hidden >>
+
address@hidden ">>"
A file opened for append.
address@hidden <
+
address@hidden "<"
A file opened for input.
address@hidden |>
+
address@hidden "|>"
A pipe opened for output.
address@hidden |<
+
address@hidden "|<"
A pipe opened for input.
address@hidden |&
+
address@hidden "|&"
A two-way coprocess.
@end table
-On error, a @code{false} value is returned. Otherwise, the return status
-is @code{true}, and additional information about the redirection is
-returned in the @code{ibufp} and @code{obufp} pointers. For input
redirections,
-the @code{*ibufp} value should be non-NULL, and @code{*obufp} should be NULL.
-For output redirections,
-the @code{*obufp} value should be non-NULL, and @code{*ibufp} should be NULL.
-For two-way coprocesses, both values should be non-NULL. In the usual case,
-the extension is interested in @code{(*ibufp)->fd} and/or
@code{fileno((*obufp)->fp)}.
-If the file is not already open, and the fd argument is non-negative,
address@hidden will use that file descriptor instead of opening the file
-in the usual way. If the fd is non-negative, but the file exists
-already, @command{gawk} ignores the fd and returns the existing file. It is
-the caller's responsibility to notice that neither the fd in the returned
address@hidden nor the fd in the returned @code{awk_output_buf_t} matches the
requested value. Note that
-supplying a file descriptor is currently NOT supported for pipes.
-It should work for input, output, append, and two-way (coprocess)
-sockets. If @code{filetype} is two-way, we assume that it is a socket!
-Note that in the two-way case, the input and output file descriptors
-may differ. To check for success, one must check whether either matches.
+
+On error, return a @code{false} value. Otherwise, return
address@hidden, and return additional information about the redirection
+in the @code{ibufp} and @code{obufp} pointers. For input
+redirections, the @code{*ibufp} value should be address@hidden,
+and @code{*obufp} should be @code{NULL}. For output redirections,
+the @code{*obufp} value should be address@hidden, and @code{*ibufp}
+should be @code{NULL}. For two-way coprocesses, both values should
+be address@hidden
+
+In the usual case, the extension is interested in @code{(*ibufp)->fd}
+and/or @code{fileno((*obufp)->fp)}. If the file is not already
+open, and the @code{fd} argument is non-negative, @command{gawk}
+will use that file descriptor instead of opening the file in the
+usual way. If @code{fd} is non-negative, but the file exists already,
address@hidden ignores @code{fd} and returns the existing file. It is
+the caller's responsibility to notice that neither the @code{fd} in
+the returned @code{awk_input_buf_t} nor the @code{fd} in the returned
address@hidden matches the requested value.
+
+Note that supplying a file descriptor is currently @emph{not} supported
+for pipes. However, supplying a file descriptor should work for input,
+output, append, and two-way (coprocess) sockets. If @code{filetype}
+is two-way, @command{gawk} assumes that it is a socket! Note that in
+the two-way case, the input and output file descriptors may differ.
+To check for success, you must check whether either matches.
@end table
It is anticipated that this API function will be used to implement I/O
diff --git a/gawkapi.c b/gawkapi.c
index 01bfa76..01ccdf2 100644
--- a/gawkapi.c
+++ b/gawkapi.c
@@ -1044,42 +1044,48 @@ api_release_value(awk_ext_id_t id, awk_value_cookie_t
value)
/* api_get_file --- return a handle to an existing or newly opened file */
static awk_bool_t
-api_get_file(awk_ext_id_t id, const char *name, size_t namelen, const char
*filetype, int fd, const awk_input_buf_t **ibufp, const awk_output_buf_t
**obufp)
+api_get_file(awk_ext_id_t id, const char *name, size_t namelen, const char
*filetype,
+ int fd, const awk_input_buf_t **ibufp, const awk_output_buf_t
**obufp)
{
const struct redirect *f;
int flag; /* not used, sigh */
enum redirval redirtype;
- if ((name == NULL) || (namelen == 0)) {
+ if (name == NULL || namelen == 0) {
if (curfile == NULL) {
+ INSTRUCTION *pc;
+ int save_rule;
+ char *save_source;
+
if (nextfile(& curfile, false) <= 0)
return awk_false;
- {
- INSTRUCTION *pc = main_beginfile;
- /* save execution state */
- int save_rule = currule;
- char *save_source = source;
-
- while (1) {
- if (!pc)
- fatal(_("cannot find end of
BEGINFILE rule"));
- if (pc->opcode == Op_after_beginfile)
- break;
- pc = pc->nexti;
- }
- pc->opcode = Op_stop;
- (void) (*interpret)(main_beginfile);
- pc->opcode = Op_after_beginfile;
- after_beginfile(& curfile);
- /* restore execution state */
- currule = save_rule;
- source = save_source;
+
+ pc = main_beginfile;
+ /* save execution state */
+ save_rule = currule;
+ save_source = source;
+
+ while (1) {
+ if (!pc)
+ fatal(_("cannot find end of BEGINFILE
rule"));
+ if (pc->opcode == Op_after_beginfile)
+ break;
+ pc = pc->nexti;
}
+ pc->opcode = Op_stop;
+ (void) (*interpret)(main_beginfile);
+ pc->opcode = Op_after_beginfile;
+ after_beginfile(& curfile);
+ /* restore execution state */
+ currule = save_rule;
+ source = save_source;
}
*ibufp = &curfile->public;
*obufp = NULL;
+
return awk_true;
}
+
redirtype = redirect_none;
switch (filetype[0]) {
case '<':
@@ -1113,13 +1119,16 @@ api_get_file(awk_ext_id_t id, const char *name, size_t
namelen, const char *file
}
break;
}
+
if (redirtype == redirect_none) {
warning(_("cannot open unrecognized file type `%s' for `%s'"),
filetype, name);
return awk_false;
}
+
if ((f = redirect_string(name, namelen, 0, redirtype, &flag, fd,
false)) == NULL)
return awk_false;
+
*ibufp = f->iop ? & f->iop->public : NULL;
*obufp = f->output.fp ? & f->output : NULL;
return awk_true;
diff --git a/io.c b/io.c
index 5f97735..4dbe16f 100644
--- a/io.c
+++ b/io.c
@@ -724,7 +724,7 @@ redflags2str(int flags)
return genflags2str(flags, redtab);
}
-/* redirect --- Redirection for printf and print commands */
+/* redirect_string --- Redirection for printf and print commands, use string
info */
struct redirect *
redirect_string(const char *str, size_t explen, bool not_string,
@@ -1065,6 +1065,8 @@ redirect_string(const char *str, size_t explen, bool
not_string,
return rp;
}
+/* redirect --- Redirection for printf and print commands */
+
struct redirect *
redirect(NODE *redir_exp, int redirtype, int *errflg, bool failure_fatal)
{
@@ -2303,7 +2305,7 @@ wait_any(int interesting) /* pid of interest, if any */
break;
}
}
-#else
+#else /* ! __MINGW32__ */
#ifndef HAVE_SIGPROCMASK
hstat = signal(SIGHUP, SIG_IGN);
qstat = signal(SIGQUIT, SIG_IGN);
@@ -2340,7 +2342,7 @@ wait_any(int interesting) /* pid of interest, if any */
signal(SIGHUP, hstat);
signal(SIGQUIT, qstat);
#endif
-#endif
+#endif /* ! __MINGW32__ */
#ifndef HAVE_SIGPROCMASK
signal(SIGINT, istat);
#else
@@ -3509,14 +3511,15 @@ find_longest_terminator:
return REC_OK;
}
-/* return true if PROCINFO[<filename>, "RETRY"] exists */
+/* retryable --- return true if PROCINFO[<filename>, "RETRY"] exists */
+
static inline int
retryable(IOBUF *iop)
{
return PROCINFO_node && in_PROCINFO(iop->public.name, "RETRY", NULL);
}
-/* Does the I/O error indicate that the operation should be retried later? */
+/* errno_io_retry --- Does the I/O error indicate that the operation should be
retried later? */
static inline int
errno_io_retry(void)
http://git.sv.gnu.org/cgit/gawk.git/commit/?id=0bb831721d3feeac20977e5a14be6b5bbf13e52a
commit 0bb831721d3feeac20977e5a14be6b5bbf13e52a
Merge: a31a424 56e848a
Author: Arnold D. Robbins <address@hidden>
Date: Tue Mar 24 22:17:26 2015 +0200
Merge branch 'master' into select
diff --cc doc/gawk.info
index 95788ec,b2b5bb4..f0318e2
--- a/doc/gawk.info
+++ b/doc/gawk.info
@@@ -33784,7 -33681,7 +33798,7 @@@ Inde
* messages from extensions: Printing Messages. (line 6)
* metacharacters in regular expressions: Regexp Operators. (line 6)
* metacharacters, escape sequences for: Escape Sequences. (line 139)
- * minimum precision supported by MPFR library: Auto-set. (line 247)
-* minimum precision required by MPFR library: Auto-set. (line 238)
++* minimum precision required by MPFR library: Auto-set. (line 247)
* mktime: Time Functions. (line 25)
* modifiers, in format specifiers: Format Modifiers. (line 6)
* monetary information, localization: Explaining gettext. (line 104)
@@@ -34124,8 -34021,8 +34138,8 @@@
* printing, unduplicated lines of text: Uniq Program. (line 6)
* printing, user information: Id Program. (line 6)
* private variables: Library Names. (line 11)
- * process group idIDof gawk process: Auto-set. (line 206)
-* process group ID of gawk process: Auto-set. (line 197)
-* process ID of gawk process: Auto-set. (line 200)
++* process group ID of gawk process: Auto-set. (line 206)
+* process ID of gawk process: Auto-set. (line 209)
* processes, two-way communications with: Two-way I/O. (line 6)
* processing data: Basic High Level. (line 6)
* PROCINFO array <1>: Passwd Functions. (line 6)
@@@ -34865,563 -34761,561 +34879,563 @@@
Tag Table:
Node: Top1204
-Node: Foreword342291
-Node: Foreword446735
-Node: Preface48266
-Ref: Preface-Footnote-151137
-Ref: Preface-Footnote-251244
-Ref: Preface-Footnote-351477
-Node: History51619
-Node: Names53970
-Ref: Names-Footnote-155064
-Node: This Manual55210
-Ref: This Manual-Footnote-161710
-Node: Conventions61810
-Node: Manual History64147
-Ref: Manual History-Footnote-167140
-Ref: Manual History-Footnote-267181
-Node: How To Contribute67255
-Node: Acknowledgments68384
-Node: Getting Started73250
-Node: Running gawk75689
-Node: One-shot76879
-Node: Read Terminal78143
-Node: Long80174
-Node: Executable Scripts81687
-Ref: Executable Scripts-Footnote-184476
-Node: Comments84579
-Node: Quoting87061
-Node: DOS Quoting92579
-Node: Sample Data Files93254
-Node: Very Simple95849
-Node: Two Rules100748
-Node: More Complex102634
-Node: Statements/Lines105496
-Ref: Statements/Lines-Footnote-1109951
-Node: Other Features110216
-Node: When111152
-Ref: When-Footnote-1112906
-Node: Intro Summary112971
-Node: Invoking Gawk113855
-Node: Command Line115369
-Node: Options116167
-Ref: Options-Footnote-1131962
-Ref: Options-Footnote-2132191
-Node: Other Arguments132216
-Node: Naming Standard Input135164
-Node: Environment Variables136257
-Node: AWKPATH Variable136815
-Ref: AWKPATH Variable-Footnote-1140222
-Ref: AWKPATH Variable-Footnote-2140267
-Node: AWKLIBPATH Variable140527
-Node: Other Environment Variables141783
-Node: Exit Status145414
-Node: Include Files146090
-Node: Loading Shared Libraries149679
-Node: Obsolete151106
-Node: Undocumented151798
-Node: Invoking Summary152065
-Node: Regexp153728
-Node: Regexp Usage155182
-Node: Escape Sequences157219
-Node: Regexp Operators163448
-Ref: Regexp Operators-Footnote-1170858
-Ref: Regexp Operators-Footnote-2171005
-Node: Bracket Expressions171103
-Ref: table-char-classes173118
-Node: Leftmost Longest176060
-Node: Computed Regexps177362
-Node: GNU Regexp Operators180791
-Node: Case-sensitivity184463
-Ref: Case-sensitivity-Footnote-1187348
-Ref: Case-sensitivity-Footnote-2187583
-Node: Regexp Summary187691
-Node: Reading Files189158
-Node: Records191251
-Node: awk split records191984
-Node: gawk split records196913
-Ref: gawk split records-Footnote-1201452
-Node: Fields201489
-Ref: Fields-Footnote-1204267
-Node: Nonconstant Fields204353
-Ref: Nonconstant Fields-Footnote-1206591
-Node: Changing Fields206794
-Node: Field Separators212725
-Node: Default Field Splitting215429
-Node: Regexp Field Splitting216546
-Node: Single Character Fields219896
-Node: Command Line Field Separator220955
-Node: Full Line Fields224172
-Ref: Full Line Fields-Footnote-1225693
-Ref: Full Line Fields-Footnote-2225739
-Node: Field Splitting Summary225840
-Node: Constant Size227914
-Node: Splitting By Content232493
-Ref: Splitting By Content-Footnote-1236458
-Node: Multiple Line236621
-Ref: Multiple Line-Footnote-1242502
-Node: Getline242681
-Node: Plain Getline244888
-Node: Getline/Variable247528
-Node: Getline/File248677
-Node: Getline/Variable/File250062
-Ref: Getline/Variable/File-Footnote-1251665
-Node: Getline/Pipe251752
-Node: Getline/Variable/Pipe254430
-Node: Getline/Coprocess255561
-Node: Getline/Variable/Coprocess256825
-Node: Getline Notes257564
-Node: Getline Summary260358
-Ref: table-getline-variants260770
-Node: Read Timeout261599
-Ref: Read Timeout-Footnote-1265436
-Node: Command-line directories265494
-Node: Input Summary266399
-Node: Input Exercises269784
-Node: Printing270512
-Node: Print272347
-Node: Print Examples273804
-Node: Output Separators276583
-Node: OFMT278601
-Node: Printf279956
-Node: Basic Printf280741
-Node: Control Letters282313
-Node: Format Modifiers286298
-Node: Printf Examples292304
-Node: Redirection294790
-Node: Special FD301628
-Ref: Special FD-Footnote-1304794
-Node: Special Files304868
-Node: Other Inherited Files305485
-Node: Special Network306485
-Node: Special Caveats307347
-Node: Close Files And Pipes308296
-Ref: Close Files And Pipes-Footnote-1315481
-Ref: Close Files And Pipes-Footnote-2315629
-Node: Nonfatal315779
-Node: Output Summary318104
-Node: Output Exercises319325
-Node: Expressions320005
-Node: Values321194
-Node: Constants321871
-Node: Scalar Constants322562
-Ref: Scalar Constants-Footnote-1323424
-Node: Nondecimal-numbers323674
-Node: Regexp Constants326684
-Node: Using Constant Regexps327210
-Node: Variables330373
-Node: Using Variables331030
-Node: Assignment Options332941
-Node: Conversion334816
-Node: Strings And Numbers335340
-Ref: Strings And Numbers-Footnote-1338405
-Node: Locale influences conversions338514
-Ref: table-locale-affects341260
-Node: All Operators341852
-Node: Arithmetic Ops342481
-Node: Concatenation344986
-Ref: Concatenation-Footnote-1347805
-Node: Assignment Ops347912
-Ref: table-assign-ops352891
-Node: Increment Ops354201
-Node: Truth Values and Conditions357632
-Node: Truth Values358715
-Node: Typing and Comparison359764
-Node: Variable Typing360580
-Node: Comparison Operators364247
-Ref: table-relational-ops364657
-Node: POSIX String Comparison368152
-Ref: POSIX String Comparison-Footnote-1369224
-Node: Boolean Ops369363
-Ref: Boolean Ops-Footnote-1373841
-Node: Conditional Exp373932
-Node: Function Calls375670
-Node: Precedence379550
-Node: Locales383210
-Node: Expressions Summary384842
-Node: Patterns and Actions387413
-Node: Pattern Overview388533
-Node: Regexp Patterns390212
-Node: Expression Patterns390755
-Node: Ranges394535
-Node: BEGIN/END397642
-Node: Using BEGIN/END398403
-Ref: Using BEGIN/END-Footnote-1401139
-Node: I/O And BEGIN/END401245
-Node: BEGINFILE/ENDFILE403560
-Node: Empty406457
-Node: Using Shell Variables406774
-Node: Action Overview409047
-Node: Statements411373
-Node: If Statement413221
-Node: While Statement414716
-Node: Do Statement416744
-Node: For Statement417892
-Node: Switch Statement421050
-Node: Break Statement423432
-Node: Continue Statement425525
-Node: Next Statement427352
-Node: Nextfile Statement429733
-Node: Exit Statement432361
-Node: Built-in Variables434772
-Node: User-modified435905
-Ref: User-modified-Footnote-1443539
-Node: Auto-set443601
-Ref: Auto-set-Footnote-1457310
-Ref: Auto-set-Footnote-2457515
-Node: ARGC and ARGV457571
-Node: Pattern Action Summary461789
-Node: Arrays464222
-Node: Array Basics465551
-Node: Array Intro466395
-Ref: figure-array-elements468332
-Ref: Array Intro-Footnote-1470955
-Node: Reference to Elements471083
-Node: Assigning Elements473545
-Node: Array Example474036
-Node: Scanning an Array475795
-Node: Controlling Scanning478818
-Ref: Controlling Scanning-Footnote-1484212
-Node: Numeric Array Subscripts484528
-Node: Uninitialized Subscripts486713
-Node: Delete488330
-Ref: Delete-Footnote-1491079
-Node: Multidimensional491136
-Node: Multiscanning494233
-Node: Arrays of Arrays495822
-Node: Arrays Summary500576
-Node: Functions502667
-Node: Built-in503706
-Node: Calling Built-in504784
-Node: Numeric Functions506779
-Ref: Numeric Functions-Footnote-1511597
-Ref: Numeric Functions-Footnote-2511954
-Ref: Numeric Functions-Footnote-3512002
-Node: String Functions512274
-Ref: String Functions-Footnote-1535775
-Ref: String Functions-Footnote-2535904
-Ref: String Functions-Footnote-3536152
-Node: Gory Details536239
-Ref: table-sub-escapes538020
-Ref: table-sub-proposed539535
-Ref: table-posix-sub540897
-Ref: table-gensub-escapes542434
-Ref: Gory Details-Footnote-1543267
-Node: I/O Functions543418
-Ref: I/O Functions-Footnote-1550654
-Node: Time Functions550801
-Ref: Time Functions-Footnote-1561310
-Ref: Time Functions-Footnote-2561378
-Ref: Time Functions-Footnote-3561536
-Ref: Time Functions-Footnote-4561647
-Ref: Time Functions-Footnote-5561759
-Ref: Time Functions-Footnote-6561986
-Node: Bitwise Functions562252
-Ref: table-bitwise-ops562814
-Ref: Bitwise Functions-Footnote-1567142
-Node: Type Functions567314
-Node: I18N Functions568466
-Node: User-defined570113
-Node: Definition Syntax570918
-Ref: Definition Syntax-Footnote-1576577
-Node: Function Example576648
-Ref: Function Example-Footnote-1579569
-Node: Function Caveats579591
-Node: Calling A Function580109
-Node: Variable Scope581067
-Node: Pass By Value/Reference584060
-Node: Return Statement587557
-Node: Dynamic Typing590536
-Node: Indirect Calls591465
-Ref: Indirect Calls-Footnote-1601330
-Node: Functions Summary601458
-Node: Library Functions604160
-Ref: Library Functions-Footnote-1607768
-Ref: Library Functions-Footnote-2607911
-Node: Library Names608082
-Ref: Library Names-Footnote-1611540
-Ref: Library Names-Footnote-2611763
-Node: General Functions611849
-Node: Strtonum Function612952
-Node: Assert Function615974
-Node: Round Function619298
-Node: Cliff Random Function620839
-Node: Ordinal Functions621855
-Ref: Ordinal Functions-Footnote-1624918
-Ref: Ordinal Functions-Footnote-2625170
-Node: Join Function625381
-Ref: Join Function-Footnote-1627151
-Node: Getlocaltime Function627351
-Node: Readfile Function631095
-Node: Shell Quoting633067
-Node: Data File Management634468
-Node: Filetrans Function635100
-Node: Rewind Function639196
-Node: File Checking640582
-Ref: File Checking-Footnote-1641915
-Node: Empty Files642116
-Node: Ignoring Assigns644095
-Node: Getopt Function645645
-Ref: Getopt Function-Footnote-1657109
-Node: Passwd Functions657309
-Ref: Passwd Functions-Footnote-1666149
-Node: Group Functions666237
-Ref: Group Functions-Footnote-1674134
-Node: Walking Arrays674339
-Node: Library Functions Summary677345
-Node: Library Exercises678747
-Node: Sample Programs680027
-Node: Running Examples680797
-Node: Clones681525
-Node: Cut Program682749
-Node: Egrep Program692469
-Ref: Egrep Program-Footnote-1699972
-Node: Id Program700082
-Node: Split Program703758
-Ref: Split Program-Footnote-1707212
-Node: Tee Program707340
-Node: Uniq Program710129
-Node: Wc Program717548
-Ref: Wc Program-Footnote-1721798
-Node: Miscellaneous Programs721892
-Node: Dupword Program723105
-Node: Alarm Program725136
-Node: Translate Program729941
-Ref: Translate Program-Footnote-1734504
-Node: Labels Program734774
-Ref: Labels Program-Footnote-1738125
-Node: Word Sorting738209
-Node: History Sorting742279
-Node: Extract Program744114
-Node: Simple Sed751638
-Node: Igawk Program754708
-Ref: Igawk Program-Footnote-1769034
-Ref: Igawk Program-Footnote-2769235
-Ref: Igawk Program-Footnote-3769357
-Node: Anagram Program769472
-Node: Signature Program772533
-Node: Programs Summary773780
-Node: Programs Exercises775001
-Ref: Programs Exercises-Footnote-1779132
-Node: Advanced Features779223
-Node: Nondecimal Data781205
-Node: Array Sorting782795
-Node: Controlling Array Traversal783495
-Ref: Controlling Array Traversal-Footnote-1791861
-Node: Array Sorting Functions791979
-Ref: Array Sorting Functions-Footnote-1795865
-Node: Two-way I/O796061
-Ref: Two-way I/O-Footnote-1801006
-Ref: Two-way I/O-Footnote-2801192
-Node: TCP/IP Networking801274
-Node: Profiling804146
-Node: Advanced Features Summary812417
-Node: Internationalization814350
-Node: I18N and L10N815830
-Node: Explaining gettext816516
-Ref: Explaining gettext-Footnote-1821541
-Ref: Explaining gettext-Footnote-2821725
-Node: Programmer i18n821890
-Ref: Programmer i18n-Footnote-1826766
-Node: Translator i18n826815
-Node: String Extraction827609
-Ref: String Extraction-Footnote-1828740
-Node: Printf Ordering828826
-Ref: Printf Ordering-Footnote-1831612
-Node: I18N Portability831676
-Ref: I18N Portability-Footnote-1834132
-Node: I18N Example834195
-Ref: I18N Example-Footnote-1836998
-Node: Gawk I18N837070
-Node: I18N Summary837714
-Node: Debugger839054
-Node: Debugging840076
-Node: Debugging Concepts840517
-Node: Debugging Terms842327
-Node: Awk Debugging844899
-Node: Sample Debugging Session845805
-Node: Debugger Invocation846339
-Node: Finding The Bug847724
-Node: List of Debugger Commands854203
-Node: Breakpoint Control855535
-Node: Debugger Execution Control859212
-Node: Viewing And Changing Data862571
-Node: Execution Stack865947
-Node: Debugger Info867582
-Node: Miscellaneous Debugger Commands871627
-Node: Readline Support876628
-Node: Limitations877522
-Node: Debugging Summary879637
-Node: Arbitrary Precision Arithmetic880811
-Node: Computer Arithmetic882227
-Ref: table-numeric-ranges885804
-Ref: Computer Arithmetic-Footnote-1886328
-Node: Math Definitions886385
-Ref: table-ieee-formats889680
-Ref: Math Definitions-Footnote-1890284
-Node: MPFR features890389
-Node: FP Math Caution892060
-Ref: FP Math Caution-Footnote-1893110
-Node: Inexactness of computations893479
-Node: Inexact representation894438
-Node: Comparing FP Values895796
-Node: Errors accumulate896878
-Node: Getting Accuracy898310
-Node: Try To Round901014
-Node: Setting precision901913
-Ref: table-predefined-precision-strings902597
-Node: Setting the rounding mode904426
-Ref: table-gawk-rounding-modes904790
-Ref: Setting the rounding mode-Footnote-1908242
-Node: Arbitrary Precision Integers908421
-Ref: Arbitrary Precision Integers-Footnote-1913319
-Node: POSIX Floating Point Problems913468
-Ref: POSIX Floating Point Problems-Footnote-1917347
-Node: Floating point summary917385
-Node: Dynamic Extensions919572
-Node: Extension Intro921124
-Node: Plugin License922389
-Node: Extension Mechanism Outline923186
-Ref: figure-load-extension923614
-Ref: figure-register-new-function925094
-Ref: figure-call-new-function926098
-Node: Extension API Description928085
-Node: Extension API Functions Introduction929535
-Node: General Data Types934356
-Ref: General Data Types-Footnote-1940256
-Node: Memory Allocation Functions940555
-Ref: Memory Allocation Functions-Footnote-1943394
-Node: Constructor Functions943493
-Node: Registration Functions945232
-Node: Extension Functions945917
-Node: Exit Callback Functions948214
-Node: Extension Version String949462
-Node: Input Parsers950125
-Node: Output Wrappers960000
-Node: Two-way processors964513
-Node: Printing Messages966776
-Ref: Printing Messages-Footnote-1967852
-Node: Updating `ERRNO'968004
-Node: Requesting Values968744
-Ref: table-value-types-returned969471
-Node: Accessing Parameters970428
-Node: Symbol Table Access971662
-Node: Symbol table by name972176
-Node: Symbol table by cookie974196
-Ref: Symbol table by cookie-Footnote-1978341
-Node: Cached values978404
-Ref: Cached values-Footnote-1981900
-Node: Array Manipulation981991
-Ref: Array Manipulation-Footnote-1983089
-Node: Array Data Types983126
-Ref: Array Data Types-Footnote-1985781
-Node: Array Functions985873
-Node: Flattening Arrays989732
-Node: Creating Arrays996634
-Node: Extension API Variables1001405
-Node: Extension Versioning1002041
-Node: Extension API Informational Variables1003932
-Node: Extension API Boilerplate1004997
-Node: Finding Extensions1008806
-Node: Extension Example1009366
-Node: Internal File Description1010138
-Node: Internal File Ops1014205
-Ref: Internal File Ops-Footnote-11025956
-Node: Using Internal File Ops1026096
-Ref: Using Internal File Ops-Footnote-11028479
-Node: Extension Samples1028752
-Node: Extension Sample File Functions1030280
-Node: Extension Sample Fnmatch1037961
-Node: Extension Sample Fork1039449
-Node: Extension Sample Inplace1040664
-Node: Extension Sample Ord1042750
-Node: Extension Sample Readdir1043586
-Ref: table-readdir-file-types1044463
-Node: Extension Sample Revout1045274
-Node: Extension Sample Rev2way1045863
-Node: Extension Sample Read write array1046603
-Node: Extension Sample Readfile1048543
-Node: Extension Sample Time1049638
-Node: Extension Sample API Tests1050986
-Node: gawkextlib1051477
-Node: Extension summary1054155
-Node: Extension Exercises1057844
-Node: Language History1059340
-Node: V7/SVR3.11060996
-Node: SVR41063149
-Node: POSIX1064583
-Node: BTL1065964
-Node: POSIX/GNU1066695
-Node: Feature History1072531
-Node: Common Extensions1086325
-Node: Ranges and Locales1087697
-Ref: Ranges and Locales-Footnote-11092316
-Ref: Ranges and Locales-Footnote-21092343
-Ref: Ranges and Locales-Footnote-31092578
-Node: Contributors1092799
-Node: History summary1098339
-Node: Installation1099718
-Node: Gawk Distribution1100664
-Node: Getting1101148
-Node: Extracting1101971
-Node: Distribution contents1103608
-Node: Unix Installation1109710
-Node: Quick Installation1110393
-Node: Shell Startup Files1112804
-Node: Additional Configuration Options1113883
-Node: Configuration Philosophy1115687
-Node: Non-Unix Installation1118056
-Node: PC Installation1118514
-Node: PC Binary Installation1119834
-Node: PC Compiling1121682
-Ref: PC Compiling-Footnote-11124703
-Node: PC Testing1124812
-Node: PC Using1125988
-Node: Cygwin1130103
-Node: MSYS1130873
-Node: VMS Installation1131374
-Node: VMS Compilation1132166
-Ref: VMS Compilation-Footnote-11133395
-Node: VMS Dynamic Extensions1133453
-Node: VMS Installation Details1135137
-Node: VMS Running1137388
-Node: VMS GNV1140228
-Node: VMS Old Gawk1140963
-Node: Bugs1141433
-Node: Other Versions1145322
-Node: Installation summary1151756
-Node: Notes1152815
-Node: Compatibility Mode1153680
-Node: Additions1154462
-Node: Accessing The Source1155387
-Node: Adding Code1156822
-Node: New Ports1162979
-Node: Derived Files1167461
-Ref: Derived Files-Footnote-11172936
-Ref: Derived Files-Footnote-21172970
-Ref: Derived Files-Footnote-31173566
-Node: Future Extensions1173680
-Node: Implementation Limitations1174286
-Node: Extension Design1175534
-Node: Old Extension Problems1176688
-Ref: Old Extension Problems-Footnote-11178205
-Node: Extension New Mechanism Goals1178262
-Ref: Extension New Mechanism Goals-Footnote-11181622
-Node: Extension Other Design Decisions1181811
-Node: Extension Future Growth1183919
-Node: Old Extension Mechanism1184755
-Node: Notes summary1186517
-Node: Basic Concepts1187703
-Node: Basic High Level1188384
-Ref: figure-general-flow1188656
-Ref: figure-process-flow1189255
-Ref: Basic High Level-Footnote-11192484
-Node: Basic Data Typing1192669
-Node: Glossary1195997
-Node: Copying1227926
-Node: GNU Free Documentation License1265482
-Node: Index1290618
+Node: Foreword342451
+Node: Foreword446895
+Node: Preface48426
+Ref: Preface-Footnote-151297
+Ref: Preface-Footnote-251404
+Ref: Preface-Footnote-351637
+Node: History51779
+Node: Names54130
+Ref: Names-Footnote-155224
+Node: This Manual55370
+Ref: This Manual-Footnote-161870
+Node: Conventions61970
+Node: Manual History64307
+Ref: Manual History-Footnote-167300
+Ref: Manual History-Footnote-267341
+Node: How To Contribute67415
+Node: Acknowledgments68544
+Node: Getting Started73410
+Node: Running gawk75849
+Node: One-shot77039
+Node: Read Terminal78303
+Node: Long80334
+Node: Executable Scripts81847
+Ref: Executable Scripts-Footnote-184636
+Node: Comments84739
+Node: Quoting87221
+Node: DOS Quoting92739
+Node: Sample Data Files93414
+Node: Very Simple96009
+Node: Two Rules100908
+Node: More Complex102794
+Node: Statements/Lines105656
+Ref: Statements/Lines-Footnote-1110111
+Node: Other Features110376
+Node: When111312
+Ref: When-Footnote-1113066
+Node: Intro Summary113131
+Node: Invoking Gawk114015
+Node: Command Line115529
+Node: Options116327
+Ref: Options-Footnote-1132122
+Ref: Options-Footnote-2132351
+Node: Other Arguments132376
+Node: Naming Standard Input135324
+Node: Environment Variables136417
+Node: AWKPATH Variable136975
+Ref: AWKPATH Variable-Footnote-1140382
+Ref: AWKPATH Variable-Footnote-2140427
+Node: AWKLIBPATH Variable140687
+Node: Other Environment Variables141943
+Node: Exit Status145574
+Node: Include Files146250
+Node: Loading Shared Libraries149839
+Node: Obsolete151266
+Node: Undocumented151958
+Node: Invoking Summary152225
+Node: Regexp153888
+Node: Regexp Usage155342
+Node: Escape Sequences157379
+Node: Regexp Operators163608
+Ref: Regexp Operators-Footnote-1171018
+Ref: Regexp Operators-Footnote-2171165
+Node: Bracket Expressions171263
+Ref: table-char-classes173278
+Node: Leftmost Longest176220
+Node: Computed Regexps177522
+Node: GNU Regexp Operators180951
+Node: Case-sensitivity184623
+Ref: Case-sensitivity-Footnote-1187508
+Ref: Case-sensitivity-Footnote-2187743
+Node: Regexp Summary187851
+Node: Reading Files189318
+Node: Records191480
+Node: awk split records192213
+Node: gawk split records197142
+Ref: gawk split records-Footnote-1201681
+Node: Fields201718
+Ref: Fields-Footnote-1204496
+Node: Nonconstant Fields204582
+Ref: Nonconstant Fields-Footnote-1206820
+Node: Changing Fields207023
+Node: Field Separators212954
+Node: Default Field Splitting215658
+Node: Regexp Field Splitting216775
+Node: Single Character Fields220125
+Node: Command Line Field Separator221184
+Node: Full Line Fields224401
+Ref: Full Line Fields-Footnote-1225922
+Ref: Full Line Fields-Footnote-2225968
+Node: Field Splitting Summary226069
+Node: Constant Size228143
+Node: Splitting By Content232722
+Ref: Splitting By Content-Footnote-1236687
+Node: Multiple Line236850
+Ref: Multiple Line-Footnote-1242731
+Node: Getline242910
+Node: Plain Getline245389
+Node: Getline/Variable248029
+Node: Getline/File249178
+Node: Getline/Variable/File250563
+Ref: Getline/Variable/File-Footnote-1252166
+Node: Getline/Pipe252253
+Node: Getline/Variable/Pipe254931
+Node: Getline/Coprocess256062
+Node: Getline/Variable/Coprocess257326
+Node: Getline Notes258065
+Node: Getline Summary260859
+Ref: table-getline-variants261271
+Node: Read Timeout262100
+Ref: Read Timeout-Footnote-1266003
+Node: Retrying Input266061
+Node: Command-line directories267256
+Node: Input Summary268163
+Node: Input Exercises271548
+Node: Printing272276
+Node: Print274111
+Node: Print Examples275568
+Node: Output Separators278347
+Node: OFMT280365
+Node: Printf281720
+Node: Basic Printf282505
+Node: Control Letters284077
+Node: Format Modifiers288062
+Node: Printf Examples294068
+Node: Redirection296554
+Node: Special FD303392
+Ref: Special FD-Footnote-1306558
+Node: Special Files306632
+Node: Other Inherited Files307249
+Node: Special Network308249
+Node: Special Caveats309111
+Node: Close Files And Pipes310060
+Ref: Close Files And Pipes-Footnote-1317245
+Ref: Close Files And Pipes-Footnote-2317393
+Node: Nonfatal317543
+Node: Output Summary319868
+Node: Output Exercises321089
+Node: Expressions321769
+Node: Values322958
+Node: Constants323635
+Node: Scalar Constants324326
+Ref: Scalar Constants-Footnote-1325188
+Node: Nondecimal-numbers325438
+Node: Regexp Constants328448
+Node: Using Constant Regexps328974
+Node: Variables332137
+Node: Using Variables332794
+Node: Assignment Options334705
+Node: Conversion336580
+Node: Strings And Numbers337104
+Ref: Strings And Numbers-Footnote-1340169
+Node: Locale influences conversions340278
+Ref: table-locale-affects343024
+Node: All Operators343616
+Node: Arithmetic Ops344245
+Node: Concatenation346750
+Ref: Concatenation-Footnote-1349569
+Node: Assignment Ops349676
+Ref: table-assign-ops354655
+Node: Increment Ops355965
+Node: Truth Values and Conditions359396
+Node: Truth Values360479
+Node: Typing and Comparison361528
+Node: Variable Typing362344
+Node: Comparison Operators366011
+Ref: table-relational-ops366421
+Node: POSIX String Comparison369916
+Ref: POSIX String Comparison-Footnote-1370988
+Node: Boolean Ops371127
+Ref: Boolean Ops-Footnote-1375605
+Node: Conditional Exp375696
+Node: Function Calls377434
+Node: Precedence381314
+Node: Locales384974
+Node: Expressions Summary386606
+Node: Patterns and Actions389177
+Node: Pattern Overview390297
+Node: Regexp Patterns391976
+Node: Expression Patterns392519
+Node: Ranges396299
+Node: BEGIN/END399406
+Node: Using BEGIN/END400167
+Ref: Using BEGIN/END-Footnote-1402903
+Node: I/O And BEGIN/END403009
+Node: BEGINFILE/ENDFILE405324
+Node: Empty408221
+Node: Using Shell Variables408538
+Node: Action Overview410811
+Node: Statements413137
+Node: If Statement414985
+Node: While Statement416480
+Node: Do Statement418508
+Node: For Statement419656
+Node: Switch Statement422814
+Node: Break Statement425196
+Node: Continue Statement427289
+Node: Next Statement429116
+Node: Nextfile Statement431497
+Node: Exit Statement434125
+Node: Built-in Variables436536
+Node: User-modified437669
+Ref: User-modified-Footnote-1445303
+Node: Auto-set445365
+Ref: Auto-set-Footnote-1459598
+Ref: Auto-set-Footnote-2459803
+Node: ARGC and ARGV459859
+Node: Pattern Action Summary464077
+Node: Arrays466510
+Node: Array Basics467839
+Node: Array Intro468683
+Ref: figure-array-elements470620
+Ref: Array Intro-Footnote-1473243
+Node: Reference to Elements473371
+Node: Assigning Elements475833
+Node: Array Example476324
+Node: Scanning an Array478083
+Node: Controlling Scanning481106
+Ref: Controlling Scanning-Footnote-1486500
+Node: Numeric Array Subscripts486816
+Node: Uninitialized Subscripts489001
+Node: Delete490618
+Ref: Delete-Footnote-1493367
+Node: Multidimensional493424
+Node: Multiscanning496521
+Node: Arrays of Arrays498110
+Node: Arrays Summary502864
+Node: Functions504955
+Node: Built-in505994
+Node: Calling Built-in507072
+Node: Numeric Functions509067
+Ref: Numeric Functions-Footnote-1513885
+Ref: Numeric Functions-Footnote-2514242
+Ref: Numeric Functions-Footnote-3514290
+Node: String Functions514562
+Ref: String Functions-Footnote-1538063
+Ref: String Functions-Footnote-2538192
+Ref: String Functions-Footnote-3538440
+Node: Gory Details538527
+Ref: table-sub-escapes540308
+Ref: table-sub-proposed541823
+Ref: table-posix-sub543185
+Ref: table-gensub-escapes544722
+Ref: Gory Details-Footnote-1545555
+Node: I/O Functions545706
+Ref: I/O Functions-Footnote-1552942
+Node: Time Functions553089
+Ref: Time Functions-Footnote-1563598
+Ref: Time Functions-Footnote-2563666
+Ref: Time Functions-Footnote-3563824
+Ref: Time Functions-Footnote-4563935
+Ref: Time Functions-Footnote-5564047
+Ref: Time Functions-Footnote-6564274
+Node: Bitwise Functions564540
+Ref: table-bitwise-ops565102
+Ref: Bitwise Functions-Footnote-1569430
+Node: Type Functions569602
+Node: I18N Functions570754
+Node: User-defined572401
+Node: Definition Syntax573206
+Ref: Definition Syntax-Footnote-1578865
+Node: Function Example578936
+Ref: Function Example-Footnote-1581857
+Node: Function Caveats581879
+Node: Calling A Function582397
+Node: Variable Scope583355
+Node: Pass By Value/Reference586348
+Node: Return Statement589845
+Node: Dynamic Typing592824
+Node: Indirect Calls593753
+Ref: Indirect Calls-Footnote-1603618
+Node: Functions Summary603746
+Node: Library Functions606448
+Ref: Library Functions-Footnote-1610056
+Ref: Library Functions-Footnote-2610199
+Node: Library Names610370
+Ref: Library Names-Footnote-1613828
+Ref: Library Names-Footnote-2614051
+Node: General Functions614137
+Node: Strtonum Function615240
+Node: Assert Function618262
+Node: Round Function621586
+Node: Cliff Random Function623127
+Node: Ordinal Functions624143
+Ref: Ordinal Functions-Footnote-1627206
+Ref: Ordinal Functions-Footnote-2627458
+Node: Join Function627669
+Ref: Join Function-Footnote-1629439
+Node: Getlocaltime Function629639
+Node: Readfile Function633383
+Node: Shell Quoting635355
+Node: Data File Management636756
+Node: Filetrans Function637388
+Node: Rewind Function641484
+Node: File Checking642870
+Ref: File Checking-Footnote-1644203
+Node: Empty Files644404
+Node: Ignoring Assigns646383
+Node: Getopt Function647933
+Ref: Getopt Function-Footnote-1659397
+Node: Passwd Functions659597
+Ref: Passwd Functions-Footnote-1668437
+Node: Group Functions668525
+Ref: Group Functions-Footnote-1676422
+Node: Walking Arrays676627
+Node: Library Functions Summary679633
+Node: Library Exercises681035
+Node: Sample Programs682315
+Node: Running Examples683085
+Node: Clones683813
+Node: Cut Program685037
+Node: Egrep Program694757
+Ref: Egrep Program-Footnote-1702260
+Node: Id Program702370
+Node: Split Program706046
+Ref: Split Program-Footnote-1709500
+Node: Tee Program709628
+Node: Uniq Program712417
+Node: Wc Program719836
+Ref: Wc Program-Footnote-1724086
+Node: Miscellaneous Programs724180
+Node: Dupword Program725393
+Node: Alarm Program727424
+Node: Translate Program732229
+Ref: Translate Program-Footnote-1736792
+Node: Labels Program737062
+Ref: Labels Program-Footnote-1740413
+Node: Word Sorting740497
+Node: History Sorting744567
+Node: Extract Program746402
+Node: Simple Sed753926
+Node: Igawk Program756996
+Ref: Igawk Program-Footnote-1771322
+Ref: Igawk Program-Footnote-2771523
+Ref: Igawk Program-Footnote-3771645
+Node: Anagram Program771760
+Node: Signature Program774821
+Node: Programs Summary776068
+Node: Programs Exercises777289
+Ref: Programs Exercises-Footnote-1781420
+Node: Advanced Features781511
+Node: Nondecimal Data783493
+Node: Array Sorting785083
+Node: Controlling Array Traversal785783
+Ref: Controlling Array Traversal-Footnote-1794149
+Node: Array Sorting Functions794267
+Ref: Array Sorting Functions-Footnote-1798153
+Node: Two-way I/O798349
+Ref: Two-way I/O-Footnote-1803294
+Ref: Two-way I/O-Footnote-2803480
+Node: TCP/IP Networking803562
+Node: Profiling806434
+Node: Advanced Features Summary814705
+Node: Internationalization816638
+Node: I18N and L10N818118
+Node: Explaining gettext818804
+Ref: Explaining gettext-Footnote-1823829
+Ref: Explaining gettext-Footnote-2824013
+Node: Programmer i18n824178
+Ref: Programmer i18n-Footnote-1829054
+Node: Translator i18n829103
+Node: String Extraction829897
+Ref: String Extraction-Footnote-1831028
+Node: Printf Ordering831114
+Ref: Printf Ordering-Footnote-1833900
+Node: I18N Portability833964
+Ref: I18N Portability-Footnote-1836420
+Node: I18N Example836483
+Ref: I18N Example-Footnote-1839286
+Node: Gawk I18N839358
+Node: I18N Summary840002
+Node: Debugger841342
+Node: Debugging842364
+Node: Debugging Concepts842805
+Node: Debugging Terms844615
+Node: Awk Debugging847187
+Node: Sample Debugging Session848093
+Node: Debugger Invocation848627
+Node: Finding The Bug850012
+Node: List of Debugger Commands856491
+Node: Breakpoint Control857823
+Node: Debugger Execution Control861500
+Node: Viewing And Changing Data864859
+Node: Execution Stack868235
+Node: Debugger Info869870
+Node: Miscellaneous Debugger Commands873915
+Node: Readline Support878916
+Node: Limitations879810
+Node: Debugging Summary881925
+Node: Arbitrary Precision Arithmetic883099
+Node: Computer Arithmetic884515
+Ref: table-numeric-ranges888092
+Ref: Computer Arithmetic-Footnote-1888616
+Node: Math Definitions888673
+Ref: table-ieee-formats891968
+Ref: Math Definitions-Footnote-1892572
+Node: MPFR features892677
+Node: FP Math Caution894348
+Ref: FP Math Caution-Footnote-1895398
+Node: Inexactness of computations895767
+Node: Inexact representation896726
+Node: Comparing FP Values898084
+Node: Errors accumulate899166
+Node: Getting Accuracy900598
+Node: Try To Round903302
+Node: Setting precision904201
+Ref: table-predefined-precision-strings904885
+Node: Setting the rounding mode906714
+Ref: table-gawk-rounding-modes907078
+Ref: Setting the rounding mode-Footnote-1910530
+Node: Arbitrary Precision Integers910709
+Ref: Arbitrary Precision Integers-Footnote-1915607
+Node: POSIX Floating Point Problems915756
+Ref: POSIX Floating Point Problems-Footnote-1919635
+Node: Floating point summary919673
+Node: Dynamic Extensions921860
+Node: Extension Intro923412
+Node: Plugin License924677
+Node: Extension Mechanism Outline925474
+Ref: figure-load-extension925902
+Ref: figure-register-new-function927382
+Ref: figure-call-new-function928386
+Node: Extension API Description930373
+Node: Extension API Functions Introduction931907
+Node: General Data Types936776
+Ref: General Data Types-Footnote-1942676
+Node: Memory Allocation Functions942975
+Ref: Memory Allocation Functions-Footnote-1945814
+Node: Constructor Functions945913
+Node: Registration Functions947652
+Node: Extension Functions948337
+Node: Exit Callback Functions950634
+Node: Extension Version String951882
+Node: Input Parsers952545
+Node: Output Wrappers962420
+Node: Two-way processors966933
+Node: Printing Messages969196
+Ref: Printing Messages-Footnote-1970272
+Node: Updating `ERRNO'970424
+Node: Requesting Values971164
+Ref: table-value-types-returned971891
+Node: Accessing Parameters972848
+Node: Symbol Table Access974082
+Node: Symbol table by name974596
+Node: Symbol table by cookie976616
+Ref: Symbol table by cookie-Footnote-1980761
+Node: Cached values980824
+Ref: Cached values-Footnote-1984320
+Node: Array Manipulation984411
+Ref: Array Manipulation-Footnote-1985501
+Node: Array Data Types985538
+Ref: Array Data Types-Footnote-1988193
+Node: Array Functions988285
+Node: Flattening Arrays992144
+Node: Creating Arrays999046
+Node: Redirection API1003817
+Node: Extension API Variables1006588
+Node: Extension Versioning1007221
+Node: Extension API Informational Variables1009112
+Node: Extension API Boilerplate1010177
+Node: Finding Extensions1013986
+Node: Extension Example1014546
+Node: Internal File Description1015318
+Node: Internal File Ops1019385
+Ref: Internal File Ops-Footnote-11031136
+Node: Using Internal File Ops1031276
+Ref: Using Internal File Ops-Footnote-11033659
+Node: Extension Samples1033932
+Node: Extension Sample File Functions1035460
+Node: Extension Sample Fnmatch1043141
+Node: Extension Sample Fork1044629
+Node: Extension Sample Inplace1045844
+Node: Extension Sample Ord1047930
+Node: Extension Sample Readdir1048766
+Ref: table-readdir-file-types1049643
+Node: Extension Sample Revout1050454
+Node: Extension Sample Rev2way1051043
+Node: Extension Sample Read write array1051783
+Node: Extension Sample Readfile1053723
+Node: Extension Sample Time1054818
+Node: Extension Sample API Tests1056166
+Node: gawkextlib1056657
+Node: Extension summary1059335
+Node: Extension Exercises1063024
- Node: Language History1063746
- Node: V7/SVR3.11065402
- Node: SVR41067555
- Node: POSIX1068989
- Node: BTL1070370
- Node: POSIX/GNU1071101
- Node: Feature History1076937
- Node: Common Extensions1090731
- Node: Ranges and Locales1092103
- Ref: Ranges and Locales-Footnote-11096722
- Ref: Ranges and Locales-Footnote-21096749
- Ref: Ranges and Locales-Footnote-31096984
- Node: Contributors1097205
- Node: History summary1102745
- Node: Installation1104124
- Node: Gawk Distribution1105070
- Node: Getting1105554
- Node: Extracting1106377
- Node: Distribution contents1108014
- Node: Unix Installation1114116
- Node: Quick Installation1114799
- Node: Shell Startup Files1117210
- Node: Additional Configuration Options1118289
- Node: Configuration Philosophy1120093
- Node: Non-Unix Installation1122462
- Node: PC Installation1122920
- Node: PC Binary Installation1124240
- Node: PC Compiling1126088
- Ref: PC Compiling-Footnote-11129109
- Node: PC Testing1129218
- Node: PC Using1130394
- Node: Cygwin1134509
- Node: MSYS1135279
- Node: VMS Installation1135780
- Node: VMS Compilation1136572
- Ref: VMS Compilation-Footnote-11137801
- Node: VMS Dynamic Extensions1137859
- Node: VMS Installation Details1139543
- Node: VMS Running1141794
- Node: VMS GNV1144634
- Node: VMS Old Gawk1145369
- Node: Bugs1145839
- Node: Other Versions1149728
- Node: Installation summary1156162
- Node: Notes1157221
- Node: Compatibility Mode1158086
- Node: Additions1158868
- Node: Accessing The Source1159793
- Node: Adding Code1161228
- Node: New Ports1167385
- Node: Derived Files1171867
- Ref: Derived Files-Footnote-11177342
- Ref: Derived Files-Footnote-21177376
- Ref: Derived Files-Footnote-31177972
- Node: Future Extensions1178086
- Node: Implementation Limitations1178692
- Node: Extension Design1179940
- Node: Old Extension Problems1181094
- Ref: Old Extension Problems-Footnote-11182611
- Node: Extension New Mechanism Goals1182668
- Ref: Extension New Mechanism Goals-Footnote-11186028
- Node: Extension Other Design Decisions1186217
- Node: Extension Future Growth1188325
- Node: Old Extension Mechanism1189161
- Node: Notes summary1190923
- Node: Basic Concepts1192109
- Node: Basic High Level1192790
- Ref: figure-general-flow1193062
- Ref: figure-process-flow1193661
- Ref: Basic High Level-Footnote-11196890
- Node: Basic Data Typing1197075
- Node: Glossary1200403
- Node: Copying1232332
- Node: GNU Free Documentation License1269888
- Node: Index1295024
++Node: Language History1064520
++Node: V7/SVR3.11066176
++Node: SVR41068329
++Node: POSIX1069763
++Node: BTL1071144
++Node: POSIX/GNU1071875
++Node: Feature History1077711
++Node: Common Extensions1091505
++Node: Ranges and Locales1092877
++Ref: Ranges and Locales-Footnote-11097496
++Ref: Ranges and Locales-Footnote-21097523
++Ref: Ranges and Locales-Footnote-31097758
++Node: Contributors1097979
++Node: History summary1103519
++Node: Installation1104898
++Node: Gawk Distribution1105844
++Node: Getting1106328
++Node: Extracting1107151
++Node: Distribution contents1108788
++Node: Unix Installation1114890
++Node: Quick Installation1115573
++Node: Shell Startup Files1117984
++Node: Additional Configuration Options1119063
++Node: Configuration Philosophy1120867
++Node: Non-Unix Installation1123236
++Node: PC Installation1123694
++Node: PC Binary Installation1125014
++Node: PC Compiling1126862
++Ref: PC Compiling-Footnote-11129883
++Node: PC Testing1129992
++Node: PC Using1131168
++Node: Cygwin1135283
++Node: MSYS1136053
++Node: VMS Installation1136554
++Node: VMS Compilation1137346
++Ref: VMS Compilation-Footnote-11138575
++Node: VMS Dynamic Extensions1138633
++Node: VMS Installation Details1140317
++Node: VMS Running1142568
++Node: VMS GNV1145408
++Node: VMS Old Gawk1146143
++Node: Bugs1146613
++Node: Other Versions1150502
++Node: Installation summary1156936
++Node: Notes1157995
++Node: Compatibility Mode1158860
++Node: Additions1159642
++Node: Accessing The Source1160567
++Node: Adding Code1162002
++Node: New Ports1168159
++Node: Derived Files1172641
++Ref: Derived Files-Footnote-11178116
++Ref: Derived Files-Footnote-21178150
++Ref: Derived Files-Footnote-31178746
++Node: Future Extensions1178860
++Node: Implementation Limitations1179466
++Node: Extension Design1180714
++Node: Old Extension Problems1181868
++Ref: Old Extension Problems-Footnote-11183385
++Node: Extension New Mechanism Goals1183442
++Ref: Extension New Mechanism Goals-Footnote-11186802
++Node: Extension Other Design Decisions1186991
++Node: Extension Future Growth1189099
++Node: Old Extension Mechanism1189935
++Node: Notes summary1191697
++Node: Basic Concepts1192883
++Node: Basic High Level1193564
++Ref: figure-general-flow1193836
++Ref: figure-process-flow1194435
++Ref: Basic High Level-Footnote-11197664
++Node: Basic Data Typing1197849
++Node: Glossary1201177
++Node: Copying1233106
++Node: GNU Free Documentation License1270662
++Node: Index1295798
End Tag Table
-----------------------------------------------------------------------
Summary of changes:
ChangeLog | 5 +
awk.h | 4 +-
doc/ChangeLog | 8 +
doc/gawk.1 | 6 +-
doc/gawk.info | 1046 ++++++++++++++++++++++++++++---------------------------
doc/gawk.texi | 121 ++++---
doc/gawktexi.in | 121 ++++---
gawkapi.c | 53 ++--
io.c | 13 +-
9 files changed, 743 insertions(+), 634 deletions(-)
hooks/post-receive
--
gawk
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- [gawk-diffs] [SCM] gawk branch, select, updated. gawk-4.1.0-1228-g6522e5b,
Arnold Robbins <=