William A. Rowe, Jr. wrote:
>I'm sorry... this patch dir not come through to dev@apr for me today
>(although I watched for it...) but it's simply WRONG.
>At 07:04 PM 12/17/2002, =?UTF-8?B?QnJhbmtvIMSMaWJlag==?= wrote:
>>>--- apr/file_io/unix/dir.c 15 Dec 2002 05:17:51 -0000 1.69
>>>+++ apr/file_io/unix/dir.c 17 Dec 2002 00:49:35 -0000
>>>@@ -218,10 +218,10 @@
>>> return ret;
>>> wanted &= ~APR_FINFO_INODE;
>Old logic; if we have an INODE from dirent, we don't care that we
>want an INODE from stat() because we already have the INODE.
>New Logic: if we don't have an INODE, we won't ask for an INODE
>I'm sorry, but that's just broken.
>Please revert and (re)post the original description of the problem.
>If you pass APR_FINFO_TYPE | APR_FINFO_INDOE | APR_FINFO_NAME
>that is *ALL* you are promised... we do NOT stat for info you don't ask for.
Here's the original report:
>Philip Martin <email@example.com> writes:
>>> I've just upgraded to apache/apr/apr-util to HEAD and now I can
>>> reproduce this.
>>> $ svnadmin create repo
>>> $ svn mkdir file://`pwd`/repo/foo
>>> $ svn co file://`pwd`/repo wc
>>> $ svn up wc
>>> ../svn/subversion/libsvn_wc/adm_crawler.c:315: (apr_err=155000, src_err=0)
>>> svn: Obstructed update
>>> svn: The entry 'bar' is no longer a directory,
>>> which prevents proper updates.
>>> Please remove this entry and try updating again.
>Looks like a recent apr change causes apr_dir_read to fail to return
>all the requested information. I don't know if this is complete from
>an apr point of view, but it's sufficient to get Subversion working on
>my glibc 2.2.5 Linux machine.
>RCS file: /home/cvspublic/apr/file_io/unix/dir.c,v
>retrieving revision 1.69
>diff -u -r1.69 dir.c
>--- apr/file_io/unix/dir.c 15 Dec 2002 05:17:51 -0000 1.69
>+++ apr/file_io/unix/dir.c 17 Dec 2002 00:49:35 -0000
>@@ -218,10 +218,10 @@
> return ret;
> wanted &= ~APR_FINFO_INODE;
> wanted &= ~APR_FINFO_TYPE;
> -- Philip Martin
Obviously, the type at least did not make it into the fle info. Looking
at this code again, the patch may indeed be wrong; but I find it really,
really hard to follow that code. In fact, I can't understand it at all.
If you can enlighten me about what's happening there, I may be able to
come up with a better patch.
I reverted my change, but be aware that apr_dir_read is currently
broken. It simply does not work on Linux with a redent glibc, it also
doesn't work in Solaris 7 (at least for me), etc. etc. It must be fixed.
Brane Čibej <brane_at_xbc.nu> http://www.xbc.nu/brane/
Received on Wed Dec 18 05:43:34 2002