5f3c7438e2
supporting hardlinks) in case anyone thinks it's worth doing sometime.
33 lines
1.3 KiB
Plaintext
33 lines
1.3 KiB
Plaintext
# $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
|