changeset 3:ffcd1967fb5c

Clean up load_image() probing code a bit in preparation for TIFF support.
author Matti Hamalainen <ccr@tnsp.org>
date Wed, 07 Dec 2016 10:35:38 +0200
parents bb21eb1cd483
children bbd61622856a
files bpgenc.c
diffstat 1 files changed, 14 insertions(+), 19 deletions(-) [+]
line wrap: on
line diff
--- a/bpgenc.c	Wed Dec 07 10:17:53 2016 +0200
+++ b/bpgenc.c	Wed Dec 07 10:35:38 2016 +0200
@@ -1425,31 +1425,26 @@
                   int limited_range, int premultiplied_alpha)
 {
     FILE *f;
-    int is_png;
-    Image *img;
+    Image *img = NULL;
     BPGMetaData *md;
+    uint8_t buf[PROBE_BUF_SIZE];
 
     *pmd = NULL;
 
-    f = fopen(infilename, "rb");
-    if (!f)
+    if ((f = fopen(infilename, "rb")) == NULL)
         return NULL;
-    {
-        uint8_t buf[8];
-        if (fread(buf, 1, 8, f) == 8 && 
-            png_sig_cmp(buf, 0, 8) == 0)
-            is_png = 1;
-        else
-            is_png = 0;
-        fseek(f, 0, SEEK_SET);
-    }
-    
-    if (is_png) {
-        img = read_png(&md, f, color_space, bit_depth, limited_range,
-                       premultiplied_alpha);
-    } else {
+
+    if (fread(buf, 1, PROBE_BUF_SIZE, f) != PROBE_BUF_SIZE)
+        goto err;
+
+    fseek(f, 0, SEEK_SET);
+
+    if (png_sig_cmp(buf, 0, PROBE_BUF_SIZE) == 0)
+        img = read_png(&md, f, color_space, bit_depth, limited_range, premultiplied_alpha);
+    else
         img = read_jpeg(&md, f, bit_depth);
-    }
+
+err:
     fclose(f);
     *pmd = md;
     return img;