* 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.6 2002-09-20 22:23:13 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>
+#ifndef YAZ_SOCKLEN_T
+#define YAZ_SOCKLEN_T int
+#endif
+
int unix_close(COMSTACK h);
int unix_put(COMSTACK h, char *buf, int size);
int unix_get(COMSTACK h, char **buf, int *bufsize);
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
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;
}
void *cd)
{
struct sockaddr_un addr;
-#ifdef __cplusplus
- socklen_t len = SUN_LEN(&addr);
-#else
- int len = SUN_LEN(&addr);
-#endif
+ YAZ_SOCKLEN_T len = SUN_LEN(&addr);
TRC(fprintf(stderr, "unix_listen pid=%d\n", getpid()));
if (h->state != CS_ST_IDLE)