[prev in list] [next in list] [prev in thread] [next in thread] 

List:       kde-commits
Subject:    KDE/kdebase/runtime/nepomuk/server
From:       Sebastian Trueg <sebastian () trueg ! de>
Date:       2008-04-07 7:23:46
Message-ID: 1207553026.182421.2857.nullmailer () svn ! kde ! org
[Download RAW message or body]

SVN commit 794364 by trueg:

Nicer signal handler

 M  +24 -6     main.cpp  


--- trunk/KDE/kdebase/runtime/nepomuk/server/main.cpp #794363:794364
@@ -31,11 +31,30 @@
 
 #include <signal.h>
 
+namespace {
+#ifndef Q_OS_WIN
+    void signalHandler( int signal )
+    {
+        switch( signal ) {
+        case SIGHUP:
+        case SIGQUIT:
+        case SIGINT:
+            if ( qApp ) {
+                qApp->quit();
+            }
+        }
+    }
+#endif
 
-static void sighandler( int /*sig*/ )
-{
-    if ( qApp ) {
-        qApp->quit();
+    void installSignalHandler() {
+#ifndef Q_OS_WIN
+        struct sigaction sa;
+        ::memset( &sa, 0, sizeof( sa ) );
+        sa.sa_handler = signalHandler;
+        sigaction( SIGHUP, &sa, 0 );
+        sigaction( SIGINT, &sa, 0 );
+        sigaction( SIGQUIT, &sa, 0 );
+#endif
     }
 }
 
@@ -85,8 +104,7 @@
         return 0;
     }
 
-    signal( SIGTERM, sighandler );
-    signal( SIGHUP, sighandler );
+    installSignalHandler();
 
     Nepomuk::ServerApplication app;
     app.setQuitOnLastWindowClosed( false );
[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic