apr-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "William A. Rowe, Jr." <wr...@apache.org>
Subject Re: [PATCH] apr_dir_read doesn't return requested information
Date Wed, 18 Dec 2002 05:18:47 GMT
At 10:42 PM 12/17/2002, =?UTF-8?B?QnJhbmtvIMSMaWJlag==?= wrote:

>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.

What I would like to know (if you can track it...) 

Is it possible to dump the finfo structure within gdb at the point this
request fails?  I'd pay especially close attention to the .valid bits, since
those are the identifiers that will help us determine if stat() was also
called later.

First; the definition of all the apr_file_info...() fn's is to return *ALL* of the
available information.  If more information is available (without extra
effort) than the user requests, that is always OK.

If some 'extra step' must be performed on a given platfrom (e.g. win32 can't
just get an inode/dev without drilling with an open file handle), then we
*must* perform that extra step.

I'm very interested in what is returned in .filetype.  The definition of d_type
is to spell out what info is available about the file directory entry.  This is 
an lstat() style info (that is, the file doesn't reside in a directory, the 
link to the file does.)

>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.

Thanks... If you can spell out how we called apr_dir_read it might help
me a ton.  I'm actively interested in helping debug the issue with the
right fix.

A.F.A rbb's complaint; if this code is difficult to read, by all means we
should refactor for clarity.

However, there is no reason *not* to deal with ALL of the information 
we can recover from struct dirent, if it proves reliable.  I strongly suspect
we are looking for some unrelated datum that we 1) didn't request, or
2) recovered an APR_INCOMPLETE because some bit was requested
that can't be recovered on the platform in question.  Or 3) there is some
very obvious, fat fingered mistake of mine in the code.

Bill


Mime
View raw message