]> git.mxchange.org Git - flightgear.git/blobdiff - Main/options.cxx
Converted to new logstream debugging facility. This allows release
[flightgear.git] / Main / options.cxx
index 8ad3b419c233b929ee39b43c756d66865bb03459..3d126fafc85b2dad8b7edcfbaa62c6969901fff5 100644 (file)
 #include <string.h>
 #include <string>
 
-#include <Debug/fg_debug.h>
-#include <Flight/flight.h>
+#include <Debug/logstream.hxx>
+#include <Flight/flight.hxx>
 #include <Include/fg_constants.h>
-#include <Include/fg_zlib.h>
+#include <Misc/fgstream.hxx>
 
 #include "options.hxx"
 
+const int fgOPTIONS::FG_RADIUS_MIN;
+const int fgOPTIONS::FG_RADIUS_MAX;
+
 inline double
 atof( const string& str )
 {
@@ -150,6 +153,7 @@ fgOPTIONS::fgOPTIONS() :
     tile_diameter(5),
 
     // HUD options
+    units(FG_UNITS_FEET),
     tris_or_culled(0),
        
     // Time options
@@ -308,16 +312,16 @@ fgOPTIONS::parse_flight_model( const string& fm ) {
     // printf("flight model = %s\n", fm);
 
     if ( fm == "slew" ) {
-       return(FG_SLEW);
+       return FG_SLEW;
     } else if ( (fm == "larcsim") || (fm == "LaRCsim") ) {
-       return(FG_LARCSIM);
+       return FG_LARCSIM;
     } else {
-       fgPrintf( FG_GENERAL, FG_EXIT, "Unknown flight model = %s\n",
-                 fm.c_str());
+       FG_LOG( FG_GENERAL, FG_ALERT, "Unknown flight model = " << fm );
+       exit(-1);
     }
 
     // we'll never get here, but it makes the compiler happy.
-    return(-1);
+    return -1;
 }
 
 
@@ -419,6 +423,10 @@ int fgOPTIONS::parse_option( const string& arg ) {
        wireframe = false;      
     } else if ( arg == "--enable-wireframe" ) {
        wireframe = true;       
+    } else if ( arg == "--units-feet" ) {
+       units = FG_UNITS_FEET;  
+    } else if ( arg == "--units-meters" ) {
+       units = FG_UNITS_METERS;        
     } else if ( arg.find( "--tile-radius=" ) != string::npos ) {
        tile_radius = parse_tile_radius( arg.substr(14) );
        tile_diameter = tile_radius * 2 + 1;
@@ -429,12 +437,11 @@ int fgOPTIONS::parse_option( const string& arg ) {
     } else if ( arg == "--hud-culled" ) {
        tris_or_culled = 1;     
     } else {
-       fgPrintf( FG_GENERAL, FG_EXIT, "Unknown option '%s'\n",
-                 arg.c_str() );
-       return(FG_OPTIONS_ERROR);
+       FG_LOG( FG_GENERAL, FG_ALERT, "Unknown option '" << arg << "'" );
+       return FG_OPTIONS_ERROR;
     }
     
-    return(FG_OPTIONS_OK);
+    return FG_OPTIONS_OK;
 }
 
 
@@ -443,10 +450,10 @@ int fgOPTIONS::parse_command_line( int argc, char **argv ) {
     int i = 1;
     int result;
 
-    fgPrintf(FG_GENERAL, FG_INFO, "Processing command line arguments\n");
+    FG_LOG(FG_GENERAL, FG_INFO, "Processing command line arguments");
 
     while ( i < argc ) {
-       fgPrintf(FG_GENERAL, FG_DEBUG, "argv[%d] = %s\n", i, argv[i]);
+       FG_LOG( FG_GENERAL, FG_DEBUG, "argv[" << i << "] = " << argv[i] );
 
        result = parse_option(argv[i]);
        if ( (result == FG_OPTIONS_HELP) || (result == FG_OPTIONS_ERROR) ) {
@@ -462,43 +469,27 @@ int fgOPTIONS::parse_command_line( int argc, char **argv ) {
 
 // Parse config file options
 int fgOPTIONS::parse_config_file( const string& path ) {
-    char line[256];
-    fgFile f;
-    int len;
-    string fgpath = path + ".gz";
-
-    // first try "path.gz"
-    if ( (f = fgopen(fgpath.c_str(), "rb")) == NULL ) {
-       // next try "path"
-        if ( (f = fgopen(path.c_str(), "rb")) == NULL ) {
-           return(FG_OPTIONS_ERROR);
-       }
-    }
+    fg_gzifstream in( path );
+    if ( !in )
+       return(FG_OPTIONS_ERROR);
 
-    fgPrintf( FG_GENERAL, FG_INFO, "Processing config file: %s\n",
-             path.c_str() );
+    FG_LOG( FG_GENERAL, FG_INFO, "Processing config file: " << path );
 
-    while ( fggets(f, line, 250) != NULL ) {
-       // strip trailing newline if it exists
-       len = strlen(line);
-       if ( line[len-1] == '\n' ) {
-           line[len-1] = '\0';
-       }
-
-        // strip dos ^M if it exists
-       len = strlen(line);
-       if ( line[len-1] == '\r' ) {
-           line[len-1] = '\0';
-       }
+    in >> skipcomment;
+    while ( !in.eof() )
+    {
+       string line;
+       getline( in, line );
 
-       if (  parse_option( line ) == FG_OPTIONS_ERROR ) {
-           fgPrintf( FG_GENERAL, FG_EXIT, 
-                     "Config file parse error: %s '%s'\n",
-                     path.c_str(), line );
+       if ( parse_option( line ) == FG_OPTIONS_ERROR ) {
+           FG_LOG( FG_GENERAL, FG_ALERT, 
+                   "Config file parse error: " << path << " '" 
+                   << line << "'" );
+           exit(-1);
        }
+       in >> skipcomment;
     }
 
-    fgclose(f);
     return FG_OPTIONS_OK;
 }
 
@@ -565,6 +556,8 @@ void fgOPTIONS::usage ( void ) {
     printf("\n");
 
     printf("Hud Options:\n");
+    printf("\t--units-feet:  Hud displays units in feet\n");
+    printf("\t--units-meters:  Hud displays units in meters\n");
     printf("\t--hud-tris:  Hud displays number of triangles rendered\n");
     printf("\t--hud-culled:  Hud displays percentage of triangles culled\n");
        
@@ -579,6 +572,40 @@ fgOPTIONS::~fgOPTIONS( void ) {
 
 
 // $Log$
+// Revision 1.29  1998/11/06 21:18:12  curt
+// Converted to new logstream debugging facility.  This allows release
+// builds with no messages at all (and no performance impact) by using
+// the -DFG_NDEBUG flag.
+//
+// Revision 1.28  1998/11/06 14:47:03  curt
+// Changes to track Bernie's updates to fgstream.
+//
+// Revision 1.27  1998/11/02 23:04:04  curt
+// HUD units now display in feet by default with meters being a command line
+// option.
+//
+// Revision 1.26  1998/10/17 01:34:24  curt
+// C++ ifying ...
+//
+// Revision 1.25  1998/09/15 02:09:27  curt
+// Include/fg_callback.hxx
+//   Moved code inline to stop g++ 2.7 from complaining.
+//
+// Simulator/Time/event.[ch]xx
+//   Changed return type of fgEVENT::printStat().  void caused g++ 2.7 to
+//   complain bitterly.
+//
+// Minor bugfix and changes.
+//
+// Simulator/Main/GLUTmain.cxx
+//   Added missing type to idle_state definition - eliminates a warning.
+//
+// Simulator/Main/fg_init.cxx
+//   Changes to airport lookup.
+//
+// Simulator/Main/options.cxx
+//   Uses fg_gzifstream when loading config file.
+//
 // Revision 1.24  1998/09/08 15:04:33  curt
 // Optimizations by Norman Vine.
 //