[Top][All Lists]

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

[gawk-diffs] [SCM] gawk branch, non-fatal-io-2, updated. gawk-4.1.0-1152

From: Arnold Robbins
Subject: [gawk-diffs] [SCM] gawk branch, non-fatal-io-2, updated. gawk-4.1.0-1152-g6237311
Date: Sun, 08 Mar 2015 04:07:32 +0000

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

The branch, non-fatal-io-2 has been updated
       via  6237311c0af460dd0ff5cf2ed4f935a33386375c (commit)
       via  b108a3ba2ab12dd7274589c6fe09c882df02827c (commit)
      from  b8ba9836e05eb96daeed9614f045f5b81a826730 (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 -----------------------------------------------------------------

commit 6237311c0af460dd0ff5cf2ed4f935a33386375c
Author: Arnold D. Robbins <address@hidden>
Date:   Sun Mar 8 06:06:56 2015 +0200

    Commit generated doc from previous commit.

diff --git a/doc/ b/doc/
index cbcf529..7e548a8 100644
--- a/doc/
+++ b/doc/
@@ -3014,7 +3014,8 @@ used by regular users:
      Controls the number of times `gawk' attempts to retry a two-way
      TCP/IP (socket) connection before giving up.  *Note TCP/IP
-     Networking::.
+     Networking::.  Note that when nonfatal I/O is enabled (*note
+     Nonfatal::), `gawk' only tries to open a TCP/IP socket once.
      Causes `gawk' to switch to POSIX-compatibility mode, disabling all
@@ -7263,6 +7264,13 @@ For standard output, you may use `PROCINFO["-", 
 `PROCINFO["/dev/stdout", "NONFATAL"]'.  For standard error, use
 `PROCINFO["/dev/stderr", "NONFATAL"]'.
+   When attempting to open a TCP/IP socket (*note TCP/IP Networking::),
+`gawk' tries multiple times. The `GAWK_SOCK_RETRIES' environment
+variable (*note Other Environment Variables::) allows you to override
+`gawk''s builtin default number of attempts.  However, once nonfatal
+I/O is enabled for a given socket, `gawk' only retries once, relying on
+`awk'-level code to notice that there was a problem.
 File:,  Node: Output Summary,  Next: Output Exercises,  Prev: 
Nonfatal,  Up: Printing
@@ -34781,511 +34789,511 @@ Ref: AWKPATH Variable-Footnote-1140222
 Ref: AWKPATH Variable-Footnote-2140267
 Node: AWKLIBPATH Variable140527
 Node: Other Environment Variables141783
-Node: Exit Status145301
-Node: Include Files145977
-Node: Loading Shared Libraries149566
-Node: Obsolete150993
-Node: Undocumented151685
-Node: Invoking Summary151952
-Node: Regexp153615
-Node: Regexp Usage155069
-Node: Escape Sequences157106
-Node: Regexp Operators163335
-Ref: Regexp Operators-Footnote-1170745
-Ref: Regexp Operators-Footnote-2170892
-Node: Bracket Expressions170990
-Ref: table-char-classes173005
-Node: Leftmost Longest175947
-Node: Computed Regexps177249
-Node: GNU Regexp Operators180678
-Node: Case-sensitivity184350
-Ref: Case-sensitivity-Footnote-1187235
-Ref: Case-sensitivity-Footnote-2187470
-Node: Regexp Summary187578
-Node: Reading Files189045
-Node: Records191138
-Node: awk split records191871
-Node: gawk split records196800
-Ref: gawk split records-Footnote-1201339
-Node: Fields201376
-Ref: Fields-Footnote-1204154
-Node: Nonconstant Fields204240
-Ref: Nonconstant Fields-Footnote-1206478
-Node: Changing Fields206681
-Node: Field Separators212612
-Node: Default Field Splitting215316
-Node: Regexp Field Splitting216433
-Node: Single Character Fields219783
-Node: Command Line Field Separator220842
-Node: Full Line Fields224059
-Ref: Full Line Fields-Footnote-1225580
-Ref: Full Line Fields-Footnote-2225626
-Node: Field Splitting Summary225727
-Node: Constant Size227801
-Node: Splitting By Content232384
-Ref: Splitting By Content-Footnote-1236349
-Node: Multiple Line236512
-Ref: Multiple Line-Footnote-1242393
-Node: Getline242572
-Node: Plain Getline244779
-Node: Getline/Variable247419
-Node: Getline/File248568
-Node: Getline/Variable/File249953
-Ref: Getline/Variable/File-Footnote-1251556
-Node: Getline/Pipe251643
-Node: Getline/Variable/Pipe254321
-Node: Getline/Coprocess255452
-Node: Getline/Variable/Coprocess256716
-Node: Getline Notes257455
-Node: Getline Summary260249
-Ref: table-getline-variants260661
-Node: Read Timeout261490
-Ref: Read Timeout-Footnote-1265327
-Node: Command-line directories265385
-Node: Input Summary266290
-Node: Input Exercises269675
-Node: Printing270403
-Node: Print272238
-Node: Print Examples273695
-Node: Output Separators276474
-Node: OFMT278492
-Node: Printf279847
-Node: Basic Printf280632
-Node: Control Letters282204
-Node: Format Modifiers286189
-Node: Printf Examples292195
-Node: Redirection294681
-Node: Special FD301519
-Ref: Special FD-Footnote-1304685
-Node: Special Files304759
-Node: Other Inherited Files305376
-Node: Special Network306376
-Node: Special Caveats307238
-Node: Close Files And Pipes308187
-Ref: Close Files And Pipes-Footnote-1315372
-Ref: Close Files And Pipes-Footnote-2315520
-Node: Nonfatal315670
-Node: Output Summary317593
-Node: Output Exercises318814
-Node: Expressions319494
-Node: Values320683
-Node: Constants321360
-Node: Scalar Constants322051
-Ref: Scalar Constants-Footnote-1322913
-Node: Nondecimal-numbers323163
-Node: Regexp Constants326173
-Node: Using Constant Regexps326699
-Node: Variables329862
-Node: Using Variables330519
-Node: Assignment Options332430
-Node: Conversion334305
-Node: Strings And Numbers334829
-Ref: Strings And Numbers-Footnote-1337894
-Node: Locale influences conversions338003
-Ref: table-locale-affects340749
-Node: All Operators341341
-Node: Arithmetic Ops341970
-Node: Concatenation344475
-Ref: Concatenation-Footnote-1347294
-Node: Assignment Ops347401
-Ref: table-assign-ops352380
-Node: Increment Ops353690
-Node: Truth Values and Conditions357121
-Node: Truth Values358204
-Node: Typing and Comparison359253
-Node: Variable Typing360069
-Node: Comparison Operators363736
-Ref: table-relational-ops364146
-Node: POSIX String Comparison367641
-Ref: POSIX String Comparison-Footnote-1368713
-Node: Boolean Ops368852
-Ref: Boolean Ops-Footnote-1373330
-Node: Conditional Exp373421
-Node: Function Calls375159
-Node: Precedence379039
-Node: Locales382699
-Node: Expressions Summary384331
-Node: Patterns and Actions386902
-Node: Pattern Overview388022
-Node: Regexp Patterns389701
-Node: Expression Patterns390244
-Node: Ranges394024
-Node: BEGIN/END397131
-Node: Using BEGIN/END397892
-Ref: Using BEGIN/END-Footnote-1400628
-Node: I/O And BEGIN/END400734
-Node: Empty405946
-Node: Using Shell Variables406263
-Node: Action Overview408536
-Node: Statements410862
-Node: If Statement412710
-Node: While Statement414205
-Node: Do Statement416233
-Node: For Statement417381
-Node: Switch Statement420539
-Node: Break Statement422921
-Node: Continue Statement425014
-Node: Next Statement426841
-Node: Nextfile Statement429222
-Node: Exit Statement431850
-Node: Built-in Variables434261
-Node: User-modified435394
-Ref: User-modified-Footnote-1443028
-Node: Auto-set443090
-Ref: Auto-set-Footnote-1456799
-Ref: Auto-set-Footnote-2457004
-Node: ARGC and ARGV457060
-Node: Pattern Action Summary461278
-Node: Arrays463711
-Node: Array Basics465040
-Node: Array Intro465884
-Ref: figure-array-elements467818
-Ref: Array Intro-Footnote-1470438
-Node: Reference to Elements470566
-Node: Assigning Elements473028
-Node: Array Example473519
-Node: Scanning an Array475278
-Node: Controlling Scanning478298
-Ref: Controlling Scanning-Footnote-1483692
-Node: Numeric Array Subscripts484008
-Node: Uninitialized Subscripts486193
-Node: Delete487810
-Ref: Delete-Footnote-1490559
-Node: Multidimensional490616
-Node: Multiscanning493713
-Node: Arrays of Arrays495302
-Node: Arrays Summary500056
-Node: Functions502147
-Node: Built-in503186
-Node: Calling Built-in504264
-Node: Numeric Functions506259
-Ref: Numeric Functions-Footnote-1511077
-Ref: Numeric Functions-Footnote-2511434
-Ref: Numeric Functions-Footnote-3511482
-Node: String Functions511754
-Ref: String Functions-Footnote-1535255
-Ref: String Functions-Footnote-2535384
-Ref: String Functions-Footnote-3535632
-Node: Gory Details535719
-Ref: table-sub-escapes537500
-Ref: table-sub-proposed539015
-Ref: table-posix-sub540377
-Ref: table-gensub-escapes541914
-Ref: Gory Details-Footnote-1542747
-Node: I/O Functions542898
-Ref: I/O Functions-Footnote-1550134
-Node: Time Functions550281
-Ref: Time Functions-Footnote-1560790
-Ref: Time Functions-Footnote-2560858
-Ref: Time Functions-Footnote-3561016
-Ref: Time Functions-Footnote-4561127
-Ref: Time Functions-Footnote-5561239
-Ref: Time Functions-Footnote-6561466
-Node: Bitwise Functions561732
-Ref: table-bitwise-ops562294
-Ref: Bitwise Functions-Footnote-1566622
-Node: Type Functions566794
-Node: I18N Functions567946
-Node: User-defined569593
-Node: Definition Syntax570398
-Ref: Definition Syntax-Footnote-1576057
-Node: Function Example576128
-Ref: Function Example-Footnote-1579049
-Node: Function Caveats579071
-Node: Calling A Function579589
-Node: Variable Scope580547
-Node: Pass By Value/Reference583540
-Node: Return Statement587037
-Node: Dynamic Typing590016
-Node: Indirect Calls590945
-Ref: Indirect Calls-Footnote-1600810
-Node: Functions Summary600938
-Node: Library Functions603640
-Ref: Library Functions-Footnote-1607248
-Ref: Library Functions-Footnote-2607391
-Node: Library Names607562
-Ref: Library Names-Footnote-1611020
-Ref: Library Names-Footnote-2611243
-Node: General Functions611329
-Node: Strtonum Function612432
-Node: Assert Function615454
-Node: Round Function618778
-Node: Cliff Random Function620319
-Node: Ordinal Functions621335
-Ref: Ordinal Functions-Footnote-1624398
-Ref: Ordinal Functions-Footnote-2624650
-Node: Join Function624861
-Ref: Join Function-Footnote-1626631
-Node: Getlocaltime Function626831
-Node: Readfile Function630575
-Node: Shell Quoting632547
-Node: Data File Management633948
-Node: Filetrans Function634580
-Node: Rewind Function638676
-Node: File Checking640062
-Ref: File Checking-Footnote-1641395
-Node: Empty Files641596
-Node: Ignoring Assigns643575
-Node: Getopt Function645125
-Ref: Getopt Function-Footnote-1656589
-Node: Passwd Functions656789
-Ref: Passwd Functions-Footnote-1665629
-Node: Group Functions665717
-Ref: Group Functions-Footnote-1673614
-Node: Walking Arrays673819
-Node: Library Functions Summary676825
-Node: Library Exercises678227
-Node: Sample Programs679507
-Node: Running Examples680277
-Node: Clones681005
-Node: Cut Program682229
-Node: Egrep Program691949
-Ref: Egrep Program-Footnote-1699452
-Node: Id Program699562
-Node: Split Program703238
-Ref: Split Program-Footnote-1706692
-Node: Tee Program706820
-Node: Uniq Program709609
-Node: Wc Program717028
-Ref: Wc Program-Footnote-1721278
-Node: Miscellaneous Programs721372
-Node: Dupword Program722585
-Node: Alarm Program724616
-Node: Translate Program729421
-Ref: Translate Program-Footnote-1733984
-Node: Labels Program734254
-Ref: Labels Program-Footnote-1737605
-Node: Word Sorting737689
-Node: History Sorting741759
-Node: Extract Program743594
-Node: Simple Sed751118
-Node: Igawk Program754188
-Ref: Igawk Program-Footnote-1768514
-Ref: Igawk Program-Footnote-2768715
-Ref: Igawk Program-Footnote-3768837
-Node: Anagram Program768952
-Node: Signature Program772013
-Node: Programs Summary773260
-Node: Programs Exercises774481
-Ref: Programs Exercises-Footnote-1778612
-Node: Advanced Features778703
-Node: Nondecimal Data780685
-Node: Array Sorting782275
-Node: Controlling Array Traversal782975
-Ref: Controlling Array Traversal-Footnote-1791341
-Node: Array Sorting Functions791459
-Ref: Array Sorting Functions-Footnote-1795345
-Node: Two-way I/O795541
-Ref: Two-way I/O-Footnote-1800486
-Ref: Two-way I/O-Footnote-2800672
-Node: TCP/IP Networking800754
-Node: Profiling803626
-Node: Advanced Features Summary811897
-Node: Internationalization813830
-Node: I18N and L10N815310
-Node: Explaining gettext815996
-Ref: Explaining gettext-Footnote-1821021
-Ref: Explaining gettext-Footnote-2821205
-Node: Programmer i18n821370
-Ref: Programmer i18n-Footnote-1826246
-Node: Translator i18n826295
-Node: String Extraction827089
-Ref: String Extraction-Footnote-1828220
-Node: Printf Ordering828306
-Ref: Printf Ordering-Footnote-1831092
-Node: I18N Portability831156
-Ref: I18N Portability-Footnote-1833612
-Node: I18N Example833675
-Ref: I18N Example-Footnote-1836478
-Node: Gawk I18N836550
-Node: I18N Summary837194
-Node: Debugger838534
-Node: Debugging839556
-Node: Debugging Concepts839997
-Node: Debugging Terms841807
-Node: Awk Debugging844379
-Node: Sample Debugging Session845285
-Node: Debugger Invocation845819
-Node: Finding The Bug847204
-Node: List of Debugger Commands853683
-Node: Breakpoint Control855015
-Node: Debugger Execution Control858692
-Node: Viewing And Changing Data862051
-Node: Execution Stack865427
-Node: Debugger Info867062
-Node: Miscellaneous Debugger Commands871107
-Node: Readline Support876108
-Node: Limitations877002
-Node: Debugging Summary879117
-Node: Arbitrary Precision Arithmetic880291
-Node: Computer Arithmetic881707
-Ref: table-numeric-ranges885306
-Ref: Computer Arithmetic-Footnote-1885830
-Node: Math Definitions885887
-Ref: table-ieee-formats889182
-Ref: Math Definitions-Footnote-1889786
-Node: MPFR features889891
-Node: FP Math Caution891562
-Ref: FP Math Caution-Footnote-1892612
-Node: Inexactness of computations892981
-Node: Inexact representation893940
-Node: Comparing FP Values895298
-Node: Errors accumulate896380
-Node: Getting Accuracy897812
-Node: Try To Round900516
-Node: Setting precision901415
-Ref: table-predefined-precision-strings902099
-Node: Setting the rounding mode903928
-Ref: table-gawk-rounding-modes904292
-Ref: Setting the rounding mode-Footnote-1907744
-Node: Arbitrary Precision Integers907923
-Ref: Arbitrary Precision Integers-Footnote-1912821
-Node: POSIX Floating Point Problems912970
-Ref: POSIX Floating Point Problems-Footnote-1916849
-Node: Floating point summary916887
-Node: Dynamic Extensions919074
-Node: Extension Intro920626
-Node: Plugin License921891
-Node: Extension Mechanism Outline922688
-Ref: figure-load-extension923116
-Ref: figure-register-new-function924596
-Ref: figure-call-new-function925600
-Node: Extension API Description927587
-Node: Extension API Functions Introduction929037
-Node: General Data Types933858
-Ref: General Data Types-Footnote-1939758
-Node: Memory Allocation Functions940057
-Ref: Memory Allocation Functions-Footnote-1942896
-Node: Constructor Functions942995
-Node: Registration Functions944734
-Node: Extension Functions945419
-Node: Exit Callback Functions947716
-Node: Extension Version String948964
-Node: Input Parsers949627
-Node: Output Wrappers959502
-Node: Two-way processors964015
-Node: Printing Messages966278
-Ref: Printing Messages-Footnote-1967354
-Node: Updating `ERRNO'967506
-Node: Requesting Values968246
-Ref: table-value-types-returned968973
-Node: Accessing Parameters969930
-Node: Symbol Table Access971164
-Node: Symbol table by name971678
-Node: Symbol table by cookie973698
-Ref: Symbol table by cookie-Footnote-1977843
-Node: Cached values977906
-Ref: Cached values-Footnote-1981402
-Node: Array Manipulation981493
-Ref: Array Manipulation-Footnote-1982591
-Node: Array Data Types982628
-Ref: Array Data Types-Footnote-1985283
-Node: Array Functions985375
-Node: Flattening Arrays989234
-Node: Creating Arrays996136
-Node: Extension API Variables1000907
-Node: Extension Versioning1001543
-Node: Extension API Informational Variables1003434
-Node: Extension API Boilerplate1004499
-Node: Finding Extensions1008308
-Node: Extension Example1008868
-Node: Internal File Description1009640
-Node: Internal File Ops1013707
-Ref: Internal File Ops-Footnote-11025458
-Node: Using Internal File Ops1025598
-Ref: Using Internal File Ops-Footnote-11027981
-Node: Extension Samples1028254
-Node: Extension Sample File Functions1029782
-Node: Extension Sample Fnmatch1037463
-Node: Extension Sample Fork1038951
-Node: Extension Sample Inplace1040166
-Node: Extension Sample Ord1041842
-Node: Extension Sample Readdir1042678
-Ref: table-readdir-file-types1043555
-Node: Extension Sample Revout1044366
-Node: Extension Sample Rev2way1044955
-Node: Extension Sample Read write array1045695
-Node: Extension Sample Readfile1047635
-Node: Extension Sample Time1048730
-Node: Extension Sample API Tests1050078
-Node: gawkextlib1050569
-Node: Extension summary1053247
-Node: Extension Exercises1056936
-Node: Language History1057658
-Node: V7/SVR3.11059314
-Node: SVR41061467
-Node: POSIX1062901
-Node: BTL1064282
-Node: POSIX/GNU1065013
-Node: Feature History1070849
-Node: Common Extensions1084643
-Node: Ranges and Locales1086015
-Ref: Ranges and Locales-Footnote-11090634
-Ref: Ranges and Locales-Footnote-21090661
-Ref: Ranges and Locales-Footnote-31090896
-Node: Contributors1091117
-Node: History summary1096657
-Node: Installation1098036
-Node: Gawk Distribution1098982
-Node: Getting1099466
-Node: Extracting1100289
-Node: Distribution contents1101926
-Node: Unix Installation1108028
-Node: Quick Installation1108711
-Node: Shell Startup Files1111122
-Node: Additional Configuration Options1112201
-Node: Configuration Philosophy1114005
-Node: Non-Unix Installation1116374
-Node: PC Installation1116832
-Node: PC Binary Installation1118152
-Node: PC Compiling1120000
-Ref: PC Compiling-Footnote-11123021
-Node: PC Testing1123130
-Node: PC Using1124306
-Node: Cygwin1128421
-Node: MSYS1129191
-Node: VMS Installation1129692
-Node: VMS Compilation1130484
-Ref: VMS Compilation-Footnote-11131713
-Node: VMS Dynamic Extensions1131771
-Node: VMS Installation Details1133455
-Node: VMS Running1135706
-Node: VMS GNV1138546
-Node: VMS Old Gawk1139281
-Node: Bugs1139751
-Node: Other Versions1143640
-Node: Installation summary1150074
-Node: Notes1151133
-Node: Compatibility Mode1151998
-Node: Additions1152780
-Node: Accessing The Source1153705
-Node: Adding Code1155140
-Node: New Ports1161297
-Node: Derived Files1165779
-Ref: Derived Files-Footnote-11171254
-Ref: Derived Files-Footnote-21171288
-Ref: Derived Files-Footnote-31171884
-Node: Future Extensions1171998
-Node: Implementation Limitations1172604
-Node: Extension Design1173852
-Node: Old Extension Problems1175006
-Ref: Old Extension Problems-Footnote-11176523
-Node: Extension New Mechanism Goals1176580
-Ref: Extension New Mechanism Goals-Footnote-11179940
-Node: Extension Other Design Decisions1180129
-Node: Extension Future Growth1182237
-Node: Old Extension Mechanism1183073
-Node: Notes summary1184835
-Node: Basic Concepts1186021
-Node: Basic High Level1186702
-Ref: figure-general-flow1186974
-Ref: figure-process-flow1187573
-Ref: Basic High Level-Footnote-11190802
-Node: Basic Data Typing1190987
-Node: Glossary1194315
-Node: Copying1226244
-Node: GNU Free Documentation License1263800
-Node: Index1288936
+Node: Exit Status145414
+Node: Include Files146090
+Node: Loading Shared Libraries149679
+Node: Obsolete151106
+Node: Undocumented151798
+Node: Invoking Summary152065
+Node: Regexp153728
+Node: Regexp Usage155182
+Node: Escape Sequences157219
+Node: Regexp Operators163448
+Ref: Regexp Operators-Footnote-1170858
+Ref: Regexp Operators-Footnote-2171005
+Node: Bracket Expressions171103
+Ref: table-char-classes173118
+Node: Leftmost Longest176060
+Node: Computed Regexps177362
+Node: GNU Regexp Operators180791
+Node: Case-sensitivity184463
+Ref: Case-sensitivity-Footnote-1187348
+Ref: Case-sensitivity-Footnote-2187583
+Node: Regexp Summary187691
+Node: Reading Files189158
+Node: Records191251
+Node: awk split records191984
+Node: gawk split records196913
+Ref: gawk split records-Footnote-1201452
+Node: Fields201489
+Ref: Fields-Footnote-1204267
+Node: Nonconstant Fields204353
+Ref: Nonconstant Fields-Footnote-1206591
+Node: Changing Fields206794
+Node: Field Separators212725
+Node: Default Field Splitting215429
+Node: Regexp Field Splitting216546
+Node: Single Character Fields219896
+Node: Command Line Field Separator220955
+Node: Full Line Fields224172
+Ref: Full Line Fields-Footnote-1225693
+Ref: Full Line Fields-Footnote-2225739
+Node: Field Splitting Summary225840
+Node: Constant Size227914
+Node: Splitting By Content232497
+Ref: Splitting By Content-Footnote-1236462
+Node: Multiple Line236625
+Ref: Multiple Line-Footnote-1242506
+Node: Getline242685
+Node: Plain Getline244892
+Node: Getline/Variable247532
+Node: Getline/File248681
+Node: Getline/Variable/File250066
+Ref: Getline/Variable/File-Footnote-1251669
+Node: Getline/Pipe251756
+Node: Getline/Variable/Pipe254434
+Node: Getline/Coprocess255565
+Node: Getline/Variable/Coprocess256829
+Node: Getline Notes257568
+Node: Getline Summary260362
+Ref: table-getline-variants260774
+Node: Read Timeout261603
+Ref: Read Timeout-Footnote-1265440
+Node: Command-line directories265498
+Node: Input Summary266403
+Node: Input Exercises269788
+Node: Printing270516
+Node: Print272351
+Node: Print Examples273808
+Node: Output Separators276587
+Node: OFMT278605
+Node: Printf279960
+Node: Basic Printf280745
+Node: Control Letters282317
+Node: Format Modifiers286302
+Node: Printf Examples292308
+Node: Redirection294794
+Node: Special FD301632
+Ref: Special FD-Footnote-1304798
+Node: Special Files304872
+Node: Other Inherited Files305489
+Node: Special Network306489
+Node: Special Caveats307351
+Node: Close Files And Pipes308300
+Ref: Close Files And Pipes-Footnote-1315485
+Ref: Close Files And Pipes-Footnote-2315633
+Node: Nonfatal315783
+Node: Output Summary318108
+Node: Output Exercises319329
+Node: Expressions320009
+Node: Values321198
+Node: Constants321875
+Node: Scalar Constants322566
+Ref: Scalar Constants-Footnote-1323428
+Node: Nondecimal-numbers323678
+Node: Regexp Constants326688
+Node: Using Constant Regexps327214
+Node: Variables330377
+Node: Using Variables331034
+Node: Assignment Options332945
+Node: Conversion334820
+Node: Strings And Numbers335344
+Ref: Strings And Numbers-Footnote-1338409
+Node: Locale influences conversions338518
+Ref: table-locale-affects341264
+Node: All Operators341856
+Node: Arithmetic Ops342485
+Node: Concatenation344990
+Ref: Concatenation-Footnote-1347809
+Node: Assignment Ops347916
+Ref: table-assign-ops352895
+Node: Increment Ops354205
+Node: Truth Values and Conditions357636
+Node: Truth Values358719
+Node: Typing and Comparison359768
+Node: Variable Typing360584
+Node: Comparison Operators364251
+Ref: table-relational-ops364661
+Node: POSIX String Comparison368156
+Ref: POSIX String Comparison-Footnote-1369228
+Node: Boolean Ops369367
+Ref: Boolean Ops-Footnote-1373845
+Node: Conditional Exp373936
+Node: Function Calls375674
+Node: Precedence379554
+Node: Locales383214
+Node: Expressions Summary384846
+Node: Patterns and Actions387417
+Node: Pattern Overview388537
+Node: Regexp Patterns390216
+Node: Expression Patterns390759
+Node: Ranges394539
+Node: BEGIN/END397646
+Node: Using BEGIN/END398407
+Ref: Using BEGIN/END-Footnote-1401143
+Node: I/O And BEGIN/END401249
+Node: Empty406461
+Node: Using Shell Variables406778
+Node: Action Overview409051
+Node: Statements411377
+Node: If Statement413225
+Node: While Statement414720
+Node: Do Statement416748
+Node: For Statement417896
+Node: Switch Statement421054
+Node: Break Statement423436
+Node: Continue Statement425529
+Node: Next Statement427356
+Node: Nextfile Statement429737
+Node: Exit Statement432365
+Node: Built-in Variables434776
+Node: User-modified435909
+Ref: User-modified-Footnote-1443543
+Node: Auto-set443605
+Ref: Auto-set-Footnote-1457314
+Ref: Auto-set-Footnote-2457519
+Node: ARGC and ARGV457575
+Node: Pattern Action Summary461793
+Node: Arrays464226
+Node: Array Basics465555
+Node: Array Intro466399
+Ref: figure-array-elements468333
+Ref: Array Intro-Footnote-1470953
+Node: Reference to Elements471081
+Node: Assigning Elements473543
+Node: Array Example474034
+Node: Scanning an Array475793
+Node: Controlling Scanning478813
+Ref: Controlling Scanning-Footnote-1484207
+Node: Numeric Array Subscripts484523
+Node: Uninitialized Subscripts486708
+Node: Delete488325
+Ref: Delete-Footnote-1491074
+Node: Multidimensional491131
+Node: Multiscanning494228
+Node: Arrays of Arrays495817
+Node: Arrays Summary500571
+Node: Functions502662
+Node: Built-in503701
+Node: Calling Built-in504779
+Node: Numeric Functions506774
+Ref: Numeric Functions-Footnote-1511592
+Ref: Numeric Functions-Footnote-2511949
+Ref: Numeric Functions-Footnote-3511997
+Node: String Functions512269
+Ref: String Functions-Footnote-1535770
+Ref: String Functions-Footnote-2535899
+Ref: String Functions-Footnote-3536147
+Node: Gory Details536234
+Ref: table-sub-escapes538015
+Ref: table-sub-proposed539530
+Ref: table-posix-sub540892
+Ref: table-gensub-escapes542429
+Ref: Gory Details-Footnote-1543262
+Node: I/O Functions543413
+Ref: I/O Functions-Footnote-1550649
+Node: Time Functions550796
+Ref: Time Functions-Footnote-1561305
+Ref: Time Functions-Footnote-2561373
+Ref: Time Functions-Footnote-3561531
+Ref: Time Functions-Footnote-4561642
+Ref: Time Functions-Footnote-5561754
+Ref: Time Functions-Footnote-6561981
+Node: Bitwise Functions562247
+Ref: table-bitwise-ops562809
+Ref: Bitwise Functions-Footnote-1567137
+Node: Type Functions567309
+Node: I18N Functions568461
+Node: User-defined570108
+Node: Definition Syntax570913
+Ref: Definition Syntax-Footnote-1576572
+Node: Function Example576643
+Ref: Function Example-Footnote-1579564
+Node: Function Caveats579586
+Node: Calling A Function580104
+Node: Variable Scope581062
+Node: Pass By Value/Reference584055
+Node: Return Statement587552
+Node: Dynamic Typing590531
+Node: Indirect Calls591460
+Ref: Indirect Calls-Footnote-1601325
+Node: Functions Summary601453
+Node: Library Functions604155
+Ref: Library Functions-Footnote-1607763
+Ref: Library Functions-Footnote-2607906
+Node: Library Names608077
+Ref: Library Names-Footnote-1611535
+Ref: Library Names-Footnote-2611758
+Node: General Functions611844
+Node: Strtonum Function612947
+Node: Assert Function615969
+Node: Round Function619293
+Node: Cliff Random Function620834
+Node: Ordinal Functions621850
+Ref: Ordinal Functions-Footnote-1624913
+Ref: Ordinal Functions-Footnote-2625165
+Node: Join Function625376
+Ref: Join Function-Footnote-1627146
+Node: Getlocaltime Function627346
+Node: Readfile Function631090
+Node: Shell Quoting633062
+Node: Data File Management634463
+Node: Filetrans Function635095
+Node: Rewind Function639191
+Node: File Checking640577
+Ref: File Checking-Footnote-1641910
+Node: Empty Files642111
+Node: Ignoring Assigns644090
+Node: Getopt Function645640
+Ref: Getopt Function-Footnote-1657104
+Node: Passwd Functions657304
+Ref: Passwd Functions-Footnote-1666144
+Node: Group Functions666232
+Ref: Group Functions-Footnote-1674129
+Node: Walking Arrays674334
+Node: Library Functions Summary677340
+Node: Library Exercises678742
+Node: Sample Programs680022
+Node: Running Examples680792
+Node: Clones681520
+Node: Cut Program682744
+Node: Egrep Program692464
+Ref: Egrep Program-Footnote-1699967
+Node: Id Program700077
+Node: Split Program703753
+Ref: Split Program-Footnote-1707207
+Node: Tee Program707335
+Node: Uniq Program710124
+Node: Wc Program717543
+Ref: Wc Program-Footnote-1721793
+Node: Miscellaneous Programs721887
+Node: Dupword Program723100
+Node: Alarm Program725131
+Node: Translate Program729936
+Ref: Translate Program-Footnote-1734499
+Node: Labels Program734769
+Ref: Labels Program-Footnote-1738120
+Node: Word Sorting738204
+Node: History Sorting742274
+Node: Extract Program744109
+Node: Simple Sed751633
+Node: Igawk Program754703
+Ref: Igawk Program-Footnote-1769029
+Ref: Igawk Program-Footnote-2769230
+Ref: Igawk Program-Footnote-3769352
+Node: Anagram Program769467
+Node: Signature Program772528
+Node: Programs Summary773775
+Node: Programs Exercises774996
+Ref: Programs Exercises-Footnote-1779127
+Node: Advanced Features779218
+Node: Nondecimal Data781200
+Node: Array Sorting782790
+Node: Controlling Array Traversal783490
+Ref: Controlling Array Traversal-Footnote-1791856
+Node: Array Sorting Functions791974
+Ref: Array Sorting Functions-Footnote-1795860
+Node: Two-way I/O796056
+Ref: Two-way I/O-Footnote-1801001
+Ref: Two-way I/O-Footnote-2801187
+Node: TCP/IP Networking801269
+Node: Profiling804141
+Node: Advanced Features Summary812412
+Node: Internationalization814345
+Node: I18N and L10N815825
+Node: Explaining gettext816511
+Ref: Explaining gettext-Footnote-1821536
+Ref: Explaining gettext-Footnote-2821720
+Node: Programmer i18n821885
+Ref: Programmer i18n-Footnote-1826761
+Node: Translator i18n826810
+Node: String Extraction827604
+Ref: String Extraction-Footnote-1828735
+Node: Printf Ordering828821
+Ref: Printf Ordering-Footnote-1831607
+Node: I18N Portability831671
+Ref: I18N Portability-Footnote-1834127
+Node: I18N Example834190
+Ref: I18N Example-Footnote-1836993
+Node: Gawk I18N837065
+Node: I18N Summary837709
+Node: Debugger839049
+Node: Debugging840071
+Node: Debugging Concepts840512
+Node: Debugging Terms842322
+Node: Awk Debugging844894
+Node: Sample Debugging Session845800
+Node: Debugger Invocation846334
+Node: Finding The Bug847719
+Node: List of Debugger Commands854198
+Node: Breakpoint Control855530
+Node: Debugger Execution Control859207
+Node: Viewing And Changing Data862566
+Node: Execution Stack865942
+Node: Debugger Info867577
+Node: Miscellaneous Debugger Commands871622
+Node: Readline Support876623
+Node: Limitations877517
+Node: Debugging Summary879632
+Node: Arbitrary Precision Arithmetic880806
+Node: Computer Arithmetic882222
+Ref: table-numeric-ranges885821
+Ref: Computer Arithmetic-Footnote-1886345
+Node: Math Definitions886402
+Ref: table-ieee-formats889697
+Ref: Math Definitions-Footnote-1890301
+Node: MPFR features890406
+Node: FP Math Caution892077
+Ref: FP Math Caution-Footnote-1893127
+Node: Inexactness of computations893496
+Node: Inexact representation894455
+Node: Comparing FP Values895813
+Node: Errors accumulate896895
+Node: Getting Accuracy898327
+Node: Try To Round901031
+Node: Setting precision901930
+Ref: table-predefined-precision-strings902614
+Node: Setting the rounding mode904443
+Ref: table-gawk-rounding-modes904807
+Ref: Setting the rounding mode-Footnote-1908259
+Node: Arbitrary Precision Integers908438
+Ref: Arbitrary Precision Integers-Footnote-1913336
+Node: POSIX Floating Point Problems913485
+Ref: POSIX Floating Point Problems-Footnote-1917364
+Node: Floating point summary917402
+Node: Dynamic Extensions919589
+Node: Extension Intro921141
+Node: Plugin License922406
+Node: Extension Mechanism Outline923203
+Ref: figure-load-extension923631
+Ref: figure-register-new-function925111
+Ref: figure-call-new-function926115
+Node: Extension API Description928102
+Node: Extension API Functions Introduction929552
+Node: General Data Types934373
+Ref: General Data Types-Footnote-1940273
+Node: Memory Allocation Functions940572
+Ref: Memory Allocation Functions-Footnote-1943411
+Node: Constructor Functions943510
+Node: Registration Functions945249
+Node: Extension Functions945934
+Node: Exit Callback Functions948231
+Node: Extension Version String949479
+Node: Input Parsers950142
+Node: Output Wrappers960017
+Node: Two-way processors964530
+Node: Printing Messages966793
+Ref: Printing Messages-Footnote-1967869
+Node: Updating `ERRNO'968021
+Node: Requesting Values968761
+Ref: table-value-types-returned969488
+Node: Accessing Parameters970445
+Node: Symbol Table Access971679
+Node: Symbol table by name972193
+Node: Symbol table by cookie974213
+Ref: Symbol table by cookie-Footnote-1978358
+Node: Cached values978421
+Ref: Cached values-Footnote-1981917
+Node: Array Manipulation982008
+Ref: Array Manipulation-Footnote-1983106
+Node: Array Data Types983143
+Ref: Array Data Types-Footnote-1985798
+Node: Array Functions985890
+Node: Flattening Arrays989749
+Node: Creating Arrays996651
+Node: Extension API Variables1001422
+Node: Extension Versioning1002058
+Node: Extension API Informational Variables1003949
+Node: Extension API Boilerplate1005014
+Node: Finding Extensions1008823
+Node: Extension Example1009383
+Node: Internal File Description1010155
+Node: Internal File Ops1014222
+Ref: Internal File Ops-Footnote-11025973
+Node: Using Internal File Ops1026113
+Ref: Using Internal File Ops-Footnote-11028496
+Node: Extension Samples1028769
+Node: Extension Sample File Functions1030297
+Node: Extension Sample Fnmatch1037978
+Node: Extension Sample Fork1039466
+Node: Extension Sample Inplace1040681
+Node: Extension Sample Ord1042357
+Node: Extension Sample Readdir1043193
+Ref: table-readdir-file-types1044070
+Node: Extension Sample Revout1044881
+Node: Extension Sample Rev2way1045470
+Node: Extension Sample Read write array1046210
+Node: Extension Sample Readfile1048150
+Node: Extension Sample Time1049245
+Node: Extension Sample API Tests1050593
+Node: gawkextlib1051084
+Node: Extension summary1053762
+Node: Extension Exercises1057451
+Node: Language History1058173
+Node: V7/SVR3.11059829
+Node: SVR41061982
+Node: POSIX1063416
+Node: BTL1064797
+Node: POSIX/GNU1065528
+Node: Feature History1071364
+Node: Common Extensions1085158
+Node: Ranges and Locales1086530
+Ref: Ranges and Locales-Footnote-11091149
+Ref: Ranges and Locales-Footnote-21091176
+Ref: Ranges and Locales-Footnote-31091411
+Node: Contributors1091632
+Node: History summary1097172
+Node: Installation1098551
+Node: Gawk Distribution1099497
+Node: Getting1099981
+Node: Extracting1100804
+Node: Distribution contents1102441
+Node: Unix Installation1108543
+Node: Quick Installation1109226
+Node: Shell Startup Files1111637
+Node: Additional Configuration Options1112716
+Node: Configuration Philosophy1114520
+Node: Non-Unix Installation1116889
+Node: PC Installation1117347
+Node: PC Binary Installation1118667
+Node: PC Compiling1120515
+Ref: PC Compiling-Footnote-11123536
+Node: PC Testing1123645
+Node: PC Using1124821
+Node: Cygwin1128936
+Node: MSYS1129706
+Node: VMS Installation1130207
+Node: VMS Compilation1130999
+Ref: VMS Compilation-Footnote-11132228
+Node: VMS Dynamic Extensions1132286
+Node: VMS Installation Details1133970
+Node: VMS Running1136221
+Node: VMS GNV1139061
+Node: VMS Old Gawk1139796
+Node: Bugs1140266
+Node: Other Versions1144155
+Node: Installation summary1150589
+Node: Notes1151648
+Node: Compatibility Mode1152513
+Node: Additions1153295
+Node: Accessing The Source1154220
+Node: Adding Code1155655
+Node: New Ports1161812
+Node: Derived Files1166294
+Ref: Derived Files-Footnote-11171769
+Ref: Derived Files-Footnote-21171803
+Ref: Derived Files-Footnote-31172399
+Node: Future Extensions1172513
+Node: Implementation Limitations1173119
+Node: Extension Design1174367
+Node: Old Extension Problems1175521
+Ref: Old Extension Problems-Footnote-11177038
+Node: Extension New Mechanism Goals1177095
+Ref: Extension New Mechanism Goals-Footnote-11180455
+Node: Extension Other Design Decisions1180644
+Node: Extension Future Growth1182752
+Node: Old Extension Mechanism1183588
+Node: Notes summary1185350
+Node: Basic Concepts1186536
+Node: Basic High Level1187217
+Ref: figure-general-flow1187489
+Ref: figure-process-flow1188088
+Ref: Basic High Level-Footnote-11191317
+Node: Basic Data Typing1191502
+Node: Glossary1194830
+Node: Copying1226759
+Node: GNU Free Documentation License1264315
+Node: Index1289451
 End Tag Table
diff --git a/doc/gawk.texi b/doc/gawk.texi
index 6707711..615330d 100644
--- a/doc/gawk.texi
+++ b/doc/gawk.texi
@@ -4550,6 +4550,8 @@ wait for input before returning with an error.
 Controls the number of times @command{gawk} attempts to
 retry a two-way TCP/IP (socket) connection before giving up.
 @xref{TCP/IP Networking}.
+Note that when nonfatal I/O is enabled (@pxref{Nonfatal}),
address@hidden only tries to open a TCP/IP socket once.
 Causes @command{gawk} to switch to POSIX-compatibility
@@ -10500,6 +10502,14 @@ For standard output, you may use @code{PROCINFO["-", 
 or @code{PROCINFO["/dev/stdout", "NONFATAL"]}.  For standard error, use
 @code{PROCINFO["/dev/stderr", "NONFATAL"]}.
+When attempting to open a TCP/IP socket (@pxref{TCP/IP Networking}),
address@hidden tries multiple times. The @env{GAWK_SOCK_RETRIES}
+environment variable (@pxref{Other Environment Variables}) allows you to
+override @command{gawk}'s builtin default number of attempts.  However,
+once nonfatal I/O is enabled for a given socket, @command{gawk} only
+retries once, relying on @command{awk}-level code to notice that there
+was a problem.
 @node Output Summary
 @section Summary

commit b108a3ba2ab12dd7274589c6fe09c882df02827c
Author: Arnold D. Robbins <address@hidden>
Date:   Sun Mar 8 06:06:19 2015 +0200

    Make nonfatal override GAWK_SOCK_RETRIES. Document it.

diff --git a/ChangeLog b/ChangeLog
index 62777ab..cc15ccb 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,11 @@
+2015-03-08         Arnold D. Robbins     <address@hidden>
+       * io.c (devopen): Change the logic such that if nonfatal is true
+       for the socket, don't do retries.  Also clean up the formatting
+       some.  At strictopen, check if errno is ENOENT and if so, propagate
+       the error from getaddrinfo() up to the caller. Add explanatory
+       comments.
 2015-02-28         Andrew J. Schorr     <address@hidden>
        * io.c (pty_vs_pipe): Remove check for NULL PROCINFO_node, since
diff --git a/doc/ChangeLog b/doc/ChangeLog
index d8c42cb..b58699a 100644
--- a/doc/ChangeLog
+++ b/doc/ChangeLog
@@ -1,3 +1,9 @@
+2015-03-08         Arnold D. Robbins     <address@hidden>
+       * Briefly describe that nonfatal I/O overrides
+       GAWK_SOCK_RETRIES, in the env var part and in the nonfatal I/O
+       part.
 2015-03-01         Arnold D. Robbins     <address@hidden>
        * Change quotes to @dfn for pseudorandom.
diff --git a/doc/ b/doc/
index 1b99b5b..8612876 100644
--- a/doc/
+++ b/doc/
@@ -4461,6 +4461,8 @@ wait for input before returning with an error.
 Controls the number of times @command{gawk} attempts to
 retry a two-way TCP/IP (socket) connection before giving up.
 @xref{TCP/IP Networking}.
+Note that when nonfatal I/O is enabled (@pxref{Nonfatal}),
address@hidden only tries to open a TCP/IP socket once.
 Causes @command{gawk} to switch to POSIX-compatibility
@@ -9996,6 +9998,14 @@ For standard output, you may use @code{PROCINFO["-", 
 or @code{PROCINFO["/dev/stdout", "NONFATAL"]}.  For standard error, use
 @code{PROCINFO["/dev/stderr", "NONFATAL"]}.
+When attempting to open a TCP/IP socket (@pxref{TCP/IP Networking}),
address@hidden tries multiple times. The @env{GAWK_SOCK_RETRIES}
+environment variable (@pxref{Other Environment Variables}) allows you to
+override @command{gawk}'s builtin default number of attempts.  However,
+once nonfatal I/O is enabled for a given socket, @command{gawk} only
+retries once, relying on @command{awk}-level code to notice that there
+was a problem.
 @node Output Summary
 @section Summary
diff --git a/io.c b/io.c
index 162fb4e..55c5d3a 100644
--- a/io.c
+++ b/io.c
@@ -1661,20 +1661,20 @@ devopen(const char *name, const char *mode)
                goto strictopen;
        } else if (inetfile(name, & isi)) {
-               cp = (char *) name;
-               /* socketopen requires NUL-terminated strings */
-               cp[isi.localport.offset+isi.localport.len] = '\0';
-               cp[isi.remotehost.offset+isi.remotehost.len] = '\0';
-               /* remoteport comes last, so already NUL-terminated */
-               {
                static unsigned long def_retries = DEFAULT_RETRIES;
                static bool first_time = true;
                unsigned long retries = 0;
                static long msleep = 1000;
                bool hard_error = false;
+               bool non_fatal = is_non_fatal_redirect(name);
+               cp = (char *) name;
+               /* socketopen requires NUL-terminated strings */
+               cp[isi.localport.offset+isi.localport.len] = '\0';
+               cp[isi.remotehost.offset+isi.remotehost.len] = '\0';
+               /* remoteport comes last, so already NUL-terminated */
                if (first_time) {
                        char *cp, *end;
@@ -1701,28 +1701,39 @@ devopen(const char *name, const char *mode)
                                        msleep *= 1000;
-               retries = def_retries;
+               /*
+                * PROCINFO["NONFATAL"] or PROCINFO[name, "NONFATAL"] overrrides
+                * GAWK_SOCK_RETRIES.  The explicit code in the program carries
+                * a bigger stick than the environment variable does.
+                */
+               retries = non_fatal ? 1 : def_retries;
                errno = 0;
                do {
-                       openfd = socketopen(, isi.protocol, 
name+isi.localport.offset, name+isi.remoteport.offset, 
name+isi.remotehost.offset, & hard_error);
+                       openfd = socketopen(, isi.protocol, 
+                                       name+isi.remoteport.offset, 
+                                       & hard_error);
                } while (openfd == INVALID_HANDLE && ! hard_error && retries > 
0 && usleep(msleep) == 0);
                save_errno = errno;
-       }
-       /* restore original name string */
-       cp[isi.localport.offset+isi.localport.len] = '/';
-       cp[isi.remotehost.offset+isi.remotehost.len] = '/';
+               /* restore original name string */
+               cp[isi.localport.offset+isi.localport.len] = '/';
+               cp[isi.remotehost.offset+isi.remotehost.len] = '/';
 #else /* ! HAVE_SOCKETS */
-       fatal(_("TCP/IP communications are not supported"));
+               fatal(_("TCP/IP communications are not supported"));
 #endif /* HAVE_SOCKETS */
        if (openfd == INVALID_HANDLE) {
                openfd = open(name, flag, 0666);
-               if (openfd == INVALID_HANDLE && save_errno)
+               /*
+                * ENOENT means there is no such name in the filesystem.
+                * Therefore it's ok to propagate up the error from
+                * getaddrinfo() that's in save_errno.
+                */
+               if (openfd == INVALID_HANDLE && errno == ENOENT && save_errno)
                        errno = save_errno;
 #if defined(__EMX__) || defined(__MINGW32__)


Summary of changes:
 ChangeLog       |    8 +
 doc/ChangeLog   |    6 +
 doc/   | 1022 ++++++++++++++++++++++++++++---------------------------
 doc/gawk.texi   |   10 +
 doc/ |   10 +
 io.c            |   43 ++-
 6 files changed, 576 insertions(+), 523 deletions(-)


reply via email to

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