> <[EMAIL PROTECTED]> wrote: > >> The ugliest part of this patch is that it requires special treatment >> for the plainfiles wrapper in order to deal with symlink stat calls. >> An alternative (and it wouldn't take much to convince me to go the >> other way) would be to add a parameter to the url_stat() method to >> indicate if the stat is a symlink_stat. > > If we implement url_stat() in such way, perhaps we can live without > access_check() method. > Yeah, I got to thinking that later on.... Perhaps the cleanest method would be to pass on the filestat_type directly to the url_stat method.
plainfiles can then do VCWD_ACCESS, VCWD_STAT, or VCWD_LSTAT as appropriate and other wrappers can do their thing. (additionally: http, since it allows redirection, would be able to emulate the symlink layer by returning information on the initial hit, rather than following 302 redirects) The php_stat method in filestat.c can then focus on simply managing the statecache and forming the statbuf into returnable zvals. > But the point is, not all wrappers can accept > *ix-like access control scheme.. > Nor can they return full stat detail. i.e.: What's the filesize of php://stdin ? Who "owns" http://example.com/foo.html ? Last I spoke to Wez on the subject he indicated that we should just attempt to return as much information as we can and default on the rest. http:// wrapper: is_writable() would always return false. is_readable() would return true *IF* a HEAD request returned 2xx or 3xx is_executable() would always return false. file_exists() would return true if a HEAD request returned 2xx, 3xx, or 4xx (not including 404) sb values such as mtime, size, etc... would be parsable from the http-response headers, while ctime, atime, inode, uid, gid would be unknown and default to 0 (or maybe -1) ftp:// wrapper: is_writeable() would return true if APPE <file> returned 2xx is_readable() would return true if RETR <file> returned 2xx is_executable() would always return false file_exists() would return true if SIZE <file> returned 2xx sb_size would be fetchable from SIZE <file>, however all other values are not reliable on all platforms and would have to return 0. -Sara -- PHP Internals - PHP Runtime Development Mailing List To unsubscribe, visit: http://www.php.net/unsub.php