1
0
mirror of https://github.com/openbsd/src.git synced 2026-06-18 23:33:33 +02:00

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 <mcepl at suse dot cz> 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@.
This commit is contained in:
schwarze
2020-02-10 13:49:04 +00:00
parent c9d6433d50
commit db5b0f163d
2 changed files with 21 additions and 6 deletions
+15 -3
View File
@@ -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 <kristaps@bsd.lv>
* Copyright (c) 2010-2012, 2014-2020 Ingo Schwarze <schwarze@openbsd.org>
@@ -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);
+6 -3
View File
@@ -1,9 +1,9 @@
.\" $OpenBSD: man.1,v 1.35 2020/02/08 01:09:58 jsg Exp $
.\" $OpenBSD: man.1,v 1.36 2020/02/10 13:49:04 schwarze Exp $
.\"
.\" Copyright (c) 1989, 1990, 1993
.\" The Regents of the University of California. All rights reserved.
.\" Copyright (c) 2003, 2007, 2008, 2014 Jason McIntyre <jmc@openbsd.org>
.\" Copyright (c) 2010, 2011, 2014-2018 Ingo Schwarze <schwarze@openbsd.org>
.\" Copyright (c) 2010, 2011, 2014-2020 Ingo Schwarze <schwarze@openbsd.org>
.\"
.\" Redistribution and use in source and binary forms, with or without
.\" modification, are permitted provided that the following conditions
@@ -31,7 +31,7 @@
.\"
.\" @(#)man.1 8.2 (Berkeley) 1/2/94
.\"
.Dd $Mdocdate: February 8 2020 $
.Dd $Mdocdate: February 10 2020 $
.Dt MAN 1
.Os
.Sh NAME
@@ -199,6 +199,9 @@ Kernel internals.
.It Fl w
List the pathnames of all matching manual pages instead of displaying
any of them.
If no
.Ar name
is given, list the directories that would be searched.
.El
.Pp
The options