1
0
mirror of https://github.com/samba-team/samba.git synced 2025-01-11 05:18:09 +03:00

r12620: Get rid of automatically generated lists of init functions of subsystems.

This allows Samba libraries to be used by other projects (and parts of
Samba to be built as shared libraries).
This commit is contained in:
Jelmer Vernooij 2005-12-30 22:46:16 +00:00 committed by Gerald (Jerry) Carter
parent d0dc0ffa31
commit 44f0aba715
31 changed files with 58 additions and 89 deletions

View File

@ -943,9 +943,14 @@ const struct gensec_critical_sizes *gensec_interface_version(void)
*/
NTSTATUS gensec_init(void)
{
static BOOL initialized = False;
init_module_fn static_init[] = STATIC_GENSEC_MODULES;
init_module_fn *shared_init = load_samba_modules(NULL, "gensec");
if (initialized) return NT_STATUS_OK;
initialized = False;
run_init_functions(static_init);
run_init_functions(shared_init);

View File

@ -20,7 +20,6 @@ my $section_types = {
"LDFLAGS" => "list",
},
"SUBSYSTEM" => {
"INIT_FUNCTION" => "string",
"OBJ_FILES" => "list",
"REQUIRED_SUBSYSTEMS" => "list",
@ -64,7 +63,6 @@ my $section_types = {
"MINOR_VERSION" => "string",
"RELEASE_VERSION" => "string",
"INIT_FUNCTION" => "string",
"OBJ_FILES" => "list",
"DESCRIPTION" => "string",

View File

@ -24,39 +24,8 @@ sub _prepare_smb_build_h($)
{
my $depend = shift;
my @defines = ();
my %declared = ();
my $output = "";
#
# loop over all binaries
#
foreach my $key (values %{$depend}) {
next if ($key->{TYPE} ne "BINARY");
my $NAME = $key->{NAME};
my $DEFINE = ();
my $name = lc($NAME);
#
# Static modules
#
$DEFINE->{COMMENT} = "BINARY $NAME INIT";
$DEFINE->{KEY} = $name . "_init_subsystems";
$DEFINE->{VAL} = "do { \\\n";
foreach my $subkey (@{$key->{SUBSYSTEM_INIT_FUNCTIONS}}) {
next if defined($declared{$subkey});
$output .= "NTSTATUS $subkey(void);\n";
$declared{$subkey} = 1;
}
foreach my $subkey (@{$key->{SUBSYSTEM_INIT_FUNCTIONS}}) {
$DEFINE->{VAL} .= "\t\tif (NT_STATUS_IS_ERR($subkey())) exit(1); \\\n";
}
$DEFINE->{VAL} .= "\t} while(0)";
push(@defines,$DEFINE);
}
foreach my $key (values %{$depend}) {
my $DEFINE = ();
next if ($key->{TYPE} ne "LIBRARY" and $key->{TYPE} ne "SUBSYSTEM");

View File

@ -33,7 +33,7 @@
#include "dlinklist.h"
#include "system/readline.h"
#include "pstring.h"
#include "smb_build.h"
#include "auth/gensec/gensec.h"
static struct smbcli_state *cli;
static int port = 0;
@ -3402,7 +3402,7 @@ static void remember_query_host(const char *arg,
}
}
smbclient_init_subsystems;
gensec_init();
if(poptPeekArg(pc)) {
pstrcpy(service,poptGetArg(pc));

View File

@ -24,7 +24,6 @@
#include "librpc/gen_ndr/ndr_mgmt.h"
#include "gtk/common/gtk-smb.h"
#include "auth/gensec/gensec.h"
#include "smb_build.h"
/*
* Show:
@ -461,7 +460,7 @@ static GtkWidget* create_mainwindow (void)
int main(int argc, char **argv)
{
gepdump_init_subsystems;
dcerpc_init();
lp_load();
setup_logging(argv[0], DEBUG_STDERR);

View File

@ -22,7 +22,6 @@
#include "includes.h"
#include "lib/registry/registry.h"
#include "gtk/common/gtk-smb.h"
#include "smb_build.h"
static GtkTreeStore *store_keys;
static GtkListStore *store_vals;
@ -964,8 +963,8 @@ int main(int argc, char *argv[])
{
int ret;
gregedit_init_subsystems;
registry_init();
lp_load();
setup_logging(argv[0], DEBUG_STDERR);

View File

@ -22,7 +22,6 @@
#include "includes.h"
#include "librpc/gen_ndr/ndr_atsvc.h"
#include "gtk/common/gtk-smb.h"
#include "smb_build.h"
static struct dcerpc_pipe *at_pipe = NULL;
static GtkWidget *mainwin;
@ -489,10 +488,9 @@ static GtkWidget*create_new_job_dialog (void)
}
int main(int argc, char **argv)
int main(int argc, char **argv)
{
gwcrontab_init_subsystems;
dcerpc_init();
lp_load();
setup_logging(argv[0], DEBUG_STDERR);

View File

@ -23,7 +23,6 @@
#include "librpc/gen_ndr/ndr_samr.h"
#include "gtk/common/select.h"
#include "gtk/common/gtk-smb.h"
#include "smb_build.h"
struct policy_handle sam_handle;
struct dcerpc_pipe *sam_pipe = NULL;
@ -398,11 +397,8 @@ static GtkWidget* create_mainwindow (void)
return mainwin;
}
int main(int argc, char **argv)
int main(int argc, char **argv)
{
gwsam_init_subsystems;
lp_load();
setup_logging(argv[0], DEBUG_STDERR);

View File

@ -1,5 +1,4 @@
[SUBSYSTEM::COM]
INIT_FUNCTION = com_init
OBJ_FILES = \
tables.o \
rot.o \

View File

@ -92,8 +92,15 @@ WERROR com_get_class_object(struct com_context *ctx, struct GUID *clsid, struct
NTSTATUS com_init(void)
{
static BOOL initialized = False;
init_module_fn static_init[] = STATIC_COM_MODULES;
init_module_fn *shared_init = load_samba_modules(NULL, "com");
init_module_fn *shared_init;
if (initialized) return NT_STATUS_OK;
initialized = True;
shared_init = load_samba_modules(NULL, "com");
run_init_functions(static_init);
run_init_functions(shared_init);

View File

@ -28,7 +28,6 @@
#include "ldb/tools/cmdline.h"
#ifdef _SAMBA_BUILD_
#include "lib/cmdline/popt_common.h"
#include "smb_build.h"
#include "auth/auth.h"
#endif
@ -72,7 +71,8 @@ struct ldb_cmdline *ldb_cmdline_process(struct ldb_context *ldb, int argc, const
};
#ifdef _SAMBA_BUILD_
ldbsearch_init_subsystems;
gensec_init();
r = ldb_register_samba_handlers(ldb);
if (r != 0) {
goto failed;

View File

@ -389,5 +389,6 @@ WERROR reg_open_remote(struct registry_context **ctx, struct cli_credentials *cr
NTSTATUS registry_rpc_init(void)
{
dcerpc_init();
return registry_register(&reg_backend_rpc);
}

View File

@ -22,7 +22,6 @@
#include "includes.h"
#include "lib/registry/registry.h"
#include "lib/cmdline/popt_common.h"
#include "smb_build.h"
int main(int argc, char **argv)
{
@ -45,8 +44,6 @@ int main(int argc, char **argv)
POPT_TABLEEND
};
regdiff_init_subsystems;
registry_init();
pc = poptGetContext(argv[0], argc, (const char **) argv, long_options,0);

View File

@ -22,7 +22,6 @@
#include "includes.h"
#include "lib/registry/registry.h"
#include "lib/cmdline/popt_common.h"
#include "smb_build.h"
int main(int argc, char **argv)
{
@ -41,8 +40,6 @@ int main(int argc, char **argv)
POPT_TABLEEND
};
regpatch_init_subsystems;
registry_init();
pc = poptGetContext(argv[0], argc, (const char **) argv, long_options,0);

View File

@ -23,7 +23,6 @@
#include "lib/registry/registry.h"
#include "lib/cmdline/popt_common.h"
#include "system/time.h"
#include "smb_build.h"
/*
* ck/cd - change key
@ -415,8 +414,6 @@ static char **reg_completion(const char *text, int start, int end)
POPT_TABLEEND
};
regshell_init_subsystems;
registry_init();
pc = poptGetContext(argv[0], argc, (const char **) argv, long_options,0);

View File

@ -22,7 +22,6 @@
#include "includes.h"
#include "lib/registry/registry.h"
#include "lib/cmdline/popt_common.h"
#include "smb_build.h"
static void print_tree(int l, struct registry_key *p, int fullpath, int novals)
{
@ -98,8 +97,6 @@ int main(int argc, char **argv)
POPT_TABLEEND
};
regtree_init_subsystems;
registry_init();
pc = poptGetContext(argv[0], argc, (const char **) argv, long_options,0);

View File

@ -302,14 +302,9 @@ librpc/gen_ndr/tables.c: librpc/gen_ndr/ndr_*.h
@$(PERL) librpc/tables.pl --output=librpc/gen_ndr/tables.c \
librpc/gen_ndr/ndr_*.h
[SUBSYSTEM::NDR_IFACE_TABLE]
NOPROTO = YES
OBJ_FILES = gen_ndr/tables.o
[SUBSYSTEM::NDR_ALL]
INIT_FUNCTION = dcerpc_table_init
OBJ_FILES = rpc/table.o
REQUIRED_SUBSYSTEMS = NDR_IFACE_TABLE NDR_AUDIOSRV NDR_ECHO NDR_DCERPC NDR_EXCHANGE \
OBJ_FILES = rpc/table.o gen_ndr/tables.o
REQUIRED_SUBSYSTEMS = NDR_AUDIOSRV NDR_ECHO NDR_DCERPC NDR_EXCHANGE \
NDR_DSBACKUP NDR_EFS NDR_MISC NDR_LSA NDR_DFS NDR_DRSUAPI \
NDR_POLICYAGENT NDR_UNIXINFO NDR_SAMR NDR_SPOOLSS NDR_WKSSVC NDR_SRVSVC NDR_ATSVC \
NDR_EVENTLOG NDR_EPMAPPER NDR_DBGIDL NDR_DSSETUP NDR_MSGSVC NDR_WINS \

View File

@ -29,6 +29,13 @@
#include "libcli/composite/composite.h"
#include "auth/gensec/gensec.h"
NTSTATUS dcerpc_init(void)
{
gensec_init();
return NT_STATUS_OK;
}
static void dcerpc_ship_next_request(struct dcerpc_connection *c);
/* destroy a dcerpc connection */

View File

@ -82,6 +82,11 @@ print TABLEC <<EOF;
NTSTATUS dcerpc_table_init(void)
{
static BOOL initialized = False;
if (initialized) return NT_STATUS_OK;
initialized = True;
$init_fns
return NT_STATUS_OK;

View File

@ -309,5 +309,8 @@ NTSTATUS dcerpc_server_remote_init(void)
return ret;
}
/* We need the full DCE/RPC interface table */
dcerpc_table_init();
return ret;
}

View File

@ -367,6 +367,8 @@ done:
*/
int ejs_rpc_init(struct MprVar *obj, const char *name)
{
dcerpc_table_init();
mprSetStringCFunction(obj, "connect", ejs_rpc_connect);
if (mprGetProperty(obj, "pipe_name", NULL) == NULL) {
mprSetVar(obj, "pipe_name", mprString(name));

View File

@ -25,7 +25,7 @@
#include "lib/appweb/ejs/ejs.h"
#include "lib/appweb/ejs/ejsInternal.h"
#include "scripting/ejs/smbcalls.h"
#include "smb_build.h"
#include "auth/gensec/gensec.h"
static EjsId eid;
@ -50,7 +50,7 @@ void ejs_exception(const char *reason)
int exit_status, i;
fault_setup(argv[0]);
smbscript_init_subsystems;
gensec_init();
mprSetCtx(mem_ctx);
lp_load();

View File

@ -33,6 +33,7 @@
#include "registry/registry.h"
#include "ntvfs/ntvfs.h"
#include "ntptr/ntptr.h"
#include "auth/gensec/gensec.h"
/*
recursively delete a directory tree
@ -217,7 +218,7 @@ static int binary_smbd_main(const char *binary_name, int argc, const char *argv[
exit(1);
}
smbd_init_subsystems;
gensec_init();
registry_init(); /* FIXME: maybe run this in the initialization function
of the winreg RPC server instead? */

View File

@ -38,6 +38,8 @@ static BOOL test_readwrite(TALLOC_CTX *mem_ctx, const char *host)
char test_data[5];
int i;
com_init();
com_init_ctx(&ctx, NULL);
dcom_client_init(ctx, cmdline_credentials);

View File

@ -24,7 +24,7 @@
#include "request.h"
#include "libcli/raw/libcliraw.h"
#include "librpc/gen_ndr/ndr_security.h"
#include "smb_build.h"
#include "auth/gensec/gensec.h"
#define NSERVERS 2
#define NINSTANCES 2
@ -2234,7 +2234,7 @@ static void usage(void)
}
}
gentest_init_subsystems;
gensec_init();
if (username_count == 0) {
usage();

View File

@ -22,7 +22,7 @@
#include "system/filesys.h"
#include "system/time.h"
#include "pstring.h"
#include "smb_build.h"
#include "auth/gensec/gensec.h"
static int numops = 1000;
static BOOL showall;
@ -550,7 +550,7 @@ static void usage(void)
servers[1] = servers[0];
}
locktest_init_subsystems;
gensec_init();
argc -= optind;
argv += optind;

View File

@ -24,7 +24,7 @@
#include "libcli/raw/libcliraw.h"
#include "system/time.h"
#include "pstring.h"
#include "smb_build.h"
#include "auth/gensec/gensec.h"
static struct cli_credentials *credentials;
static BOOL showall = False;
@ -353,7 +353,7 @@ static void usage(void)
}
}
masktest_init_subsystems;
gensec_init();
argc -= optind;
argv += optind;

View File

@ -25,7 +25,6 @@
#include "system/wait.h"
#include "system/filesys.h"
#include "ioctl.h"
#include "smb_build.h"
int torture_nprocs=4;
int torture_numops=10;
@ -2609,7 +2608,7 @@ static void max_runtime_handler(int sig)
alarm(max_runtime);
}
smbtorture_init_subsystems;
dcerpc_init();
dcerpc_table_init();

View File

@ -22,7 +22,6 @@
#include "lib/cmdline/popt_common.h"
#include "system/iconv.h"
#include "system/filesys.h"
#include "smb_build.h"
static const struct dcerpc_interface_call *find_function(
const struct dcerpc_interface_table *p,

View File

@ -44,7 +44,6 @@
#include "includes.h"
#include "utils/net/net.h"
#include "lib/cmdline/popt_common.h"
#include "smb_build.h"
/*
run a function from a function table. If not found then
@ -186,7 +185,7 @@ static int binary_net(int argc, const char **argv)
return net_usage(ctx, argc, argv);
}
net_init_subsystems;
dcerpc_init();
mem_ctx = talloc_init("net_context");
ctx = talloc(mem_ctx, struct net_context);

View File

@ -27,7 +27,6 @@
#include "lib/cmdline/popt_common.h"
#include "auth/auth.h"
#include "pstring.h"
#include "smb_build.h"
#define SQUID_BUFFER_SIZE 2010
@ -931,8 +930,7 @@ int main(int argc, const char **argv)
return 1;
}
ntlm_auth_init_subsystems;
gensec_init();
if (opt_domain == NULL) {
opt_domain = lp_workgroup();