X-Git-Url: https://git.distorted.org.uk/~mdw/termux-packages/blobdiff_plain/1f87518b8c4f5371f0917169dcd6900aea5c6373..df38a35b07180e235dec9ffca3d434aa4e7e27c9:/packages/mosh/mosh.cc diff --git a/packages/mosh/mosh.cc b/packages/mosh/mosh.cc index 3772d0d0..9c306a22 100644 --- a/packages/mosh/mosh.cc +++ b/packages/mosh/mosh.cc @@ -317,13 +317,16 @@ int main( int argc, char *argv[] ) int pid = fork(); if ( pid == -1 ) die( "%s: fork: %d", argv[0], errno ); if ( pid == 0 ) { - cat( sockfd, 1 ); + close( STDIN_FILENO ); + cat( sockfd, STDOUT_FILENO ); shutdown( sockfd, 0 ); exit( 0 ); } signal( SIGHUP, SIG_IGN ); - cat( 0, sockfd ); - shutdown( sockfd, 1 ); + close( STDOUT_FILENO ); + cat( STDIN_FILENO, sockfd ); + shutdown( sockfd, SHUT_WR /* = 1 */ ); + close( STDIN_FILENO ); waitpid( pid, NULL, 0 ); exit( 0 ); } @@ -336,25 +339,9 @@ int main( int argc, char *argv[] ) char **command = &argv[optind]; int commands = argc - optind; - string color_invocation = client + " -c"; - FILE *color_file = popen( color_invocation.c_str(), "r" ); - if ( !color_file ) die( "%s: popen: %d", argv[0], errno ); char *buf = NULL; size_t buf_sz = 0; ssize_t n; - if ( ( n = getline( &buf, &buf_sz, color_file ) ) < 0 ) { - die( "%s: Can't count colors: %d", argv[0], errno ); - } - // Chomp the trailing newline: - if ( n > 0 && buf[n - 1] == '\n' ) n--; - string colors = string( buf, n ); - pclose( color_file ); - - if ( !colors.size() || - colors.find_first_not_of( "0123456789" ) != string::npos || - atoi( colors.c_str() ) < 0 ) { - colors = "0"; - } int pty, pty_slave; struct winsize ws; @@ -367,9 +354,7 @@ int main( int argc, char *argv[] ) } int pid = fork(); - if ( pid == -1 ) { - die( "%s: fork: %d", argv[0], errno ); - } + if ( pid == -1 ) die( "%s: fork: %d", argv[0], errno ); if ( pid == 0 ) { close( pty ); if ( -1 == dup2( pty_slave, 1 ) || @@ -382,7 +367,7 @@ int main( int argc, char *argv[] ) server_args.push_back( "new" ); server_args.push_back( "-s" ); server_args.push_back( "-c" ); - server_args.push_back( colors ); + server_args.push_back( "256" ); if ( port_request.size() ) { server_args.push_back( "-p" ); server_args.push_back( port_request );