X-Git-Url: http://git.indexdata.com/?a=blobdiff_plain;f=odr%2Fodr_util.c;h=cfa28cc38fc3ddd7b95c5d631f1ce86c2e400469;hb=113640450c45ca7ac96285cc8ca666bfd597ed21;hp=af26baebbce4a98eda76be236651c2e6f9085888;hpb=173d9f50b7a6c63dff6c74dc5c3efe985f75ef39;p=yaz-moved-to-github.git diff --git a/odr/odr_util.c b/odr/odr_util.c index af26bae..cfa28cc 100644 --- a/odr/odr_util.c +++ b/odr/odr_util.c @@ -1,8 +1,20 @@ -#include #include +#include +#include +#include +#include + +char *odr_indent(ODR o) +{ + static char buf[512]; + int i = o->indent; -void *nalloc(ODR o, int size) { return malloc(size); } -char *odr_indent(ODR o) {return "";} + memset(buf, ' ', 512); + if (i >= 128) + i = 127; + buf[o->indent * 4] = 0; + return buf; +} int odp_more_chunks(ODR o, unsigned char *base, int len) { @@ -22,3 +34,34 @@ int odp_more_chunks(ODR o, unsigned char *base, int len) else return o->bp - base < len; } + +Odr_oid *odr_oiddup(ODR odr, Odr_oid *o) +{ + Odr_oid *r; + + if (!o) + return 0; + if (!(r = odr_malloc(odr, (oid_oidlen(o) + 1) * sizeof(int)))) + return 0; + oid_oidcpy(r, o); + return r; +} + +Odr_oid *odr_getoidbystr(ODR o, char *str) +{ + int num = 1, i = 0; + char *p = str; + Odr_oid *ret; + + if (!isdigit(*str)) + return 0; + while ((p = strchr(p, '.'))) + num++, p++; + ret = odr_malloc(o, sizeof(*ret)*(num + 1)); + p = str; + do + ret[i++] = atoi(p); + while ((p = strchr(p, '.')) && ++p); + ret[i] = -1; + return ret; +}