# include "config.h"
#endif
+#define _XOPEN_SOURCE
+
#include <stdio.h>
#include <string.h>
#include <fcntl.h>
{
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)
{
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);
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);