bug-cvs
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: Advice for Interix and to specify users


From: Mark D. Baushke
Subject: Re: Advice for Interix and to specify users
Date: Tue, 22 Apr 2008 10:27:01 -0700

-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1

Hi Jerker,

Jerker Bäck <address@hidden> writes:

> Alright, I found the bug.
> The test fails when it tries to open the directory for the actual file (I
> think).
> 
> /tmp/cvs-sanity/cvsrootdir/123456789012345678901234567890/123456789012345678
> 901234567890/123456789012345678901234567890/123456789012345678901234567890/1
> 23456789012345678901234567890/123456789012345678901234567890/123456789012345
> 678901234567890/123456789012345678901234567890/12345678901234567890123456789
> 0/123456789012345678901234567890/file1,v
> 
> rcs.c (2055)
> *pfp = CVS_FOPEN (rcs->path, FOPEN_BINARY_READ);
> *pfp is NULL and errno is set to ENOENT (no such file or dir).
> 
> rcs->path contains the directory path only. Is that as intended?
> 
> fopen is right, there is no such directory visible. However, the symlink
> "/tmp/cvs-sanity/cvsrootdir/second-dir/fileX,v" works and the real file (as
> above) exists.
> 
> Hm ... I agree, sounds strange but that's how it is. I've seen this
> behaviour before created by cvs (but even ftp and some other unix utilities)
> both in Interix and CygWin. It is just not possible navigate to this
> directory. We managed to create a file system error somehow. Actually, I
> would say quite serious bug no matter whose fault it is.

Yes, so it seems.

> Do CygWin pass the tests?

I was under the impression they did, but I have never used it and I do
not have access to any Windows based operating system at the present
time.

> One possible reason could be that cvs ultimately are using ASCII/ANSI
> versions of the system API file I/O functions. Since Windows NT is UNICODE
> based, these functions are limited in e.g. buffer sizes. For complicated
> things the real functions are a much better choice, but of course completely
> unportable.
> 
> I need help. Where, when and how is this directory created?

The directory is created earlier in the rcslib test of sanity.sh

          # CVS has a hard-coded default link path size of 127 characters.
          # Make sure it knows how to exceed that.
          longpath=$CVSROOT_DIRNAME
          count=0
          while test $count -lt 10; do
            count=`expr $count + 1`
            longpath=$longpath/123456789012345678901234567890
            mkdir $longpath
          done
          cp $CVSROOT_DIRNAME/first-dir/file1,v $longpath

          ln -s $longpath/file1,v $CVSROOT_DIRNAME/second-dir/fileX,v

The rcs->path should be the full pathname of the $longpath/file1,v
symbolic link read when the $CVSROOT_DIRNAME/second-dir/fileX,v file was
opened.

        -- Mark
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.6 (FreeBSD)

iD8DBQFIDh/lCg7APGsDnFERAm7jAKDMjgQjcuZ8gqksoBN00gcG7CQBAgCggSIc
3ueO8wlCha85UoSTJwWFAww=
=XFH4
-----END PGP SIGNATURE-----




reply via email to

[Prev in Thread] Current Thread [Next in Thread]