133685Sbostic /* 233685Sbostic * Copyright (c) 1988 Regents of the University of California. 333685Sbostic * All rights reserved. 433685Sbostic * 542770Sbostic * %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*44361Sborman static char sccsid[] = "@(#)main.c 1.14 (Berkeley) 06/28/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 { 54*44361Sborman char *user = 0; 55*44361Sborman 5632145Sminshall tninit(); /* Clear out things */ 5738689Sborman #ifdef CRAY 5838689Sborman _setlist_init(); /* Work around compiler bug */ 5938689Sborman #endif 6032145Sminshall 6132145Sminshall TerminalSaveState(); 6232145Sminshall 63*44361Sborman prompt = argv[0]; 6432145Sminshall while ((argc > 1) && (argv[1][0] == '-')) { 6532145Sminshall if (!strcmp(argv[1], "-d")) { 6632145Sminshall debug = 1; 6732145Sminshall } else if (!strcmp(argv[1], "-n")) { 6832145Sminshall if ((argc > 1) && (argv[2][0] != '-')) { /* get file name */ 6938689Sborman SetNetTrace(argv[2]); 7032145Sminshall argv++; 7132145Sminshall argc--; 7232145Sminshall } 73*44361Sborman } else if (!strcmp(argv[1], "-l")) { 74*44361Sborman if ((argc > 1) && (argv[2][0] != '-')) { /* get user name */ 75*44361Sborman user = argv[2]; 76*44361Sborman argv++; 77*44361Sborman argc--; 78*44361Sborman } 79*44361Sborman } else if (!strncmp(argv[1], "-e", 2)) { 80*44361Sborman set_escape_char(&argv[1][2]); 8132145Sminshall } else { 8232145Sminshall #if defined(TN3270) && defined(unix) 8332145Sminshall if (!strcmp(argv[1], "-t")) { 8432145Sminshall if ((argc > 1) && (argv[2][0] != '-')) { /* get file name */ 8532145Sminshall transcom = tline; 8635717Smckusick (void) strcpy(transcom, argv[2]); 8732145Sminshall argv++; 8832145Sminshall argc--; 8932145Sminshall } 9032145Sminshall } else if (!strcmp(argv[1], "-noasynch")) { 9136242Sminshall noasynchtty = 1; 9236242Sminshall noasynchnet = 1; 9336242Sminshall } else if (!strcmp(argv[1], "-noasynchtty")) { 9436242Sminshall noasynchtty = 1; 9536242Sminshall } else if (!strcmp(argv[1], "-noasynchnet")) { 9636242Sminshall noasynchnet = 1; 9732145Sminshall } else 9832145Sminshall #endif /* defined(TN3270) && defined(unix) */ 9932145Sminshall if (argv[1][1] != '\0') { 10032145Sminshall fprintf(stderr, "Unknown option *%s*.\n", argv[1]); 10132145Sminshall } 10232145Sminshall } 10332145Sminshall argc--; 10432145Sminshall argv++; 10532145Sminshall } 10632145Sminshall if (argc != 1) { 10732145Sminshall if (setjmp(toplevel) != 0) 10832145Sminshall Exit(0); 109*44361Sborman if (user) { 110*44361Sborman argc += 2; 111*44361Sborman argv -= 2; 112*44361Sborman argv[0] = argv[2]; 113*44361Sborman argv[1] = "-l"; 114*44361Sborman argv[2] = user; 115*44361Sborman } 11634849Sminshall if (tn(argc, argv) == 1) { 11734849Sminshall return 0; 11834849Sminshall } else { 11934849Sminshall return 1; 12034849Sminshall } 12132145Sminshall } 12234849Sminshall (void) setjmp(toplevel); 12332145Sminshall for (;;) { 12432145Sminshall #if !defined(TN3270) 12538689Sborman command(1, 0, 0); 12632145Sminshall #else /* !defined(TN3270) */ 12732145Sminshall if (!shell_active) { 12838689Sborman command(1, 0, 0); 12932145Sminshall } else { 13032145Sminshall #if defined(TN3270) 13132145Sminshall shell_continue(); 13232145Sminshall #endif /* defined(TN3270) */ 13332145Sminshall } 13432145Sminshall #endif /* !defined(TN3270) */ 13532145Sminshall } 13632145Sminshall } 137