home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Usenet 1994 October
/
usenetsourcesnewsgroupsinfomagicoctober1994disk2.iso
/
unix
/
volume26
/
netpipes
/
patch01
< prev
next >
Wrap
Text File
|
1993-04-04
|
6KB
|
229 lines
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)
{