summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--source/tools/mudraw.c19
1 files changed, 18 insertions, 1 deletions
diff --git a/source/tools/mudraw.c b/source/tools/mudraw.c
index 00f71cf0..4614d4bc 100644
--- a/source/tools/mudraw.c
+++ b/source/tools/mudraw.c
@@ -860,6 +860,7 @@ int mudraw_main(int argc, char **argv)
int c;
fz_context *ctx;
fz_alloc_context alloc_ctx = { NULL, trace_malloc, trace_realloc, trace_free };
+ FILE *my_output = NULL;
fz_var(doc);
@@ -1042,7 +1043,20 @@ int mudraw_main(int argc, char **argv)
timing.maxfilename = "";
if (output_format == OUT_TEXT || output_format == OUT_HTML || output_format == OUT_STEXT || output_format == OUT_TRACE)
- out = fz_new_output_with_file(ctx, stdout, 0);
+ {
+ if (output && output[0] != '-' && *output != 0)
+ {
+ my_output = fopen(output, "w");
+ if (my_output == NULL)
+ {
+ fprintf(stderr, "Failed to open file '%s' for output\n", output);
+ exit(1);
+ }
+ }
+ else
+ my_output = stdout;
+ out = fz_new_output_with_file(ctx, my_output, 0);
+ }
if (output_format == OUT_STEXT || output_format == OUT_TRACE)
fz_printf(ctx, out, "<?xml version=\"1.0\"?>\n");
@@ -1150,6 +1164,9 @@ int mudraw_main(int argc, char **argv)
fz_drop_output(ctx, out);
out = NULL;
+ if (my_output != NULL && my_output != stdout)
+ fclose(my_output);
+
if (showtime && timing.count > 0)
{
if (files == 1)