param: use generate_param.py to generate loadparm_ctx_table.c
authorGarming Sam <garming@catalyst.net.nz>
Wed, 15 Jan 2014 04:55:56 +0000 (17:55 +1300)
committerAndrew Bartlett <abartlet@samba.org>
Wed, 12 Feb 2014 00:17:14 +0000 (13:17 +1300)
Pair-programmed-with: Andrew Bartlett <abartlet@samba.org>
Signed-off-by: Garming Sam <garming@catalyst.net.nz>
Reviewed-by: Andrew Bartlett <abartlet@samba.org>
Reviewed-by: Michael Adam <obnox@samba.org>
script/mks3param_ctx_table.pl [deleted file]
source3/param/wscript_build

diff --git a/script/mks3param_ctx_table.pl b/script/mks3param_ctx_table.pl
deleted file mode 100644 (file)
index 22efc88..0000000
+++ /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) = <INPUTFILE>;
-    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 = <FH>) {
-               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);
index 90af52bbd4cb0e655d35f8dd815f45728701e1ad..34a906edcb9f37fad6c53fc5898218770cb46f91 100644 (file)
@@ -15,10 +15,10 @@ bld.SAMBA_GENERATOR('s3_param_proto_h',
                     rule='${PYTHON} ${SRC[0].abspath(env)} --file ${SRC[1].abspath(env)} --output ${TGT} --mode=S3PROTO')
 
 bld.SAMBA_GENERATOR('s3_loadparm_ctx_table_c',
-                    source= ' ../../script/mks3param_ctx_table.pl ../../lib/param/loadparm.c ../../lib/param/param_functions.c',
+                    source= '../../script/generate_param.py ../../docs-xml/smbdotconf/parameters.all.xml',
                     target='loadparm_ctx_table.c',
                     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=S3TABLE')
 
 bld.SAMBA3_PYTHON('pys3param',
                   source='pyparam.c',