summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rwxr-xr-xsource4/script/build_smb_interfaces.pl54
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);