[libgsf] Remove deprecated GTimeVal usage



commit fb8fa3e2e3808326040c11af340144c4172419f4
Author: Marc-André Lureau <marcandre lureau redhat com>
Date:   Wed Jan 15 21:46:13 2020 +0400

    Remove deprecated GTimeVal usage
    
    Signed-off-by: Marc-André Lureau <marcandre lureau redhat com>
    
    Edited by MW to avoid g_autoptr.

 gsf/gsf-infile-msole.c  | 11 +++++++----
 gsf/gsf-input.c         | 16 +++++++++-------
 gsf/gsf-outfile-msole.c |  7 ++++---
 3 files changed, 20 insertions(+), 14 deletions(-)
---
diff --git a/gsf/gsf-infile-msole.c b/gsf/gsf-infile-msole.c
index a618246..312599d 100644
--- a/gsf/gsf-infile-msole.c
+++ b/gsf/gsf-infile-msole.c
@@ -281,15 +281,18 @@ static GDateTime *
 datetime_from_filetime (guint64 ft)
 {
        static const guint64 epoch = G_GINT64_CONSTANT (11644473600);
-       GTimeVal tv;
+       GDateTime *dt, *res;
+
        if (!ft)
                return NULL;
 
        /* ft is number of 100ns since Jan 1 1601 */
 
-       tv.tv_usec = (ft % 10000000u) / 10;
-       tv.tv_sec = (ft / 10000000u) - epoch;
-       return g_date_time_new_from_timeval_local (&tv);
+       dt = g_date_time_new_from_unix_local (ft / 10000000u - epoch);
+       res = g_date_time_add (dt, (ft % 10000000u) / 10);
+       g_date_time_unref (dt);
+
+       return res;
 }
 
 
diff --git a/gsf/gsf-input.c b/gsf/gsf-input.c
index 752268b..7723ff6 100644
--- a/gsf/gsf-input.c
+++ b/gsf/gsf-input.c
@@ -631,24 +631,26 @@ gboolean
 gsf_input_set_modtime_from_stat (GsfInput *input,
                                 const struct stat *st)
 {
-       GDateTime *modtime;
-       GTimeVal tv;
+       GDateTime *modtime = NULL, *ut = NULL;
        gboolean res;
+       gint64 sec, usec;
 
        if (st->st_mtime == (time_t)-1)
                return FALSE;
 
-       tv.tv_sec = st->st_mtime;
+       sec = st->st_mtime;
 #if defined (HAVE_STRUCT_STAT_ST_MTIMENSEC)
-       tv.tv_usec = st->st_mtimensec / 1000;
+       usec = st->st_mtimensec / 1000;
 #elif defined (HAVE_STRUCT_STAT_ST_MTIM_TV_NSEC)
-       tv.tv_usec =  st->st_mtim.tv_nsec / 1000;
+       usec =  st->st_mtim.tv_nsec / 1000;
 #else
-       tv.tv_usec = 0;
+       usec = 0;
 #endif
 
-       modtime = g_date_time_new_from_timeval_utc (&tv);
+       ut = g_date_time_new_from_unix_utc (sec);
+       modtime = g_date_time_add (ut, usec);
        res = gsf_input_set_modtime (GSF_INPUT (input), modtime);
+       g_date_time_unref (ut);
        g_date_time_unref (modtime);
 
        return res;
diff --git a/gsf/gsf-outfile-msole.c b/gsf/gsf-outfile-msole.c
index dd27f41..5a15a40 100644
--- a/gsf/gsf-outfile-msole.c
+++ b/gsf/gsf-outfile-msole.c
@@ -283,13 +283,14 @@ static guint64
 datetime_to_filetime (GDateTime *dt)
 {
        static const guint64 epoch = G_GINT64_CONSTANT (11644473600);
-       GTimeVal tv;
+
        if (!dt)
                return 0u;
 
        /* ft is number of 100ns since Jan 1 1601 */
-       g_date_time_to_timeval (dt, &tv);
-       return (tv.tv_sec + epoch) * 10000000u + tv.tv_usec * 10u;
+
+       return (g_date_time_to_unix(dt) + epoch) * 10000000u
+               + g_date_time_get_microsecond(dt) * 10u;
 }
 
 static void


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