summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAndreas Baumann <mail@andreasbaumann.cc>2015-08-27 14:13:52 +0200
committerAndreas Baumann <mail@andreasbaumann.cc>2015-08-27 14:13:52 +0200
commit0c43a9579f7076b0215b4198a7dd5f10d32e2391 (patch)
tree52febbb20e60dd3d883253172ff4110494c5ae16
parent2e8b01b8594423e665270a64f3d6b6545f572a5d (diff)
downloadcssh-0c43a9579f7076b0215b4198a7dd5f10d32e2391.tar.gz
cssh-0c43a9579f7076b0215b4198a7dd5f10d32e2391.tar.bz2
prepared a switch for SSH/SCP modes
-rw-r--r--src/cssh.c38
1 files changed, 38 insertions, 0 deletions
diff --git a/src/cssh.c b/src/cssh.c
index 492e683..c1508f3 100644
--- a/src/cssh.c
+++ b/src/cssh.c
@@ -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 );
}