r17767: Argggg. Broke the build. Need to fix callers of put_long_date()
authorJeremy Allison <jra@samba.org>
Thu, 24 Aug 2006 01:34:33 +0000 (01:34 +0000)
committerGerald (Jerry) Carter <jerry@samba.org>
Wed, 10 Oct 2007 16:38:47 +0000 (11:38 -0500)
and interpret_long_date() first. Reverting...
Jeremy.

source/lib/time.c

index 9c5f412a9d0ba08b4afa7891a5d8b4698935ed08..0bfdfac856bca89b605136e00a2e8840c65711f7 100644 (file)
@@ -178,28 +178,22 @@ int TimeDiff(time_t t)
  Interpret an 8 byte "filetime" structure to a time_t
  It's originally in "100ns units since jan 1st 1601"
 
- An 8 byte value of 0xffffffffffffffff will be returned as a timespec of
-
-       tv_sec = 0
-       tv_nsec = 0;
+ An 8 byte value of 0xffffffffffffffff will be returned as (time_t)0.
 
  Returns GMT.
 ****************************************************************************/
 
-struct timespec nt_time_to_unix_timespec(NTTIME *nt)
+time_t nt_time_to_unix(NTTIME *nt)
 {
        double d;
-       struct timespec ret;
+       time_t ret;
        /* The next two lines are a fix needed for the 
                broken SCO compiler. JRA. */
        time_t l_time_min = TIME_T_MIN;
        time_t l_time_max = TIME_T_MAX;
 
-       if ((nt->high == 0 && nt->low == 0 )||
-                       (nt->high == 0xffffffff && nt->low == 0xffffffff)) {
-               ret.tv_sec = 0;
-               ret.tv_nsec = 0;
-               return ret;
+       if (nt->high == 0 || (nt->high == 0xffffffff && nt->low == 0xffffffff)) {
+               return(0);
        }
 
        d = ((double)nt->high)*4.0*(double)(1<<30);
@@ -210,26 +204,15 @@ struct timespec nt_time_to_unix_timespec(NTTIME *nt)
        d -= TIME_FIXUP_CONSTANT;
 
        if (d <= l_time_min) {
-               ret.tv_sec = l_time_min;
-               ret.tv_nsec = 0;
-               return ret;
+               return (l_time_min);
        }
 
        if (d >= l_time_max) {
-               ret.tv_sec = l_time_max;
-               ret.tv_nsec = 0;
-               return ret;
+               return (l_time_max);
        }
 
-       ret.tv_sec = (time_t)d;
-       ret.tv_nsec = (long) ((d*1.0e9) - ((double)ret.tv_sec)*1.0e9);
-       return ret;
-}
-
-time_t nt_time_to_unix(NTTIME *nt)
-{
-       struct timespec ts = nt_time_to_unix_timespec(nt);
-       return ts.tv_sec;
+       ret = (time_t)(d+0.5);
+       return(ret);
 }
 
 /****************************************************************************
@@ -241,10 +224,10 @@ time_t nt_time_to_unix(NTTIME *nt)
  if the NTTIME was 5 seconds, the time_t is 5 seconds. JFM
 ****************************************************************************/
 
-struct timespec nt_time_to_unix_abs(const NTTIME *nt)
+time_t nt_time_to_unix_abs(const NTTIME *nt)
 {
        double d;
-       struct timespec ret;
+       time_t ret;
        /* The next two lines are a fix needed for the 
           broken SCO compiler. JRA. */
        time_t l_time_min = TIME_T_MIN;
@@ -252,15 +235,11 @@ struct timespec nt_time_to_unix_abs(const NTTIME *nt)
        NTTIME neg_nt;
 
        if (nt->high == 0) {
-               ret.tv_sec = 0;
-               ret.tv_nsec = 0;
-               return ret;
+               return(0);
        }
 
        if (nt->high==0x80000000 && nt->low==0) {
-               ret.tv_sec = (time_t)-1;
-               ret.tv_nsec = 0;
-               return ret;
+               return (time_t)-1;
        }
 
        /* reverse the time */
@@ -273,81 +252,63 @@ struct timespec nt_time_to_unix_abs(const NTTIME *nt)
        d *= 1.0e-7;
   
        if (!(l_time_min <= d && d <= l_time_max)) {
-               ret.tv_sec = 0;
-               ret.tv_nsec = 0;
-               return ret;
+               return(0);
        }
 
-       ret.tv_sec = (time_t)d;
-       ret.tv_nsec = (long) ((d*1.0e9) - ((double)ret.tv_sec)*1.0e9);
-       return ret;
+       ret = (time_t)(d+0.5);
+
+       return(ret);
 }
 
 /****************************************************************************
- Interprets an nt time into a unix struct timespec.
+ Interprets an nt time into a unix time_t.
  Differs from nt_time_to_unix in that an 8 byte value of 0xffffffffffffffff
  will be returned as (time_t)-1, whereas nt_time_to_unix returns 0 in this case.
 ****************************************************************************/
 
-struct timespec interpret_long_date(char *p)
+time_t interpret_long_date(char *p)
 {
        NTTIME nt;
        nt.low = IVAL(p,0);
        nt.high = IVAL(p,4);
        if (nt.low == 0xFFFFFFFF && nt.high == 0xFFFFFFFF) {
-               struct timespec ret;
-               ret.tv_sec = (time_t)-1;
-               ret.tv_nsec = 0;
-               return ret;
+               return (time_t)-1;
        }
-       return nt_time_to_unix_timespec(&nt);
+       return nt_time_to_unix(&nt);
 }
 
 /****************************************************************************
- Put a 8 byte filetime from a struct timespec. Uses GMT.
+ Put a 8 byte filetime from a time_t. Uses GMT.
 ****************************************************************************/
 
-void unix_timespec_to_nt_time(NTTIME *nt, struct timespec ts)
+void unix_to_nt_time(NTTIME *nt, time_t t)
 {
        double d;
 
-       if (ts.tv_sec ==0 && ts.tv_nsec == 0) {
+       if (t==0) {
                nt->low = 0;
                nt->high = 0;
                return;
        }
-       if (ts.tv_sec == TIME_T_MAX) {
+       if (t == TIME_T_MAX) {
                nt->low = 0xffffffff;
                nt->high = 0x7fffffff;
                return;
        }               
-       if (ts.tv_sec == (time_t)-1) {
+       if (t == (time_t)-1) {
                nt->low = 0xffffffff;
                nt->high = 0xffffffff;
                return;
        }               
 
-       d = (double)(ts.tv_sec);
+       d = (double)(t);
        d += TIME_FIXUP_CONSTANT;
        d *= 1.0e7;
-       d += ((double)ts.tv_nsec / 100.0);
 
        nt->high = (uint32)(d * (1.0/(4.0*(double)(1<<30))));
        nt->low  = (uint32)(d - ((double)nt->high)*4.0*(double)(1<<30));
 }
 
-/****************************************************************************
- Put a 8 byte filetime from a time_t. Uses GMT.
-****************************************************************************/
-
-void unix_to_nt_time(NTTIME *nt, time_t t)
-{
-       struct timespec ts;
-       ts.tv_sec = t;
-       ts.tv_nsec = 0;
-       unix_timespec_to_nt_time(nt, ts);
-}
-
 /****************************************************************************
  Convert a time_t to a NTTIME structure
 
@@ -395,10 +356,10 @@ void unix_to_nt_time_abs(NTTIME *nt, time_t t)
  pointed to by p.
 ****************************************************************************/
 
-void put_long_date(char *p, struct timespec ts)
+void put_long_date(char *p, time_t t)
 {
        NTTIME nt;
-       unix_timespec_to_nt_time(&nt, ts);
+       unix_to_nt_time(&nt, t);
        SIVAL(p, 0, nt.low);
        SIVAL(p, 4, nt.high);
 }