ref: c6e989fa2ac98bb2db4c1419428ab8e655fcfd7b
parent: 80c5fe62c753e8d547d7f1a171b502ff08558ca6
author: Ali Gholami Rudi <ali@rudi.ir>
date: Tue Dec 30 13:09:03 EST 2014
char: expect ascii character names in \x or \(xy Now neatroff expects x and xy to be ASCII characters in \x or \(xy, \nx or \n(xy, and \*x or \*(xy. UTF-8 character or register names can be accessed with \[xyz], \n[xyz], or \*[xyz].
--- a/char.c
+++ b/char.c
@@ -114,14 +114,16 @@
if (!utf8next(c, next))
return -1;
if (c[0] == c_ni) {
- utf8next(c + 1, next);
+ c[1] = next();
+ c[2] = '\0';
return c_ni;
}
if (c[0] == c_ec) {
- utf8next(c + 1, next);
+ c[1] = next();
+ c[2] = '\0';
if (c[1] == '(') {
- l = utf8next(c, next);
- l += utf8next(c + l, next);
+ c[0] = next();
+ c[1] = next();
return '(';
} else if (!n_cp && c[1] == '[') {
l = 0;
@@ -232,10 +234,11 @@
return -1;
utf8read(s, d);
if (d[0] == c_ec) {
- utf8read(s, d + 1);
+ d[1] = *(*s)++;
+ d[2] = '\0';
if (d[1] == '(') {
- utf8read(s, d);
- utf8read(s, d + strlen(d));
+ d[0] = *(*s)++;
+ d[1] = *(*s)++;
} else if (!n_cp && d[1] == '[') {
while (**s && **s != ']')
*r++ = *(*s)++;