Diffstat (limited to 'libopie2/opiecore/oapplication.cpp') (more/less context) (show whitespace changes)
-rw-r--r-- | libopie2/opiecore/oapplication.cpp | 12 |
1 files changed, 12 insertions, 0 deletions
diff --git a/libopie2/opiecore/oapplication.cpp b/libopie2/opiecore/oapplication.cpp index 7a6c174..06d8ba2 100644 --- a/libopie2/opiecore/oapplication.cpp +++ b/libopie2/opiecore/oapplication.cpp @@ -28,12 +28,15 @@ Boston, MA 02111-1307, USA. */ #include <opie2/oapplication.h> #include <opie2/oconfig.h> +#include <signal.h> +#include <stdio.h> + OApplication* OApplication::_instance = 0; /**************************************************************************************************/ /* OApplicationPrivate /**************************************************************************************************/ @@ -82,12 +85,21 @@ OConfig* OApplication::config() void OApplication::init() { d = new OApplicationPrivate(); if ( !OApplication::_instance ) { OApplication::_instance = this; + + /* register SIGSEGV handler to give programs an option + * to exit gracefully, e.g. save or close devices or files. + struct sigaction sa; + sa.sa_handler = ( void (*)(int) ) &segv_handler; + sa.sa_flags = SA_SIGINFO | SA_RESTART; + sigemptyset(&sa.sa_mask); + sigaction(SIGSEGV, &sa, NULL); + */ } else { qFatal( "OApplication: Can't create more than one OApplication object. Aborting." ); } } |