aboutsummaryrefslogtreecommitdiffstats
path: root/libasn1print
diff options
context:
space:
mode:
authorLev Walkin <vlm@lionet.info>2006-09-17 04:52:50 +0000
committerLev Walkin <vlm@lionet.info>2006-09-17 04:52:50 +0000
commita9532f4d2bad200422ffacae45342c73f7cb40cb (patch)
tree07a38fc49e3ffb8293361d4e3347c89e9b94766b /libasn1print
parentcc7c94efce47bc02ce5bd60a93f25d32b1b23b50 (diff)
moved -DASN_PDU_COLLECTION into compiler
Diffstat (limited to 'libasn1print')
-rw-r--r--libasn1print/asn1print.c18
1 files changed, 17 insertions, 1 deletions
diff --git a/libasn1print/asn1print.c b/libasn1print/asn1print.c
index 47cfb1f8..3462d1af 100644
--- a/libasn1print/asn1print.c
+++ b/libasn1print/asn1print.c
@@ -190,6 +190,11 @@ asn1print_value(asn1p_value_t *val, enum asn1print_flags flags) {
case ATV_REAL:
printf("%f", val->value.v_double);
return 0;
+ case ATV_TYPE:
+ asn1print_expr(val->value.v_type->module->asn1p,
+ val->value.v_type->module,
+ val->value.v_type, flags, 0);
+ return 0;
case ATV_INTEGER:
printf("%" PRIdASN, val->value.v_integer);
return 0;
@@ -349,10 +354,19 @@ asn1print_constraint(asn1p_constraint_t *ct, enum asn1print_flags flags) {
}
break;
case ACT_CT_CTDBY:
- printf("CONSTRAINED BY ");
+ printf("(CONSTRAINED BY ");
assert(ct->value->type == ATV_UNPARSED);
fwrite(ct->value->value.string.buf,
1, ct->value->value.string.size, stdout);
+ printf(")");
+ break;
+ case ACT_CT_CTNG:
+ printf("(CONTAINING ");
+ asn1print_expr(ct->value->value.v_type->module->asn1p,
+ ct->value->value.v_type->module,
+ ct->value->value.v_type,
+ flags, 1);
+ printf(")");
break;
case ACT_CA_SET: symno++;
case ACT_CA_CRC: symno++;
@@ -364,6 +378,7 @@ asn1print_constraint(asn1p_constraint_t *ct, enum asn1print_flags flags) {
char *symtable[] = { " EXCEPT ", " ^ ", " | ", ",",
"", "(" };
unsigned int i;
+ if(ct->type == ACT_CA_CRC) fputs("(", stdout);
for(i = 0; i < ct->el_count; i++) {
if(i) fputs(symtable[symno], stdout);
if(ct->type == ACT_CA_CRC) fputs("{", stdout);
@@ -373,6 +388,7 @@ asn1print_constraint(asn1p_constraint_t *ct, enum asn1print_flags flags) {
&& ct->type == ACT_CA_SET)
fputs(")", stdout);
}
+ if(ct->type == ACT_CA_CRC) fputs(")", stdout);
}
break;
case ACT_CA_AEX: