Mercurial > geeqie
changeset 1804:2cc889b20a9e
Unifying the datetime output
The output of %date% and %formatted.DateTime% should be equivalent.
author | mow |
---|---|
date | Sat, 27 Feb 2010 20:34:54 +0000 |
parents | a0f7dcd47c7f |
children | fccac8fde6c0 |
files | src/exif-common.c src/filedata.c |
diffstat | 2 files changed, 30 insertions(+), 2 deletions(-) [+] |
line wrap: on
line diff
--- a/src/exif-common.c Wed Feb 17 21:05:10 2010 +0000 +++ b/src/exif-common.c Sat Feb 27 20:34:54 2010 +0000 @@ -9,6 +9,8 @@ # include "config.h" #endif +#define _XOPEN_SOURCE + #include <stdio.h> #include <string.h> #include <fcntl.h> @@ -188,6 +190,11 @@ { gchar *text = exif_get_data_as_text(exif, "Exif.Photo.DateTimeOriginal"); gchar *subsec = NULL; + gchar buf[128]; + gchar *tmp; + gint buflen; + struct tm tm; + GError *error = NULL; if (text) { @@ -198,9 +205,30 @@ text = exif_get_data_as_text(exif, "Exif.Image.DateTime"); if (text) subsec = exif_get_data_as_text(exif, "Exif.Photo.SubSecTime"); } + + /* Convert the stuff into a tm struct */ + if (text && strptime(text, "%Y:%m:%d %H:%M:%S", &tm)) + { + buflen = strftime(buf, sizeof(buf), "%x %X", &tm); + if (buflen > 0) + { + tmp = g_locale_to_utf8(buf, buflen, NULL, NULL, &error); + if (error) + { + log_printf("Error converting locale strftime to UTF-8: %s\n", error->message); + g_error_free(error); + } + else + { + g_free(text); + text = g_strdup(tmp); + } + } + } + if (subsec) { - gchar *tmp = text; + tmp = text; text = g_strconcat(tmp, ".", subsec, NULL); g_free(tmp); g_free(subsec);
--- a/src/filedata.c Wed Feb 17 21:05:10 2010 +0000 +++ b/src/filedata.c Sat Feb 27 20:34:54 2010 +0000 @@ -116,7 +116,7 @@ btime = localtime(&t); /* the %x warning about 2 digit years is not an error */ - buflen = strftime(buf, sizeof(buf), "%x %H:%M", btime); + buflen = strftime(buf, sizeof(buf), "%x %X", btime); if (buflen < 1) return ""; g_free(ret);