summaryrefslogtreecommitdiffstats
path: root/chars.c
diff options
context:
space:
mode:
authorIngo Schwarze <schwarze@openbsd.org>2014-10-29 00:17:43 +0000
committerIngo Schwarze <schwarze@openbsd.org>2014-10-29 00:17:43 +0000
commit1b2b0a521e5fb13fb845879ff53b5201b76097f4 (patch)
treebd180ac98d410d71e4bf7f89a307d3c1b676f0c2 /chars.c
parentcfd3120c8be71fbcacc05d872ae13324d3a3685f (diff)
downloadmandoc-1b2b0a521e5fb13fb845879ff53b5201b76097f4.tar.gz
In terminal output, unify handling of Unicode and numbered character
escape sequences just like it was earlier implemented for -Thtml. Do not let control characters other than ASCII 9 (horizontal tab) propagate to the output, even though groff allows them; but that really doesn't look like a great idea. Let mchars_num2char() return int such that we can distinguish invalid \N syntax from \N'0'. This also reduces the danger of signed char issues popping up.
Diffstat (limited to 'chars.c')
-rw-r--r--chars.c8
1 files changed, 3 insertions, 5 deletions
diff --git a/chars.c b/chars.c
index e4f3cbcf..e4f522b5 100644
--- a/chars.c
+++ b/chars.c
@@ -107,15 +107,13 @@ mchars_spec2cp(const struct mchars *arg, const char *p, size_t sz)
return(ln != NULL ? ln->unicode : sz == 1 ? (unsigned char)*p : -1);
}
-char
+int
mchars_num2char(const char *p, size_t sz)
{
int i;
- if ((i = mandoc_strntoi(p, sz, 10)) < 0)
- return('\0');
-
- return(i > 0 && i < 256 && isprint(i) ? i : '\0');
+ i = mandoc_strntoi(p, sz, 10);
+ return(i >= 0 && i < 256 ? i : -1);
}
int