aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBert <ber.t@gmx.com>2011-04-05 00:37:37 +0200
committerBert <ber.t@gmx.com>2011-04-05 00:37:37 +0200
commit426edfb3498469b171aae6a582491c2c7e30fd51 (patch)
tree96fd579d07b0fc8fcd384f8cc35b4097d6930934
parent8d4e3a57ab93429ca8c3e8e9b1cb1ce21ee4b609 (diff)
Readded file-type check at startup
-rw-r--r--Makefile2
-rw-r--r--image.c19
-rw-r--r--main.c11
3 files changed, 27 insertions, 5 deletions
diff --git a/Makefile b/Makefile
index a20109e..4eee98c 100644
--- a/Makefile
+++ b/Makefile
@@ -1,6 +1,6 @@
all: sxiv
-VERSION=git-20110404
+VERSION=git-20110405
CC?=gcc
PREFIX?=/usr/local
diff --git a/image.c b/image.c
index 02df898..a7530a8 100644
--- a/image.c
+++ b/image.c
@@ -56,6 +56,23 @@ void img_free(img_t* img) {
imlib_free_image();
}
+int img_check(const char *filename) {
+ Imlib_Image *im;
+
+ if (!filename)
+ return 0;
+
+ if ((im = imlib_load_image(filename))) {
+ imlib_context_set_image(im);
+ imlib_image_set_changes_on_disk();
+ imlib_free_image();
+ return 1;
+ } else {
+ warn("invalid file: %s", filename);
+ return 0;
+ }
+}
+
int img_load(img_t *img, const char *filename) {
if (!img || !filename)
return 0;
@@ -66,7 +83,7 @@ int img_load(img_t *img, const char *filename) {
imlib_context_set_anti_alias(img->aa);
img->scalemode = options->scalemode;
} else {
- warn("not an image: %s", filename);
+ warn("invalid file: %s", filename);
imlib_context_set_image(im_invalid);
imlib_context_set_anti_alias(0);
}
diff --git a/main.c b/main.c
index 2ab8410..a20e62c 100644
--- a/main.c
+++ b/main.c
@@ -178,7 +178,7 @@ void update_title() {
fileidx + 1, filecnt, (int) (img.zoom * 100.0), size, unit,
filenames[fileidx]);
} else {
- n = snprintf(win_title, TITLE_LEN, "sxiv: [%d/%d] not an image: %s",
+ n = snprintf(win_title, TITLE_LEN, "sxiv: [%d/%d] invalid: %s",
fileidx + 1, filecnt, filenames[fileidx]);
}
}
@@ -193,7 +193,13 @@ void update_title() {
}
int check_append(const char *filename) {
- if (filename && !access(filename, R_OK)) {
+ if (!filename)
+ return 0;
+
+ if (access(filename, R_OK)) {
+ warn("could not open file: %s", filename);
+ return 0;
+ } else if (img_check(filename)) {
if (fileidx == filecnt) {
filecnt *= 2;
filenames = (const char**) s_realloc(filenames,
@@ -202,7 +208,6 @@ int check_append(const char *filename) {
filenames[fileidx++] = filename;
return 1;
} else {
- warn("could not open file: %s", filename);
return 0;
}
}