From 302127b03d44277c829642468561ac9e518b7a21 Mon Sep 17 00:00:00 2001 From: Tomas Bzatek Date: Sat, 22 Mar 2014 10:50:22 +0100 Subject: Make error reporting nicer when referenced image is not available There were lots of errors reported for the same issue recently, let's silence some and only report image copy/resize errors. --- src/generators.c | 38 ++++++++++++++++++++++++++++---------- 1 file changed, 28 insertions(+), 10 deletions(-) (limited to 'src/generators.c') diff --git a/src/generators.c b/src/generators.c index f53ca05..c51f24e 100644 --- a/src/generators.c +++ b/src/generators.c @@ -23,6 +23,7 @@ #include #include +#include #include @@ -215,6 +216,7 @@ generate_image (TGallerySetup *setup, for (l = g_list_first (setup->design->image_sizes); l; l = g_list_next (l)) { image_size = l->data; + /* TODO: this is too specific */ is_thumbnail = g_ascii_strcasecmp ("thumbnail", image_size->name) == 0; is_preview = g_ascii_strcasecmp ("preview", image_size->name) == 0; is_original = g_ascii_strcasecmp ("original", image_size->name) == 0; @@ -226,6 +228,12 @@ generate_image (TGallerySetup *setup, if (img_src == NULL || img_dst == NULL) continue; + if (g_access (img_src, R_OK) != 0) { + log_error (" Error opening image %s for size \"%s\": %s\n", img_src, image_size->name, g_strerror (errno)); + res = TRUE; + continue; + } + exif_data = exif_data_new_empty (); metadata_apply_overrides (exif_data, setup, path_info, items, item); @@ -235,7 +243,7 @@ generate_image (TGallerySetup *setup, /* Copy the source file */ if ((is_preview && item->preview) || (is_original && image_size->no_resize)) { if (! copy_file (img_src, img_dst)) - log_error ("generate_image: error copying image %s\n", img_src); + log_error (" Error copying image %s to %s\n", img_src, img_dst); } /* Resize image */ else { @@ -269,7 +277,7 @@ generate_image (TGallerySetup *setup, /* Perform resize and strip */ if (! resize_image (img_src, img_dst, img_w, img_h, quality, is_thumbnail, setup->autorotate, exif_data)) - log_error ("generate_image: error resizing image %s\n", img_src); + log_error (" Error resizing image %s\n", img_src); } else { log_error ("generate_image: image %s sizes are %lux%lu\n", img_src, img_w, img_h); } @@ -636,7 +644,8 @@ get_exif_value_cb (gchar **args, gpointer user_data) { ExifData *exif = user_data; - g_return_val_if_fail (exif != NULL, NULL); + if (exif == NULL) + return NULL; g_return_val_if_fail (g_strv_length (args) != 2, NULL); /* incl. trailing NULL */ return get_exif_data (exif, *args); @@ -647,7 +656,8 @@ get_exif_value_fixed_cb (gchar **args, gpointer user_data) { ExifData *exif = user_data; - g_return_val_if_fail (exif != NULL, NULL); + if (exif == NULL) + return NULL; g_return_val_if_fail (g_strv_length (args) != 2, NULL); /* incl. trailing NULL */ return get_exif_data_fixed (exif, *args); @@ -658,7 +668,8 @@ has_exif_key_cb (gchar **args, gpointer user_data) { ExifData *exif = user_data; - g_return_val_if_fail (exif != NULL, FALSE); + if (exif == NULL) + return FALSE; g_return_val_if_fail (g_strv_length (args) != 2, FALSE); /* incl. trailing NULL */ return exif_has_key (exif, *args); @@ -789,22 +800,29 @@ write_html_image (TGallerySetup *setup, s1 = g_path_is_absolute (item->metadata_external_exif) ? g_strdup (item->metadata_external_exif) : g_build_filename (path_info->src_dir, item->metadata_external_exif, NULL); exif = read_exif (s1); if (exif == NULL) - log_error ("write_html_image: error getting exif data from file \"%s\"\n", s1); + log_error (" Error reading exif data from file %s\n", s1); g_free (s1); } /* Get EXIF data from the original image */ if (exif == NULL && img_orig_src) { - exif = read_exif (img_orig_src); + if (g_access (img_orig_src, R_OK) == 0) + exif = read_exif (img_orig_src); + /* -- silently succeed if (exif == NULL) log_error ("write_html_image: error getting exif data from file \"%s\"\n", img_orig_src); + */ } - /* Try destination image instead, though it might have the metadata stripped */ + /* Try destination image instead, though it might have the metadata stripped (as in source file already) */ if (exif == NULL) { - exif = read_exif (img_dst); + if (g_access (img_dst, R_OK) == 0) + exif = read_exif (img_dst); + /* -- silently succeed if (exif == NULL) log_error ("write_html_image: error getting exif data from file \"%s\"\n", img_dst); + */ } - metadata_apply_overrides (exif, setup, path_info, parent_items, item); + if (exif != NULL) + metadata_apply_overrides (exif, setup, path_info, parent_items, item); /* Test for basic EXIF keys presence */ if (exif != NULL && exif_has_key (exif, EXIF_APERTURE) && exif_has_key (exif, EXIF_FOCAL_LENGTH) && -- cgit v1.2.3