Mercurial > geeqie
changeset 646:91dfc98f3ca1
Reading of Iptc.Application2.Keywords should now be fixed.
Use uft8_validate_or_convert() on exif's text data to be safe.
author | zas_ |
---|---|
date | Mon, 12 May 2008 23:26:00 +0000 |
parents | b50deb0f9968 |
children | 42d36db921bc |
files | src/bar_info.c |
diffstat | 1 files changed, 19 insertions(+), 7 deletions(-) [+] |
line wrap: on
line diff
--- a/src/bar_info.c Mon May 12 23:21:35 2008 +0000 +++ b/src/bar_info.c Mon May 12 23:26:00 2008 +0000 @@ -283,7 +283,9 @@ if (comment) { ExifItem *item = exif_get_item(exif, COMMENT_KEY); + *comment = exif_item_get_string(item, 0); + *comment = utf8_validate_or_convert(*comment); } if (keywords) @@ -297,25 +299,35 @@ { gchar *kw = exif_item_get_string(item, i); + kw = utf8_validate_or_convert(kw); if (!kw) break; *keywords = g_list_append(*keywords, (gpointer) kw); } -#if 0 + /* FIXME: * Exiv2 handles Iptc keywords as multiple entries with the * same key, thus exif_get_item returns only the first keyword * and the only way to get all keywords is to iterate through * the item list. */ - item = exif_get_item(exif, "Iptc.Application2.Keywords"); - for (i = 0; i < exif_item_get_elements(item); i++) + for (item = exif_get_first_item(exif); + item; + item = exif_get_next_item(exif)) { - gchar *kw = exif_item_get_string(item, i); + guint tag; + + tag = exif_item_get_tag_id(item); + if (tag == 0x0019) /* Iptc.Application2.Keywords */ + { + gchar *kw; - if (!kw) break; - *keywords = g_list_append(*keywords, (gpointer) kw); + kw = exif_item_get_data_as_text(item); + kw = utf8_validate_or_convert(kw); + + if (!kw) continue; + *keywords = g_list_append(*keywords, (gpointer) kw); + } } -#endif } exif_free(exif);