libtasn1-commit
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[SCM] GNU libtasn1 branch, master, updated. libtasn1_3_3-5-gef90ba7


From: Nikos Mavrogiannopoulos
Subject: [SCM] GNU libtasn1 branch, master, updated. libtasn1_3_3-5-gef90ba7
Date: Wed, 13 Nov 2013 12:46:03 +0000

This is an automated email from the git hooks/post-receive script. It was
generated because a ref change was pushed to the repository containing
the project "GNU libtasn1".

http://git.savannah.gnu.org/cgit/libtasn1.git/commit/?id=ef90ba764f1032f097ae77443651656b3d712ebf

The branch, master has been updated
       via  ef90ba764f1032f097ae77443651656b3d712ebf (commit)
       via  6a624468643e98d3b5fed716b6422f2ef4e0fcfd (commit)
       via  785aef74cc5df7e71be1b83a1b933535eafb958e (commit)
       via  accc70b899718d9c71875ddcd9c68d2016e217e8 (commit)
      from  103fb814ff35622b2fd94573646711b34a776bb8 (commit)

Those revisions listed above that are new to this repository have
not appeared on any other notification email; so we list those
revisions in full, below.

- Log -----------------------------------------------------------------
commit ef90ba764f1032f097ae77443651656b3d712ebf
Author: Nikos Mavrogiannopoulos <address@hidden>
Date:   Wed Nov 13 13:45:41 2013 +0100

    updated documentation generation rules.

commit 6a624468643e98d3b5fed716b6422f2ef4e0fcfd
Author: Nikos Mavrogiannopoulos <address@hidden>
Date:   Wed Nov 13 13:34:51 2013 +0100

    updated gdoc from gnutls

commit 785aef74cc5df7e71be1b83a1b933535eafb958e
Author: Nikos Mavrogiannopoulos <address@hidden>
Date:   Wed Nov 13 13:34:29 2013 +0100

    updated ASN1.c

commit accc70b899718d9c71875ddcd9c68d2016e217e8
Author: Nikos Mavrogiannopoulos <address@hidden>
Date:   Wed Nov 13 13:34:22 2013 +0100

    doc fixes

-----------------------------------------------------------------------

Summary of changes:
 Makefile.am     |    3 +
 doc/Makefile.am |   22 +-
 doc/gdoc        |  365 +++++++++++++++++++++++----------
 lib/ASN1.c      |  619 +++++++++++++++++++++----------------------------------
 lib/ASN1.y      |    2 +-
 lib/coding.c    |    2 +-
 6 files changed, 517 insertions(+), 496 deletions(-)

diff --git a/Makefile.am b/Makefile.am
index e4cab15..f7d7493 100644
--- a/Makefile.am
+++ b/Makefile.am
@@ -34,3 +34,6 @@ EXTRA_DIST += cfg.mk maint.mk .clcopying
 
 gnulib-update:
        gnulib-tool --add-import --dir=. --lib=libgnu --source-base=lib/gllib 
--m4-base=lib/glm4 --doc-base=doc --tests-base=tests --aux-dir=build-aux 
--lgpl=2 --no-conditional-dependencies --libtool --macro-prefix=lgl 
--no-vc-files
+
+dist-hook: 
+       make -C doc/ compare-makefile
diff --git a/doc/Makefile.am b/doc/Makefile.am
index 1af20bc..a810793 100644
--- a/doc/Makefile.am
+++ b/doc/Makefile.am
@@ -132,18 +132,13 @@ gdoc_TEXINFOS += texi/asn1_parser2tree.texi
 gdoc_TEXINFOS += texi/asn1_parser2array.texi
 gdoc_TEXINFOS += texi/asn1_check_version.texi
 
-$(gdoc_MANS) $(gdoc_TEXINFOS):
-       make update-makefile
-       make Makefile
-       make doit
-
 GDOC_SRC = $(top_srcdir)/lib/decoding.c $(top_srcdir)/lib/errors.c     \
        $(top_srcdir)/lib/parser_aux.c $(top_srcdir)/lib/coding.c       \
        $(top_srcdir)/lib/element.c $(top_srcdir)/lib/gstr.c            \
        $(top_srcdir)/lib/structure.c $(top_srcdir)/lib/ASN1.c          \
        $(top_srcdir)/lib/version.c
 
-update-makefile:
+compare-makefile:
        @MANS=""; \
        TEXINFOS=""; \
        for i in $(GDOC_SRC); do \
@@ -158,10 +153,16 @@ update-makefile:
        grep -v -e '^gdoc_MANS += ' -e '^gdoc_TEXINFOS += ' Makefile.am | \
                perl -p -e "s,^gdoc_MANS =,gdoc_MANS =$$MANS,;" | \
                perl -p -e "s,^gdoc_TEXINFOS =,gdoc_TEXINFOS =$$TEXINFOS,;" \
-               > foo; \
-       mv foo Makefile.am
+               > tmp-$@;
+       diff -u $(srcdir)/Makefile.am tmp-$@
+       rm -f tmp-$@
+
+$(gdoc_MANS) $(gdoc_TEXINFOS): stamp_docs
+
+clean-local:
+       -rm -f stamp_docs
 
-doit:
+stamp_docs:
        $(mkdir_p) man texi; \
        for i in `$(srcdir)/gdoc -listfunc $(GDOC_SRC)`; do \
                echo -n "Creating documentation for $$i... " && \
@@ -184,5 +185,6 @@ doit:
                $(srcdir)/gdoc -texinfo $$i > texi/$$BASE.texi && \
                echo "ok"; \
        done
+       touch $@
 
-.PHONY: update-makefile doit
+.PHONY: compare-makefile
diff --git a/doc/gdoc b/doc/gdoc
index 975a85d..e3db762 100755
--- a/doc/gdoc
+++ b/doc/gdoc
@@ -1,15 +1,16 @@
-eval '(exit $?0)' && eval 'exec perl -S "$0" ${1+"$@"}'
-  & eval 'exec perl -S "$0" $argv:q'
+eval '(exit $?0)' && eval 'exec perl "$0" ${1+"$@"}'
+  & eval 'exec perl "$0" $argv:q'
     if 0;
-# Generate documentation from source code.
 
-## Copyright (c) 2002-2011 Simon Josefsson
+## Copyright (c) 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009 Simon Josefsson
 ##                    added -texinfo, -listfunc, -pkg-name
 ##                    man page revamp
 ##                    various improvements
 ## Copyright (c) 2001, 2002 Nikos Mavrogiannopoulos
 ##                    added -tex
 ## Copyright (c) 1998 Michael Zucchi
+## Copyright (c) 2013 Adam Sampson
+##                    made highlighting not depend on hash order, for Perl 5.18
 
 # This program is free software: you can redistribute it and/or modify
 # it under the terms of the GNU General Public License as published by
@@ -135,57 +136,59 @@ eval '(exit $?0)' && eval 'exec perl -S "$0" ${1+"$@"}'
 use POSIX qw(strftime);
 
 # match expressions used to find embedded type information
-$type_constant = "\\\%(\\w+)";
-$type_func = "(\\w+\\(\\))";
-$type_param = "\\\@(\\w+)";
-$type_struct = "\\\#(\\w+)";
-$type_env = "(\\\$\\w+)";
+$type_constant = "\\\%([A-Za-z0-9_]+)";
+$type_func = "([A-Za-z0-9_]+\\(\\))";
+$type_param = '\@([A-Za-z0-9_]+)\s*';
+$type_struct = "\\\#([A-Za-z0-9_]+)";
+$type_env = "(\\\$[A-Za-z0-9_]+)";
 
 
 # Output conversion substitutions.
 #  One for each output format
 
 # these work fairly well
-%highlights_html = ( $type_constant, "<i>\$1</i>",
-                    $type_func, "<b>\$1</b>",
-                    $type_struct, "<i>\$1</i>",
-                    $type_param, "<tt><b>\$1</b></tt>" );
address@hidden = ( [$type_constant, '"<i>$1</i>"'],
+                    [$type_func, '"<b>$1</b>"'],
+                    [$type_struct, '"<i>$1</i>"'],
+                    [$type_param, '" <tt><b>$1</b></tt> "'] );
 $blankline_html = "<p>";
 
-%highlights_texinfo = ( $type_constant, "address@hidden",
-                       $type_func, "address@hidden",
-                       $type_struct, "address@hidden",
-                       $type_param, "address@hidden" );
address@hidden = ( [$type_param, '" address@hidden "'],
+                       [$type_constant, '"address@hidden "'],
+                       [$type_func, '"address@hidden "'],
+                       [$type_struct, '"address@hidden "'],
+                        );
 $blankline_texinfo = "";
 
-%highlights_tex = ( $type_constant, "{\\\\it \$1}",
-                    $type_func, "{\\\\bf \$1}",
-                    $type_struct, "{\\\\it \$1}",
-                    $type_param, "{\\\\bf \$1}" );
address@hidden = ( [$type_param, '" {\\\bf $1} "'],
+               [$type_constant, '"{\\\it $1}"'],
+               [$type_func, '"{\\\bf $1}"'],
+               [$type_struct, '"{\\\it $1}"'],
+                     );
 $blankline_tex = "\\\\";
 
 # sgml, docbook format
