groff-commit
[Top][All Lists]
Advanced

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

[groff] 02/15: [troff]: Warn when `cflags` lacks arguments.


From: G. Branden Robinson
Subject: [groff] 02/15: [troff]: Warn when `cflags` lacks arguments.
Date: Fri, 1 Dec 2023 16:02:57 -0500 (EST)

gbranden pushed a commit to branch master
in repository groff.

commit 01eba66e5cd4cf870a9a9213d74b08de79a46dea
Author: G. Branden Robinson <g.branden.robinson@gmail.com>
AuthorDate: Tue Nov 28 18:15:42 2023 -0600

    [troff]: Warn when `cflags` lacks arguments.
    
    * src/roff/troff/input.cpp (char_flags): Rename to...
      (set_character_flags): ...this.
      (init_input_requests): Update call site.
    
      (set_character_flags): Declare as `static`; this function doesn't need
      external visibility.  Throw warning diagnositc when no character
      arguments are present.
---
 ChangeLog                | 10 ++++++++++
 src/roff/troff/input.cpp | 13 ++++++++++---
 2 files changed, 20 insertions(+), 3 deletions(-)

diff --git a/ChangeLog b/ChangeLog
index bf95ea4c1..0a68b9d6e 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,13 @@
+2023-11-28  G. Branden Robinson <g.branden.robinson@gmail.com>
+
+       * src/roff/troff/input.cpp (char_flags): Rename to...
+       (set_character_flags): ...this.
+       (init_input_requests): Update call site.
+
+       (set_character_flags): Declare as `static`; this function
+       doesn't need external visibility.  Throw warning diagnositc when
+       no character arguments are present.
+
 2023-11-27  G. Branden Robinson <g.branden.robinson@gmail.com>
 
        * doc/groff.texi (Miscellaneous): Clarify behavior of `mc`.
diff --git a/src/roff/troff/input.cpp b/src/roff/troff/input.cpp
index aa776abec..7a70722ab 100644
--- a/src/roff/troff/input.cpp
+++ b/src/roff/troff/input.cpp
@@ -7197,10 +7197,16 @@ void translate_input()
   do_translate(1, 1);
 }
 
-void char_flags()
+static void set_character_flags()
 {
   int flags;
-  if (get_integer(&flags))
+  if (get_integer(&flags)) {
+    if (tok.is_newline() || tok.is_eof()) {
+      warning(WARN_MISSING, "character flags configuration request"
+             " expects one or more characters to configure");
+      skip_line();
+      return;
+    }
     while (has_arg()) {
       charinfo *ci = tok.get_char(true /* required */);
       if (ci) {
@@ -7211,6 +7217,7 @@ void char_flags()
       }
       tok.next();
     }
+  }
   skip_line();
 }
 
@@ -8507,7 +8514,7 @@ void init_input_requests()
   init_request("cc", assign_control_character);
   init_request("c2", assign_no_break_control_character);
   init_request("cf", copy_file);
-  init_request("cflags", char_flags);
+  init_request("cflags", set_character_flags);
   init_request("char", define_character);
   init_request("chop", chop_macro);
   init_request("class", define_class);



reply via email to

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