From: Christian P. <cp...@us...> - 2005-01-18 17:52:39
|
Update of /cvsroot/pclasses/pclasses2/src/App In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv31834/src/App Modified Files: SimpleApp.cpp Log Message: Export SimpleApp. Added SimpleApp::finish(). Re-worked signal handling. Index: SimpleApp.cpp =================================================================== RCS file: /cvsroot/pclasses/pclasses2/src/App/SimpleApp.cpp,v retrieving revision 1.1 retrieving revision 1.2 diff -u -d -r1.1 -r1.2 --- SimpleApp.cpp 15 Jan 2005 23:59:53 -0000 1.1 +++ SimpleApp.cpp 18 Jan 2005 17:52:24 -0000 1.2 @@ -55,6 +55,7 @@ { ret = main(); cleanup(); + finish(); } return ret; @@ -65,16 +66,19 @@ #ifdef WIN32 { //SetConsoleCtrlHandler((PHANDLER_ROUTINE)SIGTERM_handler, TRUE); - signal(SIGTERM, &signal_handler); - signal(SIGINT, &signal_handler); - } - #else - { - signal(SIGTERM, &signal_handler); - signal(SIGQUIT, &signal_handler); - signal(SIGINT, &signal_handler); } #endif + + #ifdef SIGTERM + ::signal(SIGTERM, &signalHandler); + #endif + #ifdef SIGQUIT + ::signal(SIGQUIT, &signalHandler); + #endif + #ifdef SIGINT + ::signal(SIGINT, &signalHandler); + #endif + return 0; } @@ -94,29 +98,45 @@ { } -void SimpleApp::terminate(int signal) +void SimpleApp::finish() { - stop(1); } -PCLASSES_RETSIGTYPE SimpleApp::signal_handler(int sig) +PCLASSES_RETSIGTYPE SimpleApp::signalHandler(int sig) { #ifdef WIN32 { - _theApp->terminate(sig); + _theApp->signal(sig); } #else { - if(sig == SIGTERM || sig == SIGQUIT || sig == SIGINT) - { - signal(sig, SIG_IGN); - _theApp->terminate(sig); - signal(sig, &signal_handler); - } + ::signal(sig, SIG_IGN); + _theApp->signal(sig); + ::signal(sig, &signalHandler); } #endif } +void SimpleApp::signal(int sig) +{ + switch(sig) + { + #ifdef SIGTERM + case SIGTERM: + #endif + #ifdef SIGQUIT + case SIGQUIT: + #endif + #ifdef SIGINT + case SIGINT: + stop(1); + break; + #endif + default: + break; + } +} + SimpleApp* theApp() throw() { return SimpleApp::_theApp; |