BSD 4_4 development
authorCSRG <csrg@ucbvax.Berkeley.EDU>
Tue, 14 Feb 1989 10:06:36 +0000 (02:06 -0800)
committerCSRG <csrg@ucbvax.Berkeley.EDU>
Tue, 14 Feb 1989 10:06:36 +0000 (02:06 -0800)
Work on file usr/src/contrib/connectd/old/cd.c

Synthesized-from: CSRG/cd3/4.4

usr/src/contrib/connectd/old/cd.c [new file with mode: 0644]

diff --git a/usr/src/contrib/connectd/old/cd.c b/usr/src/contrib/connectd/old/cd.c
new file mode 100644 (file)
index 0000000..5351758
--- /dev/null
@@ -0,0 +1,69 @@
+#include <sys/types.h>
+#include <sys/socket.h>
+#include <sys/un.h>
+#include <sys/uio.h>
+#include <stdio.h>
+main () {
+       int sock, msgsock, rval, rv ;
+       struct sockaddr_un rqsts;
+       char buf[1024] ;
+
+       sock = socket (AF_UNIX, SOCK_STREAM, 0) ;
+       if (sock < 0) {
+               perror("stream socket") ;
+               exit(1) ;
+       }
+       rqsts.sun_family = AF_UNIX ;
+       strcpy (rqsts.sun_path,"/dev/connect") ;
+       if (bind (sock, &rqsts, sizeof (rqsts))) {
+               perror ("bind /dev/connect") ;
+               exit (1) ;
+       }
+       listen (sock, 5) ;
+       for (;;) {
+               msgsock = accept(sock, 0, 0) ;
+               if (msgsock == -1) {
+                       perror ("accept") ;
+                       continue ;
+               }
+               loop:
+               rv = read (msgsock, buf, 1024) ;
+               if (rv < 0) perror("read") ;
+               else if (rv > 0) {
+               struct msghdr msg ; int fd ;
+       struct iovec iov[1];
+       char filename[32] ;
+                       write (1, "{", 1) ; 
+                       write (1, buf, rv) ; 
+                       write (1, "}\n", 2) ; 
+                       /*strcat(buf, "-connectd responds") ;
+                       write(msgsock, buf, strlen(buf)) ;
+                       if (strncmp(buf,"byebye", 6) == 0) break;
+                       */
+                       
+       strcpy(filename,"a filename") ;
+       msg.msg_name = "";              /* optional address */
+       msg.msg_namelen = 0 ;           /* size of address */
+       /*
+       iov->iov_base = filename;
+       iov->iov_len = sizeof (filename);
+       */
+       iov->iov_base = 0;
+       iov->iov_len = 0 ;
+       msg.msg_iov = iov;
+       msg.msg_iovlen = 1;
+       msg.msg_accrights = (caddr_t) &fd ;             /* access rights sent/received */
+       msg.msg_accrightslen = 4;
+       fd = open (buf, 2) ;
+printf("fd %d \n", fd) ;
+       printf("$rv %d\n", sendmsg (msgsock, &msg, 0) );
+       goto exitx ;
+
+               }
+               if (rv) goto loop ;
+               close (msgsock) ;
+       }
+       exitx:
+       close (sock) ;
+       unlink ("/dev/connect") ;
+}