Moved zoom implementation to zutil. Man page for zoomsh
[yaz-moved-to-github.git] / comstack / unix.c
index 7666b29..edfa830 100644 (file)
@@ -2,7 +2,7 @@
  * Copyright (c) 1995-2002, Index Data
  * See the file LICENSE for details.
  *
- * $Id: unix.c,v 1.2 2002-06-18 21:30:38 adam Exp $
+ * $Id: unix.c,v 1.5 2002-09-10 20:56:34 adam Exp $
  * UNIX socket COMSTACK. By Morten Bøgeskov.
  */
 #ifndef WIN32
 /* Chas added the following, so we get the definition of completeBER */
 #include <yaz/odr.h>
 
+#if HAVE_SOCKLEN_T
+#define NET_LEN_T socklen_t
+#else
+#if GETPEERNAME_ACCEPTS_SIZE_T_FOR_THIRD_ARGUMENT
+#define NET_LEN_T size_t
+#else
+#define NET_LEN_T int
+#endif
+#endif
+
 int unix_close(COMSTACK h);
 int unix_put(COMSTACK h, char *buf, int size);
 int unix_get(COMSTACK h, char **buf, int *bufsize);
@@ -43,6 +53,10 @@ COMSTACK unix_accept(COMSTACK h);
 char *unix_addrstr(COMSTACK h);
 void *unix_straddr(COMSTACK h, const char *str);
 
+#ifndef SUN_LEN
+#define SUN_LEN(ptr) ((size_t) (((struct sockaddr_un *) 0)->sun_path) \
+                     + strlen ((ptr)->sun_path))
+#endif
 #if 0
 #define TRC(x) x
 #else
@@ -143,11 +157,15 @@ COMSTACK unix_type(int s, int blocking, int protocol, void *vp)
 
 int unix_strtoaddr_ex(const char *str, struct sockaddr_un *add)
 {
+    char *cp;
     if (!unix_init ())
        return 0;
     TRC(fprintf(stderr, "unix_strtoaddress: %s\n", str ? str : "NULL"));
     add->sun_family = AF_UNIX;
     strncpy(add->sun_path, str, sizeof(add->sun_path));
+    cp = strchr (add->sun_path, ':');
+    if (cp)
+       *cp = '\0';
     return 1;
 }
 
@@ -297,11 +315,7 @@ int unix_listen(COMSTACK h, char *raddr, int *addrlen,
                void *cd)
 {
     struct sockaddr_un addr;
-#ifdef __cplusplus
-    socklen_t len = SUN_LEN(&addr);
-#else
-    int len = SUN_LEN(&addr);
-#endif
+    NET_LEN_T len = SUN_LEN(&addr);
 
     TRC(fprintf(stderr, "unix_listen pid=%d\n", getpid()));
     if (h->state != CS_ST_IDLE)