bugGNU roff - Bugs: bug #63825, [man pages] insufficient escaping...

 
 

bug #63825: [man pages] insufficient escaping in fallback MR definition

Submitter:  G. Branden Robinson <gbranden>
Submitted:  Tue 21 Feb 2023 09:22:52 AM UTC
   
 
Category:  General Severity:  5 - Blocker
Item Group:  Documentation Status:  Fixed
Privacy:  Public Assigned to:  gbranden
Open/Closed:  Closed Planned Release:  1.23.0
* Mandatory Fields

Add a New Comment Rich Markup
   

Thu 23 Feb 2023 04:13:22 PM UTC, comment #1: 


commit a9767ace3dd6a4a500c02ff3658e6832fabc78ab
Author: G. Branden Robinson <g.branden.robinson@gmail.com>
Date:   Tue Feb 21 14:42:06 2023 -0600

    [man pages]: Define page-local `MR` fallback.

    [man pages]: Provide page-local fallback definition of new `MR` macro.
    I didn't think I was going to have to do this, but the premier site on
    the web for viewing Linux man pages, Michael Kerrisk's man7.org, has
    been pulling snapshots of the pages themselves without upgrading the
    underlying macros, and so man page cross references set with `MR` are
    getting lost in its presentations.  (I acknowledge: Ingo Schwarze warned
    me something like this could happen.)  This definition is intended as a
    stopgap measure only.  I want to revert this after groff 1.23 is
    released and has spread to some reasonable degree.

    * contrib/chem/chem.1.man:
    * contrib/eqn2graph/eqn2graph.1.man:
    * contrib/gdiffmk/gdiffmk.1.man:
    * contrib/glilypond/glilypond.1.man:
    * contrib/gperl/gperl.1.man:
    * contrib/gpinyin/gpinyin.1.man:
    * contrib/grap2graph/grap2graph.1.man:
    * contrib/hdtbl/groff_hdtbl.7.man:
    * contrib/mm/groff_mm.7.man:
    * contrib/mm/groff_mmse.7.man:
    * contrib/mm/mmroff.1.man:
    * contrib/mom/groff_mom.7.man:
    * contrib/pdfmark/pdfroff.1.man:
    * contrib/pic2graph/pic2graph.1.man:
    * contrib/rfc1345/groff_rfc1345.7.man:
    * man/groff.7.man:
    * man/groff_char.7.man:
    * man/groff_diff.7.man:
    * man/groff_font.5.man:
    * man/groff_out.5.man:
    * man/groff_tmac.5.man:
    * man/roff.7.man:
    * src/devices/grodvi/grodvi.1.man:
    * src/devices/grohtml/grohtml.1.man:
    * src/devices/grolbp/grolbp.1.man:
    * src/devices/grolj4/grolj4.1.man:
    * src/devices/gropdf/gropdf.1.man:
    * src/devices/gropdf/pdfmom.1.man:
    * src/devices/grops/grops.1.man:
    * src/devices/grotty/grotty.1.man:
    * src/devices/xditview/gxditview.1.man:
    * src/preproc/eqn/eqn.1.man:
    * src/preproc/eqn/neqn.1.man:
    * src/preproc/grn/grn.1.man:
    * src/preproc/pic/pic.1.man:
    * src/preproc/preconv/preconv.1.man:
    * src/preproc/refer/refer.1.man:
    * src/preproc/soelim/soelim.1.man:
    * src/preproc/tbl/tbl.1.man:
    * src/roff/groff/groff.1.man:
    * src/roff/nroff/nroff.1.man:
    * src/roff/troff/troff.1.man:
    * src/utils/addftinfo/addftinfo.1.man:
    * src/utils/afmtodit/afmtodit.1.man:
    * src/utils/grog/grog.1.man:
    * src/utils/hpftodit/hpftodit.1.man:
    * src/utils/indxbib/indxbib.1.man:
    * src/utils/lkbib/lkbib.1.man:
    * src/utils/lookbib/lookbib.1.man:
    * src/utils/pfbtops/pfbtops.1.man:
    * src/utils/tfmtodit/tfmtodit.1.man:
    * src/utils/xtotroff/xtotroff.1.man:
    * tmac/groff_man.7.man.in:
    * tmac/groff_me.7.man:
    * tmac/groff_ms.7.man:
    * tmac/groff_trace.7.man:
    * tmac/groff_www.7.man: Do it.

    Fixes <https://savannah.gnu.org/bugs/?63825>.  Thanks greatly to Alexis
    for identifying an issue with mandoc(1)'s handling of an earlier
    iteration of this fallback, and to John Gardner for identifying a method
    of detecting mandoc as the renderer at formatting time.

    Tested with groff 1.22.4, mandoc 1.14.5, and groff Git HEAD (of course).

    The sed script I used follows.

    /^\.cp 0/a\
    .\
    .\\" Define fallback for groff 1.23's MR macro if the system lacks it.\
    .nr do-fallback 0\
    .if !\\n(.f           .nr do-fallback 1 \\" mandoc\
    .if  \\n(.g .if !d MR .nr do-fallback 1 \\" older groff\
    .if !\\n(.g           .nr do-fallback 1 \\" non-groff *roff\
    .if \\n[do-fallback]  \\{\\\
    .  de MR\
    .    ie \\\\n(.$=1 \\\
    .      I \\%\\\\$1\
    .    el \\\
    .      IR \\%\\\\$1 (\\\\$2)\\\\$3\
    .  .\
    .\\}\
    .rr do-fallback


G. Branden Robinson <gbranden>
Group administrator
Tue 21 Feb 2023 09:22:52 AM UTC, original submission:  

Boy, I really stepped on my di...tail with this one.

https://git.savannah.gnu.org/cgit/groff.git/commit/?id=18d708e489758636ff9e168eee2592591755eb61

I had a fallback definition of `MR` in my /etc/groff/man.local file so when I thought I was testing it, I wasn't.  The branch inside the `@@` macro to define the `MR` macro was never being taken.

Thanks to Alexis for reporting this.

https://lists.gnu.org/archive/html/groff/2023-02/msg00102.html

Might be cleanest to just revert that commit and re-commit with a fixed sed script.

G. Branden Robinson <gbranden>
Group administrator

 

(Note: upload size limit is set to 16384 kB, after insertion of the required escape characters.)

Attach Files:
   
   
Comment:
   

No files currently attached

 

Depends on the following items: None found

Items that depend on this one: None found

 

Carbon-Copy List
  • -email is unavailable- added by gbranden (Submitted the item)
  •  

    There are 0 votes so far. Votes easily highlight which items people would like to see resolved in priority, independently of the priority of the item set by tracker managers.

    Only logged-in users can vote.

     

    Follow 3 latest changes.

    Date Changed by Updated Field Previous Value => Replaced by
    2023-02-23 gbranden StatusIn Progress Fixed
        Open/ClosedOpen Closed
    2023-02-21 gbranden Planned ReleaseNone 1.23.0

    Back to the top

    Powered by Savane 3.13-caa5.
    Corresponding source code