]> git.mxchange.org Git - simgear.git/commitdiff
Patches from Norman Vine <nhv@cape.com> to catch and properly report "errno"
authorcurt <curt>
Tue, 6 Mar 2001 16:33:39 +0000 (16:33 +0000)
committercurt <curt>
Tue, 6 Mar 2001 16:33:39 +0000 (16:33 +0000)
conditions.

simgear/misc/fgstream.cxx
simgear/misc/zfstream.cxx
simgear/timing/lowleveltime.cxx
simgear/timing/sg_time.cxx

index 3f14dbb2b6ff57450750ec5b3362e11db84d67cc..24001681f9003526dd9a1a21bb0d235b7a5e2ff8 100644 (file)
 
 #include <ctype.h> // isspace()
 
+#ifdef FG_HAVE_STD_INCLUDES
+# include <cerrno>
+#else
+# include <errno.h>
+#endif
+
 #include "fgstream.hxx"
 
 fg_gzifstream::fg_gzifstream()
index 63d114774c5f8e030e09eb3f2fab8e160c264fc3..7dcf701f131002cc8bc1114df8dba5d6f7a475d3 100644 (file)
 //
 // $Id$
 
+#include <simgear/compiler.h>
+
+#ifdef FG_HAVE_STD_INCLUDES
+# include <cerrno>
+#else
+# include <errno.h>
+#endif
 #include <memory.h>
+#include <stdio.h>
+
 #include "zfstream.hxx"
 
 //
@@ -106,8 +115,11 @@ gzfilebuf::open( const char *name, ios_openmode io_mode )
 
     char char_mode[10];
     cvt_iomode( char_mode, io_mode );
-    if ( (file = gzopen(name, char_mode)) == NULL )
+    if ( (file = gzopen(name, char_mode)) == NULL ) {
+       perror( "gzfilebuf::open(): " );
+       errno = 0;
        return NULL;
+    }
 
     own_file_descriptor = true;
 
@@ -122,8 +134,11 @@ gzfilebuf::attach( int file_descriptor, ios_openmode io_mode )
 
     char char_mode[10];
     cvt_iomode( char_mode, io_mode );
-    if ( (file = gzdopen(file_descriptor, char_mode)) == NULL )
+    if ( (file = gzdopen(file_descriptor, char_mode)) == NULL ) {
+       perror( "gzfilebuf::attach(): " );
+       errno = 0;
        return NULL;
+    }
 
     own_file_descriptor = false;
 
index ec3cf98844e16c46227a72054376683f497cbf81..84e72c834c10ece73696bfbfea07d7987fbde322 100644 (file)
@@ -862,8 +862,12 @@ void fgtzfile_read (const char *file)
 //     }
 
   f = fopen (file, "rb");
-  if (f == NULL)
-    return;
+
+  if (f == NULL) {
+      perror( "fgtzfile_read(): " );
+      errno = 0;
+      return;
+  }
 
   if (fread ((void *) &tzhead, sizeof (tzhead), 1, f) != 1)
     goto lose;
index 3ee4bc9dc3f48a37420f6bcf30a42cfb0608135c..6ba31e9a9f704d91e0a2b8b46c23a601b553b973 100644 (file)
@@ -407,14 +407,23 @@ time_t sgTimeGetGMT(int year, int month, int day, int hour, int min, int sec)
 #  define MK_TIME_IS_GMT 1
 #endif
 
-#if defined( HAVE_TIMEGM ) 
+#if defined( HAVE_TIMEGM )
     return ( timegm(&mt) );
 #elif defined( MK_TIME_IS_GMT )
-    return ( mktime(&mt) );
+    time_t ret = mktime(&mt);
+    // This is necessary as some mktime() calls may
+    // try to access the system timezone files
+    // if this open fails errno is set to 2
+    // CYGWIN for one does this
+    if ( errno ) {
+       perror( "sgTimeGetGMT(): " );
+       errno = 0;
+    }
+    return ret;
 #else // ! defined ( MK_TIME_IS_GMT )
 
     // timezone seems to work as a proper offset for Linux & Solaris
-#   if defined( __linux__ ) || defined( __sun__ ) 
+#   if defined( __linux__ ) || defined( __sun__ )
 #       define TIMEZONE_OFFSET_WORKS 1
 #   endif
 
@@ -429,7 +438,7 @@ time_t sgTimeGetGMT(int year, int month, int day, int hour, int min, int sec)
     timezone = fix_up_timezone( timezone );
 
 #  if defined( TIMEZONE_OFFSET_WORKS )
-    FG_LOG( FG_EVENT, FG_DEBUG, 
+    FG_LOG( FG_EVENT, FG_DEBUG,
            "start = " << start << ", timezone = " << timezone );
     return( start - timezone );
 #  else // ! defined( TIMEZONE_OFFSET_WORKS )