Fix asserts with side-effects (per Keegan McAllister)

This commit is contained in:
Keith Winstein
2012-03-08 10:50:19 -05:00
parent 4a29ab9d70
commit df5d163f9c
15 changed files with 80 additions and 35 deletions
+10 -9
View File
@@ -46,6 +46,7 @@ extern "C" {
#include "completeterminal.h"
#include "swrite.h"
#include "user.h"
#include "fatal_assert.h"
#if HAVE_PTY_H
#include <pty.h>
@@ -109,10 +110,10 @@ int main( int argc, char *argv[] )
/* don't let signals kill us */
sigset_t signals_to_block;
assert( sigemptyset( &signals_to_block ) == 0 );
assert( sigaddset( &signals_to_block, SIGHUP ) == 0 );
assert( sigaddset( &signals_to_block, SIGPIPE ) == 0 );
assert( sigprocmask( SIG_BLOCK, &signals_to_block, NULL ) == 0 );
fatal_assert( sigemptyset( &signals_to_block ) == 0 );
fatal_assert( sigaddset( &signals_to_block, SIGHUP ) == 0 );
fatal_assert( sigaddset( &signals_to_block, SIGPIPE ) == 0 );
fatal_assert( sigprocmask( SIG_BLOCK, &signals_to_block, NULL ) == 0 );
struct termios child_termios;
@@ -153,8 +154,8 @@ int main( int argc, char *argv[] )
/* unblock signals */
sigset_t signals_to_block;
assert( sigemptyset( &signals_to_block ) == 0 );
assert( sigprocmask( SIG_SETMASK, &signals_to_block, NULL ) == 0 );
fatal_assert( sigemptyset( &signals_to_block ) == 0 );
fatal_assert( sigprocmask( SIG_SETMASK, &signals_to_block, NULL ) == 0 );
/* set TERM */
if ( setenv( "TERM", "xterm", true ) < 0 ) {
@@ -183,7 +184,7 @@ int main( int argc, char *argv[] )
char *my_argv[ 2 ];
my_argv[ 0 ] = strdup( pw->pw_shell );
assert( my_argv[ 0 ] );
fatal_assert( my_argv[ 0 ] );
my_argv[ 1 ] = NULL;
if ( execv( pw->pw_shell, my_argv ) < 0 ) {
@@ -235,8 +236,8 @@ void serve( int host_fd, Terminal::Complete &terminal, ServerConnection &network
return;
}
assert( selfpipe_trap( SIGTERM ) == 0 );
assert( selfpipe_trap( SIGINT ) == 0 );
fatal_assert( selfpipe_trap( SIGTERM ) == 0 );
fatal_assert( selfpipe_trap( SIGINT ) == 0 );
/* prepare to poll for events */
struct pollfd pollfds[ 3 ];
+8 -7
View File
@@ -46,6 +46,7 @@ extern "C" {
#include "swrite.h"
#include "completeterminal.h"
#include "user.h"
#include "fatal_assert.h"
#include "networktransport.cc"
@@ -111,13 +112,13 @@ void STMClient::main_init( void )
return;
}
assert( selfpipe_trap( SIGWINCH ) == 0 );
assert( selfpipe_trap( SIGTERM ) == 0 );
assert( selfpipe_trap( SIGINT ) == 0 );
assert( selfpipe_trap( SIGHUP ) == 0 );
assert( selfpipe_trap( SIGPIPE ) == 0 );
assert( selfpipe_trap( SIGTSTP ) == 0 );
assert( selfpipe_trap( SIGCONT ) == 0 );
fatal_assert( selfpipe_trap( SIGWINCH ) == 0 );
fatal_assert( selfpipe_trap( SIGTERM ) == 0 );
fatal_assert( selfpipe_trap( SIGINT ) == 0 );
fatal_assert( selfpipe_trap( SIGHUP ) == 0 );
fatal_assert( selfpipe_trap( SIGPIPE ) == 0 );
fatal_assert( selfpipe_trap( SIGTSTP ) == 0 );
fatal_assert( selfpipe_trap( SIGCONT ) == 0 );
/* get initial window size */
if ( ioctl( STDIN_FILENO, TIOCGWINSZ, &window_size ) < 0 ) {