/*
- * Copyright (c) 1995-2002, Index Data
+ * Copyright (c) 1995-2003, Index Data
* See the file LICENSE for details.
*
- * $Id: unix.c,v 1.6 2002-09-20 22:23:13 adam Exp $
+ * $Id: unix.c,v 1.9 2003-01-06 08:20:27 adam Exp $
* UNIX socket COMSTACK. By Morten Bøgeskov.
*/
#ifndef WIN32
#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);
-int unix_connect(COMSTACK h, void *address);
-int unix_more(COMSTACK h);
-int unix_rcvconnect(COMSTACK h);
-int unix_bind(COMSTACK h, void *address, int mode);
-int unix_listen(COMSTACK h, char *raddr, int *addrlen,
+static int unix_close(COMSTACK h);
+static int unix_put(COMSTACK h, char *buf, int size);
+static int unix_get(COMSTACK h, char **buf, int *bufsize);
+static int unix_connect(COMSTACK h, void *address);
+static int unix_more(COMSTACK h);
+static int unix_rcvconnect(COMSTACK h);
+static int unix_bind(COMSTACK h, void *address, int mode);
+static int unix_listen(COMSTACK h, char *raddr, int *addrlen,
int (*check_ip)(void *cd, const char *a, int len, int type),
void *cd);
-int static unix_set_blocking(COMSTACK p, int blocking);
+static int unix_set_blocking(COMSTACK p, int blocking);
-COMSTACK unix_accept(COMSTACK h);
-char *unix_addrstr(COMSTACK h);
-void *unix_straddr(COMSTACK h, const char *str);
+static COMSTACK unix_accept(COMSTACK h);
+static char *unix_addrstr(COMSTACK h);
+static void *unix_straddr(COMSTACK h, const char *str);
#ifndef SUN_LEN
#define SUN_LEN(ptr) ((size_t) (((struct sockaddr_un *) 0)->sun_path) \
}
-int unix_strtoaddr_ex(const char *str, struct sockaddr_un *add)
+static int unix_strtoaddr_ex(const char *str, struct sockaddr_un *add)
{
char *cp;
if (!unix_init ())
return 1;
}
-void *unix_straddr(COMSTACK h, const char *str)
+static void *unix_straddr(COMSTACK h, const char *str)
{
unix_state *sp = (unix_state *)h->cprivate;
return &add;
}
-int unix_more(COMSTACK h)
+static int unix_more(COMSTACK h)
{
unix_state *sp = (unix_state *)h->cprivate;
* weird things like spawning subprocesses or threading or some weird junk
* like that.
*/
-int unix_connect(COMSTACK h, void *address)
+static int unix_connect(COMSTACK h, void *address)
{
struct sockaddr_un *add = (struct sockaddr_un *)address;
int r;
r = connect(h->iofile, (struct sockaddr *) add, SUN_LEN(add));
if (r < 0)
{
- if (errno == EINPROGRESS)
+ if (yaz_errno() == EINPROGRESS)
{
h->event = CS_CONNECT;
h->state = CS_ST_CONNECTING;
/*
* nop
*/
-int unix_rcvconnect(COMSTACK h)
+static int unix_rcvconnect(COMSTACK h)
{
TRC(fprintf(stderr, "unix_rcvconnect\n"));
#define CERTF "ztest.pem"
#define KEYF "ztest.pem"
-int unix_bind(COMSTACK h, void *address, int mode)
+static int unix_bind(COMSTACK h, void *address, int mode)
{
struct sockaddr *addr = (struct sockaddr *)address;
const char * path = ((struct sockaddr_un *)addr)->sun_path;
int socket_out = -1;
if(! S_ISSOCK(stat_buf.st_mode)) {
h->cerrno = CSYSERR;
- errno = EEXIST; /* Not a socket (File exists) */
+ yaz_set_errno(EEXIST); /* Not a socket (File exists) */
return -1;
}
if((socket_out = socket(AF_UNIX, SOCK_STREAM, 0)) < 0) {
socket_unix.sun_family = AF_UNIX;
strncpy(socket_unix.sun_path, path, sizeof(socket_unix.sun_path));
if(connect(socket_out, (struct sockaddr *) &socket_unix, SUN_LEN(&socket_unix)) < 0) {
- if(errno == ECONNREFUSED) {
+ if(yaz_errno() == ECONNREFUSED) {
TRC (fprintf (stderr, "Socket exists but nobody is listening\n"));
} else {
h->cerrno = CSYSERR;
} else {
close(socket_out);
h->cerrno = CSYSERR;
- errno = EADDRINUSE;
+ yaz_set_errno(EADDRINUSE);
return -1;
}
unlink(path);
return 0;
}
-int unix_listen(COMSTACK h, char *raddr, int *addrlen,
- int (*check_ip)(void *cd, const char *a, int len, int t),
- void *cd)
+static int unix_listen(COMSTACK h, char *raddr, int *addrlen,
+ int (*check_ip)(void *cd, const char *a, int len, int t),
+ void *cd)
{
struct sockaddr_un addr;
YAZ_SOCKLEN_T len = SUN_LEN(&addr);
if (h->newfd < 0)
{
if (
- errno == EWOULDBLOCK
+ yaz_errno() == EWOULDBLOCK
#ifdef EAGAIN
#if EAGAIN != EWOULDBLOCK
- || errno == EAGAIN
+ || yaz_errno() == EAGAIN
#endif
#endif
)
return 0;
}
-COMSTACK unix_accept(COMSTACK h)
+static COMSTACK unix_accept(COMSTACK h)
{
COMSTACK cnew;
unix_state *state, *st = (unix_state *)h->cprivate;
* Return: -1 error, >1 good, len of buffer, ==1 incomplete buffer,
* 0=connection closed.
*/
-int unix_get(COMSTACK h, char **buf, int *bufsize)
+static int unix_get(COMSTACK h, char **buf, int *bufsize)
{
unix_state *sp = (unix_state *)h->cprivate;
char *tmpc;
TRC(fprintf(stderr, " recv res=%d, hasread=%d\n", res, hasread));
if (res < 0)
{
- if (errno == EWOULDBLOCK
+ if (yaz_errno() == EWOULDBLOCK
#ifdef EAGAIN
#if EAGAIN != EWOULDBLOCK
- || errno == EAGAIN
+ || yaz_errno() == EAGAIN
#endif
#endif
- || errno == EINPROGRESS
+ || yaz_errno() == EINPROGRESS
)
{
h->io_pending = CS_WANT_READ;
break;
}
- else if (errno == 0)
+ else if (yaz_errno() == 0)
continue;
else
return -1;
* In nonblocking mode, you must call again with same buffer while
* return value is 1.
*/
-int unix_put(COMSTACK h, char *buf, int size)
+static int unix_put(COMSTACK h, char *buf, int size)
{
int res;
struct unix_state *state = (struct unix_state *)h->cprivate;
)) < 0)
{
if (
- errno == EWOULDBLOCK
+ yaz_errno() == EWOULDBLOCK
#ifdef EAGAIN
#if EAGAIN != EWOULDBLOCK
- || errno == EAGAIN
+ || yaz_errno() == EAGAIN
#endif
#endif
)
return 0;
}
-
-
-int unix_close(COMSTACK h)
+static int unix_close(COMSTACK h)
{
unix_state *sp = (struct unix_state *)h->cprivate;
return 0;
}
-char *unix_addrstr(COMSTACK h)
+static char *unix_addrstr(COMSTACK h)
{
unix_state *sp = (struct unix_state *)h->cprivate;
char *buf = sp->buf;
return buf;
}
-int static unix_set_blocking(COMSTACK p, int blocking)
+static int unix_set_blocking(COMSTACK p, int blocking)
{
unsigned long flag;