Commit in reactos/lib/rtl on MAIN
time.c+56-911.1 -> 1.2
Simplify time conversion functions.

reactos/lib/rtl
time.c 1.1 -> 1.2
diff -u -r1.1 -r1.2
--- time.c	31 May 2004 19:29:02 -0000	1.1
+++ time.c	16 Dec 2004 23:46:41 -0000	1.2
@@ -1,4 +1,4 @@
-/* $Id: time.c,v 1.1 2004/05/31 19:29:02 gdalsnes Exp $
+/* $Id: time.c,v 1.2 2004/12/16 23:46:41 ekohl Exp $
  *
  * COPYRIGHT:       See COPYING in the top level directory
  * PROJECT:         ReactOS kernel
@@ -75,78 +75,71 @@
 BOOLEAN
 STDCALL
 RtlTimeFieldsToTime(
-   PTIME_FIELDS tfTimeFields,
+   PTIME_FIELDS TimeFields,
    PLARGE_INTEGER Time)
 {
    int CurYear;
    int CurMonth;
-#if defined(__GNUC__)
-
-   long long int rcTime;
-#else
+   TIME_FIELDS IntTimeFields;
 
-   __int64 rcTime;
-#endif
+   Time->QuadPart = 0;
+   memcpy(&IntTimeFields,
+          TimeFields,
+          sizeof(TIME_FIELDS));
 
-   TIME_FIELDS TimeFields = *tfTimeFields;
-
-   rcTime = 0;
-
-   /* FIXME: normalize the TIME_FIELDS structure here */
-   while (TimeFields.Second >= SECSPERMIN)
+   /* Normalize the TIME_FIELDS structure here */
+   while (IntTimeFields.Second >= SECSPERMIN)
    {
-      NormalizeTimeFields(&TimeFields.Second,
-                          &TimeFields.Minute,
+      NormalizeTimeFields(&IntTimeFields.Second,
+                          &IntTimeFields.Minute,
                           SECSPERMIN);
    }
-   while (TimeFields.Minute >= MINSPERHOUR)
+   while (IntTimeFields.Minute >= MINSPERHOUR)
    {
-      NormalizeTimeFields(&TimeFields.Minute,
-                          &TimeFields.Hour,
+      NormalizeTimeFields(&IntTimeFields.Minute,
+                          &IntTimeFields.Hour,
                           MINSPERHOUR);
    }
-   while (TimeFields.Hour >= HOURSPERDAY)
+   while (IntTimeFields.Hour >= HOURSPERDAY)
    {
-      NormalizeTimeFields(&TimeFields.Hour,
-                          &TimeFields.Day,
+      NormalizeTimeFields(&IntTimeFields.Hour,
+                          &IntTimeFields.Day,
                           HOURSPERDAY);
    }
-   while (TimeFields.Day >
-          MonthLengths[IsLeapYear(TimeFields.Year)][TimeFields.Month - 1])
+   while (IntTimeFields.Day >
+          MonthLengths[IsLeapYear(IntTimeFields.Year)][IntTimeFields.Month - 1])
    {
-      NormalizeTimeFields(&TimeFields.Day,
-                          &TimeFields.Month,
+      NormalizeTimeFields(&IntTimeFields.Day,
+                          &IntTimeFields.Month,
                           SECSPERMIN);
    }
-   while (TimeFields.Month > MONSPERYEAR)
+   while (IntTimeFields.Month > MONSPERYEAR)
    {
-      NormalizeTimeFields(&TimeFields.Month,
-                          &TimeFields.Year,
+      NormalizeTimeFields(&IntTimeFields.Month,
+                          &IntTimeFields.Year,
                           MONSPERYEAR);
    }
 
-   /* FIXME: handle calendar corrections here */
-   for (CurYear = EPOCHYEAR; CurYear < TimeFields.Year; CurYear++)
+   /* Compute the time */
+   for (CurYear = EPOCHYEAR; CurYear < IntTimeFields.Year; CurYear++)
    {
-      rcTime += YearLengths[IsLeapYear(CurYear)];
+      Time->QuadPart += YearLengths[IsLeapYear(CurYear)];
    }
-   for (CurMonth = 1; CurMonth < TimeFields.Month; CurMonth++)
+   for (CurMonth = 1; CurMonth < IntTimeFields.Month; CurMonth++)
    {
-      rcTime += MonthLengths[IsLeapYear(CurYear)][CurMonth - 1];
+      Time->QuadPart += MonthLengths[IsLeapYear(CurYear)][CurMonth - 1];
    }
-   rcTime += TimeFields.Day - 1;
-   rcTime *= SECSPERDAY;
-   rcTime += TimeFields.Hour * SECSPERHOUR + TimeFields.Minute * SECSPERMIN +
-             TimeFields.Second;
-   rcTime *= TICKSPERSEC;
-   rcTime += TimeFields.Milliseconds * TICKSPERMSEC;
-   *Time = *(LARGE_INTEGER *)&rcTime;
+   Time->QuadPart += IntTimeFields.Day - 1;
+   Time->QuadPart *= SECSPERDAY;
+   Time->QuadPart += IntTimeFields.Hour * SECSPERHOUR + IntTimeFields.Minute * SECSPERMIN +
+                     IntTimeFields.Second;
+   Time->QuadPart *= TICKSPERSEC;
+   Time->QuadPart += IntTimeFields.Milliseconds * TICKSPERMSEC;
 
    return TRUE;
 }
 
 
-
 /*
  * @implemented
  */
@@ -185,44 +178,30 @@
 }
 
 
-
 /*
  * @unimplemented
  */
 VOID
 STDCALL
 RtlTimeToTimeFields(
-   PLARGE_INTEGER liTime,
+   PLARGE_INTEGER Time,
    PTIME_FIELDS TimeFields)
 {
    const int *Months;
-   int LeapSecondCorrections, SecondsInDay, CurYear;
-   int LeapYear, CurMonth, GMTOffset;
+   int SecondsInDay, CurYear;
+   int LeapYear, CurMonth;
    long int Days;
-#if defined(__GNUC__)
-
-   long long int Time = (long long int)liTime->QuadPart;
-#else
-
-   __int64 Time = (__int64)liTime->QuadPart;
-#endif
+   LONGLONG IntTime = (LONGLONG)Time->QuadPart;
 
    /* Extract millisecond from time and convert time into seconds */
-   TimeFields->Milliseconds = (CSHORT) ((Time % TICKSPERSEC) / TICKSPERMSEC);
-   Time = Time / TICKSPERSEC;
-
-   /* FIXME: Compute the number of leap second corrections here */
-   LeapSecondCorrections = 0;
-
-   /* FIXME: get the GMT offset here */
-   GMTOffset = 0;
+   TimeFields->Milliseconds = (CSHORT) ((IntTime % TICKSPERSEC) / TICKSPERMSEC);
+   IntTime = IntTime / TICKSPERSEC;
 
    /* Split the time into days and seconds within the day */
-   Days = Time / SECSPERDAY;
-   SecondsInDay = Time % SECSPERDAY;
+   Days = IntTime / SECSPERDAY;
+   SecondsInDay = IntTime % SECSPERDAY;
 
-   /* Adjust the values for GMT and leap seconds */
-   SecondsInDay += (GMTOffset - LeapSecondCorrections);
+   /* Adjust the values for days and seconds in day */
    while (SecondsInDay < 0)
    {
       SecondsInDay += SECSPERDAY;
@@ -240,8 +219,6 @@
    TimeFields->Minute = (CSHORT) (SecondsInDay / SECSPERMIN);
    TimeFields->Second = (CSHORT) (SecondsInDay % SECSPERMIN);
 
-   /* FIXME: handle the possibility that we are on a leap second (i.e. Second = 60) */
-
    /* compute day of week */
    TimeFields->Weekday = (CSHORT) ((EPOCHWEEKDAY + Days) % DAYSPERWEEK);
 
@@ -285,15 +262,15 @@
    PLARGE_INTEGER Time,
    PULONG SecondsSince1970)
 {
-   LARGE_INTEGER liTime;
+   LARGE_INTEGER IntTime;
 
-   liTime.QuadPart = Time->QuadPart - TICKSTO1970;
-   liTime.QuadPart = liTime.QuadPart / TICKSPERSEC;
+   IntTime.QuadPart = Time->QuadPart - TICKSTO1970;
+   IntTime.QuadPart = IntTime.QuadPart / TICKSPERSEC;
 
-   if (liTime.u.HighPart != 0)
+   if (IntTime.u.HighPart != 0)
       return FALSE;
 
-   *SecondsSince1970 = liTime.u.LowPart;
+   *SecondsSince1970 = IntTime.u.LowPart;
 
    return TRUE;
 }
@@ -308,15 +285,15 @@
    PLARGE_INTEGER Time,
    PULONG SecondsSince1980)
 {
-   LARGE_INTEGER liTime;
+   LARGE_INTEGER IntTime;
 
-   liTime.QuadPart = Time->QuadPart - TICKSTO1980;
-   liTime.QuadPart = liTime.QuadPart / TICKSPERSEC;
+   IntTime.QuadPart = Time->QuadPart - TICKSTO1980;
+   IntTime.QuadPart = IntTime.QuadPart / TICKSPERSEC;
 
-   if (liTime.u.HighPart != 0)
+   if (IntTime.u.HighPart != 0)
       return FALSE;
 
-   *SecondsSince1980 = liTime.u.LowPart;
+   *SecondsSince1980 = IntTime.u.LowPart;
 
    return TRUE;
 }
@@ -347,8 +324,6 @@
 }
 
 
-
-
 /*
  * @implemented
  */
@@ -383,11 +358,7 @@
    ULONG SecondsSince1970,
    PLARGE_INTEGER Time)
 {
-   LONGLONG llTime;
-
-   llTime = (SecondsSince1970 * TICKSPERSEC) + TICKSTO1970;
-
-   *Time = *(LARGE_INTEGER *)&llTime;
+   Time->QuadPart = ((LONGLONG)SecondsSince1970 * TICKSPERSEC) + TICKSTO1970;
 }
 
 
@@ -400,13 +371,7 @@
    ULONG SecondsSince1980,
    PLARGE_INTEGER Time)
 {
-   LONGLONG llTime;
-
-   llTime = (SecondsSince1980 * TICKSPERSEC) + TICKSTO1980;
-
-   *Time = *(LARGE_INTEGER *)&llTime;
+   Time->QuadPart = ((LONGLONG)SecondsSince1980 * TICKSPERSEC) + TICKSTO1980;
 }
 
-
-
 /* EOF */
CVSspam 0.2.8