# HG changeset patch # User mow # Date 1267302894 0 # Node ID 2cc889b20a9ec26cfc158a109e23f2dee2c27ee6 # Parent a0f7dcd47c7fdd523e020bce36b17c96dc033095 Unifying the datetime output The output of %date% and %formatted.DateTime% should be equivalent. diff -r a0f7dcd47c7f -r 2cc889b20a9e src/exif-common.c --- 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 #include #include @@ -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); diff -r a0f7dcd47c7f -r 2cc889b20a9e src/filedata.c --- 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);