# HG changeset patch # User Klaus Ethgen # Date 1267302894 0 # Node ID 4bd5a199d369f89e4094ba04a0e77bcc1b89b665 # Parent 406fc7dcbd262ac2af973ac822adb71e167d3591 Unifying the datetime output The output of %date% and %formatted.DateTime% should be equivalent. diff -r 406fc7dcbd26 -r 4bd5a199d369 src/exif-common.c --- a/src/exif-common.c Thu Dec 23 15:35:24 2010 +0100 +++ 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 406fc7dcbd26 -r 4bd5a199d369 src/filedata.c --- a/src/filedata.c Thu Dec 23 15:35:24 2010 +0100 +++ 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);