groff-commit
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[groff] 14/34: [libgroff]: Refactor `font::scan_papersize()`.


From: G. Branden Robinson
Subject: [groff] 14/34: [libgroff]: Refactor `font::scan_papersize()`.
Date: Thu, 2 Sep 2021 02:48:33 -0400 (EDT)

gbranden pushed a commit to branch master
in repository groff.

commit 8b2e692af9493d7201667485ef7ee2632cdafa5c
Author: G. Branden Robinson <g.branden.robinson@gmail.com>
AuthorDate: Tue Aug 24 22:07:40 2021 +1000

    [libgroff]: Refactor `font::scan_papersize()`.
    
    * src/libs/libgroff/font.cpp (font::scan_papersize): Ensure successful
      return value of `fgets()` before attempting to parse string for paper
      format.  Convert `test_file` to Boolean and rename to
      `attempt_file_open`.  Quiets GCC `-Wunused-result` warning.
---
 ChangeLog                  | 10 ++++++++++
 src/libs/libgroff/font.cpp | 20 +++++++++++---------
 2 files changed, 21 insertions(+), 9 deletions(-)

diff --git a/ChangeLog b/ChangeLog
index cba8f90..2d6f551 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,13 @@
+2021-08-24  G. Branden Robinson <g.branden.robinson@gmail.com>
+
+       [libgroff]: Refactor `font::scan_papersize()`.
+
+       * src/libs/libgroff/font.cpp (font::scan_papersize): Ensure
+       successful return value of `fgets()` before attempting to parse
+       string for paper format.  Convert `test_file` to Boolean and
+       rename to `attempt_file_open`.  Quiets GCC `-Wunused-result`
+       warning.
+
 2021-08-23  G. Branden Robinson <g.branden.robinson@gmail.com>
 
        [tests]: Apply naming convention.
diff --git a/src/libs/libgroff/font.cpp b/src/libs/libgroff/font.cpp
index eb28048..46547ab 100644
--- a/src/libs/libgroff/font.cpp
+++ b/src/libs/libgroff/font.cpp
@@ -709,7 +709,7 @@ int font::scan_papersize(const char *p,
   double l, w;
   char lu[2], wu[2];
   const char *pp = p;
-  int test_file = 1;
+  bool attempt_file_open = true;
   char line[255];
 again:
   if (csdigit(*pp)) {
@@ -737,17 +737,19 @@ again:
          *size = papersizes[i].name;
        return 1;
       }
-    if (test_file) {
+    if (attempt_file_open) {
       FILE *f = fopen(p, "r");
       if (f) {
-       fgets(line, 254, f);
+       if (fgets(line, 254, f)) {
+         // Don't recurse on file names.
+         attempt_file_open = false;
+         char *linep = strchr(line, '\0');
+         // skip final newline, if any
+         if (*(--linep) == '\n')
+           *linep = '\0';
+         pp = line;
+       }
        fclose(f);
-       test_file = 0;
-       char *linep = strchr(line, '\0');
-       // skip final newline, if any
-       if (*(--linep) == '\n')
-         *linep = '\0';
-       pp = line;
        goto again;
       }
     }



reply via email to

[Prev in Thread] Current Thread [Next in Thread]