diff --git a/src/tracker-extract/tracker-extract-tiff.c b/src/tracker-extract/tracker-extract-tiff.c index 65bba39..7aecb3e 100644 --- a/src/tracker-extract/tracker-extract-tiff.c +++ b/src/tracker-extract/tracker-extract-tiff.c @@ -21,6 +21,13 @@ #include "config.h" +#include +#include +#include +#include +#include +#include + #include #include @@ -104,10 +111,13 @@ date_to_iso8601 (gchar *date) return tracker_date_format_to_iso8601 (date, EXIF_DATE_FORMAT); } + static void extract_tiff (const gchar *filename, GHashTable *metadata) { + FILE *f; + int fd; TIFF *image; glong exifOffset; @@ -133,8 +143,15 @@ extract_tiff (const gchar *filename, guint32 size; #endif /* HAVE_EXEMPI */ - if ((image = TIFFOpen (filename, "r")) == NULL){ - g_critical ("Could not open image:'%s'\n", filename); + f = tracker_file_open (filename, "r", FALSE); + + if (!f) { + return; + } + + fd = fileno (f); + + if ((image = TIFFFdOpen(fd, filename, "r")) == NULL){ return; } @@ -279,7 +296,12 @@ extract_tiff (const gchar *filename, g_free (date); } +#ifdef HAVE_POSIX_FADVISE + posix_fadvise (fd, 0, 0, POSIX_FADV_DONTNEED); +#endif + TIFFClose (image); + } TrackerExtractData *