X-Git-Url: http://git.indexdata.com/?a=blobdiff_plain;f=odr%2Fodr_any.c;fp=odr%2Fodr_any.c;h=018c8e58ebd0b9cbf050a31bedf8cc85d79b93e3;hb=10981b2f116449523a9f628c20a78212ce91553e;hp=0000000000000000000000000000000000000000;hpb=aad9a6e6dbceb78f4a125c24c9b93d19f75af361;p=yaz-moved-to-github.git diff --git a/odr/odr_any.c b/odr/odr_any.c new file mode 100644 index 0000000..018c8e5 --- /dev/null +++ b/odr/odr_any.c @@ -0,0 +1,35 @@ +/* + * Copyright (C) 1994, Index Data I/S + * All rights reserved. + * Sebastian Hammer, Adam Dickmeiss + * + * $Log: odr_any.c,v $ + * Revision 1.1 1995-02-09 15:51:47 quinn + * Works better now. + * + */ + +#include + +/* + * This is a catch-all type. It stuffs a random ostring (assumed to be properly + * encoded) into the stream, or reads a full data element. Implicit tagging + * does not work, and neither does the optional flag, unless the element + * is the last in a sequence. + */ +int odr_any(ODR o, Odr_any **p, int opt) +{ + if (o->direction == ODR_ENCODE && !*p) + return opt; + if (o->direction == ODR_PRINT) + { + fprintf(o->print, "%sANY (len=%d)\n", odr_indent(o), (*p)->len); + return 1; + } + if (o->direction == ODR_DECODE) + *p = nalloc(o, sizeof(**p)); + if (ber_any(o, p)) + return 1; + *p = 0; + return opt; +}