r12205: Support 'TFS' command in conformance files
authorJelmer Vernooij <jelmer@samba.org>
Tue, 13 Dec 2005 01:56:04 +0000 (01:56 +0000)
committerGerald (Jerry) Carter <jerry@samba.org>
Wed, 10 Oct 2007 18:47:18 +0000 (13:47 -0500)
source/pidl/lib/Parse/Pidl/Ethereal/Conformance.pm
source/pidl/lib/Parse/Pidl/Ethereal/NDR.pm

index 1b550ae1e7b2ff1911fa20ee42ec90b2b3920043..12eb718586fe130ee806ff22b9cc1d2ef8c0bb00 100644 (file)
@@ -70,6 +70,10 @@ Change description for the specified header field. `field' is the hf name of the
 Code to insert when generating the specified dissector. @HF@ and 
 @PARAM@ will be substituted.
 
+=item I<TFS> hf_name "true string" "false string"
+
+Override the text shown when a bitmap boolean value is enabled or disabled.
+
 =back
 
 =head1 EXAMPLE
@@ -125,12 +129,27 @@ sub handle_type($$$$$$$$$$)
        };
 }
 
+sub handle_tfs($$$$$)
+{
+       my ($pos,$data,$hf,$trues,$falses) = @_;
+
+       unless(defined($falses)) {
+               print "$pos: error: incomplete TFS command\n";
+               return;
+       }
+
+       $data->{tfs}->{$hf} = {
+               TRUE_STRING => $trues,
+               FALSE_STRING => $falses
+       };
+}
+
 sub handle_hf_rename($$$$)
 {
        my ($pos,$data,$old,$new) = @_;
 
        unless(defined($new)) {
-               print "$pos: error incomplete HF_RENAME command\n";
+               print "$pos: error: incomplete HF_RENAME command\n";
                return;
        }
 
@@ -272,6 +291,7 @@ my %field_handlers = (
        PARAM_VALUE => \&handle_param_value, 
        HF_FIELD => \&handle_hf_field, 
        HF_RENAME => \&handle_hf_rename, 
+       TFS => \&handle_tfs,
        STRIP_PREFIX => \&handle_strip_prefix,
        PROTOCOL => \&handle_protocol,
        FIELD_DESCRIPTION => \&handle_fielddescription,
index 40767ef5358cb404be6d14f67f9d54a06a874b81..7dc94763ea7c9d2751f84c3edeede131fb0e644f 100644 (file)
@@ -203,8 +203,13 @@ sub Bitmap($$$)
                register_hf_field($hf_bitname, field2name($en), $filtername, "FT_BOOLEAN", $e->{ALIGN} * 8, "TFS(&$name\_$en\_tfs)", $ev, "");
 
                pidl_def "static const true_false_string $name\_$en\_tfs = {";
-               pidl_def "   \"$en is SET\",";
-               pidl_def "   \"$en is NOT SET\",";
+               if (defined($conformance->{tfs}->{$hf_bitname})) {
+                       pidl_def "   $conformance->{tfs}->{$hf_bitname}->{TRUE_STRING},";
+                       pidl_def "   $conformance->{tfs}->{$hf_bitname}->{FALSE_STRING},";
+               } else {
+                       pidl_def "   \"$en is SET\",";
+                       pidl_def "   \"$en is NOT SET\",";
+               }
                pidl_def "};";
                
                pidl_code "proto_tree_add_boolean(tree, $hf_bitname, tvb, offset-$e->{ALIGN}, $e->{ALIGN}, flags);";