home *** CD-ROM | disk | FTP | other *** search
- Newsgroups: comp.sources.unix
- From: thoth@lightning.cis.ufl.edu (Robert H. Forsman, Jr)
- Subject: v26i096: netpipes -- BSD network pipe tools, Patch01
- Sender: unix-sources-moderator@vix.com
- Approved: paul@vix.com
-
- Submitted-By: thoth@lightning.cis.ufl.edu (Robert H. Forsman, Jr)
- Posting-Number: Volume 26, Issue 96
- Archive-Name: netpipes/patch01
-
- This patch allows netpipes to compile on systems without fcntl (so
- I'm told) and it also fixes a silly little error with unix-domain
- sockets. It seems I assumed that a sockaddr would hold any socket
- address (bzzt, have a consolation blender).
-
- thoth@beach.cis.ufl.edu (Robert Forsman)
-
- *** /tmp/,RCSt1a01018 Mon Dec 7 11:32:21 1992
- --- /tmp/,RCSt2a01018 Mon Dec 7 11:32:22 1992
- ***************
- *** 1,5 ****
- .\" faucet.1 Copyright 3/30/1992 by Robert Forsman
- ! .TH FAUCET 1 "Mar 30 1992"
- .SH NAME
- faucet - a fixture for a BSD network pipe
- .SH SYNOPSIS
- --- 1,5 ----
- .\" faucet.1 Copyright 3/30/1992 by Robert Forsman
- ! .TH FAUCET 1 "Nov 21 1992"
- .SH NAME
- faucet - a fixture for a BSD network pipe
- .SH SYNOPSIS
- ***************
- *** 124,129 ****
- --- 124,133 ----
- Doubtless there are bugs in this program, especially in the unix domain
- socket portions. I welcome problem reports and would like to make
- these programs as "clean" (no leftover files, sockets) as possible.
- +
- + .SH "CREDITS"
- + .LP
- + Thanks to Steve Clift <clift@ml.csiro.au> for SGI (SysV) patches.
-
- .SH "COPYRIGHT"
- Copyright (C) 1992 Robert Forsman
- *** /tmp/,RCSt1a01018 Mon Dec 7 11:32:22 1992
- --- /tmp/,RCSt2a01018 Mon Dec 7 11:32:22 1992
- ***************
- *** 331,337 ****
- /* We don't want the unix domain socket anymore */
-
- dup2(fileno(stderr),mastersocket);
- ! ioctl(mastersocket,FIOCLEX,NULL);
- /* We don't need old stderr hanging around after an exec.
- The mastersocket has been closed by the dup2 */
-
- --- 331,337 ----
- /* We don't want the unix domain socket anymore */
-
- dup2(fileno(stderr),mastersocket);
- ! fcntl(mastersocket,F_SETFD,FD_CLOEXEC);
- /* We don't need old stderr hanging around after an exec.
- The mastersocket has been closed by the dup2 */
-
- *** /tmp/,RCSt1a01018 Mon Dec 7 11:32:23 1992
- --- /tmp/,RCSt2a01018 Mon Dec 7 11:32:23 1992
- ***************
- *** 1,5 ****
- .\" hose.1 Copyright 3/30/1992 by Robert Forsman
- ! .TH HOSE 1 "Mar 30 1992"
- .SH NAME
- hose - the client end of a BSD network pipe
- .SH SYNOPSIS
- --- 1,5 ----
- .\" hose.1 Copyright 3/30/1992 by Robert Forsman
- ! .TH HOSE 1 "Nov 21 1992"
- .SH NAME
- hose - the client end of a BSD network pipe
- .SH SYNOPSIS
- ***************
- *** 92,97 ****
- --- 92,101 ----
- Doubtless there are bugs in this program, especially in the unix domain
- socket portions. I welcome problem reports and would like to make
- these programs as "clean" (no leftover files, sockets) as possible.
- +
- + .SH "CREDITS"
- + .LP
- + Thanks to Steve Clift <clift@ml.csiro.au> for SGI (SysV) patches.
-
- .SH "COPYRIGHT"
- Copyright (C) 1992 Robert Forsman
- *** /tmp/,RCSt1a01018 Mon Dec 7 11:32:23 1992
- --- /tmp/,RCSt2a01018 Mon Dec 7 11:32:23 1992
- ***************
- *** 191,197 ****
- char *s;
-
- sparefd = dup(fileno(stderr));
- ! ioctl(sparefd,FIOCLEX,NULL);
-
- if (!(doflags & DOSTDIN))
- dup2(rval,fileno(stdin));
- --- 191,197 ----
- char *s;
-
- sparefd = dup(fileno(stderr));
- ! fcntl(sparefd,F_SETFD,FD_CLOEXEC);
-
- if (!(doflags & DOSTDIN))
- dup2(rval,fileno(stdin));
- ***************
- *** 212,218 ****
- char *s;
-
- sparefd = dup(fileno(stderr));
- ! ioctl(sparefd,FIOCLEX,NULL);
-
- if (doflags & DOSTDIN)
- dup2(rval,fileno(stdin));
- --- 212,218 ----
- char *s;
-
- sparefd = dup(fileno(stderr));
- ! fcntl(sparefd,F_SETFD,FD_CLOEXEC);
-
- if (doflags & DOSTDIN)
- dup2(rval,fileno(stdin));
- *** /tmp/,RCSt1a01018 Mon Dec 7 11:32:24 1992
- --- /tmp/,RCSt2a01018 Mon Dec 7 11:32:24 1992
- ***************
- *** 74,83 ****
- --- 74,87 ----
- count = sscanf(name,"%i.%i.%i.%i%n", &a1, &a2, &a3, &a4, &len);
- if (4!=count || 0!=name[len] )
- return 0;
- + #if 1
- + addr->s_addr = (((((a1 << 8) | a2) << 8) | a3) << 8) | a4;
- + #else
- addr->S_un.S_un_b.s_b1 = a1;
- addr->S_un.S_un_b.s_b2 = a2;
- addr->S_un.S_un_b.s_b3 = a3;
- addr->S_un.S_un_b.s_b4 = a4;
- + #endif
- }
- return 1;
- }
- ***************
- *** 88,123 ****
- int fd, domain;
- char *name;
- {
- ! struct sockaddr laddr;
- int countdown;
- int rval;
-
- if (domain==AF_INET)
- {
- ! struct sockaddr_in *srv = (struct sockaddr_in*)&laddr;
-
- ! srv->sin_family = AF_INET;
- ! srv->sin_addr.s_addr = INADDR_ANY;
-
- ! srv->sin_port = name_to_inet_port(name);
-
- ! if (srv->sin_port==0)
- {
- fprintf(stderr, "port %s unknown\n", name);
- return 0;
- }
- }
- else
- {
- ! struct sockaddr_un *srv = (struct sockaddr_un *)&laddr;
-
- ! srv->sun_family = AF_UNIX;
- ! strcpy(srv->sun_path, name);
- }
-
- countdown= (domain==AF_UNIX)?1:10;
- do {
- ! rval = bind(fd, &laddr, sizeof(laddr));
- if (rval)
- if (errno==EADDRINUSE && --countdown>0)
- {
- --- 92,133 ----
- int fd, domain;
- char *name;
- {
- ! struct sockaddr *laddr;
- ! int addrlen;
- int countdown;
- int rval;
-
- if (domain==AF_INET)
- {
- ! static struct sockaddr_in srv;
- ! laddr = (struct sockaddr*)&srv;
- ! addrlen = sizeof(srv);
-
- ! srv.sin_family = AF_INET;
- ! srv.sin_addr.s_addr = INADDR_ANY;
-
- ! srv.sin_port = name_to_inet_port(name);
-
- ! if (srv.sin_port==0)
- {
- fprintf(stderr, "port %s unknown\n", name);
- + errno = 0;
- return 0;
- }
- }
- else
- {
- ! static struct sockaddr_un srv;
- ! laddr = (struct sockaddr*)&srv;
- ! addrlen = sizeof(srv);
-
- ! srv.sun_family = AF_UNIX;
- ! strcpy(srv.sun_path, name);
- }
-
- countdown= (domain==AF_UNIX)?1:10;
- do {
- ! rval = bind(fd, laddr, addrlen);
- if (rval)
- if (errno==EADDRINUSE && --countdown>0)
- {
-