NetBSD/usr.sbin/catman
mrg de11d87641 introduce some common variables for use in GCC warning disables:
GCC_NO_FORMAT_TRUNCATION    -Wno-format-truncation (GCC 7/8)
GCC_NO_STRINGOP_TRUNCATION  -Wno-stringop-truncation (GCC 8)
GCC_NO_STRINGOP_OVERFLOW    -Wno-stringop-overflow (GCC 8)
GCC_NO_CAST_FUNCTION_TYPE   -Wno-cast-function-type (GCC 8)

use these to turn off warnings for most GCC-8 complaints.  many
of these are false positives, most of the real bugs are already
commited, or are yet to come.


we plan to introduce versions of (some?) of these that use the
"-Wno-error=" form, which still displays the warnings but does
not make it an error, and all of the above will be re-considered
as either being "fix me" (warning still displayed) or "warning
is wrong."
2019-10-13 07:28:04 +00:00
..
Makefile introduce some common variables for use in GCC warning disables: 2019-10-13 07:28:04 +00:00
README.hardlinks Add notes on how to lift the BUGS entry in the man page (about not 2016-05-29 22:32:03 +00:00
TODO
catman.8
catman.c enlarge buffer sizes 2019-10-12 17:26:26 +00:00
pathnames.h Call the path for makewhatis _PATH_MAKEWHATIS instead of _PATH_WHATIS, 2016-05-29 22:33:39 +00:00

README.hardlinks

# $NetBSD: README.hardlinks,v 1.1 2016/05/29 22:32:03 dholland Exp $
#

catman.8 notes that this code doesn't handle hard links.

To fix this, one might proceed as follows:

(1) Add an additional data structure mapping (fsid_t, ino_t) pairs
from stat to filenames.

(2) In scanmandir(), in the readdir loop, next to the code that checks
for a symlink, check if the page's linkcount > 1 (manstat.st_nlink > 1)
and if so:
   a. Check the new data structure to see if this file's been seen before.
      If so, use the saved name of the page to construct a hard link in the
      cat directory, and continue to the next directory entry.
   b. If not, add to the new data structure to remember this page and
      process it as normal.

One might clear the data structure for each mandir or not; probably
for each man tree is best. The size of the structure isn't
prohibitive; but the chances of ever seeing the same hardlinked page
in two different man trees (e.g. in both /usr/share/man and
/usr/pkg/man) are pretty well zero.

All of this seems like a SMOP, but it doesn't really seem worth doing
at the moment given that we don't build catpages at all by default and
they aren't particularly useful to have any more except on the slowest
of slow hardware. I've left this note so that someone else can take it
up if they see fit.

 - dholland 20160529