diff options
| author | trialuser02 <trialuser02@90c681e8-e032-0410-971d-27865f9a5e38> | 2016-10-23 10:39:40 +0000 |
|---|---|---|
| committer | trialuser02 <trialuser02@90c681e8-e032-0410-971d-27865f9a5e38> | 2016-10-23 10:39:40 +0000 |
| commit | 25d8f90950ad1dc3df56a4187bcac57e6203f1b4 (patch) | |
| tree | dcaa085379c7eb32f25512d12c1bd3c374c76fb0 /src/app | |
| parent | 7f653d4041103f41cca0a5b3ce5539e3f2cacb83 (diff) | |
| download | qmmp-25d8f90950ad1dc3df56a4187bcac57e6203f1b4.tar.gz qmmp-25d8f90950ad1dc3df56a4187bcac57e6203f1b4.tar.bz2 qmmp-25d8f90950ad1dc3df56a4187bcac57e6203f1b4.zip | |
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
Diffstat (limited to 'src/app')
| -rw-r--r-- | src/app/main.cpp | 4 | ||||
| -rw-r--r-- | src/app/qmmpstarter.cpp | 47 | ||||
| -rw-r--r-- | src/app/qmmpstarter.h | 5 |
3 files changed, 45 insertions, 11 deletions
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 <cstdlib> #include <iostream> #include <unistd.h> +#include <stdlib.h> #include <sys/types.h> #include <string.h> #include <qmmp/qmmp.h> @@ -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 |
