gbranden pushed a commit to branch master
in repository groff.

commit b53278be5deb5b6bc4a290ee73ba1e9e1d326134
Author: G. Branden Robinson <g.branden.robin...@gmail.com>
AuthorDate: Fri Jul 4 04:14:25 2025 -0500

    [gropdf]: Add `-W` option.
    
    ... to make font embedding warnings fatal.
    
    * src/devices/gropdf/gropdf.pl: Add global scalar `makeWarningsFatal`.
      Recognize option when calling `GetOptions()`.
    
      (LoadFont): Fall over dead if embedding fails.
    
    * src/devices/gropdf/gropdf.pl (usage):
    * src/devices/gropdf/gropdf.1.man (Options): Document it.
    
    Begins fixing Savannah #67268.
---
 ChangeLog                       | 14 ++++++++++++++
 src/devices/gropdf/gropdf.1.man | 13 +++++++++++--
 src/devices/gropdf/gropdf.pl    |  9 ++++++---
 3 files changed, 31 insertions(+), 5 deletions(-)

diff --git a/ChangeLog b/ChangeLog
index 524ed1820..cf4430a05 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,17 @@
+2025-07-04  G. Branden Robinson <g.branden.robin...@gmail.com>
+
+       [gropdf]: Add `-W` option to make font embedding warnings fatal.
+
+       * src/devices/gropdf/gropdf.pl: Add global scalar
+       `makeWarningsFatal`.  Recognize option when calling
+       `GetOptions()`.
+       (LoadFont): Fall over dead if embedding fails.
+
+       * src/devices/gropdf/gropdf.pl (usage):
+       * src/devices/gropdf/gropdf.1.man (Options): Document it.
+
+       Begins fixing Savannah #67268.
+
 2025-07-01  Deri James  <d...@chuzzlewit.myzen.co.uk>
 
        [gropdf] More rational handling of duplicate font entries.
diff --git a/src/devices/gropdf/gropdf.1.man b/src/devices/gropdf/gropdf.1.man
index 9adc37b2b..7a343e400 100644
--- a/src/devices/gropdf/gropdf.1.man
+++ b/src/devices/gropdf/gropdf.1.man
@@ -9,7 +9,7 @@ output driver for Portable Document Format
 .\" Legal Terms
 .\" ====================================================================
 .\"
-.\" Copyright (C) 2011-2024 Free Software Foundation, Inc.
+.\" Copyright (C) 2011-2025 Free Software Foundation, Inc.
 .\"
 .\" Permission is granted to make and distribute verbatim copies of this
 .\" manual provided the copyright notice and this permission notice are
@@ -64,7 +64,7 @@ output driver for Portable Document Format
 .\" ====================================================================
 .
 .SY gropdf
-.RB [ \-dels ]
+.RB [ \-delsW ]
 .RB [ \-F\~\c
 .IR font-directory ]
 .RB [ \-I\~\c
@@ -252,6 +252,15 @@ You can include your own CMap by specifying a
 or have no CMap at all by omitting the argument.
 .
 .
+.TP
+.B \-W
+Exit with failure status if font embedding fails.
+.
+Normally,
+.I gropdf
+issues a warning diagnostic and proceeds.
+.
+.
 .\" .TP
 .\" .BI \-w n
 .\" Lines should be drawn using a thickness of
diff --git a/src/devices/gropdf/gropdf.pl b/src/devices/gropdf/gropdf.pl
index 89deb83c1..2a7066a53 100644
--- a/src/devices/gropdf/gropdf.pl
+++ b/src/devices/gropdf/gropdf.pl
@@ -449,7 +449,7 @@ sub usage
     my $had_error = shift;
     $stream = *STDERR if $had_error;
     print $stream
-"usage: $prog [-dels] [-F font-directory] [-I inclusion-directory]" .
+"usage: $prog [-delsW] [-F font-directory] [-I inclusion-directory]" .
 " [-p paper-format] [-u [cmap-file]] [-y foundry] [file ...]\n" .
 "usage: $prog {-v | --version}\n" .
 "usage: $prog --help\n";
@@ -489,12 +489,13 @@ my %seac;
 my $thisfnt;
 my $parcln=qr/\[[^\]]*?\]|(.)((?!\1).)*\1/;
 my $parclntyp=qr/(?:[\d\w]|\([+-]?[\S]{2}|$parcln)/;
+my $makeWarningsFatal=0;
 
 if (!GetOptions('F=s' => \@fdlist, 'I=s' => \@idirs, 'l' => \$frot,
     'p=s' => \$fpsz, 'd!' => \$debug, 'help' => \$want_help, 'pdfver=f' => 
\$PDFver,
     'v' => \$version, 'version' => \$version, 'opt=s' => \$options,
     'e' => \$embedall, 'y=s' => \$Foundry, 's' => \$stats,
-    'u:s' => \$unicodemap))
+    'u:s' => \$unicodemap, 'W' => \$makeWarningsFatal))
 {
     &usage(1);
 }
@@ -3533,7 +3534,9 @@ sub LoadFont
        }
        else
        {
-           Warn("unable to embed font file for '$fnt{internalname}'"
+           my $sub=\&Warn;
+           $sub=\&Die if ($makeWarningsFatal);
+           &$sub("unable to embed font file for '$fnt{internalname}'"
            . " ($ofontnm) (missing entry in 'download' file?)")
            if $embedall;
        }

_______________________________________________
groff-commit mailing list
groff-commit@gnu.org
https://lists.gnu.org/mailman/listinfo/groff-commit

Reply via email to