=================================================================== RCS file: /cvs/mandoc/html.c,v retrieving revision 1.69 retrieving revision 1.70 diff -u -p -r1.69 -r1.70 --- mandoc/html.c 2009/10/28 06:54:12 1.69 +++ mandoc/html.c 2009/10/28 08:00:18 1.70 @@ -1,4 +1,4 @@ -/* $Id: html.c,v 1.69 2009/10/28 06:54:12 kristaps Exp $ */ +/* $Id: html.c,v 1.70 2009/10/28 08:00:18 kristaps Exp $ */ /* * Copyright (c) 2008, 2009 Kristaps Dzonsons * @@ -651,46 +651,28 @@ bufcat_su(struct html *h, const char *p, const struct void -html_idcpy(char *dst, const char *src, int sz) +html_idcat(char *dst, const char *src, int sz) { + int ssz; assert(sz); - dst[0] = '\0'; - html_idcat(dst, src, sz); -} - -void -html_idcat(char *dst, const char *src, int sz) -{ - int i; - /* Cf. . */ - for (i = 0; *dst != '\0' && i < sz - 1; dst++, i++) + for ( ; *dst != '\0' && sz; dst++, sz--) /* Jump to end. */ ; - for ( ; *src != '\0' && i < sz - 1; src++, i++, dst++) { - if (isalnum((u_char)*src)) { - *dst = *src; - continue; - } + assert(sz > 2); - switch (*src) { - case (';'): - *dst = ';'; - break; - case ('-'): - *dst = '-'; - break; - case (':'): - *dst = ':'; - break; - default: - *dst = '_'; - break; - } - } + /* We can't start with a number (bah). */ + *dst++ = 'x'; *dst = '\0'; + sz--; + + for ( ; *src != '\0' && sz > 1; src++) { + ssz = snprintf(dst, sz, "%.2x", *src); + sz -= ssz; + dst += ssz; + } }