Main: catch exceptions in all of main()

This commit is contained in:
Max Kellermann 2016-10-28 21:20:35 +02:00
parent 0c464b24ad
commit 16d1c9f5d6

View File

@ -389,7 +389,7 @@ static int mpd_main_after_fork(struct options);
static inline static inline
#endif #endif
int mpd_main(int argc, char *argv[]) int mpd_main(int argc, char *argv[])
{ try {
struct options options; struct options options;
Error error; Error error;
@ -414,28 +414,23 @@ int mpd_main(int argc, char *argv[])
io_thread_init(); io_thread_init();
config_global_init(); config_global_init();
try {
#ifdef ANDROID #ifdef ANDROID
(void)argc; (void)argc;
(void)argv; (void)argv;
const auto sdcard = Environment::getExternalStorageDirectory(); const auto sdcard = Environment::getExternalStorageDirectory();
if (!sdcard.IsNull()) { if (!sdcard.IsNull()) {
const auto config_path = const auto config_path =
AllocatedPath::Build(sdcard, "mpd.conf"); AllocatedPath::Build(sdcard, "mpd.conf");
if (FileExists(config_path)) if (FileExists(config_path))
ReadConfigFile(config_path); ReadConfigFile(config_path);
} }
#else #else
if (!parse_cmdline(argc, argv, &options, error)) { if (!parse_cmdline(argc, argv, &options, error)) {
LogError(error); LogError(error);
return EXIT_FAILURE;
}
#endif
} catch (const std::exception &e) {
LogError(e);
return EXIT_FAILURE; return EXIT_FAILURE;
} }
#endif
#ifdef ENABLE_DAEMON #ifdef ENABLE_DAEMON
if (!glue_daemonize_init(&options, error)) { if (!glue_daemonize_init(&options, error)) {
@ -496,6 +491,9 @@ int mpd_main(int argc, char *argv[])
#else #else
return mpd_main_after_fork(options); return mpd_main_after_fork(options);
#endif #endif
} catch (const std::exception &e) {
LogError(e);
return EXIT_FAILURE;
} }
static int mpd_main_after_fork(struct options options) static int mpd_main_after_fork(struct options options)