gbranden pushed a commit to branch master
in repository groff.

commit a761a966ad16d5377540edfa22240e78975240f8
Author: G. Branden Robinson <[email protected]>
AuthorDate: Thu Nov 27 01:05:08 2025 -0600

    [troff]: Modestly refactor (7/8).
    
    * src/roff/troff/input.cpp (is_conditional_expression_true):
      Construct integer from character literal.  Store return value of
      `tok.ch()` in temporary local variable of `int`, not `unsigned char`,
      type.
---
 ChangeLog                |  4 +++-
 src/roff/troff/input.cpp | 40 +++++++++++++++++++++-------------------
 2 files changed, 24 insertions(+), 20 deletions(-)

diff --git a/ChangeLog b/ChangeLog
index aae4582f1..470297805 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -14,11 +14,13 @@
        * src/roff/troff/number.cpp (get_incr_number)
        (is_valid_expression, is_valid_term):
        * src/roff/troff/input.cpp (get_line_arg)
-       (read_size):
+       (read_size)
+       (is_conditional_expression_true):
        Construct integer from character literal.
        * src/roff/troff/env.cpp (adjust):
        * src/roff/troff/reg.cpp (assign_register_format_request):
        * src/roff/troff/number.cpp (is_valid_term):
+       * src/roff/troff/input.cpp (is_conditional_expression_true):
        Store return value of `tok.ch()` in local variable of `int`, not
        `char`, type.
        * src/roff/troff/env.cpp: Retype global `TAB_REPEAT_CHAR` from
diff --git a/src/roff/troff/input.cpp b/src/roff/troff/input.cpp
index 82c8e617e..8ddf03597 100644
--- a/src/roff/troff/input.cpp
+++ b/src/roff/troff/input.cpp
@@ -7024,21 +7024,21 @@ static bool is_conditional_expression_true()
   bool perform_output_comparison = false;
   bool want_test_sense_inverted = false;
   tok.skip_spaces();
-  while (tok.ch() == '!') {
+  while (tok.ch() == int('!')) { // TODO: grochar
     tok.next();
     want_test_sense_inverted = !want_test_sense_inverted;
   }
   bool result;
-  unsigned char c = tok.ch();
+  int c = tok.ch(); // safely compares to char literals; TODO: grochar
   if (want_att_compat)
     switch (c) {
-    case 'F':
-    case 'S':
-    case 'c':
-    case 'd':
-    case 'm':
-    case 'r':
-    case 'v':
+    case int('F'): // TODO: grochar
+    case int('S'): // TODO: grochar
+    case int('c'): // TODO: grochar
+    case int('d'): // TODO: grochar
+    case int('m'): // TODO: grochar
+    case int('r'): // TODO: grochar
+    case int('v'): // TODO: grochar
       warning(WARN_SYNTAX,
              "conditional expression operator '%1' is not portable to"
              " AT&T troff",
@@ -7048,25 +7048,25 @@ static bool is_conditional_expression_true()
     default:
       break;
     }
-  if (c == 't') {
+  if (c == int('t')) { // TODO: grochar
     tok.next();
     result = !in_nroff_mode;
   }
-  else if (c == 'n') {
+  else if (c == int('n')) { // TODO: grochar
     tok.next();
     result = in_nroff_mode;
   }
-  else if (c == 'o') {
-    result = (topdiv->get_page_number() & 1);
+  else if (c == int('o')) { // TODO: grochar
+    result = (topdiv->get_page_number() & 1); // TODO: dump cleverness
     tok.next();
   }
-  else if (c == 'e') {
-    result = !(topdiv->get_page_number() & 1);
+  else if (c == int('e')) { // TODO: grochar
+    result = !(topdiv->get_page_number() & 1); // TODO: dump cleverness
     tok.next();
   }
   // TODO: else if (!want_att_compat) {
   // Check for GNU troff extended conditional expression operators.
-  else if ((c == 'd') || (c == 'r')) {
+  else if ((c == int('d') || (c == int('r')))) { // TODO: grochar
     tok.next();
     symbol nm = read_identifier(true /* required */);
     if (nm.is_null()) {
@@ -8314,7 +8314,7 @@ void warnscale_request()
     skip_line();
     return;
   }
-  char c = tok.ch();
+  int c = tok.ch(); // safely compares to char literals; TODO: grochar
   if (c == 'u')
     warn_scale = 1.0;
   else if (c == 'i')
@@ -8654,7 +8654,8 @@ static void define_class_request()
     // Chained range expressions like
     //   \[u3041]-\[u3096]-\[u30FF]
     // are not valid.
-    if ((child1 != 0 /* nullptr */) && (tok.ch() == '-')) {
+    // TODO: use grochar
+    if ((child1 != 0 /* nullptr */) && (tok.ch() == int('-'))) {
       tok.next();
       child2 = tok.get_charinfo();
       if (0 /* nullptr */ == child2) {
@@ -10217,7 +10218,8 @@ static node *read_drawing_command() // \D
       warning(WARN_MISSING, "missing arguments to drawing escape"
              " sequence");
     else {
-      unsigned char type = tok.ch();
+      int type = tok.ch(); // safely compares to char literals
+      // TODO: grochar
       if (type == 'F') {
        read_drawing_command_color_arguments(start_token);
        return 0 /* nullptr */;

_______________________________________________
groff-commit mailing list
[email protected]
https://lists.gnu.org/mailman/listinfo/groff-commit

Reply via email to