diff options
author | Arnold D. Robbins <arnold@skeeve.com> | 2022-02-09 07:39:36 +0200 |
---|---|---|
committer | Arnold D. Robbins <arnold@skeeve.com> | 2022-02-09 07:39:36 +0200 |
commit | 8785cde2cb5e54790cc395cab1a35b1a685ee8c0 (patch) | |
tree | 2245cdacf79ddba6cec5ddd220b1e907a85c93d4 /doc | |
parent | 18213a779d239baf5e24ba52d77ba920f314ab7e (diff) | |
parent | 0b94b68387b85310b7104bb669d7b698e92888d2 (diff) | |
download | egawk-8785cde2cb5e54790cc395cab1a35b1a685ee8c0.tar.gz egawk-8785cde2cb5e54790cc395cab1a35b1a685ee8c0.tar.bz2 egawk-8785cde2cb5e54790cc395cab1a35b1a685ee8c0.zip |
Merge branch 'gawk-5.1-stable'
Diffstat (limited to 'doc')
-rw-r--r-- | doc/ChangeLog | 9 | ||||
-rw-r--r-- | doc/gawk.info | 666 | ||||
-rw-r--r-- | doc/gawk.texi | 28 | ||||
-rw-r--r-- | doc/gawktexi.in | 28 |
4 files changed, 396 insertions, 335 deletions
diff --git a/doc/ChangeLog b/doc/ChangeLog index 95515c3b..04bec844 100644 --- a/doc/ChangeLog +++ b/doc/ChangeLog @@ -1,6 +1,13 @@ +2022-02-07 Arnold D. Robbins <arnold@skeeve.com> + + * gawktexi.in (Indirect Calls): Expand discussion of calling + built-in functions directly. + (POSIX Floating Point Problems): Add a note that the sign of + NaN values can vary. + 2022-01-05 Arnold D. Robbins <arnold@skeeve.com> - * gawktexi.ini (Indirect Calls): Use `the_function' everywhere. + * gawktexi.in (Indirect Calls): Use `the_function' everywhere. Thanks to John Naman, <gawker@703n.com> for the report. 2021-12-10 Arnold D. Robbins <arnold@skeeve.com> diff --git a/doc/gawk.info b/doc/gawk.info index e11d3b06..0be3deca 100644 --- a/doc/gawk.info +++ b/doc/gawk.info @@ -15577,14 +15577,27 @@ Dynamic Extensions::). There are some limitations when calling built-in functions indirectly, as follows. * You cannot pass a regular expression constant to a built-in - function through an indirect function call.(1) This applies to the + function through an indirect function call. This applies to the 'sub()', 'gsub()', 'gensub()', 'match()', 'split()' and - 'patsplit()' functions. + 'patsplit()' functions. However, you can pass a strongly typed + regexp constant (*note Strong Regexp Constants::). * If calling 'sub()' or 'gsub()', you may only pass two arguments, since those functions are unusual in that they update their third argument. This means that '$0' will be updated. + * You cannot indirectly call built-in functions that can take '$0' as + a default parameter; you must supply an argument instead. For + example, you must pass an argument to 'length()' if calling it + indirectly. + + * Calling a built-in function indirectly with the wrong number of + arguments for that function causes a fatal error. For example, + calling 'length()' with two arguments. These errors are found at + runtime instead of when 'gawk' parses your program, since 'gawk' + doesn't know until runtime if you have passed the correct number of + arguments or not. + 'gawk' does its best to make indirect function calls efficient. For example, in the following case: @@ -15593,11 +15606,6 @@ example, in the following case: 'gawk' looks up the actual function to call only once. - ---------- Footnotes ---------- - - (1) This may change in a future version; recheck the documentation -that comes with your version of 'gawk' to see if it has. - File: gawk.info, Node: Functions Summary, Prev: Indirect Calls, Up: Functions @@ -25278,6 +25286,13 @@ described: '+inf', '-inf', '+nan', or '-nan'. Similarly, in POSIX mode, 'gawk' prints the result of the system's C 'printf()' function using the '%g' format string for the value, whatever that may be. + NOTE: The sign used for NaN values can vary! The result depends + upon both the underlying system architecture and the underlying + library used to format NaN values. In particular, it's possible to + get different results for the same function call depending upon + whether or not 'gawk' is running in MPFR mode ('-M') or not. + Caveat Emptor! + ---------- Footnotes ---------- (1) You asked for it, you got it. @@ -39013,325 +39028,324 @@ Ref: Function Caveats-Footnote-1637557 Node: Return Statement637677 Node: Dynamic Typing640656 Node: Indirect Calls641586 -Ref: Indirect Calls-Footnote-1651853 -Node: Functions Summary651981 -Node: Library Functions654686 -Ref: Library Functions-Footnote-1658293 -Ref: Library Functions-Footnote-2658436 -Node: Library Names658607 -Ref: Library Names-Footnote-1662274 -Ref: Library Names-Footnote-2662497 -Node: General Functions662583 -Node: Strtonum Function663765 -Node: Assert Function666787 -Node: Round Function670113 -Node: Cliff Random Function671653 -Node: Ordinal Functions672669 -Ref: Ordinal Functions-Footnote-1675732 -Ref: Ordinal Functions-Footnote-2675984 -Node: Join Function676194 -Ref: Join Function-Footnote-1677964 -Node: Getlocaltime Function678164 -Node: Readfile Function681906 -Node: Shell Quoting683883 -Node: Isnumeric Function685311 -Node: Data File Management686699 -Node: Filetrans Function687331 -Node: Rewind Function691427 -Node: File Checking693336 -Ref: File Checking-Footnote-1694670 -Node: Empty Files694871 -Node: Ignoring Assigns696850 -Node: Getopt Function698400 -Ref: Getopt Function-Footnote-1713697 -Node: Passwd Functions713897 -Ref: Passwd Functions-Footnote-1722736 -Node: Group Functions722824 -Ref: Group Functions-Footnote-1730722 -Node: Walking Arrays730929 -Node: Library Functions Summary733937 -Node: Library Exercises735343 -Node: Sample Programs735808 -Node: Running Examples736578 -Node: Clones737306 -Node: Cut Program738530 -Node: Egrep Program748670 -Node: Id Program757671 -Node: Split Program767606 -Ref: Split Program-Footnote-1777499 -Node: Tee Program777672 -Node: Uniq Program780462 -Node: Wc Program788050 -Node: Bytes vs. Characters788437 -Node: Using extensions789985 -Node: wc program790739 -Node: Miscellaneous Programs795604 -Node: Dupword Program796817 -Node: Alarm Program798847 -Node: Translate Program803702 -Ref: Translate Program-Footnote-1808267 -Node: Labels Program808537 -Ref: Labels Program-Footnote-1811888 -Node: Word Sorting811972 -Node: History Sorting816044 -Node: Extract Program818269 -Node: Simple Sed826282 -Node: Igawk Program829356 -Ref: Igawk Program-Footnote-1843687 -Ref: Igawk Program-Footnote-2843889 -Ref: Igawk Program-Footnote-3844011 -Node: Anagram Program844126 -Node: Signature Program847188 -Node: Programs Summary848435 -Node: Programs Exercises849649 -Ref: Programs Exercises-Footnote-1853779 -Node: Advanced Features853865 -Node: Nondecimal Data855996 -Node: Boolean Typed Values857594 -Node: Array Sorting859475 -Node: Controlling Array Traversal860180 -Ref: Controlling Array Traversal-Footnote-1868548 -Node: Array Sorting Functions868666 -Ref: Array Sorting Functions-Footnote-1874040 -Node: Two-way I/O874236 -Ref: Two-way I/O-Footnote-1881962 -Ref: Two-way I/O-Footnote-2882149 -Node: TCP/IP Networking882231 -Node: Profiling885307 -Node: Extension Philosophy894616 -Node: Advanced Features Summary896095 -Node: Internationalization898110 -Node: I18N and L10N899784 -Node: Explaining gettext900471 -Ref: Explaining gettext-Footnote-1906363 -Ref: Explaining gettext-Footnote-2906548 -Node: Programmer i18n906713 -Ref: Programmer i18n-Footnote-1911662 -Node: Translator i18n911711 -Node: String Extraction912505 -Ref: String Extraction-Footnote-1913637 -Node: Printf Ordering913723 -Ref: Printf Ordering-Footnote-1916509 -Node: I18N Portability916573 -Ref: I18N Portability-Footnote-1919029 -Node: I18N Example919092 -Ref: I18N Example-Footnote-1922367 -Ref: I18N Example-Footnote-2922440 -Node: Gawk I18N922549 -Node: I18N Summary923171 -Node: Debugger924512 -Node: Debugging925512 -Node: Debugging Concepts925953 -Node: Debugging Terms927762 -Node: Awk Debugging930337 -Ref: Awk Debugging-Footnote-1931282 -Node: Sample Debugging Session931414 -Node: Debugger Invocation931948 -Node: Finding The Bug933334 -Node: List of Debugger Commands939808 -Node: Breakpoint Control941141 -Node: Debugger Execution Control944835 -Node: Viewing And Changing Data948197 -Node: Execution Stack951738 -Node: Debugger Info953375 -Node: Miscellaneous Debugger Commands957446 -Node: Readline Support962508 -Node: Limitations963404 -Node: Debugging Summary965958 -Node: Namespaces967237 -Node: Global Namespace968348 -Node: Qualified Names969746 -Node: Default Namespace970745 -Node: Changing The Namespace971486 -Node: Naming Rules973100 -Node: Internal Name Management974948 -Node: Namespace Example975990 -Node: Namespace And Features978552 -Node: Namespace Summary979987 -Node: Arbitrary Precision Arithmetic981464 -Node: Computer Arithmetic982951 -Ref: table-numeric-ranges986717 -Ref: table-floating-point-ranges987211 -Ref: Computer Arithmetic-Footnote-1987870 -Node: Math Definitions987927 -Ref: table-ieee-formats990903 -Node: MPFR features991471 -Node: FP Math Caution993189 -Ref: FP Math Caution-Footnote-1994261 -Node: Inexactness of computations994630 -Node: Inexact representation995661 -Node: Comparing FP Values997021 -Node: Errors accumulate998262 -Node: Strange values999718 -Ref: Strange values-Footnote-11002306 -Node: Getting Accuracy1002411 -Node: Try To Round1005121 -Node: Setting precision1006020 -Ref: table-predefined-precision-strings1006717 -Node: Setting the rounding mode1008548 -Ref: table-gawk-rounding-modes1008922 -Ref: Setting the rounding mode-Footnote-11012854 -Node: Arbitrary Precision Integers1013033 -Ref: Arbitrary Precision Integers-Footnote-11016208 -Node: Checking for MPFR1016357 -Node: POSIX Floating Point Problems1017831 -Ref: POSIX Floating Point Problems-Footnote-11022116 -Node: Floating point summary1022154 -Node: Dynamic Extensions1024344 -Node: Extension Intro1025897 -Node: Plugin License1027163 -Node: Extension Mechanism Outline1027960 -Ref: figure-load-extension1028399 -Ref: figure-register-new-function1029965 -Ref: figure-call-new-function1031058 -Node: Extension API Description1033121 -Node: Extension API Functions Introduction1034834 -Ref: table-api-std-headers1036670 -Node: General Data Types1040920 -Ref: General Data Types-Footnote-11049626 -Node: Memory Allocation Functions1049925 -Ref: Memory Allocation Functions-Footnote-11054426 -Node: Constructor Functions1054525 -Node: API Ownership of MPFR and GMP Values1058178 -Node: Registration Functions1059491 -Node: Extension Functions1060191 -Node: Exit Callback Functions1065513 -Node: Extension Version String1066763 -Node: Input Parsers1067426 -Node: Output Wrappers1080147 -Node: Two-way processors1084659 -Node: Printing Messages1086924 -Ref: Printing Messages-Footnote-11088095 -Node: Updating ERRNO1088248 -Node: Requesting Values1088987 -Ref: table-value-types-returned1089724 -Node: Accessing Parameters1090833 -Node: Symbol Table Access1092070 -Node: Symbol table by name1092582 -Ref: Symbol table by name-Footnote-11095607 -Node: Symbol table by cookie1095735 -Ref: Symbol table by cookie-Footnote-11099920 -Node: Cached values1099984 -Ref: Cached values-Footnote-11103520 -Node: Array Manipulation1103673 -Ref: Array Manipulation-Footnote-11104764 -Node: Array Data Types1104801 -Ref: Array Data Types-Footnote-11107459 -Node: Array Functions1107551 -Node: Flattening Arrays1112049 -Node: Creating Arrays1119025 -Node: Redirection API1123792 -Node: Extension API Variables1126625 -Node: Extension Versioning1127336 -Ref: gawk-api-version1127765 -Node: Extension GMP/MPFR Versioning1129497 -Node: Extension API Informational Variables1131125 -Node: Extension API Boilerplate1132198 -Node: Changes from API V11136172 -Node: Finding Extensions1137744 -Node: Extension Example1138303 -Node: Internal File Description1139101 -Node: Internal File Ops1143181 -Ref: Internal File Ops-Footnote-11154531 -Node: Using Internal File Ops1154671 -Ref: Using Internal File Ops-Footnote-11157054 -Node: Extension Samples1157328 -Node: Extension Sample File Functions1158857 -Node: Extension Sample Fnmatch1166506 -Node: Extension Sample Fork1167993 -Node: Extension Sample Inplace1169211 -Node: Extension Sample Ord1172837 -Node: Extension Sample Readdir1173673 -Ref: table-readdir-file-types1174562 -Node: Extension Sample Revout1175630 -Node: Extension Sample Rev2way1176219 -Node: Extension Sample Read write array1176959 -Node: Extension Sample Readfile1178901 -Node: Extension Sample Time1179996 -Node: Extension Sample API Tests1181748 -Node: gawkextlib1182240 -Node: Extension summary1185158 -Node: Extension Exercises1188860 -Node: Language History1190102 -Node: V7/SVR3.11191758 -Node: SVR41193910 -Node: POSIX1195344 -Node: BTL1196725 -Node: POSIX/GNU1197454 -Node: Feature History1203232 -Node: Common Extensions1220407 -Node: Ranges and Locales1221690 -Ref: Ranges and Locales-Footnote-11226306 -Ref: Ranges and Locales-Footnote-21226333 -Ref: Ranges and Locales-Footnote-31226568 -Node: Contributors1226791 -Node: History summary1232788 -Node: Installation1234168 -Node: Gawk Distribution1235112 -Node: Getting1235596 -Node: Extracting1236559 -Node: Distribution contents1238197 -Node: Unix Installation1245258 -Node: Quick Installation1246062 -Node: Compiling with MPFR1248482 -Node: Shell Startup Files1249172 -Node: Additional Configuration Options1250261 -Node: Configuration Philosophy1252576 -Node: Compiling from Git1254972 -Node: Building the Documentation1255527 -Node: Non-Unix Installation1256911 -Node: PC Installation1257371 -Node: PC Binary Installation1258209 -Node: PC Compiling1259082 -Node: PC Using1260199 -Node: Cygwin1263752 -Node: MSYS1264976 -Node: VMS Installation1265578 -Node: VMS Compilation1266297 -Ref: VMS Compilation-Footnote-11267526 -Node: VMS Dynamic Extensions1267584 -Node: VMS Installation Details1269269 -Node: VMS Running1271531 -Node: VMS GNV1275810 -Node: Bugs1276524 -Node: Bug definition1277436 -Node: Bug address1280372 -Node: Usenet1283760 -Node: Performance bugs1284949 -Node: Asking for help1287870 -Node: Maintainers1289837 -Node: Other Versions1291031 -Node: Installation summary1299195 -Node: Notes1300559 -Node: Compatibility Mode1301353 -Node: Additions1302135 -Node: Accessing The Source1303060 -Node: Adding Code1304497 -Node: New Ports1310689 -Node: Derived Files1315064 -Ref: Derived Files-Footnote-11320724 -Ref: Derived Files-Footnote-21320759 -Ref: Derived Files-Footnote-31321357 -Node: Future Extensions1321471 -Node: Implementation Limitations1322129 -Node: Extension Design1323339 -Node: Old Extension Problems1324483 -Ref: Old Extension Problems-Footnote-11326001 -Node: Extension New Mechanism Goals1326058 -Ref: Extension New Mechanism Goals-Footnote-11329422 -Node: Extension Other Design Decisions1329611 -Node: Extension Future Growth1331724 -Node: Notes summary1332330 -Node: Basic Concepts1333488 -Node: Basic High Level1334169 -Ref: figure-general-flow1334451 -Ref: figure-process-flow1335137 -Ref: Basic High Level-Footnote-11338439 -Node: Basic Data Typing1338624 -Node: Glossary1341952 -Node: Copying1373839 -Node: GNU Free Documentation License1411382 -Node: Index1436502 +Node: Functions Summary652513 +Node: Library Functions655218 +Ref: Library Functions-Footnote-1658825 +Ref: Library Functions-Footnote-2658968 +Node: Library Names659139 +Ref: Library Names-Footnote-1662806 +Ref: Library Names-Footnote-2663029 +Node: General Functions663115 +Node: Strtonum Function664297 +Node: Assert Function667319 +Node: Round Function670645 +Node: Cliff Random Function672185 +Node: Ordinal Functions673201 +Ref: Ordinal Functions-Footnote-1676264 +Ref: Ordinal Functions-Footnote-2676516 +Node: Join Function676726 +Ref: Join Function-Footnote-1678496 +Node: Getlocaltime Function678696 +Node: Readfile Function682438 +Node: Shell Quoting684415 +Node: Isnumeric Function685843 +Node: Data File Management687231 +Node: Filetrans Function687863 +Node: Rewind Function691959 +Node: File Checking693868 +Ref: File Checking-Footnote-1695202 +Node: Empty Files695403 +Node: Ignoring Assigns697382 +Node: Getopt Function698932 +Ref: Getopt Function-Footnote-1714229 +Node: Passwd Functions714429 +Ref: Passwd Functions-Footnote-1723268 +Node: Group Functions723356 +Ref: Group Functions-Footnote-1731254 +Node: Walking Arrays731461 +Node: Library Functions Summary734469 +Node: Library Exercises735875 +Node: Sample Programs736340 +Node: Running Examples737110 +Node: Clones737838 +Node: Cut Program739062 +Node: Egrep Program749202 +Node: Id Program758203 +Node: Split Program768138 +Ref: Split Program-Footnote-1778031 +Node: Tee Program778204 +Node: Uniq Program780994 +Node: Wc Program788582 +Node: Bytes vs. Characters788969 +Node: Using extensions790517 +Node: wc program791271 +Node: Miscellaneous Programs796136 +Node: Dupword Program797349 +Node: Alarm Program799379 +Node: Translate Program804234 +Ref: Translate Program-Footnote-1808799 +Node: Labels Program809069 +Ref: Labels Program-Footnote-1812420 +Node: Word Sorting812504 +Node: History Sorting816576 +Node: Extract Program818801 +Node: Simple Sed826814 +Node: Igawk Program829888 +Ref: Igawk Program-Footnote-1844219 +Ref: Igawk Program-Footnote-2844421 +Ref: Igawk Program-Footnote-3844543 +Node: Anagram Program844658 +Node: Signature Program847720 +Node: Programs Summary848967 +Node: Programs Exercises850181 +Ref: Programs Exercises-Footnote-1854311 +Node: Advanced Features854397 +Node: Nondecimal Data856528 +Node: Boolean Typed Values858126 +Node: Array Sorting860007 +Node: Controlling Array Traversal860712 +Ref: Controlling Array Traversal-Footnote-1869080 +Node: Array Sorting Functions869198 +Ref: Array Sorting Functions-Footnote-1874572 +Node: Two-way I/O874768 +Ref: Two-way I/O-Footnote-1882494 +Ref: Two-way I/O-Footnote-2882681 +Node: TCP/IP Networking882763 +Node: Profiling885839 +Node: Extension Philosophy895148 +Node: Advanced Features Summary896627 +Node: Internationalization898642 +Node: I18N and L10N900316 +Node: Explaining gettext901003 +Ref: Explaining gettext-Footnote-1906895 +Ref: Explaining gettext-Footnote-2907080 +Node: Programmer i18n907245 +Ref: Programmer i18n-Footnote-1912194 +Node: Translator i18n912243 +Node: String Extraction913037 +Ref: String Extraction-Footnote-1914169 +Node: Printf Ordering914255 +Ref: Printf Ordering-Footnote-1917041 +Node: I18N Portability917105 +Ref: I18N Portability-Footnote-1919561 +Node: I18N Example919624 +Ref: I18N Example-Footnote-1922899 +Ref: I18N Example-Footnote-2922972 +Node: Gawk I18N923081 +Node: I18N Summary923703 +Node: Debugger925044 +Node: Debugging926044 +Node: Debugging Concepts926485 +Node: Debugging Terms928294 +Node: Awk Debugging930869 +Ref: Awk Debugging-Footnote-1931814 +Node: Sample Debugging Session931946 +Node: Debugger Invocation932480 +Node: Finding The Bug933866 +Node: List of Debugger Commands940340 +Node: Breakpoint Control941673 +Node: Debugger Execution Control945367 +Node: Viewing And Changing Data948729 +Node: Execution Stack952270 +Node: Debugger Info953907 +Node: Miscellaneous Debugger Commands957978 +Node: Readline Support963040 +Node: Limitations963936 +Node: Debugging Summary966490 +Node: Namespaces967769 +Node: Global Namespace968880 +Node: Qualified Names970278 +Node: Default Namespace971277 +Node: Changing The Namespace972018 +Node: Naming Rules973632 +Node: Internal Name Management975480 +Node: Namespace Example976522 +Node: Namespace And Features979084 +Node: Namespace Summary980519 +Node: Arbitrary Precision Arithmetic981996 +Node: Computer Arithmetic983483 +Ref: table-numeric-ranges987249 +Ref: table-floating-point-ranges987743 +Ref: Computer Arithmetic-Footnote-1988402 +Node: Math Definitions988459 +Ref: table-ieee-formats991435 +Node: MPFR features992003 +Node: FP Math Caution993721 +Ref: FP Math Caution-Footnote-1994793 +Node: Inexactness of computations995162 +Node: Inexact representation996193 +Node: Comparing FP Values997553 +Node: Errors accumulate998794 +Node: Strange values1000250 +Ref: Strange values-Footnote-11002838 +Node: Getting Accuracy1002943 +Node: Try To Round1005653 +Node: Setting precision1006552 +Ref: table-predefined-precision-strings1007249 +Node: Setting the rounding mode1009080 +Ref: table-gawk-rounding-modes1009454 +Ref: Setting the rounding mode-Footnote-11013386 +Node: Arbitrary Precision Integers1013565 +Ref: Arbitrary Precision Integers-Footnote-11016740 +Node: Checking for MPFR1016889 +Node: POSIX Floating Point Problems1018363 +Ref: POSIX Floating Point Problems-Footnote-11023016 +Node: Floating point summary1023054 +Node: Dynamic Extensions1025244 +Node: Extension Intro1026797 +Node: Plugin License1028063 +Node: Extension Mechanism Outline1028860 +Ref: figure-load-extension1029299 +Ref: figure-register-new-function1030865 +Ref: figure-call-new-function1031958 +Node: Extension API Description1034021 +Node: Extension API Functions Introduction1035734 +Ref: table-api-std-headers1037570 +Node: General Data Types1041820 +Ref: General Data Types-Footnote-11050526 +Node: Memory Allocation Functions1050825 +Ref: Memory Allocation Functions-Footnote-11055326 +Node: Constructor Functions1055425 +Node: API Ownership of MPFR and GMP Values1059078 +Node: Registration Functions1060391 +Node: Extension Functions1061091 +Node: Exit Callback Functions1066413 +Node: Extension Version String1067663 +Node: Input Parsers1068326 +Node: Output Wrappers1081047 +Node: Two-way processors1085559 +Node: Printing Messages1087824 +Ref: Printing Messages-Footnote-11088995 +Node: Updating ERRNO1089148 +Node: Requesting Values1089887 +Ref: table-value-types-returned1090624 +Node: Accessing Parameters1091733 +Node: Symbol Table Access1092970 +Node: Symbol table by name1093482 +Ref: Symbol table by name-Footnote-11096507 +Node: Symbol table by cookie1096635 +Ref: Symbol table by cookie-Footnote-11100820 +Node: Cached values1100884 +Ref: Cached values-Footnote-11104420 +Node: Array Manipulation1104573 +Ref: Array Manipulation-Footnote-11105664 +Node: Array Data Types1105701 +Ref: Array Data Types-Footnote-11108359 +Node: Array Functions1108451 +Node: Flattening Arrays1112949 +Node: Creating Arrays1119925 +Node: Redirection API1124692 +Node: Extension API Variables1127525 +Node: Extension Versioning1128236 +Ref: gawk-api-version1128665 +Node: Extension GMP/MPFR Versioning1130397 +Node: Extension API Informational Variables1132025 +Node: Extension API Boilerplate1133098 +Node: Changes from API V11137072 +Node: Finding Extensions1138644 +Node: Extension Example1139203 +Node: Internal File Description1140001 +Node: Internal File Ops1144081 +Ref: Internal File Ops-Footnote-11155431 +Node: Using Internal File Ops1155571 +Ref: Using Internal File Ops-Footnote-11157954 +Node: Extension Samples1158228 +Node: Extension Sample File Functions1159757 +Node: Extension Sample Fnmatch1167406 +Node: Extension Sample Fork1168893 +Node: Extension Sample Inplace1170111 +Node: Extension Sample Ord1173737 +Node: Extension Sample Readdir1174573 +Ref: table-readdir-file-types1175462 +Node: Extension Sample Revout1176530 +Node: Extension Sample Rev2way1177119 +Node: Extension Sample Read write array1177859 +Node: Extension Sample Readfile1179801 +Node: Extension Sample Time1180896 +Node: Extension Sample API Tests1182648 +Node: gawkextlib1183140 +Node: Extension summary1186058 +Node: Extension Exercises1189760 +Node: Language History1191002 +Node: V7/SVR3.11192658 +Node: SVR41194810 +Node: POSIX1196244 +Node: BTL1197625 +Node: POSIX/GNU1198354 +Node: Feature History1204132 +Node: Common Extensions1221307 +Node: Ranges and Locales1222590 +Ref: Ranges and Locales-Footnote-11227206 +Ref: Ranges and Locales-Footnote-21227233 +Ref: Ranges and Locales-Footnote-31227468 +Node: Contributors1227691 +Node: History summary1233688 +Node: Installation1235068 +Node: Gawk Distribution1236012 +Node: Getting1236496 +Node: Extracting1237459 +Node: Distribution contents1239097 +Node: Unix Installation1246158 +Node: Quick Installation1246962 +Node: Compiling with MPFR1249382 +Node: Shell Startup Files1250072 +Node: Additional Configuration Options1251161 +Node: Configuration Philosophy1253476 +Node: Compiling from Git1255872 +Node: Building the Documentation1256427 +Node: Non-Unix Installation1257811 +Node: PC Installation1258271 +Node: PC Binary Installation1259109 +Node: PC Compiling1259982 +Node: PC Using1261099 +Node: Cygwin1264652 +Node: MSYS1265876 +Node: VMS Installation1266478 +Node: VMS Compilation1267197 +Ref: VMS Compilation-Footnote-11268426 +Node: VMS Dynamic Extensions1268484 +Node: VMS Installation Details1270169 +Node: VMS Running1272431 +Node: VMS GNV1276710 +Node: Bugs1277424 +Node: Bug definition1278336 +Node: Bug address1281272 +Node: Usenet1284660 +Node: Performance bugs1285849 +Node: Asking for help1288770 +Node: Maintainers1290737 +Node: Other Versions1291931 +Node: Installation summary1300095 +Node: Notes1301459 +Node: Compatibility Mode1302253 +Node: Additions1303035 +Node: Accessing The Source1303960 +Node: Adding Code1305397 +Node: New Ports1311589 +Node: Derived Files1315964 +Ref: Derived Files-Footnote-11321624 +Ref: Derived Files-Footnote-21321659 +Ref: Derived Files-Footnote-31322257 +Node: Future Extensions1322371 +Node: Implementation Limitations1323029 +Node: Extension Design1324239 +Node: Old Extension Problems1325383 +Ref: Old Extension Problems-Footnote-11326901 +Node: Extension New Mechanism Goals1326958 +Ref: Extension New Mechanism Goals-Footnote-11330322 +Node: Extension Other Design Decisions1330511 +Node: Extension Future Growth1332624 +Node: Notes summary1333230 +Node: Basic Concepts1334388 +Node: Basic High Level1335069 +Ref: figure-general-flow1335351 +Ref: figure-process-flow1336037 +Ref: Basic High Level-Footnote-11339339 +Node: Basic Data Typing1339524 +Node: Glossary1342852 +Node: Copying1374739 +Node: GNU Free Documentation License1412282 +Node: Index1437402 End Tag Table diff --git a/doc/gawk.texi b/doc/gawk.texi index 730208a6..bfd1a00b 100644 --- a/doc/gawk.texi +++ b/doc/gawk.texi @@ -22281,16 +22281,28 @@ built-in functions indirectly, as follows. @itemize @value{BULLET} @item You cannot pass a regular expression constant to a built-in function -through an indirect function call.@footnote{This may change in a future -version; recheck the documentation that comes with your version of -@command{gawk} to see if it has.} This applies to the @code{sub()}, +through an indirect function call. This applies to the @code{sub()}, @code{gsub()}, @code{gensub()}, @code{match()}, @code{split()} and -@code{patsplit()} functions. +@code{patsplit()} functions. However, you can pass a strongly typed +regexp constant (@pxref{Strong Regexp Constants}). @item If calling @code{sub()} or @code{gsub()}, you may only pass two arguments, since those functions are unusual in that they update their third argument. This means that @code{$0} will be updated. + +@item +You cannot indirectly call built-in functions that can take @code{$0} as +a default parameter; you must supply an argument instead. For example, +you must pass an argument to @code{length()} if calling it indirectly. + +@item +Calling a built-in function indirectly with the wrong number of arguments +for that function causes a fatal error. For example, calling +@code{length()} with two arguments. These errors are found at runtime +instead of when @command{gawk} parses your program, since @command{gawk} +doesn't know until runtime if you have passed the correct number of +arguments or not. @end itemize @command{gawk} does its best to make indirect function calls efficient. @@ -35284,6 +35296,14 @@ Similarly, in POSIX mode, @command{gawk} prints the result of the system's C @code{printf()} function using the @code{%g} format string for the value, whatever that may be. +@quotation NOTE +The sign used for NaN values can vary! The result depends upon both +the underlying system architecture and the underlying library used to +format NaN values. In particular, it's possible to get different results +for the same function call depending upon whether or not @command{gawk} +is running in MPFR mode (@option{-M}) or not. Caveat Emptor! +@end quotation + @node Floating point summary @section Summary diff --git a/doc/gawktexi.in b/doc/gawktexi.in index 2a9321bc..66de1068 100644 --- a/doc/gawktexi.in +++ b/doc/gawktexi.in @@ -21193,16 +21193,28 @@ built-in functions indirectly, as follows. @itemize @value{BULLET} @item You cannot pass a regular expression constant to a built-in function -through an indirect function call.@footnote{This may change in a future -version; recheck the documentation that comes with your version of -@command{gawk} to see if it has.} This applies to the @code{sub()}, +through an indirect function call. This applies to the @code{sub()}, @code{gsub()}, @code{gensub()}, @code{match()}, @code{split()} and -@code{patsplit()} functions. +@code{patsplit()} functions. However, you can pass a strongly typed +regexp constant (@pxref{Strong Regexp Constants}). @item If calling @code{sub()} or @code{gsub()}, you may only pass two arguments, since those functions are unusual in that they update their third argument. This means that @code{$0} will be updated. + +@item +You cannot indirectly call built-in functions that can take @code{$0} as +a default parameter; you must supply an argument instead. For example, +you must pass an argument to @code{length()} if calling it indirectly. + +@item +Calling a built-in function indirectly with the wrong number of arguments +for that function causes a fatal error. For example, calling +@code{length()} with two arguments. These errors are found at runtime +instead of when @command{gawk} parses your program, since @command{gawk} +doesn't know until runtime if you have passed the correct number of +arguments or not. @end itemize @command{gawk} does its best to make indirect function calls efficient. @@ -34127,6 +34139,14 @@ Similarly, in POSIX mode, @command{gawk} prints the result of the system's C @code{printf()} function using the @code{%g} format string for the value, whatever that may be. +@quotation NOTE +The sign used for NaN values can vary! The result depends upon both +the underlying system architecture and the underlying library used to +format NaN values. In particular, it's possible to get different results +for the same function call depending upon whether or not @command{gawk} +is running in MPFR mode (@option{-M}) or not. Caveat Emptor! +@end quotation + @node Floating point summary @section Summary |