diff options
-rw-r--r-- | lib/param/wscript_build | 6 | ||||
-rw-r--r-- | script/mks3param.pl | 193 | ||||
-rw-r--r-- | source3/param/wscript_build | 2 |
3 files changed, 4 insertions, 197 deletions
diff --git a/lib/param/wscript_build b/lib/param/wscript_build index c0b612bfcba..256dfcbdd4c 100644 --- a/lib/param/wscript_build +++ b/lib/param/wscript_build @@ -18,11 +18,11 @@ bld.SAMBA_GENERATOR('param_local.h', group='build_source', rule='${PYTHON} ${SRC[0].abspath(env)} --file ${SRC[1].abspath(env)} --output ${TGT} --mode=PARAMDEFS --scope=LOCAL') -bld.SAMBA_GENERATOR('s3_param_h', - source= ' ../../script/mks3param.pl loadparm.c param_functions.c', +bld.SAMBA_GENERATOR('s3_param.h', + source= '../../script/generate_param.py ../../docs-xml/smbdotconf/parameters.all.xml', target='s3_param.h', group='build_source', - rule='${PERL} ${SRC[0].abspath(env)} ${SRC[1].abspath(env)} ${SRC[2].abspath(env)} --file ${TGT}') + rule='${PYTHON} ${SRC[0].abspath(env)} --file ${SRC[1].abspath(env)} --output ${TGT} --mode=S3PARAM') bld.SAMBA_GENERATOR('param_global.h', source= '../../script/generate_param.py ../../docs-xml/smbdotconf/parameters.all.xml', diff --git a/script/mks3param.pl b/script/mks3param.pl deleted file mode 100644 index 799958c0b0d..00000000000 --- a/script/mks3param.pl +++ /dev/null @@ -1,193 +0,0 @@ -#!/usr/bin/perl -# Generate loadparm interfaces tables for Samba3/Samba4 integration -# by Andrew Bartlett -# based on mkproto.pl Written by Jelmer Vernooij -# based on the original mkproto.sh by Andrew Tridgell - -use strict; - -# don't use warnings module as it is not portable enough -# use warnings; - -use Getopt::Long; -use File::Basename; -use File::Path; - -##################################################################### -# read a file into a string - -my $file = undef; -my $public_define = undef; -my $_public = ""; -my $_private = ""; -my $public_data = \$_public; -my $builddir = "."; -my $srcdir = "."; - -sub public($) -{ - my ($d) = @_; - $$public_data .= $d; -} - -sub usage() -{ - print "Usage: mks3param.pl [options] [c files]\n"; - print "OPTIONS:\n"; - print " --srcdir=path Read files relative to this directory\n"; - print " --builddir=path Write file relative to this directory\n"; - print " --help Print this help message\n\n"; - exit 0; -} - -GetOptions( - 'file=s' => sub { my ($f,$v) = @_; $file = $v; }, - 'srcdir=s' => sub { my ($f,$v) = @_; $srcdir = $v; }, - 'builddir=s' => sub { my ($f,$v) = @_; $builddir = $v; }, - 'help' => \&usage -) or exit(1); - -sub normalize_define($$) -{ - my ($define, $file) = @_; - - if (not defined($define) and defined($file)) { - $define = "__" . uc($file) . "__"; - $define =~ tr{./}{__}; - $define =~ tr{\-}{_}; - } elsif (not defined($define)) { - $define = '_S3_PARAM_H_'; - } - - return $define; -} - -$public_define = normalize_define($public_define, $file); - -sub file_load($) -{ - my($filename) = @_; - local(*INPUTFILE); - open(INPUTFILE, $filename) or return undef; - my($saved_delim) = $/; - undef $/; - my($data) = <INPUTFILE>; - close(INPUTFILE); - $/ = $saved_delim; - return $data; -} - -sub print_header($$) -{ - my ($file, $header_name) = @_; - $file->("#ifndef $header_name\n"); - $file->("#define $header_name\n\n"); - $file->("/* This file was automatically generated by mks3param.pl. DO NOT EDIT */\n\n"); - $file->("struct loadparm_s3_helpers\n"); - $file->("{\n"); - $file->("\tconst char * (*get_parametric)(struct loadparm_service *, const char *type, const char *option);\n"); - $file->("\tstruct parm_struct * (*get_parm_struct)(const char *param_name);\n"); - $file->("\tvoid * (*get_parm_ptr)(struct loadparm_service *service, struct parm_struct *parm);\n"); - $file->("\tstruct loadparm_service * (*get_service)(const char *service_name);\n"); - $file->("\tstruct loadparm_service * (*get_default_loadparm_service)(void);\n"); - $file->("\tstruct loadparm_service * (*get_servicebynum)(int snum);\n"); - $file->("\tint (*get_numservices)(void);\n"); - $file->("\tbool (*load)(const char *filename);\n"); - $file->("\tbool (*set_cmdline)(const char *pszParmName, const char *pszParmValue);\n"); - $file->("\tvoid (*dump)(FILE *f, bool show_defaults, int maxtoprint);\n"); -} - -sub print_footer($$) -{ - my ($file, $header_name) = @_; - $file->("};"); - $file->("\n#endif /* $header_name */\n\n"); -} - -sub handle_loadparm($$) -{ - my ($file,$line) = @_; - - # Local parameters don't need the ->s3_fns because the struct - # loadparm_service is shared and lpcfg_service() checks the ->s3_fns - # hook - # - # STRING isn't handled as we do not yet have a way to pass in a memory context nor - # do we have a good way of dealing with the % macros yet. - - if ($line =~ /^FN_(GLOBAL)_(CONST_STRING|BOOL|bool|CHAR|INTEGER|LIST)\((\w+),.*\)/o) { - my $scope = $1; - my $type = $2; - my $name = $3; - - my %tmap = ( - "BOOL" => "bool ", - "CONST_STRING" => "const char *", - "STRING" => "const char *", - "INTEGER" => "int ", - "CHAR" => "char ", - "LIST" => "const char **", - ); - - $file->("\t$tmap{$type} (*$name)(void);\n"); - } -} - -sub process_file($$) -{ - my ($file, $filename) = @_; - - $filename =~ s/\.o$/\.c/g; - - if ($filename =~ /^\//) { - open(FH, "<$filename") or die("Failed to open $filename"); - } elsif (!open(FH, "< $builddir/$filename")) { - open(FH, "< $srcdir/$filename") || die "Failed to open $filename"; - } - - my $comment = undef; - my $incomment = 0; - while (my $line = <FH>) { - if ($line =~ /^\/\*\*/) { - $comment = ""; - $incomment = 1; - } - - if ($incomment) { - $comment .= $line; - if ($line =~ /\*\//) { - $incomment = 0; - } - } - - # these are ordered for maximum speed - next if ($line =~ /^\s/); - - next unless ($line =~ /\(/); - - next if ($line =~ /^\/|[;]/); - - if ($line =~ /^FN_/) { - handle_loadparm($file, $line); - } - next; - } - - close(FH); -} - - -print_header(\&public, $public_define); - -process_file(\&public, $_) foreach (@ARGV); -print_footer(\&public, $public_define); - -if (not defined($file)) { - print STDOUT $$public_data; -} - -mkpath(dirname($file), 0, 0755); -open(PUBLIC, ">$file") or die("Can't open `$file': $!"); -print PUBLIC "$$public_data"; -close(PUBLIC); - diff --git a/source3/param/wscript_build b/source3/param/wscript_build index f0c6ddae843..90af52bbd4c 100644 --- a/source3/param/wscript_build +++ b/source3/param/wscript_build @@ -6,7 +6,7 @@ bld.SAMBA3_SUBSYSTEM('PARAM_UTIL', bld.SAMBA3_SUBSYSTEM('LOADPARM_CTX', source='loadparm_ctx.c', - deps='''talloc s3_param_h param''') + deps='''talloc s3_param.h param''') bld.SAMBA_GENERATOR('s3_param_proto_h', source= '../../script/generate_param.py ../../docs-xml/smbdotconf/parameters.all.xml', |