diff options
-rw-r--r-- | ChangeLog | 6 | ||||
-rw-r--r-- | POSIX.STD | 2 | ||||
-rw-r--r-- | awkgram.c | 7 | ||||
-rw-r--r-- | awkgram.y | 7 | ||||
-rw-r--r-- | doc/ChangeLog | 5 | ||||
-rw-r--r-- | doc/gawk.info | 1096 | ||||
-rw-r--r-- | doc/gawk.texi | 2 | ||||
-rw-r--r-- | doc/gawktexi.in | 2 | ||||
-rw-r--r-- | doc/texinfo.tex | 150 | ||||
-rw-r--r-- | test/ChangeLog | 5 | ||||
-rw-r--r-- | test/Makefile.am | 4 | ||||
-rw-r--r-- | test/Makefile.in | 9 | ||||
-rw-r--r-- | test/Maketests | 5 | ||||
-rw-r--r-- | test/crlf.awk | 11 | ||||
-rw-r--r-- | test/crlf.ok | 3 |
15 files changed, 735 insertions, 579 deletions
@@ -1,3 +1,9 @@ +2015-02-24 Arnold D. Robbins <arnold@skeeve.com> + + * POSIX.STD: Update copyright year. + * awkgram.y (yylex): Allow \r after \\ line continuation everywhere. + Thanks to Scott Rush <scott.rush@honeywell.com> for the report. + 2015-02-13 Arnold D. Robbins <arnold@skeeve.com> * awkgram.y (yylex): Be more careful about passing true to @@ -1,4 +1,4 @@ - Copyright (C) 1992, 1995, 1998, 2001, 2006, 2007, 2010, 2011 + Copyright (C) 1992, 1995, 1998, 2001, 2006, 2007, 2010, 2011, 2015 Free Software Foundation, Inc. Copying and distribution of this file, with or without modification, @@ -5598,7 +5598,10 @@ yylex(void) pushback(); yyerror(_("unterminated regexp ends with `\\' at end of file")); goto end_regexp; /* kludge */ - } else if (c == '\n') { + } + if (c == '\r') /* allow MS-DOS files. bleah */ + c = nextc(true); + if (c == '\n') { sourceline++; continue; } else { @@ -5947,6 +5950,8 @@ retry: if ((gawk_mb_cur_max == 1 || nextc_is_1stbyte) && c == '\\') { c = nextc(true); + if (c == '\r') /* allow MS-DOS files. bleah */ + c = nextc(true); if (c == '\n') { sourceline++; continue; @@ -3260,7 +3260,10 @@ yylex(void) pushback(); yyerror(_("unterminated regexp ends with `\\' at end of file")); goto end_regexp; /* kludge */ - } else if (c == '\n') { + } + if (c == '\r') /* allow MS-DOS files. bleah */ + c = nextc(true); + if (c == '\n') { sourceline++; continue; } else { @@ -3609,6 +3612,8 @@ retry: if ((gawk_mb_cur_max == 1 || nextc_is_1stbyte) && c == '\\') { c = nextc(true); + if (c == '\r') /* allow MS-DOS files. bleah */ + c = nextc(true); if (c == '\n') { sourceline++; continue; diff --git a/doc/ChangeLog b/doc/ChangeLog index e99cc828..d423944f 100644 --- a/doc/ChangeLog +++ b/doc/ChangeLog @@ -1,3 +1,8 @@ +2015-02-24 Arnold D. Robbins <arnold@skeeve.com> + + * texinfo.tex: Update to most current version. + * gawktexi.in: Minor edit to match an O'Reilly fix. + 2015-02-22 Arnold D. Robbins <arnold@skeeve.com> * gawktexi.in: Change 'div' to 'divisor' in some examples. diff --git a/doc/gawk.info b/doc/gawk.info index 4a40ea6d..6cddc1ba 100644 --- a/doc/gawk.info +++ b/doc/gawk.info @@ -954,7 +954,7 @@ provided in *note Language History::. The language described in this Info file is often referred to as "new `awk'." By analogy, the original version of `awk' is referred to as "old `awk'." - Today, on most systems, when you run the `awk' utility you get some + On most current systems, when you run the `awk' utility you get some version of new `awk'.(1) If your system's standard `awk' is the old one, you will see something like this if you try the test program: @@ -34675,552 +34675,552 @@ Ref: Preface-Footnote-251178 Ref: Preface-Footnote-351411 Node: History51553 Node: Names53904 -Ref: Names-Footnote-154997 -Node: This Manual55143 -Ref: This Manual-Footnote-161643 -Node: Conventions61743 -Node: Manual History64080 -Ref: Manual History-Footnote-167073 -Ref: Manual History-Footnote-267114 -Node: How To Contribute67188 -Node: Acknowledgments68317 -Node: Getting Started73183 -Node: Running gawk75622 -Node: One-shot76812 -Node: Read Terminal78076 -Node: Long80107 -Node: Executable Scripts81620 -Ref: Executable Scripts-Footnote-184409 -Node: Comments84512 -Node: Quoting86994 -Node: DOS Quoting92512 -Node: Sample Data Files93187 -Node: Very Simple95782 -Node: Two Rules100681 -Node: More Complex102567 -Node: Statements/Lines105429 -Ref: Statements/Lines-Footnote-1109884 -Node: Other Features110149 -Node: When111085 -Ref: When-Footnote-1112839 -Node: Intro Summary112904 -Node: Invoking Gawk113788 -Node: Command Line115302 -Node: Options116100 -Ref: Options-Footnote-1131895 -Ref: Options-Footnote-2132124 -Node: Other Arguments132149 -Node: Naming Standard Input135097 -Node: Environment Variables136190 -Node: AWKPATH Variable136748 -Ref: AWKPATH Variable-Footnote-1140155 -Ref: AWKPATH Variable-Footnote-2140200 -Node: AWKLIBPATH Variable140460 -Node: Other Environment Variables141716 -Node: Exit Status145234 -Node: Include Files145910 -Node: Loading Shared Libraries149499 -Node: Obsolete150926 -Node: Undocumented151618 -Node: Invoking Summary151885 -Node: Regexp153548 -Node: Regexp Usage155002 -Node: Escape Sequences157039 -Node: Regexp Operators163268 -Ref: Regexp Operators-Footnote-1170678 -Ref: Regexp Operators-Footnote-2170825 -Node: Bracket Expressions170923 -Ref: table-char-classes172938 -Node: Leftmost Longest175880 -Node: Computed Regexps177182 -Node: GNU Regexp Operators180611 -Node: Case-sensitivity184283 -Ref: Case-sensitivity-Footnote-1187168 -Ref: Case-sensitivity-Footnote-2187403 -Node: Regexp Summary187511 -Node: Reading Files188978 -Node: Records191071 -Node: awk split records191804 -Node: gawk split records196733 -Ref: gawk split records-Footnote-1201272 -Node: Fields201309 -Ref: Fields-Footnote-1204087 -Node: Nonconstant Fields204173 -Ref: Nonconstant Fields-Footnote-1206411 -Node: Changing Fields206614 -Node: Field Separators212545 -Node: Default Field Splitting215249 -Node: Regexp Field Splitting216366 -Node: Single Character Fields219716 -Node: Command Line Field Separator220775 -Node: Full Line Fields223992 -Ref: Full Line Fields-Footnote-1225513 -Ref: Full Line Fields-Footnote-2225559 -Node: Field Splitting Summary225660 -Node: Constant Size227734 -Node: Splitting By Content232317 -Ref: Splitting By Content-Footnote-1236282 -Node: Multiple Line236445 -Ref: Multiple Line-Footnote-1242326 -Node: Getline242505 -Node: Plain Getline244712 -Node: Getline/Variable247352 -Node: Getline/File248501 -Node: Getline/Variable/File249886 -Ref: Getline/Variable/File-Footnote-1251489 -Node: Getline/Pipe251576 -Node: Getline/Variable/Pipe254254 -Node: Getline/Coprocess255385 -Node: Getline/Variable/Coprocess256649 -Node: Getline Notes257388 -Node: Getline Summary260182 -Ref: table-getline-variants260594 -Node: Read Timeout261423 -Ref: Read Timeout-Footnote-1265260 -Node: Command-line directories265318 -Node: Input Summary266223 -Node: Input Exercises269608 -Node: Printing270336 -Node: Print272113 -Node: Print Examples273570 -Node: Output Separators276349 -Node: OFMT278367 -Node: Printf279722 -Node: Basic Printf280507 -Node: Control Letters282079 -Node: Format Modifiers286064 -Node: Printf Examples292070 -Node: Redirection294556 -Node: Special FD301394 -Ref: Special FD-Footnote-1304560 -Node: Special Files304634 -Node: Other Inherited Files305251 -Node: Special Network306251 -Node: Special Caveats307113 -Node: Close Files And Pipes308062 -Ref: Close Files And Pipes-Footnote-1315253 -Ref: Close Files And Pipes-Footnote-2315401 -Node: Output Summary315551 -Node: Output Exercises316549 -Node: Expressions317229 -Node: Values318418 -Node: Constants319095 -Node: Scalar Constants319786 -Ref: Scalar Constants-Footnote-1320648 -Node: Nondecimal-numbers320898 -Node: Regexp Constants323908 -Node: Using Constant Regexps324434 -Node: Variables327597 -Node: Using Variables328254 -Node: Assignment Options330165 -Node: Conversion332040 -Node: Strings And Numbers332564 -Ref: Strings And Numbers-Footnote-1335629 -Node: Locale influences conversions335738 -Ref: table-locale-affects338484 -Node: All Operators339076 -Node: Arithmetic Ops339705 -Node: Concatenation342210 -Ref: Concatenation-Footnote-1345029 -Node: Assignment Ops345136 -Ref: table-assign-ops350115 -Node: Increment Ops351425 -Node: Truth Values and Conditions354856 -Node: Truth Values355939 -Node: Typing and Comparison356988 -Node: Variable Typing357804 -Node: Comparison Operators361471 -Ref: table-relational-ops361881 -Node: POSIX String Comparison365376 -Ref: POSIX String Comparison-Footnote-1366448 -Node: Boolean Ops366587 -Ref: Boolean Ops-Footnote-1371065 -Node: Conditional Exp371156 -Node: Function Calls372894 -Node: Precedence376774 -Node: Locales380434 -Node: Expressions Summary382066 -Node: Patterns and Actions384637 -Node: Pattern Overview385757 -Node: Regexp Patterns387436 -Node: Expression Patterns387979 -Node: Ranges391759 -Node: BEGIN/END394866 -Node: Using BEGIN/END395627 -Ref: Using BEGIN/END-Footnote-1398363 -Node: I/O And BEGIN/END398469 -Node: BEGINFILE/ENDFILE400784 -Node: Empty403681 -Node: Using Shell Variables403998 -Node: Action Overview406271 -Node: Statements408597 -Node: If Statement410445 -Node: While Statement411940 -Node: Do Statement413968 -Node: For Statement415116 -Node: Switch Statement418274 -Node: Break Statement420656 -Node: Continue Statement422749 -Node: Next Statement424576 -Node: Nextfile Statement426957 -Node: Exit Statement429585 -Node: Built-in Variables431996 -Node: User-modified433129 -Ref: User-modified-Footnote-1440763 -Node: Auto-set440825 -Ref: Auto-set-Footnote-1454534 -Ref: Auto-set-Footnote-2454739 -Node: ARGC and ARGV454795 -Node: Pattern Action Summary459013 -Node: Arrays461446 -Node: Array Basics462775 -Node: Array Intro463619 -Ref: figure-array-elements465553 -Ref: Array Intro-Footnote-1468173 -Node: Reference to Elements468301 -Node: Assigning Elements470763 -Node: Array Example471254 -Node: Scanning an Array473013 -Node: Controlling Scanning476033 -Ref: Controlling Scanning-Footnote-1481427 -Node: Numeric Array Subscripts481743 -Node: Uninitialized Subscripts483928 -Node: Delete485545 -Ref: Delete-Footnote-1488294 -Node: Multidimensional488351 -Node: Multiscanning491448 -Node: Arrays of Arrays493037 -Node: Arrays Summary497791 -Node: Functions499882 -Node: Built-in500921 -Node: Calling Built-in501999 -Node: Numeric Functions503994 -Ref: Numeric Functions-Footnote-1508812 -Ref: Numeric Functions-Footnote-2509169 -Ref: Numeric Functions-Footnote-3509217 -Node: String Functions509489 -Ref: String Functions-Footnote-1532990 -Ref: String Functions-Footnote-2533119 -Ref: String Functions-Footnote-3533367 -Node: Gory Details533454 -Ref: table-sub-escapes535235 -Ref: table-sub-proposed536750 -Ref: table-posix-sub538112 -Ref: table-gensub-escapes539649 -Ref: Gory Details-Footnote-1540482 -Node: I/O Functions540633 -Ref: I/O Functions-Footnote-1547869 -Node: Time Functions548016 -Ref: Time Functions-Footnote-1558525 -Ref: Time Functions-Footnote-2558593 -Ref: Time Functions-Footnote-3558751 -Ref: Time Functions-Footnote-4558862 -Ref: Time Functions-Footnote-5558974 -Ref: Time Functions-Footnote-6559201 -Node: Bitwise Functions559467 -Ref: table-bitwise-ops560029 -Ref: Bitwise Functions-Footnote-1564357 -Node: Type Functions564529 -Node: I18N Functions565681 -Node: User-defined567328 -Node: Definition Syntax568133 -Ref: Definition Syntax-Footnote-1573792 -Node: Function Example573863 -Ref: Function Example-Footnote-1576784 -Node: Function Caveats576806 -Node: Calling A Function577324 -Node: Variable Scope578282 -Node: Pass By Value/Reference581275 -Node: Return Statement584772 -Node: Dynamic Typing587751 -Node: Indirect Calls588680 -Ref: Indirect Calls-Footnote-1598545 -Node: Functions Summary598673 -Node: Library Functions601375 -Ref: Library Functions-Footnote-1604983 -Ref: Library Functions-Footnote-2605126 -Node: Library Names605297 -Ref: Library Names-Footnote-1608755 -Ref: Library Names-Footnote-2608978 -Node: General Functions609064 -Node: Strtonum Function610167 -Node: Assert Function613189 -Node: Round Function616513 -Node: Cliff Random Function618054 -Node: Ordinal Functions619070 -Ref: Ordinal Functions-Footnote-1622133 -Ref: Ordinal Functions-Footnote-2622385 -Node: Join Function622596 -Ref: Join Function-Footnote-1624366 -Node: Getlocaltime Function624566 -Node: Readfile Function628310 -Node: Shell Quoting630282 -Node: Data File Management631683 -Node: Filetrans Function632315 -Node: Rewind Function636411 -Node: File Checking637797 -Ref: File Checking-Footnote-1639130 -Node: Empty Files639331 -Node: Ignoring Assigns641310 -Node: Getopt Function642860 -Ref: Getopt Function-Footnote-1654324 -Node: Passwd Functions654524 -Ref: Passwd Functions-Footnote-1663364 -Node: Group Functions663452 -Ref: Group Functions-Footnote-1671349 -Node: Walking Arrays671554 -Node: Library Functions Summary674560 -Node: Library Exercises675962 -Node: Sample Programs677242 -Node: Running Examples678012 -Node: Clones678740 -Node: Cut Program679964 -Node: Egrep Program689684 -Ref: Egrep Program-Footnote-1697187 -Node: Id Program697297 -Node: Split Program700973 -Ref: Split Program-Footnote-1704427 -Node: Tee Program704555 -Node: Uniq Program707344 -Node: Wc Program714763 -Ref: Wc Program-Footnote-1719013 -Node: Miscellaneous Programs719107 -Node: Dupword Program720320 -Node: Alarm Program722351 -Node: Translate Program727156 -Ref: Translate Program-Footnote-1731719 -Node: Labels Program731989 -Ref: Labels Program-Footnote-1735340 -Node: Word Sorting735424 -Node: History Sorting739494 -Node: Extract Program741329 -Node: Simple Sed748853 -Node: Igawk Program751923 -Ref: Igawk Program-Footnote-1766249 -Ref: Igawk Program-Footnote-2766450 -Ref: Igawk Program-Footnote-3766572 -Node: Anagram Program766687 -Node: Signature Program769748 -Node: Programs Summary770995 -Node: Programs Exercises772216 -Ref: Programs Exercises-Footnote-1776347 -Node: Advanced Features776438 -Node: Nondecimal Data778420 -Node: Array Sorting780010 -Node: Controlling Array Traversal780710 -Ref: Controlling Array Traversal-Footnote-1789076 -Node: Array Sorting Functions789194 -Ref: Array Sorting Functions-Footnote-1793080 -Node: Two-way I/O793276 -Ref: Two-way I/O-Footnote-1798221 -Ref: Two-way I/O-Footnote-2798407 -Node: TCP/IP Networking798489 -Node: Profiling801361 -Node: Advanced Features Summary809632 -Node: Internationalization811565 -Node: I18N and L10N813045 -Node: Explaining gettext813731 -Ref: Explaining gettext-Footnote-1818756 -Ref: Explaining gettext-Footnote-2818940 -Node: Programmer i18n819105 -Ref: Programmer i18n-Footnote-1823981 -Node: Translator i18n824030 -Node: String Extraction824824 -Ref: String Extraction-Footnote-1825955 -Node: Printf Ordering826041 -Ref: Printf Ordering-Footnote-1828827 -Node: I18N Portability828891 -Ref: I18N Portability-Footnote-1831347 -Node: I18N Example831410 -Ref: I18N Example-Footnote-1834213 -Node: Gawk I18N834285 -Node: I18N Summary834929 -Node: Debugger836269 -Node: Debugging837291 -Node: Debugging Concepts837732 -Node: Debugging Terms839542 -Node: Awk Debugging842114 -Node: Sample Debugging Session843020 -Node: Debugger Invocation843554 -Node: Finding The Bug844939 -Node: List of Debugger Commands851418 -Node: Breakpoint Control852750 -Node: Debugger Execution Control856427 -Node: Viewing And Changing Data859786 -Node: Execution Stack863162 -Node: Debugger Info864797 -Node: Miscellaneous Debugger Commands868842 -Node: Readline Support873843 -Node: Limitations874737 -Node: Debugging Summary876852 -Node: Arbitrary Precision Arithmetic878026 -Node: Computer Arithmetic879442 -Ref: table-numeric-ranges883041 -Ref: Computer Arithmetic-Footnote-1883565 -Node: Math Definitions883622 -Ref: table-ieee-formats886917 -Ref: Math Definitions-Footnote-1887521 -Node: MPFR features887626 -Node: FP Math Caution889297 -Ref: FP Math Caution-Footnote-1890347 -Node: Inexactness of computations890716 -Node: Inexact representation891675 -Node: Comparing FP Values893033 -Node: Errors accumulate894115 -Node: Getting Accuracy895547 -Node: Try To Round898251 -Node: Setting precision899150 -Ref: table-predefined-precision-strings899834 -Node: Setting the rounding mode901663 -Ref: table-gawk-rounding-modes902027 -Ref: Setting the rounding mode-Footnote-1905479 -Node: Arbitrary Precision Integers905658 -Ref: Arbitrary Precision Integers-Footnote-1910556 -Node: POSIX Floating Point Problems910705 -Ref: POSIX Floating Point Problems-Footnote-1914584 -Node: Floating point summary914622 -Node: Dynamic Extensions916809 -Node: Extension Intro918361 -Node: Plugin License919626 -Node: Extension Mechanism Outline920423 -Ref: figure-load-extension920851 -Ref: figure-register-new-function922331 -Ref: figure-call-new-function923335 -Node: Extension API Description925322 -Node: Extension API Functions Introduction926772 -Node: General Data Types931593 -Ref: General Data Types-Footnote-1937493 -Node: Memory Allocation Functions937792 -Ref: Memory Allocation Functions-Footnote-1940631 -Node: Constructor Functions940730 -Node: Registration Functions942469 -Node: Extension Functions943154 -Node: Exit Callback Functions945451 -Node: Extension Version String946699 -Node: Input Parsers947362 -Node: Output Wrappers957237 -Node: Two-way processors961750 -Node: Printing Messages964013 -Ref: Printing Messages-Footnote-1965089 -Node: Updating `ERRNO'965241 -Node: Requesting Values965981 -Ref: table-value-types-returned966708 -Node: Accessing Parameters967665 -Node: Symbol Table Access968899 -Node: Symbol table by name969413 -Node: Symbol table by cookie971433 -Ref: Symbol table by cookie-Footnote-1975578 -Node: Cached values975641 -Ref: Cached values-Footnote-1979137 -Node: Array Manipulation979228 -Ref: Array Manipulation-Footnote-1980326 -Node: Array Data Types980363 -Ref: Array Data Types-Footnote-1983018 -Node: Array Functions983110 -Node: Flattening Arrays986969 -Node: Creating Arrays993871 -Node: Extension API Variables998642 -Node: Extension Versioning999278 -Node: Extension API Informational Variables1001169 -Node: Extension API Boilerplate1002234 -Node: Finding Extensions1006043 -Node: Extension Example1006603 -Node: Internal File Description1007375 -Node: Internal File Ops1011442 -Ref: Internal File Ops-Footnote-11023193 -Node: Using Internal File Ops1023333 -Ref: Using Internal File Ops-Footnote-11025716 -Node: Extension Samples1025989 -Node: Extension Sample File Functions1027517 -Node: Extension Sample Fnmatch1035198 -Node: Extension Sample Fork1036686 -Node: Extension Sample Inplace1037901 -Node: Extension Sample Ord1039577 -Node: Extension Sample Readdir1040413 -Ref: table-readdir-file-types1041290 -Node: Extension Sample Revout1042101 -Node: Extension Sample Rev2way1042690 -Node: Extension Sample Read write array1043430 -Node: Extension Sample Readfile1045370 -Node: Extension Sample Time1046465 -Node: Extension Sample API Tests1047813 -Node: gawkextlib1048304 -Node: Extension summary1050982 -Node: Extension Exercises1054671 -Node: Language History1055393 -Node: V7/SVR3.11057049 -Node: SVR41059202 -Node: POSIX1060636 -Node: BTL1062017 -Node: POSIX/GNU1062748 -Node: Feature History1068493 -Node: Common Extensions1082219 -Node: Ranges and Locales1083591 -Ref: Ranges and Locales-Footnote-11088210 -Ref: Ranges and Locales-Footnote-21088237 -Ref: Ranges and Locales-Footnote-31088472 -Node: Contributors1088693 -Node: History summary1094233 -Node: Installation1095612 -Node: Gawk Distribution1096558 -Node: Getting1097042 -Node: Extracting1097865 -Node: Distribution contents1099502 -Node: Unix Installation1105604 -Node: Quick Installation1106287 -Node: Shell Startup Files1108698 -Node: Additional Configuration Options1109777 -Node: Configuration Philosophy1111581 -Node: Non-Unix Installation1113950 -Node: PC Installation1114408 -Node: PC Binary Installation1115728 -Node: PC Compiling1117576 -Ref: PC Compiling-Footnote-11120597 -Node: PC Testing1120706 -Node: PC Using1121882 -Node: Cygwin1125997 -Node: MSYS1126767 -Node: VMS Installation1127268 -Node: VMS Compilation1128060 -Ref: VMS Compilation-Footnote-11129289 -Node: VMS Dynamic Extensions1129347 -Node: VMS Installation Details1131031 -Node: VMS Running1133282 -Node: VMS GNV1136122 -Node: VMS Old Gawk1136857 -Node: Bugs1137327 -Node: Other Versions1141216 -Node: Installation summary1147650 -Node: Notes1148709 -Node: Compatibility Mode1149574 -Node: Additions1150356 -Node: Accessing The Source1151281 -Node: Adding Code1152716 -Node: New Ports1158873 -Node: Derived Files1163355 -Ref: Derived Files-Footnote-11168830 -Ref: Derived Files-Footnote-21168864 -Ref: Derived Files-Footnote-31169460 -Node: Future Extensions1169574 -Node: Implementation Limitations1170180 -Node: Extension Design1171428 -Node: Old Extension Problems1172582 -Ref: Old Extension Problems-Footnote-11174099 -Node: Extension New Mechanism Goals1174156 -Ref: Extension New Mechanism Goals-Footnote-11177516 -Node: Extension Other Design Decisions1177705 -Node: Extension Future Growth1179813 -Node: Old Extension Mechanism1180649 -Node: Notes summary1182411 -Node: Basic Concepts1183597 -Node: Basic High Level1184278 -Ref: figure-general-flow1184550 -Ref: figure-process-flow1185149 -Ref: Basic High Level-Footnote-11188378 -Node: Basic Data Typing1188563 -Node: Glossary1191891 -Node: Copying1223820 -Node: GNU Free Documentation License1261376 -Node: Index1286512 +Ref: Names-Footnote-154998 +Node: This Manual55144 +Ref: This Manual-Footnote-161644 +Node: Conventions61744 +Node: Manual History64081 +Ref: Manual History-Footnote-167074 +Ref: Manual History-Footnote-267115 +Node: How To Contribute67189 +Node: Acknowledgments68318 +Node: Getting Started73184 +Node: Running gawk75623 +Node: One-shot76813 +Node: Read Terminal78077 +Node: Long80108 +Node: Executable Scripts81621 +Ref: Executable Scripts-Footnote-184410 +Node: Comments84513 +Node: Quoting86995 +Node: DOS Quoting92513 +Node: Sample Data Files93188 +Node: Very Simple95783 +Node: Two Rules100682 +Node: More Complex102568 +Node: Statements/Lines105430 +Ref: Statements/Lines-Footnote-1109885 +Node: Other Features110150 +Node: When111086 +Ref: When-Footnote-1112840 +Node: Intro Summary112905 +Node: Invoking Gawk113789 +Node: Command Line115303 +Node: Options116101 +Ref: Options-Footnote-1131896 +Ref: Options-Footnote-2132125 +Node: Other Arguments132150 +Node: Naming Standard Input135098 +Node: Environment Variables136191 +Node: AWKPATH Variable136749 +Ref: AWKPATH Variable-Footnote-1140156 +Ref: AWKPATH Variable-Footnote-2140201 +Node: AWKLIBPATH Variable140461 +Node: Other Environment Variables141717 +Node: Exit Status145235 +Node: Include Files145911 +Node: Loading Shared Libraries149500 +Node: Obsolete150927 +Node: Undocumented151619 +Node: Invoking Summary151886 +Node: Regexp153549 +Node: Regexp Usage155003 +Node: Escape Sequences157040 +Node: Regexp Operators163269 +Ref: Regexp Operators-Footnote-1170679 +Ref: Regexp Operators-Footnote-2170826 +Node: Bracket Expressions170924 +Ref: table-char-classes172939 +Node: Leftmost Longest175881 +Node: Computed Regexps177183 +Node: GNU Regexp Operators180612 +Node: Case-sensitivity184284 +Ref: Case-sensitivity-Footnote-1187169 +Ref: Case-sensitivity-Footnote-2187404 +Node: Regexp Summary187512 +Node: Reading Files188979 +Node: Records191072 +Node: awk split records191805 +Node: gawk split records196734 +Ref: gawk split records-Footnote-1201273 +Node: Fields201310 +Ref: Fields-Footnote-1204088 +Node: Nonconstant Fields204174 +Ref: Nonconstant Fields-Footnote-1206412 +Node: Changing Fields206615 +Node: Field Separators212546 +Node: Default Field Splitting215250 +Node: Regexp Field Splitting216367 +Node: Single Character Fields219717 +Node: Command Line Field Separator220776 +Node: Full Line Fields223993 +Ref: Full Line Fields-Footnote-1225514 +Ref: Full Line Fields-Footnote-2225560 +Node: Field Splitting Summary225661 +Node: Constant Size227735 +Node: Splitting By Content232318 +Ref: Splitting By Content-Footnote-1236283 +Node: Multiple Line236446 +Ref: Multiple Line-Footnote-1242327 +Node: Getline242506 +Node: Plain Getline244713 +Node: Getline/Variable247353 +Node: Getline/File248502 +Node: Getline/Variable/File249887 +Ref: Getline/Variable/File-Footnote-1251490 +Node: Getline/Pipe251577 +Node: Getline/Variable/Pipe254255 +Node: Getline/Coprocess255386 +Node: Getline/Variable/Coprocess256650 +Node: Getline Notes257389 +Node: Getline Summary260183 +Ref: table-getline-variants260595 +Node: Read Timeout261424 +Ref: Read Timeout-Footnote-1265261 +Node: Command-line directories265319 +Node: Input Summary266224 +Node: Input Exercises269609 +Node: Printing270337 +Node: Print272114 +Node: Print Examples273571 +Node: Output Separators276350 +Node: OFMT278368 +Node: Printf279723 +Node: Basic Printf280508 +Node: Control Letters282080 +Node: Format Modifiers286065 +Node: Printf Examples292071 +Node: Redirection294557 +Node: Special FD301395 +Ref: Special FD-Footnote-1304561 +Node: Special Files304635 +Node: Other Inherited Files305252 +Node: Special Network306252 +Node: Special Caveats307114 +Node: Close Files And Pipes308063 +Ref: Close Files And Pipes-Footnote-1315254 +Ref: Close Files And Pipes-Footnote-2315402 +Node: Output Summary315552 +Node: Output Exercises316550 +Node: Expressions317230 +Node: Values318419 +Node: Constants319096 +Node: Scalar Constants319787 +Ref: Scalar Constants-Footnote-1320649 +Node: Nondecimal-numbers320899 +Node: Regexp Constants323909 +Node: Using Constant Regexps324435 +Node: Variables327598 +Node: Using Variables328255 +Node: Assignment Options330166 +Node: Conversion332041 +Node: Strings And Numbers332565 +Ref: Strings And Numbers-Footnote-1335630 +Node: Locale influences conversions335739 +Ref: table-locale-affects338485 +Node: All Operators339077 +Node: Arithmetic Ops339706 +Node: Concatenation342211 +Ref: Concatenation-Footnote-1345030 +Node: Assignment Ops345137 +Ref: table-assign-ops350116 +Node: Increment Ops351426 +Node: Truth Values and Conditions354857 +Node: Truth Values355940 +Node: Typing and Comparison356989 +Node: Variable Typing357805 +Node: Comparison Operators361472 +Ref: table-relational-ops361882 +Node: POSIX String Comparison365377 +Ref: POSIX String Comparison-Footnote-1366449 +Node: Boolean Ops366588 +Ref: Boolean Ops-Footnote-1371066 +Node: Conditional Exp371157 +Node: Function Calls372895 +Node: Precedence376775 +Node: Locales380435 +Node: Expressions Summary382067 +Node: Patterns and Actions384638 +Node: Pattern Overview385758 +Node: Regexp Patterns387437 +Node: Expression Patterns387980 +Node: Ranges391760 +Node: BEGIN/END394867 +Node: Using BEGIN/END395628 +Ref: Using BEGIN/END-Footnote-1398364 +Node: I/O And BEGIN/END398470 +Node: BEGINFILE/ENDFILE400785 +Node: Empty403682 +Node: Using Shell Variables403999 +Node: Action Overview406272 +Node: Statements408598 +Node: If Statement410446 +Node: While Statement411941 +Node: Do Statement413969 +Node: For Statement415117 +Node: Switch Statement418275 +Node: Break Statement420657 +Node: Continue Statement422750 +Node: Next Statement424577 +Node: Nextfile Statement426958 +Node: Exit Statement429586 +Node: Built-in Variables431997 +Node: User-modified433130 +Ref: User-modified-Footnote-1440764 +Node: Auto-set440826 +Ref: Auto-set-Footnote-1454535 +Ref: Auto-set-Footnote-2454740 +Node: ARGC and ARGV454796 +Node: Pattern Action Summary459014 +Node: Arrays461447 +Node: Array Basics462776 +Node: Array Intro463620 +Ref: figure-array-elements465554 +Ref: Array Intro-Footnote-1468174 +Node: Reference to Elements468302 +Node: Assigning Elements470764 +Node: Array Example471255 +Node: Scanning an Array473014 +Node: Controlling Scanning476034 +Ref: Controlling Scanning-Footnote-1481428 +Node: Numeric Array Subscripts481744 +Node: Uninitialized Subscripts483929 +Node: Delete485546 +Ref: Delete-Footnote-1488295 +Node: Multidimensional488352 +Node: Multiscanning491449 +Node: Arrays of Arrays493038 +Node: Arrays Summary497792 +Node: Functions499883 +Node: Built-in500922 +Node: Calling Built-in502000 +Node: Numeric Functions503995 +Ref: Numeric Functions-Footnote-1508813 +Ref: Numeric Functions-Footnote-2509170 +Ref: Numeric Functions-Footnote-3509218 +Node: String Functions509490 +Ref: String Functions-Footnote-1532991 +Ref: String Functions-Footnote-2533120 +Ref: String Functions-Footnote-3533368 +Node: Gory Details533455 +Ref: table-sub-escapes535236 +Ref: table-sub-proposed536751 +Ref: table-posix-sub538113 +Ref: table-gensub-escapes539650 +Ref: Gory Details-Footnote-1540483 +Node: I/O Functions540634 +Ref: I/O Functions-Footnote-1547870 +Node: Time Functions548017 +Ref: Time Functions-Footnote-1558526 +Ref: Time Functions-Footnote-2558594 +Ref: Time Functions-Footnote-3558752 +Ref: Time Functions-Footnote-4558863 +Ref: Time Functions-Footnote-5558975 +Ref: Time Functions-Footnote-6559202 +Node: Bitwise Functions559468 +Ref: table-bitwise-ops560030 +Ref: Bitwise Functions-Footnote-1564358 +Node: Type Functions564530 +Node: I18N Functions565682 +Node: User-defined567329 +Node: Definition Syntax568134 +Ref: Definition Syntax-Footnote-1573793 +Node: Function Example573864 +Ref: Function Example-Footnote-1576785 +Node: Function Caveats576807 +Node: Calling A Function577325 +Node: Variable Scope578283 +Node: Pass By Value/Reference581276 +Node: Return Statement584773 +Node: Dynamic Typing587752 +Node: Indirect Calls588681 +Ref: Indirect Calls-Footnote-1598546 +Node: Functions Summary598674 +Node: Library Functions601376 +Ref: Library Functions-Footnote-1604984 +Ref: Library Functions-Footnote-2605127 +Node: Library Names605298 +Ref: Library Names-Footnote-1608756 +Ref: Library Names-Footnote-2608979 +Node: General Functions609065 +Node: Strtonum Function610168 +Node: Assert Function613190 +Node: Round Function616514 +Node: Cliff Random Function618055 +Node: Ordinal Functions619071 +Ref: Ordinal Functions-Footnote-1622134 +Ref: Ordinal Functions-Footnote-2622386 +Node: Join Function622597 +Ref: Join Function-Footnote-1624367 +Node: Getlocaltime Function624567 +Node: Readfile Function628311 +Node: Shell Quoting630283 +Node: Data File Management631684 +Node: Filetrans Function632316 +Node: Rewind Function636412 +Node: File Checking637798 +Ref: File Checking-Footnote-1639131 +Node: Empty Files639332 +Node: Ignoring Assigns641311 +Node: Getopt Function642861 +Ref: Getopt Function-Footnote-1654325 +Node: Passwd Functions654525 +Ref: Passwd Functions-Footnote-1663365 +Node: Group Functions663453 +Ref: Group Functions-Footnote-1671350 +Node: Walking Arrays671555 +Node: Library Functions Summary674561 +Node: Library Exercises675963 +Node: Sample Programs677243 +Node: Running Examples678013 +Node: Clones678741 +Node: Cut Program679965 +Node: Egrep Program689685 +Ref: Egrep Program-Footnote-1697188 +Node: Id Program697298 +Node: Split Program700974 +Ref: Split Program-Footnote-1704428 +Node: Tee Program704556 +Node: Uniq Program707345 +Node: Wc Program714764 +Ref: Wc Program-Footnote-1719014 +Node: Miscellaneous Programs719108 +Node: Dupword Program720321 +Node: Alarm Program722352 +Node: Translate Program727157 +Ref: Translate Program-Footnote-1731720 +Node: Labels Program731990 +Ref: Labels Program-Footnote-1735341 +Node: Word Sorting735425 +Node: History Sorting739495 +Node: Extract Program741330 +Node: Simple Sed748854 +Node: Igawk Program751924 +Ref: Igawk Program-Footnote-1766250 +Ref: Igawk Program-Footnote-2766451 +Ref: Igawk Program-Footnote-3766573 +Node: Anagram Program766688 +Node: Signature Program769749 +Node: Programs Summary770996 +Node: Programs Exercises772217 +Ref: Programs Exercises-Footnote-1776348 +Node: Advanced Features776439 +Node: Nondecimal Data778421 +Node: Array Sorting780011 +Node: Controlling Array Traversal780711 +Ref: Controlling Array Traversal-Footnote-1789077 +Node: Array Sorting Functions789195 +Ref: Array Sorting Functions-Footnote-1793081 +Node: Two-way I/O793277 +Ref: Two-way I/O-Footnote-1798222 +Ref: Two-way I/O-Footnote-2798408 +Node: TCP/IP Networking798490 +Node: Profiling801362 +Node: Advanced Features Summary809633 +Node: Internationalization811566 +Node: I18N and L10N813046 +Node: Explaining gettext813732 +Ref: Explaining gettext-Footnote-1818757 +Ref: Explaining gettext-Footnote-2818941 +Node: Programmer i18n819106 +Ref: Programmer i18n-Footnote-1823982 +Node: Translator i18n824031 +Node: String Extraction824825 +Ref: String Extraction-Footnote-1825956 +Node: Printf Ordering826042 +Ref: Printf Ordering-Footnote-1828828 +Node: I18N Portability828892 +Ref: I18N Portability-Footnote-1831348 +Node: I18N Example831411 +Ref: I18N Example-Footnote-1834214 +Node: Gawk I18N834286 +Node: I18N Summary834930 +Node: Debugger836270 +Node: Debugging837292 +Node: Debugging Concepts837733 +Node: Debugging Terms839543 +Node: Awk Debugging842115 +Node: Sample Debugging Session843021 +Node: Debugger Invocation843555 +Node: Finding The Bug844940 +Node: List of Debugger Commands851419 +Node: Breakpoint Control852751 +Node: Debugger Execution Control856428 +Node: Viewing And Changing Data859787 +Node: Execution Stack863163 +Node: Debugger Info864798 +Node: Miscellaneous Debugger Commands868843 +Node: Readline Support873844 +Node: Limitations874738 +Node: Debugging Summary876853 +Node: Arbitrary Precision Arithmetic878027 +Node: Computer Arithmetic879443 +Ref: table-numeric-ranges883042 +Ref: Computer Arithmetic-Footnote-1883566 +Node: Math Definitions883623 +Ref: table-ieee-formats886918 +Ref: Math Definitions-Footnote-1887522 +Node: MPFR features887627 +Node: FP Math Caution889298 +Ref: FP Math Caution-Footnote-1890348 +Node: Inexactness of computations890717 +Node: Inexact representation891676 +Node: Comparing FP Values893034 +Node: Errors accumulate894116 +Node: Getting Accuracy895548 +Node: Try To Round898252 +Node: Setting precision899151 +Ref: table-predefined-precision-strings899835 +Node: Setting the rounding mode901664 +Ref: table-gawk-rounding-modes902028 +Ref: Setting the rounding mode-Footnote-1905480 +Node: Arbitrary Precision Integers905659 +Ref: Arbitrary Precision Integers-Footnote-1910557 +Node: POSIX Floating Point Problems910706 +Ref: POSIX Floating Point Problems-Footnote-1914585 +Node: Floating point summary914623 +Node: Dynamic Extensions916810 +Node: Extension Intro918362 +Node: Plugin License919627 +Node: Extension Mechanism Outline920424 +Ref: figure-load-extension920852 +Ref: figure-register-new-function922332 +Ref: figure-call-new-function923336 +Node: Extension API Description925323 +Node: Extension API Functions Introduction926773 +Node: General Data Types931594 +Ref: General Data Types-Footnote-1937494 +Node: Memory Allocation Functions937793 +Ref: Memory Allocation Functions-Footnote-1940632 +Node: Constructor Functions940731 +Node: Registration Functions942470 +Node: Extension Functions943155 +Node: Exit Callback Functions945452 +Node: Extension Version String946700 +Node: Input Parsers947363 +Node: Output Wrappers957238 +Node: Two-way processors961751 +Node: Printing Messages964014 +Ref: Printing Messages-Footnote-1965090 +Node: Updating `ERRNO'965242 +Node: Requesting Values965982 +Ref: table-value-types-returned966709 +Node: Accessing Parameters967666 +Node: Symbol Table Access968900 +Node: Symbol table by name969414 +Node: Symbol table by cookie971434 +Ref: Symbol table by cookie-Footnote-1975579 +Node: Cached values975642 +Ref: Cached values-Footnote-1979138 +Node: Array Manipulation979229 +Ref: Array Manipulation-Footnote-1980327 +Node: Array Data Types980364 +Ref: Array Data Types-Footnote-1983019 +Node: Array Functions983111 +Node: Flattening Arrays986970 +Node: Creating Arrays993872 +Node: Extension API Variables998643 +Node: Extension Versioning999279 +Node: Extension API Informational Variables1001170 +Node: Extension API Boilerplate1002235 +Node: Finding Extensions1006044 +Node: Extension Example1006604 +Node: Internal File Description1007376 +Node: Internal File Ops1011443 +Ref: Internal File Ops-Footnote-11023194 +Node: Using Internal File Ops1023334 +Ref: Using Internal File Ops-Footnote-11025717 +Node: Extension Samples1025990 +Node: Extension Sample File Functions1027518 +Node: Extension Sample Fnmatch1035199 +Node: Extension Sample Fork1036687 +Node: Extension Sample Inplace1037902 +Node: Extension Sample Ord1039578 +Node: Extension Sample Readdir1040414 +Ref: table-readdir-file-types1041291 +Node: Extension Sample Revout1042102 +Node: Extension Sample Rev2way1042691 +Node: Extension Sample Read write array1043431 +Node: Extension Sample Readfile1045371 +Node: Extension Sample Time1046466 +Node: Extension Sample API Tests1047814 +Node: gawkextlib1048305 +Node: Extension summary1050983 +Node: Extension Exercises1054672 +Node: Language History1055394 +Node: V7/SVR3.11057050 +Node: SVR41059203 +Node: POSIX1060637 +Node: BTL1062018 +Node: POSIX/GNU1062749 +Node: Feature History1068494 +Node: Common Extensions1082220 +Node: Ranges and Locales1083592 +Ref: Ranges and Locales-Footnote-11088211 +Ref: Ranges and Locales-Footnote-21088238 +Ref: Ranges and Locales-Footnote-31088473 +Node: Contributors1088694 +Node: History summary1094234 +Node: Installation1095613 +Node: Gawk Distribution1096559 +Node: Getting1097043 +Node: Extracting1097866 +Node: Distribution contents1099503 +Node: Unix Installation1105605 +Node: Quick Installation1106288 +Node: Shell Startup Files1108699 +Node: Additional Configuration Options1109778 +Node: Configuration Philosophy1111582 +Node: Non-Unix Installation1113951 +Node: PC Installation1114409 +Node: PC Binary Installation1115729 +Node: PC Compiling1117577 +Ref: PC Compiling-Footnote-11120598 +Node: PC Testing1120707 +Node: PC Using1121883 +Node: Cygwin1125998 +Node: MSYS1126768 +Node: VMS Installation1127269 +Node: VMS Compilation1128061 +Ref: VMS Compilation-Footnote-11129290 +Node: VMS Dynamic Extensions1129348 +Node: VMS Installation Details1131032 +Node: VMS Running1133283 +Node: VMS GNV1136123 +Node: VMS Old Gawk1136858 +Node: Bugs1137328 +Node: Other Versions1141217 +Node: Installation summary1147651 +Node: Notes1148710 +Node: Compatibility Mode1149575 +Node: Additions1150357 +Node: Accessing The Source1151282 +Node: Adding Code1152717 +Node: New Ports1158874 +Node: Derived Files1163356 +Ref: Derived Files-Footnote-11168831 +Ref: Derived Files-Footnote-21168865 +Ref: Derived Files-Footnote-31169461 +Node: Future Extensions1169575 +Node: Implementation Limitations1170181 +Node: Extension Design1171429 +Node: Old Extension Problems1172583 +Ref: Old Extension Problems-Footnote-11174100 +Node: Extension New Mechanism Goals1174157 +Ref: Extension New Mechanism Goals-Footnote-11177517 +Node: Extension Other Design Decisions1177706 +Node: Extension Future Growth1179814 +Node: Old Extension Mechanism1180650 +Node: Notes summary1182412 +Node: Basic Concepts1183598 +Node: Basic High Level1184279 +Ref: figure-general-flow1184551 +Ref: figure-process-flow1185150 +Ref: Basic High Level-Footnote-11188379 +Node: Basic Data Typing1188564 +Node: Glossary1191892 +Node: Copying1223821 +Node: GNU Free Documentation License1261377 +Node: Index1286513 End Tag Table diff --git a/doc/gawk.texi b/doc/gawk.texi index 2d0da0cd..5d7277b9 100644 --- a/doc/gawk.texi +++ b/doc/gawk.texi @@ -1520,7 +1520,7 @@ is often referred to as ``new @command{awk}.'' By analogy, the original version of @command{awk} is referred to as ``old @command{awk}.'' -Today, on most systems, when you run the @command{awk} utility +On most current systems, when you run the @command{awk} utility you get some version of new @command{awk}.@footnote{Only Solaris systems still use an old @command{awk} for the default @command{awk} utility. A more modern @command{awk} lives in diff --git a/doc/gawktexi.in b/doc/gawktexi.in index a4a64c31..303b7db8 100644 --- a/doc/gawktexi.in +++ b/doc/gawktexi.in @@ -1487,7 +1487,7 @@ is often referred to as ``new @command{awk}.'' By analogy, the original version of @command{awk} is referred to as ``old @command{awk}.'' -Today, on most systems, when you run the @command{awk} utility +On most current systems, when you run the @command{awk} utility you get some version of new @command{awk}.@footnote{Only Solaris systems still use an old @command{awk} for the default @command{awk} utility. A more modern @command{awk} lives in diff --git a/doc/texinfo.tex b/doc/texinfo.tex index 370d4505..8236d7d2 100644 --- a/doc/texinfo.tex +++ b/doc/texinfo.tex @@ -3,11 +3,12 @@ % Load plain if necessary, i.e., if running under initex. \expandafter\ifx\csname fmtname\endcsname\relax\input plain\fi % -\def\texinfoversion{2014-12-03.16} +\def\texinfoversion{2015-02-05.16} % % Copyright 1985, 1986, 1988, 1990, 1991, 1992, 1993, 1994, 1995, % 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, -% 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 Free Software Foundation, Inc. +% 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014, 2015 +% Free Software Foundation, Inc. % % This texinfo.tex file is free software: you can redistribute it and/or % modify it under the terms of the GNU General Public License as @@ -4488,7 +4489,6 @@ end % Called from \indexdummies and \atdummies. % \def\commondummies{% - % % \definedummyword defines \#1 as \string\#1\space, thus effectively % preventing its expansion. This is used only for control words, % not control letters, because the \space would be incorrect for @@ -4565,6 +4565,7 @@ end \definedummyword\guilsinglright \definedummyword\lbracechar \definedummyword\leq + \definedummyword\mathopsup \definedummyword\minus \definedummyword\ogonek \definedummyword\pounds @@ -4578,6 +4579,8 @@ end \definedummyword\quotesinglbase \definedummyword\rbracechar \definedummyword\result + \definedummyword\sub + \definedummyword\sup \definedummyword\textdegree % % We want to disable all macros so that they are not expanded by \write. @@ -4652,6 +4655,7 @@ end \definedummyword\samp \definedummyword\strong \definedummyword\tie + \definedummyword\U \definedummyword\uref \definedummyword\url \definedummyword\var @@ -8334,14 +8338,7 @@ end \catcode`\\=\other % % Make the characters 128-255 be printing characters. - {% - \count1=128 - \def\loop{% - \catcode\count1=\other - \advance\count1 by 1 - \ifnum \count1<256 \loop \fi - }% - }% + {\setnonasciicharscatcodenonglobal\other}% % % @ is our escape character in .aux files, and we need braces. \catcode`\{=1 @@ -8952,6 +8949,7 @@ directory should work if nowhere else does.} \catcode\count255=#1\relax \advance\count255 by 1 \repeat + } % @documentencoding sets the definition of non-ASCII characters @@ -8986,10 +8984,12 @@ directory should work if nowhere else does.} % \else \ifx \declaredencoding \utfeight \setnonasciicharscatcode\active - \utfeightchardefs + % since we already invoked \utfeightchardefs at the top level + % (below), do not re-invoke it, then our check for duplicated + % definitions triggers. Making non-ascii chars active is enough. % \else - \message{Unknown document encoding #1, ignoring.}% + \message{Ignoring unknown document encoding: #1.}% % \fi % utfeight \fi % latnine @@ -8998,10 +8998,11 @@ directory should work if nowhere else does.} \fi % ascii } +% emacs-page % A message to be logged when using a character that isn't available % the default font encoding (OT1). % -\def\missingcharmsg#1{\message{Character missing in OT1 encoding: #1.}} +\def\missingcharmsg#1{\message{Character missing, sorry: #1.}} % Take account of \c (plain) vs. \, (Texinfo) difference. \def\cedilla#1{\ifx\c\ptexc\c{#1}\else\,{#1}\fi} @@ -9037,12 +9038,10 @@ directory should work if nowhere else does.} \gdef^^b4{\'{}} \gdef^^b5{$\mu$} \gdef^^b6{\P} - % - \gdef^^b7{$^.$} + \gdef^^b7{\ifmmode\cdot\else $\cdot$\fi} \gdef^^b8{\cedilla\ } \gdef^^b9{$^1$} \gdef^^ba{\ordm} - % \gdef^^bb{\guillemetright} \gdef^^bc{$1\over4$} \gdef^^bd{$1\over2$} @@ -9331,6 +9330,11 @@ directory should work if nowhere else does.} \expandafter\expandafter\expandafter\expandafter \expandafter\expandafter\expandafter \gdef\UTFviiiTmp{#2}% + % + \expandafter\ifx\csname uni:#1\endcsname \relax \else + \errmessage{Internal error, already defined: #1}% + \fi + % % define an additional control sequence for this code point. \expandafter\globallet\csname uni:#1\endcsname \UTFviiiTmp \endgroup} @@ -9370,23 +9374,49 @@ directory should work if nowhere else does.} \uppercase{\gdef\UTFviiiTmp{#2#3#4}}} \endgroup +% https://en.wikipedia.org/wiki/Plane_(Unicode)#Basic_M +% U+0000..U+007F = https://en.wikipedia.org/wiki/Basic_Latin_(Unicode_block) +% U+0080..U+00FF = https://en.wikipedia.org/wiki/Latin-1_Supplement_(Unicode_block) +% U+0100..U+017F = https://en.wikipedia.org/wiki/Latin_Extended-A +% U+0180..U+024F = https://en.wikipedia.org/wiki/Latin_Extended-B +% +% Many of our renditions are less than wonderful, and all the missing +% characters are available somewhere. Loading the necessary fonts +% awaits user request. We can't truly support Unicode without +% reimplementing everything that's been done in LaTeX for many years, +% plus probably using luatex or xetex, and who knows what else. +% We won't be doing that here in this simple file. But we can try to at +% least make most of the characters not bomb out. +% \def\utfeightchardefs{% \DeclareUnicodeCharacter{00A0}{\tie} \DeclareUnicodeCharacter{00A1}{\exclamdown} \DeclareUnicodeCharacter{00A3}{\pounds} + \DeclareUnicodeCharacter{00A7}{\S} \DeclareUnicodeCharacter{00A8}{\"{ }} \DeclareUnicodeCharacter{00A9}{\copyright} \DeclareUnicodeCharacter{00AA}{\ordf} \DeclareUnicodeCharacter{00AB}{\guillemetleft} + \DeclareUnicodeCharacter{00AC}{\ifmmode\lnot\else $\lnot$\fi} \DeclareUnicodeCharacter{00AD}{\-} \DeclareUnicodeCharacter{00AE}{\registeredsymbol} \DeclareUnicodeCharacter{00AF}{\={ }} \DeclareUnicodeCharacter{00B0}{\ringaccent{ }} + \DeclareUnicodeCharacter{00B1}{\ifmmode\pm\else $\pm$\fi} + \DeclareUnicodeCharacter{00B2}{$^2$} + \DeclareUnicodeCharacter{00B3}{$^3$} \DeclareUnicodeCharacter{00B4}{\'{ }} + \DeclareUnicodeCharacter{00B5}{$\mu$} + \DeclareUnicodeCharacter{00B6}{\P} + \DeclareUnicodeCharacter{00B7}{\ifmmode\cdot\else $\cdot$\fi} \DeclareUnicodeCharacter{00B8}{\cedilla{ }} + \DeclareUnicodeCharacter{00B9}{$^1$} \DeclareUnicodeCharacter{00BA}{\ordm} \DeclareUnicodeCharacter{00BB}{\guillemetright} + \DeclareUnicodeCharacter{00BC}{$1\over4$} + \DeclareUnicodeCharacter{00BD}{$1\over2$} + \DeclareUnicodeCharacter{00BE}{$3\over4$} \DeclareUnicodeCharacter{00BF}{\questiondown} \DeclareUnicodeCharacter{00C0}{\`A} @@ -9413,6 +9443,7 @@ directory should work if nowhere else does.} \DeclareUnicodeCharacter{00D4}{\^O} \DeclareUnicodeCharacter{00D5}{\~O} \DeclareUnicodeCharacter{00D6}{\"O} + \DeclareUnicodeCharacter{00D7}{\ifmmode\times\else $\times$\fi} \DeclareUnicodeCharacter{00D8}{\O} \DeclareUnicodeCharacter{00D9}{\`U} \DeclareUnicodeCharacter{00DA}{\'U} @@ -9446,6 +9477,7 @@ directory should work if nowhere else does.} \DeclareUnicodeCharacter{00F4}{\^o} \DeclareUnicodeCharacter{00F5}{\~o} \DeclareUnicodeCharacter{00F6}{\"o} + \DeclareUnicodeCharacter{00F7}{\ifmmode\div\else $\div$\fi} \DeclareUnicodeCharacter{00F8}{\o} \DeclareUnicodeCharacter{00F9}{\`u} \DeclareUnicodeCharacter{00FA}{\'u} @@ -9465,20 +9497,23 @@ directory should work if nowhere else does.} \DeclareUnicodeCharacter{0107}{\'c} \DeclareUnicodeCharacter{0108}{\^C} \DeclareUnicodeCharacter{0109}{\^c} - \DeclareUnicodeCharacter{0118}{\ogonek{E}} - \DeclareUnicodeCharacter{0119}{\ogonek{e}} \DeclareUnicodeCharacter{010A}{\dotaccent{C}} \DeclareUnicodeCharacter{010B}{\dotaccent{c}} \DeclareUnicodeCharacter{010C}{\v{C}} \DeclareUnicodeCharacter{010D}{\v{c}} \DeclareUnicodeCharacter{010E}{\v{D}} + \DeclareUnicodeCharacter{010F}{d'} + \DeclareUnicodeCharacter{0110}{\DH} + \DeclareUnicodeCharacter{0111}{\dh} \DeclareUnicodeCharacter{0112}{\=E} \DeclareUnicodeCharacter{0113}{\=e} \DeclareUnicodeCharacter{0114}{\u{E}} \DeclareUnicodeCharacter{0115}{\u{e}} \DeclareUnicodeCharacter{0116}{\dotaccent{E}} \DeclareUnicodeCharacter{0117}{\dotaccent{e}} + \DeclareUnicodeCharacter{0118}{\ogonek{E}} + \DeclareUnicodeCharacter{0119}{\ogonek{e}} \DeclareUnicodeCharacter{011A}{\v{E}} \DeclareUnicodeCharacter{011B}{\v{e}} \DeclareUnicodeCharacter{011C}{\^G} @@ -9488,14 +9523,20 @@ directory should work if nowhere else does.} \DeclareUnicodeCharacter{0120}{\dotaccent{G}} \DeclareUnicodeCharacter{0121}{\dotaccent{g}} + \DeclareUnicodeCharacter{0122}{\cedilla{G}} + \DeclareUnicodeCharacter{0123}{\cedilla{g}} \DeclareUnicodeCharacter{0124}{\^H} \DeclareUnicodeCharacter{0125}{\^h} + \DeclareUnicodeCharacter{0126}{\missingcharmsg{H WITH STROKE}} + \DeclareUnicodeCharacter{0127}{\missingcharmsg{h WITH STROKE}} \DeclareUnicodeCharacter{0128}{\~I} \DeclareUnicodeCharacter{0129}{\~{\dotless{i}}} \DeclareUnicodeCharacter{012A}{\=I} \DeclareUnicodeCharacter{012B}{\={\dotless{i}}} \DeclareUnicodeCharacter{012C}{\u{I}} \DeclareUnicodeCharacter{012D}{\u{\dotless{i}}} + \DeclareUnicodeCharacter{012E}{\ogonek{I}} + \DeclareUnicodeCharacter{012F}{\ogonek{i}} \DeclareUnicodeCharacter{0130}{\dotaccent{I}} \DeclareUnicodeCharacter{0131}{\dotless{i}} @@ -9503,15 +9544,29 @@ directory should work if nowhere else does.} \DeclareUnicodeCharacter{0133}{ij} \DeclareUnicodeCharacter{0134}{\^J} \DeclareUnicodeCharacter{0135}{\^{\dotless{j}}} + \DeclareUnicodeCharacter{0136}{\cedilla{K}} + \DeclareUnicodeCharacter{0137}{\cedilla{k}} + \DeclareUnicodeCharacter{0138}{\ifmmode\kappa\else $\kappa$\fi} \DeclareUnicodeCharacter{0139}{\'L} \DeclareUnicodeCharacter{013A}{\'l} + \DeclareUnicodeCharacter{013B}{\cedilla{L}} + \DeclareUnicodeCharacter{013C}{\cedilla{l}} + \DeclareUnicodeCharacter{013D}{L'}% should kern + \DeclareUnicodeCharacter{013E}{l'}% should kern + \DeclareUnicodeCharacter{013F}{L\U{00B7}} + \DeclareUnicodeCharacter{0140}{l\U{00B7}} \DeclareUnicodeCharacter{0141}{\L} \DeclareUnicodeCharacter{0142}{\l} \DeclareUnicodeCharacter{0143}{\'N} \DeclareUnicodeCharacter{0144}{\'n} + \DeclareUnicodeCharacter{0145}{\cedilla{N}} + \DeclareUnicodeCharacter{0146}{\cedilla{n}} \DeclareUnicodeCharacter{0147}{\v{N}} \DeclareUnicodeCharacter{0148}{\v{n}} + \DeclareUnicodeCharacter{0149}{'n} + \DeclareUnicodeCharacter{014A}{\missingcharmsg{ENG}} + \DeclareUnicodeCharacter{014B}{\missingcharmsg{eng}} \DeclareUnicodeCharacter{014C}{\=O} \DeclareUnicodeCharacter{014D}{\=o} \DeclareUnicodeCharacter{014E}{\u{O}} @@ -9523,6 +9578,8 @@ directory should work if nowhere else does.} \DeclareUnicodeCharacter{0153}{\oe} \DeclareUnicodeCharacter{0154}{\'R} \DeclareUnicodeCharacter{0155}{\'r} + \DeclareUnicodeCharacter{0156}{\cedilla{R}} + \DeclareUnicodeCharacter{0157}{\cedilla{r}} \DeclareUnicodeCharacter{0158}{\v{R}} \DeclareUnicodeCharacter{0159}{\v{r}} \DeclareUnicodeCharacter{015A}{\'S} @@ -9534,10 +9591,12 @@ directory should work if nowhere else does.} \DeclareUnicodeCharacter{0160}{\v{S}} \DeclareUnicodeCharacter{0161}{\v{s}} - \DeclareUnicodeCharacter{0162}{\cedilla{t}} - \DeclareUnicodeCharacter{0163}{\cedilla{T}} + \DeclareUnicodeCharacter{0162}{\cedilla{T}} + \DeclareUnicodeCharacter{0163}{\cedilla{t}} \DeclareUnicodeCharacter{0164}{\v{T}} - + \DeclareUnicodeCharacter{0165}{\v{t}} + \DeclareUnicodeCharacter{0166}{\missingcharmsg{H WITH STROKE}} + \DeclareUnicodeCharacter{0167}{\missingcharmsg{h WITH STROKE}} \DeclareUnicodeCharacter{0168}{\~U} \DeclareUnicodeCharacter{0169}{\~u} \DeclareUnicodeCharacter{016A}{\=U} @@ -9549,6 +9608,8 @@ directory should work if nowhere else does.} \DeclareUnicodeCharacter{0170}{\H{U}} \DeclareUnicodeCharacter{0171}{\H{u}} + \DeclareUnicodeCharacter{0172}{\ogonek{U}} + \DeclareUnicodeCharacter{0173}{\ogonek{u}} \DeclareUnicodeCharacter{0174}{\^W} \DeclareUnicodeCharacter{0175}{\^w} \DeclareUnicodeCharacter{0176}{\^Y} @@ -9560,6 +9621,7 @@ directory should work if nowhere else does.} \DeclareUnicodeCharacter{017C}{\dotaccent{z}} \DeclareUnicodeCharacter{017D}{\v{Z}} \DeclareUnicodeCharacter{017E}{\v{z}} + \DeclareUnicodeCharacter{017F}{\missingcharmsg{LONG S}} \DeclareUnicodeCharacter{01C4}{D\v{Z}} \DeclareUnicodeCharacter{01C5}{D\v{z}} @@ -9765,12 +9827,51 @@ directory should work if nowhere else does.} \DeclareUnicodeCharacter{2261}{\equiv} }% end of \utfeightchardefs - % US-ASCII character definitions. \def\asciichardefs{% nothing need be done \relax } +% Latin1 (ISO-8859-1) character definitions. +\def\nonasciistringdefs{% + \setnonasciicharscatcode\active + \def\defstringchar##1{\def##1{\string##1}}% + \defstringchar^^a0\defstringchar^^a1\defstringchar^^a2\defstringchar^^a3% + \defstringchar^^a4\defstringchar^^a5\defstringchar^^a6\defstringchar^^a7% + \defstringchar^^a8\defstringchar^^a9\defstringchar^^aa\defstringchar^^ab% + \defstringchar^^ac\defstringchar^^ad\defstringchar^^ae\defstringchar^^af% + % + \defstringchar^^b0\defstringchar^^b1\defstringchar^^b2\defstringchar^^b3% + \defstringchar^^b4\defstringchar^^b5\defstringchar^^b6\defstringchar^^b7% + \defstringchar^^b8\defstringchar^^b9\defstringchar^^ba\defstringchar^^bb% + \defstringchar^^bc\defstringchar^^bd\defstringchar^^be\defstringchar^^bf% + % + \defstringchar^^c0\defstringchar^^c1\defstringchar^^c2\defstringchar^^c3% + \defstringchar^^c4\defstringchar^^c5\defstringchar^^c6\defstringchar^^c7% + \defstringchar^^c8\defstringchar^^c9\defstringchar^^ca\defstringchar^^cb% + \defstringchar^^cc\defstringchar^^cd\defstringchar^^ce\defstringchar^^cf% + % + \defstringchar^^d0\defstringchar^^d1\defstringchar^^d2\defstringchar^^d3% + \defstringchar^^d4\defstringchar^^d5\defstringchar^^d6\defstringchar^^d7% + \defstringchar^^d8\defstringchar^^d9\defstringchar^^da\defstringchar^^db% + \defstringchar^^dc\defstringchar^^dd\defstringchar^^de\defstringchar^^df% + % + \defstringchar^^e0\defstringchar^^e1\defstringchar^^e2\defstringchar^^e3% + \defstringchar^^e4\defstringchar^^e5\defstringchar^^e6\defstringchar^^e7% + \defstringchar^^e8\defstringchar^^e9\defstringchar^^ea\defstringchar^^eb% + \defstringchar^^ec\defstringchar^^ed\defstringchar^^ee\defstringchar^^ef% + % + \defstringchar^^f0\defstringchar^^f1\defstringchar^^f2\defstringchar^^f3% + \defstringchar^^f4\defstringchar^^f5\defstringchar^^f6\defstringchar^^f7% + \defstringchar^^f8\defstringchar^^f9\defstringchar^^fa\defstringchar^^fb% + \defstringchar^^fc\defstringchar^^fd\defstringchar^^fe\defstringchar^^ff% +} + + +% define all the unicode characters we know about, for the sake of @U. +\utfeightchardefs + + % Make non-ASCII characters printable again for compatibility with % existing Texinfo documents that may use them, even without declaring a % document encoding. @@ -10124,6 +10225,7 @@ directory should work if nowhere else does.} % {@catcode`- = @active @gdef@normalturnoffactive{% + @nonasciistringdefs @let-=@normaldash @let"=@normaldoublequote @let$=@normaldollar %$ font-lock fix @@ -10192,7 +10294,7 @@ directory should work if nowhere else does.} @c Local variables: @c eval: (add-hook 'write-file-hooks 'time-stamp) -@c page-delimiter: "^\\\\message" +@c page-delimiter: "^\\\\message\\|emacs-page" @c time-stamp-start: "def\\\\texinfoversion{" @c time-stamp-format: "%:y-%02m-%02d.%02H" @c time-stamp-end: "}" diff --git a/test/ChangeLog b/test/ChangeLog index ecbfaf0d..2a67fabc 100644 --- a/test/ChangeLog +++ b/test/ChangeLog @@ -1,3 +1,8 @@ +2015-02-24 Arnold D. Robbins <arnold@skeeve.com> + + * Makefile.am (crlf): New test. + * crlf.awk, crlf.ok: New files. + 2015-02-10 Arnold D. Robbins <arnold@skeeve.com> * Makefile.am (profile0): New test. diff --git a/test/Makefile.am b/test/Makefile.am index 4f78ddb4..c55cb3a1 100644 --- a/test/Makefile.am +++ b/test/Makefile.am @@ -169,6 +169,8 @@ EXTRA_DIST = \ concat4.ok \ convfmt.awk \ convfmt.ok \ + crlf.awk \ + crlf.ok \ datanonl.awk \ datanonl.in \ datanonl.ok \ @@ -1034,7 +1036,7 @@ UNIX_TESTS = \ GAWK_EXT_TESTS = \ aadelete1 aadelete2 aarray1 aasort aasorti argtest arraysort \ backw badargs beginfile1 beginfile2 binmode1 charasbytes \ - colonwarn clos1way dbugeval delsub devfd devfd1 devfd2 dumpvars exit \ + colonwarn clos1way crlf dbugeval delsub devfd devfd1 devfd2 dumpvars exit \ fieldwdth fpat1 fpat2 fpat3 fpatnull fsfwfs funlen \ functab1 functab2 functab3 fwtest fwtest2 fwtest3 \ genpot gensub gensub2 getlndir gnuops2 gnuops3 gnureops \ diff --git a/test/Makefile.in b/test/Makefile.in index 30c77b97..2397a9b5 100644 --- a/test/Makefile.in +++ b/test/Makefile.in @@ -426,6 +426,8 @@ EXTRA_DIST = \ concat4.ok \ convfmt.awk \ convfmt.ok \ + crlf.awk \ + crlf.ok \ datanonl.awk \ datanonl.in \ datanonl.ok \ @@ -1290,7 +1292,7 @@ UNIX_TESTS = \ GAWK_EXT_TESTS = \ aadelete1 aadelete2 aarray1 aasort aasorti argtest arraysort \ backw badargs beginfile1 beginfile2 binmode1 charasbytes \ - colonwarn clos1way dbugeval delsub devfd devfd1 devfd2 dumpvars exit \ + colonwarn clos1way crlf dbugeval delsub devfd devfd1 devfd2 dumpvars exit \ fieldwdth fpat1 fpat2 fpat3 fpatnull fsfwfs funlen \ functab1 functab2 functab3 fwtest fwtest2 fwtest3 \ genpot gensub gensub2 getlndir gnuops2 gnuops3 gnureops \ @@ -3443,6 +3445,11 @@ backw: @AWKPATH="$(srcdir)" $(AWK) -f $@.awk < "$(srcdir)"/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@ +crlf: + @echo $@ + @AWKPATH="$(srcdir)" $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@ + @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@ + delsub: @echo $@ @AWKPATH="$(srcdir)" $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@ diff --git a/test/Maketests b/test/Maketests index f3639b0f..adf95cc5 100644 --- a/test/Maketests +++ b/test/Maketests @@ -962,6 +962,11 @@ backw: @AWKPATH="$(srcdir)" $(AWK) -f $@.awk < "$(srcdir)"/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@ +crlf: + @echo $@ + @AWKPATH="$(srcdir)" $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@ + @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@ + delsub: @echo $@ @AWKPATH="$(srcdir)" $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@ diff --git a/test/crlf.awk b/test/crlf.awk new file mode 100644 index 00000000..79be9eb6 --- /dev/null +++ b/test/crlf.awk @@ -0,0 +1,11 @@ +BEGIN {
+ print \
+ "hi there"
+ print "hello \
+world"
+ if ("foo" ~ /fo\
+o/)
+ print "matches"
+ else
+ print "does not match!"
+}
diff --git a/test/crlf.ok b/test/crlf.ok new file mode 100644 index 00000000..0ba071b5 --- /dev/null +++ b/test/crlf.ok @@ -0,0 +1,3 @@ +hi there +hello world +matches |