]> git.mxchange.org Git - flightgear.git/commitdiff
Fixed a horible bug that cause the time to be *WAY* off when compiling
authorcurt <curt>
Tue, 28 Apr 1998 21:45:34 +0000 (21:45 +0000)
committercurt <curt>
Tue, 28 Apr 1998 21:45:34 +0000 (21:45 +0000)
with the CygWin32 compiler.  This may not yet completely address other
Win32 compilers, but we'll have to take them on a case by case basis.

Time/fg_time.cxx

index c281f5b79d1762ce2918bd6b1281f6d25bd9c115..a4f85d5929424b55b32892d7eebf549b05c24058 100644 (file)
@@ -177,7 +177,7 @@ double utc_gst (double mjd) {
     x /= 3600.0;
     gst = (1.0/SIDRATE)*hr + x;
 
-   fgPrintf( FG_EVENT, FG_DEBUG, "  gst => %.4f\n", gst);
+    fgPrintf( FG_EVENT, FG_DEBUG, "  gst => %.4f\n", gst);
 
     return(gst);
 }
@@ -217,25 +217,26 @@ double sidereal_course(struct tm *gmt, time_t now, double lng) {
     long int offset;
     double diff, part, days, hours, lst;
 
+#ifdef __CYGWIN32__
+    int daylight;       // not used but need to keep the compiler happy
+    long int timezone;  // not used but need to keep the compiler happy
+    int mktime_is_gmt = 1;
+#else
+    int mktime_is_gmt = 0;
+#endif
+
     // ftime() needs a little extra help finding the current timezone
 #if defined( HAVE_GETTIMEOFDAY )
-#elif defined( HAVE_GETLOCALTIME )
 #elif defined( HAVE_FTIME )
     struct timeb current;
 #else
 # error Port me
 #endif
 
-#ifdef __CYGWIN32__
-    int daylight;
-    long int timezone;
-#endif // __CYGWIN32__
-
-    /*
-    printf("  COURSE: GMT = %d/%d/%2d %d:%02d:%02d\n", 
-           gmt->tm_mon, gmt->tm_mday, gmt->tm_year,
-           gmt->tm_hour, gmt->tm_min, gmt->tm_sec);
-    */
+    fgPrintf(FG_EVENT, FG_DEBUG, 
+            "  COURSE: GMT = %d/%d/%2d %d:%02d:%02d\n", 
+            gmt->tm_mon, gmt->tm_mday, gmt->tm_year,
+            gmt->tm_hour, gmt->tm_min, gmt->tm_sec);
 
     mt.tm_mon = 2;
     mt.tm_mday = 21;
@@ -245,54 +246,52 @@ double sidereal_course(struct tm *gmt, time_t now, double lng) {
     mt.tm_sec = 0;
     mt.tm_isdst = -1; // let the system determine the proper time zone
 
-    start = mktime(&mt);
-
-    /* printf("start1 = %ld\n", start);
-       fgPrintf( FG_EVENT, FG_DEBUG, "start2 = %s", ctime(&start));
-       fgPrintf( FG_EVENT, FG_DEBUG, "start3 = %ld\n", start); */
+    if ( mktime_is_gmt ) {
+       start_gmt = mktime(&mt);
+    } else {
+       start = mktime(&mt);
+       daylight = mt.tm_isdst;
 
-#ifndef __CYGWIN32__
-    daylight = mt.tm_isdst;
-#else
-    // Yargs ... I'm just hardcoding this arbitrarily so it doesn't
-    // jump around for win32 people
-    daylight = 0;
-    fgPrintf( FG_EVENT, FG_WARN, 
-             "no daylight savings info ... being hardcoded to %d\n", daylight);
-#endif
+       fgPrintf( FG_EVENT, FG_DEBUG, "start1 = %ld\n", start);
+       fgPrintf( FG_EVENT, FG_DEBUG, "start2 = %s (tz = %d)", 
+                 ctime(&start), mt.tm_isdst);
 
-    // ftime() needs a little extra help finding the current timezone
+       // ftime() needs a little extra help finding the current timezone
 #if defined( HAVE_GETTIMEOFDAY )
-#elif defined( HAVE_GETLOCALTIME )
 #elif defined( HAVE_FTIME )
-    ftime(&current);
-    timezone = current.timezone * 60;
+       ftime(&current);
+       timezone = current.timezone * 60;
 #else
 # error Port me
 #endif
 
-    if ( daylight > 0 ) {
-       daylight = 1;
-    } else if ( daylight < 0 ) {
-       fgPrintf( FG_EVENT, FG_WARN, 
-          "OOOPS, big time problem in fg_time.c, no daylight savings info.\n");
-    }
+       if ( daylight > 0 ) {
+           daylight = 1;
+       } else if ( daylight < 0 ) {
+           fgPrintf( FG_EVENT, FG_WARN, 
+                     "OOOPS, big time problem in fg_time.c, no daylight savings info.\n");
+       }
 
-    offset = -(timezone / 3600 - daylight);
+       offset = -(timezone / 3600 - daylight);
 
-    // printf("  Raw time zone offset = %ld\n", timezone);
-    // printf("  Daylight Savings = %d\n", daylight);
+       fgPrintf( FG_EVENT, FG_DEBUG,
+                 "  Raw time zone offset = %ld\n", timezone);
+       fgPrintf( FG_EVENT, FG_DEBUG,
+                 "  Daylight Savings = %d\n", daylight);
+       fgPrintf( FG_EVENT, FG_DEBUG,
+                 "  Local hours from GMT = %ld\n", offset);
 
-    // printf("  Local hours from GMT = %ld\n", offset);
+       start_gmt = start - timezone + (daylight * 3600);
 
-    start_gmt = start - timezone + (daylight * 3600);
+       fgPrintf( FG_EVENT, FG_DEBUG, "  March 21 noon (CST) = %ld\n", start);
+    }
 
-    // printf("  March 21 noon (CST) = %ld\n", start);
-    // printf("  March 21 noon (GMT) = %ld\n", start_gmt);
+    fgPrintf( FG_EVENT, FG_DEBUG, "  March 21 noon (GMT) = %ld\n", start_gmt);
 
     diff = (now - start_gmt) / (3600.0 * 24.0);
-
-    // printf("  Time since 3/21/%2d GMT = %.2f\n", gmt->tm_year, diff);
+    
+    fgPrintf( FG_EVENT, FG_DEBUG, 
+             "  Time since 3/21/%2d GMT = %.2f\n", gmt->tm_year, diff);
 
     part = fmod(diff, 1.0);
     days = diff - part;
@@ -304,8 +303,9 @@ double sidereal_course(struct tm *gmt, time_t now, double lng) {
        lst += 24.0;
     }
 
-    /* printf("  days = %.1f  hours = %.2f  lon = %.2f  lst = %.2f\n", 
-          days, hours, lng, lst); */
+    fgPrintf( FG_EVENT, FG_DEBUG,
+             "  days = %.1f  hours = %.2f  lon = %.2f  lst = %.2f\n", 
+             days, hours, lng, lst);
 
     return(lst);
 }
@@ -375,6 +375,11 @@ void fgTimeUpdate(fgFLIGHT *f, fgTIME *t) {
 
 
 // $Log$
+// Revision 1.5  1998/04/28 21:45:34  curt
+// Fixed a horible bug that cause the time to be *WAY* off when compiling
+// with the CygWin32 compiler.  This may not yet completely address other
+// Win32 compilers, but we'll have to take them on a case by case basis.
+//
 // Revision 1.4  1998/04/28 01:22:16  curt
 // Type-ified fgTIME and fgVIEW.
 //