From d7138cfbe7b56a5447cfc86b9d6d2c8e7732c7c4 Mon Sep 17 00:00:00 2001 From: Luke Howard Date: Thu, 26 Dec 2019 21:41:29 +1100 Subject: [PATCH] base: make heimqueue.h a shared header Share heimqueue.h between base and asn1, to avoid duplication of code. --- include/Makefile.am | 2 +- include/NTMakefile | 1 + {lib/base => include}/heimqueue.h | 0 lib/asn1/Makefile.am | 1 - lib/asn1/asn1_queue.h | 167 ------------------------------ lib/asn1/asn1parse.y | 24 ++--- lib/asn1/gen.c | 30 +++--- lib/asn1/gen_copy.c | 4 +- lib/asn1/gen_decode.c | 12 +-- lib/asn1/gen_encode.c | 10 +- lib/asn1/gen_free.c | 4 +- lib/asn1/gen_glue.c | 10 +- lib/asn1/gen_length.c | 8 +- lib/asn1/gen_template.c | 60 +++++------ lib/asn1/symbol.h | 6 +- lib/base/Makefile.am | 1 - 16 files changed, 86 insertions(+), 254 deletions(-) rename {lib/base => include}/heimqueue.h (100%) delete mode 100644 lib/asn1/asn1_queue.h diff --git a/include/Makefile.am b/include/Makefile.am index 29256a375..7c2e609d1 100644 --- a/include/Makefile.am +++ b/include/Makefile.am @@ -11,7 +11,7 @@ AM_CPPFLAGS += -DHOST=\"$(CANONICAL_HOST)\" nodist_include_HEADERS = krb5-types.h -noinst_HEADERS = heim_threads.h crypto-headers.h +noinst_HEADERS = heimqueue.h heim_threads.h crypto-headers.h EXTRA_DIST = NTMakefile krb5-types.cross config.h.w32 diff --git a/include/NTMakefile b/include/NTMakefile index e494687d4..284ceba7e 100644 --- a/include/NTMakefile +++ b/include/NTMakefile @@ -40,6 +40,7 @@ SUBDIRS=kadm5 hcrypto gssapi INCFILES= \ $(INCDIR)\config.h \ $(INCDIR)\crypto-headers.h \ + $(INCDIR)\heimqueue.h \ $(INCDIR)\heim_threads.h \ $(INCDIR)\krb5-types.h \ $(INCDIR)\version.h diff --git a/lib/base/heimqueue.h b/include/heimqueue.h similarity index 100% rename from lib/base/heimqueue.h rename to include/heimqueue.h diff --git a/lib/asn1/Makefile.am b/lib/asn1/Makefile.am index f4682b5a4..dcb9c0433 100644 --- a/lib/asn1/Makefile.am +++ b/lib/asn1/Makefile.am @@ -71,7 +71,6 @@ nodist_check_gen_SOURCES = $(gen_files_test:.x=.c) build_HEADERZ = asn1-template.h asn1_compile_SOURCES = \ - asn1_queue.h \ asn1parse.y \ der.h \ gen.c \ diff --git a/lib/asn1/asn1_queue.h b/lib/asn1/asn1_queue.h deleted file mode 100644 index 73eb50f8b..000000000 --- a/lib/asn1/asn1_queue.h +++ /dev/null @@ -1,167 +0,0 @@ -/* $NetBSD: queue.h,v 1.38 2004/04/18 14:12:05 lukem Exp $ */ -/* $Id$ */ - -/* - * Copyright (c) 1991, 1993 - * The Regents of the University of California. All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * 3. Neither the name of the University nor the names of its contributors - * may be used to endorse or promote products derived from this software - * without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE - * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS - * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) - * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY - * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF - * SUCH DAMAGE. - * - * @(#)queue.h 8.5 (Berkeley) 8/20/94 - */ - -#ifndef _ASN1_QUEUE_H_ -#define _ASN1_QUEUE_H_ - -/* - * Tail queue definitions. - */ -#define ASN1_TAILQ_HEAD(name, type) \ -struct name { \ - struct type *tqh_first; /* first element */ \ - struct type **tqh_last; /* addr of last next element */ \ -} - -#define ASN1_TAILQ_HEAD_INITIALIZER(head) \ - { NULL, &(head).tqh_first } -#define ASN1_TAILQ_ENTRY(type) \ -struct { \ - struct type *tqe_next; /* next element */ \ - struct type **tqe_prev; /* address of previous next element */ \ -} - -/* - * Tail queue functions. - */ -#if defined(_KERNEL) && defined(QUEUEDEBUG) -#define QUEUEDEBUG_ASN1_TAILQ_INSERT_HEAD(head, elm, field) \ - if ((head)->tqh_first && \ - (head)->tqh_first->field.tqe_prev != &(head)->tqh_first) \ - panic("ASN1_TAILQ_INSERT_HEAD %p %s:%d", (head), __FILE__, __LINE__); -#define QUEUEDEBUG_ASN1_TAILQ_INSERT_TAIL(head, elm, field) \ - if (*(head)->tqh_last != NULL) \ - panic("ASN1_TAILQ_INSERT_TAIL %p %s:%d", (head), __FILE__, __LINE__); -#define QUEUEDEBUG_ASN1_TAILQ_OP(elm, field) \ - if ((elm)->field.tqe_next && \ - (elm)->field.tqe_next->field.tqe_prev != \ - &(elm)->field.tqe_next) \ - panic("ASN1_TAILQ_* forw %p %s:%d", (elm), __FILE__, __LINE__);\ - if (*(elm)->field.tqe_prev != (elm)) \ - panic("ASN1_TAILQ_* back %p %s:%d", (elm), __FILE__, __LINE__); -#define QUEUEDEBUG_ASN1_TAILQ_PREREMOVE(head, elm, field) \ - if ((elm)->field.tqe_next == NULL && \ - (head)->tqh_last != &(elm)->field.tqe_next) \ - panic("ASN1_TAILQ_PREREMOVE head %p elm %p %s:%d", \ - (head), (elm), __FILE__, __LINE__); -#define QUEUEDEBUG_ASN1_TAILQ_POSTREMOVE(elm, field) \ - (elm)->field.tqe_next = (void *)1L; \ - (elm)->field.tqe_prev = (void *)1L; -#else -#define QUEUEDEBUG_ASN1_TAILQ_INSERT_HEAD(head, elm, field) -#define QUEUEDEBUG_ASN1_TAILQ_INSERT_TAIL(head, elm, field) -#define QUEUEDEBUG_ASN1_TAILQ_OP(elm, field) -#define QUEUEDEBUG_ASN1_TAILQ_PREREMOVE(head, elm, field) -#define QUEUEDEBUG_ASN1_TAILQ_POSTREMOVE(elm, field) -#endif - -#define ASN1_TAILQ_INIT(head) do { \ - (head)->tqh_first = NULL; \ - (head)->tqh_last = &(head)->tqh_first; \ -} while (/*CONSTCOND*/0) - -#define ASN1_TAILQ_INSERT_HEAD(head, elm, field) do { \ - QUEUEDEBUG_ASN1_TAILQ_INSERT_HEAD((head), (elm), field) \ - if (((elm)->field.tqe_next = (head)->tqh_first) != NULL) \ - (head)->tqh_first->field.tqe_prev = \ - &(elm)->field.tqe_next; \ - else \ - (head)->tqh_last = &(elm)->field.tqe_next; \ - (head)->tqh_first = (elm); \ - (elm)->field.tqe_prev = &(head)->tqh_first; \ -} while (/*CONSTCOND*/0) - -#define ASN1_TAILQ_INSERT_TAIL(head, elm, field) do { \ - QUEUEDEBUG_ASN1_TAILQ_INSERT_TAIL((head), (elm), field) \ - (elm)->field.tqe_next = NULL; \ - (elm)->field.tqe_prev = (head)->tqh_last; \ - *(head)->tqh_last = (elm); \ - (head)->tqh_last = &(elm)->field.tqe_next; \ -} while (/*CONSTCOND*/0) - -#define ASN1_TAILQ_INSERT_AFTER(head, listelm, elm, field) do { \ - QUEUEDEBUG_ASN1_TAILQ_OP((listelm), field) \ - if (((elm)->field.tqe_next = (listelm)->field.tqe_next) != NULL)\ - (elm)->field.tqe_next->field.tqe_prev = \ - &(elm)->field.tqe_next; \ - else \ - (head)->tqh_last = &(elm)->field.tqe_next; \ - (listelm)->field.tqe_next = (elm); \ - (elm)->field.tqe_prev = &(listelm)->field.tqe_next; \ -} while (/*CONSTCOND*/0) - -#define ASN1_TAILQ_INSERT_BEFORE(listelm, elm, field) do { \ - QUEUEDEBUG_ASN1_TAILQ_OP((listelm), field) \ - (elm)->field.tqe_prev = (listelm)->field.tqe_prev; \ - (elm)->field.tqe_next = (listelm); \ - *(listelm)->field.tqe_prev = (elm); \ - (listelm)->field.tqe_prev = &(elm)->field.tqe_next; \ -} while (/*CONSTCOND*/0) - -#define ASN1_TAILQ_REMOVE(head, elm, field) do { \ - QUEUEDEBUG_ASN1_TAILQ_PREREMOVE((head), (elm), field) \ - QUEUEDEBUG_ASN1_TAILQ_OP((elm), field) \ - if (((elm)->field.tqe_next) != NULL) \ - (elm)->field.tqe_next->field.tqe_prev = \ - (elm)->field.tqe_prev; \ - else \ - (head)->tqh_last = (elm)->field.tqe_prev; \ - *(elm)->field.tqe_prev = (elm)->field.tqe_next; \ - QUEUEDEBUG_ASN1_TAILQ_POSTREMOVE((elm), field); \ -} while (/*CONSTCOND*/0) - -#define ASN1_TAILQ_FOREACH(var, head, field) \ - for ((var) = ((head)->tqh_first); \ - (var); \ - (var) = ((var)->field.tqe_next)) - -#define ASN1_TAILQ_FOREACH_REVERSE(var, head, headname, field) \ - for ((var) = (*(((struct headname *)((head)->tqh_last))->tqh_last)); \ - (var); \ - (var) = (*(((struct headname *)((var)->field.tqe_prev))->tqh_last))) - -/* - * Tail queue access methods. - */ -#define ASN1_TAILQ_EMPTY(head) ((head)->tqh_first == NULL) -#define ASN1_TAILQ_FIRST(head) ((head)->tqh_first) -#define ASN1_TAILQ_NEXT(elm, field) ((elm)->field.tqe_next) - -#define ASN1_TAILQ_LAST(head, headname) \ - (*(((struct headname *)((head)->tqh_last))->tqh_last)) -#define ASN1_TAILQ_PREV(elm, headname, field) \ - (*(((struct headname *)((elm)->field.tqe_prev))->tqh_last)) - - -#endif /* !_ASN1_QUEUE_H_ */ diff --git a/lib/asn1/asn1parse.y b/lib/asn1/asn1parse.y index 88299f08b..4c6a13eb3 100644 --- a/lib/asn1/asn1parse.y +++ b/lib/asn1/asn1parse.y @@ -415,12 +415,12 @@ IntegerType : kw_INTEGER NamedNumberList : NamedNumber { $$ = emalloc(sizeof(*$$)); - ASN1_TAILQ_INIT($$); - ASN1_TAILQ_INSERT_HEAD($$, $1, members); + HEIM_TAILQ_INIT($$); + HEIM_TAILQ_INSERT_HEAD($$, $1, members); } | NamedNumberList ',' NamedNumber { - ASN1_TAILQ_INSERT_TAIL($1, $3, members); + HEIM_TAILQ_INSERT_TAIL($1, $3, members); $$ = $1; } | NamedNumberList ',' ELLIPSIS @@ -455,7 +455,7 @@ BitStringType : kw_BIT kw_STRING { $$ = new_type(TBitString); $$->members = emalloc(sizeof(*$$->members)); - ASN1_TAILQ_INIT($$->members); + HEIM_TAILQ_INIT($$->members); $$ = new_tag(ASN1_C_UNIV, UT_BitString, TE_EXPLICIT, $$); } | kw_BIT kw_STRING '{' NamedBitList '}' @@ -763,12 +763,12 @@ RestrictedCharactedStringType: kw_GeneralString ComponentTypeList: ComponentType { $$ = emalloc(sizeof(*$$)); - ASN1_TAILQ_INIT($$); - ASN1_TAILQ_INSERT_HEAD($$, $1, members); + HEIM_TAILQ_INIT($$); + HEIM_TAILQ_INSERT_HEAD($$, $1, members); } | ComponentTypeList ',' ComponentType { - ASN1_TAILQ_INSERT_TAIL($1, $3, members); + HEIM_TAILQ_INSERT_TAIL($1, $3, members); $$ = $1; } | ComponentTypeList ',' ELLIPSIS @@ -777,7 +777,7 @@ ComponentTypeList: ComponentType m->name = estrdup("..."); m->gen_name = estrdup("asn1_ellipsis"); m->ellipsis = 1; - ASN1_TAILQ_INSERT_TAIL($1, m, members); + HEIM_TAILQ_INSERT_TAIL($1, m, members); $$ = $1; } ; @@ -816,12 +816,12 @@ ComponentType : NamedType NamedBitList : NamedBit { $$ = emalloc(sizeof(*$$)); - ASN1_TAILQ_INIT($$); - ASN1_TAILQ_INSERT_HEAD($$, $1, members); + HEIM_TAILQ_INIT($$); + HEIM_TAILQ_INSERT_HEAD($$, $1, members); } | NamedBitList ',' NamedBit { - ASN1_TAILQ_INSERT_TAIL($1, $3, members); + HEIM_TAILQ_INSERT_TAIL($1, $3, members); $$ = $1; } ; @@ -1031,7 +1031,7 @@ static void fix_labels1(struct memhead *members, const char *prefix) if(members == NULL) return; - ASN1_TAILQ_FOREACH(m, members, members) { + HEIM_TAILQ_FOREACH(m, members, members) { if (asprintf(&m->label, "%s_%s", prefix, m->gen_name) < 0) errx(1, "malloc"); if (m->label == NULL) diff --git a/lib/asn1/gen.c b/lib/asn1/gen.c index b6ccdda4c..4c63f00f3 100644 --- a/lib/asn1/gen.c +++ b/lib/asn1/gen.c @@ -548,10 +548,10 @@ space(int level) static const char * last_member_p(struct member *m) { - struct member *n = ASN1_TAILQ_NEXT(m, members); + struct member *n = HEIM_TAILQ_NEXT(m, members); if (n == NULL) return ""; - if (n->ellipsis && ASN1_TAILQ_NEXT(n, members) == NULL) + if (n->ellipsis && HEIM_TAILQ_NEXT(n, members) == NULL) return ""; return ","; } @@ -560,7 +560,7 @@ static struct member * have_ellipsis(Type *t) { struct member *m; - ASN1_TAILQ_FOREACH(m, t->members, members) { + HEIM_TAILQ_FOREACH(m, t->members, members) { if (m->ellipsis) return m; } @@ -584,7 +584,7 @@ define_asn1 (int level, Type *t) } else { Member *m; fprintf (headerfile, "INTEGER {\n"); - ASN1_TAILQ_FOREACH(m, t->members, members) { + HEIM_TAILQ_FOREACH(m, t->members, members) { space (level + 1); fprintf(headerfile, "%s(%d)%s\n", m->gen_name, m->val, last_member_p(m)); @@ -608,7 +608,7 @@ define_asn1 (int level, Type *t) fprintf (headerfile, "BIT STRING {\n"); else fprintf (headerfile, "ENUMERATED {\n"); - ASN1_TAILQ_FOREACH(m, t->members, members) { + HEIM_TAILQ_FOREACH(m, t->members, members) { space(level + 1); fprintf (headerfile, "%s(%d)%s\n", m->name, m->val, last_member_p(m)); @@ -629,13 +629,13 @@ define_asn1 (int level, Type *t) fprintf(headerfile, "SET {\n"); else fprintf(headerfile, "SEQUENCE {\n"); - ASN1_TAILQ_FOREACH(m, t->members, members) { + HEIM_TAILQ_FOREACH(m, t->members, members) { if(strlen(m->name) > max_width) max_width = strlen(m->name); } max_width += 3; if(max_width < 16) max_width = 16; - ASN1_TAILQ_FOREACH(m, t->members, members) { + HEIM_TAILQ_FOREACH(m, t->members, members) { size_t width = max_width; space(level + 1); if (m->ellipsis) { @@ -754,7 +754,7 @@ define_type (int level, const char *name, const char *basename, Type *t, int typ if(t->members) { Member *m; fprintf (headerfile, "enum %s {\n", typedefp ? name : ""); - ASN1_TAILQ_FOREACH(m, t->members, members) { + HEIM_TAILQ_FOREACH(m, t->members, members) { space (level + 1); fprintf(headerfile, "%s = %d%s\n", m->gen_name, m->val, last_member_p(m)); @@ -799,7 +799,7 @@ define_type (int level, const char *name, const char *basename, Type *t, int typ * ABIs prior to this compiler supporting BIT STRING with larger * members, we stick to this. */ - ASN1_TAILQ_FOREACH(m, t->members, members) { + HEIM_TAILQ_FOREACH(m, t->members, members) { if (m->val > max_memno) max_memno = m->val; } @@ -814,14 +814,14 @@ define_type (int level, const char *name, const char *basename, Type *t, int typ i.constraint = NULL; space(level); - if(ASN1_TAILQ_EMPTY(t->members)) + if(HEIM_TAILQ_EMPTY(t->members)) fprintf (headerfile, "heim_bit_string %s;\n", name); else { int pos = 0; getnewbasename(&newbasename, typedefp, basename, name); fprintf (headerfile, "struct %s {\n", newbasename); - ASN1_TAILQ_FOREACH(m, t->members, members) { + HEIM_TAILQ_FOREACH(m, t->members, members) { char *n = NULL; /* @@ -869,7 +869,7 @@ define_type (int level, const char *name, const char *basename, Type *t, int typ space(level); fprintf (headerfile, "enum %s {\n", typedefp ? name : ""); - ASN1_TAILQ_FOREACH(m, t->members, members) { + HEIM_TAILQ_FOREACH(m, t->members, members) { space(level + 1); if (m->ellipsis) fprintf (headerfile, "/* ... */\n"); @@ -893,7 +893,7 @@ define_type (int level, const char *name, const char *basename, Type *t, int typ space(level + 1); fprintf(headerfile, "heim_octet_string _save;\n"); } - ASN1_TAILQ_FOREACH(m, t->members, members) { + HEIM_TAILQ_FOREACH(m, t->members, members) { if (m->ellipsis) { ; } else if (m->optional) { @@ -965,7 +965,7 @@ define_type (int level, const char *name, const char *basename, Type *t, int typ fprintf (headerfile, "%s = 0,\n", m->label); first = 0; } - ASN1_TAILQ_FOREACH(m, t->members, members) { + HEIM_TAILQ_FOREACH(m, t->members, members) { space(level + 2); if (m->ellipsis) fprintf (headerfile, "/* ... */\n"); @@ -979,7 +979,7 @@ define_type (int level, const char *name, const char *basename, Type *t, int typ fprintf (headerfile, "} element;\n"); space(level + 1); fprintf (headerfile, "union {\n"); - ASN1_TAILQ_FOREACH(m, t->members, members) { + HEIM_TAILQ_FOREACH(m, t->members, members) { if (m->ellipsis) { space(level + 2); fprintf(headerfile, "heim_octet_string asn1_ellipsis;\n"); diff --git a/lib/asn1/gen_copy.c b/lib/asn1/gen_copy.c index 36f68ee5d..3f71e00ba 100644 --- a/lib/asn1/gen_copy.c +++ b/lib/asn1/gen_copy.c @@ -70,7 +70,7 @@ copy_type (const char *from, const char *to, const Type *t, int preserve) copy_primitive ("octet_string", from, to); break; case TBitString: - if (ASN1_TAILQ_EMPTY(t->members)) + if (HEIM_TAILQ_EMPTY(t->members)) copy_primitive ("bit_string", from, to); else fprintf(codefile, "*(%s) = *(%s);\n", to, from); @@ -98,7 +98,7 @@ copy_type (const char *from, const char *to, const Type *t, int preserve) fprintf(codefile, "switch((%s)->element) {\n", from); } - ASN1_TAILQ_FOREACH(m, t->members, members) { + HEIM_TAILQ_FOREACH(m, t->members, members) { char *fs; char *ts; diff --git a/lib/asn1/gen_decode.c b/lib/asn1/gen_decode.c index 25a9e3ae1..c213c6cbe 100644 --- a/lib/asn1/gen_decode.c +++ b/lib/asn1/gen_decode.c @@ -297,7 +297,7 @@ decode_type(const char *name, const Type *t, int optional, struct value *defval, Member *m; int pos = 0; - if (ASN1_TAILQ_EMPTY(t->members)) { + if (HEIM_TAILQ_EMPTY(t->members)) { decode_primitive ("bit_string", name, forwstr); break; } @@ -307,7 +307,7 @@ decode_type(const char *name, const Type *t, int optional, struct value *defval, fprintf(codefile, "do {\n" "if (len < 1) break;\n"); - ASN1_TAILQ_FOREACH(m, t->members, members) { + HEIM_TAILQ_FOREACH(m, t->members, members) { while (m->val / 8 > pos / 8) { fprintf (codefile, "p++; len--; ret++;\n" @@ -330,7 +330,7 @@ decode_type(const char *name, const Type *t, int optional, struct value *defval, if (t->members == NULL) break; - ASN1_TAILQ_FOREACH(m, t->members, members) { + HEIM_TAILQ_FOREACH(m, t->members, members) { char *s = NULL; if (m->ellipsis) @@ -364,7 +364,7 @@ decode_type(const char *name, const Type *t, int optional, struct value *defval, "if(e) %s;\n", forwstr); fprintf(codefile, "switch (MAKE_TAG(class, type, tag)) {\n"); memno = 0; - ASN1_TAILQ_FOREACH(m, t->members, members) { + HEIM_TAILQ_FOREACH(m, t->members, members) { char *s; assert(m->type->type == TTag); @@ -395,7 +395,7 @@ decode_type(const char *name, const Type *t, int optional, struct value *defval, fprintf(codefile, "}\n"); fprintf(codefile, "}\n"); memno = 0; - ASN1_TAILQ_FOREACH(m, t->members, members) { + HEIM_TAILQ_FOREACH(m, t->members, members) { char *s; if (asprintf (&s, "%s->%s", name, m->gen_name) < 0 || s == NULL) @@ -586,7 +586,7 @@ decode_type(const char *name, const Type *t, int optional, struct value *defval, if (t->members == NULL) break; - ASN1_TAILQ_FOREACH(m, t->members, members) { + HEIM_TAILQ_FOREACH(m, t->members, members) { const Type *tt = m->type; char *s = NULL; Der_class cl; diff --git a/lib/asn1/gen_encode.c b/lib/asn1/gen_encode.c index 60433a00e..1149641f2 100644 --- a/lib/asn1/gen_encode.c +++ b/lib/asn1/gen_encode.c @@ -153,7 +153,7 @@ encode_type (const char *name, const Type *t, const char *tmpstr) Member *m; int pos; - if (ASN1_TAILQ_EMPTY(t->members)) { + if (HEIM_TAILQ_EMPTY(t->members)) { encode_primitive("bit_string", name); constructed = 0; break; @@ -178,13 +178,13 @@ encode_type (const char *name, const Type *t, const char *tmpstr) * I hate ASN.1 (and DER), but I hate it even more when everybody * has to screw it up differently. */ - pos = ASN1_TAILQ_LAST(t->members, memhead)->val; + pos = HEIM_TAILQ_LAST(t->members, memhead)->val; if (rfc1510_bitstring) { if (pos < 31) pos = 31; } - ASN1_TAILQ_FOREACH_REVERSE(m, t->members, memhead, members) { + HEIM_TAILQ_FOREACH_REVERSE(m, t->members, memhead, members) { while (m->val / 8 < pos / 8) { if (!rfc1510_bitstring) fprintf (codefile, @@ -259,7 +259,7 @@ encode_type (const char *name, const Type *t, const char *tmpstr) if (t->members == NULL) break; - ASN1_TAILQ_FOREACH_REVERSE(m, t->members, memhead, members) { + HEIM_TAILQ_FOREACH_REVERSE(m, t->members, memhead, members) { char *s = NULL; if (m->ellipsis) @@ -413,7 +413,7 @@ encode_type (const char *name, const Type *t, const char *tmpstr) errx(1, "malloc"); fprintf(codefile, "switch(%s->element) {\n", s); - ASN1_TAILQ_FOREACH_REVERSE(m, t->members, memhead, members) { + HEIM_TAILQ_FOREACH_REVERSE(m, t->members, memhead, members) { char *s2 = NULL; if (m->ellipsis) { diff --git a/lib/asn1/gen_free.c b/lib/asn1/gen_free.c index b9cae7533..76a316913 100644 --- a/lib/asn1/gen_free.c +++ b/lib/asn1/gen_free.c @@ -63,7 +63,7 @@ free_type (const char *name, const Type *t, int preserve) case TUTCTime: break; case TBitString: - if (ASN1_TAILQ_EMPTY(t->members)) + if (HEIM_TAILQ_EMPTY(t->members)) free_primitive("bit_string", name); break; case TOctetString: @@ -83,7 +83,7 @@ free_type (const char *name, const Type *t, int preserve) if(t->type == TChoice) fprintf(codefile, "switch((%s)->element) {\n", name); - ASN1_TAILQ_FOREACH(m, t->members, members) { + HEIM_TAILQ_FOREACH(m, t->members, members) { char *s; if (m->ellipsis){ diff --git a/lib/asn1/gen_glue.c b/lib/asn1/gen_glue.c index a7d90e368..597ad56bf 100644 --- a/lib/asn1/gen_glue.c +++ b/lib/asn1/gen_glue.c @@ -52,7 +52,7 @@ generate_2int (const Type *t, const char *gen_name) "uint64_t r = 0;\n", gen_name, gen_name); - ASN1_TAILQ_FOREACH(m, t->members, members) { + HEIM_TAILQ_FOREACH(m, t->members, members) { fprintf (codefile, "if(f.%s) r |= (1LU << %d);\n", m->gen_name, m->val); } @@ -77,7 +77,7 @@ generate_int2 (const Type *t, const char *gen_name) gen_name, gen_name, gen_name); if(t->members) { - ASN1_TAILQ_FOREACH(m, t->members, members) { + HEIM_TAILQ_FOREACH(m, t->members, members) { fprintf (codefile, "\tflags.%s = (n >> %d) & 1;\n", m->gen_name, m->val); } @@ -112,7 +112,7 @@ generate_units (const Type *t, const char *gen_name) gen_name); if(t->members) { - ASN1_TAILQ_FOREACH_REVERSE(m, t->members, memhead, members) { + HEIM_TAILQ_FOREACH_REVERSE(m, t->members, memhead, members) { fprintf (codefile, "\t{\"%s\",\t1LU << %d},\n", m->name, m->val); } @@ -146,9 +146,9 @@ generate_glue (const Type *t, const char *gen_name) case TBitString : { Member *m; - if (ASN1_TAILQ_EMPTY(t->members)) + if (HEIM_TAILQ_EMPTY(t->members)) break; - ASN1_TAILQ_FOREACH(m, t->members, members) { + HEIM_TAILQ_FOREACH(m, t->members, members) { if (m->val > 63) return; } diff --git a/lib/asn1/gen_length.c b/lib/asn1/gen_length.c index 7a8a725a0..6cc4fd90d 100644 --- a/lib/asn1/gen_length.c +++ b/lib/asn1/gen_length.c @@ -102,16 +102,16 @@ length_type (const char *name, const Type *t, length_primitive ("octet_string", name, variable); break; case TBitString: { - if (ASN1_TAILQ_EMPTY(t->members)) + if (HEIM_TAILQ_EMPTY(t->members)) length_primitive("bit_string", name, variable); else { if (!rfc1510_bitstring) { Member *m; - int pos = ASN1_TAILQ_LAST(t->members, memhead)->val; + int pos = HEIM_TAILQ_LAST(t->members, memhead)->val; fprintf(codefile, "do {\n"); - ASN1_TAILQ_FOREACH_REVERSE(m, t->members, memhead, members) { + HEIM_TAILQ_FOREACH_REVERSE(m, t->members, memhead, members) { while (m->val / 8 < pos / 8) { pos -= 8; } @@ -139,7 +139,7 @@ length_type (const char *name, const Type *t, if(t->type == TChoice) fprintf (codefile, "switch((%s)->element) {\n", name); - ASN1_TAILQ_FOREACH(m, t->members, members) { + HEIM_TAILQ_FOREACH(m, t->members, members) { char *s; if (m->ellipsis) { diff --git a/lib/asn1/gen_template.c b/lib/asn1/gen_template.c index d469201e5..6d7cd7f91 100644 --- a/lib/asn1/gen_template.c +++ b/lib/asn1/gen_template.c @@ -246,19 +246,19 @@ struct template { char *tt; char *offset; char *ptr; - ASN1_TAILQ_ENTRY(template) members; + HEIM_TAILQ_ENTRY(template) members; }; -ASN1_TAILQ_HEAD(templatehead, template); +HEIM_TAILQ_HEAD(templatehead, template); struct tlist { char *name; char *header; struct templatehead template; - ASN1_TAILQ_ENTRY(tlist) tmembers; + HEIM_TAILQ_ENTRY(tlist) tmembers; }; -ASN1_TAILQ_HEAD(tlisthead, tlist); +HEIM_TAILQ_HEAD(tlisthead, tlist); static void tlist_header(struct tlist *, const char *, ...) __attribute__ ((__format__ (__printf__, 2, 3))); static struct template * @@ -269,7 +269,7 @@ static void add_line_pointer(struct templatehead *, const char *, const char *, __attribute__ ((__format__ (__printf__, 4, 5))); -static struct tlisthead tlistmaster = ASN1_TAILQ_HEAD_INITIALIZER(tlistmaster); +static struct tlisthead tlistmaster = HEIM_TAILQ_HEAD_INITIALIZER(tlistmaster); static unsigned long numdups = 0; static struct tlist * @@ -277,7 +277,7 @@ tlist_new(const char *name) { struct tlist *tl = calloc(1, sizeof(*tl)); tl->name = strdup(name); - ASN1_TAILQ_INIT(&tl->template); + HEIM_TAILQ_INIT(&tl->template); return tl; } @@ -297,7 +297,7 @@ tlist_count(struct tlist *tl) unsigned int count = 0; struct template *q; - ASN1_TAILQ_FOREACH(q, &tl->template, members) { + HEIM_TAILQ_FOREACH(q, &tl->template, members) { count++; } return count; @@ -306,7 +306,7 @@ tlist_count(struct tlist *tl) static void tlist_add(struct tlist *tl) { - ASN1_TAILQ_INSERT_TAIL(&tlistmaster, tl, tmembers); + HEIM_TAILQ_INSERT_TAIL(&tlistmaster, tl, tmembers); } static void @@ -318,8 +318,8 @@ tlist_print(struct tlist *tl) fprintf(f, "const struct asn1_template asn1_%s[] = {\n", tl->name); fprintf(f, "/* 0 */ %s,\n", tl->header); - ASN1_TAILQ_FOREACH(q, &tl->template, members) { - int last = (ASN1_TAILQ_LAST(&tl->template, templatehead) == q); + HEIM_TAILQ_FOREACH(q, &tl->template, members) { + int last = (HEIM_TAILQ_LAST(&tl->template, templatehead) == q); fprintf(f, "/* %lu */ %s%s\n", (unsigned long)i++, q->line, last ? "" : ","); } fprintf(f, "};\n"); @@ -329,7 +329,7 @@ static struct tlist * tlist_find_by_name(const char *name) { struct tlist *ql; - ASN1_TAILQ_FOREACH(ql, &tlistmaster, tmembers) { + HEIM_TAILQ_FOREACH(ql, &tlistmaster, tmembers) { if (strcmp(ql->name, name) == 0) return ql; } @@ -357,8 +357,8 @@ tlist_cmp(const struct tlist *tl, const struct tlist *ql) ret = strcmp(tl->header, ql->header); if (ret) return ret; - q = ASN1_TAILQ_FIRST(&ql->template); - ASN1_TAILQ_FOREACH(t, &tl->template, members) { + q = HEIM_TAILQ_FIRST(&ql->template); + HEIM_TAILQ_FOREACH(t, &tl->template, members) { if (q == NULL) return 1; if (t->ptr == NULL || q->ptr == NULL) { @@ -375,7 +375,7 @@ tlist_cmp(const struct tlist *tl, const struct tlist *ql) (ret = tlist_cmp_name(t->ptr, q->ptr)) != 0) return ret; } - q = ASN1_TAILQ_NEXT(q, members); + q = HEIM_TAILQ_NEXT(q, members); } if (q != NULL) return -1; return 0; @@ -387,7 +387,7 @@ tlist_find_dup(const struct tlist *tl) { struct tlist *ql; - ASN1_TAILQ_FOREACH(ql, &tlistmaster, tmembers) { + HEIM_TAILQ_FOREACH(ql, &tlistmaster, tmembers) { if (tlist_cmp(ql, tl) == 0) { numdups++; return ql->name; @@ -410,7 +410,7 @@ add_line(struct templatehead *t, const char *fmt, ...) if (vasprintf(&q->line, fmt, ap) < 0 || q->line == NULL) errx(1, "malloc"); va_end(ap); - ASN1_TAILQ_INSERT_TAIL(t, q, members); + HEIM_TAILQ_INSERT_TAIL(t, q, members); return q; } @@ -573,9 +573,9 @@ template_members(struct templatehead *temp, const char *basetype, const char *na FILE *f = get_code_file(); static unsigned long bmember_counter = 0; - ASN1_TAILQ_INIT(&template); + HEIM_TAILQ_INIT(&template); - if (ASN1_TAILQ_EMPTY(t->members)) { + if (HEIM_TAILQ_EMPTY(t->members)) { add_line(temp, "{ A1_PARSE_T(A1T_HEIM_BIT_STRING), %s, NULL }", poffset); break; } @@ -584,11 +584,11 @@ template_members(struct templatehead *temp, const char *basetype, const char *na errx(1, "malloc"); output_name(bname); - ASN1_TAILQ_FOREACH(m, t->members, members) { + HEIM_TAILQ_FOREACH(m, t->members, members) { add_line(&template, "{ 0, %d, 0 } /* %s */", m->val, m->gen_name); } - ASN1_TAILQ_FOREACH(q, &template, members) { + HEIM_TAILQ_FOREACH(q, &template, members) { count++; } @@ -597,8 +597,8 @@ template_members(struct templatehead *temp, const char *basetype, const char *na rfc1510_bitstring ? "|A1_HBF_RFC1510" : "", basetype, (unsigned long)count); i = 1; - ASN1_TAILQ_FOREACH(q, &template, members) { - int last = (ASN1_TAILQ_LAST(&template, templatehead) == q); + HEIM_TAILQ_FOREACH(q, &template, members) { + int last = (HEIM_TAILQ_LAST(&template, templatehead) == q); fprintf(f, "/* %lu */ %s%s\n", (unsigned long)i++, q->line, last ? "" : ","); } fprintf(f, "};\n"); @@ -614,7 +614,7 @@ template_members(struct templatehead *temp, const char *basetype, const char *na fprintf(get_code_file(), "/* tsequence: members isstruct: %d */\n", isstruct); - ASN1_TAILQ_FOREACH(m, t->members, members) { + HEIM_TAILQ_FOREACH(m, t->members, members) { char *newbasename = NULL; if (m->ellipsis) @@ -752,13 +752,13 @@ template_members(struct templatehead *temp, const char *basetype, const char *na char *e; static unsigned long choice_counter = 0; - ASN1_TAILQ_INIT(&template); + HEIM_TAILQ_INIT(&template); if (asprintf(&tname, "asn1_choice_%s_%s%lu", basetype, name ? name : "", choice_counter++) < 0 || tname == NULL) errx(1, "malloc"); - ASN1_TAILQ_FOREACH(m, t->members, members) { + HEIM_TAILQ_FOREACH(m, t->members, members) { const char *dupname; char *elname = NULL; char *newbasename = NULL; @@ -803,7 +803,7 @@ template_members(struct templatehead *temp, const char *basetype, const char *na errx(1, "malloc"); } - ASN1_TAILQ_FOREACH(q, &template, members) { + HEIM_TAILQ_FOREACH(q, &template, members) { count++; } @@ -811,8 +811,8 @@ template_members(struct templatehead *temp, const char *basetype, const char *na fprintf(f, "/* 0 */ { %s, offsetof(%s%s, element), ((void *)%lu) },\n", e ? e : "0", isstruct ? "struct " : "", basetype, (unsigned long)count); i = 1; - ASN1_TAILQ_FOREACH(q, &template, members) { - int last = (ASN1_TAILQ_LAST(&template, templatehead) == q); + HEIM_TAILQ_FOREACH(q, &template, members) { + int last = (HEIM_TAILQ_LAST(&template, templatehead) == q); fprintf(f, "/* %lu */ %s%s\n", (unsigned long)i++, q->line, last ? "" : ","); } fprintf(f, "};\n"); @@ -885,7 +885,7 @@ generate_template_type(const char *varname, /* if its a sequence or set type, check if there is a ellipsis */ if (type->type == TSequence || type->type == TSet) { Member *m; - ASN1_TAILQ_FOREACH(m, type->members, members) { + HEIM_TAILQ_FOREACH(m, type->members, members) { if (m->ellipsis) have_ellipsis = 1; } @@ -901,7 +901,7 @@ generate_template_type(const char *varname, if (n < 0 || szt == NULL) errx(1, "malloc"); - if (ASN1_TAILQ_EMPTY(&tl->template) && compact_tag(type)->type != TNull) + if (HEIM_TAILQ_EMPTY(&tl->template) && compact_tag(type)->type != TNull) errx(1, "Tag %s...%s with no content ?", basetype, name ? name : ""); fprintf(get_code_file(), "/* generate_template_type: %s */\n", tl->name); diff --git a/lib/asn1/symbol.h b/lib/asn1/symbol.h index 97b4db726..f97faf2b0 100644 --- a/lib/asn1/symbol.h +++ b/lib/asn1/symbol.h @@ -36,7 +36,7 @@ #ifndef _SYMBOL_H #define _SYMBOL_H -#include "asn1_queue.h" +#include enum typetype { TBitString, @@ -92,13 +92,13 @@ struct member { int optional; int ellipsis; struct type *type; - ASN1_TAILQ_ENTRY(member) members; + HEIM_TAILQ_ENTRY(member) members; struct value *defval; }; typedef struct member Member; -ASN1_TAILQ_HEAD(memhead, member); +HEIM_TAILQ_HEAD(memhead, member); struct symbol; diff --git a/lib/base/Makefile.am b/lib/base/Makefile.am index ee5f120d3..da91c76ce 100644 --- a/lib/base/Makefile.am +++ b/lib/base/Makefile.am @@ -40,7 +40,6 @@ dist_libheimbase_la_SOURCES = \ error.c \ heimbase.c \ heimbasepriv.h \ - heimqueue.h \ json.c \ null.c \ number.c \