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