Annotation of embedaddon/pciutils/maint/gen-zone, revision 1.1

1.1     ! misho       1: #!/usr/bin/perl -w
        !             2: # Create a DNS zone with PCI ID records
        !             3: 
        !             4: use strict;
        !             5: 
        !             6: my %ids = ();
        !             7: my %comments = ();
        !             8: foreach our $file (@ARGV) {
        !             9:        my $fn = ($file =~ /\.gz$/) ? "zcat $file |" : ($file =~ /\.bz2$/) ? "bzcat $file |" : $file;
        !            10:        open F, $fn or die "Unable to open $file: $!";
        !            11:        my @id = ();
        !            12:        my $comm = "";
        !            13:        sub err($) {
        !            14:                print STDERR "Error in $file, line $.: @_\n";
        !            15:                exit 1;
        !            16:        }
        !            17:        while (<F>) {
        !            18:                if (/^(#.*)/) {
        !            19:                        $comm .= $_;
        !            20:                        next;
        !            21:                }
        !            22:                chomp;
        !            23:                if (my ($indent, $id, $ignored, $name) = /^(\t*)(([0-9a-fA-Z]+ ?)*)((  |\t|$)\s*(.*))$/) {
        !            24:                        my $depth = length $indent;
        !            25:                        $depth <= @id or err "Mismatched indentation";
        !            26:                        @id = (@id[0..$depth-1], $id);
        !            27:                        my $i = join(":", @id);
        !            28:                        if ($i ne "") {
        !            29:                                !exists $ids{$i} or die "ID $i defined twice";
        !            30:                                $ids{$i} = $name;
        !            31:                                $comments{$i} = $comm if $comm;
        !            32:                        }
        !            33:                } elsif (!/^$/) {
        !            34:                        err "Parse error";
        !            35:                }
        !            36:                $comm = "";
        !            37:        }
        !            38:        close F;
        !            39: }
        !            40: 
        !            41: sub esc($) {
        !            42:        my ($x) = @_;
        !            43:        $x =~ s/^\s+//;
        !            44:        $x =~ s/"/\\"/g;
        !            45:        return $x;
        !            46: }
        !            47: 
        !            48: foreach my $i (keys %ids) {
        !            49:        my $j = join(".", reverse split(/[: ]/, $i));
        !            50:        print "$j.pci\tTXT \"i=", esc($ids{$i}), "\"\n";
        !            51:        # print "$j.pci\tTXT \"c=", esc($comments{$i}), "\"\n"
        !            52: }

FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>