gbranden pushed a commit to branch master
in repository groff.

commit d2cb1117a9b74a6b740b6c5b4eac01451d016b53
Author: G. Branden Robinson <g.branden.robin...@gmail.com>
AuthorDate: Fri Jul 4 05:39:59 2025 -0500

    [gropdf]: Refactor `OpenFontFile()`.
    
    * src/devices/gropdf/gropdf.pl (OpenFontFile): Refactor.  Rename scalar
      `fnm` to `fileName`.  Add scalar `resolvedFileName`, recording the
      file specification actually opened in the event of success.  Eliminate
      multiple returns.  Use global scalar `fontPath` instead of `dirs`
      argument to search for files.
---
 ChangeLog                    |  8 ++++++++
 src/devices/gropdf/gropdf.pl | 31 +++++++++++++++++++++++--------
 2 files changed, 31 insertions(+), 8 deletions(-)

diff --git a/ChangeLog b/ChangeLog
index f4633da5b..1bf6f2443 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,11 @@
+2025-07-04  G. Branden Robinson <g.branden.robin...@gmail.com>
+
+       * src/devices/gropdf/gropdf.pl (OpenFontFile): Refactor.  Rename
+       scalar `fnm` to `fileName`.  Add scalar `resolvedFileName`,
+       recording the file specification actually opened in the event of
+       success.  Eliminate multiple returns.  Use global scalar
+       `fontPath` instead of `dirs` argument to search for files.
+
 2025-07-04  G. Branden Robinson <g.branden.robin...@gmail.com>
 
        * src/devices/gropdf/gropdf.pl (OpenFile): Rename this...
diff --git a/src/devices/gropdf/gropdf.pl b/src/devices/gropdf/gropdf.pl
index eedd0afdb..6d91f163f 100644
--- a/src/devices/gropdf/gropdf.pl
+++ b/src/devices/gropdf/gropdf.pl
@@ -1218,19 +1218,34 @@ sub OpenFontFile
 {
     my $f=shift;
     my $dirs=shift;
-    my $fnm=shift;
+    my $fileName=shift;
+    my $resolvedFileName;
 
-    if (substr($fnm,0,1)  eq '/' or substr($fnm,1,1) eq ':') # dos
+    # Is the file specification absolute?
+    #
+    # XXX: Forbid this?  See Savannah #66419.
+    if ((substr($fileName,0,1) eq '/')
+       or (substr($fileName,1,1) eq ':')) # dos
     {
-       return if -r "$fnm" and open($$f,"<$fnm");
+       $resolvedFileName=$fileName
+           if (-r "$fileName" and open($$f,"<$fileName"));
     }
-
-    my (@dirs)=split($cfg{RT_SEP},$dirs);
-
-    foreach my $dir (@dirs)
+    else
     {
-       last if -r "$dir/$devnm/$fnm" and open($$f,"<$dir/$devnm/$fnm");
+       my (@dirs)=split($cfg{RT_SEP},$fontPath);
+
+       foreach my $dir (@dirs)
+       {
+           my $attempt="$dir/$devnm/$fileName";
+           if (-r "$attempt" and open($$f,"<$attempt")) {
+               $resolvedFileName=$attempt;
+               last;
+           }
+       }
     }
+
+    Notice("opened '$resolvedFileName' for reading")
+       if $resolvedFileName;
 }
 
 sub LoadDesc


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

Reply via email to