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

  1. Newsgroups: comp.sources.unix
  2. From: thoth@lightning.cis.ufl.edu (Robert H. Forsman, Jr)
  3. Subject: v26i096: netpipes -- BSD network pipe tools, Patch01
  4. Sender: unix-sources-moderator@vix.com
  5. Approved: paul@vix.com
  6.  
  7. Submitted-By: thoth@lightning.cis.ufl.edu (Robert H. Forsman, Jr)
  8. Posting-Number: Volume 26, Issue 96
  9. Archive-Name: netpipes/patch01
  10.  
  11.   This patch allows netpipes to compile on systems without fcntl (so
  12. I'm told) and it also fixes a silly little error with unix-domain
  13. sockets.  It seems I assumed that a sockaddr would hold any socket
  14. address (bzzt, have a consolation blender).
  15.  
  16.     thoth@beach.cis.ufl.edu (Robert Forsman)
  17.  
  18. *** /tmp/,RCSt1a01018    Mon Dec  7 11:32:21 1992
  19. --- /tmp/,RCSt2a01018    Mon Dec  7 11:32:22 1992
  20. ***************
  21. *** 1,5 ****
  22.   .\" faucet.1 Copyright 3/30/1992 by Robert Forsman
  23. ! .TH FAUCET 1 "Mar 30 1992"
  24.   .SH NAME
  25.   faucet - a fixture for a BSD network pipe
  26.   .SH SYNOPSIS
  27. --- 1,5 ----
  28.   .\" faucet.1 Copyright 3/30/1992 by Robert Forsman
  29. ! .TH FAUCET 1 "Nov 21 1992"
  30.   .SH NAME
  31.   faucet - a fixture for a BSD network pipe
  32.   .SH SYNOPSIS
  33. ***************
  34. *** 124,129 ****
  35. --- 124,133 ----
  36.   Doubtless there are bugs in this program, especially in the unix domain
  37.   socket portions.  I welcome problem reports and would like to make
  38.   these programs as "clean" (no leftover files, sockets) as possible.
  39. + .SH "CREDITS"
  40. + .LP
  41. + Thanks to Steve Clift <clift@ml.csiro.au> for SGI (SysV) patches.
  42.   
  43.   .SH "COPYRIGHT"
  44.   Copyright (C) 1992 Robert Forsman
  45. *** /tmp/,RCSt1a01018    Mon Dec  7 11:32:22 1992
  46. --- /tmp/,RCSt2a01018    Mon Dec  7 11:32:22 1992
  47. ***************
  48. *** 331,337 ****
  49.         /* We don't want the unix domain socket anymore */
  50.         
  51.         dup2(fileno(stderr),mastersocket);
  52. !       ioctl(mastersocket,FIOCLEX,NULL);
  53.         /* We don't need old stderr hanging around after an exec.
  54.        The mastersocket has been closed by the dup2 */
  55.         
  56. --- 331,337 ----
  57.         /* We don't want the unix domain socket anymore */
  58.         
  59.         dup2(fileno(stderr),mastersocket);
  60. !       fcntl(mastersocket,F_SETFD,FD_CLOEXEC);
  61.         /* We don't need old stderr hanging around after an exec.
  62.        The mastersocket has been closed by the dup2 */
  63.         
  64. *** /tmp/,RCSt1a01018    Mon Dec  7 11:32:23 1992
  65. --- /tmp/,RCSt2a01018    Mon Dec  7 11:32:23 1992
  66. ***************
  67. *** 1,5 ****
  68.   .\" hose.1 Copyright 3/30/1992 by Robert Forsman
  69. ! .TH HOSE 1 "Mar 30 1992"
  70.   .SH NAME
  71.   hose - the client end of a BSD network pipe
  72.   .SH SYNOPSIS
  73. --- 1,5 ----
  74.   .\" hose.1 Copyright 3/30/1992 by Robert Forsman
  75. ! .TH HOSE 1 "Nov 21 1992"
  76.   .SH NAME
  77.   hose - the client end of a BSD network pipe
  78.   .SH SYNOPSIS
  79. ***************
  80. *** 92,97 ****
  81. --- 92,101 ----
  82.   Doubtless there are bugs in this program, especially in the unix domain
  83.   socket portions.  I welcome problem reports and would like to make
  84.   these programs as "clean" (no leftover files, sockets) as possible.
  85. + .SH "CREDITS"
  86. + .LP
  87. + Thanks to Steve Clift <clift@ml.csiro.au> for SGI (SysV) patches.
  88.   
  89.   .SH "COPYRIGHT"
  90.   Copyright (C) 1992 Robert Forsman
  91. *** /tmp/,RCSt1a01018    Mon Dec  7 11:32:23 1992
  92. --- /tmp/,RCSt2a01018    Mon Dec  7 11:32:23 1992
  93. ***************
  94. *** 191,197 ****
  95.       char *s;
  96.       
  97.       sparefd = dup(fileno(stderr));
  98. !     ioctl(sparefd,FIOCLEX,NULL);
  99.       
  100.       if (!(doflags & DOSTDIN))
  101.         dup2(rval,fileno(stdin));
  102. --- 191,197 ----
  103.       char *s;
  104.       
  105.       sparefd = dup(fileno(stderr));
  106. !     fcntl(sparefd,F_SETFD,FD_CLOEXEC);
  107.       
  108.       if (!(doflags & DOSTDIN))
  109.         dup2(rval,fileno(stdin));
  110. ***************
  111. *** 212,218 ****
  112.       char *s;
  113.       
  114.       sparefd = dup(fileno(stderr));
  115. !     ioctl(sparefd,FIOCLEX,NULL);
  116.       
  117.       if (doflags & DOSTDIN)
  118.         dup2(rval,fileno(stdin));
  119. --- 212,218 ----
  120.       char *s;
  121.       
  122.       sparefd = dup(fileno(stderr));
  123. !     fcntl(sparefd,F_SETFD,FD_CLOEXEC);
  124.       
  125.       if (doflags & DOSTDIN)
  126.         dup2(rval,fileno(stdin));
  127. *** /tmp/,RCSt1a01018    Mon Dec  7 11:32:24 1992
  128. --- /tmp/,RCSt2a01018    Mon Dec  7 11:32:24 1992
  129. ***************
  130. *** 74,83 ****
  131. --- 74,87 ----
  132.         count = sscanf(name,"%i.%i.%i.%i%n", &a1, &a2, &a3, &a4, &len);
  133.         if (4!=count || 0!=name[len] )
  134.       return 0;
  135. + #if 1
  136. +       addr->s_addr = (((((a1 << 8) | a2) << 8) | a3) << 8) | a4;
  137. + #else
  138.         addr->S_un.S_un_b.s_b1 = a1;
  139.         addr->S_un.S_un_b.s_b2 = a2;
  140.         addr->S_un.S_un_b.s_b3 = a3;
  141.         addr->S_un.S_un_b.s_b4 = a4;
  142. + #endif
  143.       }
  144.     return 1;
  145.   }
  146. ***************
  147. *** 88,123 ****
  148.        int    fd, domain;
  149.        char    *name;
  150.   {
  151. !   struct sockaddr    laddr;
  152.     int    countdown;
  153.     int    rval;
  154.     
  155.     if (domain==AF_INET)
  156.       {
  157. !       struct sockaddr_in    *srv = (struct sockaddr_in*)&laddr;
  158.         
  159. !       srv->sin_family = AF_INET;
  160. !       srv->sin_addr.s_addr = INADDR_ANY;
  161.         
  162. !       srv->sin_port = name_to_inet_port(name);
  163.         
  164. !       if (srv->sin_port==0)
  165.       {
  166.         fprintf(stderr, "port %s unknown\n", name);
  167.         return 0;
  168.       }
  169.       }
  170.     else
  171.       {
  172. !       struct sockaddr_un    *srv = (struct sockaddr_un *)&laddr;
  173.         
  174. !       srv->sun_family = AF_UNIX;
  175. !       strcpy(srv->sun_path, name);
  176.       }
  177.     
  178.     countdown= (domain==AF_UNIX)?1:10;
  179.     do {
  180. !     rval = bind(fd, &laddr, sizeof(laddr));
  181.       if (rval)
  182.         if (errno==EADDRINUSE && --countdown>0)
  183.       {
  184. --- 92,133 ----
  185.        int    fd, domain;
  186.        char    *name;
  187.   {
  188. !   struct sockaddr    *laddr;
  189. !   int    addrlen;
  190.     int    countdown;
  191.     int    rval;
  192.     
  193.     if (domain==AF_INET)
  194.       {
  195. !       static struct sockaddr_in    srv;
  196. !       laddr = (struct sockaddr*)&srv;
  197. !       addrlen = sizeof(srv);
  198.         
  199. !       srv.sin_family = AF_INET;
  200. !       srv.sin_addr.s_addr = INADDR_ANY;
  201.         
  202. !       srv.sin_port = name_to_inet_port(name);
  203.         
  204. !       if (srv.sin_port==0)
  205.       {
  206.         fprintf(stderr, "port %s unknown\n", name);
  207. +       errno = 0;
  208.         return 0;
  209.       }
  210.       }
  211.     else
  212.       {
  213. !       static struct sockaddr_un    srv;
  214. !       laddr = (struct sockaddr*)&srv;
  215. !       addrlen = sizeof(srv);
  216.         
  217. !       srv.sun_family = AF_UNIX;
  218. !       strcpy(srv.sun_path, name);
  219.       }
  220.     
  221.     countdown= (domain==AF_UNIX)?1:10;
  222.     do {
  223. !     rval = bind(fd, laddr, addrlen);
  224.       if (rval)
  225.         if (errno==EADDRINUSE && --countdown>0)
  226.       {
  227.