X-Git-Url: https://git.mxchange.org/?a=blobdiff_plain;f=src%2FMain%2Foptions.cxx;h=a896859d1a1ce038be66f5d3e39c22cf3c6c1ebb;hb=18d1593c42c2df60d7fb44ace722ca3e8a7fd82c;hp=37ba8f6fa242fbc1cfe2e8119480201038f2a139;hpb=1b062a1cf0c98c57d50e73cbaa4b4b55a1e27769;p=flightgear.git diff --git a/src/Main/options.cxx b/src/Main/options.cxx index 37ba8f6fa..a896859d1 100644 --- a/src/Main/options.cxx +++ b/src/Main/options.cxx @@ -35,11 +35,13 @@ #include // strcmp() #include -#include STL_STRING +#include +#include #include #include +#include #include #include #include @@ -60,9 +62,11 @@ #include "viewmgr.hxx" -SG_USING_STD(string); -SG_USING_STD(sort); -SG_USING_NAMESPACE(std); +using std::string; +using std::sort; +using std::cout; +using std::cerr; +using std::endl; #ifndef VERSION #define VERSION "CVS "__DATE__ @@ -83,24 +87,13 @@ enum static double atof( const string& str ) { - -#ifdef __MWERKS__ - // -dw- if ::atof is called, then we get an infinite loop - return std::atof( str.c_str() ); -#else return ::atof( str.c_str() ); -#endif } static int atoi( const string& str ) { -#ifdef __MWERKS__ - // -dw- if ::atoi is called, then we get an infinite loop - return std::atoi( str.c_str() ); -#else return ::atoi( str.c_str() ); -#endif } /** @@ -571,12 +564,8 @@ parse_flightplan(const string& arg) while ( true ) { string line; - -#if defined( macintosh ) - getline( in, line, '\r' ); -#else getline( in, line, '\n' ); -#endif + // catch extraneous (DOS) line ending character if ( line[line.length() - 1] < 32 ) line = line.substr( 0, line.length()-1 ); @@ -597,6 +586,15 @@ fgOptLanguage( const char *arg ) return FG_OPTIONS_OK; } +static int +fgOptWeather( const char *arg ) +{ + if (arg[0]) + fgSetString("/environment/weather-scenario", arg); + fgSetBool("/environment/params/real-world-weather-fetch", !strcmp(arg, "METAR")); + return FG_OPTIONS_OK; +} + static void clearLocation () { @@ -1231,7 +1229,7 @@ where: value set to the property if has_param is false func : function called if type==OPTION_FUNC. if has_param is true, the value is passed to the function as a string, otherwise, - 0 is passed. + s_param is passed. For OPTION_DOUBLE and OPTION_INT, the parameter value is converted into a double or an integer and set to the property. @@ -1242,12 +1240,12 @@ where: enum OptionType { OPTION_BOOL, OPTION_STRING, OPTION_DOUBLE, OPTION_INT, OPTION_CHANNEL, OPTION_FUNC }; struct OptionDesc { - char *option; + const char *option; bool has_param; enum OptionType type; - char *property; + const char *property; bool b_param; - char *s_param; + const char *s_param; int (*func)( const char * ); } fgOptionArray[] = { @@ -1262,8 +1260,8 @@ struct OptionDesc { {"enable-mouse-pointer", false, OPTION_STRING, "/sim/startup/mouse-pointer", false, "enabled", 0 }, {"disable-random-objects", false, OPTION_BOOL, "/sim/rendering/random-objects", false, "", 0 }, {"enable-random-objects", false, OPTION_BOOL, "/sim/rendering/random-objects", true, "", 0 }, - {"disable-real-weather-fetch", false, OPTION_BOOL, "/environment/params/real-world-weather-fetch", false, "", 0 }, - {"enable-real-weather-fetch", false, OPTION_BOOL, "/environment/params/real-world-weather-fetch", true, "", 0 }, + {"disable-real-weather-fetch", false, OPTION_FUNC, "", false, "", fgOptWeather }, + {"enable-real-weather-fetch", false, OPTION_FUNC, "", false, "METAR", fgOptWeather }, {"disable-ai-models", false, OPTION_BOOL, "/sim/ai/enabled", false, "", 0 }, {"enable-ai-models", false, OPTION_BOOL, "/sim/ai/enabled", true, "", 0 }, {"disable-freeze", false, OPTION_BOOL, "/sim/freeze/master", false, "", 0 }, @@ -1559,7 +1557,7 @@ parse_option (const string& arg) if ( pt->has_param && !arg_value.empty() ) { return pt->func( arg_value.c_str() ); } else if ( !pt->has_param && arg_value.empty() ) { - return pt->func( 0 ); + return pt->func( pt->s_param ); } else if ( pt->has_param ) { SG_LOG( SG_GENERAL, SG_ALERT, "Option '" << arg << "' needs a parameter" ); return FG_OPTIONS_ERROR; @@ -1646,20 +1644,9 @@ fgParseOptions (const string& path) { SG_LOG( SG_GENERAL, SG_INFO, "Processing config file: " << path ); in >> skipcomment; -#ifndef __MWERKS__ while ( ! in.eof() ) { -#else - char c = '\0'; - while ( in.get(c) && c != '\0' ) { - in.putback(c); -#endif string line; - -#if defined( macintosh ) - getline( in, line, '\r' ); -#else getline( in, line, '\n' ); -#endif // catch extraneous (DOS) line ending character int i;