home *** CD-ROM | disk | FTP | other *** search
/ ftp.ncftp.com / ftp.ncftp.com.zip / ftp.ncftp.com / ncftp / older_versions / ncftp-3.2.2-src.tar.bz2 / ncftp-3.2.2-src.tar / ncftp-3.2.2 / sio / UNew.c < prev    next >
C/C++ Source or Header  |  2003-08-31  |  2KB  |  121 lines

  1. #include "syshdrs.h"
  2. #ifdef PRAGMA_HDRSTOP
  3. #    pragma hdrstop
  4. #endif
  5.  
  6. int
  7. MakeSockAddrUn(struct sockaddr_un *uaddr, const char *const sockfile)
  8. {
  9.     int ualen;
  10.     
  11.     if ((uaddr == NULL) || (sockfile == NULL)) {
  12.         errno = EINVAL;
  13.         return (-1);
  14.     }
  15.  
  16.     memset(uaddr, 0, sizeof(struct sockaddr_un));
  17.     uaddr->sun_family = AF_UNIX;
  18.     strncpy(uaddr->sun_path, sockfile, sizeof(uaddr->sun_path) - 1);
  19. #ifdef HAVE_SOCKADDR_UN_SUN_LEN
  20.         /* 4.3bsd-reno */
  21.     ualen = (int) sizeof(uaddr->sun_len) + (int) sizeof(uaddr->sun_family) + (int) strlen(uaddr->sun_path) + 1;
  22.     uaddr->sun_len = ualen;
  23. #else
  24.     ualen = (int) sizeof(uaddr->sun_family) + (int) strlen(uaddr->sun_path) + 1;
  25. #endif
  26.     return (ualen);
  27. }    /* MakeSockAddrUn */
  28.  
  29.  
  30.  
  31.  
  32. int
  33. UNewStreamClient(void)
  34. {
  35.     int sfd;
  36.  
  37.     sfd = socket(AF_UNIX, SOCK_STREAM, 0);
  38.     if (sfd < 0)
  39.         return kUNewFailed;
  40.  
  41.     return (sfd);
  42. }    /* UNewStreamClient */
  43.  
  44.  
  45.  
  46.  
  47. int
  48. UNewDatagramClient(void)
  49. {
  50.     int sfd;
  51.  
  52.     sfd = socket(AF_UNIX, SOCK_DGRAM, 0);
  53.     if (sfd < 0)
  54.         return kUNewFailed;
  55.  
  56.     return (sfd);
  57. }    /* UNewDatagramClient */
  58.  
  59.  
  60.  
  61.  
  62. int
  63. UNewStreamServer(const char *const astr, const int nTries, const int reuseFlag, int listenQueueSize)
  64. {
  65.     int oerrno;
  66.     int sfd;
  67.     
  68.     if ((astr == NULL) || (astr[0] == '\0')) {
  69.         errno = EINVAL;
  70.         return (-1);
  71.     }
  72.  
  73.     sfd = socket(AF_UNIX, SOCK_STREAM, 0);
  74.     if (sfd < 0)
  75.         return kUNewFailed;
  76.  
  77.     if (UBind(sfd, astr, nTries, reuseFlag) < 0) {
  78.         oerrno = errno;
  79.         (void) close(sfd);
  80.         errno = oerrno;
  81.         return kUBindFailed;
  82.     }
  83.  
  84.     if (UListen(sfd, listenQueueSize) < 0) {
  85.         oerrno = errno;
  86.         (void) close(sfd);
  87.         errno = oerrno;
  88.         return kUListenFailed;
  89.     }
  90.  
  91.     return (sfd);
  92. }    /* UNewStreamServer */
  93.  
  94.  
  95.  
  96.  
  97. int
  98. UNewDatagramServer(const char *const astr, const int nTries, const int reuseFlag)
  99. {
  100.     int oerrno;
  101.     int sfd;
  102.     
  103.     if ((astr == NULL) || (astr[0] == '\0')) {
  104.         errno = EINVAL;
  105.         return (-1);
  106.     }
  107.  
  108.     sfd = socket(AF_UNIX, SOCK_DGRAM, 0);
  109.     if (sfd < 0)
  110.         return kUNewFailed;
  111.  
  112.     if (UBind(sfd, astr, nTries, reuseFlag) < 0) {
  113.         oerrno = errno;
  114.         (void) close(sfd);
  115.         errno = oerrno;
  116.         return kUBindFailed;
  117.     }
  118.  
  119.     return (sfd);
  120. }    /* UNewDatagramServer */
  121.