Mercurial > geeqie
comparison src/cache-loader.c @ 1288:10073464e6aa
use metadata_read_* functions where possible
switch exiv2 to utf8 charset
support for exiv2 formatting that depends on other tags:
http://dev.robotbattle.com/bugs/view.php?id=0000516
| author | nadvornik |
|---|---|
| date | Sat, 07 Feb 2009 19:01:21 +0000 |
| parents | 8b89e3ff286b |
| children | c9949c19a6d0 |
comparison
equal
deleted
inserted
replaced
| 1287:5fdf258f9c24 | 1288:10073464e6aa |
|---|---|
| 14 #include "cache-loader.h" | 14 #include "cache-loader.h" |
| 15 #include "cache.h" | 15 #include "cache.h" |
| 16 | 16 |
| 17 #include "filedata.h" | 17 #include "filedata.h" |
| 18 #include "exif.h" | 18 #include "exif.h" |
| 19 #include "metadata.h" | |
| 19 #include "md5-util.h" | 20 #include "md5-util.h" |
| 20 #include "ui_fileops.h" | 21 #include "ui_fileops.h" |
| 21 | 22 |
| 22 | 23 |
| 23 static gboolean cache_loader_process(CacheLoader *cl); | 24 static gboolean cache_loader_process(CacheLoader *cl); |
| 123 } | 124 } |
| 124 else if (cl->todo_mask & CACHE_LOADER_DATE && | 125 else if (cl->todo_mask & CACHE_LOADER_DATE && |
| 125 !cl->cd->have_date) | 126 !cl->cd->have_date) |
| 126 { | 127 { |
| 127 time_t date = -1; | 128 time_t date = -1; |
| 128 ExifData *exif; | 129 gchar *text; |
| 129 | 130 |
| 130 exif = exif_read_fd(cl->fd); | 131 text = metadata_read_string(cl->fd, "formatted.DateTime", METADATA_FORMATTED); |
| 131 if (exif) | 132 if (text) |
| 132 { | 133 { |
| 133 gchar *text; | 134 struct tm t; |
| 134 | 135 |
| 135 text = exif_get_data_as_text(exif, "formatted.DateTime"); | 136 memset(&t, 0, sizeof(t)); |
| 136 if (text) | 137 |
| 137 { | 138 if (sscanf(text, "%d:%d:%d %d:%d:%d", &t.tm_year, &t.tm_mon, &t.tm_mday, |
| 138 struct tm t; | 139 &t.tm_hour, &t.tm_min, &t.tm_sec) == 6) |
| 139 | 140 { |
| 140 memset(&t, 0, sizeof(t)); | 141 t.tm_year -= 1900; |
| 141 | 142 t.tm_mon -= 1; |
| 142 if (sscanf(text, "%d:%d:%d %d:%d:%d", &t.tm_year, &t.tm_mon, &t.tm_mday, | 143 t.tm_isdst = -1; |
| 143 &t.tm_hour, &t.tm_min, &t.tm_sec) == 6) | 144 date = mktime(&t); |
| 144 { | 145 } |
| 145 t.tm_year -= 1900; | 146 g_free(text); |
| 146 t.tm_mon -= 1; | |
| 147 t.tm_isdst = -1; | |
| 148 date = mktime(&t); | |
| 149 } | |
| 150 g_free(text); | |
| 151 } | |
| 152 exif_free_fd(cl->fd, exif); | |
| 153 } | 147 } |
| 154 | 148 |
| 155 cl->cd->date = date; | 149 cl->cd->date = date; |
| 156 cl->cd->have_date = TRUE; | 150 cl->cd->have_date = TRUE; |
| 157 | 151 |
