diff options
author | Marcus Boerger <helly@php.net> | 2002-11-06 00:15:24 +0000 |
---|---|---|
committer | Marcus Boerger <helly@php.net> | 2002-11-06 00:15:24 +0000 |
commit | 1f0b200188bde4c4caec06cb5cbd3d9a36e7ee10 (patch) | |
tree | 69f3a185122b7205a84e533eba41e3ebb35708ae | |
parent | 64f77577f054dc83a19e42f55724f41ed45986db (diff) | |
download | php-git-1f0b200188bde4c4caec06cb5cbd3d9a36e7ee10.tar.gz |
php_stream replacement for fprintf
#Agreed by Wez - I will use this mysel soon.
-rwxr-xr-x | main/php_streams.h | 4 | ||||
-rwxr-xr-x | main/streams.c | 19 |
2 files changed, 23 insertions, 0 deletions
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; |