Hello Branden,

G. Branden Robinson wrote on Sun, Aug 09, 2026 at 03:35:57AM -0500:

> msoquiet
> soquiet
> 
> hydefault
> 
> pstream
> pline
> phw
> pcomposite
> pchar
> pcolor
> pwh (renamed from `ptr`)

Thanks for this list.  To make mandoc scream less at the poor user
when encountering any of these requests (which is hopefully unlikely
in manual pages, but better safe than sorry). i just committed the
patch appended below.

For now, i didn't change how mandoc(1) treats .ptr.  Even though i
do not recall ever seeing it in a manual page, manual pages can
have very long lives, and some are entirely private inside companies
or private projects, so we never know for sure what people may be
doing.  Should ignoring .ptr ever entail any downside, it can always
be revisited.  In general, when stuff that mandoc(1) ignores can
reasonably be handled better, that can always be considered, although
there is no guarantee that features will be added on user request,
as usual in the free software world.

I believe i now answered all points raised in your cited message.

Yours,
  Ingo


Log Message:
-----------
Ignore various roff(7) requests that are new in groff-1.23 and groff-1.24.
Most of these only serve debugging purposes, and some are related to
features that are not relevant in manual pages and that we do not support
in the first place.

Two special cases are notable: .msoquiet is ignored because insecure
(just like .mso already was), and .soquiet is treated as an exact
alias for .so, without suppressing any diagnostics, because in manual
pages, missing include files are never harmless.

List of requests that needed checking provided by G. Branden Robinson.

Modified Files:
--------------
    mandoc:
        roff.7
        roff.c
        roff.h

