#!/usr/bin/perl # # Create ejs interfaces for structures in a C header file # use File::Basename; my $file = shift; my $basename = basename($file, ".h"); require smb_interfaces; my $parser = new smb_interfaces; $header = $parser->parse($file); #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);