home *** CD-ROM | disk | FTP | other *** search
/ ftp.ncftp.com / ftp.ncftp.com.zip / ftp.ncftp.com / libncftp / libncftp-3.2.5-src.zip / libncftp-3.2.5 / sio / UNew.c < prev    next >
C/C++ Source or Header  |  2009-11-30  |  2KB  |  125 lines

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