From 5352b3892832ca4055dd01a19b2093b4902dfd4c Mon Sep 17 00:00:00 2001
From: Jelmer Vernooij <jelmer@samba.org>
Date: Tue, 13 Dec 2005 01:56:04 +0000
Subject: r12205: Support 'TFS' command in conformance files (This used to be
 commit 3241ce7ad75a2f91327815374ad698e8bedb2e73)

---
 .../pidl/lib/Parse/Pidl/Ethereal/Conformance.pm    | 22 +++++++++++++++++++++-
 source4/pidl/lib/Parse/Pidl/Ethereal/NDR.pm        |  9 +++++++--
 2 files changed, 28 insertions(+), 3 deletions(-)

(limited to 'source4/pidl/lib')

diff --git a/source4/pidl/lib/Parse/Pidl/Ethereal/Conformance.pm b/source4/pidl/lib/Parse/Pidl/Ethereal/Conformance.pm
index 1b550ae1e7..12eb718586 100644
--- a/source4/pidl/lib/Parse/Pidl/Ethereal/Conformance.pm
+++ b/source4/pidl/lib/Parse/Pidl/Ethereal/Conformance.pm
@@ -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,
diff --git a/source4/pidl/lib/Parse/Pidl/Ethereal/NDR.pm b/source4/pidl/lib/Parse/Pidl/Ethereal/NDR.pm
index 40767ef535..7dc94763ea 100644
--- a/source4/pidl/lib/Parse/Pidl/Ethereal/NDR.pm
+++ b/source4/pidl/lib/Parse/Pidl/Ethereal/NDR.pm
@@ -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);";
-- 
cgit