diff options
author | Robin Watts <robin.watts@artifex.com> | 2013-04-23 17:53:39 +0100 |
---|---|---|
committer | Robin Watts <robin.watts@artifex.com> | 2013-04-25 17:12:18 +0100 |
commit | 8f5376d30e1004a35a62ddbb8d9d8fcc0673fe8e (patch) | |
tree | 6d0fea0dd6b4b829f2349435bc95045645ce49eb /fitz/stm_output.c | |
parent | 1047ef939a09d0ed3b43224402740704ec1befc9 (diff) | |
download | mupdf-8f5376d30e1004a35a62ddbb8d9d8fcc0673fe8e.tar.xz |
Add fz_write method for output streams.
Diffstat (limited to 'fitz/stm_output.c')
-rw-r--r-- | fitz/stm_output.c | 27 |
1 files changed, 27 insertions, 0 deletions
diff --git a/fitz/stm_output.c b/fitz/stm_output.c index f438a5b1..60e898b4 100644 --- a/fitz/stm_output.c +++ b/fitz/stm_output.c @@ -8,6 +8,14 @@ file_printf(fz_output *out, const char *fmt, va_list ap) return vfprintf(file, fmt, ap); } +static int +file_write(fz_output *out, const char *buffer, int count) +{ + FILE *file = (FILE *)out->opaque; + + return fwrite(buffer, 1, count, file); +} + fz_output * fz_new_output_file(fz_context *ctx, FILE *file) { @@ -15,6 +23,7 @@ fz_new_output_file(fz_context *ctx, FILE *file) out->ctx = ctx; out->opaque = file; out->printf = file_printf; + out->write = file_write; out->close = NULL; return out; } @@ -45,6 +54,14 @@ fz_printf(fz_output *out, const char *fmt, ...) return ret; } +int +fz_write(fz_output *out, const char *data, int len) +{ + if (!out) + return 0; + return out->write(out, data, len); +} + static int buffer_printf(fz_output *out, const char *fmt, va_list list) { @@ -53,6 +70,15 @@ buffer_printf(fz_output *out, const char *fmt, va_list list) return fz_buffer_vprintf(out->ctx, buffer, fmt, list); } +static int +buffer_write(fz_output *out, const char *data, int len) +{ + fz_buffer *buffer = (fz_buffer *)out->opaque; + + fz_write_buffer(out->ctx, buffer, (unsigned char *)data, len); + return len; +} + fz_output * fz_new_output_buffer(fz_context *ctx, fz_buffer *buf) { @@ -60,6 +86,7 @@ fz_new_output_buffer(fz_context *ctx, fz_buffer *buf) out->ctx = ctx; out->opaque = buf; out->printf = buffer_printf; + out->write = buffer_write; out->close = NULL; return out; } |