diff options
author | Wez Furlong <wez@php.net> | 2003-02-27 19:10:24 +0000 |
---|---|---|
committer | Wez Furlong <wez@php.net> | 2003-02-27 19:10:24 +0000 |
commit | cfd8150b309930dfa658f0ae136de63598ed0e11 (patch) | |
tree | 6ce2b38f35ee53fdb4a4fbee46ccac0cb5677a25 | |
parent | ab1793290eefa5d1364466ced0365a3d8effee87 (diff) | |
download | php-git-cfd8150b309930dfa658f0ae136de63598ed0e11.tar.gz |
Add a generic meta data api for streams.
-rw-r--r-- | ext/standard/file.c | 12 | ||||
-rwxr-xr-x | main/php_streams.h | 3 | ||||
-rw-r--r-- | main/streams/xp_socket.c | 6 |
3 files changed, 10 insertions, 11 deletions
diff --git a/ext/standard/file.c b/ext/standard/file.c index 18a4bb6480..cfbc622526 100644 --- a/ext/standard/file.c +++ b/ext/standard/file.c @@ -646,22 +646,12 @@ PHP_FUNCTION(stream_get_meta_data) #endif add_assoc_long(return_value, "unread_bytes", stream->writepos - stream->readpos); - -#if 0 - if (php_stream_is(stream, PHP_STREAM_IS_SOCKET)) { - php_netstream_data_t *sock = PHP_NETSTREAM_DATA_FROM_STREAM(stream); - add_assoc_bool(return_value, "timed_out", sock->timeout_event); - add_assoc_bool(return_value, "blocked", sock->is_blocked); - add_assoc_bool(return_value, "eof", stream->eof); - } else { -#endif + if (!php_stream_populate_meta_data(stream, return_value)) { add_assoc_bool(return_value, "timed_out", 0); add_assoc_bool(return_value, "blocked", 1); add_assoc_bool(return_value, "eof", php_stream_eof(stream)); -#if 0 } -#endif } /* }}} */ diff --git a/main/php_streams.h b/main/php_streams.h index 008bcdb1a4..e449dc38d8 100755 --- a/main/php_streams.h +++ b/main/php_streams.h @@ -349,6 +349,9 @@ PHPAPI int _php_stream_set_option(php_stream *stream, int option, int value, voi PHPAPI int _php_stream_truncate_set_size(php_stream *stream, size_t newsize TSRMLS_DC); #define php_stream_truncate_set_size(stream, size) _php_stream_truncate_set_size((stream), (size) TSRMLS_CC) +#define PHP_STREAM_OPTION_META_DATA_API 11 /* ptrparam is a zval* to which to add meta data information */ +#define php_stream_populate_meta_data(stream, zv) (_php_stream_set_option((stream), PHP_STREAM_OPTION_META_DATA_API, 0, zv TSRMLS_CC) == PHP_STREAM_OPTION_RETURN_OK ? 1 : 0) + #define PHP_STREAM_OPTION_RETURN_OK 0 /* option set OK */ #define PHP_STREAM_OPTION_RETURN_ERR -1 /* problem setting option */ #define PHP_STREAM_OPTION_RETURN_NOTIMPL -2 /* underlying stream does not implement; streams can handle it instead */ diff --git a/main/streams/xp_socket.c b/main/streams/xp_socket.c index 802811d6ee..34d617b8ce 100644 --- a/main/streams/xp_socket.c +++ b/main/streams/xp_socket.c @@ -202,6 +202,12 @@ static int php_sockop_set_option(php_stream *stream, int option, int value, void sock->timeout = *(struct timeval*)ptrparam; sock->timeout_event = 0; return PHP_STREAM_OPTION_RETURN_OK; + + case PHP_STREAM_OPTION_META_DATA_API: + add_assoc_bool((zval *)ptrparam, "timed_out", sock->timeout_event); + add_assoc_bool((zval *)ptrparam, "blocked", sock->is_blocked); + add_assoc_bool((zval *)ptrparam, "eof", stream->eof); + return PHP_STREAM_OPTION_RETURN_OK; case PHP_STREAM_OPTION_XPORT_API: xparam = (php_stream_xport_param *)ptrparam; |