On Mon, Sep 8, 2008 at 5:30 PM, Christian Schneider <[EMAIL PROTECTED]> wrote: > I had a quick look at bug > http://bugs.php.net/bug.php?id=45928 > and found the problem to be in Zend/zend_stream.c function > zend_stream_fsize(): It uses fstat() to determine the filesize which on > MacOS X for pipes returns either 0 (my interpretation: no data from the > pipe ready yet) or a number up to 16384 (my interpretation: data from > the pipe ready but the maximum buffer size is 16k).
I believe your interpretation is correct. it returns amount of data, which is available on pipe, so we can request that amount immediately, and later check if some more is available. > I see several solutions but I'm not sure which is the desired one: > - return 0 (size unknown) if the file is a pipe (or socket, ...) > - return 0 if the file is not a regular file (or symlink, dir?) > - look into a way of determining EOF reached well, I guess there is no way to get "filesize" of piped data, because it is completely dynamic. at the lowest level, libc's read() returns 0 in case of EOF and -1 in case of error. that's the way to distinguish them. -- Alexey Zakhlestin http://blog.milkfarmsoft.com/ -- PHP Internals - PHP Runtime Development Mailing List To unsubscribe, visit: http://www.php.net/unsub.php