aboutsummaryrefslogtreecommitdiff
path: root/src/app
diff options
context:
space:
mode:
authortrialuser02 <trialuser02@90c681e8-e032-0410-971d-27865f9a5e38>2016-10-23 10:39:40 +0000
committertrialuser02 <trialuser02@90c681e8-e032-0410-971d-27865f9a5e38>2016-10-23 10:39:40 +0000
commit25d8f90950ad1dc3df56a4187bcac57e6203f1b4 (patch)
treedcaa085379c7eb32f25512d12c1bd3c374c76fb0 /src/app
parent7f653d4041103f41cca0a5b3ce5539e3f2cacb83 (diff)
downloadqmmp-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.cpp4
-rw-r--r--src/app/qmmpstarter.cpp47
-rw-r--r--src/app/qmmpstarter.h5
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