when using hide_timezone, convert time to UTC
[claws.git] / src / common / utils.c
index 7edaf236c421d39b1840000583228cb6896a4a6f..8236e848b6fe10a67ff51bbc3cb1bcb26ad15d3c 100644 (file)
@@ -1054,7 +1054,7 @@ void subst_for_filename(gchar *str)
        if (!str)
                return;
 #ifdef G_OS_WIN32
-       subst_chars(str, "\t\r\n\\/*:", '_');
+       subst_chars(str, "\t\r\n\\/*?:", '_');
 #else
        subst_chars(str, "\t\r\n\\/*", '_');
 #endif
@@ -2028,6 +2028,27 @@ const gchar *get_domain_name(void)
 
 off_t get_file_size(const gchar *file)
 {
+#ifdef G_OS_WIN32
+       GFile *f;
+       GFileInfo *fi;
+       GError *error = NULL;
+       goffset size;
+
+       f = g_file_new_for_path(file);
+       fi = g_file_query_info(f, "standard::size",
+                       G_FILE_QUERY_INFO_NONE, NULL, &error);
+       if (error != NULL) {
+               debug_print("get_file_size error: %s\n", error->message);
+               g_error_free(error);
+               g_object_unref(f);
+               return -1;
+       }
+       size = g_file_info_get_size(fi);
+       g_object_unref(fi);
+       g_object_unref(f);
+       return size;
+
+#else
        GStatBuf s;
 
        if (g_stat(file, &s) < 0) {
@@ -2036,6 +2057,7 @@ off_t get_file_size(const gchar *file)
        }
 
        return s.st_size;
+#endif
 }
 
 time_t get_file_mtime(const gchar *file)
@@ -3536,7 +3558,10 @@ static void _get_rfc822_date(gchar *buf, gint len, gboolean hidetz)
        gchar buf2[RFC822_DATE_BUFFSIZE];
 
        t = time(NULL);
-       lt = localtime_r(&t, &buf1);
+       if (hidetz)
+               lt = gmtime_r(&t, &buf1);
+       else
+               lt = localtime_r(&t, &buf1);
 
        sscanf(asctime_r(lt, buf2), "%3s %3s %d %d:%d:%d %d\n",
               day, mon, &dd, &hh, &mm, &ss, &yyyy);