diff options
author | Corentin Noël <corentin.noel@collabora.com> | 2023-03-05 23:27:44 +0100 |
---|---|---|
committer | Corentin Noël <tintou@noel.tf> | 2023-03-20 12:57:21 +0100 |
commit | c285a054e51b8bf90f0716eff6e9b597841f3028 (patch) | |
tree | 974ba3efb7bed15fe2f370524b1b669c9324c1e0 | |
parent | c2f039c6221cc1080711d892722e7ff7bd41d646 (diff) | |
download | evolution-data-server-c285a054e51b8bf90f0716eff6e9b597841f3028.tar.gz |
M!117 - Replace GTimeVal by GDateTime or int64
We need to use something else to be Y2038-proof.
Closes https://gitlab.gnome.org/GNOME/evolution-data-server/-/merge_requests/117
-rw-r--r-- | src/addressbook/backends/ldap/e-book-backend-ldap.c | 195 | ||||
-rw-r--r-- | src/calendar/backends/file/e-cal-backend-file.c | 8 | ||||
-rw-r--r-- | src/calendar/libecal/e-reminder-watcher.c | 58 | ||||
-rw-r--r-- | src/libebackend/e-cache-reaper-utils.c | 23 | ||||
-rw-r--r-- | src/libedataserver/e-source-alarms.c | 7 | ||||
-rw-r--r-- | src/libedataserver/e-webdav-session.c | 27 | ||||
-rw-r--r-- | src/libedataserver/e-xml-document.c | 18 | ||||
-rw-r--r-- | src/modules/google-backend/module-google-backend.c | 7 |
8 files changed, 177 insertions, 166 deletions
diff --git a/src/addressbook/backends/ldap/e-book-backend-ldap.c b/src/addressbook/backends/ldap/e-book-backend-ldap.c index 7002e09d6..0d2c94b73 100644 --- a/src/addressbook/backends/ldap/e-book-backend-ldap.c +++ b/src/addressbook/backends/ldap/e-book-backend-ldap.c @@ -76,8 +76,6 @@ /* timeout for ldap_result */ #define LDAP_RESULT_TIMEOUT_MILLIS 10 -#define TV_TO_MILLIS(timeval) ((timeval).tv_sec * 1000 + (timeval).tv_usec / 1000) - #define LDAP_SEARCH_OP_IDENT "EBookBackendLDAP.BookView::search_op" /* the objectClasses we need */ @@ -772,15 +770,15 @@ e_book_backend_ldap_connect (EBookBackendLDAP *bl, { EBookBackendLDAPPrivate *blpriv = bl->priv; gint protocol_version = LDAP_VERSION3; - GTimeVal start, end; - gulong diff; + gint64 start = 0, end; + GTimeSpan diff; #ifdef SUNLDAP gint ldap_flag; #endif if (enable_debug) { printf ("e_book_backend_ldap_connect ... \n"); - g_get_current_time (&start); + start = g_get_monotonic_time (); } /* close connection first if it's open first */ @@ -936,12 +934,11 @@ e_book_backend_ldap_connect (EBookBackendLDAP *bl, if (enable_debug) { printf ("e_book_backend_ldap_connect ... success \n"); - g_get_current_time (&end); - diff = end.tv_sec * 1000 + end.tv_usec / 1000; - diff -= start.tv_sec * 1000 + start.tv_usec / 1000; + end = g_get_monotonic_time (); + diff = end - start; printf ( - "e_book_backend_ldap_connect took %ld.%03ld seconds\n", - diff / 1000,diff % 1000); + "e_book_backend_ldap_connect took %" G_GINT64_FORMAT ".%03" G_GINT64_FORMAT " seconds\n", + diff / G_TIME_SPAN_SECOND, diff % G_TIME_SPAN_SECOND); } e_backend_ensure_source_status_connected (E_BACKEND (bl)); return TRUE; @@ -980,12 +977,12 @@ e_book_backend_ldap_reconnect (EBookBackendLDAP *bl, EDataBookView *book_view, gint ldap_status) { - GTimeVal start, end; - gulong diff; + gint64 start = 0, end; + GTimeSpan diff; if (enable_debug) { printf ("e_book_backend_ldap_reconnect ... \n"); - g_get_current_time (&start); + start = g_get_monotonic_time (); } g_rec_mutex_lock (&eds_ldap_handler_lock); @@ -1026,12 +1023,11 @@ e_book_backend_ldap_reconnect (EBookBackendLDAP *bl, if (enable_debug) { printf ("e_book_backend_ldap_reconnect ... returning %d\n", ldap_error); - g_get_current_time (&end); - diff = end.tv_sec * 1000 + end.tv_usec / 1000; - diff -= start.tv_sec * 1000 + start.tv_usec / 1000; + end = g_get_monotonic_time (); + diff = end - start; printf ( - "e_book_backend_ldap_reconnect took %ld.%03ld seconds\n", - diff / 1000,diff % 1000); + "e_book_backend_ldap_reconnect took %" G_GINT64_FORMAT ".%03" G_GINT64_FORMAT " seconds\n", + diff / G_TIME_SPAN_SECOND, diff % G_TIME_SPAN_SECOND); } return (ldap_error == LDAP_SUCCESS); @@ -2117,12 +2113,12 @@ get_contact_handler (LDAPOp *op, { EBookBackendLDAP *bl = E_BOOK_BACKEND_LDAP (op->backend); gint msg_type; - GTimeVal start, end; - gulong diff; + gint64 start = 0, end; + GTimeSpan diff; if (enable_debug) { printf ("get_contact_handler ... \n"); - g_get_current_time (&start); + start = g_get_monotonic_time (); } g_rec_mutex_lock (&eds_ldap_handler_lock); @@ -2185,12 +2181,11 @@ get_contact_handler (LDAPOp *op, ldap_op_finished (op); if (enable_debug) { - g_get_current_time (&end); - diff = end.tv_sec * 1000 + end.tv_usec / 1000; - diff -= start.tv_sec * 1000 + start.tv_usec / 1000; + end = g_get_monotonic_time (); + diff = end - start; printf ( - "get_contact_handler took %ld.%03ld seconds \n", - diff / 1000, diff % 1000); + "get_contact_handler took %" G_GINT64_FORMAT ".%03" G_GINT64_FORMAT " seconds \n", + diff / G_TIME_SPAN_SECOND, diff % G_TIME_SPAN_SECOND); } } else if (msg_type == LDAP_RES_SEARCH_REFERENCE) { /* ignore references */ @@ -2256,12 +2251,12 @@ contact_list_handler (LDAPOp *op, EBookBackendLDAP *bl = E_BOOK_BACKEND_LDAP (op->backend); LDAPMessage *e; gint msg_type; - GTimeVal start, end; - gulong diff; + gint64 start = 0, end; + GTimeSpan diff; if (enable_debug) { printf ("contact_list_handler ...\n"); - g_get_current_time (&start); + start = g_get_monotonic_time (); } g_rec_mutex_lock (&eds_ldap_handler_lock); @@ -2359,10 +2354,9 @@ contact_list_handler (LDAPOp *op, ldap_op_finished (op); if (enable_debug) { printf ("contact_list_handler success "); - g_get_current_time (&end); - diff = end.tv_sec * 1000 + end.tv_usec / 1000; - diff -= start.tv_sec * 1000 + start.tv_usec / 1000; - printf ("and took %ld.%03ld seconds\n", diff / 1000, diff % 1000); + end = g_get_monotonic_time (); + diff = end - start; + printf ("and took %" G_GINT64_FORMAT ".%03" G_GINT64_FORMAT " seconds\n", diff / G_TIME_SPAN_SECOND, diff % G_TIME_SPAN_SECOND); } } else { @@ -2400,12 +2394,12 @@ contact_list_uids_handler (LDAPOp *op, EBookBackendLDAP *bl = E_BOOK_BACKEND_LDAP (op->backend); LDAPMessage *e; gint msg_type; - GTimeVal start, end; - gulong diff; + gint64 start = 0, end; + GTimeSpan diff; if (enable_debug) { printf ("contact_list_uids_handler ...\n"); - g_get_current_time (&start); + start = g_get_monotonic_time (); } g_rec_mutex_lock (&eds_ldap_handler_lock); @@ -2498,10 +2492,9 @@ contact_list_uids_handler (LDAPOp *op, ldap_op_finished (op); if (enable_debug) { printf ("contact_list_uids_handler success "); - g_get_current_time (&end); - diff = end.tv_sec * 1000 + end.tv_usec / 1000; - diff -= start.tv_sec * 1000 + start.tv_usec / 1000; - printf ("and took %ld.%03ld seconds\n", diff / 1000, diff % 1000); + end = g_get_monotonic_time (); + diff = end - start; + printf ("and took %" G_GINT64_FORMAT ".%03" G_GINT64_FORMAT " seconds\n", diff / G_TIME_SPAN_SECOND, diff % G_TIME_SPAN_SECOND); } } else { @@ -4656,12 +4649,12 @@ ldap_search_handler (LDAPOp *op, EBookBackendLDAP *bl = E_BOOK_BACKEND_LDAP (op->backend); LDAPMessage *e; gint msg_type; - GTimeVal start, end; - gulong diff; + gint64 start = 0, end; + GTimeSpan diff; d (printf ("ldap_search_handler (%p)\n", view)); if (enable_debug) - g_get_current_time (&start); + start = g_get_monotonic_time (); g_rec_mutex_lock (&eds_ldap_handler_lock); if (!bl->priv->ldap) { @@ -4747,11 +4740,10 @@ ldap_search_handler (LDAPOp *op, ldap_op_finished (op); if (enable_debug) { - g_get_current_time (&end); - diff = end.tv_sec * 1000 + end.tv_usec / 1000; - diff -= start.tv_sec * 1000 + start.tv_usec / 1000; + end = g_get_monotonic_time (); + diff = end - start; printf ("ldap_search_handler... completed with error code %d ", ldap_error); - printf ("and took %ld.%03ld seconds\n", diff / 1000, diff % 1000); + printf ("and took %" G_GINT64_FORMAT ".%03" G_GINT64_FORMAT " seconds\n", diff / G_TIME_SPAN_SECOND, diff % G_TIME_SPAN_SECOND); } } else { @@ -4800,12 +4792,12 @@ e_book_backend_ldap_search (EBookBackendLDAP *bl, gchar *ldap_query; GList *contacts; GList *l; - GTimeVal start, end; - gulong diff; + gint64 start = 0, end; + GTimeSpan diff; if (enable_debug) { printf ("e_book_backend_ldap_search ... \n"); - g_get_current_time (&start); + start = g_get_monotonic_time (); } sexp = e_data_book_view_get_sexp (view); @@ -4899,10 +4891,9 @@ e_book_backend_ldap_search (EBookBackendLDAP *bl, if (enable_debug) { printf ("e_book_backend_ldap_search invoked ldap_search_handler "); - g_get_current_time (&end); - diff = end.tv_sec * 1000 + end.tv_usec / 1000; - diff -= start.tv_sec * 1000 + start.tv_usec / 1000; - printf ("and took %ld.%03ld seconds\n", diff / 1000,diff % 1000); + end = g_get_monotonic_time (); + diff = end - start; + printf ("and took %" G_GINT64_FORMAT ".%03" G_GINT64_FORMAT " seconds\n", diff / G_TIME_SPAN_SECOND, diff % G_TIME_SPAN_SECOND); } g_mutex_lock (&bl->priv->view_mutex); @@ -4964,12 +4955,12 @@ generate_cache_handler (LDAPOp *op, LDAPMessage *e; gint msg_type; EDataBookView *book_view; - GTimeVal start, end; - gulong diff; + gint64 start = 0, end; + GTimeSpan diff; if (enable_debug) { printf ("generate_cache_handler ... \n"); - g_get_current_time (&start); + start = g_get_monotonic_time (); } g_rec_mutex_lock (&eds_ldap_handler_lock); @@ -5010,7 +5001,7 @@ generate_cache_handler (LDAPOp *op, GSList *l; gint contact_num = 0; gchar *status_msg; - GTimeVal now; + GDateTime *now; gchar *update_str; GList *contacts, *link; @@ -5039,20 +5030,20 @@ generate_cache_handler (LDAPOp *op, e_book_backend_notify_update (op->backend, contact); } e_book_backend_cache_set_populated (bl->priv->cache); - g_get_current_time (&now); - update_str = g_time_val_to_iso8601 (&now); + now = g_date_time_new_now_utc (); + update_str = g_date_time_format_iso8601 (now); + g_date_time_unref (now); e_book_backend_cache_set_time (bl->priv->cache, update_str); g_free (update_str); e_file_cache_thaw_changes (E_FILE_CACHE (bl->priv->cache)); e_book_backend_notify_complete (op->backend); ldap_op_finished (op); if (enable_debug) { - g_get_current_time (&end); - diff = end.tv_sec * 1000 + end.tv_usec / 1000; - diff -= start.tv_sec * 1000 + start.tv_usec / 1000; + end = g_get_monotonic_time (); + diff = end - start; printf ( - "generate_cache_handler ... completed in %ld.%03ld seconds\n", - diff / 1000,diff % 1000); + "generate_cache_handler ... completed in %" G_GINT64_FORMAT ".%03" G_GINT64_FORMAT " seconds\n", + diff / G_TIME_SPAN_SECOND, diff % G_TIME_SPAN_SECOND); } } } @@ -5081,13 +5072,13 @@ generate_cache (EBookBackendLDAP *book_backend_ldap) EBookBackendLDAPPrivate *priv; gint contact_list_msgid; gint ldap_error; - GTimeVal start, end; + gint64 start = 0, end; gchar *last_update_str; - gulong diff; + GTimeSpan diff; if (enable_debug) { printf ("generating offline cache ... \n"); - g_get_current_time (&start); + start = g_get_monotonic_time (); } priv = book_backend_ldap->priv; @@ -5111,23 +5102,29 @@ generate_cache (EBookBackendLDAP *book_backend_ldap) last_update_str = e_book_backend_cache_get_time (priv->cache); if (last_update_str) { - GTimeVal now, last_update; + GDateTime *last_update; + + last_update = g_date_time_new_from_iso8601 (last_update_str, NULL); + g_free (last_update_str); + if (last_update) { + GDateTime *now; + GTimeSpan time_span; - if (g_time_val_from_iso8601 (last_update_str, &last_update)) { - g_get_current_time (&now); + now = g_date_time_new_now_utc (); + time_span = g_date_time_difference (now, last_update); + g_date_time_unref (now); + g_date_time_unref (last_update); /* update up to once a week */ - if (now.tv_sec <= last_update.tv_sec + 7 * 24 * 60 * 60) { + if (time_span <= 7 * G_TIME_SPAN_DAY) { g_rec_mutex_unlock (&eds_ldap_handler_lock); g_free (contact_list_op); - g_free (last_update_str); if (enable_debug) printf ("LDAP generating offline cache skipped: it's not 7 days since the last check yet\n"); return; } } - g_free (last_update_str); } priv->generate_cache_in_progress = TRUE; @@ -5159,10 +5156,9 @@ generate_cache (EBookBackendLDAP *book_backend_ldap) generate_cache_handler, generate_cache_dtor); if (enable_debug) { printf ("generating offline cache invoked generate_cache_handler "); - g_get_current_time (&end); - diff = end.tv_sec * 1000 + end.tv_usec / 1000; - diff -= start.tv_sec * 1000 + start.tv_usec / 1000; - printf ("and took %ld.%03ld seconds\n", diff / 1000, diff % 1000); + end = g_get_monotonic_time (); + diff = end - start; + printf ("and took %" G_GINT64_FORMAT ".%03" G_GINT64_FORMAT " seconds\n", diff / G_TIME_SPAN_SECOND, diff % G_TIME_SPAN_SECOND); } } else { generate_cache_dtor ((LDAPOp *) contact_list_op); @@ -5912,8 +5908,8 @@ book_backend_ldap_get_contact (EBookBackend *backend, gint get_contact_msgid; EDataBookView *book_view; gint ldap_error; - GTimeVal start, end; - gulong diff; + gint64 start = 0, end; + GTimeSpan diff; if (!e_backend_get_online (E_BACKEND (backend))) { if (bl->priv->marked_for_offline && bl->priv->cache) { @@ -5939,7 +5935,7 @@ book_backend_ldap_get_contact (EBookBackend *backend, if (enable_debug) { printf ("e_book_backend_ldap_get_contact ... \n"); - g_get_current_time (&start); + start = g_get_monotonic_time (); } g_rec_mutex_lock (&eds_ldap_handler_lock); @@ -5979,12 +5975,11 @@ book_backend_ldap_get_contact (EBookBackend *backend, if (enable_debug) { printf ("e_book_backend_ldap_get_contact invoked get_contact_handler\n"); - g_get_current_time (&end); - diff = end.tv_sec * 1000 + end.tv_usec / 1000; - diff -= start.tv_sec * 1000 + start.tv_usec / 1000; + end = g_get_monotonic_time (); + diff = end - start; printf ( - "and took %ld.%03ld seconds\n", - diff / 1000, diff % 1000); + "and took %" G_GINT64_FORMAT ".%03" G_GINT64_FORMAT " seconds\n", + diff / G_TIME_SPAN_SECOND, diff % G_TIME_SPAN_SECOND); } } else { e_data_book_respond_get_contact ( @@ -6009,12 +6004,12 @@ book_backend_ldap_get_contact_list (EBookBackend *backend, EDataBookView *book_view; gint ldap_error; gchar *ldap_query; - GTimeVal start, end; - gulong diff; + gint64 start = 0, end; + GTimeSpan diff; if (enable_debug) { printf ("e_book_backend_ldap_get_contact_list ... \n"); - g_get_current_time (&start); + start = g_get_monotonic_time (); } if (!e_backend_get_online (E_BACKEND (backend))) { @@ -6084,13 +6079,11 @@ book_backend_ldap_get_contact_list (EBookBackend *backend, book_view, opid, contact_list_msgid, contact_list_handler, contact_list_dtor); if (enable_debug) { - g_get_current_time (&end); - - diff = end.tv_sec * 1000 + end.tv_usec / 1000; - diff -= start.tv_sec * 1000 + start.tv_usec / 1000; + end = g_get_monotonic_time (); + diff = end - start; printf ("e_book_backend_ldap_get_contact_list invoked contact_list_handler "); - printf ("and took %ld.%03ld seconds\n", diff / 1000, diff % 1000); + printf ("and took %" G_GINT64_FORMAT ".%03" G_GINT64_FORMAT " seconds\n", diff / G_TIME_SPAN_SECOND, diff % G_TIME_SPAN_SECOND); } } else { e_data_book_respond_get_contact_list ( @@ -6115,12 +6108,12 @@ book_backend_ldap_get_contact_list_uids (EBookBackend *backend, EDataBookView *book_view; gint ldap_error; gchar *ldap_query; - GTimeVal start, end; - gulong diff; + gint64 start = 0, end; + GTimeSpan diff; if (enable_debug) { printf ("e_book_backend_ldap_get_contact_list_uids ... \n"); - g_get_current_time (&start); + start = g_get_monotonic_time (); } if (!e_backend_get_online (E_BACKEND (backend))) { @@ -6190,13 +6183,11 @@ book_backend_ldap_get_contact_list_uids (EBookBackend *backend, book_view, opid, contact_list_uids_msgid, contact_list_uids_handler, contact_list_uids_dtor); if (enable_debug) { - g_get_current_time (&end); - - diff = end.tv_sec * 1000 + end.tv_usec / 1000; - diff -= start.tv_sec * 1000 + start.tv_usec / 1000; + end = g_get_monotonic_time (); + diff = end - start; printf ("e_book_backend_ldap_get_contact_list_uids invoked contact_list_uids_handler "); - printf ("and took %ld.%03ld seconds\n", diff / 1000, diff % 1000); + printf ("and took %" G_GINT64_FORMAT ".%03" G_GINT64_FORMAT " seconds\n", diff / G_TIME_SPAN_SECOND, diff % G_TIME_SPAN_SECOND); } } else { e_data_book_respond_get_contact_list_uids (book, opid, ldap_error_to_response (ldap_error), NULL); diff --git a/src/calendar/backends/file/e-cal-backend-file.c b/src/calendar/backends/file/e-cal-backend-file.c index bcc55e5da..173295eb1 100644 --- a/src/calendar/backends/file/e-cal-backend-file.c +++ b/src/calendar/backends/file/e-cal-backend-file.c @@ -392,13 +392,13 @@ get_revision_property (ECalBackendFile *cbfile) static gchar * make_revision_string (ECalBackendFile *cbfile) { - GTimeVal timeval; + GDateTime *dt; gchar *datestr; gchar *revision; - g_get_current_time (&timeval); - - datestr = g_time_val_to_iso8601 (&timeval); + dt = g_date_time_new_now_utc (); + datestr = g_date_time_format_iso8601 (dt); + g_date_time_unref (dt); revision = g_strdup_printf ("%s(%d)", datestr, cbfile->priv->revision_counter++); g_free (datestr); diff --git a/src/calendar/libecal/e-reminder-watcher.c b/src/calendar/libecal/e-reminder-watcher.c index 5087de100..5a0849019 100644 --- a/src/calendar/libecal/e-reminder-watcher.c +++ b/src/calendar/libecal/e-reminder-watcher.c @@ -306,14 +306,13 @@ client_data_source_written_cb (GObject *source_object, } } -static time_t +static gint64 client_get_last_notification_time (ECalClient *client) { ESource *source; ESourceAlarms *alarms_extension; gchar *last_notified; - GTimeVal tmval = { 0 }; - time_t value = 0, now; + gint64 value = 0; if (!client) return -1; @@ -325,13 +324,25 @@ client_get_last_notification_time (ECalClient *client) alarms_extension = e_source_get_extension (source, E_SOURCE_EXTENSION_ALARMS); last_notified = e_source_alarms_dup_last_notified (alarms_extension); - if (last_notified && *last_notified && - g_time_val_from_iso8601 (last_notified, &tmval)) { - now = time (NULL); - value = (time_t) tmval.tv_sec; + if (last_notified && *last_notified) { + GDateTime *dt, *now; + + dt = g_date_time_new_from_iso8601 (last_notified, NULL); + if (!dt) { + g_free (last_notified); + return -1; + } + + now = g_date_time_new_now_utc (); + + if (g_date_time_compare (dt, now) > 0) { + value = g_date_time_to_unix (now); + } else { + value = g_date_time_to_unix (dt); + } - if (value > now) - value = now; + g_date_time_unref (dt); + g_date_time_unref (now); } g_free (last_notified); @@ -345,9 +356,8 @@ client_set_last_notification_time (ECalClient *client, { ESource *source; ESourceAlarms *alarms_extension; - GTimeVal tv = { 0 }; + GDateTime *tt_dt, *now, *last_notified_dt = NULL; gchar *iso8601; - time_t now; g_return_if_fail (client != NULL); g_return_if_fail (tt > 0); @@ -360,17 +370,16 @@ client_set_last_notification_time (ECalClient *client, iso8601 = e_source_alarms_dup_last_notified (alarms_extension); if (iso8601) { - if (!g_time_val_from_iso8601 (iso8601, &tv)) - tv.tv_sec = 0; - + last_notified_dt = g_date_time_new_from_iso8601 (iso8601, NULL); g_free (iso8601); } - now = time (NULL); + tt_dt = g_date_time_new_from_unix_utc (tt); + now = g_date_time_new_now_utc (); - if (tt > (time_t) tv.tv_sec || (time_t) tv.tv_sec > now) { - tv.tv_sec = (glong) tt; - iso8601 = g_time_val_to_iso8601 (&tv); + if (last_notified_dt && + (g_date_time_compare (tt_dt, last_notified_dt) > 0 || g_date_time_compare (last_notified_dt, now) > 0)) { + iso8601 = g_date_time_format_iso8601 (tt_dt); e_source_alarms_set_last_notified (alarms_extension, iso8601); e_reminder_watcher_debug_print ("Changed last-notified for source %s (%s) to %s\n", @@ -382,6 +391,11 @@ client_set_last_notification_time (ECalClient *client, e_source_write (source, NULL, client_data_source_written_cb, NULL); } + + if (last_notified_dt) + g_date_time_unref (last_notified_dt); + g_date_time_unref (tt_dt); + g_date_time_unref (now); } static void @@ -437,7 +451,7 @@ client_data_start_view (ClientData *cd, GCancellable *cancellable) { gchar *iso_start, *iso_end; - time_t start_tt; + gint64 start_tt; g_return_if_fail (cd != NULL); g_return_if_fail (cd->client != NULL); @@ -446,14 +460,14 @@ client_data_start_view (ClientData *cd, start_tt = client_get_last_notification_time (cd->client) + 1; if (start_tt <= 0) - start_tt = time_day_begin (time (NULL)); + start_tt = (gint64) time_day_begin (time (NULL)); - iso_start = isodate_from_time_t (start_tt); + iso_start = isodate_from_time_t ((time_t) start_tt); iso_end = isodate_from_time_t ((time_t) next_midnight); if (!iso_start || !iso_end) { e_reminder_watcher_debug_print ("Failed to convert last notification %" G_GINT64_FORMAT " or next midnight %" G_GINT64_FORMAT " into iso strings for client %s\n", - (gint64) start_tt, next_midnight, e_source_get_uid (e_client_get_source (E_CLIENT (cd->client)))); + start_tt, next_midnight, e_source_get_uid (e_client_get_source (E_CLIENT (cd->client)))); } else { gchar *query; diff --git a/src/libebackend/e-cache-reaper-utils.c b/src/libebackend/e-cache-reaper-utils.c index 954d7d1d9..e54b8675b 100644 --- a/src/libebackend/e-cache-reaper-utils.c +++ b/src/libebackend/e-cache-reaper-utils.c @@ -79,25 +79,24 @@ e_reap_trash_directory_sync (GFile *trash_directory, while (file_info != NULL) { GFileType file_type; - GTimeVal mtime; - GDate *date_now; - GDate *date_mtime; + GDateTime *dt_modification; const gchar *name; gboolean reap_it; - gint days_old; + gint days_old = 0; name = g_file_info_get_name (file_info); file_type = g_file_info_get_file_type (file_info); - g_file_info_get_modification_time (file_info, &mtime); + dt_modification = g_file_info_get_modification_date_time (file_info); /* Calculate how many days ago the file was modified. */ - date_now = g_date_new (); - g_date_set_time_t (date_now, time (NULL)); - date_mtime = g_date_new (); - g_date_set_time_val (date_mtime, &mtime); - days_old = g_date_days_between (date_mtime, date_now); - g_date_free (date_mtime); - g_date_free (date_now); + if (dt_modification) { + GDateTime *dt_now; + + dt_now = g_date_time_new_now_utc (); + days_old = g_date_time_difference (dt_now, dt_modification) / G_TIME_SPAN_DAY; + g_date_time_unref (dt_now); + g_date_time_unref (dt_modification); + } reap_it = (file_type == G_FILE_TYPE_DIRECTORY) && diff --git a/src/libedataserver/e-source-alarms.c b/src/libedataserver/e-source-alarms.c index 4c4e400d3..d397b7484 100644 --- a/src/libedataserver/e-source-alarms.c +++ b/src/libedataserver/e-source-alarms.c @@ -290,14 +290,17 @@ e_source_alarms_set_last_notified (ESourceAlarms *extension, last_notified = NULL; if (last_notified != NULL) { - GTimeVal time_val; + GDateTime *last_notified_time; - if (!g_time_val_from_iso8601 (last_notified, &time_val)) { + last_notified_time = g_date_time_new_from_iso8601 (last_notified, NULL); + if (!last_notified_time) { g_warning ( "%s: Invalid timestamp: '%s'", G_STRFUNC, last_notified); return; } + + g_date_time_unref (last_notified_time); } e_source_extension_property_lock (E_SOURCE_EXTENSION (extension)); diff --git a/src/libedataserver/e-webdav-session.c b/src/libedataserver/e-webdav-session.c index 4ee8414ef..f82f8fcf5 100644 --- a/src/libedataserver/e-webdav-session.c +++ b/src/libedataserver/e-webdav-session.c @@ -3389,14 +3389,14 @@ e_webdav_session_extract_uint (xmlNodePtr parent, return (guint) value; } -static glong +static gint64 e_webdav_session_extract_datetime (xmlNodePtr parent, const gchar *ns_href, const gchar *prop, gboolean is_iso_property) { gchar *value; - GTimeVal tv; + gint64 result = -1; g_return_val_if_fail (parent != NULL, -1); g_return_val_if_fail (prop != NULL, -1); @@ -3405,15 +3405,20 @@ e_webdav_session_extract_datetime (xmlNodePtr parent, if (!value) return -1; - if (is_iso_property && !g_time_val_from_iso8601 (value, &tv)) { - tv.tv_sec = -1; + if (is_iso_property) { + GDateTime *datetime; + + datetime = g_date_time_new_from_iso8601 (value, NULL); + if (datetime) { + result = g_date_time_to_unix (datetime); + g_date_time_unref (datetime); + } } else if (!is_iso_property) { - tv.tv_sec = camel_header_decode_date (value, NULL); + result = (gint64) camel_header_decode_date (value, NULL); } g_free (value); - - return tv.tv_sec; + return result; } static gboolean @@ -3437,8 +3442,8 @@ e_webdav_session_list_cb (EWebDAVSession *webdav, gchar *display_name; gchar *content_type; gsize content_length; - glong creation_date; - glong last_modified; + gint64 creation_date; + gint64 last_modified; gchar *description; gchar *color; gchar *source_href = NULL; @@ -3484,8 +3489,8 @@ e_webdav_session_list_cb (EWebDAVSession *webdav, NULL, /* display_name */ NULL, /* content_type */ content_length, - creation_date, - last_modified, + (glong) creation_date, + (glong) last_modified, NULL, /* description */ NULL, /* color */ order); diff --git a/src/libedataserver/e-xml-document.c b/src/libedataserver/e-xml-document.c index 06af51003..899789b85 100644 --- a/src/libedataserver/e-xml-document.c +++ b/src/libedataserver/e-xml-document.c @@ -555,17 +555,16 @@ e_xml_document_add_attribute_time (EXmlDocument *xml, const gchar *name, time_t value) { - GTimeVal tv; + GDateTime *dt; gchar *strvalue; g_return_if_fail (E_IS_XML_DOCUMENT (xml)); g_return_if_fail (xml->priv->current_element != NULL); g_return_if_fail (name != NULL); - tv.tv_usec = 0; - tv.tv_sec = value; - - strvalue = g_time_val_to_iso8601 (&tv); + dt = g_date_time_new_from_unix_utc ((gint64) value); + strvalue = g_date_time_format_iso8601 (dt); + g_date_time_unref (dt); e_xml_document_add_attribute (xml, ns_href, name, strvalue); g_free (strvalue); } @@ -695,16 +694,15 @@ void e_xml_document_write_time (EXmlDocument *xml, time_t value) { - GTimeVal tv; + GDateTime *dt; gchar *strvalue; g_return_if_fail (E_IS_XML_DOCUMENT (xml)); g_return_if_fail (xml->priv->current_element != NULL); - tv.tv_usec = 0; - tv.tv_sec = value; - - strvalue = g_time_val_to_iso8601 (&tv); + dt = g_date_time_new_from_unix_utc ((gint64) value); + strvalue = g_date_time_format_iso8601 (dt); + g_date_time_unref (dt); e_xml_document_write_string (xml, strvalue); g_free (strvalue); } diff --git a/src/modules/google-backend/module-google-backend.c b/src/modules/google-backend/module-google-backend.c index d82f0f311..76a8e3fdc 100644 --- a/src/modules/google-backend/module-google-backend.c +++ b/src/modules/google-backend/module-google-backend.c @@ -725,11 +725,12 @@ google_backend_child_added (ECollectionBackend *backend, /* To not notify about past reminders. */ alarms_extension = e_source_get_extension (child_source, E_SOURCE_EXTENSION_ALARMS); if (!e_source_alarms_get_last_notified (alarms_extension)) { - GTimeVal today_tv; + GDateTime *today_dt; gchar *today; - g_get_current_time (&today_tv); - today = g_time_val_to_iso8601 (&today_tv); + today_dt = g_date_time_new_now_utc (); + today = g_date_time_format_iso8601 (today_dt); + g_date_time_unref (today_dt); e_source_alarms_set_last_notified (alarms_extension, today); g_free (today); } |