diff options
author | Andrew Tridgell <tridge@samba.org> | 2003-11-23 06:28:12 +0000 |
---|---|---|
committer | Andrew Tridgell <tridge@samba.org> | 2003-11-23 06:28:12 +0000 |
commit | 800d3e0134b72135fa359fa5a239f1c68adf4ca1 (patch) | |
tree | 1f0e6cafab8f1d62dee9a3796443ab18b6394fe1 /source4/build | |
parent | 02dc7536dd625e0cdee23a96e66cb41b407cdba8 (diff) | |
download | samba-800d3e0134b72135fa359fa5a239f1c68adf4ca1.tar.gz samba-800d3e0134b72135fa359fa5a239f1c68adf4ca1.tar.bz2 samba-800d3e0134b72135fa359fa5a239f1c68adf4ca1.zip |
ooh, this is fun!
I have recoded the core dcerpc packet structures (all the PDUs etc) in
terms of IDL, which means we now use pidl to generate all the code for
handling the most basic dcerpc packets. This is not normally possible
as it isn't completely valid NDR, but pidl has a number of extensions
that make it quite easy.
This also means we get the server side dcerpc
marshalling/unmarshalling code for free.
(This used to be commit 92bcad02587c3c1b31b523ee9fa46658a6cef9ff)
Diffstat (limited to 'source4/build')
-rw-r--r-- | source4/build/pidl/idl.gram | 2 | ||||
-rw-r--r-- | source4/build/pidl/parser.pm | 6 |
2 files changed, 6 insertions, 2 deletions
diff --git a/source4/build/pidl/idl.gram b/source4/build/pidl/idl.gram index 1e19ae6cf1..b79c771f98 100644 --- a/source4/build/pidl/idl.gram +++ b/source4/build/pidl/idl.gram @@ -166,7 +166,7 @@ type : text: /[\w\s\..?-]*/ -text2: /[\|\w\s\*\>\/\..?-]*/ +text2: /[\|\w\s,\*\>\/\..?-]*/ anytext: text2 '(' <commit> anytext ')' anytext {{ "$item[1]($item[4])$item[6]" }} diff --git a/source4/build/pidl/parser.pm b/source4/build/pidl/parser.pm index df05d7fdba..41976cfdc9 100644 --- a/source4/build/pidl/parser.pm +++ b/source4/build/pidl/parser.pm @@ -74,7 +74,7 @@ sub find_size_var($$) return $size; } - if ($size =~ /ndr->/) { + if ($size =~ /ndr->|\(/) { return $size; } @@ -371,6 +371,10 @@ sub ParseElementPrintScalar($$) my($var_prefix) = shift; my $cprefix = util::c_push_prefix($e); + if (util::has_property($e, "noprint")) { + return; + } + if (defined $e->{VALUE}) { pidl "\tndr_print_$e->{TYPE}(ndr, \"$e->{NAME}\", $e->{VALUE});\n"; } elsif (util::has_direct_buffers($e)) { |