From d5841c7c5616c3259c78e90cbf8e5e96ebd3ab31 Mon Sep 17 00:00:00 2001 From: Sebastian Hammer Date: Fri, 13 Oct 1995 16:08:04 +0000 Subject: [PATCH] Added OID utility --- include/prt.h | 1 + odr/odr_mem.c | 11 ++++++++++- odr/odr_util.c | 20 ++++++++++++++++++++ 3 files changed, 31 insertions(+), 1 deletion(-) diff --git a/include/prt.h b/include/prt.h index bf590a8..bb1cad9 100644 --- a/include/prt.h +++ b/include/prt.h @@ -50,5 +50,6 @@ int odr_dumpBER(FILE *f, char *buf, int len); void odr_choice_bias(ODR o, int what); int odr_total(ODR o); char *odr_errmsg(int n); +Odr_oid *odr_getoidbystr(ODR o, char *str); #endif diff --git a/odr/odr_mem.c b/odr/odr_mem.c index e342625..fb6caeb 100644 --- a/odr/odr_mem.c +++ b/odr/odr_mem.c @@ -4,7 +4,10 @@ * Sebastian Hammer, Adam Dickmeiss * * $Log: odr_mem.c,v $ - * Revision 1.8 1995-09-29 17:12:24 quinn + * Revision 1.9 1995-10-13 16:08:08 quinn + * Added OID utility + * + * Revision 1.8 1995/09/29 17:12:24 quinn * Smallish * * Revision 1.7 1995/09/27 15:02:59 quinn @@ -119,6 +122,12 @@ void *odr_malloc(ODR o, int size) struct odr_memblock *p = o->mem; char *r; + if (!o) + { + if (!(r = malloc(size))) + abort(); + return r; + } if (!p || p->size - p->top < size) if (!(p = get_block(size))) abort(); diff --git a/odr/odr_util.c b/odr/odr_util.c index 7a07775..ed3b07e 100644 --- a/odr/odr_util.c +++ b/odr/odr_util.c @@ -1,4 +1,6 @@ #include +#include +#include #include #include @@ -44,3 +46,21 @@ Odr_oid *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); + p = str; + do + ret[i++] = atoi(p); + while ((p = strchr(p, '.'))); + return ret; +} -- 1.7.10.4