File Coverage

blib/lib/RADIUS/Dictionary.pm
Criterion Covered Total %
statement 6 42 14.2
branch 0 20 0.0
condition n/a
subroutine 2 12 16.6
pod 0 10 0.0
total 8 84 9.5


line stmt bran cond sub pod time code
1             package RADIUS::Dictionary;
2              
3 1     1   652 use strict;
  1         2  
  1         47  
4 1     1   5 use vars qw($VERSION);
  1         2  
  1         689  
5              
6             $VERSION = '1.0';
7              
8             sub new {
9 0     0 0   my $class = shift;
10 0           my $self = { };
11 0           bless $self, $class;
12 0 0         $self->readfile($_[0]) if defined($_[0]);
13 0           return $self;
14             }
15              
16             sub readfile {
17 0     0 0   my ($self, $filename) = @_;
18 0           my (%attr, %rattr, %val, %rval);
19              
20 0           open DICT, "<$filename";
21              
22 0           while (defined(my $l = )) {
23 0 0         next if $l =~ /^\#/;
24 0 0         next unless my @l = split /\s+/, $l;
25 0 0         if (uc($l[0]) eq "ATTRIBUTE") {
    0          
26 0 0         if (not defined $attr{$l[1]}) {
27 0           $attr{$l[1]} = [@l[2,3]];
28             }
29 0 0         if (not defined $rattr{$l[2]}) {
30 0           $rattr{$l[2]} = [@l[1,3]];
31             }
32             }
33             elsif (uc($l[0]) eq "VALUE") {
34 0 0         if (defined $attr{$l[1]}) {
35 0 0         if (not defined $val{$attr{$l[1]}->[0]}->{$l[2]}) {
36 0           $val{$attr{$l[1]}->[0]}->{$l[2]} = $l[3];
37             }
38 0 0         if (not defined $val{$attr{$l[1]}->[0]}->{$l[3]}) {
39 0           $rval{$attr{$l[1]}->[0]}->{$l[3]} = $l[2];
40             }
41             }
42             else {
43 0           warn "Warning: $filename contains value for unknown attribute ",
44             "\"$l[1]\"\n";
45             }
46             }
47             else {
48 0           warn "Warning: Weird dictionary line: $l\n";
49             }
50             }
51 0           close DICT;
52              
53 0           $self->{attr} = \%attr; $self->{rattr} = \%rattr;
  0            
54 0           $self->{val} = \%val; $self->{rval} = \%rval;
  0            
55             }
56              
57 0     0 0   sub attr_num { $_[0]->{attr}->{$_[1]}->[0]; }
58 0     0 0   sub attr_type { $_[0]->{attr}->{$_[1]}->[1]; }
59 0     0 0   sub attr_name { $_[0]->{rattr}->{$_[1]}->[0]; }
60 0     0 0   sub attr_numtype { $_[0]->{rattr}->{$_[1]}->[1]; }
61 0     0 0   sub attr_has_val { $_[0]->{val}->{$_[1]}; }
62 0     0 0   sub val_has_name { $_[0]->{rval}->{$_[1]}; }
63 0     0 0   sub val_num { $_[0]->{val}->{$_[1]}->{$_[2]}; }
64 0     0 0   sub val_name { $_[0]->{rval}->{$_[1]}->{$_[2]}; }
65              
66             1;
67             __END__