+ zval *zstream;
+ php_stream *stream;
+ int fd_in, fd_out;
+
+ if (FAILURE == zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "r", &zstream))
+ return;
+
+ php_stream_from_zval(stream, &zstream);
+
+ if (php_stream_cast(stream, PHP_STREAM_AS_FD, (void*)&fd_in, REPORT_ERRORS) == FAILURE) {
+ RETURN_FALSE;
+ }
+
+ if(ancil_recv_fd(fd_in, &fd_out)) {
+ RETURN_FALSE;
+ }
+
+ if ((stream = php_stream_fopen_from_fd(fd_out, "r+b", NULL)) == NULL) {
+ RETURN_FALSE;
+ }
+
+ php_stream_to_zval(stream, return_value);