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.