lib: util: Make nt_time_to_unix_timespec() call nt_time_to_unix_timespec_raw() for...
authorJeremy Allison <jra@samba.org>
Fri, 7 Jan 2022 19:22:03 +0000 (11:22 -0800)
committerJeremy Allison <jra@samba.org>
Tue, 11 Jan 2022 00:45:28 +0000 (00:45 +0000)
Cleanup to eliminate duplicate code.

The low/high checks are now done against ret.tv_sec,
not 'd', as after calling nt_time_to_unix_timespec_raw()
this is identical to the previous intermediate 'd'
variable.

Signed-off-by: Jeremy Allison <jra@samba.org>
Reviewed-by: Christof Schmitt <cs@samba.org>
lib/util/time.c

index 5839e80a15b25af3c8569415156a7f12f47eaf40..bb4fedfcaa9f005b9f7591dd07d613bcc091a368 100644 (file)
@@ -899,7 +899,6 @@ struct timespec nt_time_to_unix_timespec_raw(
 
 struct timespec nt_time_to_unix_timespec(NTTIME nt)
 {
-       int64_t d;
        struct timespec ret;
 
        if (nt == 0 || nt == (int64_t)-1) {
@@ -908,35 +907,19 @@ struct timespec nt_time_to_unix_timespec(NTTIME nt)
                return ret;
        }
 
-       d = (int64_t)nt;
-       /* d is now in 100ns units, since jan 1st 1601".
-          Save off the ns fraction. */
-
-       /*
-        * Take the last seven decimal digits and multiply by 100.
-        * to convert from 100ns units to 1ns units.
-        */
-        ret.tv_nsec = (long) ((d % (1000 * 1000 * 10)) * 100);
+       ret = nt_time_to_unix_timespec_raw(nt);
 
-       /* Convert to seconds */
-       d /= 1000*1000*10;
-
-       /* Now adjust by 369 years to make the secs since 1970 */
-       d -= TIME_FIXUP_CONSTANT_INT;
-
-       if (d <= (int64_t)TIME_T_MIN) {
+       if (ret.tv_sec <= TIME_T_MIN) {
                ret.tv_sec = TIME_T_MIN;
                ret.tv_nsec = 0;
                return ret;
        }
 
-       if (d >= (int64_t)TIME_T_MAX) {
+       if (ret.tv_sec >= TIME_T_MAX) {
                ret.tv_sec = TIME_T_MAX;
                ret.tv_nsec = 0;
                return ret;
        }
-
-       ret.tv_sec = (time_t)d;
        return ret;
 }