Annotation of 43BSDReno/usr.bin/telnet/main.c, revision 1.1.1.1

1.1       root        1: /*
                      2:  * Copyright (c) 1988, 1990 Regents of the University of California.
                      3:  * All rights reserved.
                      4:  *
                      5:  * Redistribution and use in source and binary forms are permitted provided
                      6:  * that: (1) source distributions retain this entire copyright notice and
                      7:  * comment, and (2) distributions including binaries display the following
                      8:  * acknowledgement:  ``This product includes software developed by the
                      9:  * University of California, Berkeley and its contributors'' in the
                     10:  * documentation or other materials provided with the distribution and in
                     11:  * all advertising materials mentioning features or use of this software.
                     12:  * Neither the name of the University nor the names of its contributors may
                     13:  * be used to endorse or promote products derived from this software without
                     14:  * specific prior written permission.
                     15:  * THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR IMPLIED
                     16:  * WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF
                     17:  * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
                     18:  */
                     19: 
                     20: #ifndef lint
                     21: char copyright[] =
                     22: "@(#) Copyright (c) 1988, 1990 Regents of the University of California.\n\
                     23:  All rights reserved.\n";
                     24: #endif /* not lint */
                     25: 
                     26: #ifndef lint
                     27: static char sccsid[] = "@(#)main.c     1.15 (Berkeley) 7/27/90";
                     28: #endif /* not lint */
                     29: 
                     30: #include <sys/types.h>
                     31: #include <string.h>
                     32: 
                     33: #include "ring.h"
                     34: #include "externs.h"
                     35: #include "defines.h"
                     36: 
                     37: /*
                     38:  * Initialize variables.
                     39:  */
                     40: void
                     41: tninit()
                     42: {
                     43:        init_terminal();
                     44:        init_network();
                     45:        init_telnet();
                     46:        init_sys();
                     47:        init_3270();
                     48: }
                     49: 
                     50: int    autologin;
                     51: 
                     52: /*
                     53:  * main.  Parse arguments, invoke the protocol or command parser.
                     54:  */
                     55: main(argc, argv)
                     56:        int argc;
                     57:        char *argv[];
                     58: {
                     59:        extern char *optarg;
                     60:        extern int optind;
                     61:        int ch;
                     62:        char *user;
                     63: 
                     64:        tninit();               /* Clear out things */
                     65: #ifdef CRAY
                     66:        _setlist_init();        /* Work around compiler bug */
                     67: #endif
                     68:        TerminalSaveState();
                     69: 
                     70:        if (prompt = rindex(argv[0], '/'))
                     71:                ++prompt;
                     72:        else
                     73:                prompt = argv[0];
                     74: 
                     75:        user = NULL;
                     76:        autologin = 0;
                     77:        while ((ch = getopt(argc, argv, "ade:l:n:")) != EOF)
                     78:                switch(ch) {
                     79:                case 'a':
                     80:                        autologin = 1;
                     81:                        break;
                     82:                case 'd':
                     83:                        debug = 1;
                     84:                        break;
                     85:                case 'e':
                     86:                        set_escape_char(optarg);
                     87:                        break;
                     88:                case 'l':
                     89:                        autologin = 1;
                     90:                        user = optarg;
                     91:                        break;
                     92:                case 'n':
                     93: #if defined(TN3270) && defined(unix)
                     94:                        /* distinguish between "-n oasynch" and "-noasynch" */
                     95:                        if (argv[optind - 1][0] == '-' && argv[optind - 1][1]
                     96:                            == 'n' && argv[optind - 1][2] == 'o') {
                     97:                                if (!strcmp(optarg, "oasynch")) {
                     98:                                        noasynchtty = 1;
                     99:                                        noasynchnet = 1;
                    100:                                } else if (!strcmp(optarg, "oasynchtty"))
                    101:                                        noasynchtty = 1;
                    102:                                } else if (!strcmp(optarg, "oasynchnet"))
                    103:                                        noasynchnet = 1;
                    104:                                }
                    105:                        } else
                    106: #endif /* defined(TN3270) && defined(unix) */
                    107:                                SetNetTrace(optarg);
                    108:                        break;
                    109: #if defined(TN3270) && defined(unix)
                    110:                case 't':
                    111:                        transcom = tline;
                    112:                        (void)strcpy(transcom, optarg);
                    113:                        break;
                    114: #endif
                    115:                case '?':
                    116:                default:
                    117:                        usage();
                    118:                        /* NOTREACHED */
                    119:                }
                    120:        argc -= optind;
                    121:        argv += optind;
                    122: 
                    123:        if (argc) {
                    124:                char *args[7], **argp = args;
                    125: 
                    126:                if (argc > 2)
                    127:                        usage();
                    128:                *argp++ = prompt;
                    129:                if (user) {
                    130:                        *argp++ = "-l";
                    131:                        *argp++ = user;
                    132:                }
                    133:                *argp++ = argv[0];              /* host */
                    134:                if (argc > 1)
                    135:                        *argp++ = argv[1];      /* port */
                    136:                *argp = 0;
                    137: 
                    138:                if (setjmp(toplevel) != 0)
                    139:                        Exit(0);
                    140:                if (tn(argp - args, args) == 1)
                    141:                        return (0);
                    142:                else
                    143:                        return (1);
                    144:        }
                    145:        (void)setjmp(toplevel);
                    146:        for (;;)
                    147: #ifdef TN3270
                    148:                if (shell_active)
                    149:                        shell_continue();
                    150:                else
                    151: #endif
                    152:                        command(1, 0, 0);
                    153: }
                    154: 
                    155: usage()
                    156: {
                    157:        fprintf(stderr, "usage: %s [-a] [ [-l user] host-name [port] ]\n",
                    158:            prompt);
                    159:        exit(1);
                    160: }

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.