=================================================================== RCS file: /cvs/mandoc/Attic/mandoc-db.c,v retrieving revision 1.19 retrieving revision 1.21 diff -u -p -r1.19 -r1.21 --- mandoc/Attic/mandoc-db.c 2011/05/04 20:43:38 1.19 +++ mandoc/Attic/mandoc-db.c 2011/05/12 23:44:51 1.21 @@ -1,4 +1,4 @@ -/* $Id: mandoc-db.c,v 1.19 2011/05/04 20:43:38 kristaps Exp $ */ +/* $Id: mandoc-db.c,v 1.21 2011/05/12 23:44:51 kristaps Exp $ */ /* * Copyright (c) 2011 Kristaps Dzonsons * @@ -591,7 +591,8 @@ pmdoc_Fd(MDOC_ARGS) if ('>' == *end || '"' == *end) end--; - dbt_appendb(key, ksz, start, end - start + 1); + assert(end >= start); + dbt_appendb(key, ksz, start, (size_t)(end - start + 1)); dbt_appendb(key, ksz, "", 1); fl = MANDOC_INCLUDES; @@ -702,7 +703,7 @@ pmdoc_Vt(MDOC_ARGS) if (0 == (sz = strlen(start))) return; - if (';' == start[sz - 1]) + if (';' == start[(int)sz - 1]) sz--; if (0 == sz) @@ -871,6 +872,7 @@ pman_node(MAN_ARGS) /* * Go through a special heuristic dance here. * This is why -man manuals are great! + * (I'm being sarcastic: my eyes are bleeding.) * Conventionally, one or more manual names are * comma-specified prior to a whitespace, then a * dash, then a description. Try to puzzle out @@ -908,10 +910,14 @@ pman_node(MAN_ARGS) while (' ' == *start) start++; - if ('\\' == *start && '-' == *(start + 1)) + if (0 == strncmp(start, "-", 1)) + start += 1; + else if (0 == strncmp(start, "\\-", 2)) start += 2; - else if ('-' == *start) - start++; + else if (0 == strncmp(start, "\\(en", 4)) + start += 4; + else if (0 == strncmp(start, "\\(em", 4)) + start += 4; while (' ' == *start) start++;