diff --git a/lib/asn1/Makefile.am b/lib/asn1/Makefile.am index 644cd438d..fad15776f 100644 --- a/lib/asn1/Makefile.am +++ b/lib/asn1/Makefile.am @@ -51,7 +51,7 @@ gen_files_pkcs10 = asn1_pkcs10_asn1.x gen_files_pkcs12 = asn1_pkcs12_asn1.x gen_files_pkcs8 = asn1_pkcs8_asn1.x gen_files_pkcs9 = asn1_pkcs9_asn1.x -gen_files_test_template = test_template_asn1-template.x +gen_files_test_template = asn1_test_template_asn1.x gen_files_test = asn1_test_asn1.x gen_files_digest = asn1_digest_asn1.x gen_files_kx509 = asn1_kx509_asn1.x @@ -322,7 +322,7 @@ x690sample_asn1_files: asn1_compile$(EXEEXT) $(srcdir)/x690sample.asn1 $(ASN1_COMPILE) --one-code-file $(srcdir)/x690sample.asn1 x690sample_asn1 || (rm -f x690sample_asn1_files ; exit 1) test_template_asn1_files: asn1_compile$(EXEEXT) $(srcdir)/test.asn1 - $(ASN1_COMPILE) --template --sequence=TESTSeqOf $(srcdir)/test.asn1 test_template_asn1 || (rm -f test_template_asn1_files ; exit 1) + $(ASN1_COMPILE) --one-code-file --template --sequence=TESTSeqOf $(srcdir)/test.asn1 test_template_asn1 || (rm -f test_template_asn1_files ; exit 1) test_asn1_files: asn1_compile$(EXEEXT) $(srcdir)/test.asn1 $(ASN1_COMPILE) --one-code-file --sequence=TESTSeqOf $(srcdir)/test.asn1 test_asn1 || (rm -f test_asn1_files ; exit 1) diff --git a/lib/asn1/NTMakefile b/lib/asn1/NTMakefile index a35e34da8..bdf383c4d 100644 --- a/lib/asn1/NTMakefile +++ b/lib/asn1/NTMakefile @@ -63,7 +63,7 @@ gen_files_pkcs10 = $(OBJ)\asn1_pkcs10_asn1.x gen_files_test = $(OBJ)\asn1_test_asn1.x -gen_files_test_template = $(OBJ)\test_template_asn1-template.x +gen_files_test_template = $(OBJ)\asn1_test_template_asn1.x gen_files_digest = $(OBJ)\asn1_digest_asn1.x @@ -339,7 +339,8 @@ $(gen_files_test) $(OBJ)\test_asn1.hx: $(BINDIR)\asn1_compile.exe test.asn1 $(gen_files_test_template) $(OBJ)\test_template_asn1.hx: $(BINDIR)\asn1_compile.exe test.asn1 cd $(OBJ) $(BINDIR)\asn1_compile.exe \ - --template --sequence=TESTSeqOf \ + --one-code-file --template \ + --sequence=TESTSeqOf \ $(SRCDIR)\test.asn1 test_template_asn1 \ || ($(RM) $(OBJ)\test_template_asn1.h ; exit /b 1) cd $(SRCDIR) diff --git a/lib/asn1/gen_glue.c b/lib/asn1/gen_glue.c index c17ac206e..bed2cdfe1 100644 --- a/lib/asn1/gen_glue.c +++ b/lib/asn1/gen_glue.c @@ -37,6 +37,14 @@ RCSID("$Id$"); +static FILE * +get_code_file(void) +{ + if (!one_code_file && template_flag && templatefile) + return templatefile; + return codefile; +} + static void generate_2int (const Type *t, const char *gen_name) { @@ -46,17 +54,17 @@ generate_2int (const Type *t, const char *gen_name) "uint64_t %s2int(%s);\n", gen_name, gen_name); - fprintf (codefile, + fprintf (get_code_file(), "uint64_t %s2int(%s f)\n" "{\n" "uint64_t r = 0;\n", gen_name, gen_name); HEIM_TAILQ_FOREACH(m, t->members, members) { - fprintf (codefile, "if(f.%s) r |= (1ULL << %d);\n", + fprintf (get_code_file(), "if(f.%s) r |= (1ULL << %d);\n", m->gen_name, m->val); } - fprintf (codefile, "return r;\n" + fprintf (get_code_file(), "return r;\n" "}\n\n"); } @@ -69,7 +77,7 @@ generate_int2 (const Type *t, const char *gen_name) "%s int2%s(uint64_t);\n", gen_name, gen_name); - fprintf (codefile, + fprintf (get_code_file(), "%s int2%s(uint64_t n)\n" "{\n" "\t%s flags;\n\n" @@ -78,11 +86,11 @@ generate_int2 (const Type *t, const char *gen_name) if(t->members) { HEIM_TAILQ_FOREACH(m, t->members, members) { - fprintf (codefile, "\tflags.%s = (n >> %d) & 1;\n", + fprintf (get_code_file(), "\tflags.%s = (n >> %d) & 1;\n", m->gen_name, m->val); } } - fprintf (codefile, "\treturn flags;\n" + fprintf (get_code_file(), "\treturn flags;\n" "}\n\n"); } @@ -107,27 +115,27 @@ generate_units (const Type *t, const char *gen_name) gen_name); } - fprintf (codefile, + fprintf (get_code_file(), "static struct units %s_units[] = {\n", gen_name); if(t->members) { HEIM_TAILQ_FOREACH_REVERSE(m, t->members, memhead, members) { - fprintf (codefile, + fprintf (get_code_file(), "\t{\"%s\",\t1ULL << %d},\n", m->name, m->val); } } - fprintf (codefile, + fprintf (get_code_file(), "\t{NULL,\t0}\n" "};\n\n"); if (template_flag) - fprintf (codefile, + fprintf (get_code_file(), "const struct units * asn1_%s_table_units = %s_units;\n", gen_name, gen_name); else - fprintf (codefile, + fprintf (get_code_file(), "const struct units * asn1_%s_units(void){\n" "return %s_units;\n" "}\n\n",