summaryrefslogtreecommitdiff
path: root/fitz/stm_output.c
diff options
context:
space:
mode:
authorRobin Watts <robin.watts@artifex.com>2013-04-23 17:53:39 +0100
committerRobin Watts <robin.watts@artifex.com>2013-04-25 17:12:18 +0100
commit8f5376d30e1004a35a62ddbb8d9d8fcc0673fe8e (patch)
tree6d0fea0dd6b4b829f2349435bc95045645ce49eb /fitz/stm_output.c
parent1047ef939a09d0ed3b43224402740704ec1befc9 (diff)
downloadmupdf-8f5376d30e1004a35a62ddbb8d9d8fcc0673fe8e.tar.xz
Add fz_write method for output streams.
Diffstat (limited to 'fitz/stm_output.c')
-rw-r--r--fitz/stm_output.c27
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;
}