summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJacob Nevins <jacobn@chiark.greenend.org.uk>2009-09-06 13:37:27 +0000
committerJacob Nevins <jacobn@chiark.greenend.org.uk>2009-09-06 13:37:27 +0000
commit0a4281ca5b029a961fbef0856e27dee2a23c8cdb (patch)
treed0a2c80dea308beca99bb4c99f28d3823e288ca1
parentc336fe89f0c6122ccbc7e5dd607f4ec6b3bd8853 (diff)
downloadhalibut-0a4281ca5b029a961fbef0856e27dee2a23c8cdb.zip
halibut-0a4281ca5b029a961fbef0856e27dee2a23c8cdb.tar.gz
halibut-0a4281ca5b029a961fbef0856e27dee2a23c8cdb.tar.bz2
halibut-0a4281ca5b029a961fbef0856e27dee2a23c8cdb.tar.xz
Revise r8309 to use \- rather than - when trying to emit a literal U+002D;
apparently this is preferred (it's what pod2man uses); cf Debian #496063, #159872. [originally from svn r8641] [r8309 == 73e8c7d1b4ac77ec1b5acc700cb3af277a150bcf]
-rw-r--r--bk_man.c21
1 files changed, 17 insertions, 4 deletions
diff --git a/bk_man.c b/bk_man.c
index 92d7c3a..dce77d4 100644
--- a/bk_man.c
+++ b/bk_man.c
@@ -490,10 +490,23 @@ static int man_convert(wchar_t const *s, int maxlen,
/* Turn backslashes into \e. */
rdaddsc(&out, "\\e");
continue;
- } else if (*q == '-' && !(quote_props & QUOTE_LITERAL)) {
- /* Turn nonbreakable hyphens into \(hy. */
- rdaddsc(&out, "\\(hy");
- continue;
+ } else if (*q == '-') {
+ if (quote_props & QUOTE_LITERAL) {
+ /*
+ * Try to preserve literal U+002D.
+ * This is quite awkward. Debian hacks groff so that
+ * \- and - both produce it; elsewhere it's not necessarily
+ * possible to get it.
+ * Apparently \- is the preferred compromise despite
+ * having minus-sign semantics, as it is non-breaking.
+ * (pod2man uses it, anyway.)
+ */
+ rdaddc(&out, '\\');
+ } else {
+ /* Turn nonbreakable hyphens into \(hy. */
+ rdaddsc(&out, "\\(hy");
+ continue;
+ }
} else if (*q == '\'' && (quote_props & QUOTE_LITERAL)) {
/* Try to preserve literal U+0027 (using string defined
* in preamble) */