]> granicus.if.org Git - php/commitdiff
php_stream replacement for fprintf
authorMarcus Boerger <helly@php.net>
Wed, 6 Nov 2002 00:15:24 +0000 (00:15 +0000)
committerMarcus Boerger <helly@php.net>
Wed, 6 Nov 2002 00:15:24 +0000 (00:15 +0000)
#Agreed by Wez - I will use this mysel soon.

main/php_streams.h
main/streams.c

index f983b02c3a20b86fffa24dece8b00c63d9161393..9f0425b4e6b31c61505b0cd6044668578dd8c739 100755 (executable)
@@ -347,6 +347,10 @@ PHPAPI size_t _php_stream_write(php_stream *stream, const char *buf, size_t coun
 #define php_stream_write_string(stream, str)   _php_stream_write(stream, str, strlen(str) TSRMLS_CC)
 #define php_stream_write(stream, buf, count)   _php_stream_write(stream, (buf), (count) TSRMLS_CC)
 
+PHPAPI size_t _php_stream_printf(php_stream *stream TSRMLS_DC, const char *fmt, ...);
+/* php_stream_printf macro & function require TSRMLS_CC */
+#define php_stream_printf _php_stream_printf
+
 PHPAPI int _php_stream_eof(php_stream *stream TSRMLS_DC);
 #define php_stream_eof(stream) _php_stream_eof((stream) TSRMLS_CC)
 
index 990f6763281e4fc09ed4887423d46dc7e6d2fda8..0a3ad4ca5a11b3c702632e0be38ee981fb0dde1c 100755 (executable)
@@ -825,6 +825,25 @@ PHPAPI size_t _php_stream_write(php_stream *stream, const char *buf, size_t coun
        return didwrite;
 }
 
+PHPAPI size_t _php_stream_printf(php_stream *stream TSRMLS_DC, const char *fmt, ...)
+{
+       size_t count;
+       char *buf;
+       va_list ap;
+       
+       va_start(ap, fmt);
+       count = vspprintf(&buf, 0, fmt, ap);
+       va_end(ap);
+       
+       if (!buf)
+               return 0; /* error condition */
+       
+       count = php_stream_write(stream, buf, count);
+       efree(buf);
+       
+       return count;
+}
+
 PHPAPI off_t _php_stream_tell(php_stream *stream TSRMLS_DC)
 {
        return stream->position;