sp_protocol is short, not u_short
[unix-history] / usr / src / sys / kern / tty_tty.c
index 888fc85..574b65d 100644 (file)
@@ -1,7 +1,9 @@
-/*     tty_tty.c       4.2     %G%     */
+/*     tty_tty.c       4.6     82/01/19        */
 
 /*
 
 /*
- *     indirect driver for controlling tty.
+ * Indirect driver for controlling tty.
+ *
+ * THIS IS GARBAGE: MUST SOON BE DONE WITH struct inode * IN PROC TABLE.
  */
 #include "../h/param.h"
 #include "../h/systm.h"
  */
 #include "../h/param.h"
 #include "../h/systm.h"
@@ -15,7 +17,7 @@
 syopen(dev, flag)
 {
 
 syopen(dev, flag)
 {
 
-       if(u.u_ttyp == NULL || (u.u_procp->p_flag&SDETACH)) {
+       if (u.u_ttyp == NULL) {
                u.u_error = ENXIO;
                return;
        }
                u.u_error = ENXIO;
                return;
        }
@@ -26,7 +28,7 @@ syopen(dev, flag)
 syread(dev)
 {
 
 syread(dev)
 {
 
-       if (u.u_procp->p_flag&SDETACH) {
+       if (u.u_ttyp == NULL) {
                u.u_error = ENXIO;
                return;
        }
                u.u_error = ENXIO;
                return;
        }
@@ -37,7 +39,7 @@ syread(dev)
 sywrite(dev)
 {
 
 sywrite(dev)
 {
 
-       if (u.u_procp->p_flag&SDETACH) {
+       if (u.u_ttyp == NULL) {
                u.u_error = ENXIO;
                return;
        }
                u.u_error = ENXIO;
                return;
        }
@@ -49,9 +51,25 @@ syioctl(dev, cmd, addr, flag)
 caddr_t addr;
 {
 
 caddr_t addr;
 {
 
-       if (u.u_procp->p_flag&SDETACH) {
+       if (cmd == TIOCNOTTY) {
+               u.u_ttyp = 0;
+               u.u_ttyd = 0;
+               u.u_procp->p_pgrp = 0;
+               return;
+       }
+       if (u.u_ttyp == NULL) {
                u.u_error = ENXIO;
                return;
        }
        (*cdevsw[major(u.u_ttyd)].d_ioctl)(u.u_ttyd, cmd, addr, flag);
 }
                u.u_error = ENXIO;
                return;
        }
        (*cdevsw[major(u.u_ttyd)].d_ioctl)(u.u_ttyd, cmd, addr, flag);
 }
+
+syselect(dev, flag)
+{
+
+       if (u.u_ttyp == NULL) {
+               u.u_error = ENXIO;
+               return (0);
+       }
+       return ((*cdevsw[major(u.u_ttyd)].d_select)(dev, flag));
+}