X-Git-Url: http://git.code-monkey.de/?a=blobdiff_plain;ds=sidebyside;f=signalhandler.cpp;h=398114d5b96f610954f5c86f8d6b833407a9812b;hb=09f55d9665efb3b17ba7de4bae47be6989e884fe;hp=a3ef6b82e8755c7d579da5e46f2f199395138acf;hpb=7a255aa9c51ebb41bb629f6d327560dcfa18433f;p=pulseview.git
diff --git a/signalhandler.cpp b/signalhandler.cpp
index a3ef6b8..398114d 100644
--- a/signalhandler.cpp
+++ b/signalhandler.cpp
@@ -1,94 +1,92 @@
/*
-
-Copyright 2013 Adam Reichold
-
-This file is part of qpdfview.
-
-qpdfview is free software: you can redistribute it and/or modify
-it under the terms of the GNU General Public License as published by
-the Free Software Foundation, either version 2 of the License, or
-(at your option) any later version.
-
-qpdfview is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-GNU General Public License for more details.
-
-You should have received a copy of the GNU General Public License
-along with qpdfview. If not, see .
-
-*/
-
-#include "signalhandler.h"
-
+ * This file is part of the PulseView project.
+ *
+ * Copyright (C) 2013 Adam Reichold
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, see .
+ */
+
+#include "signalhandler.hpp"
+
+#include
#include
+#include
#include
#include
+#include
#include
-int SignalHandler::s_sockets[2];
+int SignalHandler::sockets_[2];
-bool SignalHandler::prepareSignals()
+bool SignalHandler::prepare_signals()
{
- if(socketpair(AF_UNIX, SOCK_STREAM, 0, s_sockets) != 0)
- {
- return false;
- }
-
- struct sigaction sigAction;
-
- sigAction.sa_handler = SignalHandler::handleSignals;
- sigemptyset(&sigAction.sa_mask);
- sigAction.sa_flags = SA_RESTART;
-
- if(sigaction(SIGINT, &sigAction, 0) != 0)
- {
- close(s_sockets[0]);
- close(s_sockets[1]);
+ if (socketpair(AF_UNIX, SOCK_STREAM, 0, sockets_) != 0)
+ return false;
- return false;
- }
+ struct sigaction sig_action;
- if(sigaction(SIGTERM, &sigAction, 0) != 0)
- {
- close(s_sockets[0]);
- close(s_sockets[1]);
+ sig_action.sa_handler = SignalHandler::handle_signals;
+ sigemptyset(&sig_action.sa_mask);
+ sig_action.sa_flags = SA_RESTART;
- return false;
- }
+ if (sigaction(SIGINT, &sig_action, nullptr) != 0 ||
+ sigaction(SIGTERM, &sig_action, nullptr) != 0) {
+ close(sockets_[0]);
+ close(sockets_[1]);
+ return false;
+ }
- return true;
+ return true;
}
SignalHandler::SignalHandler(QObject* parent) : QObject(parent),
- m_socketNotifier(0)
+ socket_notifier_(nullptr)
{
- m_socketNotifier = new QSocketNotifier(s_sockets[1], QSocketNotifier::Read, this);
- connect(m_socketNotifier, SIGNAL(activated(int)), SLOT(on_socketNotifier_activated()));
+ socket_notifier_ = new QSocketNotifier(sockets_[1],
+ QSocketNotifier::Read, this);
+ connect(socket_notifier_, SIGNAL(activated(int)),
+ SLOT(on_socket_notifier_activated()));
}
-void SignalHandler::on_socketNotifier_activated()
+void SignalHandler::on_socket_notifier_activated()
{
- m_socketNotifier->setEnabled(false);
-
- int sigNumber;
- read(s_sockets[1], &sigNumber, sizeof(int));
-
- switch(sigNumber)
- {
- case SIGINT:
- emit sigIntReceived();
- break;
- case SIGTERM:
- emit sigTermReceived();
- break;
- }
-
- m_socketNotifier->setEnabled(true);
+ socket_notifier_->setEnabled(false);
+
+ int sig_number;
+ if (read(sockets_[1], &sig_number, sizeof(int)) != sizeof(int)) {
+ qDebug() << "Failed to catch signal";
+ abort();
+ }
+
+ switch(sig_number)
+ {
+ case SIGINT:
+ Q_EMIT int_received();
+ break;
+ case SIGTERM:
+ Q_EMIT term_received();
+ break;
+ }
+
+ socket_notifier_->setEnabled(true);
}
-void SignalHandler::handleSignals(int sigNumber)
+void SignalHandler::handle_signals(int sig_number)
{
- write(s_sockets[0], &sigNumber, sizeof(int));
+ if (write(sockets_[0], &sig_number, sizeof(int)) != sizeof(int)) {
+ // Failed to handle signal
+ abort();
+ }
}