X-Git-Url: http://git.indexdata.com/?p=yaz-moved-to-github.git;a=blobdiff_plain;f=odr%2Fodr_util.c;h=cfa28cc38fc3ddd7b95c5d631f1ce86c2e400469;hp=a25d1ad44e4ca4ba25a7acb0b28fd2fd6aec98a7;hb=93e6cd96accab7cdef3a573479a5ec9c9fc47610;hpb=657fb99115b87a5244e9a33bbe4ca3d9d18849c4 diff --git a/odr/odr_util.c b/odr/odr_util.c index a25d1ad..cfa28cc 100644 --- a/odr/odr_util.c +++ b/odr/odr_util.c @@ -1,8 +1,10 @@ #include +#include +#include #include #include -char MDF *odr_indent(ODR o) +char *odr_indent(ODR o) { static char buf[512]; int i = o->indent; @@ -14,7 +16,7 @@ char MDF *odr_indent(ODR o) return buf; } -int MDF odp_more_chunks(ODR o, unsigned char *base, int len) +int odp_more_chunks(ODR o, unsigned char *base, int len) { if (!len) return 0; @@ -33,7 +35,7 @@ int MDF odp_more_chunks(ODR o, unsigned char *base, int len) return o->bp - base < len; } -Odr_oid MDF *odr_oiddup(ODR odr, Odr_oid *o) +Odr_oid *odr_oiddup(ODR odr, Odr_oid *o) { Odr_oid *r; @@ -44,3 +46,22 @@ Odr_oid MDF *odr_oiddup(ODR odr, Odr_oid *o) 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; +}