@ -513,7 +513,7 @@ static STREscape strescseq;
static int cmdfd ;
static int cmdfd ;
static pid_t pid ;
static pid_t pid ;
static Selection sel ;
static Selection sel ;
static int iofd = STDOUT_FILENO ;
static int iofd = 1 ;
static char * * opt_cmd = NULL ;
static char * * opt_cmd = NULL ;
static char * opt_io = NULL ;
static char * opt_io = NULL ;
static char * opt_title = NULL ;
static char * opt_title = NULL ;
@ -1207,7 +1207,7 @@ die(const char *errstr, ...) {
va_start ( ap , errstr ) ;
va_start ( ap , errstr ) ;
vfprintf ( stderr , errstr , ap ) ;
vfprintf ( stderr , errstr , ap ) ;
va_end ( ap ) ;
va_end ( ap ) ;
exit ( EXIT_FAILURE ) ;
exit ( 1 ) ;
}
}
void
void
@ -1256,12 +1256,12 @@ execsh(void) {
signal ( SIGALRM , SIG_DFL ) ;
signal ( SIGALRM , SIG_DFL ) ;
execvp ( prog , args ) ;
execvp ( prog , args ) ;
_exit ( EXIT_FAILURE ) ;
_exit ( 1 ) ;
}
}
void
void
sigchld ( int a ) {
sigchld ( int a ) {
int stat , ret ;
int stat ;
pid_t p ;
pid_t p ;
if ( ( p = waitpid ( pid , & stat , WNOHANG ) ) < 0 )
if ( ( p = waitpid ( pid , & stat , WNOHANG ) ) < 0 )
@ -1270,10 +1270,9 @@ sigchld(int a) {
if ( pid ! = p )
if ( pid ! = p )
return ;
return ;
ret = WIFEXITED ( stat ) ? WEXITSTATUS ( stat ) : EXIT_FAILURE ;
if ( ! WIFEXITED ( stat ) | | WEXITSTATUS ( stat ) )
if ( ret ! = EXIT_SUCCESS )
die ( " child finished with error '%d' \n " , stat ) ;
die ( " child finished with error '%d' \n " , stat ) ;
exit ( EXIT_SUCCESS ) ;
exit ( 0 ) ;
}
}
@ -1309,8 +1308,7 @@ ttynew(void) {
if ( opt_io ) {
if ( opt_io ) {
term . mode | = MODE_PRINT ;
term . mode | = MODE_PRINT ;
iofd = ( ! strcmp ( opt_io , " - " ) ) ?
iofd = ( ! strcmp ( opt_io , " - " ) ) ?
STDOUT_FILENO :
1 : open ( opt_io , O_WRONLY | O_CREAT , 0666 ) ;
open ( opt_io , O_WRONLY | O_CREAT , 0666 ) ;
if ( iofd < 0 ) {
if ( iofd < 0 ) {
fprintf ( stderr , " Error opening %s:%s \n " ,
fprintf ( stderr , " Error opening %s:%s \n " ,
opt_io , strerror ( errno ) ) ;
opt_io , strerror ( errno ) ) ;
@ -1320,7 +1318,7 @@ ttynew(void) {
if ( opt_line ) {
if ( opt_line ) {
if ( ( cmdfd = open ( opt_line , O_RDWR ) ) < 0 )
if ( ( cmdfd = open ( opt_line , O_RDWR ) ) < 0 )
die ( " open line failed: %s \n " , strerror ( errno ) ) ;
die ( " open line failed: %s \n " , strerror ( errno ) ) ;
close ( STDIN_FILENO ) ;
close ( 0 ) ;
dup ( cmdfd ) ;
dup ( cmdfd ) ;
stty ( ) ;
stty ( ) ;
return ;
return ;
@ -1337,9 +1335,9 @@ ttynew(void) {
case 0 :
case 0 :
close ( iofd ) ;
close ( iofd ) ;
setsid ( ) ; /* create a new process group */
setsid ( ) ; /* create a new process group */
dup2 ( s , STDIN_FILENO ) ;
dup2 ( s , 0 ) ;
dup2 ( s , STDOUT_FILENO ) ;
dup2 ( s , 1 ) ;
dup2 ( s , STDERR_FILENO ) ;
dup2 ( s , 2 ) ;
if ( ioctl ( s , TIOCSCTTY , NULL ) < 0 )
if ( ioctl ( s , TIOCSCTTY , NULL ) < 0 )
die ( " ioctl TIOCSCTTY failed: %s \n " , strerror ( errno ) ) ;
die ( " ioctl TIOCSCTTY failed: %s \n " , strerror ( errno ) ) ;
close ( s ) ;
close ( s ) ;
@ -3871,7 +3869,7 @@ cmessage(XEvent *e) {
} else if ( e - > xclient . data . l [ 0 ] = = xw . wmdeletewin ) {
} else if ( e - > xclient . data . l [ 0 ] = = xw . wmdeletewin ) {
/* Send SIGHUP to shell */
/* Send SIGHUP to shell */
kill ( pid , SIGHUP ) ;
kill ( pid , SIGHUP ) ;
exit ( EXIT_SUCCESS ) ;
exit ( 0 ) ;
}
}
}
}