Revision Data
-------------
Index: roff.c
===================================================================
RCS file: /home/cvs/mandoc/mandoc/roff.c,v
diff -Lroff.c -Lroff.c -u -p -r1.406 -r1.407
--- roff.c
+++ roff.c
@@ -287,6 +287,7 @@ const char *__roff_name[MAN_MAX + 1] = {
        "fzoom",        "gcolor",       "hc",           "hcode",
        "hidechar",     "hla",          "hlm",          "hpf",
        "hpfa",         "hpfcode",      "hw",           "hy",
+       "hydefault",
        "hylang",       "hylen",        "hym",          "hypp",
        "hys",          "ie",           "if",           "ig",
        "index",        "it",           "itc",          "IX",
@@ -294,23 +295,25 @@ const char *__roff_name[MAN_MAX + 1] = {
        "lc",           "lc_ctype",     "lds",          "length",
        "letadj",       "lf",           "lg",           "lhang",
        "linetabs",     "lnr",          "lnrf",         "lpfx",
-       "ls",           "lsm",          "lt",
-       "mediasize",    "minss",        "mk",           "mso",
+       "ls",           "lsm",          "lt",           "mediasize",
+       "minss",        "mk",           "mso",          "msoquiet",
        "na",           "ne",           "nh",           "nhychar",
        "nm",           "nn",           "nop",          "nr",
        "nrf",          "nroff",        "ns",           "nx",
        "open",         "opena",        "os",           "output",
-       "padj",         "papersize",    "pc",           "pev",
-       "pi",           "PI",           "pl",           "pm",
-       "pn",           "pnr",          "ps",
-       "psbb",         "pshape",       "pso",          "ptr",
-       "pvs",          "rchar",        "rd",           "recursionlimit",
+       "padj",         "papersize",    "pc",           "pchar",
+       "pcolor",       "pcomposite",   "pev",          "phw",
+       "pi",           "PI",           "pl",           "pline",
+       "pm",           "pn",           "pnr",          "ps",
+       "psbb",         "pshape",       "pso",          "pstream",
+       "ptr",          "pvs",          "pwh",
+       "rchar",        "rd",           "recursionlimit",
        "return",       "rfschar",      "rhang",
        "rm",           "rn",           "rnn",          "rr",
        "rs",           "rt",           "schar",        "sentchar",
        "shc",          "shift",        "sizes",        "so",
-       "spacewidth",   "special",      "spreadwarn",   "ss",
-       "stringdown",   "stringup",
+       "soquiet",      "spacewidth",   "special",      "spreadwarn",
+       "ss",           "stringdown",   "stringup",
        "sty",          "substring",    "sv",           "sy",
        "T&",           "tc",           "TE",
        "TH",           "tkf",          "tl",
@@ -482,6 +485,7 @@ static      struct roffmac   roffs[TOKEN_NONE]
        { roff_line_ignore, NULL, NULL, 0 },  /* hpfcode */
        { roff_line_ignore, NULL, NULL, 0 },  /* hw */
        { roff_line_ignore, NULL, NULL, 0 },  /* hy */
+       { roff_line_ignore, NULL, NULL, 0 },  /* hydefault */
        { roff_line_ignore, NULL, NULL, 0 },  /* hylang */
        { roff_line_ignore, NULL, NULL, 0 },  /* hylen */
        { roff_line_ignore, NULL, NULL, 0 },  /* hym */
@@ -517,6 +521,7 @@ static      struct roffmac   roffs[TOKEN_NONE]
        { roff_line_ignore, NULL, NULL, 0 },  /* minss */
        { roff_line_ignore, NULL, NULL, 0 },  /* mk */
        { roff_insec, NULL, NULL, 0 },  /* mso */
+       { roff_insec, NULL, NULL, 0 },  /* msoquiet */
        { roff_line_ignore, NULL, NULL, 0 },  /* na */
        { roff_line_ignore, NULL, NULL, 0 },  /* ne */
        { roff_line_ignore, NULL, NULL, 0 },  /* nh */
@@ -536,10 +541,15 @@ static    struct roffmac   roffs[TOKEN_NONE]
        { roff_line_ignore, NULL, NULL, 0 },  /* padj */
        { roff_line_ignore, NULL, NULL, 0 },  /* papersize */
        { roff_line_ignore, NULL, NULL, 0 },  /* pc */
+       { roff_line_ignore, NULL, NULL, 0 },  /* pchar */
+       { roff_line_ignore, NULL, NULL, 0 },  /* pcolor */
+       { roff_line_ignore, NULL, NULL, 0 },  /* pcomposite */
        { roff_line_ignore, NULL, NULL, 0 },  /* pev */
+       { roff_line_ignore, NULL, NULL, 0 },  /* phw */
        { roff_insec, NULL, NULL, 0 },  /* pi */
        { roff_unsupp, NULL, NULL, 0 },  /* PI */
        { roff_line_ignore, NULL, NULL, 0 },  /* pl */
+       { roff_line_ignore, NULL, NULL, 0 },  /* pline */
        { roff_line_ignore, NULL, NULL, 0 },  /* pm */
        { roff_line_ignore, NULL, NULL, 0 },  /* pn */
        { roff_line_ignore, NULL, NULL, 0 },  /* pnr */
@@ -547,8 +557,10 @@ static     struct roffmac   roffs[TOKEN_NONE]
        { roff_unsupp, NULL, NULL, 0 },  /* psbb */
        { roff_unsupp, NULL, NULL, 0 },  /* pshape */
        { roff_insec, NULL, NULL, 0 },  /* pso */
+       { roff_line_ignore, NULL, NULL, 0 },  /* pstream */
        { roff_line_ignore, NULL, NULL, 0 },  /* ptr */
        { roff_line_ignore, NULL, NULL, 0 },  /* pvs */
+       { roff_line_ignore, NULL, NULL, 0 },  /* pwh */
        { roff_unsupp, NULL, NULL, 0 },  /* rchar */
        { roff_line_ignore, NULL, NULL, 0 },  /* rd */
        { roff_line_ignore, NULL, NULL, 0 },  /* recursionlimit */
@@ -567,6 +579,7 @@ static      struct roffmac   roffs[TOKEN_NONE]
        { roff_shift, NULL, NULL, 0 },  /* shift */
        { roff_line_ignore, NULL, NULL, 0 },  /* sizes */
        { roff_so, NULL, NULL, 0 },  /* so */
+       { roff_so, NULL, NULL, 0 },  /* soquiet */
        { roff_line_ignore, NULL, NULL, 0 },  /* spacewidth */
        { roff_line_ignore, NULL, NULL, 0 },  /* special */
        { roff_line_ignore, NULL, NULL, 0 },  /* spreadwarn */
Index: roff.h
===================================================================
RCS file: /home/cvs/mandoc/mandoc/roff.h,v
diff -Lroff.h -Lroff.h -u -p -r1.77 -r1.78
--- roff.h
+++ roff.h
@@ -1,6 +1,7 @@
 /* $Id$        */
 /*
- * Copyright (c) 2013-2015,2017-2020,2022 Ingo Schwarze <[email protected]>
+ * Copyright (c) 2013-2015, 2017-2020, 2022, 2026
+ *               Ingo Schwarze <[email protected]>
  * Copyright (c) 2008, 2009, 2010, 2011 Kristaps Dzonsons <[email protected]>
  *
  * Permission to use, copy, modify, and distribute this software for any
@@ -183,6 +184,7 @@ enum        roff_tok {
        ROFF_hpfcode,
        ROFF_hw,
        ROFF_hy,
+       ROFF_hydefault,
        ROFF_hylang,
        ROFF_hylen,
        ROFF_hym,
@@ -219,6 +221,7 @@ enum        roff_tok {
        ROFF_minss,
        ROFF_mk,
        ROFF_mso,
+       ROFF_msoquiet,
        ROFF_na,
        ROFF_ne,
        ROFF_nh,
@@ -238,10 +241,15 @@ enum      roff_tok {
        ROFF_padj,
        ROFF_papersize,
        ROFF_pc,
+       ROFF_pchar,
+       ROFF_pcolor,
+       ROFF_pcomposite,
        ROFF_pev,
+       ROFF_phw,
        ROFF_pi,
        ROFF_PI,
        ROFF_pl,
+       ROFF_pline,
        ROFF_pm,
        ROFF_pn,
        ROFF_pnr,
@@ -249,8 +257,10 @@ enum       roff_tok {
        ROFF_psbb,
        ROFF_pshape,
        ROFF_pso,
+       ROFF_pstream,
        ROFF_ptr,
        ROFF_pvs,
+       ROFF_pwh,
        ROFF_rchar,
        ROFF_rd,
        ROFF_recursionlimit,
@@ -269,6 +279,7 @@ enum        roff_tok {
        ROFF_shift,
        ROFF_sizes,
        ROFF_so,
+       ROFF_soquiet,
        ROFF_spacewidth,
        ROFF_special,
        ROFF_spreadwarn,
Index: roff.7
===================================================================
RCS file: /home/cvs/mandoc/mandoc/roff.7,v
diff -Lroff.7 -Lroff.7 -u -p -r1.124 -r1.125
--- roff.7
+++ roff.7
@@ -1003,6 +1003,9 @@ Currently ignored.
 .It Ic \&hy Op Ar mode
 Set automatic hyphenation mode.
 Currently ignored.
+.It Ic \&hydefault Op Ar mode
+Set default hyphenation mode.
+This is a groff-1.24 extension and currently ignored.
 .It Ic \&hylang Ar language
 Set hyphenation language.
 This is a Heirloom extension and currently ignored.
@@ -1365,6 +1368,12 @@ Currently ignored.
 .It Ic \&mso Ar filename
 Load a macro file using the search path.
 Ignored because insecure.
+.It Ic \&msoquiet Ar filename
+A groff-1.23 extension that
+.Xr mandoc 1
+treats as an alias for
+.Ic \&mso ,
+without suppressing any diagnostic messages.
 .It Ic \&na
 Disable adjusting without changing the adjustment mode.
 Currently ignored.
@@ -1474,9 +1483,23 @@ This is a Heirloom extension and current
 .It Ic \&pc Op Ar char
 Change the page number character.
 Currently ignored.
+.It Ic \&pchar Ar char ...
+Print information about each of the listed characters
+to standard error ourput.
+This is a groff-1.24 extension and currently ignored.
+.It Ic \&pcolor Op Ar colorname ...
+Print information about the named colors to standard error output.
+This is a groff-1.24 extension and currently ignored.
+.It Ic \&pcomposite
+Print the list of configured composite character mappings
+to standard error output.
+This is a groff-1.24 extension and currently ignored.
 .It Ic \&pev
 Print environments.
 This is a groff extension and currently ignored.
+.It Ic \&phw
+Print a list of hyphenation exception words to standard error output.
+This is a groff-1.24 extension and currently ignored.
 .It Ic \&pi Ar command
 Pipe output to a shell command.
 Ignored because insecure.
@@ -1487,6 +1510,10 @@ This is a Heirloom extension and current
 .It Ic \&pl Op Oo Cm + Ns | Ns Cm - Oc Ns Ar height
 Change page length.
 Currently ignored.
+.It Ic \&pline
+Print the list of output nodes corresponding to the pending output line
+to standard error output.
+This is a groff-1.24 extension and currently ignored.
 .It Ic \&pm
 Print names and sizes of macros, strings, and diversions
 to standard error output.
@@ -1519,12 +1546,21 @@ This is a Heirloom extension and current
 .It Ic \&pso Ar command
 Include output of a shell command.
 Ignored because insecure.
+.It Ic \&pstream
+Print the list of open streams to standard error output.
+This is a groff-1.24 extension and currently ignored.
 .It Ic \&ptr
-Print the names and positions of all traps on standard error output.
-This is a groff extension and currently ignored.
+Print the names and positions of all page location traps
+to standard error output.
+This was a groff extension, it was deleted from groff-1.24,
+and it is currently ignored.
 .It Ic \&pvs Op Oo Cm + Ns | Ns Cm - Oc Ns Ar height
 Change post-vertical spacing.
 This is a groff extension and currently ignored.
+.It Ic \&pwh
+Print the names and positions of all page location traps
+to standard error output.
+This is a groff-1.24 extension and currently ignored.
 .It Ic \&rchar Ar glyph ...
 Remove glyph definitions.
 Currently unsupported.
@@ -1620,6 +1656,12 @@ is discouraged.
 Use
 .Xr ln 1
 instead.
+.It Ic \&soquiet Ar filename
+A groff-1.23 extension that
+.Xr mandoc 1
+treats as an alias for
+.Ic \&so ,
+without suppressing any diagnostic messages.
 .It Ic \&sp Op Ar height
 Break the output line and emit vertical space.
 The argument follows the syntax of


              • ... John Gardner
              • ... Larry Kollar
              • ... G. Branden Robinson
              • ... G. Branden Robinson
              • ... G. Branden Robinson
              • ... Ingo Schwarze
              • ... G. Branden Robinson
              • ... Ingo Schwarze
              • ... Ingo Schwarze
              • ... G. Branden Robinson
              • ... Ingo Schwarze
              • ... Ingo Schwarze
              • ... G. Branden Robinson
              • ... Ingo Schwarze
  • ... Bruno Haible via discussion of the GNU roff typesetting system and related software
    • ... G. Branden Robinson
      • ... Bruno Haible via discussion of the GNU roff typesetting system and related software
        • ... G. Branden Robinson
      • ... G. Branden Robinson
        • ... Deri via discussion of the GNU roff typesetting system and related software
          • ... Bruno Haible via discussion of the GNU roff typesetting system and related software

Reply via email to