diff options
author | Andreas Baumann <mail@andreasbaumann.cc> | 2015-08-27 14:13:52 +0200 |
---|---|---|
committer | Andreas Baumann <mail@andreasbaumann.cc> | 2015-08-27 14:13:52 +0200 |
commit | 0c43a9579f7076b0215b4198a7dd5f10d32e2391 (patch) | |
tree | 52febbb20e60dd3d883253172ff4110494c5ae16 | |
parent | 2e8b01b8594423e665270a64f3d6b6545f572a5d (diff) | |
download | cssh-0c43a9579f7076b0215b4198a7dd5f10d32e2391.tar.gz cssh-0c43a9579f7076b0215b4198a7dd5f10d32e2391.tar.bz2 |
prepared a switch for SSH/SCP modes
-rw-r--r-- | src/cssh.c | 38 |
1 files changed, 38 insertions, 0 deletions
@@ -299,12 +299,50 @@ static void cleanup_sessions( ssh_session **session, ssh_channel **channel, char free( port ); } +typedef enum execution_mode_e { + CSSH_EXECUTE_UNKNOWN, + CSSH_EXECUTE_AS_SSH, + CSSH_EXECUTE_AS_SCP +} execution_mode_e; + +static execution_mode_e determine_execution_mode( const char *argv0 ) +{ + char *b = ssh_basename( argv0 ); + if( b == NULL ) { + return CSSH_EXECUTE_UNKNOWN; + } + + if( strcmp( b, "cssh" ) == 0 ) { + free( b ); + return CSSH_EXECUTE_AS_SSH; + } else if( strcmp( b, "cscp" ) == 0 ) { + free( b ); + return CSSH_EXECUTE_AS_SCP; + } + + free( b ); + return CSSH_EXECUTE_UNKNOWN; +} + int main( int argc, char *argv[] ) { struct gengetopt_args_info args_info; ssh_session *session; int rc; + execution_mode_e execution_mode = determine_execution_mode( argv[0] ); + switch( execution_mode ) { + case CSSH_EXECUTE_UNKNOWN: + fprintf( stderr, "ERROR: binary name unknown, can't determine execution mode\n" ); + exit( EXIT_FAILURE ); + + case CSSH_EXECUTE_AS_SSH: + break; + + case CSSH_EXECUTE_AS_SCP: + break; + } + if( parse_options_and_arguments( argc, argv, &args_info ) != 0 ) { exit( EXIT_FAILURE ); } |