From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from localhost (fantadrom.bsd.lv [local]) by fantadrom.bsd.lv (OpenSMTPD) with ESMTPA id 24a1ca56 for ; Tue, 7 May 2019 18:42:18 -0500 (EST) Date: Tue, 7 May 2019 18:42:18 -0500 (EST) X-Mailinglist: mandoc-source Reply-To: source@mandoc.bsd.lv MIME-Version: 1.0 From: schwarze@mandoc.bsd.lv To: source@mandoc.bsd.lv Subject: docbook2mdoc: support hexadecimal character entities; patch from Hiltjo X-Mailer: activitymail 1.26, http://search.cpan.org/dist/activitymail/ Content-Type: text/plain; charset=utf-8 Message-ID: Log Message: ----------- support hexadecimal character entities; patch from Hiltjo Posthuma , tweaked by me Modified Files: -------------- docbook2mdoc: parse.c Revision Data ------------- Index: parse.c =================================================================== RCS file: /home/cvs/mdocml/docbook2mdoc/parse.c,v retrieving revision 1.59 retrieving revision 1.60 diff -Lparse.c -Lparse.c -u -p -r1.59 -r1.60 --- parse.c +++ parse.c @@ -376,7 +376,7 @@ xml_entity(struct parse *p, const char * struct pnode *n; const char *ccp; char *cp; - unsigned int codepoint; + long codepoint; enum pstate pstate; if (p->del > 0) @@ -421,8 +421,16 @@ xml_entity(struct parse *p, const char * } } if (*name == '#') { - codepoint = strtonum(name + 1, 0, 0x10ffff, &ccp); - if (ccp == NULL) { + errno = 0; + if (name[1] == 'x') { + ccp = name + 2; + codepoint = strtol(ccp, &cp, 16); + } else { + ccp = name + 1; + codepoint = strtol(ccp, &cp, 10); + } + if (*ccp != '\0' && *cp == '\0' && errno != ERANGE && + codepoint >= 0 && codepoint <= 0x10ffff) { n = pnode_alloc(p->cur); xasprintf(&n->b, "\\[u%4.4X]", codepoint); goto done; -- To unsubscribe send an email to source+unsubscribe@mandoc.bsd.lv