gbranden pushed a commit to branch master
in repository groff.
commit 06ae6d9c0d6430b98307ff4ed8b68f09d6f2efde
Author: G. Branden Robinson <[email protected]>
AuthorDate: Sun Dec 21 12:15:16 2025 -0600
[troff]: Refactor (1/2).
Move page offset updates from language parser logic into "engine" logic.
* src/roff/troff/div.h (class top_level_diversion): Declare new member
function `set_page_offset()`.
(top_level_diversion::set_page_offset): Define it, and make it
responsible for updating both `page_offset` and `prev_page_offset`
private member variables.
* src/roff/troff/div.cpp (page_offset): Make request handler call this
new mutator member function instead of manipulating the diversion's
properties directly.
---
ChangeLog | 14 ++++++++++++++
src/roff/troff/div.cpp | 3 +--
src/roff/troff/div.h | 7 +++++++
3 files changed, 22 insertions(+), 2 deletions(-)
diff --git a/ChangeLog b/ChangeLog
index 86ba659ec..48ad2340a 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,17 @@
+2025-12-21 G. Branden Robinson <[email protected]>
+
+ [troff]: Refactor. Move page offset updates from language
+ parser logic into "engine" logic.
+
+ * src/roff/troff/div.h (class top_level_diversion): Declare new
+ member function `set_page_offset()`.
+ (top_level_diversion::set_page_offset): Define it, and make it
+ responsible for updating both `page_offset` and
+ `prev_page_offset` private member variables.
+ * src/roff/troff/div.cpp (page_offset): Make request handler
+ call this new mutator member function instead of manipulating
+ the diversion's properties directly.
+
2025-12-21 G. Branden Robinson <[email protected]>
[grohtml,grotty]: Fix Savannah #67843.
diff --git a/src/roff/troff/div.cpp b/src/roff/troff/div.cpp
index ed5b8e727..98251851c 100644
--- a/src/roff/troff/div.cpp
+++ b/src/roff/troff/div.cpp
@@ -743,8 +743,7 @@ void page_offset()
// oriented request.
if (!has_arg() || !read_hunits(&n, 'm', topdiv->page_offset))
n = topdiv->prev_page_offset;
- topdiv->prev_page_offset = topdiv->page_offset;
- topdiv->page_offset = n;
+ topdiv->set_page_offset(n);
topdiv->modified_tag.incl(MTSM_PO);
skip_line();
}
diff --git a/src/roff/troff/div.h b/src/roff/troff/div.h
index aa0a19f3b..e43a56292 100644
--- a/src/roff/troff/div.h
+++ b/src/roff/troff/div.h
@@ -125,6 +125,7 @@ public:
void vjustify(symbol);
#endif /* COLUMN */
hunits get_page_offset() { return page_offset; }
+ void set_page_offset(hunits /* h */);
vunits get_page_length() { return page_length; }
vunits distance_to_next_trap();
const char *get_next_trap_name();
@@ -150,6 +151,12 @@ public:
bool is_diversion() { return false; }
};
+inline void top_level_diversion::set_page_offset(hunits h)
+{
+ prev_page_offset = page_offset;
+ page_offset = h;
+}
+
extern top_level_diversion *topdiv;
extern diversion *curdiv;
_______________________________________________
groff-commit mailing list
[email protected]
https://lists.gnu.org/mailman/listinfo/groff-commit