diff options
Diffstat (limited to 'g10/signal.c')
-rw-r--r-- | g10/signal.c | 17 |
1 files changed, 13 insertions, 4 deletions
diff --git a/g10/signal.c b/g10/signal.c index fcb012e02..f61b0a8f8 100644 --- a/g10/signal.c +++ b/g10/signal.c @@ -1,5 +1,5 @@ /* signal.c - signal handling - * Copyright (C) 1998, 1999 Free Software Foundation, Inc. + * Copyright (C) 1998, 1999, 2000 Free Software Foundation, Inc. * * This file is part of GnuPG. * @@ -27,9 +27,9 @@ #include <errno.h> #include <assert.h> +#include <gcrypt.h> #include "options.h" #include "errors.h" -#include <gcrypt.h> #include "util.h" #include "main.h" #include "ttyio.h" @@ -59,14 +59,23 @@ got_fatal_signal( int sig ) caught_fatal_sig = 1; gcry_control( GCRYCTL_TERM_SECMEM ); - #ifdef IS_DEVELOPMENT_VERSION + /* better don't transtale these messages */ write(2, "\n", 1 ); s = log_get_name(); if( s ) write(2, s, strlen(s) ); write(2, ": ", 2 ); s = get_signal_name(sig); write(2, s, strlen(s) ); write(2, " caught ... exiting\n", 21 ); + + #ifndef HAVE_DOSISH_SYSTEM + { /* reset action to default action and raise signal again */ + struct sigaction nact; + nact.sa_handler = SIG_DFL; + sigemptyset( &nact.sa_mask ); + nact.sa_flags = 0; + sigaction( sig, &nact, NULL); + } #endif - exit(8); /* Hmmm, for some reasons rais2e does not work */ + raise( sig ); } |