Fix the --version option
1) Paths and the FG_SCENERY paths list are now printed like: FG_ROOT=/home/flo/flightgear/src/fgdata instead of: FG_ROOT=Path "/home/flo/flightgear/src/fgdata" Moreover, FG_SCENERY is now correctly printed (without 'Path ""' wrapping, without Terrain, Objects and markers instead of the actual scenery paths) regardless of the position of --version relatively to --fg-scenery, --terrasync-dir, etc. Of course, the values given to these options do influence the output of --version. Simplify printing of FG_SCENERY via SGPath::join() and use the correct, OS-dependent separator between paths, SGPath::pathListSep. Write the --version output to stdout, as already done for --help; then it can be easily piped to $PAGER and doesn't get mixed with the output of SG_LOG (which is on stderr). This is of course backward incompatible for programs reading the stderr output of 'fgfs --version', but has been agreed upon on FlightGear-devel (cf. <https://sourceforge.net/p/flightgear/mailman/message/35461619/>). 2) Don't write explicit values in the OptionResult enum: they don't matter, but giving them is error-prone in case one does a copy-paste to add a new member to the enum and forgets to change the value.
This commit is contained in:
parent
c7c66d7a3b
commit
bbf5ac6406
2 changed files with 32 additions and 35 deletions
|
@ -1339,31 +1339,6 @@ fgOptParking( const char *arg )
|
|||
return FG_OPTIONS_OK;
|
||||
}
|
||||
|
||||
static int
|
||||
fgOptVersion( const char *arg )
|
||||
{
|
||||
cerr << "FlightGear version: " << FLIGHTGEAR_VERSION << endl;
|
||||
cerr << "Revision: " << REVISION << endl;
|
||||
cerr << "Build-Id: " << HUDSON_BUILD_ID << endl;
|
||||
cerr << "FG_ROOT=" << globals->get_fg_root() << endl;
|
||||
cerr << "FG_HOME=" << globals->get_fg_home() << endl;
|
||||
cerr << "FG_SCENERY=";
|
||||
|
||||
int didsome = 0;
|
||||
PathList scn = globals->get_fg_scenery();
|
||||
for (PathList::const_iterator it = scn.begin(); it != scn.end(); it++)
|
||||
{
|
||||
if (didsome) cerr << ":";
|
||||
didsome++;
|
||||
cerr << *it;
|
||||
}
|
||||
cerr << endl;
|
||||
cerr << "SimGear version: " << SG_STRINGIZE(SIMGEAR_VERSION) << endl;
|
||||
cerr << "OSG version: " << osgGetVersion() << endl;
|
||||
cerr << "PLIB version: " << PLIB_VERSION << endl;
|
||||
return FG_OPTIONS_EXIT;
|
||||
}
|
||||
|
||||
static int
|
||||
fgOptCallSign(const char * arg)
|
||||
{
|
||||
|
@ -1733,7 +1708,7 @@ struct OptionDesc {
|
|||
{"livery", true, OPTION_FUNC, "", false, "", fgOptLivery },
|
||||
{"ai-scenario", true, OPTION_FUNC | OPTION_MULTI, "", false, "", fgOptScenario },
|
||||
{"parking-id", true, OPTION_FUNC, "", false, "", fgOptParking },
|
||||
{"version", false, OPTION_FUNC, "", false, "", fgOptVersion },
|
||||
{"version", false, OPTION_IGNORE, "", false, "", 0 },
|
||||
{"enable-fpe", false, OPTION_IGNORE, "", false, "", 0},
|
||||
{"fgviewer", false, OPTION_IGNORE, "", false, "", 0},
|
||||
{"no-default-config", false, OPTION_IGNORE, "", false, "", 0},
|
||||
|
@ -2331,7 +2306,7 @@ OptionResult Options::processOptions()
|
|||
// out quickly, but rely on aircraft / root settings
|
||||
if (p->showHelp) {
|
||||
showUsage();
|
||||
return FG_OPTIONS_EXIT;
|
||||
return FG_OPTIONS_EXIT;
|
||||
}
|
||||
|
||||
// processing order is complicated. We must process groups LIFO, but the
|
||||
|
@ -2430,6 +2405,11 @@ OptionResult Options::processOptions()
|
|||
globals->append_fg_scenery(root);
|
||||
}
|
||||
|
||||
if (isOptionSet("version")) {
|
||||
showVersion();
|
||||
return FG_OPTIONS_EXIT;
|
||||
}
|
||||
|
||||
return FG_OPTIONS_OK;
|
||||
}
|
||||
|
||||
|
@ -2565,6 +2545,22 @@ void Options::showUsage() const
|
|||
#endif
|
||||
}
|
||||
|
||||
void Options::showVersion() const
|
||||
{
|
||||
cout << "FlightGear version: " << FLIGHTGEAR_VERSION << endl;
|
||||
cout << "Revision: " << REVISION << endl;
|
||||
cout << "Build-Id: " << HUDSON_BUILD_ID << endl;
|
||||
cout << "FG_ROOT=" << globals->get_fg_root().utf8Str() << endl;
|
||||
cout << "FG_HOME=" << globals->get_fg_home().utf8Str() << endl;
|
||||
cout << "FG_SCENERY=";
|
||||
|
||||
PathList scn = globals->get_unmangled_fg_scenery();
|
||||
cout << SGPath::join(scn, &SGPath::pathListSep) << endl;
|
||||
cout << "SimGear version: " << SG_STRINGIZE(SIMGEAR_VERSION) << endl;
|
||||
cout << "OSG version: " << osgGetVersion() << endl;
|
||||
cout << "PLIB version: " << PLIB_VERSION << endl;
|
||||
}
|
||||
|
||||
#if defined(__CYGWIN__)
|
||||
SGPath Options::platformDefaultRoot() const
|
||||
{
|
||||
|
|
|
@ -50,13 +50,13 @@ namespace flightgear
|
|||
enum OptionResult
|
||||
{
|
||||
FG_OPTIONS_OK = 0,
|
||||
FG_OPTIONS_HELP = 1,
|
||||
FG_OPTIONS_ERROR = 2,
|
||||
FG_OPTIONS_EXIT = 3,
|
||||
FG_OPTIONS_VERBOSE_HELP = 4,
|
||||
FG_OPTIONS_SHOW_AIRCRAFT = 5,
|
||||
FG_OPTIONS_SHOW_SOUND_DEVICES = 6,
|
||||
FG_OPTIONS_NO_DEFAULT_CONFIG = 7
|
||||
FG_OPTIONS_HELP,
|
||||
FG_OPTIONS_ERROR,
|
||||
FG_OPTIONS_EXIT,
|
||||
FG_OPTIONS_VERBOSE_HELP,
|
||||
FG_OPTIONS_SHOW_AIRCRAFT,
|
||||
FG_OPTIONS_SHOW_SOUND_DEVICES,
|
||||
FG_OPTIONS_NO_DEFAULT_CONFIG
|
||||
};
|
||||
|
||||
class Options
|
||||
|
@ -151,7 +151,8 @@ public:
|
|||
SGPath platformDefaultRoot() const;
|
||||
private:
|
||||
void showUsage() const;
|
||||
|
||||
void showVersion() const;
|
||||
|
||||
int parseOption(const std::string& s);
|
||||
|
||||
void processArgResult(int result);
|
||||
|
|
Loading…
Add table
Reference in a new issue