From cf318f1cc54dbff74677ace25eb8c991b19414c0 Mon Sep 17 00:00:00 2001 From: Florent Rougon Date: Mon, 10 Apr 2017 02:16:08 +0200 Subject: [PATCH] Better setting of the process exit status for fgfs and fgviewer Some pieces of code such as fgMainInit() and, by cascading effect, fgInitHome(), were careful to return a meaningful value indicating success or error, however the main() function in src/Main/bootstrap.cxx ignored it royally so far. main() now returns: - EXIT_FAILURE if fgMainInit() or fgviewerMain() throws an exception; - whatever said function returns otherwise. --- src/Main/bootstrap.cxx | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/Main/bootstrap.cxx b/src/Main/bootstrap.cxx index 63a2b58cc..7acb63de1 100644 --- a/src/Main/bootstrap.cxx +++ b/src/Main/bootstrap.cxx @@ -307,6 +307,7 @@ int main ( int argc, char **argv ) setlocale(LC_COLLATE, "C"); bool fgviewer = flightgear::Options::checkForArg(argc, argv, "fgviewer"); + int exitStatus = EXIT_FAILURE; try { // http://code.google.com/p/flightgear-bugs/issues/detail?id=1231 // ensure sglog is inited before atexit() is registered, so logging @@ -323,10 +324,11 @@ int main ( int argc, char **argv ) #endif std::set_terminate(fg_terminate); atexit(fgExitCleanup); - if (fgviewer) - fgviewerMain(argc, argv); - else - fgMainInit(argc, argv); + if (fgviewer) { + exitStatus = fgviewerMain(argc, argv); + } else { + exitStatus = fgMainInit(argc, argv); + } } catch (const sg_throwable &t) { std::string info; @@ -334,7 +336,6 @@ int main ( int argc, char **argv ) info = std::string("received from ") + t.getOrigin(); flightgear::fatalMessageBoxWithoutExit( "Fatal exception", t.getFormattedMessage(), info); - } catch (const std::exception &e ) { flightgear::fatalMessageBoxWithoutExit("Fatal exception", e.what()); } catch (const std::string &s) { @@ -352,7 +353,7 @@ int main ( int argc, char **argv ) crUninstall(); #endif - return 0; + return exitStatus; } // do some clean up on exit. Specifically we want to delete the sound-manager,