[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Changes to m4/doc/m4.info [branch-1_4]
From: |
Gary V . Vaughan |
Subject: |
Changes to m4/doc/m4.info [branch-1_4] |
Date: |
Thu, 03 Feb 2005 10:21:07 -0500 |
Index: m4/doc/m4.info
diff -u m4/doc/m4.info:1.1.1.1.2.3 m4/doc/m4.info:1.1.1.1.2.4
--- m4/doc/m4.info:1.1.1.1.2.3 Thu Sep 9 21:10:27 2004
+++ m4/doc/m4.info Thu Feb 3 15:21:06 2005
@@ -1,4 +1,4 @@
-This is m4.info, produced by makeinfo version 4.7 from m4.texinfo.
+This is m4.info, produced by makeinfo version 4.6 from m4.texinfo.
START-INFO-DIR-ENTRY
* m4: (m4). A powerful macro processor.
@@ -48,9 +48,10 @@
An experimental feature, which would improve `m4' usefulness, allows
for changing the syntax for what is a "word" in `m4'. You should use:
./configure --enable-changeword
- if you want this feature compiled in. The current implementation
-slows down `m4' considerably and is hardly acceptable. So, it might go
-away, do not count on it yet.
+
+if you want this feature compiled in. The current implementation slows
+down `m4' considerably and is hardly acceptable. So, it might go away,
+do not count on it yet.
* Menu:
@@ -184,8 +185,8 @@
File: m4.info, Node: Preliminaries, Next: Syntax, Prev: Top, Up: Top
-1 Introduction and preliminaries
-********************************
+Introduction and preliminaries
+******************************
This first chapter explains what is GNU `m4', where `m4' comes from,
how to read and use this documentation, how to call the `m4' program
@@ -206,8 +207,8 @@
File: m4.info, Node: Intro, Next: History, Prev: Preliminaries, Up:
Preliminaries
-1.1 Introduction to `m4'
-========================
+Introduction to `m4'
+====================
`m4' is a macro processor, in the sense that it copies its input to the
output, expanding macros as it goes. Macros are either builtin or
@@ -237,8 +238,8 @@
File: m4.info, Node: History, Next: Invoking m4, Prev: Intro, Up:
Preliminaries
-1.2 Historical references
-=========================
+Historical references
+=====================
The historical notes included here are fairly incomplete, and not
authoritative at all. Please knowledgeable users help us to more
@@ -260,8 +261,8 @@
File: m4.info, Node: Invoking m4, Next: Bugs, Prev: History, Up:
Preliminaries
-1.3 Invoking `m4'
-=================
+Invoking `m4'
+=============
The format of the `m4' command is:
@@ -444,8 +445,8 @@
File: m4.info, Node: Bugs, Next: Manual, Prev: Invoking m4, Up:
Preliminaries
-1.4 Problems and bugs
-=====================
+Problems and bugs
+=================
If you have problems with GNU `m4' or think you've found a bug, please
report it. Before reporting a bug, make sure you've actually found a
@@ -473,8 +474,8 @@
File: m4.info, Node: Manual, Prev: Bugs, Up: Preliminaries
-1.5 Using this manual
-=====================
+Using this manual
+=================
This manual contains a number of examples of `m4' input and output, and
a simple notation is used to distinguish input, output and error
@@ -512,8 +513,8 @@
File: m4.info, Node: Syntax, Next: Macros, Prev: Preliminaries, Up: Top
-2 Lexical and syntactic conventions
-***********************************
+Lexical and syntactic conventions
+*********************************
As `m4' reads its input, it separates it into "tokens". A token is
either a name, a quoted string, or any single character, that is not a
@@ -530,8 +531,8 @@
File: m4.info, Node: Names, Next: Quoted strings, Prev: Syntax, Up: Syntax
-2.1 Names
-=========
+Names
+=====
A name is any sequence of letters, digits, and the character `_'
(underscore), where the first character is not a digit. If a name has
@@ -543,8 +544,8 @@
File: m4.info, Node: Quoted strings, Next: Other tokens, Prev: Names, Up:
Syntax
-2.2 Quoted strings
-==================
+Quoted strings
+==============
A quoted string is a sequence of characters surrounded by the quotes
``' and `'', where the number of start and end quotes within the string
@@ -567,8 +568,8 @@
File: m4.info, Node: Other tokens, Next: Comments, Prev: Quoted strings,
Up: Syntax
-2.3 Other tokens
-================
+Other tokens
+============
Any character, that is neither a part of a name, nor of a quoted string,
is a token by itself.
@@ -576,8 +577,8 @@
File: m4.info, Node: Comments, Prev: Other tokens, Up: Syntax
-2.4 Comments
-============
+Comments
+========
Comments in `m4' are normally delimited by the characters `#' and
newline. All characters between the comment delimiters are ignored,
@@ -595,8 +596,8 @@
File: m4.info, Node: Macros, Next: Definitions, Prev: Syntax, Up: Top
-3 How to invoke macros
-**********************
+How to invoke macros
+********************
This chapter covers macro invocation, macro arguments and how macro
expansion is treated.
@@ -612,8 +613,8 @@
File: m4.info, Node: Invocation, Next: Inhibiting Invocation, Prev: Macros,
Up: Macros
-3.1 Macro invocation
-====================
+Macro invocation
+================
Macro invocations has one of the forms
@@ -642,8 +643,8 @@
File: m4.info, Node: Inhibiting Invocation, Next: Macro Arguments, Prev:
Invocation, Up: Macros
-3.2 Preventing macro invocation
-===============================
+Preventing macro invocation
+===========================
An innovation of the `m4' language, compared to some of its
predecessors (like Stratchey's `GPM', for example), is the ability to
@@ -724,8 +725,8 @@
File: m4.info, Node: Macro Arguments, Next: Quoting Arguments, Prev:
Inhibiting Invocation, Up: Macros
-3.3 Macro arguments
-===================
+Macro arguments
+===============
When a name is seen, and it has a macro definition, it will be expanded
as a macro.
@@ -755,8 +756,8 @@
File: m4.info, Node: Quoting Arguments, Next: Macro expansion, Prev: Macro
Arguments, Up: Macros
-3.4 Quoting macro arguments
-===========================
+Quoting macro arguments
+=======================
Each argument has leading unquoted whitespace removed. Within each
argument, all unquoted parentheses must match. For example, if FOO is
@@ -779,8 +780,8 @@
File: m4.info, Node: Macro expansion, Prev: Quoting Arguments, Up: Macros
-3.5 Macro expansion
-===================
+Macro expansion
+===============
When the arguments, if any, to a macro call have been collected, the
macro is expanded, and the expansion text is pushed back onto the input
@@ -799,8 +800,8 @@
File: m4.info, Node: Definitions, Next: Conditionals, Prev: Macros, Up: Top
-4 How to define new macros
-**************************
+How to define new macros
+************************
Macros can be defined, redefined and deleted in several different ways.
Also, it is possible to redefine a macro, without losing a previous
@@ -821,8 +822,8 @@
File: m4.info, Node: Define, Next: Arguments, Prev: Definitions, Up:
Definitions
-4.1 Defining a macro
-====================
+Defining a macro
+================
The normal way to define or redefine macros is to use the builtin
`define':
@@ -852,8 +853,8 @@
File: m4.info, Node: Arguments, Next: Pseudo Arguments, Prev: Define, Up:
Definitions
-4.2 Arguments to macros
-=======================
+Arguments to macros
+===================
Macros can have arguments. The Nth argument is denoted by `$n' in the
expansion text, and is replaced by the Nth actual argument, when the
@@ -903,8 +904,8 @@
File: m4.info, Node: Pseudo Arguments, Next: Undefine, Prev: Arguments,
Up: Definitions
-4.3 Special arguments to macros
-===============================
+Special arguments to macros
+===========================
There is a special notation for the number of actual arguments supplied,
and for all the actual arguments.
@@ -971,8 +972,8 @@
File: m4.info, Node: Undefine, Next: Defn, Prev: Pseudo Arguments, Up:
Definitions
-4.4 Deleting a macro
-====================
+Deleting a macro
+================
A macro definition can be removed with `undefine':
@@ -1002,8 +1003,8 @@
File: m4.info, Node: Defn, Next: Pushdef, Prev: Undefine, Up: Definitions
-4.5 Renaming macros
-===================
+Renaming macros
+===============
It is possible to rename an already defined macro. To do this, you need
the builtin `defn':
@@ -1038,8 +1039,8 @@
File: m4.info, Node: Pushdef, Next: Indir, Prev: Defn, Up: Definitions
-4.6 Temporarily redefining macros
-=================================
+Temporarily redefining macros
+=============================
It is possible to redefine a macro temporarily, reverting to the
previous definition at a later time. This is done with the builtins
@@ -1108,14 +1109,15 @@
File: m4.info, Node: Indir, Next: Builtin, Prev: Pushdef, Up: Definitions
-4.7 Indirect call of macros
-===========================
+Indirect call of macros
+=======================
Any macro can be called indirectly with `indir':
indir(NAME, ...)
- which results in a call to the macro NAME, which is passed the rest
-of the arguments. This can be used to call macros with "illegal" names
+
+which results in a call to the macro NAME, which is passed the rest of
+the arguments. This can be used to call macros with "illegal" names
(`define' allows such names to be defined):
define(`$$internal$macro', `Internal macro (name `$0')')
@@ -1132,23 +1134,24 @@
File: m4.info, Node: Builtin, Prev: Indir, Up: Definitions
-4.8 Indirect call of builtins
-=============================
+Indirect call of builtins
+=========================
Builtin macros can be called indirectly with `builtin':
builtin(NAME, ...)
- which results in a call to the builtin NAME, which is passed the
-rest of the arguments. This can be used, if NAME has been given
-another definition that has covered the original.
+
+which results in a call to the builtin NAME, which is passed the rest
+of the arguments. This can be used, if NAME has been given another
+definition that has covered the original.
The macro `builtin' is recognized only with parameters.
File: m4.info, Node: Conditionals, Next: Debugging, Prev: Definitions, Up:
Top
-5 Conditionals, loops and recursion
-***********************************
+Conditionals, loops and recursion
+*********************************
Macros, expanding to plain text, perhaps with arguments, are not quite
enough. We would like to have macros expand to different things, based
@@ -1166,8 +1169,8 @@
File: m4.info, Node: Ifdef, Next: Ifelse, Prev: Conditionals, Up:
Conditionals
-5.1 Testing macro definitions
-=============================
+Testing macro definitions
+=========================
There are two different builtin conditionals in `m4'. The first is
`ifdef':
@@ -1191,8 +1194,8 @@
File: m4.info, Node: Ifelse, Next: Loops, Prev: Ifdef, Up: Conditionals
-5.2 Comparing strings
-=====================
+Comparing strings
+=================
The other conditional, `ifelse', is much more powerful. It can be used
as a way to introduce a long comment, as an if-else construct, or as a
@@ -1239,8 +1242,8 @@
File: m4.info, Node: Loops, Prev: Ifelse, Up: Conditionals
-5.3 Loops and recursion
-=======================
+Loops and recursion
+===================
There is no direct support for loops in `m4', but macros can be
recursive. There is no limit on the number of recursion levels, other
@@ -1331,8 +1334,8 @@
File: m4.info, Node: Debugging, Next: Input Control, Prev: Conditionals,
Up: Top
-6 How to debug macros and input
-*******************************
+How to debug macros and input
+*****************************
When writing macros for `m4', most of the time they woould not work as
intended (as is the case with most programming languages). There is a
@@ -1348,8 +1351,8 @@
File: m4.info, Node: Dumpdef, Next: Trace, Prev: Debugging, Up: Debugging
-6.1 Displaying macro definitions
-================================
+Displaying macro definitions
+============================
If you want to see what a name expands into, you can use the builtin
`dumpdef':
@@ -1380,8 +1383,8 @@
File: m4.info, Node: Trace, Next: Debug Levels, Prev: Dumpdef, Up:
Debugging
-6.2 Tracing macro calls
-=======================
+Tracing macro calls
+===================
It is possible to trace macro calls and expansions through the builtins
`traceon' and `traceoff':
@@ -1423,8 +1426,8 @@
File: m4.info, Node: Debug Levels, Next: Debug Output, Prev: Trace, Up:
Debugging
-6.3 Controlling debugging output
-================================
+Controlling debugging output
+============================
The `-d' option to `m4' controls the amount of details presented, when
using the macros described in the preceding sections.
@@ -1483,9 +1486,10 @@
control of the debugging output format:
debugmode(opt FLAGS)
- The argument FLAGS should be a subset of the letters listed above.
-As special cases, if the argument starts with a `+', the flags are
-added to the current debug flags, and if it starts with a `-', they are
+
+The argument FLAGS should be a subset of the letters listed above. As
+special cases, if the argument starts with a `+', the flags are added
+to the current debug flags, and if it starts with a `-', they are
removed. If no argument is present, the debugging flags are set to
zero (as if no `-d' was given), and with an empty argument the flags
are reset to the default.
@@ -1493,23 +1497,24 @@
File: m4.info, Node: Debug Output, Prev: Debug Levels, Up: Debugging
-6.4 Saving debugging output
-===========================
+Saving debugging output
+=======================
Debug and tracing output can be redirected to files using either the
`-o' option to `m4', or with the builtin macro `debugfile':
debugfile(opt FILENAME)
- will send all further debug and trace output to FILENAME. If
-FILENAME is empty, debug and trace output are discarded and if
-`debugfile' is called without any arguments, debug and trace output are
-sent to the standard error output.
+
+will send all further debug and trace output to FILENAME. If FILENAME
+is empty, debug and trace output are discarded and if `debugfile' is
+called without any arguments, debug and trace output are sent to the
+standard error output.
File: m4.info, Node: Input Control, Next: File Inclusion, Prev: Debugging,
Up: Top
-7 Input control
-***************
+Input control
+*************
This chapter describes various builtin macros for controlling the input
to `m4'.
@@ -1525,15 +1530,16 @@
File: m4.info, Node: Dnl, Next: Changequote, Prev: Input Control, Up:
Input Control
-7.1 Deleting whitespace in input
-================================
+Deleting whitespace in input
+============================
The builtin `dnl' reads and discards all characters, up to and
including the first newline:
dnl
- and it is often used in connection with `define', to remove the
-newline that follow the call to `define'. Thus
+
+and it is often used in connection with `define', to remove the newline
+that follow the call to `define'. Thus
define(`foo', `Macro `foo'.')dnl A very simple macro, indeed.
foo
@@ -1554,14 +1560,15 @@
File: m4.info, Node: Changequote, Next: Changecom, Prev: Dnl, Up: Input
Control
-7.2 Changing the quote characters
-=================================
+Changing the quote characters
+=============================
The default quote delimiters can be changed with the builtin
`changequote':
changequote(opt START, opt END)
- where START is the new start-quote delimiter and END is the new
+
+where START is the new start-quote delimiter and END is the new
end-quote delimiter. If any of the arguments are missing, the default
quotes (``' and `'') are used instead of the void arguments.
@@ -1606,14 +1613,15 @@
File: m4.info, Node: Changecom, Next: Changeword, Prev: Changequote, Up:
Input Control
-7.3 Changing comment delimiters
-===============================
+Changing comment delimiters
+===========================
The default comment delimiters can be changed with the builtin macro
`changecom':
changecom(opt START, opt END)
- where START is the new start-comment delimiter and END is the new
+
+where START is the new start-comment delimiter and END is the new
end-comment delimiter. If any of the arguments are void, the default
comment delimiters (`#' and newline) are used instead of the void
arguments. The comment delimiters can be of any length.
@@ -1648,8 +1656,8 @@
File: m4.info, Node: Changeword, Next: M4wrap, Prev: Changecom, Up: Input
Control
-7.4 Changing the lexical structure of words
-===========================================
+Changing the lexical structure of words
+=======================================
The macro `changeword' and all associated functionnality is
experimental. It is only available if the `--enable-changeword'
@@ -1734,8 +1742,8 @@
File: m4.info, Node: M4wrap, Prev: Changeword, Up: Input Control
-7.5 Saving input
-================
+Saving input
+============
It is possible to `save' some text until the end of the normal input has
been seen. Text can be saved, to be read again by `m4' when the normal
@@ -1745,8 +1753,9 @@
To save input text, use the builtin `m4wrap':
m4wrap(STRING, ...)
- which stores STRING and the rest of the arguments in a safe place,
-to be reread when end of input is reached.
+
+which stores STRING and the rest of the arguments in a safe place, to
+be reread when end of input is reached.
define(`cleanup', `This is the `cleanup' actions.
')
@@ -1769,8 +1778,8 @@
File: m4.info, Node: File Inclusion, Next: Diversions, Prev: Input Control,
Up: Top
-8 File inclusion
-****************
+File inclusion
+**************
`m4' allows you to include named files at any point in the input.
@@ -1782,8 +1791,8 @@
File: m4.info, Node: Include, Next: Search Path, Prev: File Inclusion, Up:
File Inclusion
-8.1 Including named files
-=========================
+Including named files
+=====================
There are two builtin macros in `m4' for including files:
@@ -1811,9 +1820,10 @@
Include file start
foo
Include file end
- Normally file inclusion is used to insert the contents of a file
-into the input stream. The contents of the file will be read by `m4'
-and macro calls in the file will be expanded:
+
+Normally file inclusion is used to insert the contents of a file into
+the input stream. The contents of the file will be read by `m4' and
+macro calls in the file will be expanded:
define(`foo', `FOO')
=>
@@ -1846,8 +1856,8 @@
File: m4.info, Node: Search Path, Prev: Include, Up: File Inclusion
-8.2 Searching for include files
-===============================
+Searching for include files
+===========================
GNU `m4' allows included files to be found in other directories than
the current working directory.
@@ -1865,8 +1875,8 @@
File: m4.info, Node: Diversions, Next: Text handling, Prev: File Inclusion,
Up: Top
-9 Diverting and undiverting output
-**********************************
+Diverting and undiverting output
+********************************
Diversions are a way of temporarily saving output. The output of `m4'
can at any time be diverted to a temporary file, and be reinserted into
@@ -1893,8 +1903,8 @@
File: m4.info, Node: Divert, Next: Undivert, Prev: Diversions, Up:
Diversions
-9.1 Diverting output
-====================
+Diverting output
+================
Output is diverted using `divert':
@@ -1937,8 +1947,8 @@
File: m4.info, Node: Undivert, Next: Divnum, Prev: Divert, Up: Diversions
-9.2 Undiverting output
-======================
+Undiverting output
+==================
Diverted text can be undiverted explicitly using the builtin `undivert':
@@ -2005,8 +2015,8 @@
File: m4.info, Node: Divnum, Next: Cleardiv, Prev: Undivert, Up: Diversions
-9.3 Diversion numbers
-=====================
+Diversion numbers
+=================
The builtin `divnum':
@@ -2034,8 +2044,8 @@
File: m4.info, Node: Cleardiv, Prev: Divnum, Up: Diversions
-9.4 Discarding diverted text
-============================
+Discarding diverted text
+========================
Often it is not known, when output is diverted, whether the diverted
text is actually needed. Since all non-empty diversion are brought back
@@ -2067,8 +2077,8 @@
File: m4.info, Node: Text handling, Next: Arithmetic, Prev: Diversions,
Up: Top
-10 Macros for text handling
-***************************
+Macros for text handling
+************************
There are a number of builtins in `m4' for manipulating text in various
ways, extracting substrings, searching, substituting, and so on.
@@ -2086,8 +2096,8 @@
File: m4.info, Node: Len, Next: Index, Prev: Text handling, Up: Text
handling
-10.1 Calculating length of strings
-==================================
+Calculating length of strings
+=============================
The length of a string can be calculated by `len':
@@ -2105,8 +2115,8 @@
File: m4.info, Node: Index, Next: Regexp, Prev: Len, Up: Text handling
-10.2 Searching for substrings
-=============================
+Searching for substrings
+========================
Searching for substrings is done with `index':
@@ -2126,8 +2136,8 @@
File: m4.info, Node: Regexp, Next: Substr, Prev: Index, Up: Text handling
-10.3 Searching for regular expressions
-======================================
+Searching for regular expressions
+=================================
Searching for regular expressions is done with the builtin `regexp':
@@ -2159,8 +2169,8 @@
File: m4.info, Node: Substr, Next: Translit, Prev: Regexp, Up: Text
handling
-10.4 Extracting substrings
-==========================
+Extracting substrings
+=====================
Substrings are extracted with `substr':
@@ -2180,8 +2190,8 @@
File: m4.info, Node: Translit, Next: Patsubst, Prev: Substr, Up: Text
handling
-10.5 Translating characters
-===========================
+Translating characters
+======================
Character translation is done with `translit':
@@ -2219,13 +2229,14 @@
File: m4.info, Node: Patsubst, Next: Format, Prev: Translit, Up: Text
handling
-10.6 Substituting text by regular expression
-============================================
+Substituting text by regular expression
+=======================================
Global substitution in a string is done by `patsubst':
patsubst(STRING, REGEXP, opt REPLACEMENT)
- which searches STRING for matches of REGEXP, and substitutes
+
+which searches STRING for matches of REGEXP, and substitutes
REPLACEMENT for each match. The syntax for regular expressions is the
same as in GNU Emacs.
@@ -2273,8 +2284,8 @@
File: m4.info, Node: Format, Prev: Patsubst, Up: Text handling
-10.7 Formatted output
-=====================
+Formatted output
+================
Formatted output can be made with `format':
@@ -2316,8 +2327,8 @@
File: m4.info, Node: Arithmetic, Next: UNIX commands, Prev: Text handling,
Up: Top
-11 Macros for doing arithmetic
-******************************
+Macros for doing arithmetic
+***************************
Integer arithmetic is included in `m4', with a C-like syntax. As
convenient shorthands, there are builtins for simple increment and
@@ -2331,8 +2342,8 @@
File: m4.info, Node: Incr, Next: Eval, Prev: Arithmetic, Up: Arithmetic
-11.1 Decrement and increment operators
-======================================
+Decrement and increment operators
+=================================
Increment and decrement of integers are supported using the builtins
`incr' and `decr':
@@ -2354,8 +2365,8 @@
File: m4.info, Node: Eval, Prev: Incr, Up: Arithmetic
-11.2 Evaluating integer expressions
-===================================
+Evaluating integer expressions
+==============================
Integer expressions are evaluated with `eval':
@@ -2475,8 +2486,8 @@
File: m4.info, Node: UNIX commands, Next: Miscellaneous, Prev: Arithmetic,
Up: Top
-12 Running UNIX commands
-************************
+Running UNIX commands
+*********************
There are a few builtin macros in `m4' that allow you to run UNIX
commands from within `m4'.
@@ -2491,8 +2502,8 @@
File: m4.info, Node: Syscmd, Next: Esyscmd, Prev: UNIX commands, Up: UNIX
commands
-12.1 Executing simple commands
-==============================
+Executing simple commands
+=========================
Any shell command can be executed, using `syscmd':
@@ -2514,8 +2525,8 @@
File: m4.info, Node: Esyscmd, Next: Sysval, Prev: Syscmd, Up: UNIX commands
-12.2 Reading the output of commands
-===================================
+Reading the output of commands
+==============================
If you want `m4' to read the output of a UNIX command, use `esyscmd':
@@ -2544,8 +2555,8 @@
File: m4.info, Node: Sysval, Next: Maketemp, Prev: Esyscmd, Up: UNIX
commands
-12.3 Exit codes
-===============
+Exit codes
+==========
To see whether a shell command succeeded, use `sysval':
@@ -2566,8 +2577,8 @@
File: m4.info, Node: Maketemp, Prev: Sysval, Up: UNIX commands
-12.4 Making names for temporary files
-=====================================
+Making names for temporary files
+================================
Commands specified to `syscmd' or `esyscmd' might need a temporary
file, for output or for some other purpose. There is a builtin macro,
@@ -2588,8 +2599,8 @@
File: m4.info, Node: Miscellaneous, Next: Frozen files, Prev: UNIX
commands, Up: Top
-13 Miscellaneous builtin macros
-*******************************
+Miscellaneous builtin macros
+****************************
This chapter describes various builtins, that do not really belong in
any of the previous chapters.
@@ -2602,13 +2613,14 @@
File: m4.info, Node: Errprint, Next: M4exit, Prev: Miscellaneous, Up:
Miscellaneous
-13.1 Printing error messages
-============================
+Printing error messages
+=======================
You can print error messages using `errprint':
errprint(MESSAGE, ...)
- which simply prints MESSAGE and the rest of the arguments on the
+
+which simply prints MESSAGE and the rest of the arguments on the
standard error output.
The expansion of `errprint' is void.
@@ -2627,7 +2639,8 @@
__file__
__line__
- which expands to the quoted name of the current input file, and the
+
+which expands to the quoted name of the current input file, and the
current input line number in that file.
errprint(`m4:'__file__:__line__: `Input error
@@ -2638,15 +2651,16 @@
File: m4.info, Node: M4exit, Prev: Errprint, Up: Miscellaneous
-13.2 Exiting from `m4'
-======================
+Exiting from `m4'
+=================
If you need to exit from `m4' before the entire input has been read,
you can use `m4exit':
m4exit(opt CODE)
- which causes `m4' to exit, with exit code CODE. If CODE is left
-out, the exit code is zero.
+
+which causes `m4' to exit, with exit code CODE. If CODE is left out,
+the exit code is zero.
define(`fatal_error', `errprint(`m4: '__file__: __line__`: fatal error: $*
')m4exit(1)')
@@ -2662,8 +2676,8 @@
File: m4.info, Node: Frozen files, Next: Compatibility, Prev:
Miscellaneous, Up: Top
-14 Fast loading of frozen states
-********************************
+Fast loading of frozen states
+*****************************
Some bigger `m4' applications may be built over a common base
containing hundreds of definitions and other costly initializations.
@@ -2777,8 +2791,8 @@
File: m4.info, Node: Compatibility, Next: Concept index, Prev: Frozen
files, Up: Top
-15 Compatibility with other versions of `m4'
-********************************************
+Compatibility with other versions of `m4'
+*****************************************
This chapter describes the differences between this implementation of
`m4', and the implementation found under UNIX, notably System V,
@@ -2796,8 +2810,8 @@
File: m4.info, Node: Extensions, Next: Incompatibilities, Prev:
Compatibility, Up: Compatibility
-15.1 Extensions in GNU `m4'
-===========================
+Extensions in GNU `m4'
+======================
This version of `m4' contains a few facilities, that do not exist in
System V `m4'. These extra facilities are all suppressed by using the
@@ -2854,8 +2868,8 @@
File: m4.info, Node: Incompatibilities, Next: Other Incompat, Prev:
Extensions, Up: Compatibility
-15.2 Facilities in System V `m4' not in GNU `m4'
-================================================
+Facilities in System V `m4' not in GNU `m4'
+===========================================
The version of `m4' from System V contains a few facilities that have
not been implemented in GNU `m4' yet.
@@ -2866,8 +2880,8 @@
File: m4.info, Node: Other Incompat, Prev: Incompatibilities, Up:
Compatibility
-15.3 Other incompatibilities
-============================
+Other incompatibilities
+=======================
There are a few other incompatibilities between this implementation of
`m4', and the System V version.
@@ -2920,142 +2934,141 @@
Concept index
*************
- * Menu:
-* arguments to macros: Macro Arguments. (line 6)
-* Arguments to macros: Arguments. (line 6)
-* arguments to macros, special: Pseudo Arguments. (line 6)
-* arguments, quoted macro: Quoting Arguments. (line 6)
-* arithmetic: Arithmetic. (line 6)
-* builtins, indirect call of: Builtin. (line 6)
-* call of builtins, indirect: Builtin. (line 6)
-* call of macros, indirect: Indir. (line 6)
-* changing comment delimiters: Changecom. (line 6)
-* changing the quote delimiters: Changequote. (line 6)
-* characters, translating: Translit. (line 6)
-* command line, filenames on the: Invoking m4. (line 176)
-* command line, macro definitions on the: Invoking m4. (line 143)
-* command line, options: Invoking m4. (line 10)
-* commands, exit code from UNIX: Sysval. (line 6)
-* commands, running UNIX: UNIX commands. (line 6)
-* comment delimiters, changing: Changecom. (line 6)
-* comments: Comments. (line 6)
-* comments, copied to output: Changecom. (line 28)
-* comparing strings: Ifelse. (line 6)
-* compatibility: Compatibility. (line 6)
-* conditionals: Ifdef. (line 6)
-* controlling debugging output: Debug Levels. (line 6)
-* counting loops: Loops. (line 42)
-* debugging output, controlling: Debug Levels. (line 6)
-* debugging output, saving: Debug Output. (line 6)
-* decrement operator: Incr. (line 6)
-* defining new macros: Definitions. (line 6)
-* definitions, displaying macro: Dumpdef. (line 6)
-* deleting macros: Undefine. (line 6)
-* deleting whitespace in input: Dnl. (line 6)
-* discarding diverted text: Cleardiv. (line 6)
-* displaying macro definitions: Dumpdef. (line 6)
-* diversion numbers: Divnum. (line 6)
-* diverted text, discarding: Cleardiv. (line 6)
-* diverting output to files: Divert. (line 6)
-* dumping into frozen file: Frozen files. (line 6)
-* error messages, printing: Errprint. (line 6)
-* evaluation, of integer expressions: Eval. (line 6)
-* executing UNIX commands: UNIX commands. (line 6)
-* exit code from UNIX commands: Sysval. (line 6)
-* exiting from m4: M4exit. (line 6)
-* expansion of macros: Macro expansion. (line 6)
-* expansion, tracing macro: Trace. (line 6)
-* expressions, evaluation of integer: Eval. (line 6)
-* extracting substrings: Substr. (line 6)
-* fast loading of frozen files: Frozen files. (line 6)
-* file inclusion <1>: Undivert. (line 53)
-* file inclusion: File Inclusion. (line 6)
-* filenames, on the command line: Invoking m4. (line 176)
-* files, diverting output to: Divert. (line 6)
-* files, names of temporary: Maketemp. (line 6)
-* forloops: Loops. (line 42)
-* formatted output: Format. (line 6)
-* frozen files for fast loading: Frozen files. (line 6)
-* GNU extensions <1>: Undivert. (line 53)
-* GNU extensions <2>: Patsubst. (line 6)
-* GNU extensions <3>: Extensions. (line 6)
-* GNU extensions <4>: Search Path. (line 6)
-* GNU extensions <5>: Frozen files. (line 6)
-* GNU extensions <6>: Indir. (line 6)
-* GNU extensions <7>: Regexp. (line 6)
-* GNU extensions <8>: Debug Output. (line 6)
-* GNU extensions <9>: Debug Levels. (line 59)
-* GNU extensions <10>: Builtin. (line 6)
-* GNU extensions <11>: Format. (line 6)
-* GNU extensions <12>: Esyscmd. (line 6)
-* GNU extensions: Arguments. (line 28)
-* included files, search path for: Search Path. (line 6)
-* inclusion, of files <1>: File Inclusion. (line 6)
-* inclusion, of files: Undivert. (line 53)
-* increment operator: Incr. (line 6)
-* indirect call of builtins: Builtin. (line 6)
-* indirect call of macros: Indir. (line 6)
-* initialization, frozen states: Frozen files. (line 6)
-* input tokens: Syntax. (line 6)
-* input, saving: M4wrap. (line 6)
-* integer arithmetic: Arithmetic. (line 6)
-* integer expression evaluation: Eval. (line 6)
-* length of strings: Len. (line 6)
-* lexical structure of words: Changeword. (line 6)
-* loops: Loops. (line 10)
-* loops, counting: Loops. (line 42)
-* macro definitions, on the command line: Invoking m4. (line 143)
-* macro expansion, tracing: Trace. (line 6)
-* macro invocation: Invocation. (line 6)
-* macros, arguments to <1>: Arguments. (line 6)
-* macros, arguments to: Macro Arguments. (line 6)
-* macros, displaying definitions: Dumpdef. (line 6)
-* macros, expansion of: Macro expansion. (line 6)
-* macros, how to define new: Definitions. (line 6)
-* macros, how to delete: Undefine. (line 6)
-* macros, how to rename: Defn. (line 6)
-* macros, indirect call of: Indir. (line 6)
-* macros, quoted arguments to: Quoting Arguments. (line 6)
-* macros, recursive: Loops. (line 6)
-* macros, special arguments to: Pseudo Arguments. (line 6)
-* macros, temporary redefinition of: Pushdef. (line 6)
-* messages, printing error: Errprint. (line 6)
-* multibranches: Ifelse. (line 33)
-* names: Names. (line 6)
-* options, command line: Invoking m4. (line 10)
-* output, diverting to files: Divert. (line 6)
-* output, formatted: Format. (line 6)
-* output, saving debugging: Debug Output. (line 6)
-* pattern substitution: Patsubst. (line 6)
-* printing error messages: Errprint. (line 6)
-* quote delimiters, changing the: Changequote. (line 6)
-* quoted macro arguments: Quoting Arguments. (line 6)
-* quoted string: Quoted strings. (line 6)
-* recursive macros: Loops. (line 6)
-* redefinition of macros, temporary: Pushdef. (line 6)
-* regular expressions <1>: Patsubst. (line 6)
-* regular expressions: Regexp. (line 6)
-* reloading a frozen file: Frozen files. (line 6)
-* renaming macros: Defn. (line 6)
-* running UNIX commands: UNIX commands. (line 6)
-* saving debugging output: Debug Output. (line 6)
-* saving input: M4wrap. (line 6)
-* search path for included files: Search Path. (line 6)
-* special arguments to macros: Pseudo Arguments. (line 6)
-* strings, length of: Len. (line 6)
-* substitution by regular expression: Patsubst. (line 6)
-* substrings, extracting: Substr. (line 6)
-* temporary filenames: Maketemp. (line 6)
-* temporary redefinition of macros: Pushdef. (line 6)
-* tokens: Syntax. (line 6)
-* tracing macro expansion: Trace. (line 6)
-* translating characters: Translit. (line 6)
-* undefining macros: Undefine. (line 6)
-* UNIX commands, exit code from: Sysval. (line 6)
-* UNIX commands, running: UNIX commands. (line 6)
-* words, lexical structure of: Changeword. (line 6)
+* Arguments to macros: Arguments.
+* arguments to macros: Macro Arguments.
+* arguments to macros, special: Pseudo Arguments.
+* arguments, quoted macro: Quoting Arguments.
+* arithmetic: Arithmetic.
+* builtins, indirect call of: Builtin.
+* call of builtins, indirect: Builtin.
+* call of macros, indirect: Indir.
+* changing comment delimiters: Changecom.
+* changing the quote delimiters: Changequote.
+* characters, translating: Translit.
+* command line, filenames on the: Invoking m4.
+* command line, macro definitions on the: Invoking m4.
+* command line, options: Invoking m4.
+* commands, exit code from UNIX: Sysval.
+* commands, running UNIX: UNIX commands.
+* comment delimiters, changing: Changecom.
+* comments: Comments.
+* comments, copied to output: Changecom.
+* comparing strings: Ifelse.
+* compatibility: Compatibility.
+* conditionals: Ifdef.
+* controlling debugging output: Debug Levels.
+* counting loops: Loops.
+* debugging output, controlling: Debug Levels.
+* debugging output, saving: Debug Output.
+* decrement operator: Incr.
+* defining new macros: Definitions.
+* definitions, displaying macro: Dumpdef.
+* deleting macros: Undefine.
+* deleting whitespace in input: Dnl.
+* discarding diverted text: Cleardiv.
+* displaying macro definitions: Dumpdef.
+* diversion numbers: Divnum.
+* diverted text, discarding: Cleardiv.
+* diverting output to files: Divert.
+* dumping into frozen file: Frozen files.
+* error messages, printing: Errprint.
+* evaluation, of integer expressions: Eval.
+* executing UNIX commands: UNIX commands.
+* exit code from UNIX commands: Sysval.
+* exiting from m4: M4exit.
+* expansion of macros: Macro expansion.
+* expansion, tracing macro: Trace.
+* expressions, evaluation of integer: Eval.
+* extracting substrings: Substr.
+* fast loading of frozen files: Frozen files.
+* file inclusion <1>: Undivert.
+* file inclusion: File Inclusion.
+* filenames, on the command line: Invoking m4.
+* files, diverting output to: Divert.
+* files, names of temporary: Maketemp.
+* forloops: Loops.
+* formatted output: Format.
+* frozen files for fast loading: Frozen files.
+* GNU extensions <1>: Extensions.
+* GNU extensions <2>: Frozen files.
+* GNU extensions <3>: Esyscmd.
+* GNU extensions <4>: Format.
+* GNU extensions <5>: Patsubst.
+* GNU extensions <6>: Regexp.
+* GNU extensions <7>: Undivert.
+* GNU extensions <8>: Search Path.
+* GNU extensions <9>: Debug Output.
+* GNU extensions <10>: Debug Levels.
+* GNU extensions <11>: Builtin.
+* GNU extensions <12>: Indir.
+* GNU extensions: Arguments.
+* included files, search path for: Search Path.
+* inclusion, of files <1>: Undivert.
+* inclusion, of files: File Inclusion.
+* increment operator: Incr.
+* indirect call of builtins: Builtin.
+* indirect call of macros: Indir.
+* initialization, frozen states: Frozen files.
+* input tokens: Syntax.
+* input, saving: M4wrap.
+* integer arithmetic: Arithmetic.
+* integer expression evaluation: Eval.
+* length of strings: Len.
+* lexical structure of words: Changeword.
+* loops: Loops.
+* loops, counting: Loops.
+* macro definitions, on the command line: Invoking m4.
+* macro expansion, tracing: Trace.
+* macro invocation: Invocation.
+* macros, arguments to <1>: Arguments.
+* macros, arguments to: Macro Arguments.
+* macros, displaying definitions: Dumpdef.
+* macros, expansion of: Macro expansion.
+* macros, how to define new: Definitions.
+* macros, how to delete: Undefine.
+* macros, how to rename: Defn.
+* macros, indirect call of: Indir.
+* macros, quoted arguments to: Quoting Arguments.
+* macros, recursive: Loops.
+* macros, special arguments to: Pseudo Arguments.
+* macros, temporary redefinition of: Pushdef.
+* messages, printing error: Errprint.
+* multibranches: Ifelse.
+* names: Names.
+* options, command line: Invoking m4.
+* output, diverting to files: Divert.
+* output, formatted: Format.
+* output, saving debugging: Debug Output.
+* pattern substitution: Patsubst.
+* printing error messages: Errprint.
+* quote delimiters, changing the: Changequote.
+* quoted macro arguments: Quoting Arguments.
+* quoted string: Quoted strings.
+* recursive macros: Loops.
+* redefinition of macros, temporary: Pushdef.
+* regular expressions <1>: Patsubst.
+* regular expressions: Regexp.
+* reloading a frozen file: Frozen files.
+* renaming macros: Defn.
+* running UNIX commands: UNIX commands.
+* saving debugging output: Debug Output.
+* saving input: M4wrap.
+* search path for included files: Search Path.
+* special arguments to macros: Pseudo Arguments.
+* strings, length of: Len.
+* substitution by regular expression: Patsubst.
+* substrings, extracting: Substr.
+* temporary filenames: Maketemp.
+* temporary redefinition of macros: Pushdef.
+* tokens: Syntax.
+* tracing macro expansion: Trace.
+* translating characters: Translit.
+* undefining macros: Undefine.
+* UNIX commands, exit code from: Sysval.
+* UNIX commands, running: UNIX commands.
+* words, lexical structure of: Changeword.
File: m4.info, Node: Macro index, Prev: Concept index, Up: Top
@@ -3067,133 +3080,132 @@
the first time. Names starting and ending with `__' have these
characters removed in the index.
- * Menu:
-* builtin: Builtin. (line 6)
-* changecom: Changecom. (line 6)
-* changequote: Changequote. (line 6)
-* changeword: Changeword. (line 6)
-* debugfile: Debug Output. (line 6)
-* debugmode: Debug Levels. (line 59)
-* decr: Incr. (line 6)
-* define: Define. (line 6)
-* defn: Defn. (line 6)
-* divert: Divert. (line 6)
-* divnum: Divnum. (line 6)
-* dnl: Dnl. (line 6)
-* dumpdef: Dumpdef. (line 6)
-* errprint: Errprint. (line 6)
-* esyscmd: Esyscmd. (line 6)
-* eval: Eval. (line 6)
-* file: Errprint. (line 26)
-* format: Format. (line 6)
-* gnu: Other Incompat. (line 44)
-* ifdef: Ifdef. (line 6)
-* ifelse: Ifelse. (line 6)
-* include: Include. (line 6)
-* incr: Incr. (line 6)
-* index: Index. (line 6)
-* indir: Indir. (line 6)
-* len: Len. (line 6)
-* line: Errprint. (line 26)
-* m4exit: M4exit. (line 6)
-* m4wrap: M4wrap. (line 6)
-* maketemp: Maketemp. (line 6)
-* patsubst: Patsubst. (line 6)
-* popdef: Pushdef. (line 7)
-* pushdef: Pushdef. (line 7)
-* regexp: Regexp. (line 6)
-* shift: Loops. (line 13)
-* sinclude: Include. (line 6)
-* substr: Substr. (line 6)
-* syscmd: Syscmd. (line 6)
-* sysval: Sysval. (line 6)
-* traceoff: Trace. (line 6)
-* traceon: Trace. (line 6)
-* translit: Translit. (line 6)
-* undefine: Undefine. (line 6)
-* undivert: Undivert. (line 6)
-* unix: Other Incompat. (line 47)
+* builtin: Builtin.
+* changecom: Changecom.
+* changequote: Changequote.
+* changeword: Changeword.
+* debugfile: Debug Output.
+* debugmode: Debug Levels.
+* decr: Incr.
+* define: Define.
+* defn: Defn.
+* divert: Divert.
+* divnum: Divnum.
+* dnl: Dnl.
+* dumpdef: Dumpdef.
+* errprint: Errprint.
+* esyscmd: Esyscmd.
+* eval: Eval.
+* file: Errprint.
+* format: Format.
+* gnu: Other Incompat.
+* ifdef: Ifdef.
+* ifelse: Ifelse.
+* include: Include.
+* incr: Incr.
+* index: Index.
+* indir: Indir.
+* len: Len.
+* line: Errprint.
+* m4exit: M4exit.
+* m4wrap: M4wrap.
+* maketemp: Maketemp.
+* patsubst: Patsubst.
+* popdef: Pushdef.
+* pushdef: Pushdef.
+* regexp: Regexp.
+* shift: Loops.
+* sinclude: Include.
+* substr: Substr.
+* syscmd: Syscmd.
+* sysval: Sysval.
+* traceoff: Trace.
+* traceon: Trace.
+* translit: Translit.
+* undefine: Undefine.
+* undivert: Undivert.
+* unix: Other Incompat.
Tag Table:
Node: Top947
-Node: Preliminaries6950
-Node: Intro7676
-Node: History9290
-Node: Invoking m410216
-Node: Bugs17017
-Node: Manual18290
-Node: Syntax19661
-Node: Names20249
-Node: Quoted strings20627
-Node: Other tokens21217
-Node: Comments21439
-Node: Macros22107
-Node: Invocation22601
-Node: Inhibiting Invocation23417
-Node: Macro Arguments26568
-Node: Quoting Arguments27837
-Node: Macro expansion28647
-Node: Definitions29315
-Node: Define30092
-Node: Arguments30908
-Node: Pseudo Arguments32393
-Node: Undefine34249
-Node: Defn34916
-Node: Pushdef36078
-Node: Indir37919
-Node: Builtin38688
-Node: Conditionals39139
-Node: Ifdef39847
-Node: Ifelse40621
-Node: Loops42392
-Node: Debugging45669
-Node: Dumpdef46249
-Node: Trace47103
-Node: Debug Levels48488
-Node: Debug Output50878
-Node: Input Control51405
-Node: Dnl51943
-Node: Changequote53075
-Node: Changecom54446
-Node: Changeword55737
-Node: M4wrap58954
-Node: File Inclusion60163
-Node: Include60480
-Node: Search Path62415
-Node: Diversions63206
-Node: Divert64444
-Node: Undivert65581
-Node: Divnum67520
-Node: Cleardiv68070
-Node: Text handling69111
-Node: Len69834
-Node: Index70239
-Node: Regexp70831
-Node: Substr71929
-Node: Translit72556
-Node: Patsubst74006
-Node: Format76106
-Node: Arithmetic77602
-Node: Incr78050
-Node: Eval78561
-Node: UNIX commands81567
-Node: Syscmd82041
-Node: Esyscmd82762
-Node: Sysval83715
-Node: Maketemp84129
-Node: Miscellaneous84879
-Node: Errprint85251
-Node: M4exit86253
-Node: Frozen files87047
-Node: Compatibility91970
-Node: Extensions92591
-Node: Incompatibilities94954
-Node: Other Incompat95403
-Node: Concept index97573
-Node: Macro index107424
+Node: Preliminaries6948
+Node: Intro7670
+Node: History9276
+Node: Invoking m410194
+Node: Bugs16987
+Node: Manual18252
+Node: Syntax19615
+Node: Names20199
+Node: Quoted strings20569
+Node: Other tokens21151
+Node: Comments21365
+Node: Macros22025
+Node: Invocation22515
+Node: Inhibiting Invocation23323
+Node: Macro Arguments26466
+Node: Quoting Arguments27727
+Node: Macro expansion28529
+Node: Definitions29189
+Node: Define29962
+Node: Arguments30770
+Node: Pseudo Arguments32247
+Node: Undefine34095
+Node: Defn34754
+Node: Pushdef35908
+Node: Indir37741
+Node: Builtin38500
+Node: Conditionals38941
+Node: Ifdef39645
+Node: Ifelse40411
+Node: Loops42174
+Node: Debugging45443
+Node: Dumpdef46019
+Node: Trace46865
+Node: Debug Levels48242
+Node: Debug Output50623
+Node: Input Control51140
+Node: Dnl51674
+Node: Changequote52796
+Node: Changecom54157
+Node: Changeword55438
+Node: M4wrap58647
+Node: File Inclusion59846
+Node: Include60159
+Node: Search Path62084
+Node: Diversions62867
+Node: Divert64101
+Node: Undivert65230
+Node: Divnum67161
+Node: Cleardiv67703
+Node: Text handling68736
+Node: Len69453
+Node: Index69848
+Node: Regexp70430
+Node: Substr71518
+Node: Translit72135
+Node: Patsubst73575
+Node: Format75663
+Node: Arithmetic77149
+Node: Incr77591
+Node: Eval78092
+Node: UNIX commands81088
+Node: Syscmd81556
+Node: Esyscmd82267
+Node: Sysval83210
+Node: Maketemp83614
+Node: Miscellaneous84354
+Node: Errprint84720
+Node: M4exit85708
+Node: Frozen files86490
+Node: Compatibility91407
+Node: Extensions92022
+Node: Incompatibilities94375
+Node: Other Incompat94814
+Node: Concept index96974
+Node: Macro index103979
End Tag Table
- Changes to m4/doc/m4.info [branch-1_4],
Gary V . Vaughan <=