select kludge
[unix-history] / usr / src / usr.bin / window / wwinit.c
index 31a4f5d..169135e 100644 (file)
@@ -1,5 +1,5 @@
 #ifndef lint
 #ifndef lint
-static char sccsid[] = "@(#)wwinit.c   3.20 %G%";
+static char sccsid[] = "@(#)wwinit.c   3.23 %G%";
 #endif
 
 #include "ww.h"
 #endif
 
 #include "ww.h"
@@ -13,11 +13,13 @@ wwinit()
        register i, j;
        char *kp;
        register char **p, **q;
        register i, j;
        char *kp;
        register char **p, **q;
-       char **env, **termcap;
+       char **env, **termcap = 0;
        extern char **environ;
        int s;
 
        wwdtablesize = getdtablesize();
        extern char **environ;
        int s;
 
        wwdtablesize = getdtablesize();
+       if (wwdtablesize > 32)                          /* XXX */
+               wwdtablesize = 32;
        wwhead.ww_forw = &wwhead;
        wwhead.ww_back = &wwhead;
 
        wwhead.ww_forw = &wwhead;
        wwhead.ww_back = &wwhead;
 
@@ -49,8 +51,7 @@ wwinit()
        wwnewtty.ww_lmode = wwoldtty.ww_lmode | LLITOUT;
        wwnewtty.ww_ldisc = wwoldtty.ww_ldisc;
        wwnewtty.ww_fflags = wwoldtty.ww_fflags | FASYNC;
        wwnewtty.ww_lmode = wwoldtty.ww_lmode | LLITOUT;
        wwnewtty.ww_ldisc = wwoldtty.ww_ldisc;
        wwnewtty.ww_fflags = wwoldtty.ww_fflags | FASYNC;
-
-       if (wwsettty(0, &wwnewtty) < 0)
+       if (wwsettty(0, &wwnewtty, &wwoldtty) < 0)
                goto bad;
 
        if ((wwterm = getenv("TERM")) == 0) {
                goto bad;
 
        if ((wwterm = getenv("TERM")) == 0) {
@@ -158,7 +159,7 @@ bad:
         * Don't bother to free storage.  We're supposed
         * to exit when wwinit fails anyway.
         */
         * Don't bother to free storage.  We're supposed
         * to exit when wwinit fails anyway.
         */
-       (void) wwsettty(0, &wwoldtty);
+       (void) wwsettty(0, &wwoldtty, &wwnewtty);
        (void) signal(SIGIO, SIG_DFL);
        (void) sigsetmask(s);
        return -1;
        (void) signal(SIGIO, SIG_DFL);
        (void) sigsetmask(s);
        return -1;