gbranden pushed a commit to branch master
in repository groff.
commit 8ae24e2dbe20a1aeb45ff154f5ae62be9e8b2efc
Author: G. Branden Robinson <[email protected]>
AuthorDate: Sat Mar 28 15:01:28 2026 -0500
src/roff/troff/reg.cpp: Trivially refactor.
* src/roff/troff/reg.cpp (number_value_to_ascii): Rename cryptic local
`s` to `roman_numerals`. Also parenthesize formally complex
expression.
---
ChangeLog | 6 ++++++
src/roff/troff/reg.cpp | 41 +++++++++++++++++++++--------------------
2 files changed, 27 insertions(+), 20 deletions(-)
diff --git a/ChangeLog b/ChangeLog
index ad15dc60a..28c06a5ff 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,9 @@
+2026-03-28 G. Branden Robinson <[email protected]>
+
+ * src/roff/troff/reg.cpp (number_value_to_ascii): Trivially
+ refactor. Rename cryptic local `s` to `roman_numerals`. Also
+ parenthesize formally complex expression.
+
2026-03-28 G. Branden Robinson <[email protected]>
* src/roff/troff/env.cpp (environment::set_font): Invert
diff --git a/src/roff/troff/reg.cpp b/src/roff/troff/reg.cpp
index 6dbcbc588..81f5aa53e 100644
--- a/src/roff/troff/reg.cpp
+++ b/src/roff/troff/reg.cpp
@@ -125,7 +125,8 @@ static const char *number_value_to_ascii(int value, char
format,
char *p = buf;
// troff uses z and w to represent 10000 and 5000 in Roman
// numerals; I can find no historical basis for this usage
- const char *s = format == 'i' ? "zwmdclxvi" : "ZWMDCLXVI";
+ const char *roman_numerals
+ = (format == 'i') ? "zwmdclxvi" : "ZWMDCLXVI";
int n = int(value);
if (n >= 40000 || n <= -40000) {
error("magnitude of '%1' too big for i or I format", n);
@@ -141,47 +142,47 @@ static const char *number_value_to_ascii(int value, char
format,
n = -n;
}
while (n >= 10000) {
- *p++ = s[0];
+ *p++ = roman_numerals[0];
n -= 10000;
}
- for (int i = 1000; i > 0; i /= 10, s += 2) {
+ for (int i = 1000; i > 0; i /= 10, roman_numerals += 2) {
int m = n/i;
n -= m*i;
switch (m) {
case 3:
- *p++ = s[2];
+ *p++ = roman_numerals[2];
/* falls through */
case 2:
- *p++ = s[2];
+ *p++ = roman_numerals[2];
/* falls through */
case 1:
- *p++ = s[2];
+ *p++ = roman_numerals[2];
break;
case 4:
- *p++ = s[2];
- *p++ = s[1];
+ *p++ = roman_numerals[2];
+ *p++ = roman_numerals[1];
break;
case 8:
- *p++ = s[1];
- *p++ = s[2];
- *p++ = s[2];
- *p++ = s[2];
+ *p++ = roman_numerals[1];
+ *p++ = roman_numerals[2];
+ *p++ = roman_numerals[2];
+ *p++ = roman_numerals[2];
break;
case 7:
- *p++ = s[1];
- *p++ = s[2];
- *p++ = s[2];
+ *p++ = roman_numerals[1];
+ *p++ = roman_numerals[2];
+ *p++ = roman_numerals[2];
break;
case 6:
- *p++ = s[1];
- *p++ = s[2];
+ *p++ = roman_numerals[1];
+ *p++ = roman_numerals[2];
break;
case 5:
- *p++ = s[1];
+ *p++ = roman_numerals[1];
break;
case 9:
- *p++ = s[2];
- *p++ = s[0];
+ *p++ = roman_numerals[2];
+ *p++ = roman_numerals[0];
}
}
*p = '\0';
_______________________________________________
groff-commit mailing list
[email protected]
https://lists.gnu.org/mailman/listinfo/groff-commit