aboutsummaryrefslogtreecommitdiffstatshomepage
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
commitada69bce757bdb8fff8d778e0660446c440c7613 (patch)
treec855535ac67e0f62353307e69e90b8952d8ecad3 /chars.c
parent3e8d538cdcbed1408b260186b980e5fa4eeb81af (diff)
downloadmandoc-ada69bce757bdb8fff8d778e0660446c440c7613.tar.gz
mandoc-ada69bce757bdb8fff8d778e0660446c440c7613.tar.zst
mandoc-ada69bce757bdb8fff8d778e0660446c440c7613.zip
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.c10
1 files changed, 4 insertions, 6 deletions
diff --git a/chars.c b/chars.c
index 237fbe25..fe0b17de 100644
--- a/chars.c
+++ b/chars.c
@@ -1,4 +1,4 @@
-/* $Id: chars.c,v 1.64 2014/10/28 17:36:19 schwarze Exp $ */
+/* $Id: chars.c,v 1.65 2014/10/29 00:17:43 schwarze Exp $ */
/*
* Copyright (c) 2009, 2010, 2011 Kristaps Dzonsons <kristaps@bsd.lv>
* Copyright (c) 2011, 2014 Ingo Schwarze <schwarze@openbsd.org>
@@ -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