xref: /csrg-svn/usr.bin/telnet/main.c (revision 32145)
1*32145Sminshall #include "externs.h"
2*32145Sminshall #include "defines.h"
3*32145Sminshall 
4*32145Sminshall /*
5*32145Sminshall  * Initialize variables.
6*32145Sminshall  */
7*32145Sminshall 
8*32145Sminshall void
9*32145Sminshall tninit()
10*32145Sminshall {
11*32145Sminshall #if	defined(TN3270)
12*32145Sminshall     Sent3270TerminalType = 0;
13*32145Sminshall     Ifrontp = Ibackp = Ibuf;
14*32145Sminshall #endif	/* defined(TN3270) */
15*32145Sminshall 
16*32145Sminshall     init_terminal();
17*32145Sminshall 
18*32145Sminshall     init_network();
19*32145Sminshall 
20*32145Sminshall     init_telnet();
21*32145Sminshall 
22*32145Sminshall #if	defined(TN3270)
23*32145Sminshall     init_ctlr();		/* Initialize some things */
24*32145Sminshall     init_keyboard();
25*32145Sminshall     init_screen();
26*32145Sminshall     init_system();
27*32145Sminshall #endif	/* defined(TN3270) */
28*32145Sminshall }
29*32145Sminshall 
30*32145Sminshall 
31*32145Sminshall /*
32*32145Sminshall  * main.  Parse arguments, invoke the protocol or command parser.
33*32145Sminshall  */
34*32145Sminshall 
35*32145Sminshall 
36*32145Sminshall void
37*32145Sminshall main(argc, argv)
38*32145Sminshall 	int argc;
39*32145Sminshall 	char *argv[];
40*32145Sminshall {
41*32145Sminshall     tninit();		/* Clear out things */
42*32145Sminshall 
43*32145Sminshall     TerminalSaveState();
44*32145Sminshall 
45*32145Sminshall     prompt = argv[0];
46*32145Sminshall     while ((argc > 1) && (argv[1][0] == '-')) {
47*32145Sminshall 	if (!strcmp(argv[1], "-d")) {
48*32145Sminshall 	    debug = 1;
49*32145Sminshall 	} else if (!strcmp(argv[1], "-n")) {
50*32145Sminshall 	    if ((argc > 1) && (argv[2][0] != '-')) {	/* get file name */
51*32145Sminshall 		NetTrace = fopen(argv[2], "w");
52*32145Sminshall 		argv++;
53*32145Sminshall 		argc--;
54*32145Sminshall 		if (NetTrace == NULL) {
55*32145Sminshall 		    NetTrace = stdout;
56*32145Sminshall 		}
57*32145Sminshall 	    }
58*32145Sminshall 	} else {
59*32145Sminshall #if	defined(TN3270) && defined(unix)
60*32145Sminshall 	    if (!strcmp(argv[1], "-t")) {
61*32145Sminshall 		if ((argc > 1) && (argv[2][0] != '-')) { /* get file name */
62*32145Sminshall 		    transcom = tline;
63*32145Sminshall 		    (void) strcpy(transcom, argv[1]);
64*32145Sminshall 		    argv++;
65*32145Sminshall 		    argc--;
66*32145Sminshall 		}
67*32145Sminshall 	    } else if (!strcmp(argv[1], "-noasynch")) {
68*32145Sminshall 		noasynch = 1;
69*32145Sminshall 	    } else
70*32145Sminshall #endif	/* defined(TN3270) && defined(unix) */
71*32145Sminshall 	    if (argv[1][1] != '\0') {
72*32145Sminshall 		fprintf(stderr, "Unknown option *%s*.\n", argv[1]);
73*32145Sminshall 	    }
74*32145Sminshall 	}
75*32145Sminshall 	argc--;
76*32145Sminshall 	argv++;
77*32145Sminshall     }
78*32145Sminshall     if (argc != 1) {
79*32145Sminshall 	if (setjmp(toplevel) != 0)
80*32145Sminshall 	    Exit(0);
81*32145Sminshall 	tn(argc, argv);
82*32145Sminshall     }
83*32145Sminshall     setjmp(toplevel);
84*32145Sminshall     for (;;) {
85*32145Sminshall #if	!defined(TN3270)
86*32145Sminshall 	command(1);
87*32145Sminshall #else	/* !defined(TN3270) */
88*32145Sminshall 	if (!shell_active) {
89*32145Sminshall 	    command(1);
90*32145Sminshall 	} else {
91*32145Sminshall #if	defined(TN3270)
92*32145Sminshall 	    shell_continue();
93*32145Sminshall #endif	/* defined(TN3270) */
94*32145Sminshall 	}
95*32145Sminshall #endif	/* !defined(TN3270) */
96*32145Sminshall     }
97*32145Sminshall }
98