How to detect NFS/RFS mounted files/directories?

Chris Lewis clewis at eci386.uucp
Wed Feb 14 08:54:51 AEST 1990


I'm writing a program that recursively looks through directories 
analogously to find.  Using your traditional stat/opendir/readdir
method.  I'd like to have the program detect RFS, NFS
and symbolic link mount points and decide (based upon a program
option) of whether to traverse the directory or not.  On some systems
doing a traversal of NFS or RFS mounted directories can take hours.
Worse still, the program needs to be reasonably portable, in that
I'd like to have no more than a couple of ifdef's to cover most
flavours of UNIX supporting RFS and/or NFS.

I need a way to detect when the program has hit such mount points.
I don't really need to know which is which, just whether it's hit
something likely to be across a LAN.  On most BSD-derived systems
I can detect symlinks reasonably easy, for my code is #ifdef'd
on "S_IFLNK" to do a lstat first, and if the mode indicates a symbolic
link, traverse the subtree according to a program option.  Unfortunately
*some* systems support symlinks but not S_IFLNK.  Sigh...

I'm stuck with NFS and RFS.  One way of doing this would be to
root through /etc/mnttab (BSD) or /etc/mtab (USG) and remember all
of the mount points and do searches through this every time I hit 
a directory.

This seems rather gross.  Nor have I found enough documentation to
suggest that this will even work very well across multiple platforms.

HP9000's seem to have 0xFF as the upper 8 bits of st_dev (dev_t is a 
long) for NFS files, but this isn't documented anywhere I've found, 
and I suspect that it isn't common to other systems.

One would think you could tell from the st_dev, but I've not seen
any indication of this in the documentation I have accessible.

Any ideas?

Please respond by mail, our incoming feeds are currently defunct, and
we're not exactly sure when they'll be back up.
-- 
Chris Lewis, Elegant Communications Inc, {uunet!attcan,utzoo}!lsuc!eci386!clewis
Ferret mailing list: eci386!ferret-list, psroff mailing list: eci386!psroff-list



More information about the Comp.unix.wizards mailing list