oops; fixed
diff --git a/ChangeLog b/ChangeLog
index dfd71fe..611a932 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -11,6 +11,7 @@
* Made unber(1) program more verbose: effective structure length is
now displayed as L="<n>" at the closing tag. (Test check-xxber.sh).
* Fixed unber(1)'s -1 switch for indefinite encoding length.
+ * New command line option for unber(1): -m to enable minimalistic mode.
0.9.17: 2005-Aug-07
diff --git a/asn1c/check-xxber.sh b/asn1c/check-xxber.sh
index cb8cdee..ea989ec 100755
--- a/asn1c/check-xxber.sh
+++ b/asn1c/check-xxber.sh
@@ -10,9 +10,15 @@
cat<<EOM > $ORIG
<I O="0" T="[UNIVERSAL 16]" TL="2" V="Indefinite" A="SEQUENCE">
<P O="2" T="[UNIVERSAL 19]" TL="2" V="2" A="PrintableString">US</P>
-<C O="6" T="[UNIVERSAL 16]" TL="2" V="6" A="SEQUENCE">
+<C O="6" T="[UNIVERSAL 16]" TL="2" V="22" A="SEQUENCE">
<P O="8" T="[UNIVERSAL 2]" TL="2" V="4" A="INTEGER">1¦ G</P>
-</C O="14" T="[UNIVERSAL 16]" A="SEQUENCE" L="8">
+<C O="14" T="[UNIVERSAL 16]" TL="2" V="6" A="SEQUENCE">
+<P O="16" T="[UNIVERSAL 2]" TL="2" V="4" A="INTEGER">1¦ G</P>
+</C O="22" T="[UNIVERSAL 16]" A="SEQUENCE" L="8">
+<C O="22" T="[UNIVERSAL 16]" TL="2" V="6" A="SEQUENCE">
+<P O="24" T="[UNIVERSAL 2]" TL="2" V="4" A="INTEGER">1¦ G</P>
+</C O="30" T="[UNIVERSAL 16]" A="SEQUENCE" L="8">
+</C O="30" T="[UNIVERSAL 16]" A="SEQUENCE" L="24">
EOM
./enber $ORIG | ./unber -p -i 0 - > $TEST 2>&1
@@ -25,7 +31,7 @@
fi
# Append necessary terminator
-echo '</I O="14" T="[UNIVERSAL 0]" TL="2" L="16">' >> $ORIG
+echo '</I O="30" T="[UNIVERSAL 0]" TL="2" L="32">' >> $ORIG
# Try trancoding again
./enber $ORIG | ./unber -p -i 0 - > $TEST 2>&1
diff --git a/asn1c/unber.c b/asn1c/unber.c
index 8758ca5..8009181 100644
--- a/asn1c/unber.c
+++ b/asn1c/unber.c
@@ -202,11 +202,11 @@
pd_code_e pdc = PD_FINISHED;
ber_tlv_tag_t tlv_tag;
ber_tlv_len_t tlv_len;
- ber_tlv_len_t local_esize = effective_size;
ssize_t t_len;
ssize_t l_len;
do {
+ ber_tlv_len_t local_esize = 0;
int constr;
int ch;
@@ -295,6 +295,8 @@
*offset += t_len + l_len;
*frame_size += t_len + l_len;
effective_size += t_len + l_len;
+ printf("LES %d + %d + %d\n",
+ (int)local_esize, (int)t_len, (int)l_len);
local_esize += t_len + l_len;
if(expect_eoc && tagbuf[0] == '\0' && tagbuf[1] == '\0') {
@@ -346,7 +348,6 @@
print_TL(1, *offset, level, constr, tblen,
tlv_tag, tlv_len, local_esize);
- local_esize = 0;
tblen = 0;
} while(1);