From db5b0f163dab8deddf3ec7ff618e20edcd30a0f7 Mon Sep 17 00:00:00 2001 From: schwarze Date: Mon, 10 Feb 2020 13:49:04 +0000 Subject: For compatibility with the man(1) implementations of the man-1.6 and man-db packages, print the manpath if the -w option is given without a following name argument. This quirk has been in man-1.6 since at least man-1.5e (1998) and in man-db since 2012. Using this feature in portable software is a dubious idea because the internal organization of manual page directories varies in about a dozen respects among operating systems, so even if you get the answer, there is no portable way to use it for looking up anything inside. However, Matej Cepl made me aware that some software, for example the manual viewing functionality in the newest editors/neovim code, unwisely relies on this feature anyway. No objections were raised when this patch was shown on tech@. --- usr.bin/mandoc/main.c | 18 +++++++++++++++--- 1 file changed, 15 insertions(+), 3 deletions(-) (limited to 'usr.bin/mandoc/main.c') diff --git a/usr.bin/mandoc/main.c b/usr.bin/mandoc/main.c index bcf541409d1..694dc415e6d 100644 --- a/usr.bin/mandoc/main.c +++ b/usr.bin/mandoc/main.c @@ -1,4 +1,4 @@ -/* $OpenBSD: main.c,v 1.245 2020/02/06 19:41:34 schwarze Exp $ */ +/* $OpenBSD: main.c,v 1.246 2020/02/10 13:49:04 schwarze Exp $ */ /* * Copyright (c) 2008-2012 Kristaps Dzonsons * Copyright (c) 2010-2012, 2014-2020 Ingo Schwarze @@ -427,8 +427,20 @@ main(int argc, char *argv[]) /* man(1): Resolve each name individually. */ if (search.argmode == ARG_NAME) { - if (argc < 1) - usage(ARG_NAME); + if (argc < 1) { + if (outmode != OUTMODE_FLN) + usage(ARG_NAME); + if (conf.manpath.sz == 0) { + warnx("The manpath is empty."); + mandoc_msg_setrc(MANDOCLEVEL_BADARG); + } else { + for (i = 0; i + 1 < conf.manpath.sz; i++) + printf("%s:", conf.manpath.paths[i]); + printf("%s\n", conf.manpath.paths[i]); + } + manconf_free(&conf); + return (int)mandoc_msg_getrc(); + } for (res = NULL, ressz = 0; argc > 0; argc--, argv++) { (void)mansearch(&search, &conf.manpath, 1, argv, &resn, &resnsz); -- cgit v1.2.3-59-g8ed1b