From 2bf17a9d75fed68dd41c770ea9e0c284599f1a82 Mon Sep 17 00:00:00 2001 From: Garming Sam Date: Wed, 15 Jan 2014 17:55:56 +1300 Subject: param: use generate_param.py to generate loadparm_ctx_table.c Pair-programmed-with: Andrew Bartlett Signed-off-by: Garming Sam Reviewed-by: Andrew Bartlett Reviewed-by: Michael Adam --- script/mks3param_ctx_table.pl | 139 ------------------------------------------ 1 file changed, 139 deletions(-) delete mode 100644 script/mks3param_ctx_table.pl (limited to 'script') diff --git a/script/mks3param_ctx_table.pl b/script/mks3param_ctx_table.pl deleted file mode 100644 index 22efc88ca63..00000000000 --- a/script/mks3param_ctx_table.pl +++ /dev/null @@ -1,139 +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 file_load($) -{ - my($filename) = @_; - local(*INPUTFILE); - open(INPUTFILE, $filename) or return undef; - my($saved_delim) = $/; - undef $/; - my($data) = ; - close(INPUTFILE); - $/ = $saved_delim; - return $data; -} - -sub print_header($) -{ - my ($file) = @_; - $file->("/* This file was automatically generated by mks3param_ctx.pl. DO NOT EDIT */\n\n"); - $file->("static const struct loadparm_s3_helpers s3_fns =\n"); - $file->("{\n"); - $file->("\t.get_parametric = lp_parm_const_string_service,\n"); - $file->("\t.get_parm_struct = lp_get_parameter,\n"); - $file->("\t.get_parm_ptr = lp_parm_ptr,\n"); - $file->("\t.get_service = lp_service_for_s4_ctx,\n"); - $file->("\t.get_servicebynum = lp_servicebynum_for_s4_ctx,\n"); - $file->("\t.get_default_loadparm_service = lp_default_loadparm_service,\n"); - $file->("\t.get_numservices = lp_numservices,\n"); - $file->("\t.load = lp_load_for_s4_ctx,\n"); - $file->("\t.set_cmdline = lp_set_cmdline,\n"); - $file->("\t.dump = lp_dump,\n"); -} - -sub print_footer($) -{ - my ($file) = @_; - $file->("};"); -} - -sub handle_loadparm($$) -{ - my ($file,$line) = @_; - - # STRING isn't handled here, as we still don't know what to do with the substituted vars */ - # LOCAL also isn't handled here - if ($line =~ /^FN_(GLOBAL)_(CONST_STRING|BOOL|bool|CHAR|INTEGER|LIST)\((\w+),.*\)/o) { - my $scope = $1; - my $type = $2; - my $name = $3; - - $file->("\t.$name = lp_$name,\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 = ) { - if ($line =~ /^FN_/) { - handle_loadparm($file, $line); - } - next; - } - - close(FH); -} - - -print_header(\&public); - -process_file(\&public, $_) foreach (@ARGV); -print_footer(\&public); - -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); -- cgit v1.2.1