From 25d8f90950ad1dc3df56a4187bcac57e6203f1b4 Mon Sep 17 00:00:00 2001 From: trialuser02 Date: Sun, 23 Oct 2016 10:39:40 +0000 Subject: do not use exit call directly git-svn-id: http://svn.code.sf.net/p/qmmp-dev/code/trunk/qmmp@6801 90c681e8-e032-0410-971d-27865f9a5e38 --- src/app/main.cpp | 4 +++- src/app/qmmpstarter.cpp | 47 +++++++++++++++++++++++++++++++++++++---------- src/app/qmmpstarter.h | 5 +++++ 3 files changed, 45 insertions(+), 11 deletions(-) (limited to 'src/app') diff --git a/src/app/main.cpp b/src/app/main.cpp index 21ce86a60..5d30c75a8 100644 --- a/src/app/main.cpp +++ b/src/app/main.cpp @@ -63,7 +63,9 @@ int main(int argc, char *argv[]) a.installTranslator(&qt_translator); QMMPStarter starter; - Q_UNUSED(starter) + + if(starter.isFinished()) + return starter.exitCode(); a.setQuitOnLastWindowClosed(false); return a.exec(); diff --git a/src/app/qmmpstarter.cpp b/src/app/qmmpstarter.cpp index ddbeabd56..4b5fcadaf 100644 --- a/src/app/qmmpstarter.cpp +++ b/src/app/qmmpstarter.cpp @@ -27,6 +27,7 @@ #include #include #include +#include #include #include #include @@ -58,6 +59,8 @@ QMMPStarter::QMMPStarter() : QObject() m_player = 0; m_core = 0; m_ui = 0; + m_finished = false; + m_exit_code = EXIT_SUCCESS; #ifdef Q_OS_WIN m_named_mutex = 0; #endif @@ -70,12 +73,14 @@ QMMPStarter::QMMPStarter() : QObject() if(commands.keys().contains("--help")) { printUsage(); - exit(0); + m_finished = true; + return; } if(commands.keys().contains("--version")) { printVersion(); - exit(0); + m_finished = true; + return; } if(!commands.isEmpty()) @@ -86,7 +91,9 @@ QMMPStarter::QMMPStarter() : QObject() arg != "--no-start") { cout << qPrintable(tr("Unknown command")) << endl; - exit(0); + m_exit_code = EXIT_FAILURE; + m_finished = true; + return; } } } @@ -110,7 +117,9 @@ QMMPStarter::QMMPStarter() : QObject() if(!m_socket->isValid()) //invalid connection { qWarning("QMMPStarter: unable to connect to server"); - exit(0); + m_exit_code = EXIT_FAILURE; + m_finished = true; + return; } writeCommand(); } @@ -128,25 +137,32 @@ QMMPStarter::QMMPStarter() : QObject() if(!QLocalServer::removeServer(UDS_PATH)) { qWarning("QMMPStarter: unable to remove invalid socket file"); - exit(1); + m_exit_code = EXIT_FAILURE; + m_finished = true; return; } qWarning("QMMPStarter: removed invalid socket file"); if(noStart) - exit(0); + { + m_exit_code = EXIT_FAILURE; + m_finished = true; + return; + } else if(m_server->listen (UDS_PATH)) startPlayer(); else { qWarning("QMMPStarter: server error: %s", qPrintable(m_server->errorString())); - exit(1); + m_exit_code = EXIT_FAILURE; + m_finished = true; + return; } } else writeCommand(); } else - exit(0); + m_finished = true; #endif } @@ -160,6 +176,16 @@ QMMPStarter::~QMMPStarter() #endif } +bool QMMPStarter::isFinished() const +{ + return m_finished; +} + +int QMMPStarter::exitCode() const +{ + return m_exit_code; +} + void QMMPStarter::startPlayer() { connect(m_server, SIGNAL(newConnection()), SLOT(readCommand())); @@ -196,7 +222,8 @@ void QMMPStarter::startPlayer() else { qWarning("QMMPStarter: no user interface found"); - exit(1); + m_finished = true; + m_exit_code = EXIT_FAILURE; return; } connect(qApp, SIGNAL(aboutToQuit()), SLOT(savePosition())); @@ -245,7 +272,7 @@ void QMMPStarter::writeCommand() printUsage(); #endif - exit(0); + m_finished = true; } void QMMPStarter::readCommand() diff --git a/src/app/qmmpstarter.h b/src/app/qmmpstarter.h index cd2b09445..60f80d9ba 100644 --- a/src/app/qmmpstarter.h +++ b/src/app/qmmpstarter.h @@ -47,6 +47,9 @@ public: QMMPStarter(); ~QMMPStarter(); + bool isFinished() const; + int exitCode() const; + private slots: /*! @@ -76,6 +79,8 @@ private: BuiltinCommandLineOption* m_option_manager; QLocalServer *m_server; QLocalSocket *m_socket; + bool m_finished; + bool m_exit_code; #ifdef Q_OS_WIN HANDLE m_named_mutex; #endif -- cgit v1.2.3-13-gbd6f