backward allocation
authorEdward Wang <edward@ucbvax.Berkeley.EDU>
Mon, 16 Apr 1984 07:49:46 +0000 (23:49 -0800)
committerEdward Wang <edward@ucbvax.Berkeley.EDU>
Mon, 16 Apr 1984 07:49:46 +0000 (23:49 -0800)
SCCS-vsn: usr.bin/window/wwpty.c 3.8

usr/src/usr.bin/window/wwpty.c

index 81bd6f3..b5c6467 100644 (file)
@@ -1,9 +1,14 @@
 #ifndef lint
 #ifndef lint
-static char *sccsid = "@(#)wwpty.c     3.7 84/03/02";
+static char *sccsid = "@(#)wwpty.c     3.8 84/04/15";
 #endif
 
 #include "ww.h"
 
 #endif
 
 #include "ww.h"
 
+/*
+ * To satisfy Chris, we allocate pty's backwards, and if
+ * there are more than the ptyp's (i.e. the ptyq's)
+ * on the machine, we don't use the p's.
+ */
 wwgetpty(w)
 register struct ww *w;
 {
 wwgetpty(w)
 register struct ww *w;
 {
@@ -11,19 +16,24 @@ register struct ww *w;
        register int i;
        int tty;
        int on = 1;
        register int i;
        int tty;
        int on = 1;
+       int count = -1;
 #define PTY "/dev/XtyXX"
 #define _PT    5
 #define _PQRS  8
 #define _0_9   9
 
        (void) strcpy(w->ww_ttyname, PTY);
 #define PTY "/dev/XtyXX"
 #define _PT    5
 #define _PQRS  8
 #define _0_9   9
 
        (void) strcpy(w->ww_ttyname, PTY);
-       for (c = 'p'; c <= 's'; c++) {
+       for (c = 's'; c >= 'p'; c--) {
                w->ww_ttyname[_PT] = 'p';
                w->ww_ttyname[_PQRS] = c;
                w->ww_ttyname[_0_9] = '0';
                if (access(w->ww_ttyname, 0) < 0)
                w->ww_ttyname[_PT] = 'p';
                w->ww_ttyname[_PQRS] = c;
                w->ww_ttyname[_0_9] = '0';
                if (access(w->ww_ttyname, 0) < 0)
+                       continue;
+               if (count < 0 && (count = c - 'p' - 1) == 0)
+                       count = 1;
+               if (--count < 0)
                        break;
                        break;
-               for (i = 0; i < 16; i++) {
+               for (i = 15; i >= 0; i--) {
                        w->ww_ttyname[_PT] = 'p';
                        w->ww_ttyname[_0_9] = "0123456789abcdef"[i];
                        if ((w->ww_pty = open(w->ww_ttyname, 2)) < 0)
                        w->ww_ttyname[_PT] = 'p';
                        w->ww_ttyname[_0_9] = "0123456789abcdef"[i];
                        if ((w->ww_pty = open(w->ww_ttyname, 2)) < 0)