summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorGarming Sam <garming@catalyst.net.nz>2014-01-15 17:39:48 +1300
committerAndrew Bartlett <abartlet@samba.org>2014-02-12 13:17:13 +1300
commitb1de1abf7bf3de70faa279bd0617f48434d550e2 (patch)
tree7c6caf889add9bd7c86e2ff45e7532f28f98d33a
parent0c7ed5a8ab99aa2a5c9c40e3cea8ce1e58cfe30c (diff)
downloadsamba-b1de1abf7bf3de70faa279bd0617f48434d550e2.tar.gz
samba-b1de1abf7bf3de70faa279bd0617f48434d550e2.tar.xz
samba-b1de1abf7bf3de70faa279bd0617f48434d550e2.zip
param: use generate_param.py to generate param_global.h
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>
-rw-r--r--lib/param/wscript_build7
-rw-r--r--script/mkparamdefs.pl206
-rw-r--r--source3/param/loadparm.c2
-rw-r--r--source3/param/wscript_build6
-rwxr-xr-xsource3/wscript_build2
5 files changed, 5 insertions, 218 deletions
diff --git a/lib/param/wscript_build b/lib/param/wscript_build
index 2a32133bc1..3d216c4913 100644
--- a/lib/param/wscript_build
+++ b/lib/param/wscript_build
@@ -25,12 +25,11 @@ bld.SAMBA_GENERATOR('s3_param_h',
group='build_source',
rule='${PERL} ${SRC[0].abspath(env)} ${SRC[1].abspath(env)} ${SRC[2].abspath(env)} --file ${TGT}')
-
-bld.SAMBA_GENERATOR('param_global_h',
- source= '../../script/mkparamdefs.pl loadparm.c param_functions.c',
+bld.SAMBA_GENERATOR('param_global.h',
+ source= '../../script/generate_param.py ../../docs-xml/smbdotconf/parameters.all.xml',
target='param_global.h',
group='build_source',
- rule='${PERL} ${SRC[0].abspath(env)} ${SRC[1].abspath(env)} ${SRC[2].abspath(env)} --file ${TGT} --generate-scope=GLOBAL')
+ rule='${PYTHON} ${SRC[0].abspath(env)} --file ${SRC[1].abspath(env)} --output ${TGT} --mode=PARAMDEFS --scope=GLOBAL')
bld.SAMBA_LIBRARY('server-role',
source='loadparm_server_role.c',
diff --git a/script/mkparamdefs.pl b/script/mkparamdefs.pl
deleted file mode 100644
index 6b59230b24..0000000000
--- a/script/mkparamdefs.pl
+++ /dev/null
@@ -1,206 +0,0 @@
-#!/usr/bin/perl
-# Generate loadparm tables for loadparm.c
-# 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 = ".";
-my $generate_scope = undef;
-
-sub public($)
-{
- my ($d) = @_;
- $$public_data .= $d;
-}
-
-sub usage()
-{
- print "Usage: mkparamdefs.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 " --generate-scope=[GLOBAL|LOCAL] Filter which definitions to generate\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; },
- 'generate-scope=s' => sub { my ($f,$v) = @_; $generate_scope = $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,$generate_scope) = @_;
- $file->("#ifndef $header_name\n");
- $file->("#define $header_name\n\n");
-$file->("/* This file was automatically generated by mkparamdefs.pl. DO NOT EDIT */\n\n");
- $file->("/**\n");
- if ($generate_scope eq "GLOBAL") {
- $file->(" * This structure describes global (ie., server-wide) parameters.\n");
- $file->(" */\n");
- $file->("struct loadparm_global \n");
- $file->("{\n");
- $file->("\tTALLOC_CTX *ctx; /* Context for talloced members */\n");
- } elsif ($generate_scope eq "LOCAL") {
- $file->(" * This structure describes a single service.\n");
- $file->(" */\n");
- $file->("struct loadparm_service \n");
- $file->("{\n");
- }
-}
-
-sub print_footer($$$)
-{
- my ($file, $header_name, $generate_scope) = @_;
- $file->("LOADPARM_EXTRA_" . $generate_scope . "S\n");
- $file->("};\n");
- $file->("\n#endif /* $header_name */\n\n");
-}
-
-sub handle_loadparm($$$)
-{
- my ($file,$line,$generate_scope) = @_;
-
- my $scope;
- my $type;
- my $name;
- my $var;
-
- if ($line =~ /^FN_(GLOBAL|LOCAL)_(CONST_STRING|STRING|BOOL|bool|CHAR|INTEGER|LIST)\((\w+),(.*)\)/o) {
- $scope = $1;
- $type = $2;
- $name = $3;
- $var = $4;
- } elsif ($line =~ /^FN_(GLOBAL|LOCAL)_PARM_(CONST_STRING|STRING|BOOL|bool|CHAR|INTEGER|LIST)\((\w+),(.*)\)/o) {
- $scope = $1;
- $type = $2;
- $name = $3;
- $var = $4;
- } else {
- return;
- }
- my %tmap = (
- "BOOL" => "bool ",
- "CONST_STRING" => "char *",
- "STRING" => "char *",
- "INTEGER" => "int ",
- "CHAR" => "char ",
- "LIST" => "const char **",
- );
-
- if ($scope eq $generate_scope) {
- $file->("\t$tmap{$type} $var;\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 =~ /^static (FN_.*)/) {
- handle_loadparm($file, $1, $generate_scope);
- } elsif ($line =~ /^FN_/) {
- handle_loadparm($file, $line, $generate_scope);
- }
- next;
- }
-
- close(FH);
-}
-
-
-print_header(\&public, $public_define, $generate_scope);
-
-process_file(\&public, $_) foreach (@ARGV);
-print_footer(\&public, $public_define, $generate_scope);
-
-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/loadparm.c b/source3/param/loadparm.c
index c464861fff..be18f10921 100644
--- a/source3/param/loadparm.c
+++ b/source3/param/loadparm.c
@@ -130,7 +130,7 @@ static bool defaults_saved = false;
char *tls_crlfile; \
char *tls_dhpfile;
-#include "param/param_global.h"
+#include "lib/param/param_global.h"
static struct loadparm_global Globals;
diff --git a/source3/param/wscript_build b/source3/param/wscript_build
index 5c0635c03e..f0c6ddae84 100644
--- a/source3/param/wscript_build
+++ b/source3/param/wscript_build
@@ -8,12 +8,6 @@ bld.SAMBA3_SUBSYSTEM('LOADPARM_CTX',
source='loadparm_ctx.c',
deps='''talloc s3_param_h param''')
-bld.SAMBA_GENERATOR('s3_param_global_h',
- source= '../../script/mkparamdefs.pl loadparm.c ../../lib/param/param_functions.c',
- target='param_global.h',
- group='build_source',
- rule='${PERL} ${SRC[0].abspath(env)} ${SRC[1].abspath(env)} ${SRC[2].abspath(env)} --file ${TGT} --generate-scope=GLOBAL')
-
bld.SAMBA_GENERATOR('s3_param_proto_h',
source= '../../script/generate_param.py ../../docs-xml/smbdotconf/parameters.all.xml',
target='param_proto.h',
diff --git a/source3/wscript_build b/source3/wscript_build
index 61e7935c98..9b6111930d 100755
--- a/source3/wscript_build
+++ b/source3/wscript_build
@@ -190,7 +190,7 @@ bld.SAMBA3_SUBSYSTEM('param',
lib/sharesec.c
lib/ldap_debug_handler.c
lib/util_names.c''',
- deps='samba-util PARAM_UTIL ldap lber LOADPARM_CTX samba3core smbconf param_local_h s3_param_global_h cups''')
+ deps='samba-util PARAM_UTIL ldap lber LOADPARM_CTX samba3core smbconf param_local_h param_global.h cups''')
# this includes only the low level parse code, not stuff
# that requires knowledge of security contexts