[BACK]Return to gen.c CVS log [TXT][DIR] Up to [local] / src / usr.bin / asn1_compile

Diff for /src/usr.bin/asn1_compile/Attic/gen.c between version 1.3 and 1.4

version 1.3, 2005/05/11 19:45:50 version 1.4, 2005/10/16 18:56:35
Line 34 
Line 34 
 #include "gen_locl.h"  #include "gen_locl.h"
   
 /*  /*
 RCSID("$KTH: gen.c,v 1.50 2003/04/17 07:09:18 lha Exp $");  RCSID("$KTH: gen.c,v 1.58 2005/03/31 00:08:58 lha Exp $");
 */  */
   
 FILE *headerfile, *codefile, *logfile;  FILE *headerfile, *codefile, *logfile;
Line 43 
Line 43 
   
 static const char *orig_filename;  static const char *orig_filename;
 static char *header;  static char *header;
 static char *headerbase = STEM;  static char *headerbase;
   
 /*  /*
  * list of all IMPORTs   * list of all IMPORTs
Line 78 
Line 78 
 init_generate (const char *filename, const char *base)  init_generate (const char *filename, const char *base)
 {  {
     orig_filename = filename;      orig_filename = filename;
     if(base)      if(base){
         if((headerbase = strdup(base)) == NULL)          if((headerbase = strdup(base)) == NULL)
              err(1, NULL);              err(1, NULL);
       }else{
           if((headerbase = strdup(STEM)) == NULL)
               err(1, NULL);
       }
     asprintf(&header, "%s.h", headerbase);      asprintf(&header, "%s.h", headerbase);
     if(header == NULL)      if(header == NULL)
         err(1, NULL);          err(1, NULL);
   
     headerfile = fopen (header, "w");      headerfile = fopen (header, "w");
     if (headerfile == NULL)      if (headerfile == NULL)
         err (1, "open %s", header);          err (1, "open %s", header);
Line 106 
Line 108 
              "#ifndef __asn1_common_definitions__\n"               "#ifndef __asn1_common_definitions__\n"
              "#define __asn1_common_definitions__\n\n");               "#define __asn1_common_definitions__\n\n");
     fprintf (headerfile,      fprintf (headerfile,
              "typedef struct octet_string {\n"               "typedef struct heim_octet_string {\n"
              "  size_t length;\n"               "  size_t length;\n"
              "  void *data;\n"               "  void *data;\n"
              "} octet_string;\n\n");               "} heim_octet_string;\n\n");
     fprintf (headerfile,      fprintf (headerfile,
              "typedef char *general_string;\n\n"               "typedef char *heim_general_string;\n\n"
              );               );
     fprintf (headerfile,      fprintf (headerfile,
              "typedef struct oid {\n"               "typedef char *heim_utf8_string;\n\n"
                );
       fprintf (headerfile,
                "typedef struct heim_oid {\n"
              "  size_t length;\n"               "  size_t length;\n"
              "  unsigned *components;\n"               "  unsigned *components;\n"
              "} oid;\n\n");               "} heim_oid;\n\n");
     fputs("#define ASN1_MALLOC_ENCODE(T, B, BL, S, L, R)                  \\\n"      fputs("#define ASN1_MALLOC_ENCODE(T, B, BL, S, L, R)                  \\\n"
           "  do {                                                         \\\n"            "  do {                                                         \\\n"
           "    (BL) = length_##T((S));                                    \\\n"            "    (BL) = length_##T((S));                                    \\\n"
Line 276 
Line 281 
         fprintf (headerfile, "[APPLICATION %d] ", t->application);          fprintf (headerfile, "[APPLICATION %d] ", t->application);
         define_asn1 (level, t->subtype);          define_asn1 (level, t->subtype);
         break;          break;
       case TBoolean:
           space(level);
           fprintf (headerfile, "BOOLEAN");
           break;
       case TUTF8String:
           space(level);
           fprintf (headerfile, "UTF8String");
           break;
       case TNull:
           space(level);
           fprintf (headerfile, "NULL");
           break;
     default:      default:
         abort ();          abort ();
     }      }
 }  }
   
 static void  static void
 define_type (int level, char *name, Type *t, int typedefp)  define_type (int level, const char *name, Type *t, int typedefp)
 {  {
     switch (t->type) {      switch (t->type) {
     case TType:      case TType:
Line 313 
Line 330 
         break;          break;
     case TOctetString:      case TOctetString:
         space(level);          space(level);
         fprintf (headerfile, "octet_string %s;\n", name);          fprintf (headerfile, "heim_octet_string %s;\n", name);
         break;          break;
     case TOID :      case TOID :
         space(level);          space(level);
         fprintf (headerfile, "oid %s;\n", name);          fprintf (headerfile, "heim_oid %s;\n", name);
         break;          break;
     case TBitString: {      case TBitString: {
         Member *m;          Member *m;
Line 399 
Line 416 
         break;          break;
     case TGeneralString:      case TGeneralString:
         space(level);          space(level);
         fprintf (headerfile, "general_string %s;\n", name);          fprintf (headerfile, "heim_general_string %s;\n", name);
         break;          break;
       case TUTF8String:
           space(level);
           fprintf (headerfile, "heim_utf8_string %s;\n", name);
           break;
       case TBoolean:
           space(level);
           fprintf (headerfile, "int %s;\n", name);
           break;
       case TNull:
           space(level);
           fprintf (headerfile, "NULL %s;\n", name);
           break;
     case TApplication:      case TApplication:
         define_type (level, name, t->subtype, FALSE);          define_type (level, name, t->subtype, FALSE);
         break;          break;
Line 458 
Line 487 
              "#include <asn1_err.h>\n"               "#include <asn1_err.h>\n"
              "#include <der.h>\n"               "#include <der.h>\n"
              "#include <parse_units.h>\n\n");               "#include <parse_units.h>\n\n");
     generate_type_header (s);  
     generate_type_encode (s);      if (s->stype == Stype && s->type->type == TChoice) {
     generate_type_decode (s);          fprintf(codefile,
     generate_type_free (s);                  "/* CHOICE */\n"
     generate_type_length (s);                  "int asn1_%s_dummy_holder = 1;\n", s->gen_name);
     generate_type_copy (s);      } else {
     generate_glue (s);          generate_type_header (s);
           generate_type_encode (s);
           generate_type_decode (s);
           generate_type_free (s);
           generate_type_length (s);
           generate_type_copy (s);
           generate_glue (s);
       }
     fprintf(headerfile, "\n\n");      fprintf(headerfile, "\n\n");
     fclose(codefile);      fclose(codefile);
 }  }

Legend:
Removed from v.1.3  
changed lines
  Added in v.1.4