From 585d0bde25764ac774eaa5d309d8e887d4fef22b Mon Sep 17 00:00:00 2001 From: David Baer Date: Wed, 21 Apr 2021 22:22:57 -0400 Subject: [PATCH] Allow piping image to stdout --- src/image.c | 18 ++++++++++++------ 1 file changed, 12 insertions(+), 6 deletions(-) diff --git a/src/image.c b/src/image.c index b2a3ff6..b6eac9e 100644 --- a/src/image.c +++ b/src/image.c @@ -93,11 +93,15 @@ int writePNG(mazegrid_t const* g, char const* filename) { png_structp png_ptr = NULL; png_infop info_ptr = NULL; - f = fopen(filename, "wb"); - if (NULL == f) { - fprintf(stderr, "Could not open %s for writing.\n", filename); - code = 0; - goto exit; + if (strcmp(filename, "-") == 0) { + f = stdout; + } else { + f = fopen(filename, "wb"); + if (NULL == f) { + fprintf(stderr, "Could not open %s for writing.\n", filename); + code = 0; + goto exit; + } } png_ptr = png_create_write_struct(PNG_LIBPNG_VER_STRING, NULL, NULL, NULL); @@ -134,7 +138,9 @@ int writePNG(mazegrid_t const* g, char const* filename) { png_write_end(png_ptr, NULL); exit: - if (f != NULL) fclose(f); + if (strcmp(filename, "-") != 0) { + if (f != NULL) fclose(f); + } if (info_ptr != NULL) { png_free_data(png_ptr, info_ptr, PNG_FREE_ALL, -1); png_destroy_info_struct(png_ptr, &info_ptr);