/* * Copyright (c) 1988 Regents of the University of California. * All rights reserved. * * Redistribution and use in source and binary forms are permitted * provided that the above copyright notice and this paragraph are * duplicated in all such forms and that any documentation, * advertising materials, and other materials related to such * distribution and use acknowledge that the software was developed * by the University of California, Berkeley. The name of the * University may not be used to endorse or promote products derived * from this software without specific prior written permission. * THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR * IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED * WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE. */ #ifndef lint char copyright[] = "@(#) Copyright (c) 1988 Regents of the University of California.\n\ All rights reserved.\n"; #endif /* not lint */ #ifndef lint static char sccsid[] = "@(#)main.c 1.9 (Berkeley) 09/26/88"; #endif /* not lint */ #include #include "ring.h" #include "externs.h" #include "defines.h" /* * Initialize variables. */ void tninit() { init_terminal(); init_network(); init_telnet(); init_sys(); init_3270(); } /* * main. Parse arguments, invoke the protocol or command parser. */ int main(argc, argv) int argc; char *argv[]; { tninit(); /* Clear out things */ TerminalSaveState(); prompt = argv[0]; while ((argc > 1) && (argv[1][0] == '-')) { if (!strcmp(argv[1], "-d")) { debug = 1; } else if (!strcmp(argv[1], "-n")) { if ((argc > 1) && (argv[2][0] != '-')) { /* get file name */ NetTrace = fopen(argv[2], "w"); argv++; argc--; if (NetTrace == NULL) { NetTrace = stdout; } } } else { #if defined(TN3270) && defined(unix) if (!strcmp(argv[1], "-t")) { if ((argc > 1) && (argv[2][0] != '-')) { /* get file name */ transcom = tline; (void) strcpy(transcom, argv[2]); argv++; argc--; } } else if (!strcmp(argv[1], "-noasynch")) { noasynch = 1; } else #endif /* defined(TN3270) && defined(unix) */ if (argv[1][1] != '\0') { fprintf(stderr, "Unknown option *%s*.\n", argv[1]); } } argc--; argv++; } if (argc != 1) { if (setjmp(toplevel) != 0) Exit(0); if (tn(argc, argv) == 1) { return 0; } else { return 1; } } (void) setjmp(toplevel); for (;;) { #if !defined(TN3270) command(1); #else /* !defined(TN3270) */ if (!shell_active) { command(1); } else { #if defined(TN3270) shell_continue(); #endif /* defined(TN3270) */ } #endif /* !defined(TN3270) */ } }