base: make heimqueue.h a shared header

Share heimqueue.h between base and asn1, to avoid duplication of code.
This commit is contained in:
Luke Howard
2019-12-26 21:41:29 +11:00
parent 64d5d138a9
commit d7138cfbe7
16 changed files with 86 additions and 254 deletions

View File

@@ -11,7 +11,7 @@ AM_CPPFLAGS += -DHOST=\"$(CANONICAL_HOST)\"
nodist_include_HEADERS = krb5-types.h 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 EXTRA_DIST = NTMakefile krb5-types.cross config.h.w32

View File

@@ -40,6 +40,7 @@ SUBDIRS=kadm5 hcrypto gssapi
INCFILES= \ INCFILES= \
$(INCDIR)\config.h \ $(INCDIR)\config.h \
$(INCDIR)\crypto-headers.h \ $(INCDIR)\crypto-headers.h \
$(INCDIR)\heimqueue.h \
$(INCDIR)\heim_threads.h \ $(INCDIR)\heim_threads.h \
$(INCDIR)\krb5-types.h \ $(INCDIR)\krb5-types.h \
$(INCDIR)\version.h $(INCDIR)\version.h

View File

@@ -71,7 +71,6 @@ nodist_check_gen_SOURCES = $(gen_files_test:.x=.c)
build_HEADERZ = asn1-template.h build_HEADERZ = asn1-template.h
asn1_compile_SOURCES = \ asn1_compile_SOURCES = \
asn1_queue.h \
asn1parse.y \ asn1parse.y \
der.h \ der.h \
gen.c \ gen.c \

View File

@@ -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_ */

View File

