=================================================================== RCS file: /cvs/mandoc/mandocdb.c,v retrieving revision 1.270 retrieving revision 1.273 diff -u -p -r1.270 -r1.273 --- mandoc/mandocdb.c 2021/11/05 17:04:10 1.270 +++ mandoc/mandocdb.c 2024/05/14 18:52:31 1.273 @@ -1,6 +1,6 @@ -/* $Id: mandocdb.c,v 1.270 2021/11/05 17:04:10 schwarze Exp $ */ +/* $Id: mandocdb.c,v 1.273 2024/05/14 18:52:31 schwarze Exp $ */ /* - * Copyright (c) 2011-2020 Ingo Schwarze + * Copyright (c) 2011-2021 Ingo Schwarze * Copyright (c) 2011, 2012 Kristaps Dzonsons * Copyright (c) 2016 Ed Maste * @@ -353,7 +353,7 @@ mandocdb(int argc, char *argv[]) goto usage; \ } while (/*CONSTCOND*/0) - mparse_options = MPARSE_VALIDATE; + mparse_options = MPARSE_UTF8 | MPARSE_LATIN1 | MPARSE_VALIDATE; path_arg = NULL; op = OP_DEFAULT; @@ -533,7 +533,7 @@ out: ohash_delete(&mpages); ohash_delete(&mlinks); #if DEBUG_MEMORY - mandoc_d_finish(); + mandoc_dbg_finish(); #endif return exitcode; usage: @@ -804,7 +804,7 @@ filescan(const char *infile) * We have to do lstat(2) before realpath(3) loses * the information whether this is a symbolic link. * We need to know that because for symbolic links, - * we want to use the orginal file name, while for + * we want to use the original file name, while for * regular files, we want to use the real path. */ if (lstat(infile, &st) == -1) { @@ -2031,7 +2031,21 @@ render_string(char **public, size_t *psz) */ scp++; - if (mandoc_escape(&scp, &seq, &seqlen) != ESCAPE_SPECIAL) + switch (mandoc_escape(&scp, &seq, &seqlen)) { + case ESCAPE_UNICODE: + unicode = mchars_num2uc(seq + 1, seqlen - 1); + break; + case ESCAPE_NUMBERED: + unicode = mchars_num2char(seq, seqlen); + break; + case ESCAPE_SPECIAL: + unicode = mchars_spec2cp(seq, seqlen); + break; + default: + unicode = -1; + break; + } + if (unicode <= 0) continue; /* @@ -2040,21 +2054,17 @@ render_string(char **public, size_t *psz) */ if (write_utf8) { - unicode = mchars_spec2cp(seq, seqlen); - if (unicode <= 0) - continue; addsz = utf8(unicode, utfbuf); if (addsz == 0) continue; addcp = utfbuf; } else { - addcp = mchars_spec2str(seq, seqlen, &addsz); + addcp = mchars_uc2str(unicode); if (addcp == NULL) continue; - if (*addcp == ASCII_NBRSP) { + if (*addcp == ASCII_NBRSP) addcp = " "; - addsz = 1; - } + addsz = strlen(addcp); } /* Copy the rendered glyph into the stream. */