diff options
author | Werner Koch <[email protected]> | 1998-11-03 19:38:58 +0000 |
---|---|---|
committer | Werner Koch <[email protected]> | 1998-11-03 19:38:58 +0000 |
commit | b9dd2ebb2c08b457735f8acf997ff54965db91de (patch) | |
tree | 7d2408445104fa5135bd63b7e7bfc98d5a66688f /g10/signal.c | |
parent | some random changes (diff) | |
download | gnupg-b9dd2ebb2c08b457735f8acf997ff54965db91de.tar.gz gnupg-b9dd2ebb2c08b457735f8acf997ff54965db91de.zip |
(Does not compile yet)
Diffstat (limited to 'g10/signal.c')
-rw-r--r-- | g10/signal.c | 39 |
1 files changed, 39 insertions, 0 deletions
diff --git a/g10/signal.c b/g10/signal.c index d89b548b1..8a0f3feee 100644 --- a/g10/signal.c +++ b/g10/signal.c @@ -121,3 +121,42 @@ pause_on_sigusr( int which ) #endif } + +static void +do_block( int block ) +{ + #ifndef __MINGW32__ + static int is_blocked; + static sigset_t oldmask; + + if( block ) { + sigset_t newmask; + + if( is_blocked ) + log_bug("signals are already blocked\n"); + sigfillset( &newmask ); + sigprocmask( SIG_BLOCK, &newmask, &oldmask ); + is_blocked = 1; + } + else { + if( !is_blocked ) + log_bug("signals are not blocked\n"); + sigprocmask( SIG_SETMASK, &oldmask, NULL ); + is_blocked = 0; + } + #endif /*__MINGW32__*/ +} + + +void +block_all_signals() +{ + do_block(1); +} + +void +unblock_all_signals() +{ + do_block(0); +} + |