X-Git-Url: http://git.indexdata.com/?p=yaz-moved-to-github.git;a=blobdiff_plain;f=src%2Fodr_util.c;h=bb1955c0f38f2b1fbc8226cd90b77e91f9700523;hp=d95a693841daeeb30b2218784b4299b61606c8c4;hb=4fbc7c05a14d80187951b2fc690ba71374449124;hpb=c6e47cbbff56f39f6d81b079ebaeac41d793d4d9 diff --git a/src/odr_util.c b/src/odr_util.c index d95a693..bb1955c 100644 --- a/src/odr_util.c +++ b/src/odr_util.c @@ -2,7 +2,7 @@ * Copyright (c) 1995-2003, Index Data * See the file LICENSE for details. * - * $Id: odr_util.c,v 1.1 2003-10-27 12:21:34 adam Exp $ + * $Id: odr_util.c,v 1.2 2003-11-26 16:23:42 mike Exp $ */ #if HAVE_CONFIG_H #include @@ -92,3 +92,29 @@ int odr_missing(ODR o, int opt, const char *name) } return opt; } + +/* + * Reallocate the buffer `old', using the ODR memory pool `o' to be + * big enough to hold its existing value (if any) plus `prefix' (if + * any) and a separator character. Copy `prefix', a forward slash and + * the old value into the new area and return its address. Can be + * used as follows: + * initRequest->implementationName = odr_prepend(o, + * initRequest->implementationName, "ZOOM-C"); + */ +char *odr_prepend(ODR o, const char *prefix, const char *old) +{ + int plen = (prefix == 0) ? 0 : strlen(prefix); + int olen = (old == 0) ? 0 : strlen(old); + char *res = (char*) odr_malloc (o, olen + plen + 2); + + *res = '\0'; + if (prefix != 0) + strcpy (res, prefix); + if (prefix != 0 && old != 0) + strcat (res, "/"); + if (old !=0) + strcat (res, old); + + return res; +}