load_image: always print a message on failure if filename is not empty

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>
dev
Bill Spitzak 10 years ago committed by Pekka Paalanen
parent 3011493e9b
commit 28371f7d55
  1. 14
      shared/image-loader.c

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

Loading…
Cancel
Save