Module Name:    src
Committed By:   dholland
Date:           Sun May 29 22:32:03 UTC 2016

Added Files:
        src/usr.sbin/catman: README.hardlinks

Log Message:
Add notes on how to lift the BUGS entry in the man page (about not
supporting hardlinks) in case anyone thinks it's worth doing sometime.


To generate a diff of this commit:
cvs rdiff -u -r0 -r1.1 src/usr.sbin/catman/README.hardlinks

Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.

Added files:

Index: src/usr.sbin/catman/README.hardlinks
diff -u /dev/null src/usr.sbin/catman/README.hardlinks:1.1
--- /dev/null	Sun May 29 22:32:03 2016
+++ src/usr.sbin/catman/README.hardlinks	Sun May 29 22:32:03 2016
@@ -0,0 +1,32 @@
+# $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

Reply via email to