113920Sedward #ifndef lint 2*15025Sedward static char *sccsid = "@(#)main.c 3.12 83/09/19"; 313920Sedward #endif 413920Sedward 513969Sedward #include "defs.h" 613920Sedward 714286Sedward char escapec = CTRL(p); 814841Sedward int nbufline = 48; /* compatible */ 914169Sedward 1014286Sedward #define next(a) (*++*(a) ? *(a) : (*++(a) ? *(a) : (char *)usage())) 1114169Sedward 1214407Sedward /*ARGSUSED*/ 1314169Sedward main(argc, argv) 1414169Sedward char **argv; 1513920Sedward { 1613920Sedward register char *p; 1714677Sedward char fflag = 0; 1814677Sedward char dflag = 0; 1914846Sedward char xflag = 0; 2014407Sedward struct timezone timezone; 2113920Sedward 2214286Sedward if (p = rindex(*argv, '/')) 2314286Sedward p++; 2414286Sedward else 2514286Sedward p = *argv; 2614286Sedward debug = strcmp(p, "a.out") == 0; 2714169Sedward while (*++argv) { 2814169Sedward if (**argv == '-') { 2914169Sedward switch (*++*argv) { 3014286Sedward case 'f': 3114677Sedward fflag++; 3214286Sedward break; 3314169Sedward case 'e': 3414169Sedward setescape(next(argv)); 3514169Sedward break; 3614169Sedward case 't': 3714169Sedward terse++; 3814169Sedward break; 3914286Sedward case 'd': 4014677Sedward dflag++; 4114677Sedward break; 4214677Sedward case 'D': 43*15025Sedward debug = !debug; 4414286Sedward break; 4514846Sedward case 'x': 4614846Sedward xflag++; 4714846Sedward break; 4814169Sedward default: 4914407Sedward (void) usage(); 5014169Sedward } 5114169Sedward } else 5214407Sedward (void) usage(); 5314169Sedward } 5414286Sedward if ((shell = getenv("SHELL")) == 0) 5514286Sedward shell = "/bin/csh"; 5614286Sedward if (shellname = rindex(shell, '/')) 5714286Sedward shellname++; 5814286Sedward else 5914286Sedward shellname = shell; 6014407Sedward (void) gettimeofday(&starttime, &timezone); 6113962Sedward if (wwinit() < 0) { 6214407Sedward (void) fflush(stdout); 6314895Sedward (void) fprintf(stderr, "%s.\n", wwerror()); 6413962Sedward exit(1); 6513962Sedward } 6614846Sedward if (debug) 6714286Sedward wwnewtty.ww_tchars.t_quitc = wwoldtty.ww_tchars.t_quitc; 6814846Sedward if (xflag) { 6914846Sedward wwnewtty.ww_tchars.t_stopc = wwoldtty.ww_tchars.t_stopc; 7014846Sedward wwnewtty.ww_tchars.t_startc = wwoldtty.ww_tchars.t_startc; 7114846Sedward } 7214846Sedward if (debug || xflag) 7314407Sedward (void) wwsettty(0, &wwnewtty); 7414407Sedward 7514407Sedward if ((cmdwin = wwopen(WWO_REVERSE, 1, wwncol, 0, 0, 0)) == 0) { 7614407Sedward (void) wwflush(); 7714895Sedward (void) fprintf(stderr, "%s.\r\n", wwerror()); 7813962Sedward goto bad; 7913962Sedward } 8014772Sedward if ((framewin = wwopen(WWO_GLASS|WWO_FRAME, wwnrow, wwncol, 0, 0, 0)) 8114772Sedward == 0) { 8214407Sedward (void) wwflush(); 8314895Sedward (void) fprintf(stderr, "%s.\r\n", wwerror()); 8414407Sedward goto bad; 8514407Sedward } 8614407Sedward wwadd(framewin, &wwhead); 8714720Sedward if ((boxwin = wwopen(WWO_GLASS, wwnrow, wwncol, 0, 0, 0)) == 0) { 8814720Sedward (void) wwflush(); 8914895Sedward (void) fprintf(stderr, "%s.\r\n", wwerror()); 9014720Sedward goto bad; 9114720Sedward } 9214407Sedward 9314407Sedward wwupdate(); 9413969Sedward wwflush(); 9513920Sedward (void) signal(SIGCHLD, wwchild); 9614895Sedward if (fflag) 9714895Sedward incmd = 1; 9814895Sedward else { 9914407Sedward if (!terse) 10014407Sedward wwadd(cmdwin, &wwhead); 10114677Sedward if (dflag || doconfig() < 0) 10214286Sedward dodefault(); 10314294Sedward if (selwin != 0) { 10414892Sedward incmd = 0; 10514762Sedward wwcursor(selwin, 0); 10614294Sedward } 10714407Sedward if (!terse) { 10814407Sedward wwdelete(cmdwin); 10914407Sedward reframe(); 11014407Sedward } 11114286Sedward } 11214895Sedward 11314895Sedward mloop(); 11414895Sedward 11514407Sedward wwupdate(); 11614407Sedward wwflush(); 11713920Sedward bad: 11813920Sedward wwend(); 11913920Sedward return 0; 12013920Sedward } 12114169Sedward 12214169Sedward usage() 12314169Sedward { 12414677Sedward (void) fprintf(stderr, "window: [-e escape-char] [-t] [-f] [-d]\n"); 12514454Sedward exit(1); 12614454Sedward return 0; /* for lint */ 12714169Sedward } 128