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