wez             Sat Sep  7 15:00:51 2002 EDT

  Modified files:              
    /php4/ext/standard  php_fopen_wrapper.c 
  Log:
  Implement php://output wrapper, which can be used to write to the output
  buffer via PHPWRITE.
  
  
Index: php4/ext/standard/php_fopen_wrapper.c
diff -u php4/ext/standard/php_fopen_wrapper.c:1.21 
php4/ext/standard/php_fopen_wrapper.c:1.22
--- php4/ext/standard/php_fopen_wrapper.c:1.21  Tue Apr 16 18:14:24 2002
+++ php4/ext/standard/php_fopen_wrapper.c       Sat Sep  7 15:00:46 2002
@@ -17,7 +17,7 @@
    |          Hartmut Holzgraefe <[EMAIL PROTECTED]>                       |
    +----------------------------------------------------------------------+
  */
-/* $Id: php_fopen_wrapper.c,v 1.21 2002/04/16 22:14:24 wez Exp $ */
+/* $Id: php_fopen_wrapper.c,v 1.22 2002/09/07 19:00:46 wez Exp $ */
 
 #include <stdio.h>
 #include <stdlib.h>
@@ -30,6 +30,40 @@
 #include "php_standard.h"
 #include "php_fopen_wrappers.h"
 
+static size_t php_stream_output_write(php_stream *stream, const char *buf, size_t 
+count TSRMLS_DC)
+{
+       PHPWRITE(buf, count);
+       return count;
+}
+
+static size_t php_stream_output_read(php_stream *stream, char *buf, size_t count 
+TSRMLS_DC)
+{
+       return 0;
+}
+
+static int php_stream_output_close(php_stream *stream, int close_handle TSRMLS_DC)
+{
+       return 0;
+}
+
+static int php_stream_output_flush(php_stream *stream TSRMLS_DC)
+{
+       sapi_flush(TSRMLS_C);
+       return 0;
+}
+
+php_stream_ops php_stream_output_ops = {
+       php_stream_output_write,
+       php_stream_output_read,
+       php_stream_output_close,
+       php_stream_output_flush,
+       "Output",
+       NULL,
+       NULL,
+       NULL,
+       NULL
+};
+
 php_stream * php_stream_url_wrap_php(php_stream_wrapper *wrapper, char *path, char 
*mode, int options, char **opened_path, php_stream_context *context STREAMS_DC 
TSRMLS_DC)
 {
        FILE * fp = NULL;
@@ -38,6 +72,10 @@
        if (!strncasecmp(path, "php://", 6))
                path += 6;
        
+       if (!strcasecmp(path, "output")) {
+               return php_stream_alloc(&php_stream_output_ops, NULL, 0, "wb");
+       }
+       
        if (!strcasecmp(path, "stdin")) {
                fp = fdopen(dup(STDIN_FILENO), mode);
        } else if (!strcasecmp(path, "stdout")) {
@@ -45,7 +83,6 @@
        } else if (!strcasecmp(path, "stderr")) {
                fp = fdopen(dup(STDERR_FILENO), mode);
        }
-       /* TODO: implement php://output as a stream to write to the current output 
buffer ? */
 
        if (fp) {
                stream = php_stream_fopen_from_file(fp, mode);



-- 
PHP CVS Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php

Reply via email to