Because readdir returns NULL when all directory entries have been read OR
there was an error reading the directory, cvs sets errno to 0 before each
call to readdir and then checks if it is non-zero afterwards to determine
if an error occurred.
Unfortunately, there are a few places in which cvs forgets to set errno to
0 when it should have, and as a result, it can sometimes report spurious
"error reading current directory" errors. Yes, I actually saw this happen
once, although I can't replicate it easily in a small sample tree, and the
patch I'm about to attach to this bug does in fact make the spurious errors
I saw go away.
Y'all should submit this back to the cvs maintainers as well as putting it
into the redhat package until they incorporate it into the master tree.
Created attachment 162 [details]
patch to initialize errno when necessary
Some of these are already fixed in CVS 1.10.8, if memory serves.
Slightly modified versions of these changes are being rolled into
cvs-1.10.8-7 and later.