Hmm, it has already supported through ZEND_HANDLE_STREAM.  So then, changing 
the interface of fopen_function to return zend_stream instead of FILE* should 
be fine.

Moriyoshi

On 2011/03/05, at 3:05, Moriyoshi Koizumi wrote:

> It looks like the only solution is define a new stream type for zend_stream 
> that delegates stream operations to user-defined callbacks.
> 
> Moriyoshi
> 
> On 2011/03/04, at 10:26, Stas Malyshev wrote:
> 
>> Hi!
>> 
>> I try to do some complex code with custom streams and I have discovered the 
>> following problem:
>> 
>> The code in main/streams/cast.c, specifically _php_stream_cast, creates 
>> fopencookie() synthetic stream for streams that are not actual file streams. 
>> Which works fine until such stream is used in include(), in which case it 
>> ultimately arrives at zend_stream_fixup(). Which would in turn call 
>> zend_stream_fsize() - which would do fstat(fileno(file_handle->handle.fp), 
>> &buf) - and that would fail since you can't get fileno for FILE* created by 
>> fopencookie.
>> Which ultimately means I can't use my custom streams for include(), which is 
>> bad. Now, looking at the code, it doesn't actually need the exact size - 
>> http streams can be included just fine - but insists on having it if it has 
>> fp (which it can have for basically any kind of stream due to the cookie 
>> trick). Does anyone has any idea why and if it can be fixed?
>> -- 
>> Stanislav Malyshev, Software Architect
>> SugarCRM: http://www.sugarcrm.com/
>> (408)454-6900 ext. 227
>> 
>> -- 
>> PHP Internals - PHP Runtime Development Mailing List
>> To unsubscribe, visit: http://www.php.net/unsub.php
>> 
> 


--
PHP Internals - PHP Runtime Development Mailing List
To unsubscribe, visit: http://www.php.net/unsub.php

Reply via email to