At 2025-03-30T22:24:18+0000, Lennart Jablonka wrote: > POSIX doesn’t explicitly specify (or explicitly un-specify) what > happens when a backslash in the format string is followed by a > character other than those listed by POSIX with special behavior. > OpenBSD’s printf, at least, warns about it and prints the literal > character following the backslash.
Thanks for the report. That is indeed a problem.
[...]
> diff --git a/src/roff/groff/tests/html-device-smoke-test.sh
> b/src/roff/groff/tests/html-device-smoke-test.sh
> index 8d2aad7fd..d8fa234a8 100755
> --- a/src/roff/groff/tests/html-device-smoke-test.sh
> +++ b/src/roff/groff/tests/html-device-smoke-test.sh
> @@ -103,7 +103,7 @@ printf '\303\241' | "$groff" -k -Thtml | grep -qx
> '<p>á</p>' \
> # We test compatibility-mode HTML output somewhat differently since
> # preconv only emits groffish \[uXXXX] escapes for non-ASCII codepoints.
> echo "checking -C -k -Thtml" >&2
> -printf "\('a" | "$groff" -C -k -Thtml | grep -qx '<p>á</p>' \
> +printf "\\\\('a" | "$groff" -C -k -Thtml | grep -qx '<p>á</p>' \
> || wail
>
> test -z "$fail"
I went with my own patch for this.
diff --git a/ChangeLog b/ChangeLog
index a72009abf..a1a5f4216 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,9 @@
+2025-04-11 G. Branden Robinson <[email protected]>
+
+ * src/roff/groff/tests/html-device-smoke-test.sh: Use printf(1)
+ more portably (`\(` is not well-defined in a format string).
+ Thanks to Lennart Jablonka for the report and a proposed patch.
+
2025-03-30 Lennart Jablonka <[email protected]>
Don't use non-POSIX syntax `\+` in BREs.
diff --git a/src/roff/groff/tests/html-device-smoke-test.sh
b/src/roff/groff/tests/html-device-smoke-test.sh
index 8d2aad7fd..eb8f1f4d7 100755
--- a/src/roff/groff/tests/html-device-smoke-test.sh
+++ b/src/roff/groff/tests/html-device-smoke-test.sh
@@ -1,6 +1,6 @@
#!/bin/sh
#
-# Copyright (C) 2020-2024 Free Software Foundation, Inc.
+# Copyright (C) 2020-2025 Free Software Foundation, Inc.
#
# This file is part of groff.
#
@@ -103,9 +103,9 @@ printf '\303\241' | "$groff" -k -Thtml | grep -qx
'<p>á</p>' \
# We test compatibility-mode HTML output somewhat differently since
# preconv only emits groffish \[uXXXX] escapes for non-ASCII codepoints.
echo "checking -C -k -Thtml" >&2
-printf "\('a" | "$groff" -C -k -Thtml | grep -qx '<p>á</p>' \
+printf '\('a | "$groff" -C -k -Thtml | grep -qx '<p>á</p>' \
|| wail
test -z "$fail"
-# vim:set ai et sw=4 ts=4 tw=72:
+# vim:set autoindent expandtab shiftwidth=2 tabstop=2 textwidth=72:
Regards,
Branden
signature.asc
Description: PGP signature