-%highlights_sgml = ( $type_constant, "<replaceable 
class=\"option\">\$1</replaceable>",
-                    $type_func, "<function>\$1</function>",
-                    $type_struct, "<structname>\$1</structname>",
-                    $type_env, "<envar>\$1</envar>",
-                    $type_param, "<parameter>\$1</parameter>" );
address@hidden = ( [$type_constant, '"<replaceable 
class=\"option\">$1</replaceable>"'],
+                    [$type_func, '"<function>$1</function>"'],
+                    [$type_struct, '"<structname>$1</structname>"'],
+                    [$type_env, '"<envar>$1</envar>"'],
+                    [$type_param, '" <parameter>$1</parameter> "'] );
 $blankline_sgml = "</para><para>\n";
 
 # these are pretty rough
-%highlights_man = ( $type_constant, "\\\\fB\$1\\\\fP",
-                   $type_func, "\\\\fB\$1\\\\fP",
-                   $type_struct, "\\\\fB\$1\\\\fP",
-                   $type_param, "\\\\fI\$1\\\\fP" );
address@hidden = ( [$type_constant, '"\\\fB$1\\\fP"'],
+                   [$type_func, '"\\\fB$1\\\fP"'],
+                   [$type_struct, '"\\\fB$1\\\fP"'],
+                   [$type_param, '" \\\fI$1\\\fP "'] );
 $blankline_man = "";
 
 # text-mode
-%highlights_text = ( $type_constant, "\$1",
-                    $type_func, "\$1",
-                    $type_struct, "\$1",
-                    $type_param, "\$1" );
address@hidden = ( [$type_constant, '"$1"'],
+                    [$type_func, '"$1"'],
+                    [$type_struct, '"$1"'],
+                    [$type_param, '"$1 "'] );
 $blankline_text = "";
-
+my $lineprefix = "";
 
 sub usage {
     print "Usage: $0 [ -v ] [ -docbook | -html | -text | -man | -tex | 
-texinfo  -listfunc ]\n";
@@ -204,7 +207,7 @@ if ($#ARGV==-1) {
 
 $verbose = 0;
 $output_mode = "man";
-%highlights = %highlights_man;
address@hidden = @highlights_man;
 $blankline = $blankline_man;
 $modulename = "API Documentation";
 $sourceversion = strftime "%Y-%m-%d", localtime;
@@ -213,27 +216,27 @@ while ($ARGV[0] =~ m/^-(.*)/) {
     $cmd = shift @ARGV;
     if ($cmd eq "-html") {
        $output_mode = "html";
-       %highlights = %highlights_html;
+       @highlights = @highlights_html;
        $blankline = $blankline_html;
     } elsif ($cmd eq "-man") {
        $output_mode = "man";
-       %highlights = %highlights_man;
+       @highlights = @highlights_man;
        $blankline = $blankline_man;
     } elsif ($cmd eq "-tex") {
        $output_mode = "tex";
-       %highlights = %highlights_tex;
+       @highlights = @highlights_tex;
        $blankline = $blankline_tex;
     } elsif ($cmd eq "-texinfo") {
        $output_mode = "texinfo";
-       %highlights = %highlights_texinfo;
+       @highlights = @highlights_texinfo;
        $blankline = $blankline_texinfo;
     } elsif ($cmd eq "-text") {
        $output_mode = "text";
-       %highlights = %highlights_text;
+       @highlights = @highlights_text;
        $blankline = $blankline_text;
     } elsif ($cmd eq "-docbook") {
        $output_mode = "sgml";
-       %highlights = %highlights_sgml;
+       @highlights = @highlights_sgml;
        $blankline = $blankline_sgml;
     } elsif ($cmd eq "-listfunc") {
        $output_mode = "listfunc";
@@ -273,6 +276,8 @@ sub dump_section {
     my $name = shift @_;
     my $contents = join "\n", @_;
 
+    $name = " $name";
+
     if ($name =~ m/$type_constant/) {
        $name = $1;
 #      print STDERR "constant section '$1' = '$contents'\n";
@@ -283,6 +288,7 @@ sub dump_section {
        $parameters{$name} = $contents;
     } else {
 #      print STDERR "other section '$name' = '$contents'\n";
+       $name =~ tr/ //d;
        $sections{$name} = $contents;
        push @sectionlist, $name;
     }
@@ -299,35 +305,15 @@ sub dump_section {
 #  sections => %descriont descriptions
 #  
 
-sub repstr {
-    $pattern = shift;
-    $repl = shift;
-    $match1 = shift;
-    $match2 = shift;
-    $match3 = shift;
-    $match4 = shift;
-
-    $output = $repl;
-    $output =~ s,\$1,$match1,g;
-    $output =~ s,\$2,$match2,g;
-    $output =~ s,\$3,$match3,g;
-    $output =~ s,\$4,$match4,g;
-
-    eval "\$return = qq/$output/";
-
-#    print "pattern $pattern matched 1=$match1 2=$match2 3=$match3 4=$match4 
replace $repl yielded $output interpolated $return\n";
-
-    $return;
-}
-
 sub just_highlight {
     my $contents = join "\n", @_;
     my $line;
     my $ret = "";
 
-    foreach $pattern (keys %highlights) {
-#      print "scanning pattern $pattern ($highlights{$pattern})\n";
-       $contents =~ s:$pattern:repstr($pattern, $highlights{$pattern}, $1, $2, 
$3, $4):gse;
+    foreach $highlight (@highlights) {
+       my ($pattern, $replace) = @$highlight;
+       #print "scanning pattern $pattern ($replace)\n";
+       $contents =~ s/$pattern/$replace/gees;
     }
     foreach $line (split "\n", $contents) {
        if ($line eq ""){
@@ -373,13 +359,45 @@ sub output_texinfo {
        }
     }
     foreach $section (@{$args{'sectionlist'}}) {
+       $section =~ s/\@//g;
        print "address@hidden:} " if $section ne $section_default;
-       $args{'sections'}{$section} =~ s:([{}]):address@hidden:gs;
+       $args{'sections'}{$section} =~ s:([{}]):address@hidden:gs;
        output_highlight($args{'sections'}{$section});
     }
     print "address@hidden deftypefun\n\n";
 }
 
+sub output_enum_texinfo {
+    my %args = %{$_[0]};
+    my ($parameter, $section);
+    my $count;
+    my $name = $args{'enum'};
+    my $param;
+    my $param2;
+    my $sec;
+    my $check;
+    my $type;
+
+    print "address@hidden $name\n";
+    print "address@hidden address@hidden";
+
+    $check=0;
+    foreach $parameter (@{$args{'parameterlist'}}) {
+        $param1 = $parameter;
+       $param1 =~ s/_/address@hidden/g;
+
+       $check = 1;
+       print "address@hidden ".$param1."\n";
+#      print "\n";
+
+        $param2 = $args{'parameters'}{$parameter};
+       $out = just_highlight($param2);
+       chomp $out;
+       print $out . "\n";
+    }
+    print "address@hidden table\n";
+}
+
 # output in html
 sub output_html {
     my %args = %{$_[0]};
@@ -431,7 +449,9 @@ sub output_tex {
 
     $func =~ s/_/\\_/g;
 
-    print "\n\n\\subsection{". $func . "}\n\\label{" . $args{'function'} . 
"}\n";
+    print "\n\n\\begin{function}\n";
+    print "\\functionTitle{". $func . "}\n";
+    print "\\index{". $func . "}\n";
 
     $type = $args{'functiontype'};
     $type =~ s/_/\\_/g;
@@ -454,9 +474,8 @@ sub output_tex {
     }
     print ")\n";
 
-    print "\n{\\large{Arguments}}\n";
+    print "\n\\begin{functionArguments}\n";
 
-    print "\\begin{itemize}\n";
     $check=0;
     foreach $parameter (@{$args{'parameterlist'}}) {
         $param1 = $args{'parametertypes'}{$parameter};
@@ -465,11 +484,12 @@ sub output_tex {
        $param2 =~ s/_/\\_/g;
 
        $check = 1;
-       print "\\item {\\it ".$param1."} {\\bf ".$param2."}: \n";
+       print "\\functionArgument {\\it ".$param1."} {\\bf ".$param2."}: \n";
 #      print "\n";
 
        $param3 = $args{'parameters'}{$parameter};
-       $param3 =~ s/#([a-zA-Z\_]+)/{\\it \1}/g;
+       $param3 =~ s/\#([a-zA-Z\_]+)/{\\it $1}/g;
+       $param3 =~ s/\%([a-zA-Z\_]+)/{\\bf $1}/g;
 
        $out = just_highlight($param3);
        $out =~ s/_/\\_/g;
@@ -478,31 +498,72 @@ sub output_tex {
     if ($check==0) {
        print "\\item void\n";
     }
-    print "\\end{itemize}\n";
+    print "\\end{functionArguments}\n";
 
     foreach $section (@{$args{'sectionlist'}}) {
        $sec = $section;
        $sec =~ s/_/\\_/g;
-       $sec =~ s/#([a-zA-Z\_]+)/{\\it \1}/g;
+       $sec =~ s/#([a-zA-Z\_]+)/{\\it $1}/g;
+
+       print "\n\\begin{function${sec}}\n";
+       $out = $args{'sections'}{$section};
+
+       $out =~ s/\#([a-zA-Z\_]+)/{\\it $1}/g;
+       $out =~ s/\%([a-zA-Z\_]+)/{\\bf $1}/g;
+       $out =~ s/\@([a-zA-Z\_]+)/{\\bf $1}/g;
+       $out =~ s/_/\\_\\-/g;
+        $out =~ s/\$/\\\$/g;
+       $out =~ s/#/\\#/g;
+       $out =~ s/\n\n/\n/g;
+       $out =~ s/\\:/:/g;
+       $out =~ s/\-\>/\$\\rightarrow\$/g;
+       $out =~ s/([0-9]+)\^([0-9]+)/\$\{$1\}\^\{$2\}\$/g;
 
-       print "\n{\\large{$sec}}\\\\\n";
-       print "\\begin{rmfamily}\n";
+       print $out;
+       print "\\end{function${sec}}\n";
+    }
+    print "\\end{function}\n\n";
+}
 
-       $sec = $args{'sections'}{$section};
-       $sec =~ s/\\:/:/g;
-       $sec =~ s/#([a-zA-Z\_]+)/{\\it \1}/g;
-       $sec =~ s/->/\$\\rightarrow\$/g;
-       $sec =~ s/([0-9]+)\^([0-9]+)/\$\{\1\}\^\{\2\}\$/g;
+sub output_enum_tex {
+    my %args = %{$_[0]};
+    my ($parameter, $section);
+    my $count;
+    my $name = $args{'enum'};
+    my $param;
+    my $param2;
+    my $sec;
+    my $check;
+    my $type;
 
-       $out = just_highlight($sec);
-       $out =~ s/_/\\_/g;
+    print "\n\n\\begin{enum}\n";
+    $name =~ s/_/\\_/g;
+    print "\\enumTitle{". $name . "}\n";
+    print "\\index{". $name . "}\n";
 
-       print $out;
-       print "\\end{rmfamily}\n";
+    print "\n\\begin{enumList}\n";
+
+    $check=0;
+    foreach $parameter (@{$args{'parameterlist'}}) {
+        $param1 = $parameter;
+       $param1 =~ s/_/\\_\\-/g;
+
+       $check = 1;
+       print "\\enumElement{".$param1."}{";
+#      print "\n";
+
+        $param2 = $args{'parameters'}{$parameter};
+       $param2 =~ s/\#([a-zA-Z\_]+)/{\\it $1}/g;
+       $param2 =~ s/\%([a-zA-Z\_]+)/{\\bf $1}/g;
+       $out = just_highlight($param2);
+       $out =~ s/_/\\_/g;
+       chomp $out;
+       print $out . "}\n";
     }
-    print "\n";
-}
+    print "\\end{enumList}\n";
 
+    print "\\end{enum}\n\n";
+}
 
 # output in sgml DocBook
 sub output_sgml {
@@ -642,11 +703,14 @@ sub output_man {
     if ($args{'bugsto'}) {
        print ".SH \"REPORTING BUGS\"\n";
        print "Report bugs to <". $args{'bugsto'} . ">.\n";
+        print ".br\n";
+       print "General guidelines for reporting bugs: 
http://www.gnu.org/gethelp/\n";;
+        print ".br\n";
        if ($args{'pkgname'}) {
            print $args{'pkgname'} . " home page: " .
                "http://www.gnu.org/software/"; . $args{'module'} . "/\n";
        }
-       print "General help using GNU software: http://www.gnu.org/gethelp/\n";;
+       print "\n";
     }
 
     if ($args{'copyright'}) {
@@ -673,6 +737,10 @@ sub output_man {
        print ".B info " . $args{'seeinfo'} . "\n";
        print ".PP\n";
        print "should give you access to the complete manual.\n";
+       print "As an alternative you may obtain the manual from:\n";
+       print ".IP\n";
+       print ".B http://www.gnu.org/software/"; . $args{'module'} . 
"/manual/\n";
+       print ".PP\n";
     }
 }
 
@@ -708,6 +776,10 @@ sub output_function {
     eval "output_".$output_mode."(address@hidden);";
 }
 
+sub output_enum {
+    eval "output_enum_".$output_mode."(address@hidden);";
+}
+
 
 ##
 # takes a function prototype and spits out all the details
@@ -747,7 +819,7 @@ sub dump_function {
 #          print STDERR " :> @args\n";
            $type = join " ", @args;
 
-           if ($parameters{$param} eq "" && $param != "void") {
+           if ((!defined($parameters{$param}) || $parameters{$param} eq "") && 
$param ne "void") {
                $parameters{$param} = "-- undescribed --";
                print STDERR "warning: $lineno: Function parameter '$param' not 
described in '$function_name'\n";
            }
@@ -784,6 +856,56 @@ sub dump_function {
     }
 }
 
+sub dump_enum {
+    my $prototype = shift @_;
+
+    if (($prototype =~ 
m/^\s*typedef\s+enum\s*[a-zA-Z0-9_~:]*\s*\{([\-a-zA-Z0-9_~=,:\s\(\)\<]+)\s*\}\s*([a-zA-Z0-9_]+);.*/))
 {
+#        || $prototype =~ m/^\s*enum\s+([a-zA-Z0-9_~:]+).*/) {
+        $args = $1;
+       $name = $2;
+
+       foreach $arg (split ',', $args) {
+           # strip leading/trailing spaces
+           $arg =~ s/^\s*//;
+           $arg =~ s/\s*$//;
+           $arg =~ s/([A-Za-z0-9_]+)\s*=.*/$1/g;
+#          print STDERR "SCAN ARG: '$arg'\n";
+
+            next if $arg eq '';
+           if ((!defined($parameters{$arg}) || $parameters{$arg} eq "")) {
+               $parameters{$arg} = "-- undescribed --";
+               print STDERR "warning: $lineno: Enumeration parameter '$arg' 
not described in '$name'\n";
+           }
+
+           push @parameterlist, $arg;
+
+#          print STDERR "param = '$arg'\n";
+       }
+    } else {
+#      print STDERR "warning: $lineno: Cannot understand enumeration: 
'$prototype'\n";
+       return;
+    }
+
+    output_enum({'enum' => $name,
+                        'module' => $modulename,
+                        'sourceversion' => $sourceversion,
+                        'include' => $include,
+                        'includefuncprefix' => $includefuncprefix,
+                        'bugsto' => $bugsto,
+                        'pkgname' => $pkgname,
+                        'copyright' => $copyright,
+                        'verbatimcopying' => $verbatimcopying,
+                        'seeinfo' => $seeinfo,
+                        'functiontype' => $return_type,
+                        'parameterlist' => address@hidden,
+                        'parameters' => \%parameters,
+                        'parametertypes' => \%parametertypes,
+                        'sectionlist' => address@hidden,
+                        'sections' => \%sections,
+                        'purpose' => $function_purpose
+                        });
+}
+
 ######################################################################
 # main
 # states
@@ -800,7 +922,7 @@ $doc_start = "^/\\*\\*\$";
 $doc_end = "\\*/";
 $doc_com = "\\s*\\*\\s*";
 $doc_func = $doc_com."(\\w+):?";
-$doc_sect = $doc_com."([".$doc_special."[:upper:]][\\w ]+):\\s*(.*)";
+$doc_sect = $doc_com."([".$doc_special."[:upper:]][\\w]+):\\s*(.*)";
 $doc_content = $doc_com."(.*)";
 
 %constants = ();
@@ -812,25 +934,30 @@ $doc_content = $doc_com."(.*)";
 $contents = "";
 $section_default = "Description";      # default section
 $section = $section_default;
+$enum = 0;
 
 $lineno = 0;
+
 foreach $file (@ARGV) {
     if (!open(IN,"<$file")) {
        print STDERR "Error: Cannot open file $file\n";
        next;
     }
-    while (<IN>) {
+    while ($line = <IN>) {
        $lineno++;
 
        if ($state == 0) {
-           if (/$doc_start/o) {
+           if ($line =~ /$doc_start/o) {
                $state = 1;             # next line is always the function name
+#          print STDERR "XXX: start of doc comment\n";
            }
        } elsif ($state == 1) { # this line is the function name (always)
-           if (/$doc_func/o) {
+           if ($line =~ /$doc_func/o) {
                $function = $1;
                $state = 2;
-               if (/-\s*(.*)/) {
+#          print STDERR "XXX: start of doc comment, looking for prototype\n";
+
+               if ($line =~ /-\s*(.*)/) {
                    $function_purpose = $1;
                } else {
                    $function_purpose = "";
@@ -844,11 +971,11 @@ foreach $file (@ARGV) {
                $state = 0;
            }
        } elsif ($state == 2) { # look for head: lines, and include content
-           if (/$doc_sect/o) {
+           if ($line =~ /$doc_sect/o) {
                $newsection = $1;
                $newcontents = $2;
 
-               if ($contents ne "") {
+               if ($contents ne '') {
                    dump_section($section, $contents);
                    $section = $section_default;
                }
@@ -858,7 +985,7 @@ foreach $file (@ARGV) {
                    $contents .= "\n";
                }
                $section = $newsection;
-           } elsif (/$doc_end/) {
+           } elsif ($line =~ /$doc_end/) {
 
                if ($contents ne "") {
                    dump_section($section, $contents);
@@ -866,13 +993,12 @@ foreach $file (@ARGV) {
                    $contents = "";
                }
 
-#          print STDERR "end of doc comment, looking for prototype\n";
-               $prototype = "";
+               $prototype = '';
                $state = 3;
-           } elsif (/$doc_content/) {
+           } elsif ($line =~ /$doc_content/) {
                # miguel-style comment kludge, look for blank lines after
                # @parameter line to signify start of description
-               if ($1 eq "" && $section =~ m/^@/) {
+               if ($1 eq '' && $section =~ m/^@/) {
                    dump_section($section, $contents);
                    $section = $section_default;
                    $contents = "";
@@ -884,16 +1010,25 @@ foreach $file (@ARGV) {
                print STDERR "warning: $lineno: Bad line: $_";
            }
        } elsif ($state == 3) { # scanning for function { (end of prototype)
-           if (m#\s*/\*\s+MACDOC\s*#io) {
+           if ($line =~ /([a-zA-Z\s]+)enum(.*)$/) {
+               $enum = 1;
+           }
+
+           if ($line =~ m#\s*/\*\s+MACDOC\s*#io) {
              # do nothing
            }
-           elsif (/([^\{]*)/) {
+           elsif ($enum == 1 && $line =~ /(\s*\{).*/) {
+               $prototype = "typedef enum {";
+           }
+           elsif ($line =~ /([^\{]*)/) {
                $prototype .= $1;
            }
-           if (/\{/) {
+
+           if ($enum == 0 && $line =~ /;/) {
                $prototype =~ s@/\*.*?\*/@@gos; # strip comments.
                $prototype =~ address@hidden@ @gos; # strip newlines/cr's.
                $prototype =~ address@hidden +@@gos; # strip leading spaces
+
                dump_function($prototype);
 
                $function = "";
@@ -904,9 +1039,31 @@ foreach $file (@ARGV) {
                %sections = ();
                @sectionlist = ();
                $prototype = "";
+               $enum = 0;
 
                $state = 0;
            }
+           elsif ($enum == 1 && $line =~ /\}/) {
+               $prototype =~ s@/\*.*?\*/@@gos; # strip comments.
+               $prototype =~ address@hidden@ @gos; # strip newlines/cr's.
+               $prototype =~ address@hidden +@@gos; # strip leading spaces
+
+               dump_enum($prototype);
+
+               $function = "";
+               %constants = ();
+               %parameters = ();
+               %parametertypes = ();
+               @parameterlist = ();
+               %sections = ();
+               @sectionlist = ();
+               $prototype = "";
+               $enum = 0;
+
+               $state = 0;
+           }
+    
        }
     }
+
 }
diff --git a/lib/ASN1.c b/lib/ASN1.c
index f9a9d18..9abfdf6 100644
--- a/lib/ASN1.c
+++ b/lib/ASN1.c
@@ -1,8 +1,8 @@
-/* A Bison parser, made by GNU Bison 2.5.  */
+/* A Bison parser, made by GNU Bison 2.7.  */
 
 /* Bison implementation for Yacc-like parsers in C
    
-      Copyright (C) 1984, 1989-1990, 2000-2011 Free Software Foundation, Inc.
+      Copyright (C) 1984, 1989-1990, 2000-2012 Free Software Foundation, Inc.
    
    This program is free software: you can redistribute it and/or modify
    it under the terms of the GNU General Public License as published by
@@ -44,7 +44,7 @@
 #define YYBISON 1
 
 /* Bison version.  */
-#define YYBISON_VERSION "2.5"
+#define YYBISON_VERSION "2.7"
 
 /* Skeleton name.  */
 #define YYSKELETON_NAME "yacc.c"
@@ -58,8 +58,6 @@
 /* Pull parsers.  */
 #define YYPULL 1
 
-/* Using locations.  */
-#define YYLSP_NEEDED 0
 
 /* Substitute the variable and function names.  */
 #define yyparse         _asn1_yyparse
@@ -70,10 +68,8 @@
 #define yydebug         _asn1_yydebug
 #define yynerrs         _asn1_yynerrs
 
-
 /* Copy the first part of user declarations.  */
-
-/* Line 268 of yacc.c  */
+/* Line 371 of yacc.c  */
 #line 1 "ASN1.y"
 
 /*
@@ -130,14 +126,16 @@ static void _asn1_yyerror (const char *);
 static int _asn1_yylex(void);
 
 
+/* Line 371 of yacc.c  */
+#line 131 "ASN1.c"
 
-/* Line 268 of yacc.c  */
-#line 136 "ASN1.c"
-
-/* Enabling traces.  */
-#ifndef YYDEBUG
-# define YYDEBUG 0
-#endif
+# ifndef YY_NULL
+#  if defined __cplusplus && 201103L <= __cplusplus
+#   define YY_NULL nullptr
+#  else
+#   define YY_NULL 0
+#  endif
+# endif
 
 /* Enabling verbose error messages.  */
 #ifdef YYERROR_VERBOSE
@@ -147,11 +145,14 @@ static int _asn1_yylex(void);
 # define YYERROR_VERBOSE 1
 #endif
 
-/* Enabling the token table.  */
-#ifndef YYTOKEN_TABLE
-# define YYTOKEN_TABLE 0
-#endif
 
+/* Enabling traces.  */
+#ifndef YYDEBUG
+# define YYDEBUG 0
+#endif
+#if YYDEBUG
+extern int _asn1_yydebug;
+#endif
 
 /* Tokens.  */
 #ifndef YYTOKENTYPE
@@ -257,12 +258,10 @@ static int _asn1_yylex(void);
 
 
 
-
 #if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED
 typedef union YYSTYPE
 {
-
-/* Line 293 of yacc.c  */
+/* Line 387 of yacc.c  */
 #line 62 "ASN1.y"
 
   unsigned int constant;
@@ -270,21 +269,36 @@ typedef union YYSTYPE
   asn1_node node;
 
 
-
-/* Line 293 of yacc.c  */
-#line 276 "ASN1.c"
+/* Line 387 of yacc.c  */
+#line 274 "ASN1.c"
 } YYSTYPE;
 # define YYSTYPE_IS_TRIVIAL 1
 # define yystype YYSTYPE /* obsolescent; will be withdrawn */
 # define YYSTYPE_IS_DECLARED 1
 #endif
 
+extern YYSTYPE _asn1_yylval;
 
-/* Copy the second part of user declarations.  */
+#ifdef YYPARSE_PARAM
+#if defined __STDC__ || defined __cplusplus
+int _asn1_yyparse (void *YYPARSE_PARAM);
+#else
+int _asn1_yyparse ();
+#endif
+#else /* ! YYPARSE_PARAM */
+#if defined __STDC__ || defined __cplusplus
+int _asn1_yyparse (void);
+#else
+int _asn1_yyparse ();
+#endif
+#endif /* ! YYPARSE_PARAM */
 
 
-/* Line 343 of yacc.c  */
-#line 288 "ASN1.c"
+
+/* Copy the second part of user declarations.  */
+
+/* Line 390 of yacc.c  */
+#line 302 "ASN1.c"
 
 #ifdef short
 # undef short
@@ -337,24 +351,24 @@ typedef short int yytype_int16;
 # if defined YYENABLE_NLS && YYENABLE_NLS
 #  if ENABLE_NLS
 #   include <libintl.h> /* INFRINGES ON USER NAME SPACE */
-#   define YY_(msgid) dgettext ("bison-runtime", msgid)
+#   define YY_(Msgid) dgettext ("bison-runtime", Msgid)
 #  endif
 # endif
 # ifndef YY_
-#  define YY_(msgid) msgid
+#  define YY_(Msgid) Msgid
 # endif
 #endif
 
 /* Suppress unused-variable warnings by "using" E.  */
 #if ! defined lint || defined __GNUC__
-# define YYUSE(e) ((void) (e))
+# define YYUSE(E) ((void) (E))
 #else
-# define YYUSE(e) /* empty */
+# define YYUSE(E) /* empty */
 #endif
 
 /* Identity function, used to suppress warnings about constant conditions.  */
 #ifndef lint
-# define YYID(n) (n)
+# define YYID(N) (N)
 #else
 #if (defined __STDC__ || defined __C99__FUNC__ \
      || defined __cplusplus || defined _MSC_VER)
@@ -390,6 +404,7 @@ YYID (yyi)
 #    if ! defined _ALLOCA_H && ! defined EXIT_SUCCESS && (defined __STDC__ || 
defined __C99__FUNC__ \
      || defined __cplusplus || defined _MSC_VER)
 #     include <stdlib.h> /* INFRINGES ON USER NAME SPACE */
+      /* Use EXIT_SUCCESS as a witness for stdlib.h.  */
 #     ifndef EXIT_SUCCESS
 #      define EXIT_SUCCESS 0
 #     endif
@@ -481,20 +496,20 @@ union yyalloc
 #endif
 
 #if defined YYCOPY_NEEDED && YYCOPY_NEEDED
-/* Copy COUNT objects from FROM to TO.  The source and destination do
+/* Copy COUNT objects from SRC to DST.  The source and destination do
    not overlap.  */
 # ifndef YYCOPY
 #  if defined __GNUC__ && 1 < __GNUC__
-#   define YYCOPY(To, From, Count) \
-      __builtin_memcpy (To, From, (Count) * sizeof (*(From)))
+#   define YYCOPY(Dst, Src, Count) \
+      __builtin_memcpy (Dst, Src, (Count) * sizeof (*(Src)))
 #  else
-#   define YYCOPY(To, From, Count)             \
-      do                                       \
-       {                                       \
-         YYSIZE_T yyi;                         \
-         for (yyi = 0; yyi < (Count); yyi++)   \
-           (To)[yyi] = (From)[yyi];            \
-       }                                       \
+#   define YYCOPY(Dst, Src, Count)              \
+      do                                        \
+        {                                       \
+          YYSIZE_T yyi;                         \
+          for (yyi = 0; yyi < (Count); yyi++)   \
+            (Dst)[yyi] = (Src)[yyi];            \
+        }                                       \
       while (YYID (0))
 #  endif
 # endif
@@ -640,7 +655,7 @@ static const yytype_uint16 yyrline[] =
 };
 #endif
 
-#if YYDEBUG || YYERROR_VERBOSE || YYTOKEN_TABLE
+#if YYDEBUG || YYERROR_VERBOSE || 1
 /* YYTNAME[SYMBOL-NUM] -- String name of the symbol SYMBOL-NUM.
    First, the terminals, then, starting at YYNTOKENS, nonterminals.  */
 static const char *const yytname[] =
@@ -667,7 +682,7 @@ static const char *const yytname[] =
   "type_assig_right_tag", "type_assig_right_tag_default", "type_assig",
   "type_assig_list", "sequence_def", "set_def", "choise_def", "any_def",
   "type_def", "constant_def", "type_constant", "type_constant_list",
-  "definitions_id", "explicit_implicit", 0
+  "definitions_id", "explicit_implicit", YY_NULL
 };
 #endif
 
@@ -831,10 +846,10 @@ static const yytype_int16 yytable[] =
       36,   206,   212,   185,     0,   202,   205,   215,   198,   216
 };
 
-#define yypact_value_is_default(yystate) \
-  ((yystate) == (-121))
+#define yypact_value_is_default(Yystate) \
+  (!!((Yystate) == (-121)))
 
-#define yytable_value_is_error(yytable_value) \
+#define yytable_value_is_error(Yytable_value) \
   YYID (0)
 
 static const yytype_int16 yycheck[] =
@@ -918,62 +933,35 @@ static const yytype_uint8 yystos[] =
 
 #define YYRECOVERING()  (!!yyerrstatus)
 
-#define YYBACKUP(Token, Value)                                 \
-do                                                             \
-  if (yychar == YYEMPTY && yylen == 1)                         \
-    {                                                          \
-      yychar = (Token);                                                \
-      yylval = (Value);                                                \
-      YYPOPSTACK (1);                                          \
-      goto yybackup;                                           \
-    }                                                          \
-  else                                                         \
-    {                                                          \
+#define YYBACKUP(Token, Value)                                  \
+do                                                              \
+  if (yychar == YYEMPTY)                                        \
+    {                                                           \
+      yychar = (Token);                                         \
+      yylval = (Value);                                         \
+      YYPOPSTACK (yylen);                                       \
+      yystate = *yyssp;                                         \
+      goto yybackup;                                            \
+    }                                                           \
+  else                                                          \
+    {                                                           \
       yyerror (YY_("syntax error: cannot back up")); \
       YYERROR;                                                 \
     }                                                          \
 while (YYID (0))
 
-
+/* Error token number */
 #define YYTERROR       1
 #define YYERRCODE      256
 
 
-/* YYLLOC_DEFAULT -- Set CURRENT to span from RHS[1] to RHS[N].
-   If N is 0, then set CURRENT to the empty location which ends
-   the previous symbol: RHS[0] (always defined).  */
-
-#define YYRHSLOC(Rhs, K) ((Rhs)[K])
-#ifndef YYLLOC_DEFAULT
-# define YYLLOC_DEFAULT(Current, Rhs, N)                               \
-    do                                                                 \
-      if (YYID (N))                                                    \
-       {                                                               \
-         (Current).first_line   = YYRHSLOC (Rhs, 1).first_line;        \
-         (Current).first_column = YYRHSLOC (Rhs, 1).first_column;      \
-         (Current).last_line    = YYRHSLOC (Rhs, N).last_line;         \
-         (Current).last_column  = YYRHSLOC (Rhs, N).last_column;       \
-       }                                                               \
-      else                                                             \
-       {                                                               \
-         (Current).first_line   = (Current).last_line   =              \
-           YYRHSLOC (Rhs, 0).last_line;                                \
-         (Current).first_column = (Current).last_column =              \
-           YYRHSLOC (Rhs, 0).last_column;                              \
-       }                                                               \
-    while (YYID (0))
-#endif
-
-
 /* This macro is provided for backward compatibility. */
-
 #ifndef YY_LOCATION_PRINT
 # define YY_LOCATION_PRINT(File, Loc) ((void) 0)
 #endif
 
 
 /* YYLEX -- calling `yylex' with the right arguments.  */
-
 #ifdef YYLEX_PARAM
 # define YYLEX yylex (YYLEX_PARAM)
 #else
@@ -1023,6 +1011,8 @@ yy_symbol_value_print (yyoutput, yytype, yyvaluep)
     YYSTYPE const * const yyvaluep;
 #endif
 {
+  FILE *yyo = yyoutput;
+  YYUSE (yyo);
   if (!yyvaluep)
     return;
 # ifdef YYPRINT
@@ -1034,7 +1024,7 @@ yy_symbol_value_print (yyoutput, yytype, yyvaluep)
   switch (yytype)
     {
       default:
-       break;
+        break;
     }
 }
 
@@ -1274,12 +1264,11 @@ static int
 yysyntax_error (YYSIZE_T *yymsg_alloc, char **yymsg,
                 yytype_int16 *yyssp, int yytoken)
 {
-  YYSIZE_T yysize0 = yytnamerr (0, yytname[yytoken]);
+  YYSIZE_T yysize0 = yytnamerr (YY_NULL, yytname[yytoken]);
   YYSIZE_T yysize = yysize0;
-  YYSIZE_T yysize1;
   enum { YYERROR_VERBOSE_ARGS_MAXIMUM = 5 };
   /* Internationalized format string. */
-  const char *yyformat = 0;
+  const char *yyformat = YY_NULL;
   /* Arguments of yyformat. */
   char const *yyarg[YYERROR_VERBOSE_ARGS_MAXIMUM];
   /* Number of reported tokens (one for the "unexpected", one per
@@ -1339,11 +1328,13 @@ yysyntax_error (YYSIZE_T *yymsg_alloc, char **yymsg,
                     break;
                   }
                 yyarg[yycount++] = yytname[yyx];
-                yysize1 = yysize + yytnamerr (0, yytname[yyx]);
-                if (! (yysize <= yysize1
-                       && yysize1 <= YYSTACK_ALLOC_MAXIMUM))
-                  return 2;
-                yysize = yysize1;
+                {
+                  YYSIZE_T yysize1 = yysize + yytnamerr (YY_NULL, 
yytname[yyx]);
+                  if (! (yysize <= yysize1
+                         && yysize1 <= YYSTACK_ALLOC_MAXIMUM))
+                    return 2;
+                  yysize = yysize1;
+                }
               }
         }
     }
@@ -1363,10 +1354,12 @@ yysyntax_error (YYSIZE_T *yymsg_alloc, char **yymsg,
 # undef YYCASE_
     }
 
-  yysize1 = yysize + yystrlen (yyformat);
-  if (! (yysize <= yysize1 && yysize1 <= YYSTACK_ALLOC_MAXIMUM))
-    return 2;
-  yysize = yysize1;
+  {
+    YYSIZE_T yysize1 = yysize + yystrlen (yyformat);
+    if (! (yysize <= yysize1 && yysize1 <= YYSTACK_ALLOC_MAXIMUM))
+      return 2;
+    yysize = yysize1;
+  }
 
   if (*yymsg_alloc < yysize)
     {
@@ -1426,32 +1419,27 @@ yydestruct (yymsg, yytype, yyvaluep)
     {
 
       default:
-       break;
+        break;
     }
 }
 
 
-/* Prevent warnings from -Wmissing-prototypes.  */
-#ifdef YYPARSE_PARAM
-#if defined __STDC__ || defined __cplusplus
-int yyparse (void *YYPARSE_PARAM);
-#else
-int yyparse ();
-#endif
-#else /* ! YYPARSE_PARAM */
-#if defined __STDC__ || defined __cplusplus
-int yyparse (void);
-#else
-int yyparse ();
-#endif
-#endif /* ! YYPARSE_PARAM */
 
 
 /* The lookahead symbol.  */
 int yychar;
 
+
+#ifndef YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN
+# define YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN
+# define YY_IGNORE_MAYBE_UNINITIALIZED_END
+#endif
+#ifndef YY_INITIAL_VALUE
+# define YY_INITIAL_VALUE(Value) /* Nothing. */
+#endif
+
 /* The semantic value of the lookahead symbol.  */
-YYSTYPE yylval;
+YYSTYPE yylval YY_INITIAL_VALUE(yyval_default);
 
 /* Number of syntax errors so far.  */
 int yynerrs;
@@ -1491,7 +1479,7 @@ yyparse ()
        `yyss': related to states.
        `yyvs': related to semantic values.
 
-       Refer to the stacks thru separate pointers, to allow yyoverflow
+       Refer to the stacks through separate pointers, to allow yyoverflow
        to reallocate them elsewhere.  */
 
     /* The state stack.  */
@@ -1509,7 +1497,7 @@ yyparse ()
   int yyn;
   int yyresult;
   /* Lookahead token as an internal (translated) token number.  */
-  int yytoken;
+  int yytoken = 0;
   /* The variables used to return semantic value and location from the
      action routines.  */
   YYSTYPE yyval;
@@ -1527,9 +1515,8 @@ yyparse ()
      Keep to zero when no symbol should be popped.  */
   int yylen = 0;
 
-  yytoken = 0;
-  yyss = yyssa;
-  yyvs = yyvsa;
+  yyssp = yyss = yyssa;
+  yyvsp = yyvs = yyvsa;
   yystacksize = YYINITDEPTH;
 
   YYDPRINTF ((stderr, "Starting parse\n"));
@@ -1538,14 +1525,6 @@ yyparse ()
   yyerrstatus = 0;
   yynerrs = 0;
   yychar = YYEMPTY; /* Cause a token to be read.  */
-
-  /* Initialize stack pointers.
-     Waste one element of value and location stack
-     so that they stay on the same level as the state stack.
-     The wasted elements are never initialized.  */
-  yyssp = yyss;
-  yyvsp = yyvs;
-
   goto yysetstate;
 
 /*------------------------------------------------------------.
@@ -1686,7 +1665,9 @@ yybackup:
   yychar = YYEMPTY;
 
   yystate = yyn;
+  YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN
   *++yyvsp = yylval;
+  YY_IGNORE_MAYBE_UNINITIALIZED_END
 
   goto yynewstate;
 
@@ -1723,8 +1704,7 @@ yyreduce:
   switch (yyn)
     {
         case 2:
-
-/* Line 1806 of yacc.c  */
+/* Line 1792 of yacc.c  */
 #line 137 "ASN1.y"
     {(yyval.node)=_asn1_add_static_node(ASN1_ETYPE_DEFINITIONS|(yyvsp[(3) - 
(8)].constant));
                     _asn1_set_name((yyval.node),_asn1_get_name((yyvsp[(1) - 
(8)].node)));
@@ -1737,80 +1717,69 @@ yyreduce:
     break;
 
   case 3:
-
-/* Line 1806 of yacc.c  */
+/* Line 1792 of yacc.c  */
 #line 147 "ASN1.y"
     {strcpy((yyval.str),(yyvsp[(1) - (1)].str));}
     break;
 
   case 4:
-
-/* Line 1806 of yacc.c  */
+/* Line 1792 of yacc.c  */
 #line 148 "ASN1.y"
     {strcpy((yyval.str),(yyvsp[(2) - (2)].str));}
     break;
 
   case 5:
-
-/* Line 1806 of yacc.c  */
+/* Line 1792 of yacc.c  */
 #line 151 "ASN1.y"
     {strcpy((yyval.str),"-");
                        strcat((yyval.str),(yyvsp[(2) - (2)].str));}
     break;
 
   case 6:
-
-/* Line 1806 of yacc.c  */
+/* Line 1792 of yacc.c  */
 #line 155 "ASN1.y"
     {strcpy((yyval.str),(yyvsp[(1) - (1)].str));}
     break;
 
   case 7:
-
-/* Line 1806 of yacc.c  */
+/* Line 1792 of yacc.c  */
 #line 156 "ASN1.y"
     {strcpy((yyval.str),(yyvsp[(1) - (1)].str));}
     break;
 
   case 8:
-
-/* Line 1806 of yacc.c  */
+/* Line 1792 of yacc.c  */
 #line 159 "ASN1.y"
     {strcpy((yyval.str),(yyvsp[(1) - (1)].str));}
     break;
 
   case 9:
-
-/* Line 1806 of yacc.c  */
+/* Line 1792 of yacc.c  */
 #line 160 "ASN1.y"
     {strcpy((yyval.str),(yyvsp[(1) - (1)].str));}
     break;
 
   case 10:
-
-/* Line 1806 of yacc.c  */
+/* Line 1792 of yacc.c  */
 #line 163 "ASN1.y"
     {strcpy((yyval.str),(yyvsp[(1) - (1)].str));}
     break;
 
   case 11:
-
-/* Line 1806 of yacc.c  */
+/* Line 1792 of yacc.c  */
 #line 164 "ASN1.y"
     {strcpy((yyval.str),(yyvsp[(1) - (1)].str));}
     break;
 
   case 12:
-
-/* Line 1806 of yacc.c  */
+/* Line 1792 of yacc.c  */
 #line 167 "ASN1.y"
     {(yyval.node)=_asn1_add_static_node(ASN1_ETYPE_CONSTANT);
                                        _asn1_set_value((yyval.node),(yyvsp[(2) 
- (3)].str),strlen((yyvsp[(2) - (3)].str))+1);}
     break;
 
   case 13:
-
-/* Line 1806 of yacc.c  */
+/* Line 1792 of yacc.c  */
 #line 169 "ASN1.y"
     {(yyval.node)=_asn1_add_static_node(ASN1_ETYPE_CONSTANT);
                                       _asn1_set_name((yyval.node),(yyvsp[(1) - 
(4)].str));
@@ -1818,31 +1787,27 @@ yyreduce:
     break;
 
   case 14:
-
-/* Line 1806 of yacc.c  */
+/* Line 1792 of yacc.c  */
 #line 174 "ASN1.y"
     {(yyval.node)=(yyvsp[(1) - (1)].node);}
     break;
 
   case 15:
-
-/* Line 1806 of yacc.c  */
+/* Line 1792 of yacc.c  */
 #line 175 "ASN1.y"
     {(yyval.node)=(yyvsp[(1) - (3)].node);
                                             
_asn1_set_right(_asn1_get_last_right((yyvsp[(1) - (3)].node)),(yyvsp[(3) - 
(3)].node));}
     break;
 
   case 16:
-
-/* Line 1806 of yacc.c  */
+/* Line 1792 of yacc.c  */
 #line 179 "ASN1.y"
     {(yyval.node)=_asn1_add_static_node(ASN1_ETYPE_CONSTANT);
                                    _asn1_set_value((yyval.node),(yyvsp[(1) - 
(1)].str),strlen((yyvsp[(1) - (1)].str))+1);}
     break;
 
   case 17:
-
-/* Line 1806 of yacc.c  */
+/* Line 1792 of yacc.c  */
 #line 181 "ASN1.y"
     {(yyval.node)=_asn1_add_static_node(ASN1_ETYPE_CONSTANT);
                                    _asn1_set_name((yyval.node),(yyvsp[(1) - 
(4)].str));
@@ -1850,125 +1815,108 @@ yyreduce:
     break;
 
   case 18:
-
-/* Line 1806 of yacc.c  */
+/* Line 1792 of yacc.c  */
 #line 186 "ASN1.y"
     {(yyval.node)=(yyvsp[(1) - (1)].node);}
     break;
 
   case 19:
-
-/* Line 1806 of yacc.c  */
+/* Line 1792 of yacc.c  */
 #line 187 "ASN1.y"
     {(yyval.node)=(yyvsp[(1) - (2)].node);
                                                     
_asn1_set_right(_asn1_get_last_right((yyvsp[(1) - (2)].node)),(yyvsp[(2) - 
(2)].node));}
     break;
 
   case 20:
-
-/* Line 1806 of yacc.c  */
+/* Line 1792 of yacc.c  */
 #line 191 "ASN1.y"
     {(yyval.constant)=CONST_UNIVERSAL;}
     break;
 
   case 21:
-
-/* Line 1806 of yacc.c  */
+/* Line 1792 of yacc.c  */
 #line 192 "ASN1.y"
     {(yyval.constant)=CONST_PRIVATE;}
     break;
 
   case 22:
-
-/* Line 1806 of yacc.c  */
+/* Line 1792 of yacc.c  */
 #line 193 "ASN1.y"
     {(yyval.constant)=CONST_APPLICATION;}
     break;
 
   case 23:
-
-/* Line 1806 of yacc.c  */
+/* Line 1792 of yacc.c  */
 #line 196 "ASN1.y"
     {(yyval.node)=_asn1_add_static_node(ASN1_ETYPE_TAG);
                             _asn1_set_value((yyval.node),(yyvsp[(2) - 
(3)].str),strlen((yyvsp[(2) - (3)].str))+1);}
     break;
 
   case 24:
-
-/* Line 1806 of yacc.c  */
+/* Line 1792 of yacc.c  */
 #line 198 "ASN1.y"
     {(yyval.node)=_asn1_add_static_node(ASN1_ETYPE_TAG | (yyvsp[(2) - 
(4)].constant));
                                 _asn1_set_value((yyval.node),(yyvsp[(3) - 
(4)].str),strlen((yyvsp[(3) - (4)].str))+1);}
     break;
 
   case 25:
-
-/* Line 1806 of yacc.c  */
+/* Line 1792 of yacc.c  */
 #line 202 "ASN1.y"
     {(yyval.node)=(yyvsp[(1) - (1)].node);}
     break;
 
   case 26:
-
-/* Line 1806 of yacc.c  */
+/* Line 1792 of yacc.c  */
 #line 203 "ASN1.y"
     {(yyval.node)=_asn1_mod_type((yyvsp[(1) - (2)].node),CONST_EXPLICIT);}
     break;
 
   case 27:
-
-/* Line 1806 of yacc.c  */
+/* Line 1792 of yacc.c  */
 #line 204 "ASN1.y"
     {(yyval.node)=_asn1_mod_type((yyvsp[(1) - (2)].node),CONST_IMPLICIT);}
     break;
 
   case 28:
-
-/* Line 1806 of yacc.c  */
+/* Line 1792 of yacc.c  */
 #line 207 "ASN1.y"
     {(yyval.node)=_asn1_add_static_node(ASN1_ETYPE_DEFAULT);
                                        _asn1_set_value((yyval.node),(yyvsp[(2) 
- (2)].str),strlen((yyvsp[(2) - (2)].str))+1);}
     break;
 
   case 29:
-
-/* Line 1806 of yacc.c  */
+/* Line 1792 of yacc.c  */
 #line 209 "ASN1.y"
     {(yyval.node)=_asn1_add_static_node(ASN1_ETYPE_DEFAULT|CONST_TRUE);}
     break;
 
   case 30:
-
-/* Line 1806 of yacc.c  */
+/* Line 1792 of yacc.c  */
 #line 210 "ASN1.y"
     {(yyval.node)=_asn1_add_static_node(ASN1_ETYPE_DEFAULT|CONST_FALSE);}
     break;
 
   case 33:
-
-/* Line 1806 of yacc.c  */
+/* Line 1792 of yacc.c  */
 #line 219 "ASN1.y"
     {(yyval.node)=_asn1_add_static_node(ASN1_ETYPE_INTEGER);}
     break;
 
   case 34:
-
-/* Line 1806 of yacc.c  */
+/* Line 1792 of yacc.c  */
 #line 220 "ASN1.y"
     {(yyval.node)=_asn1_add_static_node(ASN1_ETYPE_INTEGER|CONST_LIST);
                                         _asn1_set_down((yyval.node),(yyvsp[(3) 
- (4)].node));}
     break;
 
   case 35:
-
-/* Line 1806 of yacc.c  */
+/* Line 1792 of yacc.c  */
 #line 222 "ASN1.y"
     {(yyval.node)=_asn1_add_static_node(ASN1_ETYPE_INTEGER);}
     break;
 
   case 36:
-
-/* Line 1806 of yacc.c  */
+/* Line 1792 of yacc.c  */
 #line 224 "ASN1.y"
     {(yyval.node)=_asn1_add_static_node(ASN1_ETYPE_INTEGER|CONST_MIN_MAX);
                                          
_asn1_set_down((yyval.node),_asn1_add_static_node(ASN1_ETYPE_SIZE));
@@ -1977,37 +1925,32 @@ yyreduce:
     break;
 
   case 37:
-
-/* Line 1806 of yacc.c  */
+/* Line 1792 of yacc.c  */
 #line 230 "ASN1.y"
     {(yyval.node)=_asn1_add_static_node(ASN1_ETYPE_BOOLEAN);}
     break;
 
   case 38:
-
-/* Line 1806 of yacc.c  */
+/* Line 1792 of yacc.c  */
 #line 233 "ASN1.y"
     {(yyval.node)=_asn1_add_static_node(ASN1_ETYPE_UTC_TIME);}
     break;
 
   case 39:
-
-/* Line 1806 of yacc.c  */
+/* Line 1792 of yacc.c  */
 #line 234 "ASN1.y"
     {(yyval.node)=_asn1_add_static_node(ASN1_ETYPE_GENERALIZED_TIME);}
     break;
 
   case 40:
-
-/* Line 1806 of yacc.c  */
+/* Line 1792 of yacc.c  */
 #line 237 "ASN1.y"
     {(yyval.node)=_asn1_add_static_node(ASN1_ETYPE_SIZE|CONST_1_PARAM);
                                      _asn1_set_value((yyval.node),(yyvsp[(3) - 
(4)].str),strlen((yyvsp[(3) - (4)].str))+1);}
     break;
 
   case 41:
-
-/* Line 1806 of yacc.c  */
+/* Line 1792 of yacc.c  */
 #line 240 "ASN1.y"
     {(yyval.node)=_asn1_add_static_node(ASN1_ETYPE_SIZE|CONST_MIN_MAX);
                                      _asn1_set_value((yyval.node),(yyvsp[(3) - 
(7)].str),strlen((yyvsp[(3) - (7)].str))+1);
@@ -2015,172 +1958,149 @@ yyreduce:
     break;
 
   case 42:
-
-/* Line 1806 of yacc.c  */
+/* Line 1792 of yacc.c  */
 #line 245 "ASN1.y"
     {(yyval.node)=(yyvsp[(1) - (1)].node);}
     break;
 
   case 43:
-
-/* Line 1806 of yacc.c  */
+/* Line 1792 of yacc.c  */
 #line 246 "ASN1.y"
     {(yyval.node)=(yyvsp[(2) - (3)].node);}
     break;
 
   case 44:
-
-/* Line 1806 of yacc.c  */
+/* Line 1792 of yacc.c  */
 #line 249 "ASN1.y"
     {(yyval.node)=_asn1_add_static_node(ASN1_ETYPE_GENERALSTRING);}
     break;
 
   case 45:
-
-/* Line 1806 of yacc.c  */
+/* Line 1792 of yacc.c  */
 #line 250 "ASN1.y"
     {(yyval.node)=_asn1_add_static_node(ASN1_ETYPE_GENERALSTRING|CONST_SIZE);
                                          
_asn1_set_down((yyval.node),(yyvsp[(2) - (2)].node));}
     break;
 
   case 46:
-
-/* Line 1806 of yacc.c  */
+/* Line 1792 of yacc.c  */
 #line 254 "ASN1.y"
     
{(yyval.node)=_asn1_add_static_node(ASN1_ETYPE_NUMERIC_STRING|CONST_UNIVERSAL);}
     break;
 
   case 47:
-
-/* Line 1806 of yacc.c  */
+/* Line 1792 of yacc.c  */
 #line 255 "ASN1.y"
     {(yyval.node)=_asn1_add_static_node(ASN1_ETYPE_NUMERIC_STRING|CONST_SIZE);
                                          
_asn1_set_down((yyval.node),(yyvsp[(2) - (2)].node));}
     break;
 
   case 48:
-
-/* Line 1806 of yacc.c  */
+/* Line 1792 of yacc.c  */
 #line 259 "ASN1.y"
     {(yyval.node)=_asn1_add_static_node(ASN1_ETYPE_IA5_STRING);}
     break;
 
   case 49:
-
-/* Line 1806 of yacc.c  */
+/* Line 1792 of yacc.c  */
 #line 260 "ASN1.y"
     {(yyval.node)=_asn1_add_static_node(ASN1_ETYPE_IA5_STRING|CONST_SIZE);
                                          
_asn1_set_down((yyval.node),(yyvsp[(2) - (2)].node));}
     break;
 
   case 50:
-
-/* Line 1806 of yacc.c  */
+/* Line 1792 of yacc.c  */
 #line 264 "ASN1.y"
     {(yyval.node)=_asn1_add_static_node(ASN1_ETYPE_TELETEX_STRING);}
     break;
 
   case 51:
-
-/* Line 1806 of yacc.c  */
+/* Line 1792 of yacc.c  */
 #line 265 "ASN1.y"
     {(yyval.node)=_asn1_add_static_node(ASN1_ETYPE_TELETEX_STRING|CONST_SIZE);
                                          
_asn1_set_down((yyval.node),(yyvsp[(2) - (2)].node));}
     break;
 
   case 52:
-
-/* Line 1806 of yacc.c  */
+/* Line 1792 of yacc.c  */
 #line 269 "ASN1.y"
     {(yyval.node)=_asn1_add_static_node(ASN1_ETYPE_PRINTABLE_STRING);}
     break;
 
   case 53:
-
-/* Line 1806 of yacc.c  */
+/* Line 1792 of yacc.c  */
 #line 270 "ASN1.y"
     
{(yyval.node)=_asn1_add_static_node(ASN1_ETYPE_PRINTABLE_STRING|CONST_SIZE);
                                          
_asn1_set_down((yyval.node),(yyvsp[(2) - (2)].node));}
     break;
 
   case 54:
-
-/* Line 1806 of yacc.c  */
+/* Line 1792 of yacc.c  */
 #line 274 "ASN1.y"
     {(yyval.node)=_asn1_add_static_node(ASN1_ETYPE_UNIVERSAL_STRING);}
     break;
 
   case 55:
-
-/* Line 1806 of yacc.c  */
+/* Line 1792 of yacc.c  */
 #line 275 "ASN1.y"
     
{(yyval.node)=_asn1_add_static_node(ASN1_ETYPE_UNIVERSAL_STRING|CONST_SIZE);
                                          
_asn1_set_down((yyval.node),(yyvsp[(2) - (2)].node));}
     break;
 
   case 56:
-
-/* Line 1806 of yacc.c  */
+/* Line 1792 of yacc.c  */
 #line 279 "ASN1.y"
     {(yyval.node)=_asn1_add_static_node(ASN1_ETYPE_BMP_STRING);}
     break;
 
   case 57:
-
-/* Line 1806 of yacc.c  */
+/* Line 1792 of yacc.c  */
 #line 280 "ASN1.y"
     {(yyval.node)=_asn1_add_static_node(ASN1_ETYPE_BMP_STRING|CONST_SIZE);
                                          
_asn1_set_down((yyval.node),(yyvsp[(2) - (2)].node));}
     break;
 
   case 58:
-
-/* Line 1806 of yacc.c  */
+/* Line 1792 of yacc.c  */
 #line 284 "ASN1.y"
     {(yyval.node)=_asn1_add_static_node(ASN1_ETYPE_UTF8_STRING);}
     break;
 
   case 59:
-
-/* Line 1806 of yacc.c  */
+/* Line 1792 of yacc.c  */
 #line 285 "ASN1.y"
     {(yyval.node)=_asn1_add_static_node(ASN1_ETYPE_UTF8_STRING|CONST_SIZE);
                                          
_asn1_set_down((yyval.node),(yyvsp[(2) - (2)].node));}
     break;
 
   case 60:
-
-/* Line 1806 of yacc.c  */
+/* Line 1792 of yacc.c  */
 #line 289 "ASN1.y"
     {(yyval.node)=_asn1_add_static_node(ASN1_ETYPE_VISIBLE_STRING);}
     break;
 
   case 61:
-
-/* Line 1806 of yacc.c  */
+/* Line 1792 of yacc.c  */
 #line 290 "ASN1.y"
     {(yyval.node)=_asn1_add_static_node(ASN1_ETYPE_VISIBLE_STRING|CONST_SIZE);
                                          
_asn1_set_down((yyval.node),(yyvsp[(2) - (2)].node));}
     break;
 
   case 62:
-
-/* Line 1806 of yacc.c  */
+/* Line 1792 of yacc.c  */
 #line 294 "ASN1.y"
     {(yyval.node)=_asn1_add_static_node(ASN1_ETYPE_OCTET_STRING);}
     break;
 
   case 63:
-
-/* Line 1806 of yacc.c  */
+/* Line 1792 of yacc.c  */
 #line 295 "ASN1.y"
     {(yyval.node)=_asn1_add_static_node(ASN1_ETYPE_OCTET_STRING|CONST_SIZE);
                                            
_asn1_set_down((yyval.node),(yyvsp[(3) - (3)].node));}
     break;
 
   case 64:
-
-/* Line 1806 of yacc.c  */
+/* Line 1792 of yacc.c  */
 #line 299 "ASN1.y"
     {(yyval.node)=_asn1_add_static_node(ASN1_ETYPE_CONSTANT);
                                   _asn1_set_name((yyval.node),(yyvsp[(1) - 
(4)].str));
@@ -2188,68 +2108,59 @@ yyreduce:
     break;
 
   case 65:
-
-/* Line 1806 of yacc.c  */
+/* Line 1792 of yacc.c  */
 #line 304 "ASN1.y"
     {(yyval.node)=(yyvsp[(1) - (1)].node);}
     break;
 
   case 66:
-
-/* Line 1806 of yacc.c  */
+/* Line 1792 of yacc.c  */
 #line 305 "ASN1.y"
     {(yyval.node)=(yyvsp[(1) - (3)].node);
                                                        
_asn1_set_right(_asn1_get_last_right((yyvsp[(1) - (3)].node)),(yyvsp[(3) - 
(3)].node));}
     break;
 
   case 67:
-
-/* Line 1806 of yacc.c  */
+/* Line 1792 of yacc.c  */
 #line 309 "ASN1.y"
     {(yyval.node)=_asn1_add_static_node(ASN1_ETYPE_BIT_STRING);}
     break;
 
   case 68:
-
-/* Line 1806 of yacc.c  */
+/* Line 1792 of yacc.c  */
 #line 310 "ASN1.y"
     {(yyval.node)=_asn1_add_static_node(ASN1_ETYPE_BIT_STRING|CONST_SIZE);}
     break;
 
   case 69:
-
-/* Line 1806 of yacc.c  */
+/* Line 1792 of yacc.c  */
 #line 312 "ASN1.y"
     {(yyval.node)=_asn1_add_static_node(ASN1_ETYPE_BIT_STRING|CONST_LIST);
                                 _asn1_set_down((yyval.node),(yyvsp[(4) - 
(5)].node));}
     break;
 
   case 70:
-
-/* Line 1806 of yacc.c  */
+/* Line 1792 of yacc.c  */
 #line 317 "ASN1.y"
     {(yyval.node)=_asn1_add_static_node(ASN1_ETYPE_ENUMERATED|CONST_LIST);
                                 _asn1_set_down((yyval.node),(yyvsp[(3) - 
(4)].node));}
     break;
 
   case 71:
-
-/* Line 1806 of yacc.c  */
+/* Line 1792 of yacc.c  */
 #line 322 "ASN1.y"
     {(yyval.node)=_asn1_add_static_node(ASN1_ETYPE_OBJECT_ID);}
     break;
 
   case 72:
-
-/* Line 1806 of yacc.c  */
+/* Line 1792 of yacc.c  */
 #line 325 "ASN1.y"
     {(yyval.node)=_asn1_add_static_node(ASN1_ETYPE_IDENTIFIER);
                                        _asn1_set_value((yyval.node),(yyvsp[(1) 
- (1)].str),strlen((yyvsp[(1) - (1)].str))+1);}
     break;
 
   case 73:
-
-/* Line 1806 of yacc.c  */
+/* Line 1792 of yacc.c  */
 #line 327 "ASN1.y"
     {(yyval.node)=_asn1_add_static_node(ASN1_ETYPE_IDENTIFIER|CONST_SIZE);
                                        _asn1_set_value((yyval.node),(yyvsp[(1) 
- (2)].str),strlen((yyvsp[(1) - (2)].str))+1);
@@ -2257,155 +2168,133 @@ yyreduce:
     break;
 
   case 74:
-
-/* Line 1806 of yacc.c  */
+/* Line 1792 of yacc.c  */
 #line 330 "ASN1.y"
     {(yyval.node)=(yyvsp[(1) - (1)].node);}
     break;
 
   case 75:
-
-/* Line 1806 of yacc.c  */
+/* Line 1792 of yacc.c  */
 #line 331 "ASN1.y"
     {(yyval.node)=(yyvsp[(1) - (1)].node);}
     break;
 
   case 76:
-
-/* Line 1806 of yacc.c  */
+/* Line 1792 of yacc.c  */
 #line 332 "ASN1.y"
     {(yyval.node)=(yyvsp[(1) - (1)].node);}
     break;
 
   case 78:
-
-/* Line 1806 of yacc.c  */
+/* Line 1792 of yacc.c  */
 #line 334 "ASN1.y"
     {(yyval.node)=(yyvsp[(1) - (1)].node);}
     break;
 
   case 79:
-
-/* Line 1806 of yacc.c  */
+/* Line 1792 of yacc.c  */
 #line 335 "ASN1.y"
     {(yyval.node)=(yyvsp[(1) - (1)].node);}
     break;
 
   case 80:
-
-/* Line 1806 of yacc.c  */
+/* Line 1792 of yacc.c  */
 #line 336 "ASN1.y"
     {(yyval.node)=(yyvsp[(1) - (1)].node);}
     break;
 
   case 81:
-
-/* Line 1806 of yacc.c  */
+/* Line 1792 of yacc.c  */
 #line 337 "ASN1.y"
     {(yyval.node)=(yyvsp[(1) - (1)].node);}
     break;
 
   case 82:
-
-/* Line 1806 of yacc.c  */
+/* Line 1792 of yacc.c  */
 #line 338 "ASN1.y"
     {(yyval.node)=(yyvsp[(1) - (1)].node);}
     break;
 
   case 83:
-
-/* Line 1806 of yacc.c  */
+/* Line 1792 of yacc.c  */
 #line 339 "ASN1.y"
     {(yyval.node)=(yyvsp[(1) - (1)].node);}
     break;
 
   case 84:
-
-/* Line 1806 of yacc.c  */
+/* Line 1792 of yacc.c  */
 #line 340 "ASN1.y"
     {(yyval.node)=(yyvsp[(1) - (1)].node);}
     break;
 
   case 85:
-
-/* Line 1806 of yacc.c  */
+/* Line 1792 of yacc.c  */
 #line 341 "ASN1.y"
     {(yyval.node)=(yyvsp[(1) - (1)].node);}
     break;
 
   case 86:
-
-/* Line 1806 of yacc.c  */
+/* Line 1792 of yacc.c  */
 #line 342 "ASN1.y"
     {(yyval.node)=(yyvsp[(1) - (1)].node);}
     break;
 
   case 87:
-
-/* Line 1806 of yacc.c  */
+/* Line 1792 of yacc.c  */
 #line 343 "ASN1.y"
     {(yyval.node)=(yyvsp[(1) - (1)].node);}
     break;
 
   case 88:
-
-/* Line 1806 of yacc.c  */
+/* Line 1792 of yacc.c  */
 #line 344 "ASN1.y"
     {(yyval.node)=(yyvsp[(1) - (1)].node);}
     break;
 
   case 89:
-
-/* Line 1806 of yacc.c  */
+/* Line 1792 of yacc.c  */
 #line 345 "ASN1.y"
     {(yyval.node)=(yyvsp[(1) - (1)].node);}
     break;
 
   case 90:
-
-/* Line 1806 of yacc.c  */
+/* Line 1792 of yacc.c  */
 #line 346 "ASN1.y"
     {(yyval.node)=(yyvsp[(1) - (1)].node);}
     break;
 
   case 91:
-
-/* Line 1806 of yacc.c  */
+/* Line 1792 of yacc.c  */
 #line 347 "ASN1.y"
     {(yyval.node)=(yyvsp[(1) - (1)].node);}
     break;
 
   case 92:
-
-/* Line 1806 of yacc.c  */
+/* Line 1792 of yacc.c  */
 #line 348 "ASN1.y"
     {(yyval.node)=(yyvsp[(1) - (1)].node);}
     break;
 
   case 93:
-
-/* Line 1806 of yacc.c  */
+/* Line 1792 of yacc.c  */
 #line 349 "ASN1.y"
     {(yyval.node)=(yyvsp[(1) - (1)].node);}
     break;
 
   case 94:
-
-/* Line 1806 of yacc.c  */
+/* Line 1792 of yacc.c  */
 #line 350 "ASN1.y"
     {(yyval.node)=_asn1_add_static_node(ASN1_ETYPE_NULL);}
     break;
 
   case 95:
-
-/* Line 1806 of yacc.c  */
+/* Line 1792 of yacc.c  */
 #line 353 "ASN1.y"
     {(yyval.node)=(yyvsp[(1) - (1)].node);}
     break;
 
   case 96:
-
-/* Line 1806 of yacc.c  */
+/* Line 1792 of yacc.c  */
 #line 354 "ASN1.y"
     {(yyval.node)=_asn1_mod_type((yyvsp[(2) - (2)].node),CONST_TAG);
                                                _asn1_set_right((yyvsp[(1) - 
(2)].node),_asn1_get_down((yyval.node)));
@@ -2413,15 +2302,13 @@ yyreduce:
     break;
 
   case 97:
-
-/* Line 1806 of yacc.c  */
+/* Line 1792 of yacc.c  */
 #line 359 "ASN1.y"
     {(yyval.node)=(yyvsp[(1) - (1)].node);}
     break;
 
   case 98:
-
-/* Line 1806 of yacc.c  */
+/* Line 1792 of yacc.c  */
 #line 360 "ASN1.y"
     {(yyval.node)=_asn1_mod_type((yyvsp[(1) - (2)].node),CONST_DEFAULT);
                                                        
_asn1_set_right((yyvsp[(2) - (2)].node),_asn1_get_down((yyval.node)));
@@ -2429,53 +2316,46 @@ yyreduce:
     break;
 
   case 99:
-
-/* Line 1806 of yacc.c  */
+/* Line 1792 of yacc.c  */
 #line 363 "ASN1.y"
     {(yyval.node)=_asn1_mod_type((yyvsp[(1) - (2)].node),CONST_OPTION);}
     break;
 
   case 100:
-
-/* Line 1806 of yacc.c  */
+/* Line 1792 of yacc.c  */
 #line 366 "ASN1.y"
     {(yyval.node)=_asn1_set_name((yyvsp[(2) - (2)].node),(yyvsp[(1) - 
(2)].str));}
     break;
 
   case 101:
-
-/* Line 1806 of yacc.c  */
+/* Line 1792 of yacc.c  */
 #line 369 "ASN1.y"
     {(yyval.node)=(yyvsp[(1) - (1)].node);}
     break;
 
   case 102:
-
-/* Line 1806 of yacc.c  */
+/* Line 1792 of yacc.c  */
 #line 370 "ASN1.y"
     {(yyval.node)=(yyvsp[(1) - (3)].node);
                                                 
_asn1_set_right(_asn1_get_last_right((yyvsp[(1) - (3)].node)),(yyvsp[(3) - 
(3)].node));}
     break;
 
   case 103:
-
-/* Line 1806 of yacc.c  */
+/* Line 1792 of yacc.c  */
 #line 374 "ASN1.y"
     {(yyval.node)=_asn1_add_static_node(ASN1_ETYPE_SEQUENCE);
                                               
_asn1_set_down((yyval.node),(yyvsp[(3) - (4)].node));}
     break;
 
   case 104:
-
-/* Line 1806 of yacc.c  */
+/* Line 1792 of yacc.c  */
 #line 376 "ASN1.y"
     {(yyval.node)=_asn1_add_static_node(ASN1_ETYPE_SEQUENCE_OF);
                                               
_asn1_set_down((yyval.node),(yyvsp[(3) - (3)].node));}
     break;
 
   case 105:
-
-/* Line 1806 of yacc.c  */
+/* Line 1792 of yacc.c  */
 #line 378 "ASN1.y"
     {(yyval.node)=_asn1_add_static_node(ASN1_ETYPE_SEQUENCE_OF|CONST_SIZE);
                                             _asn1_set_right((yyvsp[(2) - 
(4)].node),(yyvsp[(4) - (4)].node));
@@ -2483,24 +2363,21 @@ yyreduce:
     break;
 
   case 106:
-
-/* Line 1806 of yacc.c  */
+/* Line 1792 of yacc.c  */
 #line 383 "ASN1.y"
     {(yyval.node)=_asn1_add_static_node(ASN1_ETYPE_SET);
                                      _asn1_set_down((yyval.node),(yyvsp[(3) - 
(4)].node));}
     break;
 
   case 107:
-
-/* Line 1806 of yacc.c  */
+/* Line 1792 of yacc.c  */
 #line 385 "ASN1.y"
     {(yyval.node)=_asn1_add_static_node(ASN1_ETYPE_SET_OF);
                                      _asn1_set_down((yyval.node),(yyvsp[(3) - 
(3)].node));}
     break;
 
   case 108:
-
-/* Line 1806 of yacc.c  */
+/* Line 1792 of yacc.c  */
 #line 387 "ASN1.y"
     {(yyval.node)=_asn1_add_static_node(ASN1_ETYPE_SET_OF|CONST_SIZE);
                                        _asn1_set_right((yyvsp[(2) - 
(4)].node),(yyvsp[(4) - (4)].node));
@@ -2508,23 +2385,20 @@ yyreduce:
     break;
 
   case 109:
-
-/* Line 1806 of yacc.c  */
+/* Line 1792 of yacc.c  */
 #line 392 "ASN1.y"
     {(yyval.node)=_asn1_add_static_node(ASN1_ETYPE_CHOICE);
                                              
_asn1_set_down((yyval.node),(yyvsp[(3) - (4)].node));}
     break;
 
   case 110:
-
-/* Line 1806 of yacc.c  */
+/* Line 1792 of yacc.c  */
 #line 396 "ASN1.y"
     {(yyval.node)=_asn1_add_static_node(ASN1_ETYPE_ANY);}
     break;
 
   case 111:
-
-/* Line 1806 of yacc.c  */
+/* Line 1792 of yacc.c  */
 #line 397 "ASN1.y"
     {(yyval.node)=_asn1_add_static_node(ASN1_ETYPE_ANY|CONST_DEFINED_BY);
                                         
_asn1_set_down((yyval.node),_asn1_add_static_node(ASN1_ETYPE_CONSTANT));
@@ -2532,22 +2406,19 @@ yyreduce:
     break;
 
   case 112:
-
-/* Line 1806 of yacc.c  */
+/* Line 1792 of yacc.c  */
 #line 402 "ASN1.y"
     {(yyval.node)=_asn1_set_name((yyvsp[(3) - (3)].node),(yyvsp[(1) - 
(3)].str));}
     break;
 
   case 113:
-
-/* Line 1806 of yacc.c  */
+/* Line 1792 of yacc.c  */
 #line 404 "ASN1.y"
     {(yyval.node)=_asn1_set_name((yyvsp[(3) - (3)].node), last_error_token);}
     break;
 
   case 114:
-
-/* Line 1806 of yacc.c  */
+/* Line 1792 of yacc.c  */
 #line 408 "ASN1.y"
     {(yyval.node)=_asn1_add_static_node(ASN1_ETYPE_OBJECT_ID|CONST_ASSIGN);
                          _asn1_set_name((yyval.node),(yyvsp[(1) - (7)].str));
@@ -2555,8 +2426,7 @@ yyreduce:
     break;
 
   case 115:
-
-/* Line 1806 of yacc.c  */
+/* Line 1792 of yacc.c  */
 #line 412 "ASN1.y"
     
{(yyval.node)=_asn1_add_static_node(ASN1_ETYPE_OBJECT_ID|CONST_ASSIGN|CONST_1_PARAM);
                          _asn1_set_name((yyval.node),(yyvsp[(1) - (6)].str));
@@ -2565,8 +2435,7 @@ yyreduce:
     break;
 
   case 116:
-
-/* Line 1806 of yacc.c  */
+/* Line 1792 of yacc.c  */
 #line 417 "ASN1.y"
     {(yyval.node)=_asn1_add_static_node(ASN1_ETYPE_INTEGER|CONST_ASSIGN);
                          _asn1_set_name((yyval.node),(yyvsp[(1) - (4)].str));
@@ -2574,37 +2443,32 @@ yyreduce:
     break;
 
   case 117:
-
-/* Line 1806 of yacc.c  */
+/* Line 1792 of yacc.c  */
 #line 422 "ASN1.y"
     {(yyval.node)=(yyvsp[(1) - (1)].node);}
     break;
 
   case 118:
-
-/* Line 1806 of yacc.c  */
+/* Line 1792 of yacc.c  */
 #line 423 "ASN1.y"
     {(yyval.node)=(yyvsp[(1) - (1)].node);}
     break;
 
   case 119:
-
-/* Line 1806 of yacc.c  */
+/* Line 1792 of yacc.c  */
 #line 426 "ASN1.y"
     {(yyval.node)=(yyvsp[(1) - (1)].node);}
     break;
 
   case 120:
-
-/* Line 1806 of yacc.c  */
+/* Line 1792 of yacc.c  */
 #line 427 "ASN1.y"
     {(yyval.node)=(yyvsp[(1) - (2)].node);
                                                           
_asn1_set_right(_asn1_get_last_right((yyvsp[(1) - (2)].node)),(yyvsp[(2) - 
(2)].node));}
     break;
 
   case 121:
-
-/* Line 1806 of yacc.c  */
+/* Line 1792 of yacc.c  */
 #line 431 "ASN1.y"
     {(yyval.node)=_asn1_add_static_node(ASN1_ETYPE_OBJECT_ID);
                                                           
_asn1_set_down((yyval.node),(yyvsp[(3) - (4)].node));
@@ -2612,39 +2476,34 @@ yyreduce:
     break;
 
   case 122:
-
-/* Line 1806 of yacc.c  */
+/* Line 1792 of yacc.c  */
 #line 434 "ASN1.y"
     {(yyval.node)=_asn1_add_static_node(ASN1_ETYPE_OBJECT_ID);
                                                           
_asn1_set_name((yyval.node),(yyvsp[(1) - (3)].str));}
     break;
 
   case 123:
-
-/* Line 1806 of yacc.c  */
+/* Line 1792 of yacc.c  */
 #line 436 "ASN1.y"
     {(yyval.node)=_asn1_add_static_node(ASN1_ETYPE_OBJECT_ID);
                                                           
_asn1_set_name((yyval.node),(yyvsp[(1) - (1)].str));}
     break;
 
   case 124:
-
-/* Line 1806 of yacc.c  */
+/* Line 1792 of yacc.c  */
 #line 460 "ASN1.y"
     {(yyval.constant)=CONST_EXPLICIT;}
     break;
 
   case 125:
-
-/* Line 1806 of yacc.c  */
+/* Line 1792 of yacc.c  */
 #line 461 "ASN1.y"
     {(yyval.constant)=CONST_IMPLICIT;}
     break;
 
 
-
-/* Line 1806 of yacc.c  */
-#line 2648 "ASN1.c"
+/* Line 1792 of yacc.c  */
+#line 2507 "ASN1.c"
       default: break;
     }
   /* User semantic actions sometimes alter yychar, and that requires
@@ -2807,7 +2666,9 @@ yyerrlab1:
       YY_STACK_PRINT (yyss, yyssp);
     }
 
+  YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN
   *++yyvsp = yylval;
+  YY_IGNORE_MAYBE_UNINITIALIZED_END
 
 
   /* Shift the error token.  */
@@ -2831,7 +2692,7 @@ yyabortlab:
   yyresult = 1;
   goto yyreturn;
 
-#if !defined(yyoverflow) || YYERROR_VERBOSE
+#if !defined yyoverflow || YYERROR_VERBOSE
 /*-------------------------------------------------.
 | yyexhaustedlab -- memory exhaustion comes here.  |
 `-------------------------------------------------*/
@@ -2873,8 +2734,7 @@ yyreturn:
 }
 
 
-
-/* Line 2067 of yacc.c  */
+/* Line 2055 of yacc.c  */
 #line 465 "ASN1.y"
 
 
@@ -3135,7 +2995,7 @@ asn1_parser2tree (const char *file, asn1_node * 
definitions,
  * @outputFileName: specify the path and the name of file that will
  *   contain the C vector definition.
  * @vectorName: specify the name of the C vector.
- * @error_desc : return the error description or an empty
+ * @error_desc: return the error description or an empty
  *   string if success.
  *
  * Function that generates a C structure from an ASN1 file.  Creates a
@@ -3301,4 +3161,3 @@ _asn1_yyerror (const char *s)
 
   return;
 }
-
diff --git a/lib/ASN1.y b/lib/ASN1.y
index 4934215..08472f4 100644
--- a/lib/ASN1.y
+++ b/lib/ASN1.y
@@ -721,7 +721,7 @@ asn1_parser2tree (const char *file, asn1_node * definitions,
  * @outputFileName: specify the path and the name of file that will
  *   contain the C vector definition.
  * @vectorName: specify the name of the C vector.
- * @error_desc : return the error description or an empty
+ * @error_desc: return the error description or an empty
  *   string if success.
  *
  * Function that generates a C structure from an ASN1 file.  Creates a
diff --git a/lib/coding.c b/lib/coding.c
index 8dd6ae0..ef2f96f 100644
--- a/lib/coding.c
+++ b/lib/coding.c
@@ -942,7 +942,7 @@ _asn1_ordering_set_of (unsigned char *der, int der_len, 
asn1_node node)
  *   pointer to memory cells already allocated.
  * @len: number of bytes of address@hidden: @address@hidden, Initialy
  *   holds the sizeof of der vector.
- * @errorDescription : return the error description or an empty
+ * @ErrorDescription: return the error description or an empty
  *   string if success.
  *
  * Creates the DER encoding for the NAME structure (inside *POINTER


hooks/post-receive
-- 
GNU libtasn1



reply via email to

[Prev in Thread] Current Thread [Next in Thread]