groff-commit
[Top][All Lists]
Advanced

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

[groff] 07/34: [troff]: Refactor *roff stream handling (2/2).


From: G. Branden Robinson
Subject: [groff] 07/34: [troff]: Refactor *roff stream handling (2/2).
Date: Mon, 16 Sep 2024 20:48:32 -0400 (EDT)

gbranden pushed a commit to branch master
in repository groff.

commit 2e16600dcfcdc52976ec446a3ce9e73559f5035e
Author: G. Branden Robinson <g.branden.robinson@gmail.com>
AuthorDate: Fri Sep 13 03:14:34 2024 -0500

    [troff]: Refactor *roff stream handling (2/2).
    
    * src/roff/troff/input.cpp (close_request): Move stream-closing
      logic (as opposed to request argument validation) into...
      (close_stream): ...its own new function.
---
 ChangeLog                |  6 ++++++
 src/roff/troff/input.cpp | 33 ++++++++++++++++++++-------------
 2 files changed, 26 insertions(+), 13 deletions(-)

diff --git a/ChangeLog b/ChangeLog
index dcdf74d00..addfc34ee 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,9 @@
+2024-09-13  G. Branden Robinson <g.branden.robinson@gmail.com>
+
+       * src/roff/troff/input.cpp (close_request): Move stream-closing
+       logic (as opposed to request argument validation) into...
+       (close_stream): ...its own new function.
+
 2024-09-13  G. Branden Robinson <g.branden.robinson@gmail.com>
 
        * src/roff/troff/input.cpp: Declare global `stream_dictionary`
diff --git a/src/roff/troff/input.cpp b/src/roff/troff/input.cpp
index 57a2032d0..afe1718db 100644
--- a/src/roff/troff/input.cpp
+++ b/src/roff/troff/input.cpp
@@ -7275,6 +7275,24 @@ static void opena_request() // .opena
   skip_line();
 }
 
+static void close_stream(symbol &stream)
+{
+  assert(!stream.is_null());
+  FILE *fp = (FILE *)stream_dictionary.lookup(stream);
+  if (0 /* nullptr */ == fp) {
+    error("cannot close nonexistent stream '%1'", stream.contents());
+    return;
+  }
+  else {
+    if (fclose(fp) != 0) {
+      error("cannot close stream '%1': %2", stream.contents(),
+           strerror(errno));
+      return;
+    }
+  }
+  stream_dictionary.remove(stream);
+}
+
 static void close_request() // .close
 {
   if (!has_arg(true /* peek */)) {
@@ -7285,19 +7303,8 @@ static void close_request() // .close
   symbol stream = get_name();
   // Testing has_arg() should have ensured this.
   assert(stream != 0 /* nullptr */);
-  FILE *fp = (FILE *)stream_dictionary.lookup(stream);
-  if (0 /* nullptr */ == fp) {
-    error("cannot close nonexistent stream '%1'", stream.contents());
-    skip_line();
-    return;
-  }
-  if (fclose(fp) != 0) {
-    error("cannot close stream '%1': %2", stream.contents(),
-         strerror(errno));
-    skip_line();
-    return;
-  }
-  stream_dictionary.remove(stream);
+  if (!stream.is_null())
+    close_stream(stream);
   skip_line();
 }
 



reply via email to

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