113920Sedward #ifndef lint 2*16253Sedward static char *sccsid = "@(#)main.c 3.17 84/03/29"; 313920Sedward #endif 413920Sedward 513969Sedward #include "defs.h" 616110Sedward #include <sys/signal.h> 716110Sedward #include <stdio.h> 813920Sedward 914286Sedward #define next(a) (*++*(a) ? *(a) : (*++(a) ? *(a) : (char *)usage())) 1014169Sedward 1114407Sedward /*ARGSUSED*/ 1214169Sedward main(argc, argv) 1314169Sedward char **argv; 1413920Sedward { 1513920Sedward register char *p; 1614677Sedward char fflag = 0; 1714677Sedward char dflag = 0; 1814846Sedward char xflag = 0; 1913920Sedward 2014286Sedward if (p = rindex(*argv, '/')) 2114286Sedward p++; 2214286Sedward else 2314286Sedward p = *argv; 2414286Sedward debug = strcmp(p, "a.out") == 0; 2514169Sedward while (*++argv) { 2614169Sedward if (**argv == '-') { 2714169Sedward switch (*++*argv) { 2814286Sedward case 'f': 2914677Sedward fflag++; 3014286Sedward break; 3114169Sedward case 'e': 3214169Sedward setescape(next(argv)); 3314169Sedward break; 3414169Sedward case 't': 3514169Sedward terse++; 3614169Sedward break; 3714286Sedward case 'd': 3814677Sedward dflag++; 3914677Sedward break; 4014677Sedward case 'D': 4115025Sedward debug = !debug; 4214286Sedward break; 4314846Sedward case 'x': 4414846Sedward xflag++; 4514846Sedward break; 4614169Sedward default: 4714407Sedward (void) usage(); 4814169Sedward } 4914169Sedward } else 5014407Sedward (void) usage(); 5114169Sedward } 5216231Sedward nbufline = 48; /* compatible */ 5316231Sedward escapec = CTRL(p); 5414286Sedward if ((shell = getenv("SHELL")) == 0) 5514286Sedward shell = "/bin/csh"; 5614286Sedward if (shellname = rindex(shell, '/')) 5714286Sedward shellname++; 5814286Sedward else 5914286Sedward shellname = shell; 6015360Sedward #ifndef O_4_1A 6116110Sedward (void) gettimeofday(&starttime, (struct timezone *)0); 6215360Sedward #endif 6313962Sedward if (wwinit() < 0) { 6414895Sedward (void) fprintf(stderr, "%s.\n", wwerror()); 6513962Sedward exit(1); 6613962Sedward } 6714846Sedward if (debug) 6814286Sedward wwnewtty.ww_tchars.t_quitc = wwoldtty.ww_tchars.t_quitc; 6914846Sedward if (xflag) { 7014846Sedward wwnewtty.ww_tchars.t_stopc = wwoldtty.ww_tchars.t_stopc; 7114846Sedward wwnewtty.ww_tchars.t_startc = wwoldtty.ww_tchars.t_startc; 7214846Sedward } 7314846Sedward if (debug || xflag) 7414407Sedward (void) wwsettty(0, &wwnewtty); 7514407Sedward 7614407Sedward if ((cmdwin = wwopen(WWO_REVERSE, 1, wwncol, 0, 0, 0)) == 0) { 7714407Sedward (void) wwflush(); 7814895Sedward (void) fprintf(stderr, "%s.\r\n", wwerror()); 7913962Sedward goto bad; 8013962Sedward } 8116110Sedward cmdwin->ww_nointr = 1; 8214772Sedward if ((framewin = wwopen(WWO_GLASS|WWO_FRAME, wwnrow, wwncol, 0, 0, 0)) 8314772Sedward == 0) { 8414407Sedward (void) wwflush(); 8514895Sedward (void) fprintf(stderr, "%s.\r\n", wwerror()); 8614407Sedward goto bad; 8714407Sedward } 8814407Sedward wwadd(framewin, &wwhead); 8914720Sedward if ((boxwin = wwopen(WWO_GLASS, wwnrow, wwncol, 0, 0, 0)) == 0) { 9014720Sedward (void) wwflush(); 9114895Sedward (void) fprintf(stderr, "%s.\r\n", wwerror()); 9214720Sedward goto bad; 9314720Sedward } 94*16253Sedward fgwin = framewin; 95*16253Sedward bgwin = &wwhead; 9614407Sedward 9714407Sedward wwupdate(); 9813969Sedward wwflush(); 9913920Sedward (void) signal(SIGCHLD, wwchild); 10015671Sedward setvars(); 10114895Sedward if (fflag) 10216110Sedward wwcurwin = 0; 10314895Sedward else { 10414407Sedward if (!terse) 10514407Sedward wwadd(cmdwin, &wwhead); 10614677Sedward if (dflag || doconfig() < 0) 10714286Sedward dodefault(); 10814294Sedward if (selwin != 0) { 10916110Sedward wwcurwin = selwin; 11014762Sedward wwcursor(selwin, 0); 11114294Sedward } 11214407Sedward if (!terse) { 11314407Sedward wwdelete(cmdwin); 11414407Sedward reframe(); 11514407Sedward } 11614286Sedward } 11714895Sedward 11814895Sedward mloop(); 11914895Sedward 12014407Sedward wwupdate(); 12114407Sedward wwflush(); 12213920Sedward bad: 12313920Sedward wwend(); 12413920Sedward return 0; 12513920Sedward } 12614169Sedward 12714169Sedward usage() 12814169Sedward { 12914677Sedward (void) fprintf(stderr, "window: [-e escape-char] [-t] [-f] [-d]\n"); 13014454Sedward exit(1); 13114454Sedward return 0; /* for lint */ 13214169Sedward } 133