gawk-diffs
[Top][All Lists]
Advanced

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

[SCM] gawk branch, gawk-5.3-stable, updated. gawk-4.1.0-5488-gd998e324


From: Arnold Robbins
Subject: [SCM] gawk branch, gawk-5.3-stable, updated. gawk-4.1.0-5488-gd998e324
Date: Thu, 11 Jul 2024 05:22:42 -0400 (EDT)

This is an automated email from the git hooks/post-receive script. It was
generated because a ref change was pushed to the repository containing
the project "gawk".

The branch, gawk-5.3-stable has been updated
       via  d998e32435542941d505e23e08a6d60270757253 (commit)
      from  7f7d733d0ddd4e75f16f2cff1b6b1a28642bbcea (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=d998e32435542941d505e23e08a6d60270757253

commit d998e32435542941d505e23e08a6d60270757253
Author: Arnold D. Robbins <arnold@skeeve.com>
Date:   Thu Jul 11 12:22:25 2024 +0300

    Document getline as a function, not a statement.

diff --git a/doc/ChangeLog b/doc/ChangeLog
index 06eb9e51..20b067fb 100644
--- a/doc/ChangeLog
+++ b/doc/ChangeLog
@@ -1,3 +1,8 @@
+2024-07-11         Denys Vlasenko        <dvlasenk@redhat.com>
+
+       * gawk.1, gawk.texi, gawkinet.texi: Document getline as a function,
+       not as a statement.
+
 2024-07-11         Arnold D. Robbins     <arnold@skeeve.com>
 
        * gawk.texi: Typo fix.
diff --git a/doc/gawk.1 b/doc/gawk.1
index d69cb4e8..97cb4fab 100644
--- a/doc/gawk.1
+++ b/doc/gawk.1
@@ -1426,7 +1426,7 @@ below.)
 .PP
 The
 .B getline
-command returns 1 on success, zero on end of file, and \-1 on an error.
+function returns 1 on success, zero on end of file, and \-1 on an error.
 If the
 .IR errno (3)
 value indicates that the I/O operation may be retried,
diff --git a/doc/gawk.info b/doc/gawk.info
index 6c678079..88c25c49 100644
--- a/doc/gawk.info
+++ b/doc/gawk.info
@@ -1097,7 +1097,7 @@ in *note Sample Programs::, should be of interest.
 
         − *note Reading Files::, describes how ‘awk’ reads your data.
           It introduces the concepts of records and fields, as well as
-          the ‘getline’ command.  I/O redirection is first described
+          the ‘getline’ function.  I/O redirection is first described
           here.  Network I/O is also briefly introduced here.
 
         − *note Printing::, describes how ‘awk’ programs can produce
@@ -4590,10 +4590,10 @@ one line.  Each record is automatically split into 
chunks called
 “fields”.  This makes it more convenient for programs to work on the
 parts of a record.
 
-   On rare occasions, you may need to use the ‘getline’ command.  The
-‘getline’ command is valuable both because it can do explicit input from
-any number of files, and because the files used with it do not have to
-be named on the ‘awk’ command line (*note Getline::).
+   On rare occasions, you may need to use the ‘getline’ function.  The
+‘getline’ function is valuable both because it can do explicit input
+from any number of files, and because the files used with it do not have
+to be named on the ‘awk’ command line (*note Getline::).
 
 * Menu:
 
@@ -6181,14 +6181,14 @@ output from another program) or the files specified on 
the command line.
 The ‘awk’ language has a special built-in command called ‘getline’ that
 can be used to read input under your explicit control.
 
-   The ‘getline’ command is used in several different ways and should
+   The ‘getline’ function is used in several different ways and should
 _not_ be used by beginners.  The examples that follow the explanation of
-the ‘getline’ command include material that has not been covered yet.
-Therefore, come back and study the ‘getline’ command _after_ you have
+the ‘getline’ function include material that has not been covered yet.
+Therefore, come back and study the ‘getline’ function _after_ you have
 reviewed the rest of this Info file and have a good knowledge of how
 ‘awk’ works.
 
-   The ‘getline’ command returns 1 if it finds a record and 0 if it
+   The ‘getline’ function returns 1 if it finds a record and 0 if 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 ‘getline’ returns −1.
 In this case, ‘gawk’ sets the variable ‘ERRNO’ to a string describing
@@ -6227,7 +6227,7 @@ File: gawk.info,  Node: Plain Getline,  Next: 
Getline/Variable,  Up: Getline
 4.10.1 Using ‘getline’ with No Arguments
 ----------------------------------------
 
-The ‘getline’ command can be used without arguments to read input from
+The ‘getline’ function can be used without arguments to read input from
 the current input file.  All it does in this case is read the next input
 record and split it up into fields.  This is useful if you've finished
 processing the current record, but want to do some special processing on
@@ -6280,7 +6280,7 @@ regular expression.
      ⊣ part 1 part 2 part 3
      ⊣ no comment
 
-   This form of the ‘getline’ command sets ‘NF’, ‘NR’, ‘FNR’, 
‘RT’, and
+   This form of the ‘getline’ function sets ‘NF’, ‘NR’, ‘FNR’, 
‘RT’, and
 the value of ‘$0’.
 
      NOTE: The new value of ‘$0’ is used to test the patterns of any
@@ -6326,7 +6326,7 @@ and produces these results:
      phore
      free
 
-   The ‘getline’ command used in this way sets only the variables ‘NR’,
+   The ‘getline’ function used in this way sets only the variables 
‘NR’,
 ‘FNR’, and ‘RT’ (and, of course, VAR).  The record is not split into
 fields, so the values of the fields (including ‘$0’) and the value of
 ‘NF’ do not change.
@@ -6575,7 +6575,7 @@ in mind:
    • An interesting side effect occurs if you use ‘getline’ without a
      redirection inside a ‘BEGIN’ rule.  Because an unredirected
      ‘getline’ reads from the command-line data files, the first
-     ‘getline’ command causes ‘awk’ to set the value of ‘FILENAME’.
+     ‘getline’ function causes ‘awk’ to set the value of 
‘FILENAME’.
      Normally, ‘FILENAME’ does not have a value inside ‘BEGIN’ rules,
      because you have not yet started to process the command-line data
      files.  (d.c.)  (See *note BEGIN/END::; also *note Auto-set::.)
@@ -6593,6 +6593,32 @@ in mind:
      ‘FILENAME’ to be updated if they cause ‘awk’ to start reading a 
new
      input file.
 
+   • ‘getline’ is not a statement (unlike ‘print’), it's an 
expression.
+     It has a result value, and can be used as part as a larger
+     expression, in control statements, and so on.  Here are examples of
+     the "read until EOF/error" idiom:
+
+          while ("sort FILE" | getline line > 0)
+              print line
+          while (getline line < "file.txt" > 0)
+              print line
+
+     If you need to test the error code for being less than zero, you
+     need to enclose ‘getline’ in parentheses, to avoid it being
+     interpreted as input redirection:
+
+          if ((getline VAR) < 0)
+              print "Read error";
+
+     It is, in fact, best to parenthesize use of ‘getline’ in all
+     control expressions, as some versions of ‘awk’ require this.  Thus,
+     the previos examples are best written this way:
+
+          while (("sort FILE" | getline line) > 0)
+              print line
+          while ((getline line < "file.txt") > 0)
+              print line
+
    • If the variable being assigned is an expression with side effects,
      different versions of ‘awk’ behave differently upon encountering
      end-of-file.  Some versions don't evaluate the expression; many
@@ -10478,7 +10504,7 @@ I/O from a ‘BEGIN’ or ‘END’ rule.  The first 
has to do with the value of
 input is read, there simply is no input record, and therefore no fields,
 when executing ‘BEGIN’ rules.  References to ‘$0’ and the fields yield 
a
 null string or zero, depending upon the context.  One way to give ‘$0’ a
