=================================================================== RCS file: /cvsrepo/anoncvs/cvs/src/usr.bin/mandoc/main.c,v retrieving revision 1.211 retrieving revision 1.212 diff -c -r1.211 -r1.212 *** src/usr.bin/mandoc/main.c 2018/08/23 19:32:03 1.211 --- src/usr.bin/mandoc/main.c 2018/11/22 11:30:15 1.212 *************** *** 1,4 **** ! /* $OpenBSD: main.c,v 1.211 2018/08/23 19:32:03 schwarze Exp $ */ /* * Copyright (c) 2008-2012 Kristaps Dzonsons * Copyright (c) 2010-2012, 2014-2018 Ingo Schwarze --- 1,4 ---- ! /* $OpenBSD: main.c,v 1.212 2018/11/22 11:30:15 schwarze Exp $ */ /* * Copyright (c) 2008-2012 Kristaps Dzonsons * Copyright (c) 2010-2012, 2014-2018 Ingo Schwarze *************** *** 488,495 **** fd = mparse_open(curp.mp, resp != NULL ? resp->file : *argv); if (fd != -1) { if (use_pager) { - tag_files = tag_init(); use_pager = 0; } if (resp == NULL) --- 488,500 ---- fd = mparse_open(curp.mp, resp != NULL ? resp->file : *argv); if (fd != -1) { if (use_pager) { use_pager = 0; + tag_files = tag_init(); + if (conf.output.tag != NULL && + tag_files->tagname == NULL) + tag_files->tagname = + *conf.output.tag != '\0' ? + conf.output.tag : *argv; } if (resp == NULL) *************** *** 1150,1156 **** const char *pager; char *cp; size_t cmdlen; ! int argc; pid_t pager_pid; pager = getenv("MANPAGER"); --- 1155,1161 ---- const char *pager; char *cp; size_t cmdlen; ! int argc, use_ofn; pid_t pager_pid; pager = getenv("MANPAGER"); *************** *** 1166,1172 **** */ argc = 0; ! while (argc + 4 < MAX_PAGER_ARGS) { argv[argc++] = cp; cp = strchr(cp, ' '); if (cp == NULL) --- 1171,1177 ---- */ argc = 0; ! while (argc + 5 < MAX_PAGER_ARGS) { argv[argc++] = cp; cp = strchr(cp, ' '); if (cp == NULL) *************** *** 1180,1193 **** /* For more(1) and less(1), use the tag file. */ if ((cmdlen = strlen(argv[0])) >= 4) { cp = argv[0] + cmdlen - 4; if (strcmp(cp, "less") == 0 || strcmp(cp, "more") == 0) { argv[argc++] = mandoc_strdup("-T"); argv[argc++] = tag_files->tfn; } } ! argv[argc++] = tag_files->ofn; argv[argc] = NULL; switch (pager_pid = fork()) { --- 1185,1205 ---- /* For more(1) and less(1), use the tag file. */ + use_ofn = 1; if ((cmdlen = strlen(argv[0])) >= 4) { cp = argv[0] + cmdlen - 4; if (strcmp(cp, "less") == 0 || strcmp(cp, "more") == 0) { argv[argc++] = mandoc_strdup("-T"); argv[argc++] = tag_files->tfn; + if (tag_files->tagname != NULL) { + argv[argc++] = mandoc_strdup("-t"); + argv[argc++] = tag_files->tagname; + use_ofn = 0; + } } } ! if (use_ofn) ! argv[argc++] = tag_files->ofn; argv[argc] = NULL; switch (pager_pid = fork()) {