This is the mail archive of the cygwin@sources.redhat.com mailing list for the Cygwin project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]

Re: gdbm & cvs packages ready for official inclusion?


On Thu, Aug 10, 2000 at 02:04:40PM -0400, Jason Tishler wrote:
>On Thu, Aug 10, 2000 at 12:13:42PM -0400, Charles S. Wilson wrote:
>> Instead, can you verify that Alan Griffiths' analysis is
>> correct?
>> 
>> Alan Griffiths wrote:
>> > I don't follow the code well enough to be sure what is going on, but this
>> > is caused by the call to 'isdir' at line 437 of ignore.c (in 1.10.7 anyway).
>> > 
>> > Resetting errno after the call suppresses the message.  (I don't propose
>> > this as a fix since there probably is a problem in the code and this would
>> > hide it.)
>
>I can't confirm that the problem is caused by isdir() as described by Alan,
>but he is definitely correct that the problem is in:
>
>    src/ignore.c:ignore_files()
>
>I can offer the following few more tidbits.  We have from the original cvs
>1.10.8 source:
>
>    void
>    ignore_files (ilist, entries, update_dir, proc)
>    {
>        ...
>        errno = 0;
>        while ((dp = readdir (dirp)) != NULL)
>        {
>            ...
>        }
>        if (errno != 0)
>            error (0, errno, "error reading current directory");
>        ...
>    }
>
>So during a cvs update, some code executed during the while loop is setting
>errno to nonzero.  By greping sys/errno.h, we get that "Function not
>implemented" maps to ENOSYS.
>
>Without using gdb, I can't offer any more.  Shame on me, but I have never
>used gdb before -- although I have used many other debugger.  Anyway, I'm
>willing to give gdb a whirl, but I believe that you could set up cvs in
>client/server mode much faster than I can get up to speed with gdb.
>Especially, if you have a UNIX/Linux box lying around with a cvs
>repository on it.

I looked at the sources and it looks like whomever wrote readdir made
some false assumptions about the values of errno.  It looks like it will
always set errno when there are no more files.  I'm testing a fix for
this now.

I appreciate your offer to debug the problem, though.  We really could
use more help on this project.  This mailing list seems to have an
incredibly high user to developer ratio.

cgf

--
Want to unsubscribe from this list?
Send a message to cygwin-unsubscribe@sourceware.cygnus.com


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]