@@ -415,12 +415,12 @@ IntegerType : kw_INTEGER
NamedNumberList : NamedNumber NamedNumberList : NamedNumber
{ {
$$ = emalloc(sizeof(*$$)); $$ = emalloc(sizeof(*$$));
ASN1_TAILQ_INIT($$); HEIM_TAILQ_INIT($$);
ASN1_TAILQ_INSERT_HEAD($$, $1, members); HEIM_TAILQ_INSERT_HEAD($$, $1, members);
} }
| NamedNumberList ',' NamedNumber | NamedNumberList ',' NamedNumber
{ {
ASN1_TAILQ_INSERT_TAIL($1, $3, members); HEIM_TAILQ_INSERT_TAIL($1, $3, members);
$$ = $1; $$ = $1;
} }
| NamedNumberList ',' ELLIPSIS | NamedNumberList ',' ELLIPSIS
@@ -455,7 +455,7 @@ BitStringType : kw_BIT kw_STRING
{ {
$$ = new_type(TBitString); $$ = new_type(TBitString);
$$->members = emalloc(sizeof(*$$->members)); $$->members = emalloc(sizeof(*$$->members));
ASN1_TAILQ_INIT($$->members); HEIM_TAILQ_INIT($$->members);
$$ = new_tag(ASN1_C_UNIV, UT_BitString, TE_EXPLICIT, $$); $$ = new_tag(ASN1_C_UNIV, UT_BitString, TE_EXPLICIT, $$);
} }
| kw_BIT kw_STRING '{' NamedBitList '}' | kw_BIT kw_STRING '{' NamedBitList '}'
@@ -763,12 +763,12 @@ RestrictedCharactedStringType: kw_GeneralString
ComponentTypeList: ComponentType ComponentTypeList: ComponentType
{ {
$$ = emalloc(sizeof(*$$)); $$ = emalloc(sizeof(*$$));
ASN1_TAILQ_INIT($$); HEIM_TAILQ_INIT($$);
ASN1_TAILQ_INSERT_HEAD($$, $1, members); HEIM_TAILQ_INSERT_HEAD($$, $1, members);
} }
| ComponentTypeList ',' ComponentType | ComponentTypeList ',' ComponentType
{ {
ASN1_TAILQ_INSERT_TAIL($1, $3, members); HEIM_TAILQ_INSERT_TAIL($1, $3, members);
$$ = $1; $$ = $1;
} }
| ComponentTypeList ',' ELLIPSIS | ComponentTypeList ',' ELLIPSIS
@@ -777,7 +777,7 @@ ComponentTypeList: ComponentType
m->name = estrdup("..."); m->name = estrdup("...");
m->gen_name = estrdup("asn1_ellipsis"); m->gen_name = estrdup("asn1_ellipsis");
m->ellipsis = 1; m->ellipsis = 1;
ASN1_TAILQ_INSERT_TAIL($1, m, members); HEIM_TAILQ_INSERT_TAIL($1, m, members);
$$ = $1; $$ = $1;
} }
; ;
@@ -816,12 +816,12 @@ ComponentType : NamedType
NamedBitList : NamedBit NamedBitList : NamedBit
{ {
$$ = emalloc(sizeof(*$$)); $$ = emalloc(sizeof(*$$));
ASN1_TAILQ_INIT($$); HEIM_TAILQ_INIT($$);
ASN1_TAILQ_INSERT_HEAD($$, $1, members); HEIM_TAILQ_INSERT_HEAD($$, $1, members);
} }
| NamedBitList ',' NamedBit | NamedBitList ',' NamedBit
{ {
ASN1_TAILQ_INSERT_TAIL($1, $3, members); HEIM_TAILQ_INSERT_TAIL($1, $3, members);
$$ = $1; $$ = $1;
} }
; ;
@@ -1031,7 +1031,7 @@ static void fix_labels1(struct memhead *members, const char *prefix)
if(members == NULL) if(members == NULL)
return; return;
ASN1_TAILQ_FOREACH(m, members, members) { HEIM_TAILQ_FOREACH(m, members, members) {
if (asprintf(&m->label, "%s_%s", prefix, m->gen_name) < 0) if (asprintf(&m->label, "%s_%s", prefix, m->gen_name) < 0)
errx(1, "malloc"); errx(1, "malloc");
if (m->label == NULL) if (m->label == NULL)

View File

@@ -548,10 +548,10 @@ space(int level)
static const char * static const char *
last_member_p(struct member *m) 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) if (n == NULL)
return ""; return "";
if (n->ellipsis && ASN1_TAILQ_NEXT(n, members) == NULL) if (n->ellipsis && HEIM_TAILQ_NEXT(n, members) == NULL)
return ""; return "";
return ","; return ",";
} }
@@ -560,7 +560,7 @@ static struct member *
have_ellipsis(Type *t) have_ellipsis(Type *t)
{ {
struct member *m; struct member *m;
ASN1_TAILQ_FOREACH(m, t->members, members) { HEIM_TAILQ_FOREACH(m, t->members, members) {
if (m->ellipsis) if (m->ellipsis)
return m; return m;
} }
@@ -584,7 +584,7 @@ define_asn1 (int level, Type *t)
} else { } else {
Member *m; Member *m;
fprintf (headerfile, "INTEGER {\n"); fprintf (headerfile, "INTEGER {\n");
ASN1_TAILQ_FOREACH(m, t->members, members) { HEIM_TAILQ_FOREACH(m, t->members, members) {
space (level + 1); space (level + 1);
fprintf(headerfile, "%s(%d)%s\n", m->gen_name, m->val, fprintf(headerfile, "%s(%d)%s\n", m->gen_name, m->val,
last_member_p(m)); last_member_p(m));
@@ -608,7 +608,7 @@ define_asn1 (int level, Type *t)
fprintf (headerfile, "BIT STRING {\n"); fprintf (headerfile, "BIT STRING {\n");
else else
fprintf (headerfile, "ENUMERATED {\n"); fprintf (headerfile, "ENUMERATED {\n");
ASN1_TAILQ_FOREACH(m, t->members, members) { HEIM_TAILQ_FOREACH(m, t->members, members) {
space(level + 1); space(level + 1);
fprintf (headerfile, "%s(%d)%s\n", m->name, m->val, fprintf (headerfile, "%s(%d)%s\n", m->name, m->val,
last_member_p(m)); last_member_p(m));
@@ -629,13 +629,13 @@ define_asn1 (int level, Type *t)
fprintf(headerfile, "SET {\n"); fprintf(headerfile, "SET {\n");
else else
fprintf(headerfile, "SEQUENCE {\n"); fprintf(headerfile, "SEQUENCE {\n");
ASN1_TAILQ_FOREACH(m, t->members, members) { HEIM_TAILQ_FOREACH(m, t->members, members) {
if(strlen(m->name) > max_width) if(strlen(m->name) > max_width)
max_width = strlen(m->name); max_width = strlen(m->name);
} }
max_width += 3; max_width += 3;
if(max_width < 16) max_width = 16; 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; size_t width = max_width;
space(level + 1); space(level + 1);
if (m->ellipsis) { if (m->ellipsis) {
@@ -754,7 +754,7 @@ define_type (int level, const char *name, const char *basename, Type *t, int typ
if(t->members) { if(t->members) {
Member *m; Member *m;
fprintf (headerfile, "enum %s {\n", typedefp ? name : ""); fprintf (headerfile, "enum %s {\n", typedefp ? name : "");
ASN1_TAILQ_FOREACH(m, t->members, members) { HEIM_TAILQ_FOREACH(m, t->members, members) {
space (level + 1); space (level + 1);
fprintf(headerfile, "%s = %d%s\n", m->gen_name, m->val, fprintf(headerfile, "%s = %d%s\n", m->gen_name, m->val,
last_member_p(m)); 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 * ABIs prior to this compiler supporting BIT STRING with larger
* members, we stick to this. * members, we stick to this.
*/ */
ASN1_TAILQ_FOREACH(m, t->members, members) { HEIM_TAILQ_FOREACH(m, t->members, members) {
if (m->val > max_memno) if (m->val > max_memno)
max_memno = m->val; 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; i.constraint = NULL;
space(level); space(level);
if(ASN1_TAILQ_EMPTY(t->members)) if(HEIM_TAILQ_EMPTY(t->members))
fprintf (headerfile, "heim_bit_string %s;\n", name); fprintf (headerfile, "heim_bit_string %s;\n", name);
else { else {
int pos = 0; int pos = 0;
getnewbasename(&newbasename, typedefp, basename, name); getnewbasename(&newbasename, typedefp, basename, name);
fprintf (headerfile, "struct %s {\n", newbasename); fprintf (headerfile, "struct %s {\n", newbasename);
ASN1_TAILQ_FOREACH(m, t->members, members) { HEIM_TAILQ_FOREACH(m, t->members, members) {
char *n = NULL; char *n = NULL;
/* /*
@@ -869,7 +869,7 @@ define_type (int level, const char *name, const char *basename, Type *t, int typ
space(level); space(level);
fprintf (headerfile, "enum %s {\n", typedefp ? name : ""); fprintf (headerfile, "enum %s {\n", typedefp ? name : "");
ASN1_TAILQ_FOREACH(m, t->members, members) { HEIM_TAILQ_FOREACH(m, t->members, members) {
space(level + 1); space(level + 1);
if (m->ellipsis) if (m->ellipsis)
fprintf (headerfile, "/* ... */\n"); fprintf (headerfile, "/* ... */\n");
@@ -893,7 +893,7 @@ define_type (int level, const char *name, const char *basename, Type *t, int typ
space(level + 1); space(level + 1);
fprintf(headerfile, "heim_octet_string _save;\n"); fprintf(headerfile, "heim_octet_string _save;\n");
} }
ASN1_TAILQ_FOREACH(m, t->members, members) { HEIM_TAILQ_FOREACH(m, t->members, members) {
if (m->ellipsis) { if (m->ellipsis) {
; ;
} else if (m->optional) { } 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); fprintf (headerfile, "%s = 0,\n", m->label);
first = 0; first = 0;
} }
ASN1_TAILQ_FOREACH(m, t->members, members) { HEIM_TAILQ_FOREACH(m, t->members, members) {
space(level + 2); space(level + 2);
if (m->ellipsis) if (m->ellipsis)
fprintf (headerfile, "/* ... */\n"); 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"); fprintf (headerfile, "} element;\n");
space(level + 1); space(level + 1);
fprintf (headerfile, "union {\n"); fprintf (headerfile, "union {\n");
ASN1_TAILQ_FOREACH(m, t->members, members) { HEIM_TAILQ_FOREACH(m, t->members, members) {
if (m->ellipsis) { if (m->ellipsis) {
space(level + 2); space(level + 2);
fprintf(headerfile, "heim_octet_string asn1_ellipsis;\n"); fprintf(headerfile, "heim_octet_string asn1_ellipsis;\n");

View File

@@ -70,7 +70,7 @@ copy_type (const char *from, const char *to, const Type *t, int preserve)
copy_primitive ("octet_string", from, to); copy_primitive ("octet_string", from, to);
break; break;
case TBitString: case TBitString:
if (ASN1_TAILQ_EMPTY(t->members)) if (HEIM_TAILQ_EMPTY(t->members))
copy_primitive ("bit_string", from, to); copy_primitive ("bit_string", from, to);
else else
fprintf(codefile, "*(%s) = *(%s);\n", to, from); 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); fprintf(codefile, "switch((%s)->element) {\n", from);
} }
ASN1_TAILQ_FOREACH(m, t->members, members) { HEIM_TAILQ_FOREACH(m, t->members, members) {
char *fs; char *fs;
char *ts; char *ts;

View File

@@ -297,7 +297,7 @@ decode_type(const char *name, const Type *t, int optional, struct value *defval,
Member *m; Member *m;
int pos = 0; int pos = 0;
if (ASN1_TAILQ_EMPTY(t->members)) { if (HEIM_TAILQ_EMPTY(t->members)) {
decode_primitive ("bit_string", name, forwstr); decode_primitive ("bit_string", name, forwstr);
break; break;
} }
@@ -307,7 +307,7 @@ decode_type(const char *name, const Type *t, int optional, struct value *defval,
fprintf(codefile, fprintf(codefile,
"do {\n" "do {\n"
"if (len < 1) break;\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) { while (m->val / 8 > pos / 8) {
fprintf (codefile, fprintf (codefile,
"p++; len--; ret++;\n" "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) if (t->members == NULL)
break; break;
ASN1_TAILQ_FOREACH(m, t->members, members) { HEIM_TAILQ_FOREACH(m, t->members, members) {
char *s = NULL; char *s = NULL;
if (m->ellipsis) 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); "if(e) %s;\n", forwstr);
fprintf(codefile, "switch (MAKE_TAG(class, type, tag)) {\n"); fprintf(codefile, "switch (MAKE_TAG(class, type, tag)) {\n");
memno = 0; memno = 0;
ASN1_TAILQ_FOREACH(m, t->members, members) { HEIM_TAILQ_FOREACH(m, t->members, members) {
char *s; char *s;
assert(m->type->type == TTag); 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");
fprintf(codefile, "}\n"); fprintf(codefile, "}\n");
memno = 0; memno = 0;
ASN1_TAILQ_FOREACH(m, t->members, members) { HEIM_TAILQ_FOREACH(m, t->members, members) {
char *s; char *s;
if (asprintf (&s, "%s->%s", name, m->gen_name) < 0 || s == NULL) 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) if (t->members == NULL)
break; break;
ASN1_TAILQ_FOREACH(m, t->members, members) { HEIM_TAILQ_FOREACH(m, t->members, members) {
const Type *tt = m->type; const Type *tt = m->type;
char *s = NULL; char *s = NULL;
Der_class cl; Der_class cl;

View File

@@ -153,7 +153,7 @@ encode_type (const char *name, const Type *t, const char *tmpstr)
Member *m; Member *m;
int pos; int pos;
if (ASN1_TAILQ_EMPTY(t->members)) { if (HEIM_TAILQ_EMPTY(t->members)) {
encode_primitive("bit_string", name); encode_primitive("bit_string", name);
constructed = 0; constructed = 0;
break; 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 * I hate ASN.1 (and DER), but I hate it even more when everybody
* has to screw it up differently. * 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 (rfc1510_bitstring) {
if (pos < 31) if (pos < 31)
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) { while (m->val / 8 < pos / 8) {
if (!rfc1510_bitstring) if (!rfc1510_bitstring)
fprintf (codefile, fprintf (codefile,
@@ -259,7 +259,7 @@ encode_type (const char *name, const Type *t, const char *tmpstr)
if (t->members == NULL) if (t->members == NULL)
break; break;
ASN1_TAILQ_FOREACH_REVERSE(m, t->members, memhead, members) { HEIM_TAILQ_FOREACH_REVERSE(m, t->members, memhead, members) {
char *s = NULL; char *s = NULL;
if (m->ellipsis) if (m->ellipsis)
@@ -413,7 +413,7 @@ encode_type (const char *name, const Type *t, const char *tmpstr)
errx(1, "malloc"); errx(1, "malloc");
fprintf(codefile, "switch(%s->element) {\n", s); 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; char *s2 = NULL;
if (m->ellipsis) { if (m->ellipsis) {

View File

@@ -63,7 +63,7 @@ free_type (const char *name, const Type *t, int preserve)
case TUTCTime: case TUTCTime:
break; break;
case TBitString: case TBitString:
if (ASN1_TAILQ_EMPTY(t->members)) if (HEIM_TAILQ_EMPTY(t->members))
free_primitive("bit_string", name); free_primitive("bit_string", name);
break; break;
case TOctetString: case TOctetString:
@@ -83,7 +83,7 @@ free_type (const char *name, const Type *t, int preserve)
if(t->type == TChoice) if(t->type == TChoice)
fprintf(codefile, "switch((%s)->element) {\n", name); fprintf(codefile, "switch((%s)->element) {\n", name);
ASN1_TAILQ_FOREACH(m, t->members, members) { HEIM_TAILQ_FOREACH(m, t->members, members) {
char *s; char *s;
if (m->ellipsis){ if (m->ellipsis){

View File

@@ -52,7 +52,7 @@ generate_2int (const Type *t, const char *gen_name)
"uint64_t r = 0;\n", "uint64_t r = 0;\n",
gen_name, gen_name); 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", fprintf (codefile, "if(f.%s) r |= (1LU << %d);\n",
m->gen_name, m->val); m->gen_name, m->val);
} }
@@ -77,7 +77,7 @@ generate_int2 (const Type *t, const char *gen_name)
gen_name, gen_name, gen_name); gen_name, gen_name, gen_name);
if(t->members) { 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", fprintf (codefile, "\tflags.%s = (n >> %d) & 1;\n",
m->gen_name, m->val); m->gen_name, m->val);
} }
@@ -112,7 +112,7 @@ generate_units (const Type *t, const char *gen_name)
gen_name); gen_name);
if(t->members) { if(t->members) {
ASN1_TAILQ_FOREACH_REVERSE(m, t->members, memhead, members) { HEIM_TAILQ_FOREACH_REVERSE(m, t->members, memhead, members) {
fprintf (codefile, fprintf (codefile,
"\t{\"%s\",\t1LU << %d},\n", m->name, m->val); "\t{\"%s\",\t1LU << %d},\n", m->name, m->val);
} }
@@ -146,9 +146,9 @@ generate_glue (const Type *t, const char *gen_name)
case TBitString : { case TBitString : {
Member *m; Member *m;
if (ASN1_TAILQ_EMPTY(t->members)) if (HEIM_TAILQ_EMPTY(t->members))
break; break;
ASN1_TAILQ_FOREACH(m, t->members, members) { HEIM_TAILQ_FOREACH(m, t->members, members) {
if (m->val > 63) if (m->val > 63)
return; return;
} }

View File

@@ -102,16 +102,16 @@ length_type (const char *name, const Type *t,
length_primitive ("octet_string", name, variable); length_primitive ("octet_string", name, variable);
break; break;
case TBitString: { case TBitString: {
if (ASN1_TAILQ_EMPTY(t->members)) if (HEIM_TAILQ_EMPTY(t->members))
length_primitive("bit_string", name, variable); length_primitive("bit_string", name, variable);
else { else {
if (!rfc1510_bitstring) { if (!rfc1510_bitstring) {
Member *m; Member *m;
int pos = ASN1_TAILQ_LAST(t->members, memhead)->val; int pos = HEIM_TAILQ_LAST(t->members, memhead)->val;
fprintf(codefile, fprintf(codefile,
"do {\n"); "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) { while (m->val / 8 < pos / 8) {
pos -= 8; pos -= 8;
} }
@@ -139,7 +139,7 @@ length_type (const char *name, const Type *t,
if(t->type == TChoice) if(t->type == TChoice)
fprintf (codefile, "switch((%s)->element) {\n", name); fprintf (codefile, "switch((%s)->element) {\n", name);
ASN1_TAILQ_FOREACH(m, t->members, members) { HEIM_TAILQ_FOREACH(m, t->members, members) {
char *s; char *s;
if (m->ellipsis) { if (m->ellipsis) {

View File

@@ -246,19 +246,19 @@ struct template {
char *tt; char *tt;
char *offset; char *offset;
char *ptr; char *ptr;
ASN1_TAILQ_ENTRY(template) members; HEIM_TAILQ_ENTRY(template) members;
}; };
ASN1_TAILQ_HEAD(templatehead, template); HEIM_TAILQ_HEAD(templatehead, template);
struct tlist { struct tlist {
char *name; char *name;
char *header; char *header;
struct templatehead template; 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 void tlist_header(struct tlist *, const char *, ...) __attribute__ ((__format__ (__printf__, 2, 3)));
static struct template * static struct template *
@@ -269,7 +269,7 @@ static void add_line_pointer(struct templatehead *, const char *, const char *,
__attribute__ ((__format__ (__printf__, 4, 5))); __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 unsigned long numdups = 0;
static struct tlist * static struct tlist *
@@ -277,7 +277,7 @@ tlist_new(const char *name)
{ {
struct tlist *tl = calloc(1, sizeof(*tl)); struct tlist *tl = calloc(1, sizeof(*tl));
tl->name = strdup(name); tl->name = strdup(name);
ASN1_TAILQ_INIT(&tl->template); HEIM_TAILQ_INIT(&tl->template);
return tl; return tl;
} }
@@ -297,7 +297,7 @@ tlist_count(struct tlist *tl)
unsigned int count = 0; unsigned int count = 0;
struct template *q; struct template *q;
ASN1_TAILQ_FOREACH(q, &tl->template, members) { HEIM_TAILQ_FOREACH(q, &tl->template, members) {
count++; count++;
} }
return count; return count;
@@ -306,7 +306,7 @@ tlist_count(struct tlist *tl)
static void static void
tlist_add(struct tlist *tl) tlist_add(struct tlist *tl)
{ {
ASN1_TAILQ_INSERT_TAIL(&tlistmaster, tl, tmembers); HEIM_TAILQ_INSERT_TAIL(&tlistmaster, tl, tmembers);
} }
static void static void
@@ -318,8 +318,8 @@ tlist_print(struct tlist *tl)
fprintf(f, "const struct asn1_template asn1_%s[] = {\n", tl->name); fprintf(f, "const struct asn1_template asn1_%s[] = {\n", tl->name);
fprintf(f, "/* 0 */ %s,\n", tl->header); fprintf(f, "/* 0 */ %s,\n", tl->header);
ASN1_TAILQ_FOREACH(q, &tl->template, members) { HEIM_TAILQ_FOREACH(q, &tl->template, members) {
int last = (ASN1_TAILQ_LAST(&tl->template, templatehead) == q); int last = (HEIM_TAILQ_LAST(&tl->template, templatehead) == q);
fprintf(f, "/* %lu */ %s%s\n", (unsigned long)i++, q->line, last ? "" : ","); fprintf(f, "/* %lu */ %s%s\n", (unsigned long)i++, q->line, last ? "" : ",");
} }
fprintf(f, "};\n"); fprintf(f, "};\n");
@@ -329,7 +329,7 @@ static struct tlist *
tlist_find_by_name(const char *name) tlist_find_by_name(const char *name)
{ {
struct tlist *ql; struct tlist *ql;
ASN1_TAILQ_FOREACH(ql, &tlistmaster, tmembers) { HEIM_TAILQ_FOREACH(ql, &tlistmaster, tmembers) {
if (strcmp(ql->name, name) == 0) if (strcmp(ql->name, name) == 0)
return ql; return ql;
} }
@@ -357,8 +357,8 @@ tlist_cmp(const struct tlist *tl, const struct tlist *ql)
ret = strcmp(tl->header, ql->header); ret = strcmp(tl->header, ql->header);
if (ret) return ret; if (ret) return ret;
q = ASN1_TAILQ_FIRST(&ql->template); q = HEIM_TAILQ_FIRST(&ql->template);
ASN1_TAILQ_FOREACH(t, &tl->template, members) { HEIM_TAILQ_FOREACH(t, &tl->template, members) {
if (q == NULL) return 1; if (q == NULL) return 1;
if (t->ptr == NULL || q->ptr == NULL) { 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) (ret = tlist_cmp_name(t->ptr, q->ptr)) != 0)
return ret; return ret;
} }
q = ASN1_TAILQ_NEXT(q, members); q = HEIM_TAILQ_NEXT(q, members);
} }
if (q != NULL) return -1; if (q != NULL) return -1;
return 0; return 0;
@@ -387,7 +387,7 @@ tlist_find_dup(const struct tlist *tl)
{ {
struct tlist *ql; struct tlist *ql;
ASN1_TAILQ_FOREACH(ql, &tlistmaster, tmembers) { HEIM_TAILQ_FOREACH(ql, &tlistmaster, tmembers) {
if (tlist_cmp(ql, tl) == 0) { if (tlist_cmp(ql, tl) == 0) {
numdups++; numdups++;
return ql->name; 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) if (vasprintf(&q->line, fmt, ap) < 0 || q->line == NULL)
errx(1, "malloc"); errx(1, "malloc");
va_end(ap); va_end(ap);
ASN1_TAILQ_INSERT_TAIL(t, q, members); HEIM_TAILQ_INSERT_TAIL(t, q, members);
return q; return q;
} }
@@ -573,9 +573,9 @@ template_members(struct templatehead *temp, const char *basetype, const char *na
FILE *f = get_code_file(); FILE *f = get_code_file();
static unsigned long bmember_counter = 0; 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); add_line(temp, "{ A1_PARSE_T(A1T_HEIM_BIT_STRING), %s, NULL }", poffset);
break; break;
} }
@@ -584,11 +584,11 @@ template_members(struct templatehead *temp, const char *basetype, const char *na
errx(1, "malloc"); errx(1, "malloc");
output_name(bname); 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); 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++; count++;
} }
@@ -597,8 +597,8 @@ template_members(struct templatehead *temp, const char *basetype, const char *na
rfc1510_bitstring ? "|A1_HBF_RFC1510" : "", rfc1510_bitstring ? "|A1_HBF_RFC1510" : "",
basetype, (unsigned long)count); basetype, (unsigned long)count);
i = 1; i = 1;
ASN1_TAILQ_FOREACH(q, &template, members) { HEIM_TAILQ_FOREACH(q, &template, members) {
int last = (ASN1_TAILQ_LAST(&template, templatehead) == q); int last = (HEIM_TAILQ_LAST(&template, templatehead) == q);
fprintf(f, "/* %lu */ %s%s\n", (unsigned long)i++, q->line, last ? "" : ","); fprintf(f, "/* %lu */ %s%s\n", (unsigned long)i++, q->line, last ? "" : ",");
} }
fprintf(f, "};\n"); 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); 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; char *newbasename = NULL;
if (m->ellipsis) if (m->ellipsis)
@@ -752,13 +752,13 @@ template_members(struct templatehead *temp, const char *basetype, const char *na
char *e; char *e;
static unsigned long choice_counter = 0; static unsigned long choice_counter = 0;
ASN1_TAILQ_INIT(&template); HEIM_TAILQ_INIT(&template);
if (asprintf(&tname, "asn1_choice_%s_%s%lu", if (asprintf(&tname, "asn1_choice_%s_%s%lu",
basetype, name ? name : "", choice_counter++) < 0 || tname == NULL) basetype, name ? name : "", choice_counter++) < 0 || tname == NULL)
errx(1, "malloc"); errx(1, "malloc");
ASN1_TAILQ_FOREACH(m, t->members, members) { HEIM_TAILQ_FOREACH(m, t->members, members) {
const char *dupname; const char *dupname;
char *elname = NULL; char *elname = NULL;
char *newbasename = NULL; char *newbasename = NULL;
@@ -803,7 +803,7 @@ template_members(struct templatehead *temp, const char *basetype, const char *na
errx(1, "malloc"); errx(1, "malloc");
} }
ASN1_TAILQ_FOREACH(q, &template, members) { HEIM_TAILQ_FOREACH(q, &template, members) {
count++; 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", fprintf(f, "/* 0 */ { %s, offsetof(%s%s, element), ((void *)%lu) },\n",
e ? e : "0", isstruct ? "struct " : "", basetype, (unsigned long)count); e ? e : "0", isstruct ? "struct " : "", basetype, (unsigned long)count);
i = 1; i = 1;
ASN1_TAILQ_FOREACH(q, &template, members) { HEIM_TAILQ_FOREACH(q, &template, members) {
int last = (ASN1_TAILQ_LAST(&template, templatehead) == q); int last = (HEIM_TAILQ_LAST(&template, templatehead) == q);
fprintf(f, "/* %lu */ %s%s\n", (unsigned long)i++, q->line, last ? "" : ","); fprintf(f, "/* %lu */ %s%s\n", (unsigned long)i++, q->line, last ? "" : ",");
} }
fprintf(f, "};\n"); 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 its a sequence or set type, check if there is a ellipsis */
if (type->type == TSequence || type->type == TSet) { if (type->type == TSequence || type->type == TSet) {
Member *m; Member *m;
ASN1_TAILQ_FOREACH(m, type->members, members) { HEIM_TAILQ_FOREACH(m, type->members, members) {
if (m->ellipsis) if (m->ellipsis)
have_ellipsis = 1; have_ellipsis = 1;
} }
@@ -901,7 +901,7 @@ generate_template_type(const char *varname,
if (n < 0 || szt == NULL) if (n < 0 || szt == NULL)
errx(1, "malloc"); 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 : ""); errx(1, "Tag %s...%s with no content ?", basetype, name ? name : "");
fprintf(get_code_file(), "/* generate_template_type: %s */\n", tl->name); fprintf(get_code_file(), "/* generate_template_type: %s */\n", tl->name);

View File

@@ -36,7 +36,7 @@
#ifndef _SYMBOL_H #ifndef _SYMBOL_H
#define _SYMBOL_H #define _SYMBOL_H
#include "asn1_queue.h" #include <heimqueue.h>
enum typetype { enum typetype {
TBitString, TBitString,
@@ -92,13 +92,13 @@ struct member {
int optional; int optional;
int ellipsis; int ellipsis;
struct type *type; struct type *type;
ASN1_TAILQ_ENTRY(member) members; HEIM_TAILQ_ENTRY(member) members;
struct value *defval; struct value *defval;
}; };
typedef struct member Member; typedef struct member Member;
ASN1_TAILQ_HEAD(memhead, member); HEIM_TAILQ_HEAD(memhead, member);
struct symbol; struct symbol;

View File

@@ -40,7 +40,6 @@ dist_libheimbase_la_SOURCES = \
error.c \ error.c \
heimbase.c \ heimbase.c \
heimbasepriv.h \ heimbasepriv.h \
heimqueue.h \
json.c \ json.c \
null.c \ null.c \
number.c \ number.c \