xref: /csrg-svn/usr.bin/telnet/main.c (revision 32381)
1*32381Sminshall #include <sys/types.h>
2*32381Sminshall 
3*32381Sminshall #include "ring.h"
4*32381Sminshall 
532145Sminshall #include "externs.h"
632145Sminshall #include "defines.h"
732145Sminshall 
832145Sminshall /*
932145Sminshall  * Initialize variables.
1032145Sminshall  */
1132145Sminshall 
1232145Sminshall void
1332145Sminshall tninit()
1432145Sminshall {
1532145Sminshall     init_terminal();
1632145Sminshall 
1732145Sminshall     init_network();
1832145Sminshall 
1932145Sminshall     init_telnet();
2032145Sminshall }
2132145Sminshall 
2232145Sminshall 
2332145Sminshall /*
2432145Sminshall  * main.  Parse arguments, invoke the protocol or command parser.
2532145Sminshall  */
2632145Sminshall 
2732145Sminshall 
2832145Sminshall void
2932145Sminshall main(argc, argv)
3032145Sminshall 	int argc;
3132145Sminshall 	char *argv[];
3232145Sminshall {
3332145Sminshall     tninit();		/* Clear out things */
3432145Sminshall 
3532145Sminshall     TerminalSaveState();
3632145Sminshall 
3732145Sminshall     prompt = argv[0];
3832145Sminshall     while ((argc > 1) && (argv[1][0] == '-')) {
3932145Sminshall 	if (!strcmp(argv[1], "-d")) {
4032145Sminshall 	    debug = 1;
4132145Sminshall 	} else if (!strcmp(argv[1], "-n")) {
4232145Sminshall 	    if ((argc > 1) && (argv[2][0] != '-')) {	/* get file name */
4332145Sminshall 		NetTrace = fopen(argv[2], "w");
4432145Sminshall 		argv++;
4532145Sminshall 		argc--;
4632145Sminshall 		if (NetTrace == NULL) {
4732145Sminshall 		    NetTrace = stdout;
4832145Sminshall 		}
4932145Sminshall 	    }
5032145Sminshall 	} else {
5132145Sminshall #if	defined(TN3270) && defined(unix)
5232145Sminshall 	    if (!strcmp(argv[1], "-t")) {
5332145Sminshall 		if ((argc > 1) && (argv[2][0] != '-')) { /* get file name */
5432145Sminshall 		    transcom = tline;
5532145Sminshall 		    (void) strcpy(transcom, argv[1]);
5632145Sminshall 		    argv++;
5732145Sminshall 		    argc--;
5832145Sminshall 		}
5932145Sminshall 	    } else if (!strcmp(argv[1], "-noasynch")) {
6032145Sminshall 		noasynch = 1;
6132145Sminshall 	    } else
6232145Sminshall #endif	/* defined(TN3270) && defined(unix) */
6332145Sminshall 	    if (argv[1][1] != '\0') {
6432145Sminshall 		fprintf(stderr, "Unknown option *%s*.\n", argv[1]);
6532145Sminshall 	    }
6632145Sminshall 	}
6732145Sminshall 	argc--;
6832145Sminshall 	argv++;
6932145Sminshall     }
7032145Sminshall     if (argc != 1) {
7132145Sminshall 	if (setjmp(toplevel) != 0)
7232145Sminshall 	    Exit(0);
7332145Sminshall 	tn(argc, argv);
7432145Sminshall     }
7532145Sminshall     setjmp(toplevel);
7632145Sminshall     for (;;) {
7732145Sminshall #if	!defined(TN3270)
7832145Sminshall 	command(1);
7932145Sminshall #else	/* !defined(TN3270) */
8032145Sminshall 	if (!shell_active) {
8132145Sminshall 	    command(1);
8232145Sminshall 	} else {
8332145Sminshall #if	defined(TN3270)
8432145Sminshall 	    shell_continue();
8532145Sminshall #endif	/* defined(TN3270) */
8632145Sminshall 	}
8732145Sminshall #endif	/* !defined(TN3270) */
8832145Sminshall     }
8932145Sminshall }
90