update from Rick Macklem to generate proper error messages
[unix-history] / usr / src / sys / kern / sys_socket.c
index 168ad23..97864cd 100644 (file)
@@ -1,14 +1,24 @@
 /*
  * Copyright (c) 1982, 1986 Regents of the University of California.
 /*
  * Copyright (c) 1982, 1986 Regents of the University of California.
- * All rights reserved.  The Berkeley software License Agreement
- * specifies the terms and conditions for redistribution.
+ * All rights reserved.
  *
  *
- *     @(#)sys_socket.c        7.1 (Berkeley) %G%
+ * Redistribution and use in source and binary forms are permitted
+ * provided that the above copyright notice and this paragraph are
+ * duplicated in all such forms and that any documentation,
+ * advertising materials, and other materials related to such
+ * distribution and use acknowledge that the software was developed
+ * by the University of California, Berkeley.  The name of the
+ * University may not be used to endorse or promote products derived
+ * from this software without specific prior written permission.
+ * THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR
+ * IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED
+ * WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE.
+ *
+ *     @(#)sys_socket.c        7.5 (Berkeley) %G%
  */
 
 #include "param.h"
 #include "systm.h"
  */
 
 #include "param.h"
 #include "systm.h"
-#include "dir.h"
 #include "user.h"
 #include "file.h"
 #include "mbuf.h"
 #include "user.h"
 #include "file.h"
 #include "mbuf.h"
 #include "../net/if.h"
 #include "../net/route.h"
 
 #include "../net/if.h"
 #include "../net/route.h"
 
-int    soo_rw(), soo_ioctl(), soo_select(), soo_close();
+int    soo_read(), soo_write(), soo_ioctl(), soo_select(), soo_close();
 struct fileops socketops =
 struct fileops socketops =
-    { soo_rw, soo_ioctl, soo_select, soo_close };
+    { soo_read, soo_write, soo_ioctl, soo_select, soo_close };
+
+/* ARGSUSED */
+soo_read(fp, uio, cred)
+       struct file *fp;
+       struct uio *uio;
+       struct ucred *cred;
+{
+
+       return (soreceive((struct socket *)fp->f_data, (struct mbuf **)0,
+               uio, (int *)0, (struct mbuf **)0, (struct mbuf **)0));
+}
 
 
-soo_rw(fp, rw, uio)
+/* ARGSUSED */
+soo_write(fp, uio, cred)
        struct file *fp;
        struct file *fp;
-       enum uio_rw rw;
        struct uio *uio;
        struct uio *uio;
+       struct ucred *cred;
 {
 {
-       int soreceive(), sosend();
 
 
-       return (
-           (*(rw==UIO_READ?soreceive:sosend))
-             ((struct socket *)fp->f_data, 0, uio, 0, 0));
+       return (sosend((struct socket *)fp->f_data, (struct mbuf *)0,
+               uio, 0, (struct mbuf *)0, (struct mbuf *)0));
 }
 
 soo_ioctl(fp, cmd, data)
 }
 
 soo_ioctl(fp, cmd, data)
@@ -66,11 +86,11 @@ soo_ioctl(fp, cmd, data)
                return (0);
 
        case SIOCSPGRP:
                return (0);
 
        case SIOCSPGRP:
-               so->so_pgrp = *(int *)data;
+               so->so_pgid = *(int *)data;
                return (0);
 
        case SIOCGPGRP:
                return (0);
 
        case SIOCGPGRP:
-               *(int *)data = so->so_pgrp;
+               *(int *)data = so->so_pgid;
                return (0);
 
        case SIOCATMARK:
                return (0);
 
        case SIOCATMARK:
@@ -145,7 +165,7 @@ soo_close(fp)
        struct file *fp;
 {
        int error = 0;
        struct file *fp;
 {
        int error = 0;
-       
+
        if (fp->f_data)
                error = soclose((struct socket *)fp->f_data);
        fp->f_data = 0;
        if (fp->f_data)
                error = soclose((struct socket *)fp->f_data);
        fp->f_data = 0;