groff-commit
[Top][All Lists]
Advanced

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

[groff] 21/35: [troff]: Make environment::set_font return a bool.


From: G. Branden Robinson
Subject: [groff] 21/35: [troff]: Make environment::set_font return a bool.
Date: Tue, 21 Jun 2022 14:26:30 -0400 (EDT)

gbranden pushed a commit to branch master
in repository groff.

commit cbe4cd192766c8730a31336589f007df51232f0b
Author: G. Branden Robinson <g.branden.robinson@gmail.com>
AuthorDate: Mon Jun 20 14:10:30 2022 -0500

    [troff]: Make environment::set_font return a bool.
    
    [troff]: Revise `environment::set_font` to return Boolean value
    indicating success of font selection operation.
    
    * src/roff/troff/env.cpp (environment::set_font):
    * src/roff/troff/env.h (environment::set_font): Do it.
    
    This prepares the way for a fix for Savannah #62656.
---
 ChangeLog              | 10 ++++++++++
 src/roff/troff/env.cpp | 20 ++++++++++++--------
 src/roff/troff/env.h   |  4 ++--
 3 files changed, 24 insertions(+), 10 deletions(-)

diff --git a/ChangeLog b/ChangeLog
index 72c9e3e6..3b814ab4 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,13 @@
+2022-06-20  G. Branden Robinson <g.branden.robinson@gmail.com>
+
+       [troff]: Revise `environment::set_font` to return Boolean value
+       indicating success of font selection operation.
+
+       * src/roff/troff/env.cpp (environment::set_font):
+       * src/roff/troff/env.h (environment::set_font): Do it.
+
+       This prepares the way for a fix for Savannah #62656.
+
 2022-06-20  G. Branden Robinson <g.branden.robinson@gmail.com>
 
        * src/roff/groff/groff.cpp: Use single exit path, freeing
diff --git a/src/roff/troff/env.cpp b/src/roff/troff/env.cpp
index d6a9e982..7aeb5bd2 100644
--- a/src/roff/troff/env.cpp
+++ b/src/roff/troff/env.cpp
@@ -496,13 +496,13 @@ static node *do_underline_special(bool 
do_underline_spaces)
   return new special_node(m, 1);
 }
 
-void environment::set_font(symbol nm)
+bool environment::set_font(symbol nm)
 {
   if (interrupted)
-    return;
+    return true; // "no operation" is successful
   if (nm == symbol("P") || nm.is_empty()) {
     if (family->make_definite(prev_fontno) < 0)
-      return;
+      return false;
     int tem = fontno;
     fontno = prev_fontno;
     prev_fontno = tem;
@@ -513,10 +513,10 @@ void environment::set_font(symbol nm)
     if (n < 0) {
       n = next_available_font_position();
       if (!mount_font(n, nm))
-       return;
+       return false;
     }
     if (family->make_definite(n) < 0)
-      return;
+      return false;
     fontno = n;
   }
   if (underline_spaces && fontno != prev_fontno) {
@@ -525,18 +525,22 @@ void environment::set_font(symbol nm)
     if (prev_fontno == get_underline_fontno())
       add_node(do_underline_special(false));
   }
+  return true;
 }
 
-void environment::set_font(int n)
+bool environment::set_font(int n)
 {
   if (interrupted)
-    return;
+    return false;
   if (is_good_fontno(n)) {
     prev_fontno = fontno;
     fontno = n;
   }
-  else
+  else {
     warning(WARN_FONT, "no font mounted at position %1", n);
+    return false;
+  }
+  return true;
 }
 
 void environment::set_family(symbol fam)
diff --git a/src/roff/troff/env.h b/src/roff/troff/env.h
index dddf1a17..c7c6e203 100644
--- a/src/roff/troff/env.h
+++ b/src/roff/troff/env.h
@@ -322,8 +322,8 @@ public:
   node *extract_output_line();
   void width_registers();
   void wrap_up_tab();
-  void set_font(int);
-  void set_font(symbol);
+  bool set_font(int);
+  bool set_font(symbol);
   void set_family(symbol);
   void set_size(int);
   void set_char_height(int);



reply via email to

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