diff options
-rwxr-xr-x | source4/script/build_smb_interfaces.pl | 54 |
1 files changed, 49 insertions, 5 deletions
diff --git a/source4/script/build_smb_interfaces.pl b/source4/script/build_smb_interfaces.pl index 31309220c1..cc3a352987 100755 --- a/source4/script/build_smb_interfaces.pl +++ b/source4/script/build_smb_interfaces.pl @@ -1,10 +1,54 @@ #!/usr/bin/perl +# +# Create ejs interfaces for structures in a C header file +# -my $idl_file = shift; +use File::Basename; +my $file = shift; +my $basename = basename($file, ".h"); require smb_interfaces; -my $idl_parser = new smb_interfaces; -$parse = $idl_parser->parse($idl_file); +my $parser = new smb_interfaces; +$header = $parser->parse($file); -use Data::Dumper; -print Dumper($parse); +#use Data::Dumper; +#print Dumper($header); + +# Create header + +open(FILE, ">ejs_${basename}.h"); + +print FILE "/* header auto-generated by build_smb_interfaces.pl */\n\n"; + +print FILE "#ifndef _ejs_${basename}_h\n"; +print FILE "#define _ejs_${basename}_h\n\n"; + +foreach my $x (@{$header}) { + print FILE "NTSTATUS ejs_push_$x->{NAME}(struct ejs_rpc *, struct MprVar *, const char *, const uint32_t *);\n"; + print FILE "NTSTATUS ejs_pull_$x->{NAME}(struct ejs_rpc *, struct MprVar *, const char *, const uint32_t *);\n"; +} + +print FILE "#endif\n"; + +close(FILE); + +# Create file + +open(FILE, ">ejs_${basename}.c"); + +print FILE "/* EJS wrapper functions auto-generated by build_smb_interfaces.pl */\n\n"; + +# Top level functions + +foreach my $x (@{$header}) { + print FILE "NTSTATUS ejs_push_$x->{NAME}(struct ejs_rpc *, struct MprVar *, const char *, const uint32_t *)\n"; + print FILEq "{\n"; + print FILE "\treturn NT_STATUS_OK;\n"; + print FILE "}\n\n"; + print FILE "NTSTATUS ejs_pull_$x->{NAME}(struct ejs_rpc *, struct MprVar *, const char *, const uint32_t *)\n"; + print FILE "{\n"; + print FILE "\treturn NT_STATUS_OK;\n"; + print FILE "}\n\n"; +} + +close(FILE); |