xref: /csrg-svn/usr.bin/telnet/main.c (revision 42770)
133685Sbostic /*
233685Sbostic  * Copyright (c) 1988 Regents of the University of California.
333685Sbostic  * All rights reserved.
433685Sbostic  *
5*42770Sbostic  * %sccs.include.redist.c%
633685Sbostic  */
733685Sbostic 
833685Sbostic #ifndef lint
933685Sbostic char copyright[] =
1033685Sbostic "@(#) Copyright (c) 1988 Regents of the University of California.\n\
1133685Sbostic  All rights reserved.\n";
1233685Sbostic #endif /* not lint */
1333685Sbostic 
1433685Sbostic #ifndef lint
15*42770Sbostic static char sccsid[] = "@(#)main.c	1.13 (Berkeley) 06/01/90";
1633685Sbostic #endif /* not lint */
1733685Sbostic 
1832381Sminshall #include <sys/types.h>
1932381Sminshall 
2032381Sminshall #include "ring.h"
2132381Sminshall 
2232145Sminshall #include "externs.h"
2332145Sminshall #include "defines.h"
2432145Sminshall 
2532145Sminshall /*
2632145Sminshall  * Initialize variables.
2732145Sminshall  */
2832145Sminshall 
2932145Sminshall void
3032145Sminshall tninit()
3132145Sminshall {
3232145Sminshall     init_terminal();
3332145Sminshall 
3432145Sminshall     init_network();
3532145Sminshall 
3632145Sminshall     init_telnet();
3732531Sminshall 
3832531Sminshall     init_sys();
3934302Sminshall 
4034302Sminshall     init_3270();
4132145Sminshall }
4232145Sminshall 
4332145Sminshall 
4432145Sminshall /*
4532145Sminshall  * main.  Parse arguments, invoke the protocol or command parser.
4632145Sminshall  */
4732145Sminshall 
4832145Sminshall 
4934849Sminshall int
5032145Sminshall main(argc, argv)
5132145Sminshall 	int argc;
5232145Sminshall 	char *argv[];
5332145Sminshall {
5432145Sminshall     tninit();		/* Clear out things */
5538689Sborman #ifdef	CRAY
5638689Sborman     _setlist_init();	/* Work around compiler bug */
5738689Sborman #endif
5832145Sminshall 
5932145Sminshall     TerminalSaveState();
6032145Sminshall 
6139529Sborman     prompt = (unsigned char *)argv[0];
6232145Sminshall     while ((argc > 1) && (argv[1][0] == '-')) {
6332145Sminshall 	if (!strcmp(argv[1], "-d")) {
6432145Sminshall 	    debug = 1;
6532145Sminshall 	} else if (!strcmp(argv[1], "-n")) {
6632145Sminshall 	    if ((argc > 1) && (argv[2][0] != '-')) {	/* get file name */
6738689Sborman 		SetNetTrace(argv[2]);
6832145Sminshall 		argv++;
6932145Sminshall 		argc--;
7032145Sminshall 	    }
7132145Sminshall 	} else {
7232145Sminshall #if	defined(TN3270) && defined(unix)
7332145Sminshall 	    if (!strcmp(argv[1], "-t")) {
7432145Sminshall 		if ((argc > 1) && (argv[2][0] != '-')) { /* get file name */
7532145Sminshall 		    transcom = tline;
7635717Smckusick 		    (void) strcpy(transcom, argv[2]);
7732145Sminshall 		    argv++;
7832145Sminshall 		    argc--;
7932145Sminshall 		}
8032145Sminshall 	    } else if (!strcmp(argv[1], "-noasynch")) {
8136242Sminshall 		noasynchtty = 1;
8236242Sminshall 		noasynchnet = 1;
8336242Sminshall 	    } else if (!strcmp(argv[1], "-noasynchtty")) {
8436242Sminshall 		noasynchtty = 1;
8536242Sminshall 	    } else if (!strcmp(argv[1], "-noasynchnet")) {
8636242Sminshall 		noasynchnet = 1;
8732145Sminshall 	    } else
8832145Sminshall #endif	/* defined(TN3270) && defined(unix) */
8932145Sminshall 	    if (argv[1][1] != '\0') {
9032145Sminshall 		fprintf(stderr, "Unknown option *%s*.\n", argv[1]);
9132145Sminshall 	    }
9232145Sminshall 	}
9332145Sminshall 	argc--;
9432145Sminshall 	argv++;
9532145Sminshall     }
9632145Sminshall     if (argc != 1) {
9732145Sminshall 	if (setjmp(toplevel) != 0)
9832145Sminshall 	    Exit(0);
9934849Sminshall 	if (tn(argc, argv) == 1) {
10034849Sminshall 	    return 0;
10134849Sminshall 	} else {
10234849Sminshall 	    return 1;
10334849Sminshall 	}
10432145Sminshall     }
10534849Sminshall     (void) setjmp(toplevel);
10632145Sminshall     for (;;) {
10732145Sminshall #if	!defined(TN3270)
10838689Sborman 	command(1, 0, 0);
10932145Sminshall #else	/* !defined(TN3270) */
11032145Sminshall 	if (!shell_active) {
11138689Sborman 	    command(1, 0, 0);
11232145Sminshall 	} else {
11332145Sminshall #if	defined(TN3270)
11432145Sminshall 	    shell_continue();
11532145Sminshall #endif	/* defined(TN3270) */
11632145Sminshall 	}
11732145Sminshall #endif	/* !defined(TN3270) */
11832145Sminshall     }
11932145Sminshall }
120