man -p returns 1 error code, because the control flow of the program keeps looking at the remaining arguments (empty list) and it doesn't find a matching manual page.
Fish (shell) has gone through this flow process: 1. Append its own weirdo-shell manual pages to the MANPATH, but only if you are using fish. This is a logical choice, because the fish shell man pages are very wrong for other shells, and they will be confusing otherwise. So now it has an override of `man`. 2. NetBSD does not supply `man -p` output that is usable as MANPATH, so add processing specific to NetBSD. 3. To tell NetBSD apart from others, expect `man -p` with no arguments to return success This is done because FreeBSD man also accepts a -p flag, but requires an argument. Unfortunately, this isn't possible, because `man -p` on NetBSD returns non-zero status if no argument is passed. ----- So, the following patch to quit processing the output if the -p flag is passed. This however changes the behaviour, if you wanted the man -p output AND to see a man page, it will no longer work. Objections? Index: man.c =================================================================== RCS file: /cvsroot/src/usr.bin/man/man.c,v retrieving revision 1.67 diff -u -r1.67 man.c --- man.c 15 Jun 2018 20:16:35 -0000 1.67 +++ man.c 3 Apr 2020 11:06:17 -0000 @@ -363,8 +363,10 @@ } - if (m.getpath) + if (m.getpath) { printmanpath(&m); + exit(cleanup()); + } /* * now m.mymanpath is complete!