home *** CD-ROM | disk | FTP | other *** search
/ Columbia Kermit / kermit.zip / archives / k95source.tar.gz / k95source.tar / klogin.c < prev    next >
C/C++ Source or Header  |  1999-02-02  |  2KB  |  108 lines

  1. /* K L O G I N . C  --  Klogin 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 = "klogin",
  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);
  28.     while (s != ckermitcmd && *s != '\\' && *s != '/')
  29.         s--;
  30.     if (s != ckermitcmd)
  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,"klogin");
  52.     }
  53.  
  54. }
  55.  
  56. void
  57. usage(void)
  58. {
  59.     fprintf( stderr, "klogin [-l username] hostname\n\n" ) ;
  60. }
  61.  
  62. int
  63. parsecmdline( int argc, char ** argv ) {
  64.     int i=1;
  65.     if ( argc == 1 )
  66.     {
  67.         usage() ;
  68.     return -1;
  69.     }
  70.  
  71.     hostname = argv[argc-1] ;
  72.     argc-- ;
  73.  
  74.     for ( i=1 ; i<argc ; i++ )
  75.     {
  76.         if ( argv[i][0] == '-' )
  77.     {
  78.  
  79.         switch ( argv[i][1] ) {
  80.         case 'l':
  81.         i++ ;
  82.         if ( i < argc )
  83.           username = argv[i] ;
  84.         else
  85.         {
  86.             usage();
  87.             return -1;
  88.         }
  89.         break;
  90.         case '8':
  91.         break;
  92.         default:
  93.         usage();
  94.         return -1;
  95.         }
  96.     }
  97.     }
  98.     return 0;
  99. }
  100.  
  101. int
  102. main( int argc, char **argv ) {
  103.     if ( parsecmdline( argc, argv ) )
  104.         return 1 ;
  105.     constructcmdline(argv[0]) ;
  106.     return system( ckermitcmd ) ;
  107. }
  108.