Author: jelmer
Date: 2007-04-25 16:10:54 +0000 (Wed, 25 Apr 2007)
New Revision: 22520

WebSVN: 
http://websvn.samba.org/cgi-bin/viewcvs.cgi?view=rev&root=samba&rev=22520

Log:
Fix the TYPE command.
Modified:
   branches/SAMBA_4_0/
   branches/SAMBA_4_0/source/pidl/lib/Parse/Pidl/Wireshark/Conformance.pm
   branches/SAMBA_4_0/source/pidl/lib/Parse/Pidl/Wireshark/NDR.pm
   branches/SAMBA_4_0/source/pidl/tests/wireshark-conf.pl


Changeset:

Property changes on: branches/SAMBA_4_0
___________________________________________________________________
Name: bzr:merge
...skipped...

Modified: branches/SAMBA_4_0/source/pidl/lib/Parse/Pidl/Wireshark/Conformance.pm
===================================================================
--- branches/SAMBA_4_0/source/pidl/lib/Parse/Pidl/Wireshark/Conformance.pm      
2007-04-25 15:24:01 UTC (rev 22519)
+++ branches/SAMBA_4_0/source/pidl/lib/Parse/Pidl/Wireshark/Conformance.pm      
2007-04-25 16:10:54 UTC (rev 22520)
@@ -124,6 +124,12 @@
                warning($pos, "invalid BASE_TYPE `$base_type'");
        }
 
+       $dissectorname =~ s/^\"(.*)\"$/$1/g;
+
+       if (not ($dissectorname =~ /;$/)) {
+               warning($pos, "missing semicolon");
+       }
+
        $data->{types}->{$name} = {
                NAME => $name,
                POS => $pos,

Modified: branches/SAMBA_4_0/source/pidl/lib/Parse/Pidl/Wireshark/NDR.pm
===================================================================
--- branches/SAMBA_4_0/source/pidl/lib/Parse/Pidl/Wireshark/NDR.pm      
2007-04-25 15:24:01 UTC (rev 22519)
+++ branches/SAMBA_4_0/source/pidl/lib/Parse/Pidl/Wireshark/NDR.pm      
2007-04-25 16:10:54 UTC (rev 22520)
@@ -834,6 +834,8 @@
 {
        my ($self, $type,$call,$ft,$base,$mask,$vals,$length) = @_;
 
+       return if (defined($self->{conformance}->{types}->{$type}));
+
        $self->{conformance}->{types}->{$type} = {
                NAME => $type,
                DISSECTOR_NAME => $call,

Modified: branches/SAMBA_4_0/source/pidl/tests/wireshark-conf.pl
===================================================================
--- branches/SAMBA_4_0/source/pidl/tests/wireshark-conf.pl      2007-04-25 
15:24:01 UTC (rev 22519)
+++ branches/SAMBA_4_0/source/pidl/tests/wireshark-conf.pl      2007-04-25 
16:10:54 UTC (rev 22520)
@@ -5,7 +5,7 @@
 use strict;
 use warnings;
 
-use Test::More tests => 45;
+use Test::More tests => 47;
 use FindBin qw($RealBin);
 use lib "$RealBin";
 use Util;
@@ -61,11 +61,11 @@
 test_warnings("nofile:1: Unknown command `CODE'\n",
        sub { parse_conf("CODE END\n"); } );
 
-is_deeply(parse_conf("TYPE winreg_String dissect_myminregstring FT_STRING 
BASE_DEC 0 0 2\n"), { types => { winreg_String => { 
+is_deeply(parse_conf("TYPE winreg_String dissect_myminregstring(); FT_STRING 
BASE_DEC 0 0 2\n"), { types => { winreg_String => { 
                                NAME => "winreg_String",
                                POS => { FILE => "nofile", LINE => 1 },
                                USED => 0,
-                               DISSECTOR_NAME => "dissect_myminregstring",
+                               DISSECTOR_NAME => "dissect_myminregstring();",
                                FT_TYPE => "FT_STRING",
                                BASE_TYPE => "BASE_DEC",
                                MASK => 0,
@@ -87,13 +87,13 @@
        sub { parse_conf("TYPE mytype dissector\n"); });
 
 test_warnings("nofile:1: dissector name does not contain `dissect'\n",
-       sub { parse_conf("TYPE winreg_String myminregstring FT_STRING BASE_DEC 
0 0 2\n"); });
+       sub { parse_conf("TYPE winreg_String myminregstring; FT_STRING BASE_DEC 
0 0 2\n"); });
 
 test_warnings("nofile:1: invalid FT_TYPE `BLA'\n",
-       sub { parse_conf("TYPE winreg_String dissect_myminregstring BLA 
BASE_DEC 0 0 2\n"); });
+       sub { parse_conf("TYPE winreg_String dissect_myminregstring; BLA 
BASE_DEC 0 0 2\n"); });
 
 test_warnings("nofile:1: invalid BASE_TYPE `BLOE'\n",
-       sub { parse_conf("TYPE winreg_String dissect_myminregstring FT_UINT32 
BLOE 0 0 2\n"); });
+       sub { parse_conf("TYPE winreg_String dissect_myminregstring; FT_UINT32 
BLOE 0 0 2\n"); });
 
 is_deeply(parse_conf("TFS hf_bla \"True string\" \"False String\"\n"),
                { tfs => { hf_bla => {
@@ -163,3 +163,38 @@
 
 test_errors("nofile:1: incomplete HF_FIELD command\n",
        sub { parse_conf("HF_FIELD hf_idx\n"); });
+
+is_deeply(parse_conf("TYPE winreg_String dissect_myminregstring(); FT_STRING 
BASE_DEC 0 0 0 2\n"), {
+               types => {
+                       winreg_String => {
+                               NAME => "winreg_String",
+                               POS => { FILE => "nofile", LINE => 1 },
+                               USED => 0,
+                               DISSECTOR_NAME => "dissect_myminregstring();",
+                               FT_TYPE => "FT_STRING",
+                               BASE_TYPE => "BASE_DEC",
+                               MASK => 0,
+                               VALSSTRING => 0,
+                               ALIGNMENT => 0
+                       }
+               }
+       }
+);
+
+
+is_deeply(parse_conf("TYPE winreg_String \"offset = 
dissect_myminregstring([EMAIL PROTECTED]@);\" FT_STRING BASE_DEC 0 0 0 2\n"), {
+               types => {
+                       winreg_String => {
+                               NAME => "winreg_String",
+                               POS => { FILE => "nofile", LINE => 1 },
+                               USED => 0,
+                               DISSECTOR_NAME => "offset = 
dissect_myminregstring([EMAIL PROTECTED]@);",
+                               FT_TYPE => "FT_STRING",
+                               BASE_TYPE => "BASE_DEC",
+                               MASK => 0,
+                               VALSSTRING => 0,
+                               ALIGNMENT => 0
+                       }
+               }
+       }
+);

Reply via email to