aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorLev Walkin <vlm@lionet.info>2005-03-17 22:43:48 +0000
committerLev Walkin <vlm@lionet.info>2005-03-17 22:43:48 +0000
commitd7f237b856514230b72706976d1f564c91f3d313 (patch)
treeedc2d2a7b230af0dff6a8821b140672a528e7857
parentcc3e13d4fa0c37168d8caef2d35430af4f73933c (diff)
support for RFC 3852
-rwxr-xr-xexamples/crfc2asn1.pl28
1 files changed, 18 insertions, 10 deletions
diff --git a/examples/crfc2asn1.pl b/examples/crfc2asn1.pl
index df0a099f..c22f81dd 100755
--- a/examples/crfc2asn1.pl
+++ b/examples/crfc2asn1.pl
@@ -33,22 +33,29 @@ while(<>) {
# The least correct way to find the start of ASN
# definition.
#
- if(/^[ \t]*END[ \t]*$/) {
+ if(/^[ \t]*END[ \t]*(--.*)?$/) {
print STDERR
"Missed an ASN.1 grammar before line ". $. ."?\n";
- unlink($currentFile) or die "Can't remove $!";
- print STDERR "Removed $currentFile";
exit(1);
}
+ my $modName = ''; # ASN.1 module name
my $rfcid = '';
$rfcid = $1 . '-' if($ARGV =~ /([a-z0-9]+)/i);
- if(/^[ \t]+([A-Za-z0-9-]+).*DEFINITIONS.*::=/) {
- $currentFname = $rfcid . $1 . ".asn1";
+ if(/^[ \t]+([A-Z][A-Za-z0-9-]*).*DEFINITIONS.*::=/) {
+ $modName = $1;
+ $currentFname = $rfcid . $modName . ".asn1";
$inasn = 1;
- } elsif(/^[ \t]*([A-Za-z0-9-]+).*{.*iso/) {
- $currentFname = $rfcid . $1 . ".asn1";
+ } elsif(/^[ \t]*([A-Z][A-Za-z0-9-]*).*{[ \t]*iso/
+ || /^[ \t]*{[ \t]*iso/) {
+ $modName = $1;
+ unless(length($modName)) {
+ next unless $prevLine =~
+ /^[ \t]*([A-Z][A-Za-z0-9-]*)[ \t]*$/;
+ $modName = $1;
+ }
+ $currentFname = $rfcid . $modName . ".asn1";
my @a = ($_);
my $i;
for($i = 0; $i < 8; $i++) {
@@ -62,10 +69,11 @@ while(<>) {
}
next unless $inasn;
} else {
+ $prevLine = $_;
next;
}
- print STDERR "Found $1 at line $. => $currentFname\n";
+ print STDERR "Found $modName at line $.\n=> Saving as $currentFname\n";
open(O, "> $currentFname") or die "Can't open $currentFname";
select(O);
@@ -77,7 +85,7 @@ while(<>) {
print "\n";
}
- if(/^[ \t]*END[ \t]*$/) {
+ if(/^[ \t]*END[ \t]*(--.*)?$/) {
print;
select(STDOUT);
close(O);
@@ -92,7 +100,7 @@ while(<>) {
# ASN.1 extraction and do not want to alter the ASN.1 specs.
#
if(
-/^(.*)((UniversalString|BMPString|UTF8String)\s+::=\s+\[[A-Z]+\s\d+\]\sIMPLICIT\sOCTET\sSTRING)(.*)$/ms
+/^([ \t]*)((UniversalString|BMPString|UTF8String)\s+::=\s+\[[A-Z]+\s\d+\]\sIMPLICIT\sOCTET\sSTRING)(.*)$/ms
) {
print "\n-- Legacy redefinition of $3 removed by $0:\n";
print "$1-- $2 -- $4";