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
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

View File

@@ -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

View File

@@ -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 \

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
{
$$ = 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)

View File

@@ -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");

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);
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;

View File

@@ -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;

View File

@@ -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) {

View File

@@ -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){

View File

@@ -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;
}

View File

@@ -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) {

View File

@@ -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);

View File

@@ -36,7 +36,7 @@
#ifndef _SYMBOL_H
#define _SYMBOL_H
#include "asn1_queue.h"
#include <heimqueue.h>
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;

View File

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