[ moving this to dev@apr.apache.org, where it belongs... ]

On Wed, Jan 10, 2001 at 02:21:37PM -0600, William A. Rowe, Jr. wrote:
> Ok guys...
> 
>   apr_fileinfo_t must be restored to an incomplete type.
> 
> On win32, we have the following scenario;
> 
>   inode, dev, and ctype require a CreateFile call.

ctype?

>   type (pipe, etc) requires CreateFile/GetFileType calls.
>   query owner/access kills performance by two orders of magnitude.

that doesn't happen today. user/group fields are zeroed.

>   truename requires a FindFile call.

truename? eh?

> Now, there is no SINGLE ATOMIC CALL that does all this work for
> us.  It -should- be our problem (the win32 hackers) to get this
> right, but we can only do that with accessor functions.

You're talking about performance, not correctness... right?

> The changes need to also augment the lstat flavor, so that the
> one can be queried from the other (a significant performance
> boost on win32.)

I don't understand this "queried from the other" bit.

> So if you disagree, scream.  If you don't like the call/return
> issues, consider that 'transparent' types ought to someday grow
> inline performance optimizations.  That's a seperate topic for
> another day.

I'm kind of screaming right now. I'd like to hear more on why this changed
is *needed*.

> BTW - we also need an optimized form of apr_file_open that accepts
> an apr_fileinfo_t ... that handle we grabbed to stat the file can
> be Duplicated into a read or read/write handle for file access!  The
> file handle in the win32 flavor will be cached with a registered
> cleanup against the pool, so until we are destroyed, we can keep
> grabbing the file for different flavors of access.

That is a bit of a stretch. How about saying people can open the file, then
use apr_getfileinfo() on it. (as opposed to supporting the other direction)


Some other comments on filestat.c, from some other discussions with Bill
Tutt, and looking at it now:

*) is_exe() should be static and/or #if'd out.

*) the code needs refactoring big time (reduce code dup errors).

*) in apr_stat(): if the CreateFileW() fails because the user doesn't have
   permission to open the file, then the code should fall thru to the
   GetFileAttributesEx() path.

*) possibly the same fall thru on apr_lstat()

*) refactoring would prevent the fake construction of an incomplete
   apr_file_t (which could pose maintenance problems if apr_getfileinfo()
   assumed that another field was valid, but the fake ones didn't set it
   up). the refactoring would just pass a filehandle into an
   attribute-fetching funtcion, and apr_getfileinfo() would also call this
   function.

*) note that finfo->size computation is done differently in two places.
   again: a suggestion to refactor to remove duplication.

Cheers,
-g

-- 
Greg Stein, http://www.lyra.org/

Reply via email to