diff options
author | Michael Mann <mmann78@netscape.net> | 2013-07-06 02:52:16 +0000 |
---|---|---|
committer | Michael Mann <mmann78@netscape.net> | 2013-07-06 02:52:16 +0000 |
commit | 9822a1f00a9fbd0b1e1387b4fbe9104b0262743b (patch) | |
tree | 6e84b9f2f51d41ede057a3eaf5acc2ef0103eb1a /tools/checkfiltername.pl | |
parent | 56db3a238e6258df0396bce6b8b21acf2056c57b (diff) | |
download | wireshark-9822a1f00a9fbd0b1e1387b4fbe9104b0262743b.tar.gz |
Add support for filterable expert info fields. Statistics don't separate out the expert info fields from the hf_ fields because we're really just looking for display filter name errors, regardless of source.
svn path=/trunk/; revision=50398
Diffstat (limited to 'tools/checkfiltername.pl')
-rwxr-xr-x | tools/checkfiltername.pl | 39 |
1 files changed, 39 insertions, 0 deletions
diff --git a/tools/checkfiltername.pl b/tools/checkfiltername.pl index cf738b0bdb..4708710d8d 100755 --- a/tools/checkfiltername.pl +++ b/tools/checkfiltername.pl @@ -54,6 +54,7 @@ my @elements; my @elements_dup; my @protocols; my %filters; +my %expert_filters; my @acceptedprefixes = ("dcerpc-"); my @asn1automatedfilelist; my @dcerpcautomatedfilelist; @@ -79,6 +80,11 @@ my $state; # "s_header_field_info_entry_name", # "s_header_field_info_entry_abbrev", # "s_header_field_info_entry_abbrev_end", +# "s_start_expert", +# "s_in_ei_register_info", +# "s_ei_register_info_entry", +# "s_ei_register_info_entry_start", +# "s_ei_register_info_entry_abbrev_end", # "s_nofields" my $restofline; @@ -228,6 +234,10 @@ sub printprevfile { foreach (sort keys %filters) { checkprotoabbrev ($filters{$_}, $_); } + + foreach (sort keys %expert_filters) { + checkprotoabbrev ($expert_filters{$_}, $_); + } $count_ele = @elements; $count_dup = @elements_dup; @@ -335,6 +345,7 @@ while (<>) { $noperiod = 0; $linenumber = 1; %filters = ( ); + %expert_filters = ( ); @protocols = ( ); @elements = ( ); @elements_dup = ( ); @@ -452,6 +463,10 @@ while (<>) { $restofline = $2; $state = "s_start"; $debug>1 && print "$linenumber $state\n"; + } elsif ($restofline =~ /\s*static\s*ei_register_info\s*(\w+)\[\](.*)/) { + $restofline = $2; + $state = "s_start_expert"; + $debug>1 && print "$linenumber $state\n"; } elsif (($state eq "s_start") && ($restofline =~ /\W+{(.*)/)) { $restofline = $1; $state = "s_in_hf_register_info"; @@ -496,6 +511,30 @@ while (<>) { $restofline = $1; $state = "s_in_hf_register_info"; $debug>1 && print "$linenumber $state\n"; + } elsif (($state eq "s_start_expert") && ($restofline =~ /\W+{(.*)/)) { + $restofline = $1; + $state = "s_in_ei_register_info"; + $debug>1 && print "$linenumber $state\n"; + } elsif (($state eq "s_in_ei_register_info") && ($restofline =~ /\W+{(.*)/)) { + $restofline = $1; + $state = "s_ei_register_info_entry"; + $debug>1 && print "$linenumber $state\n"; + } elsif (($state eq "s_in_ei_register_info") && ($restofline =~ /\s*};(.*)/)) { + $restofline = $1; + $state = "s_unknown"; + } elsif (($state eq "s_ei_register_info_entry") && ($restofline =~ /\s*{(.*)/)) { + $restofline = $1; + $state = "s_ei_register_info_entry_start"; + $debug>1 && print "$linenumber $state\n"; + } elsif (($state eq "s_ei_register_info_entry_start") && ($restofline =~ /\"([^\"]*)\"\s*,(.*)/)) { + $restofline = $2; + $debug>1 && print "$linenumber ei_register_info_entry_abbrev: $1\n"; + $expert_filters{$linenumber} = $1; + $state = "s_ei_register_info_entry_abbrev_end"; + } elsif (($state eq "s_ei_register_info_entry_abbrev_end") && ($restofline =~ /[^}]*}(.*)/)) { + $restofline = $1; + $state = "s_in_ei_register_info"; + $debug>1 && print "$linenumber $state\n"; } else { $more_tokens = 0; } |