> > Linux, lstat(2) will generally not trigger automounter action, whereas
> > stat(2) will.
>
> I don't understand this last piece. Can you say some more. (I'm not
> familiar with automounter details.)
An automounter (either an explicit one, like autofs, or an implicit
one, such as are used by AFS or NFSv4) is something that triggers
a mount when something is touched.
However, it's undesirable to automount, say, everyone's home
directory just because someone opened up /home in their GUI
browser or typed "ls -l /home". The early automounters simply
didn't list the contents until you accessed it by name;
this is still the case when you can't enumerate a mapping
(say, all DNS names under /net). However, this is extremely
inconvenient, too.
The solution we ended up settling on is to create something
that looks like a directory (i.e. reports S_IFDIR in stat()),
but behaves somewhat like a symlink. In particular, when it is
accessed in a way where a symlink would be dereferenced,
the automount triggers and the directory is mounted. However,
system calls which do *not* cause a symlink to be dereferenced,
like lstat(), also do not cause the automounter to trigger.
This means that "ls -l", or a GUI file browser, can see a list
of directories without causing each one of them to be automounted.
-hpa
(rather than describing in NOTES).
Other parts rewritten for greater clarity.
Make it clearer in the main text that glibc does not implement %Z;
remove discussion of that point from NOTES.
Added an example program.
Described differences between hsearch() and hsearch_r().
Added missing pieces to RETURN VALUE.
Added a number of new entries under ERRORS.
NOTES: added some basic advice on sizing the hash table;
noted that when a table is destroyed, the caller is responsible
for freeing the buffers pointed to by 'key' and 'data' fields.
One of the BUGS was fixed in glibc 2.3.
Rewrote and clarified various other pieces.