load_image: always print a message on failure if filename is not empty
authorBill Spitzak <spitzak@gmail.com>
Wed, 20 Aug 2014 01:13:10 +0000 (18:13 -0700)
committerPekka Paalanen <pekka.paalanen@collabora.co.uk>
Thu, 11 Sep 2014 10:01:47 +0000 (13:01 +0300)
It was rather inconsistent before. This may help users figure out why
backgrounds and icons don't show up. A better api where the error can
be queried might be nice, but this seems sufficient for current Weston use.

[Pekka Paalanen: removed one stray space.]

Reviewed-by: Pekka Paalanen <pekka.paalanen@collabora.co.uk>
shared/image-loader.c

index 35dadd3..c4d763f 100644 (file)
@@ -23,6 +23,7 @@
 
 #include "config.h"
 
+#include <errno.h>
 #include <stdlib.h>
 #include <stdio.h>
 #include <string.h>
@@ -374,12 +375,18 @@ load_image(const char *filename)
        FILE *fp;
        unsigned int i;
 
+       if (!filename || !*filename)
+               return NULL;
+
        fp = fopen(filename, "rb");
-       if (fp == NULL)
+       if (!fp) {
+               fprintf(stderr, "%s: %s\n", filename, strerror(errno));
                return NULL;
+       }
 
        if (fread(header, sizeof header, 1, fp) != 1) {
                fclose(fp);
+               fprintf(stderr, "%s: unable to read file header\n", filename);
                return NULL;
        }
 
@@ -395,10 +402,13 @@ load_image(const char *filename)
        fclose(fp);
 
        if (i == ARRAY_LENGTH(loaders)) {
-               fprintf(stderr, "unrecognized file header for %s: "
+               fprintf(stderr, "%s: unrecognized file header "
                        "0x%02x 0x%02x 0x%02x 0x%02x\n",
                        filename, header[0], header[1], header[2], header[3]);
                image = NULL;
+       } else if (!image) {
+               /* load probably printed something, but just in case */
+               fprintf(stderr, "%s: error reading image\n", filename);
        }
 
        return image;