X-Git-Url: http://git.indexdata.com/?a=blobdiff_plain;f=util%2Fyaz-asncomp;h=e2a832dd20f12d264de082ca759be5abd771917c;hb=dd472005b2c12e54a0436d22e56970f48bc32704;hp=3e6bf21f1add5ac0f1bde824b2a44911c9059d90;hpb=92887fb8af4d8697f6569d6a6756860fea5f4b84;p=yaz-moved-to-github.git diff --git a/util/yaz-asncomp b/util/yaz-asncomp index 3e6bf21..e2a832d 100755 --- a/util/yaz-asncomp +++ b/util/yaz-asncomp @@ -3,10 +3,10 @@ exec tclsh "$0" "$@" # # yaz-comp: ASN.1 Compiler for YAZ -# (c) Index Data 1996-2003 +# (c) Index Data 1996-2004 # See the file LICENSE for details. # -# $Id: yaz-asncomp,v 1.1 2003-05-27 21:12:23 adam Exp $ +# $Id: yaz-asncomp,v 1.3 2004-02-11 21:39:45 adam Exp $ # set yc_version 0.3 @@ -523,7 +523,8 @@ proc asnSequence {name tag implicit tagtype} { lappend l "\tif (!odr_sequence_begin (o, p, sizeof(**p), 0))" lappend l "\t\{" - lappend l "\t\t*p = 0;" + lappend l "\t\tif(o->direction == ODR_DECODE)" + lappend l "\t\t\t*p = 0;" lappend l "\t\treturn 0;" lappend l "\t\}" } @@ -735,7 +736,8 @@ proc asnOf {name tag implicit tagtype isset} { } lappend j "\}" lappend l "\t\treturn 1;" - lappend l "\t*p = 0;" + lappend l "\tif(o->direction == ODR_DECODE)" + lappend l "\t\t*p = 0;" lappend l "\treturn odr_missing(o, opt, name);" return [list [join $l \n] [join $j \n]] } @@ -840,8 +842,6 @@ proc asnChoice {name tag implicit tagtype} { lappend l "\todr_implicit_settag(o, $tagtype, $tag);" lappend l "\tif (odr_choice(o, arm, &(*p)->[lindex $uName 1], &(*p)->[lindex $uName 0], name))" } else { - lappend l "\tif (!*p && o->direction != ODR_DECODE)" - lappend l "\t\treturn opt;" lappend l "\tif (!odr_constructed_begin(o, p, $tagtype, $tag, 0))" lappend l "\t\treturn odr_missing(o, opt, name);" lappend l "\tif (!odr_initmember(o, p, sizeof(**p)))" @@ -850,7 +850,10 @@ proc asnChoice {name tag implicit tagtype} { lappend l "\t\todr_constructed_end(o))" } lappend l "\t\treturn 1;" - lappend l "\t*p = 0;" + + lappend l "\tif(o->direction == ODR_DECODE)" + lappend l "\t\t*p = 0;" + lappend l "\treturn odr_missing(o, opt, name);" return [list [join $l \n] [join $j \n]] }