X-Git-Url: http://git.indexdata.com/?p=yaz-moved-to-github.git;a=blobdiff_plain;f=comstack%2Fxmosi.c;h=132de6c0db4b4b22b78f01ac3d111f839fc09ff0;hp=ea8a71b0f47e597793c23b781fd394e4d2b3b7f0;hb=8030536c98d595898b316df5eb118b1d6398450c;hpb=bf4149c63ad2e11429e302a89f472de52b4d7ce8 diff --git a/comstack/xmosi.c b/comstack/xmosi.c index ea8a71b..132de6c 100644 --- a/comstack/xmosi.c +++ b/comstack/xmosi.c @@ -4,7 +4,10 @@ * Sebastian Hammer, Adam Dickmeiss * * $Log: xmosi.c,v $ - * Revision 1.15 1997-05-14 06:53:34 adam + * Revision 1.16 1997-09-17 12:10:30 adam + * YAZ version 1.4. + * + * Revision 1.15 1997/05/14 06:53:34 adam * C++ support. * * Revision 1.14 1996/07/26 12:34:07 quinn @@ -111,16 +114,8 @@ #include #include -<<<<<<< 1.13 -#include -#include -#include -#include -#include -======= #define YNETINCLUDE #include ->>>>>>> /tmp/T4a00144 #include #include @@ -137,6 +132,7 @@ int mosi_bind(COMSTACK h, void *address, int mode); int mosi_listen(COMSTACK h, char *addrp, int *addrlen); COMSTACK mosi_accept(COMSTACK h); char *mosi_addrstr(COMSTACK h); +void *mosi_straddr(COMSTACK h, const char *str); typedef struct mosi_state { @@ -144,6 +140,7 @@ typedef struct mosi_state struct t_call *call; int hasread; /* how many bytes read of current PDU */ int haswrit; /* how many bytes have we written */ + struct netbuf netbuf; } mosi_state; static char *oidtostr(int *o) @@ -209,6 +206,7 @@ COMSTACK mosi_type(int s, int blocking, int protocol) r->f_listen = mosi_listen; r->f_accept = mosi_accept; r->f_addrstr = mosi_addrstr; + r->r_straddr = mosi_straddr; if (!blocking) flags |= O_NONBLOCK; @@ -240,9 +238,9 @@ int hex2oct(char *hex, char *oct) * addressing specific to our hack of OSI transport. A sockaddr_in wrapped * up in a t_mosiaddr in a netbuf (on a stick). */ -struct netbuf MDF *mosi_strtoaddr(const char *str) + +int MDF *mosi_strtoaddr_ex(const char *str, struct netbuf *ret) { - struct netbuf *ret = xmalloc(sizeof(struct netbuf)); struct sockaddr_in *add = xmalloc(sizeof(struct sockaddr_in)); struct t_mosiaddr *mosiaddr = xmalloc(sizeof(struct t_mosiaddr)); struct hostent *hp; @@ -311,6 +309,31 @@ struct netbuf MDF *mosi_strtoaddr(const char *str) ret->buf = (char*)mosiaddr; ret->len = ret->maxlen = 100 /* sizeof(*mosiaddr) */ ; + return 1; +} + +struct netbuf MDF *mosi_strtoaddr(const char *str) +{ + struct netbuf *ret = xmalloc(sizeof(struct netbuf)); + + if (!mosi_strtoaddr_ex (str, ret)) + { + xfree (ret); + return 0; + } + return ret; +} + +struct netbuf MDF *mosi_straddr(COMSTACK h, const char *str) +{ + mosi_state *st = h->cprivate; + struct netbuf *ret = &st->netbuf; + + if (!mosi_strtoaddr_ex (str, ret)) + { + xfree (ret); + return 0; + } return ret; }