Page Menu
Home
FreeBSD
Search
Configure Global Search
Log In
Files
F102673021
D40694.diff
No One
Temporary
Actions
View File
Edit File
Delete File
View Transforms
Subscribe
Mute Notifications
Flag For Later
Award Token
Size
3 KB
Referenced Files
None
Subscribers
None
D40694.diff
View Options
diff --git a/usr.bin/m4/m4.1 b/usr.bin/m4/m4.1
--- a/usr.bin/m4/m4.1
+++ b/usr.bin/m4/m4.1
@@ -33,7 +33,7 @@
.\"
.\" $FreeBSD$
.\"
-.Dd April 8, 2021
+.Dd June 21, 2023
.Dt M4 1
.Os
.Sh NAME
@@ -47,7 +47,7 @@
.Fl D Ar name Op No = Ar value
.Sm on
.Oc
-.Op Fl d Ar flags
+.Op Fl d Oo Oo +- Oc Ns Ar flags Oc
.Op Fl I Ar dirname
.Op Fl o Ar filename
.Op Fl t Ar macro
@@ -98,15 +98,14 @@
.Pp
The options are as follows:
.Bl -tag -width Ds
-.It Fl D Ns Ar name Ns Op = Ns Ar value
+.It Fl D Ns Ar name Ns Oo = Ns Ar value Oc , Fl -define Ns = Ns Ar name Ns Oo = Ns Ar value Oc
Define the symbol
.Ar name
to have some value (or
.Dv NULL ) .
-.It Fl d Ar "flags"
-Set trace flags.
-.Ar flags
-may hold the following:
+.It Fl d Oo Oo +|- Oc Ns Ar flags Oc , Fl -debug Ns = Ns Oo Oo +|- Oc Ns Ar flags Oc
+Set or unset trace flags.
+The trace flags are as follows:
.Bl -tag -width Ds
.It Ar a
print macro arguments.
@@ -128,9 +127,21 @@
turn on all options.
.El
.Pp
+If
+.Qq +
+or
+.Qq -
+is used, the specified flags are added to or removed from the set of
+active trace flags, respectively; otherwise, the specified flags
+replace the set of active trace flags.
+.Pp
+Specifying this option without an argument is equivalent to specifying
+it with the argument
+.Qq aeq .
+.Pp
By default, trace is set to
.Qq eq .
-.It Fl E
+.It Fl E , Fl -fatal-warnings
Set warnings to be fatal.
When a single
.Fl E
@@ -145,7 +156,7 @@
.Nm
will exit with a non-zero exit status.
This behaviour matches GNU-m4 1.4.9 and later.
-.It Fl g
+.It Fl g , Fl -gnu
Activate GNU-m4 compatibility mode.
In this mode, translit handles simple character
ranges (e.g., a-z), regular expressions mimic emacs behavior,
@@ -155,27 +166,27 @@
and eval understands
.Sq 0rbase:value
numbers.
-.It Fl I Ar "dirname"
+.It Fl I Ar dirname , Fl -include Ns = Ns Ar dirname
Add directory
.Ar dirname
to the include path.
-.It Fl o Ar filename
+.It Fl o Ar filename , Fl -error-output Ns = Ns Ar filename
Send trace output to
.Ar filename .
-.It Fl P
+.It Fl P , Fl -prefix-builtins
Prefix all built-in macros with
.Sq m4_ .
For example, instead of writing
.Ic define ,
use
.Ic m4_define .
-.It Fl s
+.It Fl s , Fl -synclines
Output line synchronization directives, suitable for
.Xr cpp 1 .
-.It Fl t Ar macro
+.It Fl t Ar macro , Fl -trace Ns = Ns Ar macro
Turn tracing on for
.Ar macro .
-.It Fl "U" Ns Ar "name"
+.It Fl U Ns Ar name , Fl -undefine Ns = Ns Ar name
Undefine the symbol
.Ar name .
.El
diff --git a/usr.bin/m4/main.c b/usr.bin/m4/main.c
--- a/usr.bin/m4/main.c
+++ b/usr.bin/m4/main.c
@@ -47,6 +47,7 @@
#include <signal.h>
#include <err.h>
#include <errno.h>
+#include <getopt.h>
#include <unistd.h>
#include <stdio.h>
#include <ctype.h>
@@ -60,6 +61,21 @@
#include "extern.h"
#include "pathnames.h"
+static const char *shortopts = "+D:d::EgI:o:Pst:U:";
+static const struct option longopts[] = {
+ { "define", required_argument, NULL, 'D' },
+ { "debug", optional_argument, NULL, 'd' },
+ { "fatal-warnings", no_argument, NULL, 'E' },
+ { "gnu", no_argument, NULL, 'g' },
+ { "include", required_argument, NULL, 'I' },
+ { "error-output", required_argument, NULL, 'o' },
+ { "prefix-builtins", no_argument, NULL, 'P' },
+ { "synclines", no_argument, NULL, 's' },
+ { "trace", required_argument, NULL, 't' },
+ { "undefine", required_argument, NULL, 'U' },
+ { NULL, 0, NULL, 0 },
+};
+
stae *mstack; /* stack of m4 machine */
char *sstack; /* shadow stack, for string space extension */
static size_t STACKMAX; /* current maximum size of stack */
@@ -188,7 +204,7 @@
outfile = NULL;
resizedivs(MAXOUT);
- while ((c = getopt(argc, argv, "gst:d:D:EU:o:I:P")) != -1)
+ while ((c = getopt_long(argc, argv, shortopts, longopts, NULL)) != -1)
switch(c) {
case 'D': /* define something..*/
@@ -218,7 +234,7 @@
mimic_gnu = 1;
break;
case 'd':
- set_trace_flags(optarg);
+ set_trace_flags(optarg ? optarg : "aeq");
break;
case 's':
synch_lines = 1;
File Metadata
Details
Attached
Mime Type
text/plain
Expires
Sat, Nov 16, 4:28 PM (21 h, 42 m)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
14661374
Default Alt Text
D40694.diff (3 KB)
Attached To
Mode
D40694: m4: Support long options.
Attached
Detach File
Event Timeline
Log In to Comment