xref: /csrg-svn/usr.bin/telnet/main.c (revision 32531)
132381Sminshall #include <sys/types.h>
232381Sminshall 
332381Sminshall #include "ring.h"
432381Sminshall 
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();
20*32531Sminshall 
21*32531Sminshall     init_sys();
2232145Sminshall }
2332145Sminshall 
2432145Sminshall 
2532145Sminshall /*
2632145Sminshall  * main.  Parse arguments, invoke the protocol or command parser.
2732145Sminshall  */
2832145Sminshall 
2932145Sminshall 
3032145Sminshall void
3132145Sminshall main(argc, argv)
3232145Sminshall 	int argc;
3332145Sminshall 	char *argv[];
3432145Sminshall {
3532145Sminshall     tninit();		/* Clear out things */
3632145Sminshall 
3732145Sminshall     TerminalSaveState();
3832145Sminshall 
3932145Sminshall     prompt = argv[0];
4032145Sminshall     while ((argc > 1) && (argv[1][0] == '-')) {
4132145Sminshall 	if (!strcmp(argv[1], "-d")) {
4232145Sminshall 	    debug = 1;
4332145Sminshall 	} else if (!strcmp(argv[1], "-n")) {
4432145Sminshall 	    if ((argc > 1) && (argv[2][0] != '-')) {	/* get file name */
4532145Sminshall 		NetTrace = fopen(argv[2], "w");
4632145Sminshall 		argv++;
4732145Sminshall 		argc--;
4832145Sminshall 		if (NetTrace == NULL) {
4932145Sminshall 		    NetTrace = stdout;
5032145Sminshall 		}
5132145Sminshall 	    }
5232145Sminshall 	} else {
5332145Sminshall #if	defined(TN3270) && defined(unix)
5432145Sminshall 	    if (!strcmp(argv[1], "-t")) {
5532145Sminshall 		if ((argc > 1) && (argv[2][0] != '-')) { /* get file name */
5632145Sminshall 		    transcom = tline;
5732145Sminshall 		    (void) strcpy(transcom, argv[1]);
5832145Sminshall 		    argv++;
5932145Sminshall 		    argc--;
6032145Sminshall 		}
6132145Sminshall 	    } else if (!strcmp(argv[1], "-noasynch")) {
6232145Sminshall 		noasynch = 1;
6332145Sminshall 	    } else
6432145Sminshall #endif	/* defined(TN3270) && defined(unix) */
6532145Sminshall 	    if (argv[1][1] != '\0') {
6632145Sminshall 		fprintf(stderr, "Unknown option *%s*.\n", argv[1]);
6732145Sminshall 	    }
6832145Sminshall 	}
6932145Sminshall 	argc--;
7032145Sminshall 	argv++;
7132145Sminshall     }
7232145Sminshall     if (argc != 1) {
7332145Sminshall 	if (setjmp(toplevel) != 0)
7432145Sminshall 	    Exit(0);
7532145Sminshall 	tn(argc, argv);
7632145Sminshall     }
7732145Sminshall     setjmp(toplevel);
7832145Sminshall     for (;;) {
7932145Sminshall #if	!defined(TN3270)
8032145Sminshall 	command(1);
8132145Sminshall #else	/* !defined(TN3270) */
8232145Sminshall 	if (!shell_active) {
8332145Sminshall 	    command(1);
8432145Sminshall 	} else {
8532145Sminshall #if	defined(TN3270)
8632145Sminshall 	    shell_continue();
8732145Sminshall #endif	/* defined(TN3270) */
8832145Sminshall 	}
8932145Sminshall #endif	/* !defined(TN3270) */
9032145Sminshall     }
9132145Sminshall }
92