=================================================================== RCS file: /cvs/mandoc/mandocdb.c,v retrieving revision 1.220.2.5 retrieving revision 1.220.2.8 diff -u -p -r1.220.2.5 -r1.220.2.8 --- mandoc/mandocdb.c 2017/01/10 22:04:26 1.220.2.5 +++ mandoc/mandocdb.c 2017/01/27 13:59:28 1.220.2.8 @@ -1,4 +1,4 @@ -/* $Id: mandocdb.c,v 1.220.2.5 2017/01/10 22:04:26 schwarze Exp $ */ +/* $Id: mandocdb.c,v 1.220.2.8 2017/01/27 13:59:28 schwarze Exp $ */ /* * Copyright (c) 2011, 2012 Kristaps Dzonsons * Copyright (c) 2011-2017 Ingo Schwarze @@ -280,7 +280,7 @@ static const struct mdoc_handler mdocs[MDOC_MAX] = { { NULL, 0, 0 }, /* Bo */ { NULL, 0, 0 }, /* Bq */ { NULL, TYPE_Bsx, NODE_NOSRC }, /* Bsx */ - { NULL, TYPE_Bx, 0 }, /* Bx */ + { NULL, TYPE_Bx, NODE_NOSRC }, /* Bx */ { NULL, 0, 0 }, /* Db */ { NULL, 0, 0 }, /* Dc */ { NULL, 0, 0 }, /* Do */ @@ -325,7 +325,7 @@ static const struct mdoc_handler mdocs[MDOC_MAX] = { { NULL, 0, 0 }, /* Hf */ { NULL, 0, 0 }, /* Fr */ { NULL, 0, 0 }, /* Ud */ - { NULL, TYPE_Lb, 0 }, /* Lb */ + { NULL, TYPE_Lb, NODE_NOSRC }, /* Lb */ { NULL, 0, 0 }, /* Lp */ { NULL, TYPE_Lk, 0 }, /* Lk */ { NULL, TYPE_Mt, NODE_NOSRC }, /* Mt */ @@ -905,6 +905,20 @@ filescan(const char *file) say(start, "Filename too long"); free(mlink); return; + } + + /* + * In test mode or when the original name is absolute + * but outside our tree, guess the base directory. + */ + + if (op == OP_TEST || (start == buf && *start == '/')) { + if (strncmp(buf, "man/", 4) == 0) + start = buf + 4; + else if ((start = strstr(buf, "/man/")) != NULL) + start += 5; + else + start = buf; } /*