home *** CD-ROM | disk | FTP | other *** search
/ Columbia Kermit / kermit.zip / panix / k95source.tar.gz / k95source.tar / rlogin.c < prev    next >
C/C++ Source or Header  |  2002-04-18  |  2KB  |  107 lines

  1. /* R L O G I N . C  --  Rlogin stub for Kermit 95 */
  2. /*
  3.   Authors: Frank da Cruz (fdc@columbia.edu)
  4.            Jeffrey Altman (jaltman@columbia.edu),
  5.   Columbia University Academic Information Systems, New York City.
  6.  
  7.   Copyright (C) 1995, 1997, Trustees of Columbia University in the City of
  8.   New York.  All rights reserved.
  9. */
  10. #include <stdio.h>
  11. #include <stdlib.h>
  12. #include <string.h>
  13.  
  14. char * tn_port = "login",
  15.      * hostname = NULL,
  16.      * username = NULL;
  17.  
  18. char ckermitcmd[4096];
  19.  
  20. void
  21. constructcmdline( char * rlogin ) {
  22.     char * s = ckermitcmd ;
  23.     int n = 0 ;
  24.  
  25.     ckermitcmd[0] = '"';
  26.     strcpy(&ckermitcmd[1],rlogin);
  27.     s = ckermitcmd + strlen(rlogin) + 1;
  28.     while (s != (ckermitcmd+1) && *s != '\\' && *s != '/')
  29.         s--;
  30.     if (s != (ckermitcmd+1))
  31.         s++;
  32. #ifdef NT
  33.     strcpy( s, "k95.exe\"" );
  34. #else /* NT */
  35.     strcpy( s, "k2.exe\"" ) ;
  36. #endif /* NT */
  37.  
  38.     if ( username ) {
  39.         strcat( s," -M " ) ;
  40.         strcat( s, username ) ;
  41.     }
  42.  
  43.     if (hostname) {
  44.         strcat(s," -J ");
  45.         strcat(s,hostname);
  46.         n = strlen(ckermitcmd) - 1;
  47.         while (n >= 0 && ckermitcmd[n] == '/')
  48.             ckermitcmd[n--] = (char) 0;
  49.  
  50.         strcat(s," ");
  51.         strcat(s,"login");
  52.     }
  53. }
  54.  
  55. void
  56. usage(void)
  57. {
  58.     fprintf( stderr, "rlogin [-l username] hostname\n\n" ) ;
  59. }
  60.  
  61. int
  62. parsecmdline( int argc, char ** argv ) {
  63.     int i=1;
  64.     if ( argc == 1 )
  65.     {
  66.         usage() ;
  67.         return -1;
  68.     }
  69.  
  70.     hostname = argv[argc-1] ;
  71.     argc-- ;
  72.  
  73.     for ( i=1 ; i<argc ; i++ )
  74.     {
  75.         if ( argv[i][0] == '-' )
  76.         {
  77.  
  78.             switch ( argv[i][1] ) {
  79.             case 'l':
  80.                 i++ ;
  81.                 if ( i < argc )
  82.                   username = argv[i] ;
  83.                 else
  84.                 {
  85.                     usage();
  86.                     return -1;
  87.                 }
  88.                 break;
  89.             case '8':
  90.                 break;
  91.             default:
  92.                 usage();
  93.                 return -1;
  94.             }
  95.         }
  96.     }
  97.     return 0;
  98. }
  99.  
  100. int
  101. main( int argc, char **argv ) {
  102.     if ( parsecmdline( argc, argv ) )
  103.         return 1 ;
  104.     constructcmdline(argv[0]) ;
  105.     return system( ckermitcmd ) ;
  106. }
  107.