[libsoup/gtimeval-out: 1/3] SoupDate: switch from GTimeVal to GDateTime in soup_date_to_time_t()



commit 4b7cb5ced9def9551507d8b6d6056426fe8bfd25
Author: Claudio Saavedra <csaavedra igalia com>
Date:   Tue Aug 13 14:42:52 2019 +0300

    SoupDate: switch from GTimeVal to GDateTime in soup_date_to_time_t()
    
    GTimeVal is deprecated, so let's stop using it. Also add a test
    for soup_date_to_time_t() which was missing.

 libsoup/soup-date.c | 18 +++++++++++++++---
 tests/date-test.c   |  2 ++
 2 files changed, 17 insertions(+), 3 deletions(-)
---
diff --git a/libsoup/soup-date.c b/libsoup/soup-date.c
index dabae9d4..3751f08c 100644
--- a/libsoup/soup-date.c
+++ b/libsoup/soup-date.c
@@ -692,7 +692,8 @@ time_t
 soup_date_to_time_t (SoupDate *date)
 {
        time_t tt;
-       GTimeVal val;
+       GDateTime *datetime;
+       GTimeZone *timezone;
 
        g_return_val_if_fail (date != NULL, 0);
 
@@ -710,8 +711,19 @@ soup_date_to_time_t (SoupDate *date)
        if (sizeof (time_t) == 4 && date->year > 2038)
                return (time_t)0x7fffffff;
 
-       soup_date_to_timeval (date, &val);
-       tt = val.tv_sec;
+       timezone = g_time_zone_new_offset (date->utc ? 0 : date->offset * 60);
+       datetime = g_date_time_new (timezone,
+                                   date->year,
+                                   date->month,
+                                   date->day,
+                                   date->hour,
+                                   date->minute,
+                                   date->second);
+
+       tt = g_date_time_to_unix (datetime);
+
+       g_date_time_unref (datetime);
+       g_time_zone_unref (timezone);
 
        if (sizeof (time_t) == 4 && tt < 0)
                return (time_t)0x7fffffff;
diff --git a/tests/date-test.c b/tests/date-test.c
index f623061b..97ae221f 100644
--- a/tests/date-test.c
+++ b/tests/date-test.c
@@ -171,6 +171,8 @@ check_ok_time_t (void)
        g_assert_cmpint (date->minute, ==, 9);
        g_assert_cmpint (date->second, ==, 7);
 
+       g_assert_cmpuint (TIME_T, ==, soup_date_to_time_t (date));
+
        soup_date_free (date);
 }
 


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]