From 1f0b200188bde4c4caec06cb5cbd3d9a36e7ee10 Mon Sep 17 00:00:00 2001 From: Marcus Boerger Date: Wed, 6 Nov 2002 00:15:24 +0000 Subject: [PATCH] php_stream replacement for fprintf #Agreed by Wez - I will use this mysel soon. --- main/php_streams.h | 4 ++++ main/streams.c | 19 +++++++++++++++++++ 2 files changed, 23 insertions(+) diff --git a/main/php_streams.h b/main/php_streams.h index f983b02c3a..9f0425b4e6 100755 --- a/main/php_streams.h +++ b/main/php_streams.h @@ -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) diff --git a/main/streams.c b/main/streams.c index 990f676328..0a3ad4ca5a 100755 --- a/main/streams.c +++ b/main/streams.c @@ -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; -- 2.50.1