@ -79,10 +79,15 @@ Q_IMPORT_PLUGIN(qico)
@@ -79,10 +79,15 @@ Q_IMPORT_PLUGIN(qico)
// Signal handlers
# if defined(Q_OS_UNIX) || defined(STACKTRACE_WIN)
void sigintHandler ( int ) ;
void sigtermHandler ( int ) ;
void sigsegvHandler ( int ) ;
void sigabrtHandler ( int ) ;
void sigNormalHandler ( int signum ) ;
void sigAbnormalHandler ( int signum ) ;
// sys_signame[] is only defined in BSD
const char * sysSigName [ ] = {
" " , " SIGHUP " , " SIGINT " , " SIGQUIT " , " SIGILL " , " SIGTRAP " , " SIGABRT " , " SIGBUS " , " SIGFPE " , " SIGKILL " ,
" SIGUSR1 " , " SIGSEGV " , " SIGUSR2 " , " SIGPIPE " , " SIGALRM " , " SIGTERM " , " SIGSTKFLT " , " SIGCHLD " , " SIGCONT " , " SIGSTOP " ,
" SIGTSTP " , " SIGTTIN " , " SIGTTOU " , " SIGURG " , " SIGXCPU " , " SIGXFSZ " , " SIGVTALRM " , " SIGPROF " , " SIGWINCH " , " SIGIO " ,
" SIGPWR " , " SIGUNUSED "
} ;
# endif
struct QBtCommandLineParameters
@ -240,10 +245,10 @@ int main(int argc, char *argv[])
@@ -240,10 +245,10 @@ int main(int argc, char *argv[])
# endif
# if defined(Q_OS_UNIX) || defined(STACKTRACE_WIN)
signal ( SIGABRT , sigabrt Handler ) ;
signal ( SIGTERM , sigterm Handler ) ;
signal ( SIGINT , sigint Handler ) ;
signal ( SIGSEGV , sigsegv Handler ) ;
signal ( SIGINT , sigNormal Handler ) ;
signal ( SIGTERM , sigNormal Handler ) ;
signal ( SIGABRT , sigAbnormal Handler ) ;
signal ( SIGSEGV , sigAbnormal Handler ) ;
# endif
return app - > exec ( params . torrents ) ;
@ -303,58 +308,41 @@ QBtCommandLineParameters parseCommandLine()
@@ -303,58 +308,41 @@ QBtCommandLineParameters parseCommandLine()
}
# if defined(Q_OS_UNIX) || defined(STACKTRACE_WIN)
void sigintHandler ( int )
{
signal ( SIGINT , 0 ) ;
qDebug ( " Catching SIGINT, exiting cleanly " ) ;
qApp - > exit ( ) ;
}
void sigtermHandler ( int )
{
signal ( SIGTERM , 0 ) ;
qDebug ( " Catching SIGTERM, exiting cleanly " ) ;
qApp - > exit ( ) ;
}
void sigsegvHandler ( int )
void sigNormalHandler ( int signum )
{
signal ( SIGABRT , 0 ) ;
signal ( SIGSEGV , 0 ) ;
# if !defined Q_OS_WIN && !defined Q_OS_HAIKU
std : : cerr < < " \n \n ************************************************************* \n " ;
std : : cerr < < " Catching SIGSEGV, please report a bug at http://bug.qbittorrent.org \n and provide the following backtrace: \n " ;
std : : cerr < < " qBittorrent version: " < < VERSION < < std : : endl ;
print_stacktrace ( ) ;
# else
# ifdef STACKTRACE_WIN
StraceDlg dlg ;
dlg . setStacktraceString ( straceWin : : getBacktrace ( ) ) ;
dlg . exec ( ) ;
# endif
# endif
raise ( SIGSEGV ) ;
}
void sigabrtHandler ( int )
const char str1 [ ] = " Catching signal: " ;
const char * sigName = sysSigName [ signum ] ;
const char str2 [ ] = " \n Exiting cleanly \n " ;
write ( STDERR_FILENO , str1 , strlen ( str1 ) ) ;
write ( STDERR_FILENO , sigName , strlen ( sigName ) ) ;
write ( STDERR_FILENO , str2 , strlen ( str2 ) ) ;
# endif // !defined Q_OS_WIN && !defined Q_OS_HAIKU
signal ( signum , SIG_DFL ) ;
qApp - > exit ( ) ; // unsafe, but exit anyway
}
void sigAbnormalHandler ( int signum )
{
signal ( SIGABRT , 0 ) ;
signal ( SIGSEGV , 0 ) ;
# if !defined Q_OS_WIN && !defined Q_OS_HAIKU
std : : cerr < < " \n \n ************************************************************* \n " ;
std : : cerr < < " Catching SIGABRT, please report a bug at http://bug.qbittorrent.org \n and provide the following backtrace: \n " ;
std : : cerr < < " qBittorrent version: " < < VERSION < < std : : endl ;
print_stacktrace ( ) ;
# else
const char str1 [ ] = " \n \n ************************************************************* \n Catching signal: " ;
const char * sigName = sysSigName [ signum ] ;
const char str2 [ ] = " \n Please file a bug report at http://bug.qbittorrent.org and provide the following information: \n \n "
" qBittorrent version: " VERSION " \n " ;
write ( STDERR_FILENO , str1 , strlen ( str1 ) ) ;
write ( STDERR_FILENO , sigName , strlen ( sigName ) ) ;
write ( STDERR_FILENO , str2 , strlen ( str2 ) ) ;
print_stacktrace ( ) ; // unsafe
# endif // !defined Q_OS_WIN && !defined Q_OS_HAIKU
# ifdef STACKTRACE_WIN
StraceDlg dlg ;
StraceDlg dlg ; // unsafe
dlg . setStacktraceString ( straceWin : : getBacktrace ( ) ) ;
dlg . exec ( ) ;
# endif
# endif
raise ( SIGABRT ) ;
# endif // STACKTRACE_WIN
signal ( signum , SIG_DFL ) ;
raise ( signum ) ;
}
# endif
# endif // defined(Q_OS_UNIX) || defined(STACKTRACE_WIN)
# ifndef DISABLE_GUI
void showSplashScreen ( )