-real value is to execute a ‘getline’ command without a variable (*note
+real value is to execute a ‘getline’ function without a variable (*note
 Getline::).  Another way is simply to assign a value to ‘$0’.
 
    The second point is similar to the first, but from the other
@@ -10569,7 +10595,7 @@ level of the ‘awk’ program.
 either a ‘BEGINFILE’ or an ‘ENDFILE’ rule.  The ‘nextfile’ 
statement is
 allowed only inside a ‘BEGINFILE’ rule, not inside an ‘ENDFILE’ rule.
 
-   The ‘getline’ statement (*note Getline::) is restricted inside both
+   The ‘getline’ function (*note Getline::) is restricted inside both
 ‘BEGINFILE’ and ‘ENDFILE’: only redirected forms of ‘getline’ are
 allowed.
 
@@ -10690,7 +10716,7 @@ Compound statements
      ‘if’, ‘while’, ‘do’, or ‘for’ statement.
 
 Input statements
-     Use the ‘getline’ command (*note Getline::).  Also supplied in
+     Use the ‘getline’ function (*note Getline::).  Also supplied in
      ‘awk’ are the ‘next’ statement (*note Next Statement::) and the
      ‘nextfile’ statement (*note Nextfile Statement::).
 
@@ -34782,7 +34808,7 @@ Redirection
      standard input stream, or performing output to something other than
      the standard output stream.
 
-     You can redirect input to the ‘getline’ statement using the ‘<’,
+     You can redirect input to the ‘getline’ function using the ‘<’,
      ‘|’, and ‘|&’ operators.  You can redirect the output of the
      ‘print’ and ‘printf’ statements to a file or a system command,
      using the ‘>’, ‘>>’, ‘|’, and ‘|&’ operators.  (*Note 
Getline::,
@@ -37450,7 +37476,7 @@ Index
 * differences in awk and gawk, FUNCTAB variable: Auto-set.    (line 134)
 * differences in awk and gawk, function arguments: Calling Built-in.
                                                               (line  16)
-* differences in awk and gawk, getline command: Getline.      (line  19)
+* differences in awk and gawk, getline function: Getline.     (line  19)
 * differences in awk and gawk, IGNORECASE variable: User-modified.
                                                               (line  79)
 * differences in awk and gawk, implementation limitations: Getline Notes.
@@ -37697,7 +37723,7 @@ Index
 * ERRNO variable <1>:                    TCP/IP Networking.   (line  54)
 * ERRNO variable, with BEGINFILE pattern: BEGINFILE/ENDFILE.  (line  32)
 * ERRNO variable, with close() function: Close Return Value.  (line  14)
-* ERRNO variable, with getline command:  Getline.             (line  19)
+* ERRNO variable, with getline function: Getline.             (line  19)
 * error handling:                        Special FD.          (line  19)
 * error handling, ERRNO variable and:    Auto-set.            (line  87)
 * error output:                          Special FD.          (line   6)
@@ -38177,23 +38203,23 @@ Index
 * getgrnam() user-defined function:      Group Functions.     (line 176)
 * getgruser() function (C library):      Group Functions.     (line 191)
 * getgruser() user-defined function:     Group Functions.     (line 194)
-* getline command:                       Reading Files.       (line  20)
-* getline command, _gr_init() user-defined function: Group Functions.
+* getline function:                      Reading Files.       (line  20)
+* getline function, _gr_init() user-defined function: Group Functions.
                                                               (line  83)
-* getline command, _pw_init() function:  Passwd Functions.    (line 154)
-* getline command, BEGINFILE/ENDFILE patterns and: BEGINFILE/ENDFILE.
+* getline function, _pw_init() function: Passwd Functions.    (line 154)
+* getline function, BEGINFILE/ENDFILE patterns and: BEGINFILE/ENDFILE.
                                                               (line  60)
-* getline command, coprocesses, using from: Getline/Coprocess.
+* getline function, coprocesses, using from: Getline/Coprocess.
                                                               (line   6)
-* getline command, coprocesses, using from <1>: Close Files And Pipes.
+* getline function, coprocesses, using from <1>: Close Files And Pipes.
                                                               (line   6)
-* getline command, deadlock and:         Two-way I/O.         (line  53)
-* getline command, explicit input with:  Getline.             (line   6)
-* getline command, FILENAME variable and: Getline Notes.      (line  19)
-* getline command, from a file:          Getline/File.        (line   6)
-* getline command, into a variable:      Getline/Variable.    (line   6)
-* getline command, return values:        Getline.             (line  19)
-* getline command, variants:             Getline Summary.     (line   6)
+* getline function, deadlock and:        Two-way I/O.         (line  53)
+* getline function, explicit input with: Getline.             (line   6)
+* getline function, FILENAME variable and: Getline Notes.     (line  19)
+* getline function, from a file:         Getline/File.        (line   6)
+* getline function, into a variable:     Getline/Variable.    (line   6)
+* getline function, return values:       Getline.             (line  19)
+* getline function, variants:            Getline Summary.     (line   6)
 * getlocaltime() user-defined function:  Getlocaltime Function.
                                                               (line  16)
 * getopt() function (C library):         Getopt Function.     (line  15)
@@ -38593,7 +38619,7 @@ Index
 * monetary information, localization:    Explaining gettext.  (line 104)
 * Moon, Sailor:                          Internationalization.
                                                               (line   6)
-* Moore, Duncan:                         Getline Notes.       (line  40)
+* Moore, Duncan:                         Getline Notes.       (line  66)
 * MPFR library, building with:           Compiling with MPFR. (line   6)
 * MPFR values, API ownership of:         API Ownership of MPFR and GMP Values.
                                                               (line   6)
@@ -39647,7 +39673,7 @@ Index
 * troubleshooting, gawk, bug reports:    Bugs.                (line   9)
 * troubleshooting, gawk, fatal errors, function arguments: Calling Built-in.
                                                               (line  16)
-* troubleshooting, getline command:      File Checking.       (line  25)
+* troubleshooting, getline function:     File Checking.       (line  25)
 * troubleshooting, gsub()/sub() functions: String Functions.  (line 502)
 * troubleshooting, match() function:     String Functions.    (line 310)
 * troubleshooting, print statement, omitting commas: Print Examples.
@@ -39758,12 +39784,12 @@ Index
 * variables, assigning on command line:  Assignment Options.  (line   6)
 * variables, built-in:                   Using Variables.     (line  23)
 * variables, flag:                       Boolean Ops.         (line  69)
-* variables, getline command into, using: Getline/Variable.   (line   6)
-* variables, getline command into, using <1>: Getline/Variable/File.
+* variables, getline function into, using: Getline/Variable.  (line   6)
+* variables, getline function into, using <1>: Getline/Variable/File.
                                                               (line   6)
-* variables, getline command into, using <2>: Getline/Variable/Pipe.
+* variables, getline function into, using <2>: Getline/Variable/Pipe.
                                                               (line   6)
-* variables, getline command into, using <3>: Getline/Variable/Coprocess.
+* variables, getline function into, using <3>: Getline/Variable/Coprocess.
                                                               (line   6)
 * variables, global, for library functions: Library Names.    (line  11)
 * variables, global, printing list of:   Options.             (line  97)
@@ -39866,617 +39892,617 @@ Node: History56625
 Node: Names59239
 Ref: Names-Footnote-160393
 Node: This Manual60556
-Ref: This Manual-Footnote-167485
-Node: Conventions67593
-Node: Manual History70022
-Ref: Manual History-Footnote-173047
-Ref: Manual History-Footnote-273088
-Node: How To Contribute73162
-Node: Acknowledgments74108
-Node: Getting Started79097
-Node: Running gawk81624
-Node: One-shot82842
-Node: Read Terminal84141
-Node: Long86195
-Node: Executable Scripts87845
-Ref: Executable Scripts-Footnote-190615
-Node: Comments90722
-Node: Quoting93252
-Node: DOS Quoting98896
-Node: Sample Data Files100976
-Node: Very Simple103611
-Node: Two Rules109865
-Node: More Complex111817
-Node: Statements/Lines114237
-Ref: Statements/Lines-Footnote-1119749
-Node: Other Features120038
-Node: When121006
-Ref: When-Footnote-1122808
-Node: Intro Summary122873
-Node: Invoking Gawk123827
-Node: Command Line125389
-Node: Options126239
-Ref: Options-Footnote-1145579
-Ref: Options-Footnote-2145814
-Node: Other Arguments145839
-Node: Naming Standard Input150004
-Node: Environment Variables151274
-Node: AWKPATH Variable151848
-Ref: AWKPATH Variable-Footnote-1155432
-Ref: AWKPATH Variable-Footnote-2155466
-Node: AWKLIBPATH Variable155857
-Ref: AWKLIBPATH Variable-Footnote-1157630
-Node: Other Environment Variables158025
-Node: Exit Status162501
-Node: Include Files163214
-Node: Loading Shared Libraries167266
-Node: Obsolete168756
-Node: Undocumented169504
-Node: Invoking Summary169801
-Node: Regexp172826
-Node: Regexp Usage174320
-Node: Escape Sequences176421
-Ref: Escape Sequences-Footnote-1183956
-Node: Regexp Operators184034
-Node: Regexp Operator Details184527
-Ref: Regexp Operator Details-Footnote-1192538
-Node: Interval Expressions192697
-Ref: Interval Expressions-Footnote-1194964
-Node: Bracket Expressions195062
-Ref: table-char-classes197618
-Node: Leftmost Longest201116
-Node: Computed Regexps202472
-Node: GNU Regexp Operators205987
-Node: Case-sensitivity211082
-Ref: Case-sensitivity-Footnote-1214032
-Ref: Case-sensitivity-Footnote-2214275
-Node: Regexp Summary214387
-Node: Reading Files215909
-Node: Records218226
-Node: awk split records219501
-Node: gawk split records224383
-Ref: gawk split records-Footnote-1229671
-Node: Fields229708
-Ref: Fields-Footnote-1232624
-Node: Nonconstant Fields232744
-Ref: Nonconstant Fields-Footnote-1235052
-Node: Changing Fields235268
-Node: Field Separators241566
-Node: Default Field Splitting244435
-Node: Regexp Field Splitting245577
-Node: Single Character Fields249406
-Node: Comma Separated Fields250495
-Ref: table-csv-examples251899
-Node: Command Line Field Separator254198
-Node: Full Line Fields257574
-Ref: Full Line Fields-Footnote-1259152
-Ref: Full Line Fields-Footnote-2259198
-Node: Field Splitting Summary259303
-Node: Constant Size261620
-Node: Fixed width data262364
-Node: Skipping intervening265879
-Node: Allowing trailing data266681
-Node: Fields with fixed data267742
-Node: Splitting By Content269364
-Ref: Splitting By Content-Footnote-1273814
-Node: More CSV273977
-Node: FS versus FPAT275635
-Node: Testing field creation276835
-Node: Multiple Line278609
-Node: Getline285078
-Node: Plain Getline287661
-Node: Getline/Variable290307
-Node: Getline/File291502
-Node: Getline/Variable/File292950
-Ref: Getline/Variable/File-Footnote-1294595
-Node: Getline/Pipe294691
-Node: Getline/Variable/Pipe297499
-Node: Getline/Coprocess298682
-Node: Getline/Variable/Coprocess300005
-Node: Getline Notes300771
-Node: Getline Summary303724
-Ref: table-getline-variants304168
-Node: Read Timeout305072
-Ref: Read Timeout-Footnote-1309034
-Node: Retrying Input309092
-Node: Command-line directories310359
-Node: Input Summary311297
-Node: Input Exercises314677
-Node: Printing315115
-Node: Print317058
-Node: Print Examples318559
-Node: Output Separators321404
-Node: OFMT323511
-Node: Printf325224
-Node: Basic Printf326029
-Node: Control Letters327664
-Node: Format Modifiers333110
-Node: Printf Examples339382
-Node: Redirection341923
-Node: Special FD349695
-Ref: Special FD-Footnote-1352993
-Node: Special Files353071
-Node: Other Inherited Files353700
-Node: Special Network354765
-Node: Special Caveats355653
-Node: Close Files And Pipes356636
-Ref: Close Files And Pipes-Footnote-1362760
-Node: Close Return Value362908
-Ref: table-close-pipe-return-values364179
-Ref: Close Return Value-Footnote-1365010
-Node: Noflush365166
-Node: Nonfatal366674
-Node: Output Summary369089
-Node: Output Exercises370375
-Node: Expressions371066
-Node: Values372266
-Node: Constants372944
-Node: Scalar Constants373639
-Ref: Scalar Constants-Footnote-1376215
-Ref: Scalar Constants-Footnote-2376465
-Node: Nondecimal-numbers376545
-Node: Regexp Constants379658
-Node: Using Constant Regexps380204
-Node: Standard Regexp Constants380850
-Node: Strong Regexp Constants384146
-Node: Variables387989
-Node: Using Variables388654
-Node: Assignment Options390628
-Node: Conversion393179
-Node: Strings And Numbers393711
-Ref: Strings And Numbers-Footnote-1396921
-Node: Locale influences conversions397030
-Ref: table-locale-affects399868
-Node: All Operators400510
-Node: Arithmetic Ops401151
-Node: Concatenation403974
-Ref: Concatenation-Footnote-1406910
-Node: Assignment Ops407029
-Ref: table-assign-ops412156
-Node: Increment Ops413537
-Node: Truth Values and Conditions417128
-Node: Truth Values418222
-Node: Typing and Comparison419302
-Node: Variable Typing420134
-Ref: Variable Typing-Footnote-1426778
-Ref: Variable Typing-Footnote-2426858
-Node: Comparison Operators426939
-Ref: table-relational-ops427366
-Node: POSIX String Comparison431042
-Ref: POSIX String Comparison-Footnote-1432799
-Ref: POSIX String Comparison-Footnote-2432942
-Node: Boolean Ops433026
-Ref: Boolean Ops-Footnote-1437700
-Node: Conditional Exp437796
-Node: Function Calls439576
-Node: Precedence443523
-Node: Locales447386
-Node: Expressions Summary449062
-Node: Patterns and Actions451717
-Node: Pattern Overview452853
-Node: Regexp Patterns454578
-Node: Expression Patterns455124
-Node: Ranges459029
-Node: BEGIN/END462203
-Node: Using BEGIN/END463012
-Ref: Using BEGIN/END-Footnote-1465920
-Node: I/O And BEGIN/END466030
-Node: BEGINFILE/ENDFILE468511
-Node: Empty471942
-Node: Using Shell Variables472259
-Node: Action Overview474595
-Node: Statements477030
-Node: If Statement478926
-Node: While Statement480489
-Node: Do Statement482577
-Node: For Statement483761
-Node: Switch Statement487116
-Node: Break Statement489665
-Node: Continue Statement491857
-Node: Next Statement493788
-Node: Nextfile Statement496267
-Node: Exit Statement499120
-Node: Built-in Variables501647
-Node: User-modified502824
-Node: Auto-set511031
-Ref: Auto-set-Footnote-1529115
-Ref: Auto-set-Footnote-2529333
-Node: ARGC and ARGV529389
-Node: Pattern Action Summary533818
-Node: Arrays536424
-Node: Array Basics537797
-Node: Array Intro538645
-Ref: figure-array-elements540656
-Ref: Array Intro-Footnote-1543509
-Node: Reference to Elements543641
-Node: Assigning Elements546161
-Node: Array Example546656
-Node: Scanning an Array548618
-Node: Controlling Scanning551713
-Ref: Controlling Scanning-Footnote-1558348
-Node: Numeric Array Subscripts558672
-Node: Uninitialized Subscripts560940
-Node: Delete562613
-Ref: Delete-Footnote-1565425
-Node: Multidimensional565482
-Node: Multiscanning568685
-Node: Arrays of Arrays570352
-Node: Arrays Summary574656
-Node: Functions576843
-Node: Built-in577975
-Node: Calling Built-in579164
-Node: Boolean Functions581204
-Node: Numeric Functions581766
-Ref: Numeric Functions-Footnote-1585951
-Ref: Numeric Functions-Footnote-2586634
-Ref: Numeric Functions-Footnote-3586686
-Node: String Functions586962
-Ref: String Functions-Footnote-1613413
-Ref: String Functions-Footnote-2613545
-Ref: String Functions-Footnote-3613801
-Node: Gory Details613888
-Ref: table-sub-escapes615897
-Ref: table-sub-proposed617528
-Ref: table-posix-sub619023
-Ref: table-gensub-escapes620696
-Ref: Gory Details-Footnote-1621615
-Node: I/O Functions621769
-Ref: table-system-return-values628445
-Ref: I/O Functions-Footnote-1630607
-Ref: I/O Functions-Footnote-2630755
-Node: Time Functions630875
-Ref: Time Functions-Footnote-1642587
-Ref: Time Functions-Footnote-2642655
-Ref: Time Functions-Footnote-3642817
-Ref: Time Functions-Footnote-4642928
-Ref: Time Functions-Footnote-5643044
-Ref: Time Functions-Footnote-6643271
-Node: Bitwise Functions643549
-Ref: table-bitwise-ops644147
-Ref: Bitwise Functions-Footnote-1650389
-Ref: Bitwise Functions-Footnote-2650566
-Node: Type Functions650761
-Node: I18N Functions652932
-Node: User-defined654667
-Node: Definition Syntax655413
-Ref: Definition Syntax-Footnote-1661231
-Node: Function Example661306
-Ref: Function Example-Footnote-1664285
-Node: Function Calling664307
-Node: Calling A Function664899
-Node: Variable Scope665869
-Node: Pass By Value/Reference668923
-Node: Function Caveats671651
-Ref: Function Caveats-Footnote-1673742
-Node: Return Statement673862
-Node: Dynamic Typing676894
-Node: Dynamic Typing Awk677472
-Node: Dynamic Typing Gawk679610
-Node: Indirect Calls682980
-Node: Functions Summary694117
-Node: Library Functions697083
-Ref: Library Functions-Footnote-1700631
-Ref: Library Functions-Footnote-2700776
-Node: Library Names700951
-Ref: Library Names-Footnote-1704722
-Ref: Library Names-Footnote-2704949
-Node: General Functions705043
-Node: Strtonum Function706313
-Node: Assert Function709395
-Node: Round Function712845
-Node: Cliff Random Function714417
-Node: Ordinal Functions715441
-Ref: Ordinal Functions-Footnote-1718544
-Ref: Ordinal Functions-Footnote-2718796
-Node: Join Function719010
-Ref: Join Function-Footnote-1720808
-Node: Getlocaltime Function721012
-Node: Readfile Function724786
-Node: Shell Quoting726815
-Node: Isnumeric Function728271
-Node: To CSV Function729707
-Node: Data File Management731799
-Node: Filetrans Function732431
-Node: Rewind Function736707
-Node: File Checking738678
-Ref: File Checking-Footnote-1740044
-Node: Empty Files740249
-Node: Ignoring Assigns742312
-Node: Getopt Function743886
-Ref: Getopt Function-Footnote-1759704
-Node: Passwd Functions759916
-Ref: Passwd Functions-Footnote-1769051
-Node: Group Functions769139
-Ref: Group Functions-Footnote-1777263
-Node: Walking Arrays777474
-Node: Library Functions Summary780520
-Node: Library Exercises781940
-Node: Sample Programs782425
-Node: Running Examples783207
-Node: Clones783959
-Node: Cut Program785227
-Node: Egrep Program795651
-Node: Id Program804956
-Node: Split Program815048
-Ref: Split Program-Footnote-1825261
-Node: Tee Program825446
-Node: Uniq Program828352
-Node: Wc Program836212
-Node: Bytes vs. Characters836607
-Node: Using extensions838207
-Node: wc program838985
-Node: Miscellaneous Programs843978
-Node: Dupword Program845203
-Node: Alarm Program847252
-Node: Translate Program852155
-Ref: Translate Program-Footnote-1856864
-Node: Labels Program857142
-Ref: Labels Program-Footnote-1860577
-Node: Word Sorting860661
-Node: History Sorting864835
-Node: Extract Program867108
-Node: Simple Sed875361
-Node: Igawk Program878571
-Ref: Igawk Program-Footnote-1893781
-Ref: Igawk Program-Footnote-2893987
-Ref: Igawk Program-Footnote-3894117
-Node: Anagram Program894244
-Node: Signature Program897330
-Node: Programs Summary898580
-Node: Programs Exercises899834
-Ref: Programs Exercises-Footnote-1904136
-Node: Advanced Features904222
-Node: Nondecimal Data906703
-Node: Boolean Typed Values908333
-Node: Array Sorting910290
-Node: Controlling Array Traversal911019
-Ref: Controlling Array Traversal-Footnote-1919522
-Node: Array Sorting Functions919644
-Ref: Array Sorting Functions-Footnote-1925741
-Node: Two-way I/O925949
-Ref: Two-way I/O-Footnote-1933920
-Ref: Two-way I/O-Footnote-2934111
-Node: TCP/IP Networking934193
-Node: Profiling937361
-Node: Persistent Memory947031
-Ref: Persistent Memory-Footnote-1956603
-Node: Extension Philosophy956734
-Node: Advanced Features Summary958261
-Node: Internationalization960527
-Node: I18N and L10N962229
-Node: Explaining gettext962924
-Ref: Explaining gettext-Footnote-1969060
-Ref: Explaining gettext-Footnote-2969253
-Node: Programmer i18n969418
-Ref: Programmer i18n-Footnote-1974530
-Node: Translator i18n974579
-Node: String Extraction975409
-Ref: String Extraction-Footnote-1976585
-Node: Printf Ordering976683
-Ref: Printf Ordering-Footnote-1979541
-Node: I18N Portability979609
-Ref: I18N Portability-Footnote-1982169
-Node: I18N Example982236
-Ref: I18N Example-Footnote-1985630
-Ref: I18N Example-Footnote-2985703
-Node: Gawk I18N985820
-Node: I18N Summary986474
-Node: Debugger987871
-Node: Debugging988891
-Node: Debugging Concepts989340
-Node: Debugging Terms991157
-Node: Awk Debugging993760
-Ref: Awk Debugging-Footnote-1994733
-Node: Sample Debugging Session994869
-Node: Debugger Invocation995419
-Node: Finding The Bug997044
-Node: List of Debugger Commands1003676
-Node: Breakpoint Control1005053
-Node: Debugger Execution Control1008875
-Node: Viewing And Changing Data1012349
-Node: Execution Stack1016083
-Node: Debugger Info1017764
-Node: Miscellaneous Debugger Commands1022059
-Node: Readline Support1027300
-Node: Limitations1028244
-Node: Debugging Summary1030868
-Node: Namespaces1032167
-Node: Global Namespace1033294
-Node: Qualified Names1034728
-Node: Default Namespace1035763
-Node: Changing The Namespace1036536
-Node: Naming Rules1038218
-Node: Internal Name Management1040133
-Node: Namespace Example1041203
-Node: Namespace And Features1043780
-Node: Namespace Summary1045235
-Node: Arbitrary Precision Arithmetic1046746
-Node: Computer Arithmetic1048265
-Ref: table-numeric-ranges1052073
-Ref: table-floating-point-ranges1052570
-Ref: Computer Arithmetic-Footnote-11053228
-Node: Math Definitions1053285
-Ref: table-ieee-formats1056317
-Node: MPFR features1056890
-Node: MPFR On Parole1057343
-Ref: MPFR On Parole-Footnote-11058184
-Node: MPFR Intro1058343
-Node: FP Math Caution1060027
-Ref: FP Math Caution-Footnote-11061099
-Node: Inexactness of computations1061472
-Node: Inexact representation1062503
-Node: Comparing FP Values1063884
-Node: Errors accumulate1065142
-Node: Strange values1066607
-Ref: Strange values-Footnote-11069261
-Node: Getting Accuracy1069366
-Node: Try To Round1072103
-Node: Setting precision1073010
-Ref: table-predefined-precision-strings1073715
-Node: Setting the rounding mode1075599
-Ref: table-gawk-rounding-modes1075981
-Ref: Setting the rounding mode-Footnote-11080033
-Node: Arbitrary Precision Integers1080216
-Ref: Arbitrary Precision Integers-Footnote-11083426
-Node: Checking for MPFR1083579
-Node: POSIX Floating Point Problems1085069
-Ref: POSIX Floating Point Problems-Footnote-11089889
-Node: Floating point summary1089927
-Node: Dynamic Extensions1092183
-Node: Extension Intro1093780
-Node: Plugin License1095082
-Node: Extension Mechanism Outline1095895
-Ref: figure-load-extension1096346
-Ref: figure-register-new-function1097924
-Ref: figure-call-new-function1099033
-Node: Extension API Description1101148
-Node: Extension API Functions Introduction1102877
-Ref: table-api-std-headers1104771
-Node: General Data Types1109212
-Ref: General Data Types-Footnote-11118358
-Node: Memory Allocation Functions1118661
-Ref: Memory Allocation Functions-Footnote-11123378
-Node: Constructor Functions1123477
-Node: API Ownership of MPFR and GMP Values1127378
-Node: Registration Functions1128931
-Node: Extension Functions1129635
-Node: Exit Callback Functions1135209
-Node: Extension Version String1136523
-Node: Input Parsers1137218
-Node: Output Wrappers1151837
-Node: Two-way processors1156679
-Node: Printing Messages1159032
-Ref: Printing Messages-Footnote-11160243
-Node: Updating ERRNO1160396
-Node: Requesting Values1161195
-Ref: table-value-types-returned1161948
-Node: Accessing Parameters1164007
-Node: Symbol Table Access1165288
-Node: Symbol table by name1165800
-Ref: Symbol table by name-Footnote-11169001
-Node: Symbol table by cookie1169133
-Ref: Symbol table by cookie-Footnote-11173402
-Node: Cached values1173466
-Ref: Cached values-Footnote-11177098
-Node: Array Manipulation1177255
-Ref: Array Manipulation-Footnote-11178354
-Node: Array Data Types1178391
-Ref: Array Data Types-Footnote-11181209
-Node: Array Functions1181305
-Node: Flattening Arrays1186334
-Node: Creating Arrays1193382
-Node: Redirection API1198224
-Node: Extension API Variables1201241
-Node: Extension Versioning1201964
-Ref: gawk-api-version1202393
-Node: Extension GMP/MPFR Versioning1204180
-Node: Extension API Informational Variables1205884
-Node: Extension API Boilerplate1207137
-Node: Changes from API V11211267
-Node: Finding Extensions1212899
-Node: Extension Example1213474
-Node: Internal File Description1214296
-Node: Internal File Ops1218588
-Ref: Internal File Ops-Footnote-11230138
-Node: Using Internal File Ops1230286
-Ref: Using Internal File Ops-Footnote-11232717
-Node: Extension Samples1232995
-Node: Extension Sample File Functions1234564
-Node: Extension Sample Fnmatch1242689
-Node: Extension Sample Fork1244284
-Node: Extension Sample Inplace1245560
-Node: Extension Sample Ord1249662
-Node: Extension Sample Readdir1250538
-Ref: table-readdir-file-types1251327
-Node: Extension Sample Revout1252683
-Node: Extension Sample Rev2way1253280
-Node: Extension Sample Read write array1254032
-Node: Extension Sample Readfile1257306
-Node: Extension Sample Time1258437
-Node: Extension Sample API Tests1260437
-Node: gawkextlib1260945
-Node: Extension summary1263977
-Node: Extension Exercises1267825
-Node: Language History1269095
-Node: V7/SVR3.11270807
-Node: SVR41273157
-Node: POSIX1274689
-Node: BTL1276114
-Node: POSIX/GNU1276881
-Node: Feature History1283536
-Node: Common Extensions1303377
-Node: Ranges and Locales1304852
-Ref: Ranges and Locales-Footnote-11309637
-Ref: Ranges and Locales-Footnote-21309664
-Ref: Ranges and Locales-Footnote-31309899
-Node: Contributors1310122
-Node: History summary1316313
-Node: Installation1317755
-Node: Gawk Distribution1318719
-Node: Getting1319211
-Node: Extracting1320210
-Node: Distribution contents1321916
-Node: Unix Installation1329806
-Node: Quick Installation1330626
-Node: Compiling with MPFR1333166
-Node: Shell Startup Files1333872
-Node: Additional Configuration Options1335029
-Node: Configuration Philosophy1337412
-Node: Compiling from Git1339912
-Node: Building the Documentation1340471
-Node: Non-Unix Installation1341883
-Node: PC Installation1342359
-Node: PC Binary Installation1343228
-Node: PC Compiling1344121
-Node: PC Using1345299
-Node: Cygwin1349015
-Node: MSYS1350267
-Node: OpenVMS Installation1350893
-Node: OpenVMS Compilation1351574
-Ref: OpenVMS Compilation-Footnote-11353057
-Node: OpenVMS Dynamic Extensions1353115
-Node: OpenVMS Installation Details1354751
-Node: OpenVMS Running1357182
-Node: OpenVMS GNV1361319
-Node: Bugs1362074
-Node: Bug definition1362994
-Node: Bug address1366595
-Node: Usenet1370164
-Node: Performance bugs1371377
-Node: Asking for help1374393
-Node: Maintainers1376380
-Node: Other Versions1377407
-Node: Installation summary1387011
-Node: Notes1388393
-Node: Compatibility Mode1389203
-Node: Additions1390025
-Node: Accessing The Source1390970
-Node: Adding Code1392501
-Node: New Ports1399612
-Node: Derived Files1404115
-Ref: Derived Files-Footnote-11409926
-Ref: Derived Files-Footnote-21409961
-Ref: Derived Files-Footnote-31410572
-Node: Future Extensions1410686
-Node: Implementation Limitations1411356
-Node: Extension Design1412598
-Node: Old Extension Problems1413758
-Ref: Old Extension Problems-Footnote-11415330
-Node: Extension New Mechanism Goals1415391
-Ref: Extension New Mechanism Goals-Footnote-11418861
-Node: Extension Other Design Decisions1419062
-Node: Extension Future Growth1421259
-Node: Notes summary1421879
-Node: Basic Concepts1423089
-Node: Basic High Level1423774
-Ref: figure-general-flow1424056
-Ref: figure-process-flow1424758
-Ref: Basic High Level-Footnote-11428128
-Node: Basic Data Typing1428317
-Node: Glossary1431725
-Node: Copying1464604
-Node: GNU Free Documentation License1502162
-Node: Index1527285
+Ref: This Manual-Footnote-167486
+Node: Conventions67594
+Node: Manual History70023
+Ref: Manual History-Footnote-173048
+Ref: Manual History-Footnote-273089
+Node: How To Contribute73163
+Node: Acknowledgments74109
+Node: Getting Started79098
+Node: Running gawk81625
+Node: One-shot82843
+Node: Read Terminal84142
+Node: Long86196
+Node: Executable Scripts87846
+Ref: Executable Scripts-Footnote-190616
+Node: Comments90723
+Node: Quoting93253
+Node: DOS Quoting98897
+Node: Sample Data Files100977
+Node: Very Simple103612
+Node: Two Rules109866
+Node: More Complex111818
+Node: Statements/Lines114238
+Ref: Statements/Lines-Footnote-1119750
+Node: Other Features120039
+Node: When121007
+Ref: When-Footnote-1122809
+Node: Intro Summary122874
+Node: Invoking Gawk123828
+Node: Command Line125390
+Node: Options126240
+Ref: Options-Footnote-1145580
+Ref: Options-Footnote-2145815
+Node: Other Arguments145840
+Node: Naming Standard Input150005
+Node: Environment Variables151275
+Node: AWKPATH Variable151849
+Ref: AWKPATH Variable-Footnote-1155433
+Ref: AWKPATH Variable-Footnote-2155467
+Node: AWKLIBPATH Variable155858
+Ref: AWKLIBPATH Variable-Footnote-1157631
+Node: Other Environment Variables158026
+Node: Exit Status162502
+Node: Include Files163215
+Node: Loading Shared Libraries167267
+Node: Obsolete168757
+Node: Undocumented169505
+Node: Invoking Summary169802
+Node: Regexp172827
+Node: Regexp Usage174321
+Node: Escape Sequences176422
+Ref: Escape Sequences-Footnote-1183957
+Node: Regexp Operators184035
+Node: Regexp Operator Details184528
+Ref: Regexp Operator Details-Footnote-1192539
+Node: Interval Expressions192698
+Ref: Interval Expressions-Footnote-1194965
+Node: Bracket Expressions195063
+Ref: table-char-classes197619
+Node: Leftmost Longest201117
+Node: Computed Regexps202473
+Node: GNU Regexp Operators205988
+Node: Case-sensitivity211083
+Ref: Case-sensitivity-Footnote-1214033
+Ref: Case-sensitivity-Footnote-2214276
+Node: Regexp Summary214388
+Node: Reading Files215910
+Node: Records218229
+Node: awk split records219504
+Node: gawk split records224386
+Ref: gawk split records-Footnote-1229674
+Node: Fields229711
+Ref: Fields-Footnote-1232627
+Node: Nonconstant Fields232747
+Ref: Nonconstant Fields-Footnote-1235055
+Node: Changing Fields235271
+Node: Field Separators241569
+Node: Default Field Splitting244438
+Node: Regexp Field Splitting245580
+Node: Single Character Fields249409
+Node: Comma Separated Fields250498
+Ref: table-csv-examples251902
+Node: Command Line Field Separator254201
+Node: Full Line Fields257577
+Ref: Full Line Fields-Footnote-1259155
+Ref: Full Line Fields-Footnote-2259201
+Node: Field Splitting Summary259306
+Node: Constant Size261623
+Node: Fixed width data262367
+Node: Skipping intervening265882
+Node: Allowing trailing data266684
+Node: Fields with fixed data267745
+Node: Splitting By Content269367
+Ref: Splitting By Content-Footnote-1273817
+Node: More CSV273980
+Node: FS versus FPAT275638
+Node: Testing field creation276838
+Node: Multiple Line278612
+Node: Getline285081
+Node: Plain Getline287668
+Node: Getline/Variable290316
+Node: Getline/File291512
+Node: Getline/Variable/File292960
+Ref: Getline/Variable/File-Footnote-1294605
+Node: Getline/Pipe294701
+Node: Getline/Variable/Pipe297509
+Node: Getline/Coprocess298692
+Node: Getline/Variable/Coprocess300015
+Node: Getline Notes300781
+Node: Getline Summary304742
+Ref: table-getline-variants305186
+Node: Read Timeout306090
+Ref: Read Timeout-Footnote-1310052
+Node: Retrying Input310110
+Node: Command-line directories311377
+Node: Input Summary312315
+Node: Input Exercises315695
+Node: Printing316133
+Node: Print318076
+Node: Print Examples319577
+Node: Output Separators322422
+Node: OFMT324529
+Node: Printf326242
+Node: Basic Printf327047
+Node: Control Letters328682
+Node: Format Modifiers334128
+Node: Printf Examples340400
+Node: Redirection342941
+Node: Special FD350713
+Ref: Special FD-Footnote-1354011
+Node: Special Files354089
+Node: Other Inherited Files354718
+Node: Special Network355783
+Node: Special Caveats356671
+Node: Close Files And Pipes357654
+Ref: Close Files And Pipes-Footnote-1363778
+Node: Close Return Value363926
+Ref: table-close-pipe-return-values365197
+Ref: Close Return Value-Footnote-1366028
+Node: Noflush366184
+Node: Nonfatal367692
+Node: Output Summary370107
+Node: Output Exercises371393
+Node: Expressions372084
+Node: Values373284
+Node: Constants373962
+Node: Scalar Constants374657
+Ref: Scalar Constants-Footnote-1377233
+Ref: Scalar Constants-Footnote-2377483
+Node: Nondecimal-numbers377563
+Node: Regexp Constants380676
+Node: Using Constant Regexps381222
+Node: Standard Regexp Constants381868
+Node: Strong Regexp Constants385164
+Node: Variables389007
+Node: Using Variables389672
+Node: Assignment Options391646
+Node: Conversion394197
+Node: Strings And Numbers394729
+Ref: Strings And Numbers-Footnote-1397939
+Node: Locale influences conversions398048
+Ref: table-locale-affects400886
+Node: All Operators401528
+Node: Arithmetic Ops402169
+Node: Concatenation404992
+Ref: Concatenation-Footnote-1407928
+Node: Assignment Ops408047
+Ref: table-assign-ops413174
+Node: Increment Ops414555
+Node: Truth Values and Conditions418146
+Node: Truth Values419240
+Node: Typing and Comparison420320
+Node: Variable Typing421152
+Ref: Variable Typing-Footnote-1427796
+Ref: Variable Typing-Footnote-2427876
+Node: Comparison Operators427957
+Ref: table-relational-ops428384
+Node: POSIX String Comparison432060
+Ref: POSIX String Comparison-Footnote-1433817
+Ref: POSIX String Comparison-Footnote-2433960
+Node: Boolean Ops434044
+Ref: Boolean Ops-Footnote-1438718
+Node: Conditional Exp438814
+Node: Function Calls440594
+Node: Precedence444541
+Node: Locales448404
+Node: Expressions Summary450080
+Node: Patterns and Actions452735
+Node: Pattern Overview453871
+Node: Regexp Patterns455596
+Node: Expression Patterns456142
+Node: Ranges460047
+Node: BEGIN/END463221
+Node: Using BEGIN/END464030
+Ref: Using BEGIN/END-Footnote-1466938
+Node: I/O And BEGIN/END467048
+Node: BEGINFILE/ENDFILE469530
+Node: Empty472960
+Node: Using Shell Variables473277
+Node: Action Overview475613
+Node: Statements478049
+Node: If Statement479945
+Node: While Statement481508
+Node: Do Statement483596
+Node: For Statement484780
+Node: Switch Statement488135
+Node: Break Statement490684
+Node: Continue Statement492876
+Node: Next Statement494807
+Node: Nextfile Statement497286
+Node: Exit Statement500139
+Node: Built-in Variables502666
+Node: User-modified503843
+Node: Auto-set512050
+Ref: Auto-set-Footnote-1530134
+Ref: Auto-set-Footnote-2530352
+Node: ARGC and ARGV530408
+Node: Pattern Action Summary534837
+Node: Arrays537443
+Node: Array Basics538816
+Node: Array Intro539664
+Ref: figure-array-elements541675
+Ref: Array Intro-Footnote-1544528
+Node: Reference to Elements544660
+Node: Assigning Elements547180
+Node: Array Example547675
+Node: Scanning an Array549637
+Node: Controlling Scanning552732
+Ref: Controlling Scanning-Footnote-1559367
+Node: Numeric Array Subscripts559691
+Node: Uninitialized Subscripts561959
+Node: Delete563632
+Ref: Delete-Footnote-1566444
+Node: Multidimensional566501
+Node: Multiscanning569704
+Node: Arrays of Arrays571371
+Node: Arrays Summary575675
+Node: Functions577862
+Node: Built-in578994
+Node: Calling Built-in580183
+Node: Boolean Functions582223
+Node: Numeric Functions582785
+Ref: Numeric Functions-Footnote-1586970
+Ref: Numeric Functions-Footnote-2587653
+Ref: Numeric Functions-Footnote-3587705
+Node: String Functions587981
+Ref: String Functions-Footnote-1614432
+Ref: String Functions-Footnote-2614564
+Ref: String Functions-Footnote-3614820
+Node: Gory Details614907
+Ref: table-sub-escapes616916
+Ref: table-sub-proposed618547
+Ref: table-posix-sub620042
+Ref: table-gensub-escapes621715
+Ref: Gory Details-Footnote-1622634
+Node: I/O Functions622788
+Ref: table-system-return-values629464
+Ref: I/O Functions-Footnote-1631626
+Ref: I/O Functions-Footnote-2631774
+Node: Time Functions631894
+Ref: Time Functions-Footnote-1643606
+Ref: Time Functions-Footnote-2643674
+Ref: Time Functions-Footnote-3643836
+Ref: Time Functions-Footnote-4643947
+Ref: Time Functions-Footnote-5644063
+Ref: Time Functions-Footnote-6644290
+Node: Bitwise Functions644568
+Ref: table-bitwise-ops645166
+Ref: Bitwise Functions-Footnote-1651408
+Ref: Bitwise Functions-Footnote-2651585
+Node: Type Functions651780
+Node: I18N Functions653951
+Node: User-defined655686
+Node: Definition Syntax656432
+Ref: Definition Syntax-Footnote-1662250
+Node: Function Example662325
+Ref: Function Example-Footnote-1665304
+Node: Function Calling665326
+Node: Calling A Function665918
+Node: Variable Scope666888
+Node: Pass By Value/Reference669942
+Node: Function Caveats672670
+Ref: Function Caveats-Footnote-1674761
+Node: Return Statement674881
+Node: Dynamic Typing677913
+Node: Dynamic Typing Awk678491
+Node: Dynamic Typing Gawk680629
+Node: Indirect Calls683999
+Node: Functions Summary695136
+Node: Library Functions698102
+Ref: Library Functions-Footnote-1701650
+Ref: Library Functions-Footnote-2701795
+Node: Library Names701970
+Ref: Library Names-Footnote-1705741
+Ref: Library Names-Footnote-2705968
+Node: General Functions706062
+Node: Strtonum Function707332
+Node: Assert Function710414
+Node: Round Function713864
+Node: Cliff Random Function715436
+Node: Ordinal Functions716460
+Ref: Ordinal Functions-Footnote-1719563
+Ref: Ordinal Functions-Footnote-2719815
+Node: Join Function720029
+Ref: Join Function-Footnote-1721827
+Node: Getlocaltime Function722031
+Node: Readfile Function725805
+Node: Shell Quoting727834
+Node: Isnumeric Function729290
+Node: To CSV Function730726
+Node: Data File Management732818
+Node: Filetrans Function733450
+Node: Rewind Function737726
+Node: File Checking739697
+Ref: File Checking-Footnote-1741063
+Node: Empty Files741268
+Node: Ignoring Assigns743331
+Node: Getopt Function744905
+Ref: Getopt Function-Footnote-1760723
+Node: Passwd Functions760935
+Ref: Passwd Functions-Footnote-1770070
+Node: Group Functions770158
+Ref: Group Functions-Footnote-1778282
+Node: Walking Arrays778493
+Node: Library Functions Summary781539
+Node: Library Exercises782959
+Node: Sample Programs783444
+Node: Running Examples784226
+Node: Clones784978
+Node: Cut Program786246
+Node: Egrep Program796670
+Node: Id Program805975
+Node: Split Program816067
+Ref: Split Program-Footnote-1826280
+Node: Tee Program826465
+Node: Uniq Program829371
+Node: Wc Program837231
+Node: Bytes vs. Characters837626
+Node: Using extensions839226
+Node: wc program840004
+Node: Miscellaneous Programs844997
+Node: Dupword Program846222
+Node: Alarm Program848271
+Node: Translate Program853174
+Ref: Translate Program-Footnote-1857883
+Node: Labels Program858161
+Ref: Labels Program-Footnote-1861596
+Node: Word Sorting861680
+Node: History Sorting865854
+Node: Extract Program868127
+Node: Simple Sed876380
+Node: Igawk Program879590
+Ref: Igawk Program-Footnote-1894800
+Ref: Igawk Program-Footnote-2895006
+Ref: Igawk Program-Footnote-3895136
+Node: Anagram Program895263
+Node: Signature Program898349
+Node: Programs Summary899599
+Node: Programs Exercises900853
+Ref: Programs Exercises-Footnote-1905155
+Node: Advanced Features905241
+Node: Nondecimal Data907722
+Node: Boolean Typed Values909352
+Node: Array Sorting911309
+Node: Controlling Array Traversal912038
+Ref: Controlling Array Traversal-Footnote-1920541
+Node: Array Sorting Functions920663
+Ref: Array Sorting Functions-Footnote-1926760
+Node: Two-way I/O926968
+Ref: Two-way I/O-Footnote-1934939
+Ref: Two-way I/O-Footnote-2935130
+Node: TCP/IP Networking935212
+Node: Profiling938380
+Node: Persistent Memory948050
+Ref: Persistent Memory-Footnote-1957622
+Node: Extension Philosophy957753
+Node: Advanced Features Summary959280
+Node: Internationalization961546
+Node: I18N and L10N963248
+Node: Explaining gettext963943
+Ref: Explaining gettext-Footnote-1970079
+Ref: Explaining gettext-Footnote-2970272
+Node: Programmer i18n970437
+Ref: Programmer i18n-Footnote-1975549
+Node: Translator i18n975598
+Node: String Extraction976428
+Ref: String Extraction-Footnote-1977604
+Node: Printf Ordering977702
+Ref: Printf Ordering-Footnote-1980560
+Node: I18N Portability980628
+Ref: I18N Portability-Footnote-1983188
+Node: I18N Example983255
+Ref: I18N Example-Footnote-1986649
+Ref: I18N Example-Footnote-2986722
+Node: Gawk I18N986839
+Node: I18N Summary987493
+Node: Debugger988890
+Node: Debugging989910
+Node: Debugging Concepts990359
+Node: Debugging Terms992176
+Node: Awk Debugging994779
+Ref: Awk Debugging-Footnote-1995752
+Node: Sample Debugging Session995888
+Node: Debugger Invocation996438
+Node: Finding The Bug998063
+Node: List of Debugger Commands1004695
+Node: Breakpoint Control1006072
+Node: Debugger Execution Control1009894
+Node: Viewing And Changing Data1013368
+Node: Execution Stack1017102
+Node: Debugger Info1018783
+Node: Miscellaneous Debugger Commands1023078
+Node: Readline Support1028319
+Node: Limitations1029263
+Node: Debugging Summary1031887
+Node: Namespaces1033186
+Node: Global Namespace1034313
+Node: Qualified Names1035747
+Node: Default Namespace1036782
+Node: Changing The Namespace1037555
+Node: Naming Rules1039237
+Node: Internal Name Management1041152
+Node: Namespace Example1042222
+Node: Namespace And Features1044799
+Node: Namespace Summary1046254
+Node: Arbitrary Precision Arithmetic1047765
+Node: Computer Arithmetic1049284
+Ref: table-numeric-ranges1053092
+Ref: table-floating-point-ranges1053589
+Ref: Computer Arithmetic-Footnote-11054247
+Node: Math Definitions1054304
+Ref: table-ieee-formats1057336
+Node: MPFR features1057909
+Node: MPFR On Parole1058362
+Ref: MPFR On Parole-Footnote-11059203
+Node: MPFR Intro1059362
+Node: FP Math Caution1061046
+Ref: FP Math Caution-Footnote-11062118
+Node: Inexactness of computations1062491
+Node: Inexact representation1063522
+Node: Comparing FP Values1064903
+Node: Errors accumulate1066161
+Node: Strange values1067626
+Ref: Strange values-Footnote-11070280
+Node: Getting Accuracy1070385
+Node: Try To Round1073122
+Node: Setting precision1074029
+Ref: table-predefined-precision-strings1074734
+Node: Setting the rounding mode1076618
+Ref: table-gawk-rounding-modes1077000
+Ref: Setting the rounding mode-Footnote-11081052
+Node: Arbitrary Precision Integers1081235
+Ref: Arbitrary Precision Integers-Footnote-11084445
+Node: Checking for MPFR1084598
+Node: POSIX Floating Point Problems1086088
+Ref: POSIX Floating Point Problems-Footnote-11090908
+Node: Floating point summary1090946
+Node: Dynamic Extensions1093202
+Node: Extension Intro1094799
+Node: Plugin License1096101
+Node: Extension Mechanism Outline1096914
+Ref: figure-load-extension1097365
+Ref: figure-register-new-function1098943
+Ref: figure-call-new-function1100052
+Node: Extension API Description1102167
+Node: Extension API Functions Introduction1103896
+Ref: table-api-std-headers1105790
+Node: General Data Types1110231
+Ref: General Data Types-Footnote-11119377
+Node: Memory Allocation Functions1119680
+Ref: Memory Allocation Functions-Footnote-11124397
+Node: Constructor Functions1124496
+Node: API Ownership of MPFR and GMP Values1128397
+Node: Registration Functions1129950
+Node: Extension Functions1130654
+Node: Exit Callback Functions1136228
+Node: Extension Version String1137542
+Node: Input Parsers1138237
+Node: Output Wrappers1152856
+Node: Two-way processors1157698
+Node: Printing Messages1160051
+Ref: Printing Messages-Footnote-11161262
+Node: Updating ERRNO1161415
+Node: Requesting Values1162214
+Ref: table-value-types-returned1162967
+Node: Accessing Parameters1165026
+Node: Symbol Table Access1166307
+Node: Symbol table by name1166819
+Ref: Symbol table by name-Footnote-11170020
+Node: Symbol table by cookie1170152
+Ref: Symbol table by cookie-Footnote-11174421
+Node: Cached values1174485
+Ref: Cached values-Footnote-11178117
+Node: Array Manipulation1178274
+Ref: Array Manipulation-Footnote-11179373
+Node: Array Data Types1179410
+Ref: Array Data Types-Footnote-11182228
+Node: Array Functions1182324
+Node: Flattening Arrays1187353
+Node: Creating Arrays1194401
+Node: Redirection API1199243
+Node: Extension API Variables1202260
+Node: Extension Versioning1202983
+Ref: gawk-api-version1203412
+Node: Extension GMP/MPFR Versioning1205199
+Node: Extension API Informational Variables1206903
+Node: Extension API Boilerplate1208156
+Node: Changes from API V11212286
+Node: Finding Extensions1213918
+Node: Extension Example1214493
+Node: Internal File Description1215315
+Node: Internal File Ops1219607
+Ref: Internal File Ops-Footnote-11231157
+Node: Using Internal File Ops1231305
+Ref: Using Internal File Ops-Footnote-11233736
+Node: Extension Samples1234014
+Node: Extension Sample File Functions1235583
+Node: Extension Sample Fnmatch1243708
+Node: Extension Sample Fork1245303
+Node: Extension Sample Inplace1246579
+Node: Extension Sample Ord1250681
+Node: Extension Sample Readdir1251557
+Ref: table-readdir-file-types1252346
+Node: Extension Sample Revout1253702
+Node: Extension Sample Rev2way1254299
+Node: Extension Sample Read write array1255051
+Node: Extension Sample Readfile1258325
+Node: Extension Sample Time1259456
+Node: Extension Sample API Tests1261456
+Node: gawkextlib1261964
+Node: Extension summary1264996
+Node: Extension Exercises1268844
+Node: Language History1270114
+Node: V7/SVR3.11271826
+Node: SVR41274176
+Node: POSIX1275708
+Node: BTL1277133
+Node: POSIX/GNU1277900
+Node: Feature History1284555
+Node: Common Extensions1304396
+Node: Ranges and Locales1305871
+Ref: Ranges and Locales-Footnote-11310656
+Ref: Ranges and Locales-Footnote-21310683
+Ref: Ranges and Locales-Footnote-31310918
+Node: Contributors1311141
+Node: History summary1317332
+Node: Installation1318774
+Node: Gawk Distribution1319738
+Node: Getting1320230
+Node: Extracting1321229
+Node: Distribution contents1322935
+Node: Unix Installation1330825
+Node: Quick Installation1331645
+Node: Compiling with MPFR1334185
+Node: Shell Startup Files1334891
+Node: Additional Configuration Options1336048
+Node: Configuration Philosophy1338431
+Node: Compiling from Git1340931
+Node: Building the Documentation1341490
+Node: Non-Unix Installation1342902
+Node: PC Installation1343378
+Node: PC Binary Installation1344247
+Node: PC Compiling1345140
+Node: PC Using1346318
+Node: Cygwin1350034
+Node: MSYS1351286
+Node: OpenVMS Installation1351912
+Node: OpenVMS Compilation1352593
+Ref: OpenVMS Compilation-Footnote-11354076
+Node: OpenVMS Dynamic Extensions1354134
+Node: OpenVMS Installation Details1355770
+Node: OpenVMS Running1358201
+Node: OpenVMS GNV1362338
+Node: Bugs1363093
+Node: Bug definition1364013
+Node: Bug address1367614
+Node: Usenet1371183
+Node: Performance bugs1372396
+Node: Asking for help1375412
+Node: Maintainers1377399
+Node: Other Versions1378426
+Node: Installation summary1388030
+Node: Notes1389412
+Node: Compatibility Mode1390222
+Node: Additions1391044
+Node: Accessing The Source1391989
+Node: Adding Code1393520
+Node: New Ports1400631
+Node: Derived Files1405134
+Ref: Derived Files-Footnote-11410945
+Ref: Derived Files-Footnote-21410980
+Ref: Derived Files-Footnote-31411591
+Node: Future Extensions1411705
+Node: Implementation Limitations1412375
+Node: Extension Design1413617
+Node: Old Extension Problems1414777
+Ref: Old Extension Problems-Footnote-11416349
+Node: Extension New Mechanism Goals1416410
+Ref: Extension New Mechanism Goals-Footnote-11419880
+Node: Extension Other Design Decisions1420081
+Node: Extension Future Growth1422278
+Node: Notes summary1422898
+Node: Basic Concepts1424108
+Node: Basic High Level1424793
+Ref: figure-general-flow1425075
+Ref: figure-process-flow1425777
+Ref: Basic High Level-Footnote-11429147
+Node: Basic Data Typing1429336
+Node: Glossary1432744
+Node: Copying1465622
+Node: GNU Free Documentation License1503180
+Node: Index1528303
 
 End Tag Table
 
diff --git a/doc/gawk.texi b/doc/gawk.texi
index 4969ebe8..78dae299 100644
--- a/doc/gawk.texi
+++ b/doc/gawk.texi
@@ -1684,7 +1684,7 @@ supported by POSIX @command{awk} and @command{gawk}.
 @ref{Reading Files},
 describes how @command{awk} reads your data.
 It introduces the concepts of records and fields, as well
-as the @code{getline} command.
+as the @code{getline} function.
 I/O redirection is first described here.
 Network I/O is also briefly introduced here.
 
@@ -6765,9 +6765,9 @@ By default, each record is one line.  Each
 record is automatically split into chunks called @dfn{fields}.
 This makes it more convenient for programs to work on the parts of a record.
 
-@cindex @code{getline} command
-On rare occasions, you may need to use the @code{getline} command.
-The  @code{getline} command is valuable both because it
+@cindex @code{getline} function
+On rare occasions, you may need to use the @code{getline} function.
+The  @code{getline} function is valuable both because it
 can do explicit input from any number of files, and because the files
 used with it do not have to be named on the @command{awk} command line
 (@pxref{Getline}).
@@ -8729,7 +8729,7 @@ then @command{gawk} sets @code{RT} to the null string.
 @node Getline
 @section Explicit Input with @code{getline}
 
-@cindex @code{getline} command @subentry explicit input with
+@cindex @code{getline} function @subentry explicit input with
 @cindex input @subentry explicit
 So far we have been getting our input data from @command{awk}'s main
 input stream---either the standard input (usually your keyboard, sometimes
@@ -8738,11 +8738,11 @@ files specified on the command line.  The @command{awk} 
language has a
 special built-in command called @code{getline} that
 can be used to read input under your explicit control.
 
-The @code{getline} command is used in several different ways and should
+The @code{getline} function is used in several different ways and should
 @emph{not} be used by beginners.
-The examples that follow the explanation of the @code{getline} command
+The examples that follow the explanation of the @code{getline} function
 include material that has not been covered yet.  Therefore, come back
-and study the @code{getline} command @emph{after} you have reviewed the
+and study the @code{getline} function @emph{after} you have reviewed the
 rest of
 @ifinfo
 this @value{DOCUMENT}
@@ -8758,12 +8758,12 @@ Parts I and II
 and have a good knowledge of how @command{awk} works.
 
 @cindex @command{gawk} @subentry @code{ERRNO} variable in
-@cindex @code{ERRNO} variable @subentry with @command{getline} command
-@cindex differences in @command{awk} and @command{gawk} @subentry 
@code{getline} command
-@cindex @code{getline} command @subentry return values
+@cindex @code{ERRNO} variable @subentry with @command{getline} function
+@cindex differences in @command{awk} and @command{gawk} @subentry 
@code{getline} function
+@cindex @code{getline} function @subentry return values
 @cindex @option{--sandbox} option @subentry input redirection with 
@code{getline}
 
-The @code{getline} command returns 1 if it finds a record and 0 if
+The @code{getline} function returns 1 if it finds a record and 0 if
 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
@@ -8803,7 +8803,7 @@ reading lines from files, pipes, and coprocesses is 
disabled.
 @node Plain Getline
 @subsection Using @code{getline} with No Arguments
 
-The @code{getline} command can be used without arguments to read input
+The @code{getline} function can be used without arguments to read input
 from the current input file.  All it does in this case is read the next
 input record and split it up into fields.  This is useful if you've
 finished processing the current record, but want to do some special
@@ -8869,7 +8869,7 @@ $ @kbd{awk -f strip_comments.awk example_text}
 @print{} no comment
 @end example
 
-This form of the @code{getline} command sets @code{NF},
+This form of the @code{getline} function sets @code{NF},
 @code{NR}, @code{FNR}, @code{RT}, and the value of @code{$0}.
 
 @quotation NOTE
@@ -8884,8 +8884,8 @@ rule in the program.  @xref{Next Statement}.
 
 @node Getline/Variable
 @subsection Using @code{getline} into a Variable
-@cindex @code{getline} command @subentry into a variable
-@cindex variables @subentry @code{getline} command into, using
+@cindex @code{getline} function @subentry into a variable
+@cindex variables @subentry @code{getline} function into, using
 
 You can use @samp{getline @var{var}} to read the next record from
 @command{awk}'s input into the variable @var{var}.  No other processing is
@@ -8929,7 +8929,7 @@ phore
 free
 @end example
 
-The @code{getline} command used in this way sets only the variables
+The @code{getline} function used in this way sets only the variables
 @code{NR}, @code{FNR}, and @code{RT} (and, of course, @var{var}).
 The record is not
 split into fields, so the values of the fields (including @code{$0}) and
@@ -8938,7 +8938,7 @@ the value of @code{NF} do not change.
 @node Getline/File
 @subsection Using @code{getline} from a File
 
-@cindex @code{getline} command @subentry from a file
+@cindex @code{getline} function @subentry from a file
 @cindex input redirection
 @cindex redirection @subentry of input
 @cindex @code{<} (left angle bracket) @subentry @code{<} operator (I/O)
@@ -8980,7 +8980,7 @@ you want your program to be portable to all @command{awk} 
implementations.
 
 @node Getline/Variable/File
 @subsection Using @code{getline} into a Variable from a File
-@cindex variables @subentry @code{getline} command into, using
+@cindex variables @subentry @code{getline} function into, using
 
 Use @samp{getline @var{var} < @var{file}} to read input
 from the file
@@ -9134,7 +9134,7 @@ have to worry.
 
 @node Getline/Variable/Pipe
 @subsection Using @code{getline} into a Variable from a Pipe
-@cindex variables @subentry @code{getline} command into, using
+@cindex variables @subentry @code{getline} function into, using
 
 When you use @samp{@var{command} | getline @var{var}}, the
 output of @var{command} is sent through a pipe to
@@ -9167,7 +9167,7 @@ program to be portable to other @command{awk} 
implementations.
 @node Getline/Coprocess
 @subsection Using @code{getline} from a Coprocess
 @cindex coprocesses @subentry @code{getline} from
-@cindex @code{getline} command @subentry coprocesses, using from
+@cindex @code{getline} function @subentry coprocesses, using from
 @cindex @code{|} (vertical bar) @subentry @code{|&} operator (I/O)
 @cindex vertical bar (@code{|}) @subentry @code{|&} operator (I/O)
 @cindex operators @subentry input/output
@@ -9207,7 +9207,7 @@ where coprocesses are discussed in more detail.
 
 @node Getline/Variable/Coprocess
 @subsection Using @code{getline} into a Variable from a Coprocess
-@cindex variables @subentry @code{getline} command into, using
+@cindex variables @subentry @code{getline} function into, using
 
 When you use @samp{@var{command} |& getline @var{var}}, the output from
 the coprocess @var{command} is sent through a two-way pipe to @code{getline}
@@ -9250,12 +9250,12 @@ system permits.
 @cindex side effects @subentry @code{FILENAME} variable
 @cindex @code{FILENAME} variable @subentry @code{getline}, setting with
 @cindex dark corner @subentry @code{FILENAME} variable
-@cindex @code{getline} command @subentry @code{FILENAME} variable and
+@cindex @code{getline} function @subentry @code{FILENAME} variable and
 @cindex @code{BEGIN} pattern @subentry @code{getline} and
 @item
 An interesting side effect occurs if you use @code{getline} without a
 redirection inside a @code{BEGIN} rule. Because an unredirected @code{getline}
-reads from the command-line @value{DF}s, the first @code{getline} command
+reads from the command-line @value{DF}s, the first @code{getline} function
 causes @command{awk} to set the value of @code{FILENAME}. Normally,
 @code{FILENAME} does not have a value inside @code{BEGIN} rules, because you
 have not yet started to process the command-line @value{DF}s.
@@ -9286,6 +9286,40 @@ It is worth noting that those variants that do not use 
redirection
 can cause @code{FILENAME} to be updated if they cause
 @command{awk} to start reading a new input file.
 
+@item
+@code{getline} is not a statement (unlike @code{print}), it's an
+expression. It has a result value, and can be used as part as a
+larger expression, in control statements, and so on.
+Here are examples of the ``read until EOF/error'' idiom:
+
+@example
+while ("sort FILE" | getline line > 0)
+    print line
+while (getline line < "file.txt" > 0)
+    print line
+@end example
+
+If you need to test the error code for being less than zero,
+you need to enclose @code{getline} in parentheses, to avoid
+it being interpreted as input redirection:
+
+@example
+if ((getline VAR) < 0)
+    print "Read error";
+@end example
+
+It is, in fact, best to parenthesize use of @command{getline}
+in all control expressions, as some versions of @command{awk}
+require this. Thus, the previos examples are best written
+this way:
+
+@example
+while (("sort FILE" | getline line) > 0)
+    print line
+while ((getline line < "file.txt") > 0)
+    print line
+@end example
+
 @item
 @cindex Moore, Duncan
 If the variable being assigned is an expression with side effects,
@@ -9318,7 +9352,7 @@ know that there is a string value to be assigned.
 
 @node Getline Summary
 @subsection Summary of @code{getline} Variants
-@cindex @code{getline} command @subentry variants
+@cindex @code{getline} function @subentry variants
 
 @ref{table-getline-variants}
 summarizes the eight variants of @code{getline},
@@ -10883,7 +10917,7 @@ Doing so results in unpredictable behavior.
 @cindex output @subentry files, closing
 @cindex pipe @subentry closing
 @cindex coprocesses @subentry closing
-@cindex @code{getline} command @subentry coprocesses, using from
+@cindex @code{getline} function @subentry coprocesses, using from
 
 @menu
 * Close Return Value::          Using the return value from @code{close()}.
@@ -14413,7 +14447,7 @@ rule.  Because @code{BEGIN} rules are executed before 
any input is read,
 there simply is no input record, and therefore no fields, when
 executing @code{BEGIN} rules.  References to @code{$0} and the fields
 yield a null string or zero, depending upon the context.  One way
-to give @code{$0} a real value is to execute a @code{getline} command
+to give @code{$0} a real value is to execute a @code{getline} function
 without a variable (@pxref{Getline}).
 Another way is simply to assign a value to @code{$0}.
 
@@ -14548,8 +14582,8 @@ either a @code{BEGINFILE} or an @code{ENDFILE} rule.  
The @code{nextfile}
 statement is allowed only inside a
 @code{BEGINFILE} rule, not inside an @code{ENDFILE} rule.
 
-@cindex @code{getline} command @subentry @code{BEGINFILE}/@code{ENDFILE} 
patterns and
-The @code{getline} statement (@pxref{Getline}) is restricted inside
+@cindex @code{getline} function @subentry @code{BEGINFILE}/@code{ENDFILE} 
patterns and
+The @code{getline} function (@pxref{Getline}) is restricted inside
 both @code{BEGINFILE} and @code{ENDFILE}: only redirected
 forms of @code{getline} are allowed.
 
@@ -14703,7 +14737,7 @@ is used in order to put several statements together in 
the body of an
 @code{if}, @code{while}, @code{do}, or @code{for} statement.
 
 @item Input statements
-Use the @code{getline} command
+Use the @code{getline} function
 (@pxref{Getline}).
 Also supplied in @command{awk} are the @code{next}
 statement (@pxref{Next Statement})
@@ -23336,7 +23370,7 @@ BEGIN @{
 @c endfile
 @end example
 
-@cindex troubleshooting @subentry @code{getline} command
+@cindex troubleshooting @subentry @code{getline} function
 This works, because the @code{getline} won't be fatal.
 Removing the element from @code{ARGV} with @code{delete}
 skips the file (because it's no longer in the list).
@@ -24183,7 +24217,7 @@ The variable @code{_pw_inited} is used for efficiency, 
as @code{_pw_init()}
 needs to be called only once.
 
 @cindex @code{PROCINFO} array @subentry testing the field splitting
-@cindex @code{getline} command @subentry @code{_pw_init()} function
+@cindex @code{getline} function @subentry @code{_pw_init()} function
 Because this function uses @code{getline} to read information from
 @command{pwcat}, it first saves the values of @code{FS}, @code{RS}, and 
@code{$0}.
 It notes in the variable @code{using_fw} whether field splitting
@@ -24455,7 +24489,7 @@ $ @kbd{grcat}
 Here are the functions for obtaining information from the group database.
 There are several, modeled after the C library functions of the same names:
 
-@cindex @code{getline} command @subentry @code{_gr_init()} user-defined 
function
+@cindex @code{getline} function @subentry @code{_gr_init()} user-defined 
function
 @cindex @code{_gr_init()} user-defined function
 @cindex user-defined @subentry function @subentry @code{_gr_init()}
 @example
@@ -29866,7 +29900,7 @@ standard error separately.
 
 @cindex deadlocks
 @cindex buffering @subentry input/output
-@cindex @code{getline} command @subentry deadlock and
+@cindex @code{getline} function @subentry deadlock and
 @item
 I/O buffering may be a problem.  @command{gawk} automatically
 flushes all output down the pipe to the coprocess.
@@ -46158,7 +46192,7 @@ Otherwise, refer to the entry for ``recursion.''
 Redirection means performing input from something other than the standard input
 stream, or performing output to something other than the standard output 
stream.
 
-You can redirect input to the @code{getline} statement using
+You can redirect input to the @code{getline} function using
 the @samp{<}, @samp{|}, and @samp{|&} operators.
 You can redirect the output of the @code{print} and @code{printf} statements
 to a file or a system command, using the @samp{>}, @samp{>>}, @samp{|}, and 
@samp{|&}
diff --git a/doc/gawkinet.info b/doc/gawkinet.info
index 17ebaee2..bff87daf 100644
--- a/doc/gawkinet.info
+++ b/doc/gawkinet.info
@@ -1,4 +1,4 @@
-This is gawkinet.info, produced by makeinfo version 7.0.1 from
+This is gawkinet.info, produced by makeinfo version 7.1 from
 gawkinet.texi.
 
 This is Edition 1.6 of ‘TCP/IP Internetworking with ‘gawk’’, for the
@@ -12,19 +12,19 @@ This is Edition 1.6 of ‘TCP/IP Internetworking with 
‘gawk’’, for the
    Permission is granted to copy, distribute and/or modify this document
 under the terms of the GNU Free Documentation License, Version 1.3 or
 any later version published by the Free Software Foundation; with the
-Invariant Sections being “GNU General Public License”, the Front-Cover
+Invariant Sections being "GNU General Public License", the Front-Cover
 texts being (a) (see below), and with the Back-Cover Texts being (b)
 (see below).  A copy of the license is included in the section entitled
-“GNU Free Documentation License”.
+"GNU Free Documentation License".
 
-  a. “A GNU Manual”
+  a. "A GNU Manual"
 
-  b. “You have the freedom to copy and modify this GNU manual.  Buying
+  b. "You have the freedom to copy and modify this GNU manual.  Buying
      copies from the FSF supports it in developing GNU and promoting
-     software freedom.”
+     software freedom."
 INFO-DIR-SECTION Network applications
 START-INFO-DIR-ENTRY
-* awkinet: (gawkinet).          TCP/IP Internetworking With ‘gawk’.
+* awkinet: (gawkinet).          TCP/IP Internetworking With 'gawk'.
 END-INFO-DIR-ENTRY
 
 
@@ -47,16 +47,16 @@ This file documents the networking features in GNU Awk 
(‘gawk’) version
    Permission is granted to copy, distribute and/or modify this document
 under the terms of the GNU Free Documentation License, Version 1.3 or
 any later version published by the Free Software Foundation; with the
-Invariant Sections being “GNU General Public License”, the Front-Cover
+Invariant Sections being "GNU General Public License", the Front-Cover
 texts being (a) (see below), and with the Back-Cover Texts being (b)
 (see below).  A copy of the license is included in the section entitled
-“GNU Free Documentation License”.
+"GNU Free Documentation License".
 
-  a. “A GNU Manual”
+  a. "A GNU Manual"
 
-  b. “You have the freedom to copy and modify this GNU manual.  Buying
+  b. "You have the freedom to copy and modify this GNU manual.  Buying
      copies from the FSF supports it in developing GNU and promoting
-     software freedom.”
+     software freedom."
 
 * Menu:
 
@@ -124,7 +124,7 @@ the production versions of ‘gawk’ available from his 
home page.  In
 August of 2000 (for ‘gawk’ 3.0.6), this patch also made it to the main
 GNU ‘ftp’ distribution site.
 
-   For release with ‘gawk’, I edited Jürgen’s prose for English grammar
+   For release with ‘gawk’, I edited Jürgen's prose for English grammar
 and style, as he is not a native English speaker.  I also rearranged the
 material somewhat for what I felt was a better order of presentation,
 and (re)wrote some of the introductory material.
@@ -190,7 +190,7 @@ When you make a phone call, the following steps occur:
 
    The same steps occur in a duplex reliable computer networking
 connection.  There is considerably more overhead in setting up the
-communications, but once it’s done, data moves in both directions,
+communications, but once it's done, data moves in both directions,
 reliably, in sequence.
 
 
@@ -216,12 +216,12 @@ following.
      does not occur very often.)
 
   6. In a computer network, one or more “packets” may also arrive
-     multiple times.  (This doesn’t happen with the postal system!)
+     multiple times.  (This doesn't happen with the postal system!)
 
    The important characteristics of datagram communications, like those
 of the postal system are thus:
 
-   • Delivery is “best effort;” the data may never get there.
+   • Delivery is "best effort;" the data may never get there.
 
    • Each message is self-contained, including the source and
      destination addresses.
@@ -245,7 +245,7 @@ File: gawkinet.info,  Node: The TCP/IP Protocols,  Next: 
Making Connections,  Pr
 
 The Internet Protocol Suite (usually referred to as just TCP/IP)(1)
 consists of a number of different protocols at different levels or
-“layers.” For our purposes, three protocols provide the fundamental
+"layers."  For our purposes, three protocols provide the fundamental
 communications mechanisms.  All other defined protocols are referred to
 as user-level protocols (e.g., HTTP, used later in this Info file).
 
@@ -269,8 +269,8 @@ File: gawkinet.info,  Node: Basic Protocols,  Next: Ports,  
Prev: The TCP/IP Pro
 IP
      The Internet Protocol.  This protocol is almost never used directly
      by applications.  It provides the basic packet delivery and routing
-     infrastructure of the Internet.  Much like the phone company’s
-     switching centers or the Post Office’s trucks, it is not of much
+     infrastructure of the Internet.  Much like the phone company's
+     switching centers or the Post Office's trucks, it is not of much
      day-to-day interest to the regular user (or programmer).  It
      happens to be a best effort datagram protocol.  In the early
      twenty-first century, there are two versions of this protocol in
@@ -281,11 +281,11 @@ IP
           addresses, on which most of the current Internet is based.
 
      IPv6
-          The “next generation” of the Internet Protocol, with 128-bit
+          The "next generation" of the Internet Protocol, with 128-bit
           addresses.  This protocol is in wide use in certain parts of
           the world, but has not yet replaced IPv4.(1)
 
-     Versions of the other protocols that sit “atop” IP exist for both
+     Versions of the other protocols that sit "atop" IP exist for both
      IPv4 and IPv6.  However, as the IPv6 versions are fundamentally the
      same as the original IPv4 versions, we will not distinguish further
      between them.
@@ -309,7 +309,7 @@ Protocol).
 
    ---------- Footnotes ----------
 
-   (1) There isn’t an IPv5.
+   (1) There isn't an IPv5.
 
 
 File: gawkinet.info,  Node: Ports,  Prev: Basic Protocols,  Up: The TCP/IP 
Protocols
@@ -323,9 +323,9 @@ than one person at the location; thus you have to further 
quantify the
 recipient by putting a person or company name on the envelope.
 
    In the phone system, one phone number may represent an entire
-company, in which case you need a person’s extension number in order to
+company, in which case you need a person's extension number in order to
 reach that individual directly.  Or, when you call a home, you have to
-say, “May I please speak to ...” before talking to the person directly.
+say, "May I please speak to ..."  before talking to the person directly.
 
    IP networking provides the concept of addressing.  An IP address
 represents a particular computer, but no more.  In order to reach the
@@ -336,7 +336,7 @@ represent the services, much like an extension number used 
with a phone
 number.
 
    Port numbers are 16-bit integers.  Unix and Unix-like systems reserve
-ports below 1024 for “well known” services, such as SMTP, FTP, and HTTP.
+ports below 1024 for "well known" services, such as SMTP, FTP, and HTTP.
 Numbers 1024 and above may be used by any application, although there is
 no promise made that a particular port number is always available.
 
@@ -347,7 +347,7 @@ File: gawkinet.info,  Node: Making Connections,  Prev: The 
TCP/IP Protocols,  Up
 ====================================================
 
 Two terms come up repeatedly when discussing networking: “client” and
-“server”.  For now, we’ll discuss these terms at the “connection 
level”,
+“server”.  For now, we'll discuss these terms at the “connection 
level”,
 when first establishing connections between two processes on different
 systems over a network.  (Once the connection is established, the higher
 level, or “application level” protocols, such as HTTP or FTP, determine
@@ -379,13 +379,13 @@ in order to enjoy the benefits of a simple communication 
paradigm in
 “synchronous”.(2)  I.e., each end waits on the other to finish
 transmitting, before replying.  This is much like two people in a phone
 conversation.  While both could talk simultaneously, doing so usually
-doesn’t work too well.
+doesn't work too well.
 
    In the case of TCP, the synchronicity is enforced by the protocol
 when sending data.  Data writes “block” until the data have been
 received on the other end.  For both TCP and UDP, data reads block until
 there is incoming data waiting to be read.  This is summarized in the
-following table, where an “x” indicates that the given action blocks.
+following table, where an "x" indicates that the given action blocks.
 
 TCP        x       x
 UDP        x
@@ -394,9 +394,9 @@ UDP        x
 
    (1) In the days before voice mail systems!
 
-   (2) For the technically savvy, data reads block—if there’s no
+   (2) For the technically savvy, data reads block--if there's no
 incoming data, the program is made to wait until there is, instead of
-receiving a “there’s no data” error return.
+receiving a "there's no data" error return.
 
 
 File: gawkinet.info,  Node: Using Networking,  Next: Some Applications and 
Techniques,  Prev: Introduction,  Up: Top
@@ -406,10 +406,10 @@ File: gawkinet.info,  Node: Using Networking,  Next: Some 
Applications and Techn
 
 The ‘awk’ programming language was originally developed as a
 pattern-matching language for writing short programs to perform data
-manipulation tasks.  ‘awk’’s strength is the manipulation of textual
+manipulation tasks.  ‘awk’'s strength is the manipulation of textual
 data that is stored in files.  It was never meant to be used for
 networking purposes.  To exploit its features in a networking context,
-it’s necessary to use an access mode for network connections that
+it's necessary to use an access mode for network connections that
 resembles the access of files as closely as possible.
 
    ‘awk’ is also meant to be a prototyping language.  It is used to
@@ -448,18 +448,18 @@ protocol is much less important for most users.
 
 File: gawkinet.info,  Node: Gawk Special Files,  Next: TCP Connecting,  Prev: 
Using Networking,  Up: Using Networking
 
-2.1 ‘gawk’’s Networking Mechanisms
+2.1 ‘gawk’'s Networking Mechanisms
 ==================================
 
 The ‘|&’ operator for use in communicating with a “coprocess” is
 described in *note Two-way Communications With Another Process:
 (gawk)Two-way I/O. It shows how to do two-way I/O to a separate process,
 sending it data with ‘print’ or ‘printf’ and reading data with
-‘getline’.  If you haven’t read it already, you should detour there to
+‘getline’.  If you haven't read it already, you should detour there to
 do so.
 
    ‘gawk’ transparently extends the two-way I/O mechanism to simple
-networking through the use of special file names.  When a “coprocess”
+networking through the use of special file names.  When a "coprocess"
 that matches the special files we are about to describe is started,
 ‘gawk’ creates the appropriate network connection, and then two-way I/O
 proceeds as usual.
@@ -495,14 +495,14 @@ File: gawkinet.info,  Node: Special File Fields,  Next: 
Comparing Protocols,  Pr
 
 This node explains the meaning of all of the fields, as well as the
 range of values and the defaults.  All of the fields are mandatory.  To
-let the system pick a value, or if the field doesn’t apply to the
+let the system pick a value, or if the field doesn't apply to the
 protocol, specify it as ‘0’ (zero):
 
 NET-TYPE
      This is one of ‘inet4’ for IPv4, ‘inet6’ for IPv6, or ‘inet’ 
to use
      the system default (which is likely to be IPv4).  For the rest of
      this document, we will use the generic ‘/inet’ in our descriptions
-     of how ‘gawk’’s networking works.
+     of how ‘gawk’'s networking works.
 
 PROTOCOL
      Determines which member of the TCP/IP family of protocols is
@@ -513,7 +513,7 @@ PROTOCOL
 LOCALPORT
      Determines which port on the local machine is used to communicate
      across the network.  Application-level clients usually use ‘0’ to
-     indicate they do not care which local port is used—instead they
+     indicate they do not care which local port is used--instead they
      specify a remote port to connect to.
 
      It is vital for application-level servers to use a number different
@@ -570,7 +570,6 @@ meaning.  If this table is too complicated, focus on the 
three lines
 printed in *bold*.  All the examples in *note Networking With ‘gawk’:
 Using Networking, use only the patterns printed in bold letters.
 
-
 PROTOCOL    LOCAL       HOST NAME   REMOTE      RESULTING CONNECTION-LEVEL
             PORT                    PORT        BEHAVIOR
 ------------------------------------------------------------------------------
@@ -672,10 +671,10 @@ started first:
      }
 
    In the case of UDP, the initial ‘print’ command is the one that
-actually sends data so that there is a connection.  UDP and “connection”
+actually sends data so that there is a connection.  UDP and "connection"
 sounds strange to anyone who has learned that UDP is a connectionless
-protocol.  Here, “connection” means that the ‘connect()’ system call 
has
-completed its work and completed the “association” between a certain
+protocol.  Here, "connection" means that the ‘connect()’ system call has
+completed its work and completed the "association" between a certain
 socket and an IP address.  Thus there are subtle differences between
 ‘connect()’ for TCP and UDP; see the man page for details.(1)
 
@@ -699,7 +698,7 @@ File: gawkinet.info,  Node: TCP Connecting,  Next: 
Troubleshooting,  Prev: Gawk
 2.2 Establishing a TCP Connection
 =================================
 
-Let’s observe a network connection at work.  Type in the following
+Let's observe a network connection at work.  Type in the following
 program and watch the output.  Within a second, it connects via TCP
 (‘/inet/tcp’) to a remote server and asks the service ‘daytime’ on the
 machine what time it is:
@@ -832,7 +831,7 @@ support TCP as well as UDP.
 
    (1) Microsoft preferred to ignore the TCP/IP family of protocols
 until 1995.  Then came the rise of the Netscape browser as a landmark
-“killer application.” Microsoft added TCP/IP support and their own
+"killer application."  Microsoft added TCP/IP support and their own
 browser to Microsoft Windows 95 at the last minute.  They even
 back-ported their TCP/IP implementation to Microsoft Windows for
 Workgroups 3.11, but it was a rather rudimentary and half-hearted
@@ -972,7 +971,7 @@ machine can only be used by one server program at a time.  
Now terminate
 the server program and change the name ‘8888’ to ‘echo’.  After
 restarting it, the server program does not run any more, and you know
 why: there is already an ‘echo’ service running on your machine.  But
-even if this isn’t true, you would not get your own ‘echo’ server
+even if this isn't true, you would not get your own ‘echo’ server
 running on a Unix machine, because the ports with numbers smaller than
 1024 (‘echo’ is at port 7) are reserved for ‘root’.  On machines 
running
 some flavor of Microsoft Windows, there is no restriction that reserves
@@ -982,7 +981,7 @@ restriction of the Unix world seems to have never been 
adopted ‘Does
 windows(10/server-2016) have privileged ports?’
 
(https://social.technet.microsoft.com/Forums/windowsserver/en-US/334f0770-eda9-475a-a27f-46b80ab7e872/does-windows10server2016-have-privileged-ports-?forum=ws2016).
 In Microsoft Windows it is the level of the firewall that handles port
-access restrictions, not the level of the operating system’s kernel.
+access restrictions, not the level of the operating system's kernel.
 
    Turning this short server program into something really useful is
 simple.  Imagine a server that first reads a file name from the client
@@ -1119,7 +1118,7 @@ calls ‘www.yahoo.com’):
    Again, lines are separated by a redefined ‘RS’ and ‘ORS’.  The 
‘GET’
 request that we send to the server is the only kind of HTTP request that
 existed when the web was created in the early 1990s.  HTTP calls this
-‘GET’ request a “method,” which tells the service to transmit a web 
page
+‘GET’ request a "method," which tells the service to transmit a web page
 (here the home page of the Yahoo!  search engine).  Version 1.0 added
 the request methods ‘HEAD’ and ‘POST’.  The current version of HTTP is
 1.1,(1)(2) and knows the additional request methods ‘OPTIONS’, ‘PUT’,
@@ -1154,11 +1153,11 @@ obsolete by RFC 2616, an update without any substantial 
changes.
 
    (2) Version 2.0 of HTTP (https://en.wikipedia.org/wiki/HTTP/2) was
 defined in RFC7540 (https://tools.ietf.org/html/rfc7540) and was derived
-from Google’s SPDY (https://en.wikipedia.org/wiki/SPDY) protocol.  It is
+from Google's SPDY (https://en.wikipedia.org/wiki/SPDY) protocol.  It is
 said to be widely supported.  As of 2020 the most popular web sites
 still identify themselves as supporting HTTP/1.1.  Version 3.0 of HTTP
 (https://en.wikipedia.org/wiki/HTTP/3) is still a draft and was derived
-from Google’s QUIC (https://en.wikipedia.org/wiki/QUIC) protocol.
+from Google's QUIC (https://en.wikipedia.org/wiki/QUIC) protocol.
 
 
 File: gawkinet.info,  Node: Primitive Service,  Next: Interacting Service,  
Prev: Web page,  Up: Using Networking
@@ -1215,7 +1214,7 @@ The steps are as follows:
 point to <http://localhost:8080> (the browser needs to know on which
 port our server is listening for requests).  If this does not work, the
 browser probably tries to connect to a proxy server that does not know
-your machine.  If so, change the browser’s configuration so that the
+your machine.  If so, change the browser's configuration so that the
 browser does not try to use a proxy to connect to your machine.
 
 
@@ -1239,7 +1238,7 @@ will become the core of event-driven execution controlled 
by a graphical
 user interface (GUI). Each HTTP event that the user triggers by some
 action within the browser is received in this central procedure.
 Parameters and menu choices are extracted from this request, and an
-appropriate measure is taken according to the user’s choice:
+appropriate measure is taken according to the user's choice:
 
      BEGIN {
        if (MyHost == "") {
@@ -1384,10 +1383,10 @@ inevitable.  Header parameters should then be stored in 
a global array
 as well as the body.
 
    On each subsequent run through the main loop, one request from a
-browser is received, evaluated, and answered according to the user’s
+browser is received, evaluated, and answered according to the user's
 choice.  This can be done by letting the value of the HTTP method guide
 the main loop into execution of the procedure ‘HandleGET()’, which
-evaluates the user’s choice.  In this case, we have only one
+evaluates the user's choice.  In this case, we have only one
 hierarchical level of menus, but in the general case, menus are nested.
 The menu choices at each level are separated by ‘/’, just as in file
 names.  Notice how simple it is to construct menus of arbitrary depth:
@@ -1426,14 +1425,14 @@ File: gawkinet.info,  Node: CGI Lib,  Prev: Interacting 
Service,  Up: Interactin
 --------------------------
 
      HTTP is like being married: you have to be able to handle whatever
-     you’re given, while being very careful what you send back.
-                          — _Phil Smith III,
+     you're given, while being very careful what you send back.
+                          -- _Phil Smith III,
          <http://www.netfunny.com/rhf/jokes/99/Mar/http.html>_
 
    In *note A Web Service with Interaction: Interacting Service, we saw
-the function ‘CGI_setup()’ as part of the web server “core logic”
+the function ‘CGI_setup()’ as part of the web server "core logic"
 framework.  The code presented there handles almost everything necessary
-for CGI requests.  One thing it doesn’t do is handle encoded characters
+for CGI requests.  One thing it doesn't do is handle encoded characters
 in the requests.  For example, an ‘&’ is encoded as a percent sign
 followed by the hexadecimal value: ‘%26’.  These encoded values should
 be decoded.  Following is a simple library to perform these tasks.  This
@@ -1534,7 +1533,7 @@ is the code:
    This isolates details in a single function, ‘CGI_setup()’.  Decoding
 of encoded characters is pushed off to a helper function,
 ‘_CGI_decode()’.  The use of the leading underscore (‘_’) in the
-function name is intended to indicate that it is an “internal” function,
+function name is intended to indicate that it is an "internal" function,
 although there is nothing to enforce this:
 
      function _CGI_decode(str,   hexdigs, i, pre, code1, code2,
@@ -1568,7 +1567,7 @@ although there is nothing to enforce this:
    This works by splitting the string apart around an encoded character.
 The two digits are converted to lowercase characters and looked up in a
 string of hex digits.  Note that ‘0’ is not in the string on purpose;
-‘index()’ returns zero when it’s not found, automatically giving the
+‘index()’ returns zero when it's not found, automatically giving the
 correct value!  Once the hexadecimal value is converted from characters
 in a string into a numerical value, ‘sprintf()’ converts the value back
 into a real character.  The following is a simple test harness for the
@@ -1699,7 +1698,7 @@ Initially the user does not say anything; then ELIZA 
resets its money
 counter and asks the user to tell what comes to mind open-heartedly.
 The subsequent answers are converted to uppercase characters and stored
 for later comparison.  ELIZA presents the bill when being confronted
-with a sentence that contains the phrase “shut up.” Otherwise, it looks
+with a sentence that contains the phrase "shut up."  Otherwise, it looks
 for keywords in the sentence, conjugates the rest of the sentence,
 remembers the keyword for later use, and finally selects an answer from
 the set of possible answers:
@@ -1786,7 +1785,7 @@ ELIZA just picks an index randomly:
      }
 
    Some interesting remarks and details (including the original source
-code of ELIZA) are found on Mark Humphrys’s home page ‘How my program
+code of ELIZA) are found on Mark Humphrys's home page ‘How my program
 passed the Turing Test’ (https://computing.dcu.ie/~humphrys/eliza.html).
 Wikipedia provides much background information about ELIZA
 (https://en.wikipedia.org/wiki/ELIZA), including the original design of
@@ -1816,10 +1815,10 @@ application works or not sometimes depends on the 
following:
    • The state of the party at the other end
 
    The most difficult problems for a beginner arise from the hidden
-states of the underlying network.  After closing a TCP connection, it’s
+states of the underlying network.  After closing a TCP connection, it's
 often necessary to wait a short while before reopening the connection.
 Even more difficult is the establishment of a connection that previously
-ended with a “broken pipe.” Those connections have to “time out” for a
+ended with a "broken pipe."  Those connections have to "time out" for a
 minute or so before they can reopen.  Check this with the command
 ‘netstat -a’, which provides a list of still-active connections.
 
@@ -1835,7 +1834,7 @@ Loebner Prize is the first formal instantiation of a 
Turing Test.  Hugh
 Loebner agreed with The Cambridge Center for Behavioral Studies to
 underwrite a contest designed to implement the Turing Test.  Dr. Loebner
 pledged a Grand Prize of $100,000 for the first computer whose responses
-were indistinguishable from a human’s.  Each year an annual prize of
+were indistinguishable from a human's.  Each year an annual prize of
 $2000 and a bronze medal is awarded to the _most_ human computer.  The
 winner of the annual contest is the best entry relative to other entries
 that year, irrespective of how good it is in an absolute sense.  Here is
@@ -1900,7 +1899,7 @@ is up to you to accomplish this?
 
           The GAWK manual can be consumed in a single lab session and
           the language can be mastered by the next morning by the
-          average student.  GAWK’s automatic initialization, implicit
+          average student.  GAWK's automatic initialization, implicit
           coercion, I/O support and lack of pointers forgive many of the
           mistakes that young programmers are likely to make.  Those who
           have seen C but not mastered it are happy to see that GAWK
@@ -1910,14 +1909,14 @@ is up to you to accomplish this?
           There are further simple answers.  Probably the best is the
           fact that increasingly, undergraduate AI programming is
           involving the Web.  Oren Etzioni (University of Washington,
-          Seattle) has for a while been arguing that the “softbot” is
-          replacing the mechanical engineers’ robot as the most
+          Seattle) has for a while been arguing that the "softbot" is
+          replacing the mechanical engineers' robot as the most
           glamorous AI testbed.  If the artifact whose behavior needs to
           be controlled in an intelligent way is the software agent,
           then a language that is well-suited to controlling the
           software environment is the appropriate language.  That would
           imply a scripting language.  If the robot is KAREL, then the
-          right language is “turn left; turn right.” If the robot is
+          right language is "turn left; turn right."  If the robot is
           Netscape, then the right language is something that can
           generate ‘netscape -remote
           'openURL(http://cs.wustl.edu/~loui)'’ with elan.
@@ -1934,8 +1933,8 @@ is up to you to accomplish this?
           strings.  A language that provides the best support for string
           processing in the end provides the best support for logic, for
           the exploration of various logics, and for most forms of
-          symbolic processing that AI might choose to call “reasoning”
-          instead of “logic.” The implication is that PROLOG, which
+          symbolic processing that AI might choose to call "reasoning"
+          instead of "logic."  The implication is that PROLOG, which
           saves the AI programmer from having to write a unifier, saves
           perhaps two dozen lines of GAWK code at the expense of
           strongly biasing the logic and representational expressiveness
@@ -1956,7 +1955,7 @@ is up to you to accomplish this?
      real translation program.
 
    • Another dialogue-oriented application (on the verge of ridicule) is
-     the email “support service.” Troubled customers write an email to
+     the email "support service."  Troubled customers write an email to
      an automatic ‘gawk’ service that reads the email.  It looks for
      keywords in the mail and assembles a reply email accordingly.  By
      carefully investigating the email header, and repeating these
@@ -1998,7 +1997,7 @@ languages that allow us to quickly solve problems with 
short programs.
 But Tcl has Tk on top of it, and ‘gawk’ had nothing comparable up to
 now.  While Tcl needs a large and ever-changing library (Tk, which was
 originally bound to the X Window System), ‘gawk’ needs just the
-networking interface and some kind of browser on the client’s side.
+networking interface and some kind of browser on the client's side.
 Besides better portability, the most important advantage of this
 approach (embracing well-established standards such HTTP and HTML) is
 that _we do not need to change the language_.  We let others do the work
@@ -2030,7 +2029,7 @@ we can turn it into something useful.
 
    The PANIC program tells everyone who connects that the local site is
 not working.  When a web server breaks down, it makes a difference if
-customers get a strange “network unreachable” message, or a short
+customers get a strange "network unreachable" message, or a short
 message telling them that the server has a problem.  In such an
 emergency, the hard disk and everything on it (including the regular web
 service) may be unavailable.  Rebooting the web server off a USB drive
@@ -2114,7 +2113,7 @@ the page content, but does receive the header:
    This program can be changed as needed, but be careful with the last
 lines.  Make sure transmission of binary data is not corrupted by
 additional line breaks.  Even as it is now, the byte sequence
-‘"\r\n\r\n"’ would disappear if it were contained in binary data.  Don’t
+‘"\r\n\r\n"’ would disappear if it were contained in binary data.  Don't
 get caught in a trap when trying a quick fix on this one.
 
 
@@ -2252,7 +2251,7 @@ variables ‘Proxy’ and ‘ProxyPort’ as GETURL, 
because these variables are
 handed over to GETURL for each URL that gets checked.  The one and only
 parameter is the name of a file that contains one line for each URL. In
 the first column, we find the URL, and the second and third columns hold
-the length of the URL’s body when checked for the two last times.  Now,
+the length of the URL's body when checked for the two last times.  Now,
 we follow this plan:
 
   1. Read the URLs from the file and remember their most recent lengths
@@ -2304,7 +2303,7 @@ be passed on.  If so, we prepare strings that will become 
part of the
 command line later.  In ‘GetHeader’, we store these strings together
 with the longest part of the command line.  Later, in the loop over the
 URLs, ‘GetHeader’ is appended with the URL and a redirection operator to
-form the command that reads the URL’s header over the Internet.  GETURL
+form the command that reads the URL's header over the Internet.  GETURL
 always sends the headers to ‘/dev/stderr’.  That is the reason why we
 need the redirection operator to have the header piped in.
 
@@ -2341,7 +2340,7 @@ expression.  However, it is straightforward to add them, 
if doing so is
 necessary for other tasks.
 
    This program reads an HTML file and prints all the HTTP links that it
-finds.  It relies on ‘gawk’’s ability to use regular expressions as the
+finds.  It relies on ‘gawk’'s ability to use regular expressions as the
 record separator.  With ‘RS’ set to a regular expression that matches
 links, the second action is executed each time a non-empty link is
 found.  We can find the matching link itself in ‘RT’.
@@ -2371,7 +2370,7 @@ Microsoft and Netscape in the web server market.
 firewall.  After attaching a browser to port 80, we usually catch a
 glimpse of the bright side of the server (its home page).  With a tool
 like GETURL at hand, we are able to discover some of the more concealed
-or even “indecent” services (i.e., lacking conformity to standards of
+or even "indecent" services (i.e., lacking conformity to standards of
 quality).  It can be exciting to see the fancy CGI scripts that lie
 there, revealing the inner workings of the server, ready to be called:
 
@@ -2396,8 +2395,8 @@ there, revealing the inner workings of the server, ready 
to be called:
           gawk -f geturl.awk http://any.host.on.the.net/cgi-bin/printenv
 
    • Sometimes it is even possible to retrieve system files like the web
-     server’s log file—possibly containing customer data—or even the
-     file ‘/etc/passwd’.  (We don’t recommend this!)
+     server's log file--possibly containing customer data--or even the
+     file ‘/etc/passwd’.  (We don't recommend this!)
 
    *Caution:* Although this may sound funny or simply irrelevant, we are
 talking about severe security holes.  Try to explore your own system
@@ -2435,7 +2434,7 @@ File: gawkinet.info,  Node: STATIST,  Next: MAZE,  Prev: 
WEBGRAB,  Up: Some Appl
     -10           5            0            5           10"]
 
 
-In the HTTP server examples we’ve shown thus far, we never present an
+In the HTTP server examples we've shown thus far, we never present an
 image to the browser and its user.  Presenting images is one task.
 Generating images that reflect some user input and presenting these
 dynamically generated images is another.  In this node, we use GNUPlot
@@ -2596,7 +2595,7 @@ tries to build up a connection for the image request 
while the request
 for the HTML text is not yet completed.  The browser tries to connect to
 the ‘gawk’ server on port 8080 while port 8080 is still in use for
 transmission of the HTML text.  The connection for the image cannot be
-built up, so the image appears as “broken” in the browser window.  We
+built up, so the image appears as "broken" in the browser window.  We
 solved this problem by telling the browser to open a separate window for
 the image, but only after a delay of 1000 milliseconds.  By this time,
 the server should be ready for serving the next request.
@@ -2670,7 +2669,7 @@ File: gawkinet.info,  Node: MAZE,  Next: MOBAGWHO,  Prev: 
STATIST,  Up: Some App
 ===================================================
 
      In the long run, every program becomes rococo, and then rubble.
-                            — _Alan Perlis_
+                           -- _Alan Perlis_
 
    By now, we know how to present arbitrary ‘Content-type’s to a
 browser.  In this node, our server presents a 3D world to our browser.
@@ -2681,7 +2680,7 @@ plugin enable exploration of this technology.  We could 
do one of those
 boring ‘Hello world’ examples here, that are usually presented when
 introducing novices to VRML. If you have never written any VRML code,
 have a look at the VRML FAQ. Presenting a static VRML scene is a bit
-trivial; in order to expose ‘gawk’’s capabilities, we will present a
+trivial; in order to expose ‘gawk’'s capabilities, we will present a
 dynamically generated VRML scene.  The function ‘SetUpServer()’ is very
 simple because it only sets the default HTML page and initializes the
 random number generator.  As usual, the surrounding server lets you
@@ -2805,7 +2804,7 @@ File: gawkinet.info,  Node: MOBAGWHO,  Next: STOXPRED,  
Prev: MAZE,  Up: Some Ap
      make it so simple that there are obviously no deficiencies, and the
      other way is to make it so complicated that there are no obvious
      deficiencies.
-                           — _C.A.R. Hoare_
+                           -- _C.A.R. Hoare_
 
    A “mobile agent” is a program that can be dispatched from a computer
 and transported to a remote server for execution.  This is called
@@ -2832,7 +2831,7 @@ process is implemented depends upon the kind of server 
process:
      ‘POST’ method to transfer some data to a file on the web server.
      When a CGI script is called remotely with the ‘POST’ method instead
      of the usual ‘GET’ method, data is transmitted from the client
-     process to the standard input of the server’s CGI script.  So, to
+     process to the standard input of the server's CGI script.  So, to
      implement a mobile agent, we must not only write the agent program
      to start on the client side, but also the CGI script to receive the
      agent on the server side.
@@ -2864,7 +2863,7 @@ placed into a location like 
‘/httpd/cgi-bin/PostAgent.sh’.
 
    By making its process id (‘$$’) part of the unique file name, the
 script avoids conflicts between concurrent instances of the script.
-First, all lines from standard input (the mobile agent’s source code)
+First, all lines from standard input (the mobile agent's source code)
 are copied into this unique file.  Then, the agent is started as a
 concurrent process and a short message reporting this fact is sent to
 the submitting client.  Finally, the script file of the mobile agent is
@@ -2881,14 +2880,14 @@ Self-Reference
      Each migrating instance of an agent is started in a way that
      enables it to read its own source code from standard input and use
      the code for subsequent migrations.  This is necessary because it
-     needs to treat the agent’s code as data to transmit.  ‘gawk’ is not
+     needs to treat the agent's code as data to transmit.  ‘gawk’ is not
      the ideal language for such a job.  Lisp and Tcl are more suitable
      because they do not make a distinction between program code and
      data.
 
 Independence
      After migration, the agent is not linked to its former home in any
-     way.  By reporting ‘Agent started’, it waves “Goodbye” to its
+     way.  By reporting ‘Agent started’, it waves "Goodbye" to its
      origin.  The originator may choose to terminate or not.
 
    The originating agent itself is started just like any other
@@ -2966,7 +2965,7 @@ mobile agent:
    The ‘migrate()’ function prepares the aforementioned strings
 containing the program code and transmits them to a server.  A
 consequence of this modular approach is that the ‘migrate()’ function
-takes some parameters that aren’t needed in this application, but that
+takes some parameters that aren't needed in this application, but that
 will be in future ones.  Its mandatory parameter ‘Destination’ holds the
 name (or IP address) of the server that the agent wants as a host for
 its code.  The optional parameter ‘MobCode’ may contain some ‘gawk’ 
code
@@ -2989,7 +2988,7 @@ variables.  The following conventions apply:
      takes part in migration has to be an element of this array.
      ‘migrate()’ also takes care of this.
 
-   Now it’s clear what happens to the ‘Label’ parameter of the function
+   Now it's clear what happens to the ‘Label’ parameter of the function
 ‘migrate()’.  It is copied into ‘MOBVAR["Label"]’ and travels alongside
 the other data.  Since traveling takes place via HTTP, records must be
 separated with ‘"\r\n"’ in ‘RS’ and ‘ORS’ as usual.  The code 
assembly
@@ -3020,7 +3019,7 @@ it starts ‘MyJob()’:
          MyJob()              # so we do our job
      }
 
-   All that’s left to extend the framework into a complete application
+   All that's left to extend the framework into a complete application
 is to write two application-specific functions: ‘MyInit()’ and
 ‘MyJob()’.  Keep in mind that the former is executed once on the
 originating host, while the latter is executed after each migration:
@@ -3062,11 +3061,11 @@ function runs on the remote host:
 
    After migrating, the first thing to do in ‘MyJob()’ is to delete the
 name of the current host from the list of hosts to visit.  Now, it is
-time to start the real work by appending the host’s name to the result
+time to start the real work by appending the host's name to the result
 string, and reading line by line who is logged in on this host.  A very
 annoying circumstance is the fact that the elements of ‘MOBVAR’ cannot
 hold the newline character (‘"\n"’).  If they did, migration of this
-string would not work because the string wouldn’t obey the syntax rule
+string would not work because the string wouldn't obey the syntax rule
 for a string in ‘gawk’.  ‘SUBSEP’ is used as a temporary replacement.
 
    If the list of hosts to visit holds at least one more entry, the
@@ -3094,13 +3093,13 @@ File: gawkinet.info,  Node: STOXPRED,  Next: PROTBASE,  
Prev: MOBAGWHO,  Up: Som
      ape-descendent life forms are so amazingly primitive that they
      still think digital watches are a pretty neat idea.
 
-     This planet has — or rather had — a problem, which was this: most
+     This planet has -- or rather had -- a problem, which was this: most
      of the people living on it were unhappy for pretty much of the
      time.  Many solutions were suggested for this problem, but most of
      these were largely concerned with the movements of small green
-     pieces of paper, which is odd because it wasn’t the small green
+     pieces of paper, which is odd because it wasn't the small green
      pieces of paper that were unhappy.
-      — _Douglas Adams, ‘The Hitch Hiker’s Guide to the Galaxy’_
+      -- _Douglas Adams, ‘The Hitch Hiker's Guide to the Galaxy’_
 
    Valuable services on the Internet are usually _not_ implemented as
 mobile agents.  There are much simpler ways of implementing services.
@@ -3159,7 +3158,7 @@ anybody.
              ...
 
    The script as a whole is rather long.  In order to ease the pain of
-studying other people’s source code, we have broken the script up into
+studying other people's source code, we have broken the script up into
 meaningful parts which are invoked one after the other.  The basic
 structure of the script is as follows:
 
@@ -3231,11 +3230,11 @@ ending date are chosen to be exactly the same, but one 
year apart in the
 past.  All the action is initiated within the ‘printf’ command which
 transmits the request for data to the Yahoo server.
 
-   In the inner loop, the server’s data is first read and then scanned
+   In the inner loop, the server's data is first read and then scanned
 line by line.  Only lines which have six columns and the name of a month
 in the first column contain relevant data.  This data is stored in the
 two-dimensional array ‘quote’; one dimension being time, the other being
-the ticker symbol.  During retrieval of the first stock’s data, the
+the ticker symbol.  During retrieval of the first stock's data, the
 calendar names of the time instances are stored in the array ‘day’
 because we need them later.
 
@@ -3406,15 +3405,15 @@ File: gawkinet.info,  Node: PROTBASE,  Prev: STOXPRED,  
Up: Some Applications an
 
      Inside every large problem is a small problem struggling to get
      out.(1)
-                  — _With apologies to C.A.R. Hoare_
+                  -- _With apologies to C.A.R. Hoare_
 
-   Yahoo’s database of stock market data is just one among the many
+   Yahoo's database of stock market data is just one among the many
 large databases on the Internet.  Another one is located at NCBI
 (National Center for Biotechnology Information).  Established in 1988 as
 a national resource for molecular biology information, NCBI creates
 public databases, conducts research in computational biology, develops
 software tools for analyzing genome data, and disseminates biomedical
-information.  In this section, we look at one of NCBI’s public services,
+information.  In this section, we look at one of NCBI's public services,
 which is called BLAST (Basic Local Alignment Search Tool).
 
    You probably know that the information necessary for reproducing
@@ -3458,7 +3457,7 @@ services:
      The query sequence is compared against the specified database using
      the BLAST algorithm and the results are returned in an email
      message.  For more information on formulating email BLAST searches,
-     you can send a message consisting of the word “HELP” to the same
+     you can send a message consisting of the word "HELP" to the same
      address, <blast@ncbi.nlm.nih.gov>.
 
    Our starting point is the demonstration client mentioned in the first
@@ -3512,7 +3511,7 @@ contains the mandatory ‘BEGIN’ directive, followed by 
the query sequence
 in FASTA/Pearson format.  Each line of information must be less than 80
 characters in length.
 
-   The “month” database contains all new or revised sequences released
+   The "month" database contains all new or revised sequences released
 in the last 30 days and is useful for searching against new sequences.
 There are five different blast programs, ‘blastn’ being the one that
 compares a nucleotide query sequence against a nucleotide sequence
@@ -3531,7 +3530,7 @@ description is arbitrary.
 following 10 lines of code into a file named ‘protbase.awk’ and use this
 client instead.  Invoke it with ‘gawk -f protbase.awk protbase.request’.
 Then wait a minute and watch the result coming in.  In order to
-replicate the demonstration client’s behavior as closely as possible,
+replicate the demonstration client's behavior as closely as possible,
 this client does not use a proxy server.  We could also have extended
 the client program in *note Retrieving Web Pages: GETURL, to implement
 the client request from ‘protbase.awk’ as a special case.
@@ -3560,7 +3559,7 @@ prints the complete result coming from the server.
 you can ignore.  Then there are some comments about the query having
 been filtered to avoid spuriously high scores.  After this, there is a
 reference to the paper that describes the software being used for
-searching the data base.  After a repetition of the original query’s
+searching the data base.  After a repetition of the original query's
 description we find the list of significant alignments:
 
      Sequences producing significant alignments:                        (bits) 
 Value
@@ -3631,7 +3630,7 @@ and you might appreciate the following hints.
      Michael S. Waterman, which is worth reading if you are seriously
      interested.  You can find a good book review on the Internet.
 
-  2. While Waterman’s book explains the algorithms employed internally
+  2. While Waterman's book explains the algorithms employed internally
      in the database search engines, most practitioners prefer to
      approach the subject differently.  The applied side of
      Computational Biology is called Bioinformatics, and emphasizes the
@@ -3648,8 +3647,8 @@ and you might appreciate the following hints.
 
    ---------- Footnotes ----------
 
-   (1) What C.A.R. Hoare actually said was “Inside every large program
-is a small program struggling to get out.”
+   (1) What C.A.R. Hoare actually said was "Inside every large program
+is a small program struggling to get out."
 
 
 File: gawkinet.info,  Node: Links,  Next: GNU Free Documentation License,  
Prev: Some Applications and Techniques,  Up: Top
@@ -3669,7 +3668,7 @@ file.  They are presented in the order in which they 
appear.
 ‘Web Client Programming with Perl’
      <http://www.oreilly.com/catalog/webclient>
 
-Richard Stevens’s home page and book
+Richard Stevens's home page and book
      <http://www.kohala.com/start>
 
 Volume III of ‘Internetworking with TCP/IP’, by Comer and Stevens
@@ -3681,7 +3680,7 @@ XBM Graphics File Format
 GNUPlot
      <http://www.gnuplot.info>
 
-Mark Humphrys’ Eliza page
+Mark Humphrys' Eliza page
      <https://computing.dcu.ie/~humphrys/eliza.html>
 
 Eliza on Wikipedia
@@ -3784,7 +3783,7 @@ GNU Free Documentation License
      author and publisher a way to get credit for their work, while not
      being considered responsible for modifications made by others.
 
-     This License is a kind of “copyleft”, which means that derivative
+     This License is a kind of "copyleft", which means that derivative
      works of the document must themselves be free in the same sense.
      It complements the GNU General Public License, which is a copyleft
      license designed for free software.
@@ -3805,18 +3804,18 @@ GNU Free Documentation License
      be distributed under the terms of this License.  Such a notice
      grants a world-wide, royalty-free license, unlimited in duration,
      to use that work under the conditions stated herein.  The
-     “Document”, below, refers to any such manual or work.  Any member
-     of the public is a licensee, and is addressed as “you”.  You accept
+     "Document", below, refers to any such manual or work.  Any member
+     of the public is a licensee, and is addressed as "you".  You accept
      the license if you copy, modify or distribute the work in a way
      requiring permission under copyright law.
 
-     A “Modified Version” of the Document means any work containing the
+     A "Modified Version" of the Document means any work containing the
      Document or a portion of it, either copied verbatim, or with
      modifications and/or translated into another language.
 
-     A “Secondary Section” is a named appendix or a front-matter section
+     A "Secondary Section" is a named appendix or a front-matter section
      of the Document that deals exclusively with the relationship of the
-     publishers or authors of the Document to the Document’s overall
+     publishers or authors of the Document to the Document's overall
      subject (or to related matters) and contains nothing that could
      fall directly within that overall subject.  (Thus, if the Document
      is in part a textbook of mathematics, a Secondary Section may not
@@ -3825,7 +3824,7 @@ GNU Free Documentation License
      of legal, commercial, philosophical, ethical or political position
      regarding them.
 
-     The “Invariant Sections” are certain Secondary Sections whose
+     The "Invariant Sections" are certain Secondary Sections whose
      titles are designated, as being those of Invariant Sections, in the
      notice that says that the Document is released under this License.
      If a section does not fit the above definition of Secondary then it
@@ -3833,13 +3832,13 @@ GNU Free Documentation License
      contain zero Invariant Sections.  If the Document does not identify
      any Invariant Sections then there are none.
 
-     The “Cover Texts” are certain short passages of text that are
+     The "Cover Texts" are certain short passages of text that are
      listed, as Front-Cover Texts or Back-Cover Texts, in the notice
      that says that the Document is released under this License.  A
      Front-Cover Text may be at most 5 words, and a Back-Cover Text may
      be at most 25 words.
 
-     A “Transparent” copy of the Document means a machine-readable copy,
+     A "Transparent" copy of the Document means a machine-readable copy,
      represented in a format whose specification is available to the
      general public, that is suitable for revising the document
      straightforwardly with generic text editors or (for images composed
@@ -3851,7 +3850,7 @@ GNU Free Documentation License
      been arranged to thwart or discourage subsequent modification by
      readers is not Transparent.  An image format is not Transparent if
      used for any substantial amount of text.  A copy that is not
-     “Transparent” is called “Opaque”.
+     "Transparent" is called "Opaque".
 
      Examples of suitable formats for Transparent copies include plain
      ASCII without markup, Texinfo input format, LaTeX input format,
@@ -3864,23 +3863,23 @@ GNU Free Documentation License
      the machine-generated HTML, PostScript or PDF produced by some word
      processors for output purposes only.
 
-     The “Title Page” means, for a printed book, the title page itself,
+     The "Title Page" means, for a printed book, the title page itself,
      plus such following pages as are needed to hold, legibly, the
      material this License requires to appear in the title page.  For
-     works in formats which do not have any title page as such, “Title
-     Page” means the text near the most prominent appearance of the
-     work’s title, preceding the beginning of the body of the text.
+     works in formats which do not have any title page as such, "Title
+     Page" means the text near the most prominent appearance of the
+     work's title, preceding the beginning of the body of the text.
 
-     The “publisher” means any person or entity that distributes copies
+     The "publisher" means any person or entity that distributes copies
      of the Document to the public.
 
-     A section “Entitled XYZ” means a named subunit of the Document
+     A section "Entitled XYZ" means a named subunit of the Document
      whose title either is precisely XYZ or contains XYZ in parentheses
      following text that translates XYZ in another language.  (Here XYZ
      stands for a specific section name mentioned below, such as
-     “Acknowledgements”, “Dedications”, “Endorsements”, or 
“History”.)
-     To “Preserve the Title” of such a section when you modify the
-     Document means that it remains a section “Entitled XYZ” according
+     "Acknowledgements", "Dedications", "Endorsements", or "History".)
+     To "Preserve the Title" of such a section when you modify the
+     Document means that it remains a section "Entitled XYZ" according
      to this definition.
 
      The Document may include Warranty Disclaimers next to the notice
@@ -3910,7 +3909,7 @@ GNU Free Documentation License
 
      If you publish printed copies (or copies in media that commonly
      have printed covers) of the Document, numbering more than 100, and
-     the Document’s license notice requires Cover Texts, you must
+     the Document's license notice requires Cover Texts, you must
      enclose the copies in covers that carry, clearly and legibly, all
      these Cover Texts: Front-Cover Texts on the front cover, and
      Back-Cover Texts on the back cover.  Both covers must also clearly
@@ -3982,15 +3981,15 @@ GNU Free Documentation License
           the Addendum below.
 
        G. Preserve in that license notice the full lists of Invariant
-          Sections and required Cover Texts given in the Document’s
+          Sections and required Cover Texts given in the Document's
           license notice.
 
        H. Include an unaltered copy of this License.
 
-       I. Preserve the section Entitled “History”, Preserve its Title,
+       I. Preserve the section Entitled "History", Preserve its Title,
           and add to it an item stating at least the title, year, new
           authors, and publisher of the Modified Version as given on the
-          Title Page.  If there is no section Entitled “History” in the
+          Title Page.  If there is no section Entitled "History" in the
           Document, create one stating the title, year, authors, and
           publisher of the Document as given on its Title Page, then add
           an item describing the Modified Version as stated in the
@@ -4000,12 +3999,12 @@ GNU Free Documentation License
           for public access to a Transparent copy of the Document, and
           likewise the network locations given in the Document for
           previous versions it was based on.  These may be placed in the
-          “History” section.  You may omit a network location for a work
+          "History" section.  You may omit a network location for a work
           that was published at least four years before the Document
           itself, or if the original publisher of the version it refers
           to gives permission.
 
-       K. For any section Entitled “Acknowledgements” or “Dedications”,
+       K. For any section Entitled "Acknowledgements" or "Dedications",
           Preserve the Title of the section, and preserve in the section
           all the substance and tone of each of the contributor
           acknowledgements and/or dedications given therein.
@@ -4014,11 +4013,11 @@ GNU Free Documentation License
           in their text and in their titles.  Section numbers or the
           equivalent are not considered part of the section titles.
 
-       M. Delete any section Entitled “Endorsements”.  Such a section
+       M. Delete any section Entitled "Endorsements".  Such a section
           may not be included in the Modified Version.
 
        N. Do not retitle any existing section to be Entitled
-          “Endorsements” or to conflict in title with any Invariant
+          "Endorsements" or to conflict in title with any Invariant
           Section.
 
        O. Preserve any Warranty Disclaimers.
@@ -4027,15 +4026,15 @@ GNU Free Documentation License
      appendices that qualify as Secondary Sections and contain no
      material copied from the Document, you may at your option designate
      some or all of these sections as invariant.  To do this, add their
-     titles to the list of Invariant Sections in the Modified Version’s
+     titles to the list of Invariant Sections in the Modified Version's
      license notice.  These titles must be distinct from any other
      section titles.
 
-     You may add a section Entitled “Endorsements”, provided it contains
+     You may add a section Entitled "Endorsements", provided it contains
      nothing but endorsements of your Modified Version by various
-     parties—for example, statements of peer review or that the text has
-     been approved by an organization as the authoritative definition of
-     a standard.
+     parties--for example, statements of peer review or that the text
+     has been approved by an organization as the authoritative
+     definition of a standard.
 
      You may add a passage of up to five words as a Front-Cover Text,
      and a passage of up to 25 words as a Back-Cover Text, to the end of
@@ -4073,10 +4072,10 @@ GNU Free Documentation License
      combined work.
 
      In the combination, you must combine any sections Entitled
-     “History” in the various original documents, forming one section
-     Entitled “History”; likewise combine any sections Entitled
-     “Acknowledgements”, and any sections Entitled “Dedications”.  You
-     must delete all sections Entitled “Endorsements.”
+     "History" in the various original documents, forming one section
+     Entitled "History"; likewise combine any sections Entitled
+     "Acknowledgements", and any sections Entitled "Dedications".  You
+     must delete all sections Entitled "Endorsements."
 
   6. COLLECTIONS OF DOCUMENTS
 
@@ -4097,16 +4096,16 @@ GNU Free Documentation License
 
      A compilation of the Document or its derivatives with other
      separate and independent documents or works, in or on a volume of a
-     storage or distribution medium, is called an “aggregate” if the
+     storage or distribution medium, is called an "aggregate" if the
      copyright resulting from the compilation is not used to limit the
-     legal rights of the compilation’s users beyond what the individual
+     legal rights of the compilation's users beyond what the individual
      works permit.  When the Document is included in an aggregate, this
      License does not apply to the other works in the aggregate which
      are not themselves derivative works of the Document.
 
      If the Cover Text requirement of section 3 is applicable to these
      copies of the Document, then if the Document is less than one half
-     of the entire aggregate, the Document’s Cover Texts may be placed
+     of the entire aggregate, the Document's Cover Texts may be placed
      on covers that bracket the Document within the aggregate, or the
      electronic equivalent of covers if the Document is in electronic
      form.  Otherwise they must appear on printed covers that bracket
@@ -4128,8 +4127,8 @@ GNU Free Documentation License
      this License or a notice or disclaimer, the original version will
      prevail.
 
-     If a section in the Document is Entitled “Acknowledgements”,
-     “Dedications”, or “History”, the requirement (section 4) to
+     If a section in the Document is Entitled "Acknowledgements",
+     "Dedications", or "History", the requirement (section 4) to
      Preserve its Title (section 1) will typically require changing the
      actual title.
 
@@ -4170,7 +4169,7 @@ GNU Free Documentation License
 
      Each version of the License is given a distinguishing version
      number.  If the Document specifies that a particular numbered
-     version of this License “or any later version” applies to it, you
+     version of this License "or any later version" applies to it, you
      have the option of following the terms and conditions either of
      that specified version or of any later version that has been
      published (not as a draft) by the Free Software Foundation.  If the
@@ -4178,29 +4177,29 @@ GNU Free Documentation License
      choose any version ever published (not as a draft) by the Free
      Software Foundation.  If the Document specifies that a proxy can
      decide which future versions of this License can be used, that
-     proxy’s public statement of acceptance of a version permanently
+     proxy's public statement of acceptance of a version permanently
      authorizes you to choose that version for the Document.
 
   11. RELICENSING
 
-     “Massive Multiauthor Collaboration Site” (or “MMC Site”) means any
+     "Massive Multiauthor Collaboration Site" (or "MMC Site") means any
      World Wide Web server that publishes copyrightable works and also
      provides prominent facilities for anybody to edit those works.  A
      public wiki that anybody can edit is an example of such a server.
-     A “Massive Multiauthor Collaboration” (or “MMC”) contained in the
+     A "Massive Multiauthor Collaboration" (or "MMC") contained in the
      site means any set of copyrightable works thus published on the MMC
      site.
 
-     “CC-BY-SA” means the Creative Commons Attribution-Share Alike 3.0
+     "CC-BY-SA" means the Creative Commons Attribution-Share Alike 3.0
      license published by Creative Commons Corporation, a not-for-profit
      corporation with a principal place of business in San Francisco,
      California, as well as future copyleft versions of that license
      published by that same organization.
 
-     “Incorporate” means to publish or republish a Document, in whole or
+     "Incorporate" means to publish or republish a Document, in whole or
      in part, as part of another Document.
 
-     An MMC is “eligible for relicensing” if it is licensed under this
+     An MMC is "eligible for relicensing" if it is licensed under this
      License, and if all works that were first published under this
      License somewhere other than this MMC, and subsequently
      incorporated in whole or in part into the MMC, (1) had no cover
@@ -4227,7 +4226,7 @@ notices just after the title page:
        Free Documentation License''.
 
    If you have Invariant Sections, Front-Cover Texts and Back-Cover
-Texts, replace the “with...Texts.” line with this:
+Texts, replace the "with...Texts."  line with this:
 
          with the Invariant Sections being LIST THEIR TITLES, with
          the Front-Cover Texts being LIST, and with the Back-Cover Texts
@@ -4265,10 +4264,10 @@ Index
 * BLAST, Basic Local Alignment Search Tool: PROTBASE.         (line   6)
 * blocking:                              Making Connections.  (line  35)
 * Boutell, Thomas:                       STATIST.             (line   6)
+* CGI (Common Gateway Interface):        MOBAGWHO.            (line  42)
 * CGI (Common Gateway Interface), dynamic web pages and: Web page.
                                                               (line  45)
 * CGI (Common Gateway Interface), library: CGI Lib.           (line  11)
-* CGI (Common Gateway Interface):        MOBAGWHO.            (line  42)
 * clients:                               Making Connections.  (line  21)
 * Clinton, Bill:                         Challenges.          (line  58)
 * Computational Biology:                 PROTBASE.            (line 229)
@@ -4291,14 +4290,14 @@ Index
                                                               (line   6)
 * FTP (File Transfer Protocol):          Basic Protocols.     (line  45)
 * gawk, networking:                      Using Networking.    (line   6)
-* gawk, networking, filenames:           Gawk Special Files.  (line  29)
 * gawk, networking, connections:         Special File Fields. (line  56)
 * gawk, networking, connections <1>:     TCP Connecting.      (line   6)
-* gawk, networking, service, establishing: Setting Up.        (line   6)
 * gawk, networking, email:               Email.               (line   6)
-* gawk, web and:                         Interacting Service. (line   6)
+* gawk, networking, filenames:           Gawk Special Files.  (line  29)
+* gawk, networking, service, establishing: Setting Up.        (line   6)
 * gawk, networking, troubleshooting:     Caveats.             (line   6)
-* getline command:                       TCP Connecting.      (line  11)
+* gawk, web and:                         Interacting Service. (line   6)
+* getline function:                      TCP Connecting.      (line  11)
 * GETURL program:                        GETURL.              (line   6)
 * GIF image format:                      Web page.            (line  45)
 * GIF image format <1>:                  STATIST.             (line   6)
@@ -4322,9 +4321,9 @@ Index
 * Humphrys, Mark:                        Simple Server.       (line 178)
 * Hypertext Markup Language (HTML):      Web page.            (line  29)
 * image format:                          STATIST.             (line   6)
-* images, retrieving over networks:      Web page.            (line  45)
 * images, in web pages:                  Interacting Service. (line 190)
-* JavaScript:                            STATIST.             (line  58)
+* images, retrieving over networks:      Web page.            (line  45)
+* JavaScript:                            STATIST.             (line  81)
 * Linux:                                 Troubleshooting.     (line  53)
 * Linux <1>:                             Interacting.         (line  33)
 * Linux <2>:                             REMCONF.             (line   6)
@@ -4333,26 +4332,26 @@ Index
 * Loebner, Hugh:                         Challenges.          (line   6)
 * Loui, Ronald:                          Challenges.          (line  75)
 * MAZE:                                  MAZE.                (line   6)
+* Microsoft Windows:                     WEBGRAB.             (line  43)
 * Microsoft Windows, networking:         Troubleshooting.     (line  53)
 * Microsoft Windows, networking, ports:  Setting Up.          (line  39)
-* Microsoft Windows:                     WEBGRAB.             (line  43)
 * MiniSQL:                               REMCONF.             (line 109)
 * MOBAGWHO program:                      MOBAGWHO.            (line   6)
 * NCBI, National Center for Biotechnology Information: PROTBASE.
                                                               (line   6)
 * network type field:                    Special File Fields. (line  11)
 * networks, gawk and:                    Using Networking.    (line   6)
-* networks, gawk and, filenames:         Gawk Special Files.  (line  29)
-* networks, ports, specifying:           Special File Fields. (line  24)
 * networks, gawk and, connections:       Special File Fields. (line  56)
 * networks, gawk and, connections <1>:   TCP Connecting.      (line   6)
-* networks, gawk and, service, establishing: Setting Up.      (line   6)
-* networks, ports, reserved:             Setting Up.          (line  39)
 * networks, gawk and, email:             Email.               (line   6)
+* networks, gawk and, filenames:         Gawk Special Files.  (line  29)
+* networks, gawk and, service, establishing: Setting Up.      (line   6)
 * networks, gawk and, troubleshooting:   Caveats.             (line   6)
-* Numerical Recipes:                     STATIST.             (line  14)
-* ORS variable, POP and:                 Email.               (line  38)
+* networks, ports, reserved:             Setting Up.          (line  39)
+* networks, ports, specifying:           Special File Fields. (line  24)
+* Numerical Recipes:                     STATIST.             (line  37)
 * ORS variable, HTTP and:                Web page.            (line  29)
+* ORS variable, POP and:                 Email.               (line  38)
 * PANIC program:                         PANIC.               (line   6)
 * Perl:                                  Using Networking.    (line  14)
 * Perl, gawk networking and:             Using Networking.    (line  24)
@@ -4363,15 +4362,15 @@ Index
 * POP (Post Office Protocol):            Email.               (line   6)
 * POP (Post Office Protocol) <1>:        Email.               (line  38)
 * Post Office Protocol (POP):            Email.               (line   6)
-* PostScript:                            STATIST.             (line 140)
+* PostScript:                            STATIST.             (line 163)
 * PROLOG:                                Challenges.          (line  75)
 * PROTBASE:                              PROTBASE.            (line   6)
 * protocol field:                        Special File Fields. (line  17)
 * PS image format:                       STATIST.             (line   6)
 * Python:                                Using Networking.    (line  14)
 * Python, gawk networking and:           Using Networking.    (line  24)
-* record separators, POP and:            Email.               (line  38)
 * record separators, HTTP and:           Web page.            (line  29)
+* record separators, POP and:            Email.               (line  38)
 * REMCONF program:                       REMCONF.             (line   6)
 * remoteport field:                      Gawk Special Files.  (line  34)
 * RFC 1939:                              Email.               (line   6)
@@ -4383,11 +4382,11 @@ Index
 * RFC 821:                               Email.               (line   6)
 * robot:                                 Challenges.          (line  84)
 * robot <1>:                             WEBGRAB.             (line   6)
-* RS variable, POP and:                  Email.               (line  38)
 * RS variable, HTTP and:                 Web page.            (line  29)
+* RS variable, POP and:                  Email.               (line  38)
 * servers:                               Making Connections.  (line  14)
-* servers, as hosts:                     Special File Fields. (line  35)
 * servers <1>:                           Setting Up.          (line  22)
+* servers, as hosts:                     Special File Fields. (line  35)
 * servers, HTTP:                         Interacting Service. (line   6)
 * servers, web:                          Simple Server.       (line   6)
 * Simple Mail Transfer Protocol (SMTP):  Basic Protocols.     (line  45)
@@ -4406,11 +4405,11 @@ Index
 * TCP (Transmission Control Protocol), connection, establishing: TCP 
Connecting.
                                                               (line   6)
 * TCP (Transmission Control Protocol), UDP and: Interacting.  (line  56)
-* TCP/IP, sockets and:                   Gawk Special Files.  (line  19)
 * TCP/IP, network type, selecting:       Special File Fields. (line  11)
 * TCP/IP, protocols, selecting:          Special File Fields. (line  17)
-* troubleshooting, networks, connections: Troubleshooting.    (line   6)
+* TCP/IP, sockets and:                   Gawk Special Files.  (line  19)
 * troubleshooting, gawk, networks:       Caveats.             (line   6)
+* troubleshooting, networks, connections: Troubleshooting.    (line   6)
 * troubleshooting, networks, timeouts:   Caveats.             (line  18)
 * UDP (User Datagram Protocol):          File /inet/udp.      (line   6)
 * UDP (User Datagram Protocol), TCP and: Interacting.         (line  56)
@@ -4433,63 +4432,63 @@ Index
 
 
 Tag Table:
-Node: Top1144
-Node: Preface4843
-Node: Introduction6264
-Node: Stream Communications7294
-Node: Datagram Communications8478
-Node: The TCP/IP Protocols10126
-Ref: The TCP/IP Protocols-Footnote-110813
-Node: Basic Protocols10970
-Ref: Basic Protocols-Footnote-113035
-Node: Ports13066
-Node: Making Connections14486
-Ref: Making Connections-Footnote-117092
-Ref: Making Connections-Footnote-217139
-Node: Using Networking17329
-Node: Gawk Special Files19692
-Node: Special File Fields21553
-Ref: table-inet-components25546
-Node: Comparing Protocols26862
-Node: File /inet/tcp27396
-Node: File /inet/udp28386
-Ref: File /inet/udp-Footnote-130126
-Node: TCP Connecting30384
-Node: Troubleshooting33917
-Ref: Troubleshooting-Footnote-136709
-Node: Interacting37689
-Node: Setting Up42123
-Node: Email46762
-Ref: Email-Footnote-149208
-Node: Web page50028
-Ref: Web page-Footnote-152904
-Ref: Web page-Footnote-253102
-Node: Primitive Service53600
-Node: Interacting Service56356
-Ref: Interacting Service-Footnote-165613
-Node: CGI Lib65645
-Node: Simple Server72727
-Ref: Simple Server-Footnote-180586
-Node: Caveats80691
-Node: Challenges81853
-Ref: Challenges-Footnote-190656
-Node: Some Applications and Techniques90761
-Node: PANIC93256
-Node: GETURL94994
-Node: REMCONF97649
-Node: URLCHK103183
-Node: WEBGRAB107055
-Node: STATIST111597
-Ref: STATIST-Footnote-1124909
-Node: MAZE125364
-Node: MOBAGWHO131629
-Ref: MOBAGWHO-Footnote-1145798
-Node: STOXPRED145866
-Node: PROTBASE160259
-Ref: PROTBASE-Footnote-1173589
-Node: Links173708
-Node: GNU Free Documentation License176631
-Node: Index201954
+Node: Top1122
+Node: Preface4805
+Node: Introduction6224
+Node: Stream Communications7254
+Node: Datagram Communications8436
+Node: The TCP/IP Protocols10078
+Ref: The TCP/IP Protocols-Footnote-110762
+Node: Basic Protocols10919
+Ref: Basic Protocols-Footnote-112972
+Node: Ports13001
+Node: Making Connections14412
+Ref: Making Connections-Footnote-117010
+Ref: Making Connections-Footnote-217057
+Node: Using Networking17238
+Node: Gawk Special Files19597
+Node: Special File Fields21450
+Ref: table-inet-components25438
+Node: Comparing Protocols26753
+Node: File /inet/tcp27287
+Node: File /inet/udp28277
+Ref: File /inet/udp-Footnote-130005
+Node: TCP Connecting30263
+Node: Troubleshooting33794
+Ref: Troubleshooting-Footnote-136586
+Node: Interacting37563
+Node: Setting Up41997
+Node: Email46632
+Ref: Email-Footnote-149078
+Node: Web page49898
+Ref: Web page-Footnote-152770
+Ref: Web page-Footnote-252968
+Node: Primitive Service53462
+Node: Interacting Service56216
+Ref: Interacting Service-Footnote-165467
+Node: CGI Lib65499
+Node: Simple Server72566
+Ref: Simple Server-Footnote-180420
+Node: Caveats80525
+Node: Challenges81678
+Ref: Challenges-Footnote-190458
+Node: Some Applications and Techniques90563
+Node: PANIC93056
+Node: GETURL94790
+Node: REMCONF97443
+Node: URLCHK102977
+Node: WEBGRAB106845
+Node: STATIST111375
+Ref: STATIST-Footnote-1124681
+Node: MAZE125136
+Node: MOBAGWHO131397
+Ref: MOBAGWHO-Footnote-1145545
+Node: STOXPRED145613
+Node: PROTBASE159993
+Ref: PROTBASE-Footnote-1173304
+Node: Links173419
+Node: GNU Free Documentation License176338
+Node: Index201461
 
 End Tag Table
 
diff --git a/doc/gawkinet.texi b/doc/gawkinet.texi
index 4c586c10..430519b8 100644
--- a/doc/gawkinet.texi
+++ b/doc/gawkinet.texi
@@ -872,7 +872,7 @@ and watch the output. Within a second, it connects via TCP 
(@file{/inet/tcp})
 to a remote server and asks the service
 @samp{daytime} on the machine what time it is:
 
-@cindex @code{getline} command
+@cindex @code{getline} function
 @example
 @c file eg/network/daytimeclient.awk
 BEGIN @{

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

Summary of changes:
 doc/ChangeLog     |    5 +
 doc/gawk.1        |    2 +-
 doc/gawk.info     | 1324 +++++++++++++++++++++++++++--------------------------
 doc/gawk.texi     |  104 +++--
 doc/gawkinet.info |  475 ++++++++++---------
 doc/gawkinet.texi |    2 +-
 6 files changed, 988 insertions(+), 924 deletions(-)


hooks/post-receive
-- 
gawk



reply via email to

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