|
|
1.1 ! root 1: /* ! 2: * Copyright (c) 1983 Regents of the University of California. ! 3: * All rights reserved. ! 4: * ! 5: * Redistribution and use in source and binary forms are permitted ! 6: * provided that the above copyright notice and this paragraph are ! 7: * duplicated in all such forms and that any documentation, ! 8: * advertising materials, and other materials related to such ! 9: * distribution and use acknowledge that the software was developed ! 10: * by the University of California, Berkeley. The name of the ! 11: * University may not be used to endorse or promote products derived ! 12: * from this software without specific prior written permission. ! 13: * THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR ! 14: * IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED ! 15: * WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE. ! 16: */ ! 17: ! 18: #ifndef lint ! 19: static char sccsid[] = "@(#)main.c 3.33 (Berkeley) 6/29/88"; ! 20: #endif /* not lint */ ! 21: ! 22: #include "defs.h" ! 23: #include <sys/signal.h> ! 24: #include <stdio.h> ! 25: #include "string.h" ! 26: #include "char.h" ! 27: #include "local.h" ! 28: ! 29: #define next(a) (*++*(a) ? *(a) : (*++(a) ? *(a) : (char *)usage())) ! 30: ! 31: /*ARGSUSED*/ ! 32: main(argc, argv) ! 33: char **argv; ! 34: { ! 35: register char *p; ! 36: char fflag = 0; ! 37: char dflag = 0; ! 38: char xflag = 0; ! 39: char *cmd = 0; ! 40: char tflag = 0; ! 41: ! 42: nbufline = NLINE; ! 43: escapec = ESCAPEC; ! 44: if (p = rindex(*argv, '/')) ! 45: p++; ! 46: else ! 47: p = *argv; ! 48: debug = strcmp(p, "a.out") == 0; ! 49: while (*++argv) { ! 50: if (**argv == '-') { ! 51: switch (*++*argv) { ! 52: case 'f': ! 53: fflag++; ! 54: break; ! 55: case 'c': ! 56: if (cmd != 0) { ! 57: (void) fprintf(stderr, ! 58: "Only one -c allowed.\n"); ! 59: (void) usage(); ! 60: } ! 61: cmd = next(argv); ! 62: break; ! 63: case 'e': ! 64: setescape(next(argv)); ! 65: break; ! 66: case 't': ! 67: tflag++; ! 68: break; ! 69: case 'd': ! 70: dflag++; ! 71: break; ! 72: case 'D': ! 73: debug = !debug; ! 74: break; ! 75: case 'x': ! 76: xflag++; ! 77: break; ! 78: default: ! 79: (void) usage(); ! 80: } ! 81: } else ! 82: (void) usage(); ! 83: } ! 84: if ((p = getenv("SHELL")) == 0) ! 85: p = SHELL; ! 86: if ((shellfile = str_cpy(p)) == 0) ! 87: nomem(); ! 88: if (p = rindex(shellfile, '/')) ! 89: p++; ! 90: else ! 91: p = shellfile; ! 92: shell[0] = p; ! 93: shell[1] = 0; ! 94: (void) gettimeofday(&starttime, (struct timezone *)0); ! 95: if (wwinit() < 0) { ! 96: (void) fprintf(stderr, "%s.\n", wwerror()); ! 97: exit(1); ! 98: } ! 99: if (debug) ! 100: wwnewtty.ww_tchars.t_quitc = wwoldtty.ww_tchars.t_quitc; ! 101: if (xflag) { ! 102: wwnewtty.ww_tchars.t_stopc = wwoldtty.ww_tchars.t_stopc; ! 103: wwnewtty.ww_tchars.t_startc = wwoldtty.ww_tchars.t_startc; ! 104: } ! 105: if (debug || xflag) ! 106: (void) wwsettty(0, &wwnewtty, &wwoldtty); ! 107: ! 108: if ((cmdwin = wwopen(wwbaud > 2400 ? WWO_REVERSE : 0, 1, wwncol, ! 109: 0, 0, 0)) == 0) { ! 110: (void) wwflush(); ! 111: (void) fprintf(stderr, "%s.\r\n", wwerror()); ! 112: goto bad; ! 113: } ! 114: cmdwin->ww_mapnl = 1; ! 115: cmdwin->ww_nointr = 1; ! 116: cmdwin->ww_noupdate = 1; ! 117: cmdwin->ww_unctrl = 1; ! 118: if ((framewin = wwopen(WWO_GLASS|WWO_FRAME, wwnrow, wwncol, 0, 0, 0)) ! 119: == 0) { ! 120: (void) wwflush(); ! 121: (void) fprintf(stderr, "%s.\r\n", wwerror()); ! 122: goto bad; ! 123: } ! 124: wwadd(framewin, &wwhead); ! 125: if ((boxwin = wwopen(WWO_GLASS, wwnrow, wwncol, 0, 0, 0)) == 0) { ! 126: (void) wwflush(); ! 127: (void) fprintf(stderr, "%s.\r\n", wwerror()); ! 128: goto bad; ! 129: } ! 130: fgwin = framewin; ! 131: ! 132: wwupdate(); ! 133: wwflush(); ! 134: (void) signal(SIGCHLD, wwchild); ! 135: setvars(); ! 136: ! 137: setterse(tflag); ! 138: setcmd(1); ! 139: if (cmd != 0) ! 140: (void) dolongcmd(cmd, (struct value *)0, 0); ! 141: if (!fflag) { ! 142: if (dflag || doconfig() < 0) ! 143: dodefault(); ! 144: if (selwin != 0) ! 145: setcmd(0); ! 146: } ! 147: ! 148: mloop(); ! 149: ! 150: bad: ! 151: wwend(); ! 152: return 0; ! 153: } ! 154: ! 155: usage() ! 156: { ! 157: (void) fprintf(stderr, "Usage: window [-e escape-char] [-c command] [-t] [-f] [-d]\n"); ! 158: exit(1); ! 159: return 0; /* for lint */ ! 160: } ! 161: ! 162: nomem() ! 163: { ! 164: (void) fprintf(stderr, "Out of memory.\n"); ! 165: exit(1); ! 166: }
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.