Source-Changes-HG archive
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]
[src/trunk]: src/usr.bin/m4 Improve markup for better PostScript output.
details: https://anonhg.NetBSD.org/src/rev/cde5cdad4d47
branches: trunk
changeset: 935222:cde5cdad4d47
user: uwe <uwe%NetBSD.org@localhost>
date: Sat Jun 27 19:07:15 2020 +0000
description:
Improve markup for better PostScript output.
Make sure quotes are right and copy-pastable even in UTF-8 output.
diffstat:
usr.bin/m4/m4.1 | 204 +++++++++++++++++++++++++++++++------------------------
1 files changed, 114 insertions(+), 90 deletions(-)
diffs (truncated from 465 to 300 lines):
diff -r 85d62bf7c60a -r cde5cdad4d47 usr.bin/m4/m4.1
--- a/usr.bin/m4/m4.1 Sat Jun 27 18:52:24 2020 +0000
+++ b/usr.bin/m4/m4.1 Sat Jun 27 19:07:15 2020 +0000
@@ -1,4 +1,4 @@
-.\" $NetBSD: m4.1,v 1.30 2020/06/25 02:59:20 uwe Exp $
+.\" $NetBSD: m4.1,v 1.31 2020/06/27 19:07:15 uwe Exp $
.\" @(#) $OpenBSD: m4.1,v 1.56 2009/10/14 17:19:47 sthen Exp $
.\"
.\" Copyright (c) 1989, 1993
@@ -38,11 +38,11 @@
.Nm m4
.Nd macro language processor
.Sh SYNOPSIS
-.Nm m4
+.Nm
.Op Fl EGgiPQsv
.Oo
.Sm off
-.Fl D Ar name Op No = Ar value
+.Fl D Ar name Op Cm = Ar value
.Sm on
.Oc
.Op Fl d Ar flags
@@ -56,42 +56,49 @@
.Op Ar
.Sh DESCRIPTION
The
-.Nm m4
+.Nm
utility is a macro processor that can be used as a front end to any
language (e.g., C, ratfor, fortran, lex, and yacc).
If no input files are given,
-.Nm m4
+.Nm
reads from the standard input,
otherwise files specified on the command line are
processed in the given order.
-Input files can be regular files, files in the m4 include paths, or a
+Input files can be regular files, files in the
+.Nm
+include paths, or a
single dash
-.Pq Sq - ,
+.Pq Sq Fl ,
denoting standard input.
-.Nm m4
+.Nm
writes
the processed text to the standard output, unless told otherwise.
.Pp
-Macro calls have the form name(argument1[, argument2, ..., argumentN]).
+Macro calls have the form
+.Fo name
+.Fa argument1\|
+.Bo \" should be Oo/Oc but mandoc chokes on it
+.Fa argument2
+.Fa \&...
+.Fa argumentN\|
+.Bc Ns Fc
.Pp
There cannot be any space following the macro name and the open
parenthesis
-.Sq \&( .
+.Ql \&( .
If the macro name is not followed by an open
parenthesis it is processed with no arguments.
.Pp
Macro names consist of a leading alphabetic or underscore
-possibly followed by alphanumeric or underscore characters, e.g.,
-valid macro names match the pattern
-.Dq [a-zA-Z_][a-zA-Z0-9_]* .
+possibly followed by alphanumeric or underscore characters,
+i.e. valid macro names match the pattern
+.Dq Li [a-zA-Z_][a-zA-Z0-9_]*\| .
.Pp
In arguments to macros, leading unquoted space, tab, and newline
.Pq Sq \en
characters are ignored.
-To quote strings, use left and right single quotes
-.Po e.g.,\ \&
-.Sq "\ this is a string with a leading space"
-.Pc .
+To quote strings, use left and right single quotes, e.g.\&
+.Li "\` this is a string with a leading space\(aq" .
You can change the quote characters with the
.Ic changequote
built-in macro.
@@ -100,39 +107,41 @@
recognized as special when not followed by an open parenthesis.
.Pp
The options are as follows:
-.Bl -tag -width Ds
-.It Fl D , Fl Fl define Ar name Ns Op Pf = Ns Ar value
+.Bl -tag -width Fl
+.It Fl D , Fl Fl define Ar name Ns Op Ns Cm = Ns Ar value
Define the symbol
.Ar name
-to have some value (or
-.Dv NULL ) .
+to have
+.Ar value
+or to be a null string.
.It Fl d , Fl Fl debug Ar "flags"
Set trace flags.
.Ar flags
may hold the following:
-.Bl -tag -width Ds
-.It Ar a
+.Pp
+.Bl -tag -width ".Li XX" -compact
+.It Cm a
print macro arguments.
-.It Ar c
+.It Cm c
print macro expansion over several lines.
-.It Ar e
+.It Cm e
print result of macro expansion.
-.It Ar f
+.It Cm f
print filename location.
-.It Ar l
+.It Cm l
print line number.
-.It Ar q
+.It Cm q
quote arguments and expansion with the current quotes.
-.It Ar t
+.It Cm t
start with all macros traced.
-.It Ar x
+.It Cm x
number macro expansions.
-.It Ar V
-turn on all options.
+.It Cm V
+turn on all trace flags.
.El
.Pp
By default, trace is set to
-.Qq eq .
+.Ql eq .
.It Fl E , Fl Fl fatal-warnings
Warnings make
.Nm
@@ -141,16 +150,24 @@
Save the input state to
.Ar filename .
.It Fl G , Fl Fl traditional
-Disable GNU-m4 extensions.
+Disable GNU\~m4 extensions.
.It Fl g , Fl Fl gnu
-Activate GNU-m4 compatibility mode.
-In this mode, translit handles simple character
-ranges (e.g., a-z), regular expressions mimic emacs behavior,
-multiple m4wrap calls are handled as a stack,
+Activate GNU\~m4 compatibility mode.
+In this mode
+.Ic translit
+handles simple character
+ranges (e.g.,
+.Sq Li a-z ) ,
+regular expressions mimic emacs behavior,
+multiple
+.Ic m4wrap
+calls are handled as a stack,
the number of diversions is unlimited,
empty names for macro definitions are allowed,
-and eval understands
-.Sq 0rbase:value
+and
+.Ic eval
+understands
+.Sq Ic 0r Ns Ar base Ns Cm \&: Ns Ar value
numbers.
.It Fl Fl help
Print help message and exit.
@@ -168,7 +185,7 @@
.Ar filename .
.It Fl P , Fl Fl prefix-builtins
Prefix all built-in macros with
-.Sq m4_ .
+.Sq Li m4_ .
For example, instead of writing
.Ic define ,
use
@@ -191,7 +208,7 @@
Print the version and exit.
.El
.Sh SYNTAX
-.Nm m4
+.Nm
provides the following built-in macros.
They may be redefined, losing their original meaning.
Return values are null unless otherwise stated.
@@ -205,9 +222,8 @@
Comment sequences may be up to five characters long.
The default values are the hash sign
and the newline character.
-.Bd -literal -offset indent
-# This is a comment
-.Ed
+.Pp
+.Dl # This is a comment
.Pp
With no arguments, comments are turned off.
With one single argument, the end comment sequence is set
@@ -217,9 +233,8 @@
Quote sequences may be up to five characters long.
The default values are the backquote character and the quote
character.
-.Bd -literal -offset indent
-`Here is a quoted string'
-.Ed
+.Pp
+.Dl \&\`Here is a quoted string\(aq
.Pp
With no arguments, the default quotes are restored.
With one single argument, the close quote sequence is set
@@ -238,22 +253,22 @@
value of the second argument
.Fa value .
Each occurrence of
-.Sq $n
+.Sq Li \&$ Ns Ar n
(where
.Ar n
is 0 through 9) is replaced by the
.Ar n Ns 'th
argument.
-.Sq $0
+.Sq Li $0
is the name of the calling macro.
Undefined arguments are replaced by a null string.
-.Sq $#
+.Sq Li $#
is replaced by the number of arguments;
-.Sq $*
+.Sq Li $*\|
is replaced by all arguments comma separated;
-.Sq $@
+.Sq Li $@
is the same as
-.Sq $*
+.Sq Li $*\|
but all arguments are quoted against further expansion.
.It Fn defn name ...
Returns the quoted definition for each argument.
@@ -262,7 +277,7 @@
.It Fn divert num
There are 10 output queues (numbered 0-9).
At the end of processing
-.Nm m4
+.Nm
concatenates all the queues in numerical order to produce the
final output.
Initially the output queue is 0.
@@ -277,12 +292,12 @@
Prints the names and definitions for the named items, or for everything
if no arguments are passed.
.It Fn errprint msg
-Prints the first argument on the standard error output stream.
+Prints the first argument on the standard error stream.
.It Fn esyscmd cmd
Passes its first argument to a shell and returns the shell's standard output.
Note that the shell shares its standard input and standard error with
-.Nm m4 .
-.It Fn eval expr[,radix[,minimum]]
+.Nm .
+.It Fn eval expr radix minimum
Computes the first argument as an arithmetic expression using 32-bit
arithmetic.
Operators are the standard C ternary, arithmetic, logical,
@@ -304,17 +319,21 @@
.Fa arg1
and following arguments, in a way similar to
.Xr printf 3 .
-This built-in is only available in GNU-m4 compatibility mode, and the only
+This built-in is only available in GNU\~m4 compatibility mode, and the only
parameters implemented are there for autoconf compatibility:
left-padding flag, an optional field width, a maximum field width,
-*-specified field widths, and the %s and %c data type.
+.So Li \&*\| Sc Ns -specified
+field widths, and the
+.Ql %s
+and
+.Ql %c
+data type.
.It Fn ifdef name yes no
If the macro named by the first argument is defined then return the second
argument, otherwise the third.
-If there is no third argument, the value is
-.Dv NULL .
+If there is no third argument, the value is null.
The word
-.Qq unix
+.Sq Li unix
is predefined.
.It Fn ifelse a b yes ...
If the first argument
Home |
Main Index |
Thread Index |
Old Index