diff options
-rw-r--r-- | ChangeLog | 11 | ||||
-rw-r--r-- | NEWS | 2 | ||||
-rw-r--r-- | README.git | 3 | ||||
-rw-r--r-- | awkgram.c | 1 | ||||
-rw-r--r-- | awkgram.y | 1 | ||||
-rwxr-xr-x | config.guess | 89 | ||||
-rwxr-xr-x | config.sub | 4 | ||||
-rw-r--r-- | doc/ChangeLog | 10 | ||||
-rw-r--r-- | doc/gawk.info | 952 | ||||
-rw-r--r-- | doc/gawk.texi | 7 | ||||
-rw-r--r-- | doc/gawktexi.in | 7 | ||||
-rw-r--r-- | doc/texinfo.tex | 528 | ||||
-rw-r--r-- | extension/build-aux/ChangeLog | 4 | ||||
-rwxr-xr-x | extension/build-aux/config.guess | 89 | ||||
-rwxr-xr-x | extension/build-aux/config.sub | 4 |
15 files changed, 836 insertions, 876 deletions
@@ -1,3 +1,12 @@ +2019-06-21 Arnold D. Robbins <arnold@skeeve.com> + + * config.guess, config.sub: Updated from GNULIB. + * awkgram.y (get_src_buf): Set buffers to zero to avoid + possible issues with accessing uninitialized memory. + Thanks to valgrind, as pointed out by Nadezhda Vyukova + <qniva@yandex.ru>. + * NEWS, README.git: Fix some typos. + 2019-06-19 Arnold D. Robbins <arnold@skeeve.com> * re.c (make_regexp): If do_posix, have {} in ok_to_escape. @@ -88,7 +97,7 @@ * awk.h (errcount): Declare. * awkgram.y (errcount): No longer static. - * command.y (dbg_errcount): Renamed from errcount.j + * command.y (dbg_errcount): Renamed from errcount. * main.c (catchsig, catchsegv): If errcount > 0, just exit, don't abort. @@ -22,7 +22,7 @@ Changes from 5.0.0 to 5.0.1 6. Infrastructure upgrades: Bison 3.4. -N. A number of bugs, some of them quite significant, have been fixed. +7. A number of bugs, some of them quite significant, have been fixed. See the ChangeLog for details. Changes from 4.2.1 to 5.0.0 @@ -1,10 +1,11 @@ +Thu Jun 20 11:01:04 IDT 2019 Wed Aug 23 08:07:18 IDT 2017 ============================ If you are reading this, you have retrieved the gawk code base via Git from savannah.gnu.org. This is good; gawk no longer uses CVS. -On GNU and Unix systems, please execute use the following to build +On GNU and Unix systems, please use the following to build gawk after doing `git clone' or `git pull': make distclean # if not a new clone @@ -5682,6 +5682,7 @@ get_src_buf() sourcefile->bufsize = l; newfile = true; emalloc(sourcefile->buf, char *, sourcefile->bufsize, "get_src_buf"); + memset(sourcefile->buf, '\0', sourcefile->bufsize); // keep valgrind happy lexptr = lexptr_begin = lexeme = sourcefile->buf; savelen = 0; sourceline = 1; @@ -3185,6 +3185,7 @@ get_src_buf() sourcefile->bufsize = l; newfile = true; emalloc(sourcefile->buf, char *, sourcefile->bufsize, "get_src_buf"); + memset(sourcefile->buf, '\0', sourcefile->bufsize); // keep valgrind happy lexptr = lexptr_begin = lexeme = sourcefile->buf; savelen = 0; sourceline = 1; diff --git a/config.guess b/config.guess index 79d1317f..41b8b854 100755 --- a/config.guess +++ b/config.guess @@ -2,7 +2,7 @@ # Attempt to guess a canonical system name. # Copyright 1992-2019 Free Software Foundation, Inc. -timestamp='2019-03-04' +timestamp='2019-06-10' # This file is free software; you can redistribute it and/or modify it # under the terms of the GNU General Public License as published by @@ -262,6 +262,9 @@ case "$UNAME_MACHINE:$UNAME_SYSTEM:$UNAME_RELEASE:$UNAME_VERSION" in *:SolidBSD:*:*) echo "$UNAME_MACHINE"-unknown-solidbsd"$UNAME_RELEASE" exit ;; + *:OS108:*:*) + echo "$UNAME_MACHINE"-unknown-os108_"$UNAME_RELEASE" + exit ;; macppc:MirBSD:*:*) echo powerpc-unknown-mirbsd"$UNAME_RELEASE" exit ;; @@ -1325,38 +1328,39 @@ EOF echo "$UNAME_MACHINE"-apple-rhapsody"$UNAME_RELEASE" exit ;; *:Darwin:*:*) - UNAME_PROCESSOR=`uname -p` || UNAME_PROCESSOR=unknown - set_cc_for_build - if test "$UNAME_PROCESSOR" = unknown ; then - UNAME_PROCESSOR=powerpc + UNAME_PROCESSOR=`uname -p` + case $UNAME_PROCESSOR in + unknown) UNAME_PROCESSOR=powerpc ;; + esac + if command -v xcode-select > /dev/null 2> /dev/null && \ + ! xcode-select --print-path > /dev/null 2> /dev/null ; then + # Avoid executing cc if there is no toolchain installed as + # cc will be a stub that puts up a graphical alert + # prompting the user to install developer tools. + CC_FOR_BUILD=no_compiler_found + else + set_cc_for_build fi - if test "`echo "$UNAME_RELEASE" | sed -e 's/\..*//'`" -le 10 ; then - if [ "$CC_FOR_BUILD" != no_compiler_found ]; then - if (echo '#ifdef __LP64__'; echo IS_64BIT_ARCH; echo '#endif') | \ - (CCOPTS="" $CC_FOR_BUILD -E - 2>/dev/null) | \ - grep IS_64BIT_ARCH >/dev/null - then - case $UNAME_PROCESSOR in - i386) UNAME_PROCESSOR=x86_64 ;; - powerpc) UNAME_PROCESSOR=powerpc64 ;; - esac - fi - # On 10.4-10.6 one might compile for PowerPC via gcc -arch ppc - if (echo '#ifdef __POWERPC__'; echo IS_PPC; echo '#endif') | \ - (CCOPTS="" $CC_FOR_BUILD -E - 2>/dev/null) | \ - grep IS_PPC >/dev/null - then - UNAME_PROCESSOR=powerpc - fi + if [ "$CC_FOR_BUILD" != no_compiler_found ]; then + if (echo '#ifdef __LP64__'; echo IS_64BIT_ARCH; echo '#endif') | \ + (CCOPTS="" $CC_FOR_BUILD -E - 2>/dev/null) | \ + grep IS_64BIT_ARCH >/dev/null + then + case $UNAME_PROCESSOR in + i386) UNAME_PROCESSOR=x86_64 ;; + powerpc) UNAME_PROCESSOR=powerpc64 ;; + esac + fi + # On 10.4-10.6 one might compile for PowerPC via gcc -arch ppc + if (echo '#ifdef __POWERPC__'; echo IS_PPC; echo '#endif') | \ + (CCOPTS="" $CC_FOR_BUILD -E - 2>/dev/null) | \ + grep IS_PPC >/dev/null + then + UNAME_PROCESSOR=powerpc fi elif test "$UNAME_PROCESSOR" = i386 ; then - # Avoid executing cc on OS X 10.9, as it ships with a stub - # that puts up a graphical alert prompting to install - # developer tools. Any system running Mac OS X 10.7 or - # later (Darwin 11 and later) is required to have a 64-bit - # processor. This is not true of the ARM version of Darwin - # that Apple uses in portable devices. - UNAME_PROCESSOR=x86_64 + # uname -m returns i386 or x86_64 + UNAME_PROCESSOR=$UNAME_MACHINE fi echo "$UNAME_PROCESSOR"-apple-darwin"$UNAME_RELEASE" exit ;; @@ -1468,6 +1472,14 @@ cat > "$dummy.c" <<EOF #include <sys/types.h> #include <sys/utsname.h> #endif +#if defined(ultrix) || defined(_ultrix) || defined(__ultrix) || defined(__ultrix__) +#if defined (vax) || defined (__vax) || defined (__vax__) || defined(mips) || defined(__mips) || defined(__mips__) || defined(MIPS) || defined(__MIPS__) +#include <signal.h> +#if defined(_SIZE_T_) || defined(SIGLOST) +#include <sys/utsname.h> +#endif +#endif +#endif main () { #if defined (sony) @@ -1555,18 +1567,23 @@ main () printf ("vax-dec-bsd\n"); exit (0); #endif #else +#if defined(_SIZE_T_) || defined(SIGLOST) + struct utsname un; + uname (&un); + printf ("vax-dec-ultrix%s\n", un.release); exit (0); +#else printf ("vax-dec-ultrix\n"); exit (0); #endif #endif +#endif #if defined(ultrix) || defined(_ultrix) || defined(__ultrix) || defined(__ultrix__) #if defined(mips) || defined(__mips) || defined(__mips__) || defined(MIPS) || defined(__MIPS__) -#include <signal.h> -#if defined(_SIZE_T_) /* >= ULTRIX4 */ - printf ("mips-dec-ultrix4\n"); exit (0); +#if defined(_SIZE_T_) || defined(SIGLOST) + struct utsname *un; + uname (&un); + printf ("mips-dec-ultrix%s\n", un.release); exit (0); #else -#if defined(ULTRIX3) || defined(ultrix3) || defined(SIGLOST) - printf ("mips-dec-ultrix3\n"); exit (0); -#endif + printf ("mips-dec-ultrix\n"); exit (0); #endif #endif #endif @@ -2,7 +2,7 @@ # Configuration validation subroutine script. # Copyright 1992-2019 Free Software Foundation, Inc. -timestamp='2019-01-05' +timestamp='2019-05-23' # This file is free software; you can redistribute it and/or modify it # under the terms of the GNU General Public License as published by @@ -1172,7 +1172,7 @@ case $cpu-$vendor in | asmjs \ | ba \ | be32 | be64 \ - | bfin | bs2000 \ + | bfin | bpf | bs2000 \ | c[123]* | c30 | [cjt]90 | c4x \ | c8051 | clipper | craynv | csky | cydra \ | d10v | d30v | dlx | dsp16xx \ diff --git a/doc/ChangeLog b/doc/ChangeLog index 364854d9..5ea91aaf 100644 --- a/doc/ChangeLog +++ b/doc/ChangeLog @@ -1,3 +1,13 @@ +2019-06-21 Arnold D. Robbins <arnold@skeeve.com> + + * gawktexi.in (Input Exercises): Remove exercise that is + no longer relevant. Thanks to Mark Krauze <daburashka@ya.ru> + for pointing this out. + +2019-06-21 Arnold D. Robbins <arnold@skeeve.com> + + * texinfo.tex: Updated from GNULIB. + 2019-06-18 Arnold D. Robbins <arnold@skeeve.com> * 5.0.1: Release tar ball made. diff --git a/doc/gawk.info b/doc/gawk.info index 1e8bf194..e5a52702 100644 --- a/doc/gawk.info +++ b/doc/gawk.info @@ -6393,12 +6393,6 @@ File: gawk.info, Node: Input Exercises, Prev: Input Summary, Up: Reading File associated with each ballot item, and print the total votes, including abstentions, for each item. - 2. *note Plain Getline::, presented a program to remove C-style - comments ('/* ... */') from the input. That program does not work - if one comment ends on one line and another one starts later on the - same line. That can be fixed by making one simple change. What is - it? - File: gawk.info, Node: Printing, Next: Expressions, Prev: Reading Files, Up: Top @@ -37035,478 +37029,478 @@ Node: Retrying Input278719 Node: Command-line directories279918 Node: Input Summary280824 Node: Input Exercises283996 -Node: Printing284724 -Node: Print286558 -Node: Print Examples288015 -Node: Output Separators290795 -Node: OFMT292812 -Node: Printf294168 -Node: Basic Printf294953 -Node: Control Letters296527 -Node: Format Modifiers301691 -Node: Printf Examples307706 -Node: Redirection310192 -Node: Special FD317033 -Ref: Special FD-Footnote-1320201 -Node: Special Files320275 -Node: Other Inherited Files320892 -Node: Special Network321893 -Node: Special Caveats322753 -Node: Close Files And Pipes323702 -Ref: table-close-pipe-return-values330609 -Ref: Close Files And Pipes-Footnote-1331422 -Ref: Close Files And Pipes-Footnote-2331570 -Node: Nonfatal331722 -Node: Output Summary334060 -Node: Output Exercises335282 -Node: Expressions335961 -Node: Values337149 -Node: Constants337827 -Node: Scalar Constants338518 -Ref: Scalar Constants-Footnote-1341042 -Node: Nondecimal-numbers341292 -Node: Regexp Constants344293 -Node: Using Constant Regexps344819 -Node: Standard Regexp Constants345441 -Node: Strong Regexp Constants348629 -Node: Variables351587 -Node: Using Variables352244 -Node: Assignment Options354154 -Node: Conversion356621 -Node: Strings And Numbers357145 -Ref: Strings And Numbers-Footnote-1360208 -Node: Locale influences conversions360317 -Ref: table-locale-affects363075 -Node: All Operators363693 -Node: Arithmetic Ops364322 -Node: Concatenation366828 -Ref: Concatenation-Footnote-1369675 -Node: Assignment Ops369782 -Ref: table-assign-ops374773 -Node: Increment Ops376086 -Node: Truth Values and Conditions379546 -Node: Truth Values380620 -Node: Typing and Comparison381668 -Node: Variable Typing382488 -Ref: Variable Typing-Footnote-1388951 -Ref: Variable Typing-Footnote-2389023 -Node: Comparison Operators389100 -Ref: table-relational-ops389519 -Node: POSIX String Comparison393014 -Ref: POSIX String Comparison-Footnote-1394709 -Ref: POSIX String Comparison-Footnote-2394848 -Node: Boolean Ops394932 -Ref: Boolean Ops-Footnote-1399414 -Node: Conditional Exp399506 -Node: Function Calls401242 -Node: Precedence405119 -Node: Locales408778 -Node: Expressions Summary410410 -Node: Patterns and Actions412983 -Node: Pattern Overview414103 -Node: Regexp Patterns415780 -Node: Expression Patterns416322 -Node: Ranges420103 -Node: BEGIN/END423211 -Node: Using BEGIN/END423972 -Ref: Using BEGIN/END-Footnote-1426708 -Node: I/O And BEGIN/END426814 -Node: BEGINFILE/ENDFILE429128 -Node: Empty432041 -Node: Using Shell Variables432358 -Node: Action Overview434632 -Node: Statements436957 -Node: If Statement438805 -Node: While Statement440300 -Node: Do Statement442328 -Node: For Statement443476 -Node: Switch Statement446647 -Node: Break Statement449033 -Node: Continue Statement451125 -Node: Next Statement452952 -Node: Nextfile Statement455335 -Node: Exit Statement457987 -Node: Built-in Variables460390 -Node: User-modified461523 -Node: Auto-set469290 -Ref: Auto-set-Footnote-1486097 -Ref: Auto-set-Footnote-2486303 -Node: ARGC and ARGV486359 -Node: Pattern Action Summary490572 -Node: Arrays493002 -Node: Array Basics494331 -Node: Array Intro495175 -Ref: figure-array-elements497150 -Ref: Array Intro-Footnote-1499854 -Node: Reference to Elements499982 -Node: Assigning Elements502446 -Node: Array Example502937 -Node: Scanning an Array504696 -Node: Controlling Scanning507718 -Ref: Controlling Scanning-Footnote-1513117 -Node: Numeric Array Subscripts513433 -Node: Uninitialized Subscripts515617 -Node: Delete517236 -Ref: Delete-Footnote-1519988 -Node: Multidimensional520045 -Node: Multiscanning523140 -Node: Arrays of Arrays524731 -Node: Arrays Summary529499 -Node: Functions531592 -Node: Built-in532630 -Node: Calling Built-in533711 -Node: Numeric Functions535707 -Ref: Numeric Functions-Footnote-1539735 -Ref: Numeric Functions-Footnote-2540383 -Ref: Numeric Functions-Footnote-3540431 -Node: String Functions540703 -Ref: String Functions-Footnote-1564561 -Ref: String Functions-Footnote-2564689 -Ref: String Functions-Footnote-3564937 -Node: Gory Details565024 -Ref: table-sub-escapes566815 -Ref: table-sub-proposed568334 -Ref: table-posix-sub569697 -Ref: table-gensub-escapes571238 -Ref: Gory Details-Footnote-1572061 -Node: I/O Functions572215 -Ref: table-system-return-values578683 -Ref: I/O Functions-Footnote-1580763 -Ref: I/O Functions-Footnote-2580911 -Node: Time Functions581031 -Ref: Time Functions-Footnote-1591702 -Ref: Time Functions-Footnote-2591770 -Ref: Time Functions-Footnote-3591928 -Ref: Time Functions-Footnote-4592039 -Ref: Time Functions-Footnote-5592151 -Ref: Time Functions-Footnote-6592378 -Node: Bitwise Functions592644 -Ref: table-bitwise-ops593238 -Ref: Bitwise Functions-Footnote-1599301 -Ref: Bitwise Functions-Footnote-2599474 -Node: Type Functions599665 -Node: I18N Functions602528 -Node: User-defined604179 -Node: Definition Syntax604991 -Ref: Definition Syntax-Footnote-1610678 -Node: Function Example610749 -Ref: Function Example-Footnote-1613671 -Node: Function Calling613693 -Node: Calling A Function614281 -Node: Variable Scope615239 -Node: Pass By Value/Reference618233 -Node: Function Caveats620877 -Ref: Function Caveats-Footnote-1622924 -Node: Return Statement623044 -Node: Dynamic Typing626023 -Node: Indirect Calls626953 -Ref: Indirect Calls-Footnote-1637205 -Node: Functions Summary637333 -Node: Library Functions640038 -Ref: Library Functions-Footnote-1643645 -Ref: Library Functions-Footnote-2643788 -Node: Library Names643959 -Ref: Library Names-Footnote-1647626 -Ref: Library Names-Footnote-2647849 -Node: General Functions647935 -Node: Strtonum Function649038 -Node: Assert Function652060 -Node: Round Function655386 -Node: Cliff Random Function656926 -Node: Ordinal Functions657942 -Ref: Ordinal Functions-Footnote-1661005 -Ref: Ordinal Functions-Footnote-2661257 -Node: Join Function661467 -Ref: Join Function-Footnote-1663237 -Node: Getlocaltime Function663437 -Node: Readfile Function667179 -Node: Shell Quoting669156 -Node: Data File Management670557 -Node: Filetrans Function671189 -Node: Rewind Function675285 -Node: File Checking677194 -Ref: File Checking-Footnote-1678528 -Node: Empty Files678729 -Node: Ignoring Assigns680708 -Node: Getopt Function682258 -Ref: Getopt Function-Footnote-1693727 -Node: Passwd Functions693927 -Ref: Passwd Functions-Footnote-1702766 -Node: Group Functions702854 -Ref: Group Functions-Footnote-1710752 -Node: Walking Arrays710959 -Node: Library Functions Summary713967 -Node: Library Exercises715373 -Node: Sample Programs715838 -Node: Running Examples716608 -Node: Clones717336 -Node: Cut Program718560 -Node: Egrep Program728489 -Ref: Egrep Program-Footnote-1736001 -Node: Id Program736111 -Node: Split Program739791 -Ref: Split Program-Footnote-1743249 -Node: Tee Program743378 -Node: Uniq Program746168 -Node: Wc Program753789 -Ref: Wc Program-Footnote-1758044 -Node: Miscellaneous Programs758138 -Node: Dupword Program759351 -Node: Alarm Program761381 -Node: Translate Program766236 -Ref: Translate Program-Footnote-1770801 -Node: Labels Program771071 -Ref: Labels Program-Footnote-1774422 -Node: Word Sorting774506 -Node: History Sorting778578 -Node: Extract Program780413 -Node: Simple Sed788467 -Node: Igawk Program791541 -Ref: Igawk Program-Footnote-1805872 -Ref: Igawk Program-Footnote-2806074 -Ref: Igawk Program-Footnote-3806196 -Node: Anagram Program806311 -Node: Signature Program809373 -Node: Programs Summary810620 -Node: Programs Exercises811834 -Ref: Programs Exercises-Footnote-1815963 -Node: Advanced Features816054 -Node: Nondecimal Data818044 -Node: Array Sorting819635 -Node: Controlling Array Traversal820335 -Ref: Controlling Array Traversal-Footnote-1828703 -Node: Array Sorting Functions828821 -Ref: Array Sorting Functions-Footnote-1833912 -Node: Two-way I/O834108 -Ref: Two-way I/O-Footnote-1841829 -Ref: Two-way I/O-Footnote-2842016 -Node: TCP/IP Networking842098 -Node: Profiling845216 -Node: Advanced Features Summary854231 -Node: Internationalization856075 -Node: I18N and L10N857555 -Node: Explaining gettext858242 -Ref: Explaining gettext-Footnote-1864134 -Ref: Explaining gettext-Footnote-2864319 -Node: Programmer i18n864484 -Ref: Programmer i18n-Footnote-1869433 -Node: Translator i18n869482 -Node: String Extraction870276 -Ref: String Extraction-Footnote-1871408 -Node: Printf Ordering871494 -Ref: Printf Ordering-Footnote-1874280 -Node: I18N Portability874344 -Ref: I18N Portability-Footnote-1876800 -Node: I18N Example876863 -Ref: I18N Example-Footnote-1880138 -Ref: I18N Example-Footnote-2880211 -Node: Gawk I18N880320 -Node: I18N Summary880969 -Node: Debugger882310 -Node: Debugging883310 -Node: Debugging Concepts883751 -Node: Debugging Terms885560 -Node: Awk Debugging888135 -Ref: Awk Debugging-Footnote-1889080 -Node: Sample Debugging Session889212 -Node: Debugger Invocation889746 -Node: Finding The Bug891132 -Node: List of Debugger Commands897606 -Node: Breakpoint Control898939 -Node: Debugger Execution Control902633 -Node: Viewing And Changing Data905995 -Node: Execution Stack909536 -Node: Debugger Info911173 -Node: Miscellaneous Debugger Commands915244 -Node: Readline Support920306 -Node: Limitations921202 -Node: Debugging Summary923756 -Node: Namespaces925035 -Node: Global Namespace926114 -Node: Qualified Names927512 -Node: Default Namespace928511 -Node: Changing The Namespace929252 -Node: Naming Rules930866 -Node: Internal Name Management932714 -Node: Namespace Example933756 -Node: Namespace And Features936318 -Node: Namespace Summary937753 -Node: Arbitrary Precision Arithmetic939230 -Node: Computer Arithmetic940717 -Ref: table-numeric-ranges944483 -Ref: table-floating-point-ranges944976 -Ref: Computer Arithmetic-Footnote-1945634 -Node: Math Definitions945691 -Ref: table-ieee-formats949007 -Ref: Math Definitions-Footnote-1949610 -Node: MPFR features949715 -Node: FP Math Caution951433 -Ref: FP Math Caution-Footnote-1952505 -Node: Inexactness of computations952874 -Node: Inexact representation953834 -Node: Comparing FP Values955194 -Node: Errors accumulate956435 -Node: Getting Accuracy957868 -Node: Try To Round960578 -Node: Setting precision961477 -Ref: table-predefined-precision-strings962174 -Node: Setting the rounding mode964004 -Ref: table-gawk-rounding-modes964378 -Ref: Setting the rounding mode-Footnote-1968309 -Node: Arbitrary Precision Integers968488 -Ref: Arbitrary Precision Integers-Footnote-1971663 -Node: Checking for MPFR971812 -Node: POSIX Floating Point Problems973286 -Ref: POSIX Floating Point Problems-Footnote-1977571 -Node: Floating point summary977609 -Node: Dynamic Extensions979799 -Node: Extension Intro981352 -Node: Plugin License982618 -Node: Extension Mechanism Outline983415 -Ref: figure-load-extension983854 -Ref: figure-register-new-function985419 -Ref: figure-call-new-function986511 -Node: Extension API Description988573 -Node: Extension API Functions Introduction990215 -Ref: table-api-std-headers992051 -Node: General Data Types995916 -Ref: General Data Types-Footnote-11004277 -Node: Memory Allocation Functions1004576 -Ref: Memory Allocation Functions-Footnote-11008786 -Node: Constructor Functions1008885 -Node: Registration Functions1012471 -Node: Extension Functions1013156 -Node: Exit Callback Functions1018478 -Node: Extension Version String1019728 -Node: Input Parsers1020391 -Node: Output Wrappers1033112 -Node: Two-way processors1037624 -Node: Printing Messages1039889 -Ref: Printing Messages-Footnote-11041060 -Node: Updating ERRNO1041213 -Node: Requesting Values1041952 -Ref: table-value-types-returned1042689 -Node: Accessing Parameters1043625 -Node: Symbol Table Access1044860 -Node: Symbol table by name1045372 -Ref: Symbol table by name-Footnote-11048396 -Node: Symbol table by cookie1048524 -Ref: Symbol table by cookie-Footnote-11052709 -Node: Cached values1052773 -Ref: Cached values-Footnote-11056309 -Node: Array Manipulation1056462 -Ref: Array Manipulation-Footnote-11057553 -Node: Array Data Types1057590 -Ref: Array Data Types-Footnote-11060248 -Node: Array Functions1060340 -Node: Flattening Arrays1064838 -Node: Creating Arrays1071814 -Node: Redirection API1076581 -Node: Extension API Variables1079414 -Node: Extension Versioning1080125 -Ref: gawk-api-version1080554 -Node: Extension GMP/MPFR Versioning1082285 -Node: Extension API Informational Variables1083913 -Node: Extension API Boilerplate1084986 -Node: Changes from API V11088960 -Node: Finding Extensions1090532 -Node: Extension Example1091091 -Node: Internal File Description1091889 -Node: Internal File Ops1095969 -Ref: Internal File Ops-Footnote-11107319 -Node: Using Internal File Ops1107459 -Ref: Using Internal File Ops-Footnote-11109842 -Node: Extension Samples1110116 -Node: Extension Sample File Functions1111645 -Node: Extension Sample Fnmatch1119294 -Node: Extension Sample Fork1120781 -Node: Extension Sample Inplace1121999 -Node: Extension Sample Ord1125303 -Node: Extension Sample Readdir1126139 -Ref: table-readdir-file-types1127028 -Node: Extension Sample Revout1127833 -Node: Extension Sample Rev2way1128422 -Node: Extension Sample Read write array1129162 -Node: Extension Sample Readfile1131104 -Node: Extension Sample Time1132199 -Node: Extension Sample API Tests1133547 -Node: gawkextlib1134039 -Node: Extension summary1136957 -Node: Extension Exercises1140659 -Node: Language History1141901 -Node: V7/SVR3.11143557 -Node: SVR41145709 -Node: POSIX1147143 -Node: BTL1148523 -Node: POSIX/GNU1149252 -Node: Feature History1155030 -Node: Common Extensions1171076 -Node: Ranges and Locales1172359 -Ref: Ranges and Locales-Footnote-11176975 -Ref: Ranges and Locales-Footnote-21177002 -Ref: Ranges and Locales-Footnote-31177237 -Node: Contributors1177458 -Node: History summary1183411 -Node: Installation1184791 -Node: Gawk Distribution1185735 -Node: Getting1186219 -Node: Extracting1187182 -Node: Distribution contents1188820 -Node: Unix Installation1195300 -Node: Quick Installation1195982 -Node: Shell Startup Files1198396 -Node: Additional Configuration Options1199485 -Node: Configuration Philosophy1201800 -Node: Non-Unix Installation1204169 -Node: PC Installation1204629 -Node: PC Binary Installation1205467 -Node: PC Compiling1205902 -Node: PC Using1207019 -Node: Cygwin1210572 -Node: MSYS1211671 -Node: VMS Installation1212172 -Node: VMS Compilation1212963 -Ref: VMS Compilation-Footnote-11214192 -Node: VMS Dynamic Extensions1214250 -Node: VMS Installation Details1215935 -Node: VMS Running1218188 -Node: VMS GNV1222467 -Node: VMS Old Gawk1223202 -Node: Bugs1223673 -Node: Bug address1224336 -Node: Usenet1227318 -Node: Maintainers1228322 -Node: Other Versions1229583 -Node: Installation summary1236671 -Node: Notes1237873 -Node: Compatibility Mode1238667 -Node: Additions1239449 -Node: Accessing The Source1240374 -Node: Adding Code1241811 -Node: New Ports1248030 -Node: Derived Files1252405 -Ref: Derived Files-Footnote-11258065 -Ref: Derived Files-Footnote-21258100 -Ref: Derived Files-Footnote-31258698 -Node: Future Extensions1258812 -Node: Implementation Limitations1259470 -Node: Extension Design1260653 -Node: Old Extension Problems1261797 -Ref: Old Extension Problems-Footnote-11263315 -Node: Extension New Mechanism Goals1263372 -Ref: Extension New Mechanism Goals-Footnote-11266736 -Node: Extension Other Design Decisions1266925 -Node: Extension Future Growth1269038 -Node: Notes summary1269874 -Node: Basic Concepts1271032 -Node: Basic High Level1271713 -Ref: figure-general-flow1271995 -Ref: figure-process-flow1272680 -Ref: Basic High Level-Footnote-11275981 -Node: Basic Data Typing1276166 -Node: Glossary1279494 -Node: Copying1311332 -Node: GNU Free Documentation License1348875 -Node: Index1373995 +Node: Printing284430 +Node: Print286264 +Node: Print Examples287721 +Node: Output Separators290501 +Node: OFMT292518 +Node: Printf293874 +Node: Basic Printf294659 +Node: Control Letters296233 +Node: Format Modifiers301397 +Node: Printf Examples307412 +Node: Redirection309898 +Node: Special FD316739 +Ref: Special FD-Footnote-1319907 +Node: Special Files319981 +Node: Other Inherited Files320598 +Node: Special Network321599 +Node: Special Caveats322459 +Node: Close Files And Pipes323408 +Ref: table-close-pipe-return-values330315 +Ref: Close Files And Pipes-Footnote-1331128 +Ref: Close Files And Pipes-Footnote-2331276 +Node: Nonfatal331428 +Node: Output Summary333766 +Node: Output Exercises334988 +Node: Expressions335667 +Node: Values336855 +Node: Constants337533 +Node: Scalar Constants338224 +Ref: Scalar Constants-Footnote-1340748 +Node: Nondecimal-numbers340998 +Node: Regexp Constants343999 +Node: Using Constant Regexps344525 +Node: Standard Regexp Constants345147 +Node: Strong Regexp Constants348335 +Node: Variables351293 +Node: Using Variables351950 +Node: Assignment Options353860 +Node: Conversion356327 +Node: Strings And Numbers356851 +Ref: Strings And Numbers-Footnote-1359914 +Node: Locale influences conversions360023 +Ref: table-locale-affects362781 +Node: All Operators363399 +Node: Arithmetic Ops364028 +Node: Concatenation366534 +Ref: Concatenation-Footnote-1369381 +Node: Assignment Ops369488 +Ref: table-assign-ops374479 +Node: Increment Ops375792 +Node: Truth Values and Conditions379252 +Node: Truth Values380326 +Node: Typing and Comparison381374 +Node: Variable Typing382194 +Ref: Variable Typing-Footnote-1388657 +Ref: Variable Typing-Footnote-2388729 +Node: Comparison Operators388806 +Ref: table-relational-ops389225 +Node: POSIX String Comparison392720 +Ref: POSIX String Comparison-Footnote-1394415 +Ref: POSIX String Comparison-Footnote-2394554 +Node: Boolean Ops394638 +Ref: Boolean Ops-Footnote-1399120 +Node: Conditional Exp399212 +Node: Function Calls400948 +Node: Precedence404825 +Node: Locales408484 +Node: Expressions Summary410116 +Node: Patterns and Actions412689 +Node: Pattern Overview413809 +Node: Regexp Patterns415486 +Node: Expression Patterns416028 +Node: Ranges419809 +Node: BEGIN/END422917 +Node: Using BEGIN/END423678 +Ref: Using BEGIN/END-Footnote-1426414 +Node: I/O And BEGIN/END426520 +Node: BEGINFILE/ENDFILE428834 +Node: Empty431747 +Node: Using Shell Variables432064 +Node: Action Overview434338 +Node: Statements436663 +Node: If Statement438511 +Node: While Statement440006 +Node: Do Statement442034 +Node: For Statement443182 +Node: Switch Statement446353 +Node: Break Statement448739 +Node: Continue Statement450831 +Node: Next Statement452658 +Node: Nextfile Statement455041 +Node: Exit Statement457693 +Node: Built-in Variables460096 +Node: User-modified461229 +Node: Auto-set468996 +Ref: Auto-set-Footnote-1485803 +Ref: Auto-set-Footnote-2486009 +Node: ARGC and ARGV486065 +Node: Pattern Action Summary490278 +Node: Arrays492708 +Node: Array Basics494037 +Node: Array Intro494881 +Ref: figure-array-elements496856 +Ref: Array Intro-Footnote-1499560 +Node: Reference to Elements499688 +Node: Assigning Elements502152 +Node: Array Example502643 +Node: Scanning an Array504402 +Node: Controlling Scanning507424 +Ref: Controlling Scanning-Footnote-1512823 +Node: Numeric Array Subscripts513139 +Node: Uninitialized Subscripts515323 +Node: Delete516942 +Ref: Delete-Footnote-1519694 +Node: Multidimensional519751 +Node: Multiscanning522846 +Node: Arrays of Arrays524437 +Node: Arrays Summary529205 +Node: Functions531298 +Node: Built-in532336 +Node: Calling Built-in533417 +Node: Numeric Functions535413 +Ref: Numeric Functions-Footnote-1539441 +Ref: Numeric Functions-Footnote-2540089 +Ref: Numeric Functions-Footnote-3540137 +Node: String Functions540409 +Ref: String Functions-Footnote-1564267 +Ref: String Functions-Footnote-2564395 +Ref: String Functions-Footnote-3564643 +Node: Gory Details564730 +Ref: table-sub-escapes566521 +Ref: table-sub-proposed568040 +Ref: table-posix-sub569403 +Ref: table-gensub-escapes570944 +Ref: Gory Details-Footnote-1571767 +Node: I/O Functions571921 +Ref: table-system-return-values578389 +Ref: I/O Functions-Footnote-1580469 +Ref: I/O Functions-Footnote-2580617 +Node: Time Functions580737 +Ref: Time Functions-Footnote-1591408 +Ref: Time Functions-Footnote-2591476 +Ref: Time Functions-Footnote-3591634 +Ref: Time Functions-Footnote-4591745 +Ref: Time Functions-Footnote-5591857 +Ref: Time Functions-Footnote-6592084 +Node: Bitwise Functions592350 +Ref: table-bitwise-ops592944 +Ref: Bitwise Functions-Footnote-1599007 +Ref: Bitwise Functions-Footnote-2599180 +Node: Type Functions599371 +Node: I18N Functions602234 +Node: User-defined603885 +Node: Definition Syntax604697 +Ref: Definition Syntax-Footnote-1610384 +Node: Function Example610455 +Ref: Function Example-Footnote-1613377 +Node: Function Calling613399 +Node: Calling A Function613987 +Node: Variable Scope614945 +Node: Pass By Value/Reference617939 +Node: Function Caveats620583 +Ref: Function Caveats-Footnote-1622630 +Node: Return Statement622750 +Node: Dynamic Typing625729 +Node: Indirect Calls626659 +Ref: Indirect Calls-Footnote-1636911 +Node: Functions Summary637039 +Node: Library Functions639744 +Ref: Library Functions-Footnote-1643351 +Ref: Library Functions-Footnote-2643494 +Node: Library Names643665 +Ref: Library Names-Footnote-1647332 +Ref: Library Names-Footnote-2647555 +Node: General Functions647641 +Node: Strtonum Function648744 +Node: Assert Function651766 +Node: Round Function655092 +Node: Cliff Random Function656632 +Node: Ordinal Functions657648 +Ref: Ordinal Functions-Footnote-1660711 +Ref: Ordinal Functions-Footnote-2660963 +Node: Join Function661173 +Ref: Join Function-Footnote-1662943 +Node: Getlocaltime Function663143 +Node: Readfile Function666885 +Node: Shell Quoting668862 +Node: Data File Management670263 +Node: Filetrans Function670895 +Node: Rewind Function674991 +Node: File Checking676900 +Ref: File Checking-Footnote-1678234 +Node: Empty Files678435 +Node: Ignoring Assigns680414 +Node: Getopt Function681964 +Ref: Getopt Function-Footnote-1693433 +Node: Passwd Functions693633 +Ref: Passwd Functions-Footnote-1702472 +Node: Group Functions702560 +Ref: Group Functions-Footnote-1710458 +Node: Walking Arrays710665 +Node: Library Functions Summary713673 +Node: Library Exercises715079 +Node: Sample Programs715544 +Node: Running Examples716314 +Node: Clones717042 +Node: Cut Program718266 +Node: Egrep Program728195 +Ref: Egrep Program-Footnote-1735707 +Node: Id Program735817 +Node: Split Program739497 +Ref: Split Program-Footnote-1742955 +Node: Tee Program743084 +Node: Uniq Program745874 +Node: Wc Program753495 +Ref: Wc Program-Footnote-1757750 +Node: Miscellaneous Programs757844 +Node: Dupword Program759057 +Node: Alarm Program761087 +Node: Translate Program765942 +Ref: Translate Program-Footnote-1770507 +Node: Labels Program770777 +Ref: Labels Program-Footnote-1774128 +Node: Word Sorting774212 +Node: History Sorting778284 +Node: Extract Program780119 +Node: Simple Sed788173 +Node: Igawk Program791247 +Ref: Igawk Program-Footnote-1805578 +Ref: Igawk Program-Footnote-2805780 +Ref: Igawk Program-Footnote-3805902 +Node: Anagram Program806017 +Node: Signature Program809079 +Node: Programs Summary810326 +Node: Programs Exercises811540 +Ref: Programs Exercises-Footnote-1815669 +Node: Advanced Features815760 +Node: Nondecimal Data817750 +Node: Array Sorting819341 +Node: Controlling Array Traversal820041 +Ref: Controlling Array Traversal-Footnote-1828409 +Node: Array Sorting Functions828527 +Ref: Array Sorting Functions-Footnote-1833618 +Node: Two-way I/O833814 +Ref: Two-way I/O-Footnote-1841535 +Ref: Two-way I/O-Footnote-2841722 +Node: TCP/IP Networking841804 +Node: Profiling844922 +Node: Advanced Features Summary853937 +Node: Internationalization855781 +Node: I18N and L10N857261 +Node: Explaining gettext857948 +Ref: Explaining gettext-Footnote-1863840 +Ref: Explaining gettext-Footnote-2864025 +Node: Programmer i18n864190 +Ref: Programmer i18n-Footnote-1869139 +Node: Translator i18n869188 +Node: String Extraction869982 +Ref: String Extraction-Footnote-1871114 +Node: Printf Ordering871200 +Ref: Printf Ordering-Footnote-1873986 +Node: I18N Portability874050 +Ref: I18N Portability-Footnote-1876506 +Node: I18N Example876569 +Ref: I18N Example-Footnote-1879844 +Ref: I18N Example-Footnote-2879917 +Node: Gawk I18N880026 +Node: I18N Summary880675 +Node: Debugger882016 +Node: Debugging883016 +Node: Debugging Concepts883457 +Node: Debugging Terms885266 +Node: Awk Debugging887841 +Ref: Awk Debugging-Footnote-1888786 +Node: Sample Debugging Session888918 +Node: Debugger Invocation889452 +Node: Finding The Bug890838 +Node: List of Debugger Commands897312 +Node: Breakpoint Control898645 +Node: Debugger Execution Control902339 +Node: Viewing And Changing Data905701 +Node: Execution Stack909242 +Node: Debugger Info910879 +Node: Miscellaneous Debugger Commands914950 +Node: Readline Support920012 +Node: Limitations920908 +Node: Debugging Summary923462 +Node: Namespaces924741 +Node: Global Namespace925820 +Node: Qualified Names927218 +Node: Default Namespace928217 +Node: Changing The Namespace928958 +Node: Naming Rules930572 +Node: Internal Name Management932420 +Node: Namespace Example933462 +Node: Namespace And Features936024 +Node: Namespace Summary937459 +Node: Arbitrary Precision Arithmetic938936 +Node: Computer Arithmetic940423 +Ref: table-numeric-ranges944189 +Ref: table-floating-point-ranges944682 +Ref: Computer Arithmetic-Footnote-1945340 +Node: Math Definitions945397 +Ref: table-ieee-formats948713 +Ref: Math Definitions-Footnote-1949316 +Node: MPFR features949421 +Node: FP Math Caution951139 +Ref: FP Math Caution-Footnote-1952211 +Node: Inexactness of computations952580 +Node: Inexact representation953540 +Node: Comparing FP Values954900 +Node: Errors accumulate956141 +Node: Getting Accuracy957574 +Node: Try To Round960284 +Node: Setting precision961183 +Ref: table-predefined-precision-strings961880 +Node: Setting the rounding mode963710 +Ref: table-gawk-rounding-modes964084 +Ref: Setting the rounding mode-Footnote-1968015 +Node: Arbitrary Precision Integers968194 +Ref: Arbitrary Precision Integers-Footnote-1971369 +Node: Checking for MPFR971518 +Node: POSIX Floating Point Problems972992 +Ref: POSIX Floating Point Problems-Footnote-1977277 +Node: Floating point summary977315 +Node: Dynamic Extensions979505 +Node: Extension Intro981058 +Node: Plugin License982324 +Node: Extension Mechanism Outline983121 +Ref: figure-load-extension983560 +Ref: figure-register-new-function985125 +Ref: figure-call-new-function986217 +Node: Extension API Description988279 +Node: Extension API Functions Introduction989921 +Ref: table-api-std-headers991757 +Node: General Data Types995622 +Ref: General Data Types-Footnote-11003983 +Node: Memory Allocation Functions1004282 +Ref: Memory Allocation Functions-Footnote-11008492 +Node: Constructor Functions1008591 +Node: Registration Functions1012177 +Node: Extension Functions1012862 +Node: Exit Callback Functions1018184 +Node: Extension Version String1019434 +Node: Input Parsers1020097 +Node: Output Wrappers1032818 +Node: Two-way processors1037330 +Node: Printing Messages1039595 +Ref: Printing Messages-Footnote-11040766 +Node: Updating ERRNO1040919 +Node: Requesting Values1041658 +Ref: table-value-types-returned1042395 +Node: Accessing Parameters1043331 +Node: Symbol Table Access1044566 +Node: Symbol table by name1045078 +Ref: Symbol table by name-Footnote-11048102 +Node: Symbol table by cookie1048230 +Ref: Symbol table by cookie-Footnote-11052415 +Node: Cached values1052479 +Ref: Cached values-Footnote-11056015 +Node: Array Manipulation1056168 +Ref: Array Manipulation-Footnote-11057259 +Node: Array Data Types1057296 +Ref: Array Data Types-Footnote-11059954 +Node: Array Functions1060046 +Node: Flattening Arrays1064544 +Node: Creating Arrays1071520 +Node: Redirection API1076287 +Node: Extension API Variables1079120 +Node: Extension Versioning1079831 +Ref: gawk-api-version1080260 +Node: Extension GMP/MPFR Versioning1081991 +Node: Extension API Informational Variables1083619 +Node: Extension API Boilerplate1084692 +Node: Changes from API V11088666 +Node: Finding Extensions1090238 +Node: Extension Example1090797 +Node: Internal File Description1091595 +Node: Internal File Ops1095675 +Ref: Internal File Ops-Footnote-11107025 +Node: Using Internal File Ops1107165 +Ref: Using Internal File Ops-Footnote-11109548 +Node: Extension Samples1109822 +Node: Extension Sample File Functions1111351 +Node: Extension Sample Fnmatch1119000 +Node: Extension Sample Fork1120487 +Node: Extension Sample Inplace1121705 +Node: Extension Sample Ord1125009 +Node: Extension Sample Readdir1125845 +Ref: table-readdir-file-types1126734 +Node: Extension Sample Revout1127539 +Node: Extension Sample Rev2way1128128 +Node: Extension Sample Read write array1128868 +Node: Extension Sample Readfile1130810 +Node: Extension Sample Time1131905 +Node: Extension Sample API Tests1133253 +Node: gawkextlib1133745 +Node: Extension summary1136663 +Node: Extension Exercises1140365 +Node: Language History1141607 +Node: V7/SVR3.11143263 +Node: SVR41145415 +Node: POSIX1146849 +Node: BTL1148229 +Node: POSIX/GNU1148958 +Node: Feature History1154736 +Node: Common Extensions1170782 +Node: Ranges and Locales1172065 +Ref: Ranges and Locales-Footnote-11176681 +Ref: Ranges and Locales-Footnote-21176708 +Ref: Ranges and Locales-Footnote-31176943 +Node: Contributors1177164 +Node: History summary1183117 +Node: Installation1184497 +Node: Gawk Distribution1185441 +Node: Getting1185925 +Node: Extracting1186888 +Node: Distribution contents1188526 +Node: Unix Installation1195006 +Node: Quick Installation1195688 +Node: Shell Startup Files1198102 +Node: Additional Configuration Options1199191 +Node: Configuration Philosophy1201506 +Node: Non-Unix Installation1203875 +Node: PC Installation1204335 +Node: PC Binary Installation1205173 +Node: PC Compiling1205608 +Node: PC Using1206725 +Node: Cygwin1210278 +Node: MSYS1211377 +Node: VMS Installation1211878 +Node: VMS Compilation1212669 +Ref: VMS Compilation-Footnote-11213898 +Node: VMS Dynamic Extensions1213956 +Node: VMS Installation Details1215641 +Node: VMS Running1217894 +Node: VMS GNV1222173 +Node: VMS Old Gawk1222908 +Node: Bugs1223379 +Node: Bug address1224042 +Node: Usenet1227024 +Node: Maintainers1228028 +Node: Other Versions1229289 +Node: Installation summary1236377 +Node: Notes1237579 +Node: Compatibility Mode1238373 +Node: Additions1239155 +Node: Accessing The Source1240080 +Node: Adding Code1241517 +Node: New Ports1247736 +Node: Derived Files1252111 +Ref: Derived Files-Footnote-11257771 +Ref: Derived Files-Footnote-21257806 +Ref: Derived Files-Footnote-31258404 +Node: Future Extensions1258518 +Node: Implementation Limitations1259176 +Node: Extension Design1260359 +Node: Old Extension Problems1261503 +Ref: Old Extension Problems-Footnote-11263021 +Node: Extension New Mechanism Goals1263078 +Ref: Extension New Mechanism Goals-Footnote-11266442 +Node: Extension Other Design Decisions1266631 +Node: Extension Future Growth1268744 +Node: Notes summary1269580 +Node: Basic Concepts1270738 +Node: Basic High Level1271419 +Ref: figure-general-flow1271701 +Ref: figure-process-flow1272386 +Ref: Basic High Level-Footnote-11275687 +Node: Basic Data Typing1275872 +Node: Glossary1279200 +Node: Copying1311038 +Node: GNU Free Documentation License1348581 +Node: Index1373701 End Tag Table diff --git a/doc/gawk.texi b/doc/gawk.texi index d3f7d8dd..25fb3486 100644 --- a/doc/gawk.texi +++ b/doc/gawk.texi @@ -9306,13 +9306,6 @@ one voter's votes. Come up with a way to define which columns are associated with each ballot item, and print the total votes, including abstentions, for each item. -@item -@ref{Plain Getline}, presented a program to remove C-style -comments (@samp{/* @dots{} */}) from the input. That program -does not work if one comment ends on one line and another one -starts later on the same line. -That can be fixed by making one simple change. What is it? - @end enumerate @c EXCLUDE END diff --git a/doc/gawktexi.in b/doc/gawktexi.in index 398e35da..c60b0238 100644 --- a/doc/gawktexi.in +++ b/doc/gawktexi.in @@ -8904,13 +8904,6 @@ one voter's votes. Come up with a way to define which columns are associated with each ballot item, and print the total votes, including abstentions, for each item. -@item -@ref{Plain Getline}, presented a program to remove C-style -comments (@samp{/* @dots{} */}) from the input. That program -does not work if one comment ends on one line and another one -starts later on the same line. -That can be fixed by making one simple change. What is it? - @end enumerate @c EXCLUDE END diff --git a/doc/texinfo.tex b/doc/texinfo.tex index 192284cc..ed3f0ee9 100644 --- a/doc/texinfo.tex +++ b/doc/texinfo.tex @@ -3,8 +3,7 @@ % Load plain if necessary, i.e., if running under initex. \expandafter\ifx\csname fmtname\endcsname\relax\input plain\fi % -\def\texinfoversion{2019-03-03.15} - +\def\texinfoversion{2019-06-01.23} % % Copyright 1985, 1986, 1988, 1990-2019 Free Software Foundation, Inc. % @@ -387,14 +386,8 @@ % take effect in \write's, yet the group defined by the \vbox ends % before the \shipout runs. % - \indexdummies % don't expand commands in the output. - \normalturnoffactive % \ in index entries must not stay \, e.g., if - % the page break happens to be in the middle of an example. - % We don't want .vr (or whatever) entries like this: - % \entry{{\indexbackslash }acronym}{32}{\code {\acronym}} - % "\acronym" won't work when it's read back in; - % it needs to be - % {\code {{\backslashcurfont }acronym} + \atdummies % don't expand commands in the output. + \turnoffactive \shipout\vbox{% % Do this early so pdf references go to the beginning of the page. \ifpdfmakepagedest \pdfdest name{\the\pageno} xyz\fi @@ -455,11 +448,10 @@ }% } -% First remove any @comment, then any @c comment. Also remove a @texinfoc -% comment (see \scanmacro for details). Pass the result on to \argcheckspaces. +% First remove any @comment, then any @c comment. Pass the result on to +% \argcheckspaces. \def\argremovecomment#1\comment#2\ArgTerm{\argremovec #1\c\ArgTerm} -\def\argremovec#1\c#2\ArgTerm{\argremovetexinfoc #1\texinfoc\ArgTerm} -\def\argremovetexinfoc#1\texinfoc#2\ArgTerm{\argcheckspaces#1\^^M\ArgTerm} +\def\argremovec#1\c#2\ArgTerm{\argcheckspaces#1\^^M\ArgTerm} % Each occurrence of `\^^M' or `<space>\^^M' is replaced by a single space. % @@ -1131,6 +1123,16 @@ where each line of input produces a line of output.} \fi \fi +\newif\ifpdforxetex +\pdforxetexfalse +\ifpdf + \pdforxetextrue +\fi +\ifx\XeTeXrevision\thisisundefined\else + \pdforxetextrue +\fi + + % PDF uses PostScript string constants for the names of xref targets, % for display in the outlines, and in other places. Thus, we have to % double any backslashes. Otherwise, a name like "\node" will be @@ -2173,7 +2175,7 @@ end % A few fonts for @defun names and args. \setfont\defbf\bfshape{10}{\magstep1}{OT1} \setfont\deftt\ttshape{10}{\magstep1}{OT1TT} -\setfont\defsl\slshape{10}{\magstep1}{OT1TT} +\setfont\defsl\slshape{10}{\magstep1}{OT1} \setfont\defttsl\ttslshape{10}{\magstep1}{OT1TT} \def\df{\let\ttfont=\deftt \let\bffont = \defbf \let\ttslfont=\defttsl \let\slfont=\defsl \bf} @@ -2321,7 +2323,7 @@ end % A few fonts for @defun names and args. \setfont\defbf\bfshape{10}{\magstephalf}{OT1} \setfont\deftt\ttshape{10}{\magstephalf}{OT1TT} -\setfont\defsl\slshape{10}{\magstephalf}{OT1TT} +\setfont\defsl\slshape{10}{\magstephalf}{OT1} \setfont\defttsl\ttslshape{10}{\magstephalf}{OT1TT} \def\df{\let\ttfont=\deftt \let\bffont = \defbf \let\slfont=\defsl \let\ttslfont=\defttsl \bf} @@ -2844,7 +2846,7 @@ end % @t, explicit typewriter. \def\t#1{% - {\tt \rawbackslash \plainfrenchspacing #1}% + {\tt \plainfrenchspacing #1}% \null } @@ -2871,7 +2873,6 @@ end % Turn off hyphenation. \nohyphenation % - \rawbackslash \plainfrenchspacing #1% }% @@ -3097,9 +3098,9 @@ end % Allow a ragged right output to aid breaking long URL's. Putting stretch in % between characters of the URL doesn't look good. \def\urefallowbreak{% - \hskip 0pt plus 1fil\relax + \hskip 0pt plus 4 em\relax \allowbreak - \hskip 0pt plus -1fil\relax + \hskip 0pt plus -4 em\relax } \urefbreakstyle after @@ -3112,7 +3113,7 @@ end % So now @email is just like @uref, unless we are pdf. % %\def\email#1{\angleleft{\tt #1}\angleright} -\ifpdf +\ifpdforxetex \def\email#1{\doemail#1,,\finish} \def\doemail#1,#2,#3\finish{\begingroup \unsepspaces @@ -3122,18 +3123,7 @@ end \endlink \endgroup} \else - \ifx\XeTeXrevision\thisisundefined - \let\email=\uref - \else - \def\email#1{\doemail#1,,\finish} - \def\doemail#1,#2,#3\finish{\begingroup - \unsepspaces - \pdfurl{mailto:#1}% - \setbox0 = \hbox{\ignorespaces #2}% - \ifdim\wd0>0pt\unhbox0\else\code{#1}\fi - \endlink - \endgroup} - \fi + \let\email=\uref \fi % @kbdinputstyle -- arg is `distinct' (@kbd uses slanted tty font always), @@ -4667,19 +4657,6 @@ end } } -% We have this subroutine so that we can handle at least some @value's -% properly in indexes (we call \makevalueexpandable in \indexdummies). -% The command has to be fully expandable (if the variable is set), since -% the result winds up in the index file. This means that if the -% variable's value contains other Texinfo commands, it's almost certain -% it will fail (although perhaps we could fix that with sufficient work -% to do a one-level expansion on the result, instead of complete). -% -% Unfortunately, this has the consequence that when _ is in the *value* -% of an @set, it does not print properly in the roman fonts (get the cmr -% dot accent at position 126 instead). No fix comes to mind, and it's -% been this way since 2003 or earlier, so just ignore it. -% \def\expandablevalue#1{% \expandafter\ifx\csname SET#1\endcsname\relax {[No value for ``#1'']}% @@ -4708,7 +4685,7 @@ end % if possible, otherwise sort late. \def\indexnofontsvalue#1{% \expandafter\ifx\csname SET#1\endcsname\relax - ZZZZZZZ + ZZZZZZZ% \else \csname SET#1\endcsname \fi @@ -4858,23 +4835,8 @@ end \def\docodeindexxxx #1{\doind{\indexname}{\code{#1}}} -% Used when writing an index entry out to an index file to prevent -% expansion of Texinfo commands that can appear in an index entry. -% -\def\indexdummies{% - \escapechar = `\\ % use backslash in output files. - \definedummyletter\@% - \definedummyletter\ % - % - % For texindex which always views { and } as separators. - \def\{{\lbracechar{}}% - \def\}{\rbracechar{}}% - % - % Do the redefinitions. - \definedummies -} - -% Used for the aux and toc files, where @ is the escape character. +% Used for the aux, toc and index files to prevent expansion of Texinfo +% commands. % \def\atdummies{% \definedummyletter\@% @@ -4904,8 +4866,7 @@ end \def\definedummyletter#1{\def#1{\string#1}}% \let\definedummyaccent\definedummyletter -% Called from \indexdummies and \atdummies, to effectively prevent -% the expansion of commands. +% Called from \atdummies to prevent the expansion of commands. % \def\definedummies{% % @@ -4954,6 +4915,7 @@ end % Assorted special characters. \definedummyword\atchar \definedummyword\arrow + \definedummyword\backslashchar \definedummyword\bullet \definedummyword\comma \definedummyword\copyright @@ -4990,6 +4952,8 @@ end \definedummyword\sup \definedummyword\textdegree % + \definedummyword\subentry + % % We want to disable all macros so that they are not expanded by \write. \macrolist \let\value\dummyvalue @@ -5070,11 +5034,10 @@ end \commondummyword\xref } -% This does nothing, but for a time it was recommended to use -% \usebracesinindexestrue to be able to use braces in index entries. - \let\indexlbrace\relax \let\indexrbrace\relax +\let\indexatchar\relax +\let\indexbackslash\relax {\catcode`\@=0 \catcode`\\=13 @@ -5108,10 +5071,8 @@ end } \gdef\indexnonalnumreappear{% - \useindexbackslash \let-\normaldash \let<\normalless - \def\@{@}% } } @@ -5222,8 +5183,6 @@ end -\let\SETmarginindex=\relax % put index entries in margin (undocumented)? - % #1 is the index name, #2 is the entry text. \def\doind#1#2{% \iflinks @@ -5255,13 +5214,6 @@ end \fi} \def\indexisfl{fl} -% Output \ as {\indexbackslash}, because \ is an escape character in -% the index files. -\let\indexbackslash=\relax -{\catcode`\@=0 \catcode`\\=\active - @gdef@useindexbackslash{@def\{{@indexbackslash}}} -} - % Definition for writing index entry sort key. { \catcode`\-=13 @@ -5273,14 +5225,31 @@ end \xdef\indexsortkey{#1}\endgroup} } +\def\indexwriteseealso#1{ + \gdef\pagenumbertext{\string\seealso{#1}}% +} +\def\indexwriteseeentry#1{ + \gdef\pagenumbertext{\string\seeentry{#1}}% +} + +% The default definitions +\def\sortas#1{}% +\def\seealso#1{\i{\putwordSeeAlso}\ #1}% for sorted index file only +\def\putwordSeeAlso{See also} +\def\seeentry#1{\i{\putwordSee}\ #1}% for sorted index file only + + % Given index entry text like "aaa @subentry bbb @sortas{ZZZ}": % * Set \bracedtext to "{aaa}{bbb}" % * Set \fullindexsortkey to "aaa @subentry ZZZ" +% * If @seealso occurs, set \pagenumbertext % \def\splitindexentry#1{% \gdef\fullindexsortkey{}% \xdef\bracedtext{}% \def\sep{}% + \def\seealso##1{}% + \def\seeentry##1{}% \expandafter\doindexsegment#1\subentry\finish\subentry } @@ -5292,7 +5261,6 @@ end % % Fully expand the segment, throwing away any @sortas directives, and % trim spaces. - \def\sortas##1{}% \edef\trimmed{\segment}% \edef\trimmed{\expandafter\eatspaces\expandafter{\trimmed}}% % @@ -5302,16 +5270,23 @@ end % font commands turned off. \bgroup \let\sortas\indexwritesortas + \let\seealso\indexwriteseealso + \let\seeentry\indexwriteseeentry \indexnofonts % The braces around the commands are recognized by texindex. - \def\lbracechar{{\indexlbrace}}% - \def\rbracechar{{\indexrbrace}}% + \def\lbracechar{{\string\indexlbrace}}% + \def\rbracechar{{\string\indexrbrace}}% \let\{=\lbracechar \let\}=\rbracechar + \def\@{{\string\indexatchar}}% + \def\atchar##1{\@}% + \def\backslashchar{{\string\indexbackslash}}% + \uccode`\~=`\\ \uppercase{\let~\backslashchar}% % \let\indexsortkey\empty + \global\let\pagenumbertext\empty % Execute the segment and throw away the typeset output. This executes - % any @sortas commands in this segment. + % any @sortas or @seealso commands in this segment. \setbox\dummybox = \hbox{\segment}% \ifx\indexsortkey\empty{% \indexnonalnumdisappear @@ -5332,21 +5307,40 @@ end \fi } \def\isfinish{\finish}% +\newbox\dummybox % used above \let\subentry\relax -% Write the entry in \toks0 to the index file. +% Use \ instead of @ in index files. To support old texi2dvi and texindex. +% This works without changing the escape character used in the toc or aux +% files because the index entries are fully expanded here, and \string uses +% the current value of \escapechar. +\def\escapeisbackslash{\escapechar=`\\} + +% Use \ in index files by default. texi2dvi didn't support @ as the escape +% character (as it checked for "\entry" in the files, and not "@entry"). When +% the new version of texi2dvi has had a chance to become more prevalent, then +% the escape character can change back to @ again. This should be an easy +% change to make now because both @ and \ are only used as escape characters in +% index files, never standing for themselves. +% +\set txiindexescapeisbackslash + +% Write the entry in \indextext to the index file. % \def\doindwrite{% - % Put the index entry in the margin if desired. - \ifx\SETmarginindex\relax\else - \insert\margin{\hbox{\vrule height8pt depth3pt width0pt \the\toks0}}% + \maybemarginindex + % + \atdummies + % + \expandafter\ifx\csname SETtxiindexescapeisbackslash\endcsname\relax\else + \escapeisbackslash \fi % - % Remember, we are within a group. - \indexdummies % Must do this here, since \bf, etc expand at this stage - \useindexbackslash % \indexbackslash isn't defined now so it will be output - % as is; and it will print as backslash. + % For texindex which always views { and } as separators. + \def\{{\lbracechar{}}% + \def\}{\rbracechar{}}% + \uccode`\~=`\\ \uppercase{\def~{\backslashchar{}}}% % % Split the entry into primary entry and any subentries, and get the index % sort key. @@ -5360,11 +5354,21 @@ end % \edef\temp{% \write\writeto{% - \string\entry{\fullindexsortkey}{\noexpand\folio}\bracedtext}% + \string\entry{\fullindexsortkey}% + {\ifx\pagenumbertext\empty\noexpand\folio\else\pagenumbertext\fi}% + \bracedtext}% }% \temp } -\newbox\dummybox % used above + +% Put the index entry in the margin if desired (undocumented). +\def\maybemarginindex{% + \ifx\SETmarginindex\relax\else + \insert\margin{\hbox{\vrule height8pt depth3pt width0pt \relax\indextext}}% + \fi +} +\let\SETmarginindex=\relax + % Take care of unwanted page breaks/skips around a whatsit: % @@ -5452,9 +5456,14 @@ end % \entry {topic}{pagelist} % for a topic that is used without subtopics % \primary {topic} +% \entry {topic}{} % for the beginning of a topic that is used with subtopics % \secondary {subtopic}{pagelist} % for each subtopic. +% \secondary {subtopic}{} +% for a subtopic with sub-subtopics +% \tertiary {subtopic}{subsubtopic}{pagelist} +% for each sub-subtopic. % Define the user-accessible indexing commands % @findex, @vindex, @kindex, @cindex. @@ -5479,14 +5488,10 @@ end \plainfrenchspacing \everypar = {}% don't want the \kern\-parindent from indentation suppression. % - % See if the index file exists and is nonempty. - % Change catcode of @ here so that if the index file contains - % \initial {@} - % as its first line, TeX doesn't complain about mismatched braces - % (because it thinks @} is a control sequence). - \catcode`\@ = 12 % See comment in \requireopenindexfile. \def\indexname{#1}\ifx\indexname\indexisfl\def\indexname{f1}\fi + % + % See if the index file exists and is nonempty. \openin 1 \jobname.\indexname s \ifeof 1 % \enddoublecolumns gets confused if there is no text in the index, @@ -5496,8 +5501,6 @@ end \putwordIndexNonexistent \typeout{No file \jobname.\indexname s.}% \else - \catcode`\\ = 0 - % % If the index file exists but is empty, then \openin leaves \ifeof % false. We have to make TeX try to read something from the file, so % it can discover if there is anything in it. @@ -5505,47 +5508,51 @@ end \ifeof 1 \putwordIndexIsEmpty \else - % Index files are almost Texinfo source, but we use \ as the escape - % character. It would be better to use @, but that's too big a change - % to make right now. - \def\indexbackslash{\ttbackslash}% - \let\indexlbrace\{ % Likewise, set these sequences for braces - \let\indexrbrace\} % used in the sort key. - \begindoublecolumns - \let\dotheinsertentrybox\dotheinsertentryboxwithpenalty - % - % Read input from the index file line by line. - \loopdo - \ifeof1 \else - \read 1 to \nextline - \fi - % - \indexinputprocessing - \thisline - % - \ifeof1\else - \let\thisline\nextline - \repeat - %% - \enddoublecolumns + \expandafter\printindexzz\thisline\relax\relax\finish% \fi \fi \closein 1 \endgroup} -\def\loopdo#1\repeat{\def\body{#1}\loopdoxxx} -\def\loopdoxxx{\let\next=\relax\body\let\next=\loopdoxxx\fi\next} -\def\indexinputprocessing{% - \ifeof1 - \let\firsttoken\relax +% If the index file starts with a backslash, forgo reading the index +% file altogether. If somebody upgrades texinfo.tex they may still have +% old index files using \ as the escape character. Reading this would +% at best lead to typesetting garbage, at worst a TeX syntax error. +\def\printindexzz#1#2\finish{% + \expandafter\ifx\csname SETtxiindexescapeisbackslash\endcsname\relax + \uccode`\~=`\\ \uppercase{\if\noexpand~}\noexpand#1 + \expandafter\ifx\csname SETtxiskipindexfileswithbackslash\endcsname\relax +\errmessage{% +ERROR: A sorted index file in an obsolete format was skipped. +To fix this problem, please upgrade your version of 'texi2dvi' +or 'texi2pdf' to that at <https://ftp.gnu.org/gnu/texinfo>. +If you are using an old version of 'texindex' (part of the Texinfo +distribution), you may also need to upgrade to a newer version (at least 6.0). +You may be able to typeset the index if you run +'texindex \jobname.\indexname' yourself. +You could also try setting the 'txiindexescapeisbackslash' flag by +running a command like +'texi2dvi -t "@set txiindexescapeisbackslash" \jobname.texi'. If you do +this, Texinfo will try to use index files in the old format. +If you continue to have problems, deleting the index files and starting again +might help (with 'rm \jobname.?? \jobname.??s')% +}% + \else + (Skipped sorted index file in obsolete format) + \fi + \else + \begindoublecolumns + \input \jobname.\indexname s + \enddoublecolumns + \fi \else - \edef\act{\gdef\noexpand\firsttoken{\getfirsttoken\nextline}}% - \act + \begindoublecolumns + \catcode`\\=0\relax + \catcode`\@=12\relax + \input \jobname.\indexname s + \enddoublecolumns \fi } -\def\getfirsttoken#1{\expandafter\getfirsttokenx#1\endfirsttoken} -\long\def\getfirsttokenx#1#2\endfirsttoken{\noexpand#1} - % These macros are used by the sorted index file itself. % Change them to control the appearance of the index. @@ -5554,12 +5561,19 @@ end \catcode`\|=13 \catcode`\<=13 \catcode`\>=13 \catcode`\+=13 \catcode`\"=13 \catcode`\$=3 \gdef\initialglyphs{% + % special control sequences used in the index sort key + \let\indexlbrace\{% + \let\indexrbrace\}% + \let\indexatchar\@% + \def\indexbackslash{\math{\backslash}}% + % % Some changes for non-alphabetic characters. Using the glyphs from the % math fonts looks more consistent than the typewriter font used elsewhere % for these characters. - \def\indexbackslash{\math{\backslash}}% - \let\\=\indexbackslash + \uccode`\~=`\\ \uppercase{\def~{\math{\backslash}}} % + % In case @\ is used for backslash + \uppercase{\let\\=~} % Can't get bold backslash so don't use bold forward slash \catcode`\/=13 \def/{{\secrmnotbold \normalslash}}% @@ -5619,12 +5633,6 @@ end \def\entry{% \begingroup % - % For pdfTeX and XeTeX. - % The redefinition of \domark stops marks being added in \pdflink to - % preserve coloured links across page boundaries. Otherwise the marks - % would get in the way of \lastbox in \insertentrybox. - \let\domark\relax - % % Start a new paragraph if necessary, so our assignments below can't % affect previous text. \par @@ -5657,35 +5665,31 @@ end \gdef\finishentry#1{% \egroup % end box A \dimen@ = \wd\boxA % Length of text of entry - \global\setbox\boxA=\hbox\bgroup\unhbox\boxA - % #1 is the page number. - % - % Get the width of the page numbers, and only use - % leaders if they are present. - \global\setbox\boxB = \hbox{#1}% - \ifdim\wd\boxB = 0pt - \null\nobreak\hfill\ % - \else - % - \null\nobreak\indexdotfill % Have leaders before the page number. + \global\setbox\boxA=\hbox\bgroup + \unhbox\boxA + % #1 is the page number. % - \ifpdf - \pdfgettoks#1.% - \hskip\skip\thinshrinkable\the\toksA + % Get the width of the page numbers, and only use + % leaders if they are present. + \global\setbox\boxB = \hbox{#1}% + \ifdim\wd\boxB = 0pt + \null\nobreak\hfill\ % \else - \ifx\XeTeXrevision\thisisundefined - \hskip\skip\thinshrinkable #1% - \else + % + \null\nobreak\indexdotfill % Have leaders before the page number. + % + \ifpdforxetex \pdfgettoks#1.% \hskip\skip\thinshrinkable\the\toksA + \else + \hskip\skip\thinshrinkable #1% \fi \fi - \fi \egroup % end \boxA \ifdim\wd\boxB = 0pt - \global\setbox\entrybox=\vbox{\unhbox\boxA}% - \else - \global\setbox\entrybox=\vbox\bgroup + \noindent\unhbox\boxA\par + \nobreak + \else\bgroup % We want the text of the entries to be aligned to the left, and the % page numbers to be aligned to the right. % @@ -5751,55 +5755,11 @@ end \egroup % The \vbox \fi \endgroup - \dotheinsertentrybox }} \newskip\thinshrinkable \skip\thinshrinkable=.15em minus .15em -\newbox\entrybox -\def\insertentrybox{% - \ourunvbox\entrybox -} - -% default definition -\let\dotheinsertentrybox\insertentrybox - -% Use \lastbox to take apart vbox box by box, and add each sub-box -% to the current vertical list. -\def\ourunvbox#1{% -\bgroup % for local binding of \delayedbox - % Remove the last box from box #1 - \global\setbox#1=\vbox{% - \unvbox#1% - \unskip % remove any glue - \unpenalty - \global\setbox\interbox=\lastbox - }% - \setbox\delayedbox=\box\interbox - \ifdim\ht#1=0pt\else - \ourunvbox#1 % Repeat on what's left of the box - \nobreak - \fi - \box\delayedbox -\egroup -} -\newbox\delayedbox -\newbox\interbox - -% Used from \printindex. \firsttoken should be the first token -% after the \entry. If it's not another \entry, we are at the last -% line of a group of index entries, so insert a penalty to discourage -% widowed index entries. -\def\dotheinsertentryboxwithpenalty{% - \ifx\firsttoken\isentry - \else - \penalty 9000 - \fi - \insertentrybox -} -\def\isentry{\entry}% - % Like plain.tex's \dotfill, except uses up at least 1 em. % The filll stretch here overpowers both the fil and fill stretch to push % the page number to the right. @@ -5809,24 +5769,15 @@ end \def\primary #1{\line{#1\hfil}} -\newskip\secondaryindent \secondaryindent=0.5cm -\def\secondary#1#2{{% - \parfillskip=0in - \parskip=0in - \hangindent=1in - \hangafter=1 - \noindent\hskip\secondaryindent\hbox{#1}\indexdotfill - \ifpdf - \pdfgettoks#2.\ \the\toksA % The page number ends the paragraph. - \else - \ifx\XeTeXrevision\thisisundefined - #2 - \else - \pdfgettoks#2.\ \the\toksA % The page number ends the paragraph. - \fi - \fi - \par -}} +\def\secondary{\indententry{0.5cm}} +\def\tertiary{\indententry{1cm}} + +\def\indententry#1#2#3{% + \bgroup + \leftskip=#1 + \entry{#2}{#3}% + \egroup +} % Define two-column mode, which we use to typeset indexes. % Adapted from the TeXbook, page 416, which is to say, @@ -5844,17 +5795,6 @@ end \output = {% \savetopmark % - % Here is a possibility not foreseen in manmac: if we accumulate a - % whole lot of material, we might end up calling this \output - % routine twice in a row (see the doublecol-lose test, which is - % essentially a couple of indexes with @setchapternewpage off). In - % that case we just ship out what is in \partialpage with the normal - % output routine. Generally, \partialpage will be empty when this - % runs and this will be a no-op. See the indexspread.tex test case. - \ifvoid\partialpage \else - \onepageout{\pagecontents\partialpage}% - \fi - % \global\setbox\partialpage = \vbox{% % Unvbox the main output page. \unvbox\PAGE @@ -5926,7 +5866,7 @@ end } -% Finished with with double columns. +% Finished with double columns. \def\enddoublecolumns{% % The following penalty ensures that the page builder is exercised % _before_ we change the output routine. This is necessary in the @@ -6134,11 +6074,9 @@ end % @raisesections: treat @section as chapter, @subsection as section, etc. \def\raisesections{\global\advance\secbase by -1} -\let\up=\raisesections % original BFox name % @lowersections: treat @chapter as section, @section as subsection, etc. \def\lowersections{\global\advance\secbase by 1} -\let\down=\lowersections % original BFox name % we only have subsub. \chardef\maxseclevel = 3 @@ -6790,13 +6728,8 @@ end % 1 and 2 (the page numbers aren't printed), and so are the first % two pages of the document. Thus, we'd have two destinations named % `1', and two named `2'. - \ifpdf + \ifpdforxetex \global\pdfmakepagedesttrue - \else - \ifx\XeTeXrevision\thisisundefined - \else - \global\pdfmakepagedesttrue - \fi \fi } @@ -7159,11 +7092,7 @@ end % @cartouche ... @end cartouche: draw rectangle w/rounded corners around % environment contents. -\font\circle=lcircle10 -\newdimen\circthick -\newdimen\cartouter\newdimen\cartinner -\newskip\normbskip\newskip\normpskip\newskip\normlskip -\circthick=\fontdimen8\circle + % \def\ctl{{\circle\char'013\hskip -6pt}}% 6pt from pl file: 1/2charwidth \def\ctr{{\hskip 6pt\circle\char'010}} @@ -7178,7 +7107,18 @@ end % \newskip\lskip\newskip\rskip +% only require the font if @cartouche is actually used +\def\cartouchefontdefs{% + \font\circle=lcircle10\relax + \circthick=\fontdimen8\circle +} +\newdimen\circthick +\newdimen\cartouter\newdimen\cartinner +\newskip\normbskip\newskip\normpskip\newskip\normlskip + + \envdef\cartouche{% + \cartouchefontdefs \ifhmode\par\fi % can't be in the midst of a paragraph. \startsavinginserts \lskip=\leftskip \rskip=\rightskip @@ -8050,36 +7990,18 @@ end } \fi -% alias because \c means cedilla in @tex or @math -\let\texinfoc=\c - -\newcount\savedcatcodeone -\newcount\savedcatcodetwo - % Used at the time of macro expansion. % Argument is macro body with arguments substituted \def\scanmacro#1{% \newlinechar`\^^M \def\xeatspaces{\eatspaces}% % - % Temporarily undo catcode changes of \printindex. Set catcode of @ to - % 0 so that @-commands in macro expansions aren't printed literally when - % formatting an index file, where \ is used as the escape character. - \savedcatcodeone=\catcode`\@ - \savedcatcodetwo=\catcode`\\ - \catcode`\@=0 - \catcode`\\=\active - % % Process the macro body under the current catcode regime. - \scantokens{#1@texinfoc}% - % - \catcode`\@=\savedcatcodeone - \catcode`\\=\savedcatcodetwo + \scantokens{#1@comment}% % - % The \texinfoc is to remove the \newlinechar added by \scantokens, and - % can be noticed by \parsearg. - % We avoid surrounding the call to \scantokens with \bgroup and \egroup - % to allow macros to open or close groups themselves. + % The \comment is to remove the \newlinechar added by \scantokens, and + % can be noticed by \parsearg. Note \c isn't used because this means cedilla + % in math mode. } % Used for copying and captions @@ -8180,12 +8102,14 @@ end \def\macroargctxt{% \scanctxt \catcode`\ =\active + \catcode`\@=\other \catcode`\^^M=\other \catcode`\\=\active } \def\macrolineargctxt{% used for whole-line arguments without braces \scanctxt + \catcode`\@=\other \catcode`\{=\other \catcode`\}=\other } @@ -8749,9 +8673,29 @@ end % also remove a trailing comma, in case of something like this: % @node Help-Cross, , , Cross-refs \def\donode#1 ,#2\finishnodeparse{\dodonode #1,\finishnodeparse} -\def\dodonode#1,#2\finishnodeparse{\gdef\lastnode{#1}} +\def\dodonode#1,#2\finishnodeparse{\gdef\lastnode{#1}\omittopnode} + +% Used so that the @top node doesn't have to be wrapped in an @ifnottex +% conditional. +% \doignore goes to more effort to skip nested conditionals but we don't need +% that here. +\def\omittopnode{% + \ifx\lastnode\wordTop + \expandafter\ignorenode\fi +} +\def\wordTop{Top} + +% Until the next @node or @bye command, divert output to a box that is not +% output. +\def\ignorenode{\setbox\dummybox\vbox\bgroup\def\node{\egroup\node}% +\ignorenodebye +} + +{\let\bye\relax +\gdef\ignorenodebye{\let\bye\ignorenodebyedef} +\gdef\ignorenodebyedef{\egroup(`Top' node ignored)\bye}} +% The redefinition of \bye here is because it is declared \outer -\let\nwnode=\node \let\lastnode=\empty % Write a cross-reference definition for the current node. #1 is the @@ -9226,19 +9170,6 @@ end \catcode`\^^]=\other \catcode`\^^^=\other \catcode`\^^_=\other - % It was suggested to set the catcode of ^ to 7, which would allow ^^e4 etc. - % in xref tags, i.e., node names. But since ^^e4 notation isn't - % supported in the main text, it doesn't seem desirable. Furthermore, - % that is not enough: for node names that actually contain a ^ - % character, we would end up writing a line like this: 'xrdef {'hat - % b-title}{'hat b} and \xrdef does a \csname...\endcsname on the first - % argument, and \hat is not an expandable control sequence. It could - % all be worked out, but why? Either we support ^^ or we don't. - % - % The other change necessary for this was to define \auxhat: - % \def\auxhat{\def^{'hat }}% extra space so ok if followed by letter - % and then to call \auxhat in \setq. - % \catcode`\^=\other % % Special characters. Should be turned off anyway, but... @@ -9256,14 +9187,7 @@ end \catcode`\%=\other \catcode`+=\other % avoid \+ for paranoia even though we've turned it off % - % This is to support \ in node names and titles, since the \ - % characters end up in a \csname. It's easier than - % leaving it active and making its active definition an actual \ - % character. What I don't understand is why it works in the *value* - % of the xrdef. Seems like it should be a catcode12 \, and that - % should not typeset properly. But it works, so I'm moving on for - % now. --karl, 15jan04. - \catcode`\\=\other + \catcode`\\=\active % % @ is our escape character in .aux files, and we need braces. \catcode`\{=1 @@ -11534,11 +11458,9 @@ directory should work if nowhere else does.} % \backslashcurfont outputs one backslash character in current font, % as in \char`\\. \global\chardef\backslashcurfont=`\\ -\global\let\rawbackslashxx=\backslashcurfont % let existing .??s files work -% \realbackslash is an actual character `\' with catcode other, and -% \doublebackslash is two of them (for the pdf outlines). -{\catcode`\\=\other @gdef@realbackslash{\} @gdef@doublebackslash{\\}} +% \realbackslash is an actual character `\' with catcode other. +{\catcode`\\=\other @gdef@realbackslash{\}} % In Texinfo, backslash is an active character; it prints the backslash % in fixed width font. @@ -11556,10 +11478,8 @@ directory should work if nowhere else does.} @def@ttbackslash{{@tt @ifmmode @mathchar29020 @else @backslashcurfont @fi}} @let@backslashchar = @ttbackslash % @backslashchar{} is for user documents. -% \rawbackslash defines an active \ to do \backslashcurfont. % \otherbackslash defines an active \ to be a literal `\' character with -% catcode other. We switch back and forth between these. -@gdef@rawbackslash{@let\=@backslashcurfont} +% catcode other. @gdef@otherbackslash{@let\=@realbackslash} % Same as @turnoffactive except outputs \ as {\tt\char`\\} instead of @@ -11631,7 +11551,7 @@ directory should work if nowhere else does.} @ifx\@eatinput @let\ = @ttbackslash @fi @catcode13=5 % regular end of line @enableemergencynewline - @let@c=@texinfoc + @let@c=@comment @let@parsearg@originalparsearg % Also turn back on active characters that might appear in the input % file name, in case not using a pre-dumped format. diff --git a/extension/build-aux/ChangeLog b/extension/build-aux/ChangeLog index f7abc792..79d602ee 100644 --- a/extension/build-aux/ChangeLog +++ b/extension/build-aux/ChangeLog @@ -1,3 +1,7 @@ +2019-06-21 Arnold D. Robbins <arnold@skeeve.com> + + * config.guess, config.sub: Updated from GNULIB. + 2019-06-18 Arnold D. Robbins <arnold@skeeve.com> * 5.0.1: Release tar ball made. diff --git a/extension/build-aux/config.guess b/extension/build-aux/config.guess index 79d1317f..41b8b854 100755 --- a/extension/build-aux/config.guess +++ b/extension/build-aux/config.guess @@ -2,7 +2,7 @@ # Attempt to guess a canonical system name. # Copyright 1992-2019 Free Software Foundation, Inc. -timestamp='2019-03-04' +timestamp='2019-06-10' # This file is free software; you can redistribute it and/or modify it # under the terms of the GNU General Public License as published by @@ -262,6 +262,9 @@ case "$UNAME_MACHINE:$UNAME_SYSTEM:$UNAME_RELEASE:$UNAME_VERSION" in *:SolidBSD:*:*) echo "$UNAME_MACHINE"-unknown-solidbsd"$UNAME_RELEASE" exit ;; + *:OS108:*:*) + echo "$UNAME_MACHINE"-unknown-os108_"$UNAME_RELEASE" + exit ;; macppc:MirBSD:*:*) echo powerpc-unknown-mirbsd"$UNAME_RELEASE" exit ;; @@ -1325,38 +1328,39 @@ EOF echo "$UNAME_MACHINE"-apple-rhapsody"$UNAME_RELEASE" exit ;; *:Darwin:*:*) - UNAME_PROCESSOR=`uname -p` || UNAME_PROCESSOR=unknown - set_cc_for_build - if test "$UNAME_PROCESSOR" = unknown ; then - UNAME_PROCESSOR=powerpc + UNAME_PROCESSOR=`uname -p` + case $UNAME_PROCESSOR in + unknown) UNAME_PROCESSOR=powerpc ;; + esac + if command -v xcode-select > /dev/null 2> /dev/null && \ + ! xcode-select --print-path > /dev/null 2> /dev/null ; then + # Avoid executing cc if there is no toolchain installed as + # cc will be a stub that puts up a graphical alert + # prompting the user to install developer tools. + CC_FOR_BUILD=no_compiler_found + else + set_cc_for_build fi - if test "`echo "$UNAME_RELEASE" | sed -e 's/\..*//'`" -le 10 ; then - if [ "$CC_FOR_BUILD" != no_compiler_found ]; then - if (echo '#ifdef __LP64__'; echo IS_64BIT_ARCH; echo '#endif') | \ - (CCOPTS="" $CC_FOR_BUILD -E - 2>/dev/null) | \ - grep IS_64BIT_ARCH >/dev/null - then - case $UNAME_PROCESSOR in - i386) UNAME_PROCESSOR=x86_64 ;; - powerpc) UNAME_PROCESSOR=powerpc64 ;; - esac - fi - # On 10.4-10.6 one might compile for PowerPC via gcc -arch ppc - if (echo '#ifdef __POWERPC__'; echo IS_PPC; echo '#endif') | \ - (CCOPTS="" $CC_FOR_BUILD -E - 2>/dev/null) | \ - grep IS_PPC >/dev/null - then - UNAME_PROCESSOR=powerpc - fi + if [ "$CC_FOR_BUILD" != no_compiler_found ]; then + if (echo '#ifdef __LP64__'; echo IS_64BIT_ARCH; echo '#endif') | \ + (CCOPTS="" $CC_FOR_BUILD -E - 2>/dev/null) | \ + grep IS_64BIT_ARCH >/dev/null + then + case $UNAME_PROCESSOR in + i386) UNAME_PROCESSOR=x86_64 ;; + powerpc) UNAME_PROCESSOR=powerpc64 ;; + esac + fi + # On 10.4-10.6 one might compile for PowerPC via gcc -arch ppc + if (echo '#ifdef __POWERPC__'; echo IS_PPC; echo '#endif') | \ + (CCOPTS="" $CC_FOR_BUILD -E - 2>/dev/null) | \ + grep IS_PPC >/dev/null + then + UNAME_PROCESSOR=powerpc fi elif test "$UNAME_PROCESSOR" = i386 ; then - # Avoid executing cc on OS X 10.9, as it ships with a stub - # that puts up a graphical alert prompting to install - # developer tools. Any system running Mac OS X 10.7 or - # later (Darwin 11 and later) is required to have a 64-bit - # processor. This is not true of the ARM version of Darwin - # that Apple uses in portable devices. - UNAME_PROCESSOR=x86_64 + # uname -m returns i386 or x86_64 + UNAME_PROCESSOR=$UNAME_MACHINE fi echo "$UNAME_PROCESSOR"-apple-darwin"$UNAME_RELEASE" exit ;; @@ -1468,6 +1472,14 @@ cat > "$dummy.c" <<EOF #include <sys/types.h> #include <sys/utsname.h> #endif +#if defined(ultrix) || defined(_ultrix) || defined(__ultrix) || defined(__ultrix__) +#if defined (vax) || defined (__vax) || defined (__vax__) || defined(mips) || defined(__mips) || defined(__mips__) || defined(MIPS) || defined(__MIPS__) +#include <signal.h> +#if defined(_SIZE_T_) || defined(SIGLOST) +#include <sys/utsname.h> +#endif +#endif +#endif main () { #if defined (sony) @@ -1555,18 +1567,23 @@ main () printf ("vax-dec-bsd\n"); exit (0); #endif #else +#if defined(_SIZE_T_) || defined(SIGLOST) + struct utsname un; + uname (&un); + printf ("vax-dec-ultrix%s\n", un.release); exit (0); +#else printf ("vax-dec-ultrix\n"); exit (0); #endif #endif +#endif #if defined(ultrix) || defined(_ultrix) || defined(__ultrix) || defined(__ultrix__) #if defined(mips) || defined(__mips) || defined(__mips__) || defined(MIPS) || defined(__MIPS__) -#include <signal.h> -#if defined(_SIZE_T_) /* >= ULTRIX4 */ - printf ("mips-dec-ultrix4\n"); exit (0); +#if defined(_SIZE_T_) || defined(SIGLOST) + struct utsname *un; + uname (&un); + printf ("mips-dec-ultrix%s\n", un.release); exit (0); #else -#if defined(ULTRIX3) || defined(ultrix3) || defined(SIGLOST) - printf ("mips-dec-ultrix3\n"); exit (0); -#endif + printf ("mips-dec-ultrix\n"); exit (0); #endif #endif #endif diff --git a/extension/build-aux/config.sub b/extension/build-aux/config.sub index f53af5a2..5b158ac4 100755 --- a/extension/build-aux/config.sub +++ b/extension/build-aux/config.sub @@ -2,7 +2,7 @@ # Configuration validation subroutine script. # Copyright 1992-2019 Free Software Foundation, Inc. -timestamp='2019-01-05' +timestamp='2019-05-23' # This file is free software; you can redistribute it and/or modify it # under the terms of the GNU General Public License as published by @@ -1172,7 +1172,7 @@ case $cpu-$vendor in | asmjs \ | ba \ | be32 | be64 \ - | bfin | bs2000 \ + | bfin | bpf | bs2000 \ | c[123]* | c30 | [cjt]90 | c4x \ | c8051 | clipper | craynv | csky | cydra \ | d10v | d30v | dlx | dsp16xx \ |