/* T E L N E T . C  --  Telnet stub for Kermit 95 */
/*
  Authors: Frank da Cruz (fdc@columbia.edu)
           Jeffrey Altman (jaltman@columbia.edu),
  Columbia University Academic Information Systems, New York City.

  Copyright (C) 1995-1996, Trustees of Columbia University in the City of
  New York.  All rights reserved.
*/
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <process.h>

/* OpenWatcom 1.9 defines P_WAIT instead of _P_WAIT */
#ifdef __WATCOMC__
#ifndef _P_WAIT
#define _P_WAIT P_WAIT
#endif
#endif

char * tn_port = NULL,
     * hostname = NULL;
char ckermitcmd[1024]="";
char ckermitarg[1024]="";

void
constructcmdline( char * telnet ) {
    char * s = ckermitcmd ;
    int n = 0 ;

    strcpy(s,telnet);
    s = ckermitcmd + strlen(telnet) + 1;
    while (s != (ckermitcmd) && *s != '\\' && *s != '/')
        s--;
    if (s != (ckermitcmd))
        s++;
    strcpy( s, "k95.exe" );

    if (hostname) {
        s = ckermitarg;
        strcpy(s,"\"telnet ");
        strcat(s,hostname);
        n = strlen(ckermitarg) - 1;
        while (n >= 0 && ckermitarg[n] == '/')
            ckermitarg[n--] = (char) 0;

        if (tn_port) {
            strcat(s," ");
            strcat(s,tn_port);
            n = strlen(ckermitarg) - 1;
            while (n >= 0 && ckermitarg[n] == '/')
              ckermitarg[n--] = (char) 0;
        }
        strcat(s,"\"");
    }
}

int
parsecmdline( int argc, char ** argv ) {
    if (argc > 1)
      hostname = argv[1];
    if (argc > 2)
      tn_port = argv[2] ;
    return 0;
}

int
main( int argc, char **argv ) {
    if ( parsecmdline( argc, argv ) )
        return 1 ;
    constructcmdline(argv[0]) ;
    if ( ckermitarg[0] )
        return spawnl( _P_WAIT, ckermitcmd, "k95.exe", "-C",ckermitarg, NULL ) ;
    else
        return spawnl( _P_WAIT, ckermitcmd, "k95.exe", NULL);
}
