X-Git-Url: http://git.indexdata.com/?a=blobdiff_plain;f=src%2Funix.c;h=c67b724cd90d7e8af9de8b2602df57f5b6054e69;hb=31e3a0ef5a0866477a3b54dc6ffbeb0aca4e0029;hp=c38c205fb831125466fd4c741e92245b7f44363f;hpb=54462bdd66000b20ff13b8545ed58a838a12b793;p=yaz-moved-to-github.git diff --git a/src/unix.c b/src/unix.c index c38c205..c67b724 100644 --- a/src/unix.c +++ b/src/unix.c @@ -1,31 +1,46 @@ /* - * Copyright (c) 1995-2003, Index Data + * Copyright (C) 1995-2005, Index Data ApS * See the file LICENSE for details. * - * $Id: unix.c,v 1.2 2003-10-29 13:26:34 adam Exp $ + * $Id: unix.c,v 1.11 2005-02-01 14:37:47 adam Exp $ * UNIX socket COMSTACK. By Morten Bøgeskov. */ +/** + * \file unix.c + * \brief Implements UNIX domain socket COMSTACK + */ + #ifndef WIN32 #include #include #include -#include #include +#if HAVE_SYS_TYPES_H +#include +#endif +#if HAVE_UNISTD_H +#include +#endif +#if HAVE_SYS_SOCKET_H +#include +#endif #include #include #include +#if HAVE_PWD_H #include -#include +#endif -#include +#if HAVE_SYS_STAT_H #include +#endif +#if HAVE_SYS_UN_H #include +#endif -#include #include -#include #include #ifndef YAZ_SOCKLEN_T @@ -137,6 +152,7 @@ COMSTACK unix_type(int s, int blocking, int protocol, void *vp) p->event = CS_NONE; p->cerrno = 0; p->stackerr = 0; + p->user = 0; state->altbuf = 0; state->altsize = state->altlen = 0; @@ -177,11 +193,11 @@ static void *unix_straddr(COMSTACK h, const char *str) sp->uid = sp->gid = sp->umask = -1; - if (eol = strchr(s, ',')) + if ((eol = strchr(s, ','))) { do { - if (eol = strchr(s, ',')) + if ((eol = strchr(s, ','))) *eol++ = '\0'; if (sp->uid == -1 && strncmp(s, "user=", 5) == 0) { @@ -197,7 +213,7 @@ static void *unix_straddr(COMSTACK h, const char *str) { printf("No such user\n"); free(f); - return; + return 0; } sp->uid = pw->pw_uid; } @@ -216,7 +232,7 @@ static void *unix_straddr(COMSTACK h, const char *str) { printf("No such group\n"); free(f); - return; + return 0; } sp->gid = gr->gr_gid; } @@ -232,7 +248,7 @@ static void *unix_straddr(COMSTACK h, const char *str) { printf("Invalid umask\n"); free(f); - return; + return 0; } } else if (file == NULL && strncmp(s, "file=", 5) == 0) @@ -244,9 +260,9 @@ static void *unix_straddr(COMSTACK h, const char *str) { printf("invalid or double argument: %s\n", s); free(f); - return; + return 0; } - } while(s = eol); + } while((s = eol)); } else { @@ -343,9 +359,6 @@ static int unix_rcvconnect(COMSTACK h) return 0; } -#define CERTF "ztest.pem" -#define KEYF "ztest.pem" - static int unix_bind(COMSTACK h, void *address, int mode) { unix_state *sp = (unix_state *)h->cprivate; @@ -568,7 +581,7 @@ static int unix_get(COMSTACK h, char **buf, int *bufsize) return -1; } else if (!res) - return 0; + return hasread; hasread += res; } TRC (fprintf (stderr, " Out of read loop with hasread=%d, berlen=%d\n", @@ -698,4 +711,4 @@ static int unix_set_blocking(COMSTACK p, int blocking) p->blocking = blocking; return 1; } -#endif +#endif /* WIN32 */