[SCM] Samba Shared Repository - branch master updated

Jelmer Vernooij jelmer at samba.org
Sat Dec 3 00:37:01 MST 2011


The branch, master has been updated
       via  05bc4de Revert making public of the samba-module library.
      from  d74b3f9 lib/util: factor out tdb_data_is_empty

http://gitweb.samba.org/?p=samba.git;a=shortlog;h=master


- Log -----------------------------------------------------------------
commit 05bc4de083b993e3db06fdb2a3e1198021526a71
Author: Jelmer Vernooij <jelmer at samba.org>
Date:   Sat Dec 3 07:03:35 2011 +0100

    Revert making public of the samba-module library.
    
    This library was tiny - containing just two public functions than were
    themselves trivial. The amount of overhead this causes isn't really worth the
    benefits of sharing the code with other projects like OpenChange. In addition, this code
    isn't really generically useful anyway, as it can only load from the module path
    set for Samba at configure time.
    
    Adding a new library was breaking the API/ABI anyway, so OpenChange had to be
    updated to cope with the new situation one way or another. I've added a simpler
    (compatible) routine for loading modules to OpenChange, which is less than 100 lines of code.
    
    Autobuild-User: Jelmer Vernooij <jelmer at samba.org>
    Autobuild-Date: Sat Dec  3 08:36:33 CET 2011 on sn-devel-104

-----------------------------------------------------------------------

Summary of changes:
 auth/gensec/gensec_start.c                   |   14 +++---
 auth/gensec/wscript_build                    |    2 +-
 buildtools/wafsamba/wafsamba.py              |    2 +-
 lib/util/ABI/samba-module-0.0.1.sigs         |    2 -
 lib/util/internal_module.h                   |   42 -----------------
 lib/util/{internal_module.c => modules.c}    |   55 +++++++++++++++++++----
 lib/util/samba-module.pc.in                  |   11 -----
 lib/util/samba_module.c                      |   62 --------------------------
 lib/util/{samba_module.h => samba_modules.h} |   20 ++++++--
 lib/util/wscript_build                       |   16 +-----
 source3/Makefile.in                          |    2 +-
 source3/exports/modules-darwin.syms          |    2 +-
 source3/include/includes.h                   |    2 +-
 source3/m4/aclocal.m4                        |    2 +-
 source3/modules/perfcount_test.c             |    2 +-
 source3/winbindd/idmap_ad.c                  |    2 +-
 source3/winbindd/idmap_adex/idmap_adex.c     |    2 +-
 source3/winbindd/idmap_autorid.c             |    2 +-
 source3/winbindd/idmap_hash/idmap_hash.c     |    2 +-
 source3/winbindd/idmap_rid.c                 |    2 +-
 source3/winbindd/idmap_tdb2.c                |    2 +-
 source3/wscript                              |    2 +-
 source3/wscript_build                        |    2 +-
 source4/auth/ntlm/auth.c                     |    6 +-
 source4/auth/ntlm/wscript_build              |    2 +-
 source4/ntptr/ntptr_base.c                   |   10 ++--
 source4/ntvfs/ntvfs_base.c                   |   12 +++---
 source4/ntvfs/posix/pvfs_acl.c               |   12 +++---
 source4/ntvfs/posix/wscript_build            |    2 +-
 source4/ntvfs/sysdep/sys_lease.c             |    6 +-
 source4/ntvfs/sysdep/sys_notify.c            |    6 +-
 source4/ntvfs/wscript_build                  |    2 +-
 source4/param/share.c                        |    6 +-
 source4/param/wscript_build                  |    2 +-
 source4/rpc_server/dcerpc_server.c           |   12 +++---
 source4/smbd/process_model.c                 |   12 +++---
 source4/smbd/server.c                        |   12 +++---
 source4/smbd/wscript_build                   |    2 +-
 source4/torture/smbtorture.c                 |    4 +-
 source4/torture/torture.c                    |   10 ++--
 40 files changed, 145 insertions(+), 225 deletions(-)
 delete mode 100644 lib/util/ABI/samba-module-0.0.1.sigs
 delete mode 100644 lib/util/internal_module.h
 rename lib/util/{internal_module.c => modules.c} (79%)
 delete mode 100644 lib/util/samba-module.pc.in
 delete mode 100644 lib/util/samba_module.c
 rename lib/util/{samba_module.h => samba_modules.h} (70%)


Changeset truncated at 500 lines:

diff --git a/auth/gensec/gensec_start.c b/auth/gensec/gensec_start.c
index a48606f..c38b970 100644
--- a/auth/gensec/gensec_start.c
+++ b/auth/gensec/gensec_start.c
@@ -29,7 +29,7 @@
 #include "auth/gensec/gensec.h"
 #include "lib/param/param.h"
 #include "lib/util/tsort.h"
-#include "lib/util/samba_module.h"
+#include "lib/util/samba_modules.h"
 
 /* the list of currently registered GENSEC backends */
 static struct gensec_security_ops **generic_security_ops;
@@ -878,19 +878,19 @@ _PUBLIC_ NTSTATUS gensec_init(void)
 #define _MODULE_PROTO(init) extern NTSTATUS init(void);
 #ifdef STATIC_gensec_MODULES
 	STATIC_gensec_MODULES_PROTO;
-	samba_module_init_fn static_init[] = { STATIC_gensec_MODULES };
+	init_module_fn static_init[] = { STATIC_gensec_MODULES };
 #else
-	samba_module_init_fn *static_init = NULL;
+	init_module_fn *static_init = NULL;
 #endif
-	samba_module_init_fn *shared_init;
+	init_module_fn *shared_init;
 
 	if (initialized) return NT_STATUS_OK;
 	initialized = true;
 
-	shared_init = samba_module_init_fns_for_subsystem(NULL, "gensec");
+	shared_init = load_samba_modules(NULL, "gensec");
 
-	samba_module_init_fns_run(static_init);
-	samba_module_init_fns_run(shared_init);
+	run_init_functions(static_init);
+	run_init_functions(shared_init);
 
 	talloc_free(shared_init);
 
diff --git a/auth/gensec/wscript_build b/auth/gensec/wscript_build
index 6514a06..e3e9372 100644
--- a/auth/gensec/wscript_build
+++ b/auth/gensec/wscript_build
@@ -3,7 +3,7 @@ bld.SAMBA_LIBRARY('gensec',
 	source='gensec.c gensec_start.c',
 	pc_files='gensec.pc',
 	autoproto='gensec_toplevel_proto.h',
-	public_deps='tevent-util samba-util errors LIBPACKET auth_system_session samba-module gensec_util',
+	public_deps='tevent-util samba-util errors LIBPACKET auth_system_session samba-modules gensec_util',
 	public_headers='gensec.h',
 	deps='com_err',
 	vnum='0.0.1'
diff --git a/buildtools/wafsamba/wafsamba.py b/buildtools/wafsamba/wafsamba.py
index 5e4f40d..fd72cf3 100644
--- a/buildtools/wafsamba/wafsamba.py
+++ b/buildtools/wafsamba/wafsamba.py
@@ -390,7 +390,7 @@ def SAMBA_MODULE(bld, modname, source,
                  includes='',
                  subsystem=None,
                  init_function=None,
-                 module_init_name='samba_module_init',
+                 module_init_name='samba_init_module',
                  autoproto=None,
                  autoproto_extra_source='',
                  cflags='',
diff --git a/lib/util/ABI/samba-module-0.0.1.sigs b/lib/util/ABI/samba-module-0.0.1.sigs
deleted file mode 100644
index ee728d4..0000000
--- a/lib/util/ABI/samba-module-0.0.1.sigs
+++ /dev/null
@@ -1,2 +0,0 @@
-samba_module_init_fns_for_subsystem: samba_module_init_fn *(TALLOC_CTX *, const char *)
-samba_module_init_fns_run: bool (samba_module_init_fn *)
diff --git a/lib/util/internal_module.h b/lib/util/internal_module.h
deleted file mode 100644
index 9cbddea..0000000
--- a/lib/util/internal_module.h
+++ /dev/null
@@ -1,42 +0,0 @@
-/*
-   Unix SMB/CIFS implementation.
-   Handling of idle/exit events
-   Copyright (C) Stefan (metze) Metzmacher	2003
-   Copyright (C) Andrew Bartlett 2011
-
-   This program is free software; you can redistribute it and/or modify
-   it under the terms of the GNU General Public License as published by
-   the Free Software Foundation; either version 3 of the License, or
-   (at your option) any later version.
-
-   This program is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-   GNU General Public License for more details.
-
-   You should have received a copy of the GNU General Public License
-   along with this program.  If not, see <http://www.gnu.org/licenses/>.
-*/
-
-#ifndef _INTERNAL_MODULES_H
-#define _INTERNAL_MODULES_H
-
-#include "lib/util/samba_module.h"
-
-/**
- * Obtain the init function from a shared library file.
- *
- * The handle to dlclose() in case of error is returns in *handle if handle is not NULL
- */
-samba_module_init_fn load_module(const char *path, bool is_probe, void **handle);
-
-int smb_load_modules(const char **modules);
-NTSTATUS smb_probe_module(const char *subsystem, const char *module);
-
-/**
- * Obtain list of init functions from the modules in the specified
- * directory
- */
-samba_module_init_fn *load_modules(TALLOC_CTX *mem_ctx, const char *path);
-
-#endif /* _INTERNAL_MODULES_H */
diff --git a/lib/util/internal_module.c b/lib/util/modules.c
similarity index 79%
rename from lib/util/internal_module.c
rename to lib/util/modules.c
index a10d1f3..52a04be 100644
--- a/lib/util/internal_module.c
+++ b/lib/util/modules.c
@@ -21,14 +21,14 @@
 
 #include "includes.h"
 #include "dynconfig/dynconfig.h"
-#include "lib/util/internal_module.h"
+#include "lib/util/samba_modules.h"
 #include "system/filesys.h"
 #include "system/dir.h"
 
 /**
  * Obtain the init function from a shared library file
  */
-samba_module_init_fn load_module(const char *path, bool is_probe, void **handle_out)
+init_module_fn load_module(const char *path, bool is_probe, void **handle_out)
 {
 	void *handle;
 	void *init_fn;
@@ -57,7 +57,7 @@ samba_module_init_fn load_module(const char *path, bool is_probe, void **handle_
 		return NULL;
 	}
 
-	init_fn = (samba_module_init_fn)dlsym(handle, SAMBA_MODULE_INIT);
+	init_fn = (init_module_fn)dlsym(handle, SAMBA_INIT_MODULE);
 
 	/* we could check dlerror() to determine if it worked, because
            dlsym() can validly return NULL, but what would we do with
@@ -65,7 +65,7 @@ samba_module_init_fn load_module(const char *path, bool is_probe, void **handle_
 
 	if (init_fn == NULL) {
 		DEBUG(0, ("Unable to find %s() in %s: %s\n",
-			  SAMBA_MODULE_INIT, path, dlerror()));
+			  SAMBA_INIT_MODULE, path, dlerror()));
 		DEBUG(1, ("Loading module '%s' failed\n", path));
 		dlclose(handle);
 		return NULL;
@@ -75,20 +75,20 @@ samba_module_init_fn load_module(const char *path, bool is_probe, void **handle_
 		*handle_out = handle;
 	}
 
-	return (samba_module_init_fn)init_fn;
+	return (init_module_fn)init_fn;
 }
 
 /**
  * Obtain list of init functions from the modules in the specified
  * directory
  */
-samba_module_init_fn *load_modules(TALLOC_CTX *mem_ctx, const char *path)
+static init_module_fn *load_modules(TALLOC_CTX *mem_ctx, const char *path)
 {
 	DIR *dir;
 	struct dirent *entry;
 	char *filename;
 	int success = 0;
-	samba_module_init_fn *ret = talloc_array(mem_ctx, samba_module_init_fn, 2);
+	init_module_fn *ret = talloc_array(mem_ctx, init_module_fn, 2);
 
 	ret[0] = NULL;
 
@@ -106,7 +106,7 @@ samba_module_init_fn *load_modules(TALLOC_CTX *mem_ctx, const char *path)
 
 		ret[success] = load_module(filename, true, NULL);
 		if (ret[success]) {
-			ret = talloc_realloc(mem_ctx, ret, samba_module_init_fn, success+2);
+			ret = talloc_realloc(mem_ctx, ret, init_module_fn, success+2);
 			success++;
 			ret[success] = NULL;
 		}
@@ -119,13 +119,50 @@ samba_module_init_fn *load_modules(TALLOC_CTX *mem_ctx, const char *path)
 	return ret;
 }
 
+/**
+ * Run the specified init functions.
+ *
+ * @return true if all functions ran successfully, false otherwise
+ */
+bool run_init_functions(init_module_fn *fns)
+{
+	int i;
+	bool ret = true;
+
+	if (fns == NULL)
+		return true;
+
+	for (i = 0; fns[i]; i++) { ret &= (bool)NT_STATUS_IS_OK(fns[i]()); }
+
+	return ret;
+}
+
+/**
+ * Load the initialization functions from DSO files for a specific subsystem.
+ *
+ * Will return an array of function pointers to initialization functions
+ */
+
+init_module_fn *load_samba_modules(TALLOC_CTX *mem_ctx, const char *subsystem)
+{
+	char *path = modules_path(mem_ctx, subsystem);
+	init_module_fn *ret;
+
+	ret = load_modules(mem_ctx, path);
+
+	talloc_free(path);
+
+	return ret;
+}
+
+
 /* Load a dynamic module.  Only log a level 0 error if we are not checking
    for the existence of a module (probling). */
 
 static NTSTATUS do_smb_load_module(const char *module_name, bool is_probe)
 {
 	void *handle;
-	samba_module_init_fn init;
+	init_module_fn init;
 	NTSTATUS status;
 
 	init = load_module(module_name, is_probe, &handle);
diff --git a/lib/util/samba-module.pc.in b/lib/util/samba-module.pc.in
deleted file mode 100644
index 8f22988..0000000
--- a/lib/util/samba-module.pc.in
+++ /dev/null
@@ -1,11 +0,0 @@
-prefix=@prefix@
-exec_prefix=@exec_prefix@
-libdir=@libdir@
-includedir=@includedir@
-
-Name: samba-modules
-Description: Samba module loading utility functions
-Requires: talloc
-Version: 0.0.1
-Libs: @LIB_RPATH@ -L${libdir} -lsamba-modules
-Cflags: -I${includedir}  -DHAVE_IMMEDIATE_STRUCTURES=1
diff --git a/lib/util/samba_module.c b/lib/util/samba_module.c
deleted file mode 100644
index b15885b..0000000
--- a/lib/util/samba_module.c
+++ /dev/null
@@ -1,62 +0,0 @@
-/*
-   Unix SMB/CIFS implementation.
-   Samba utility functions
-   Copyright (C) Jelmer Vernooij 2002-2003,2005-2007
-   Copyright (C) Stefan (metze) Metzmacher 2003
-   Copyright (C) Andrew Bartlett 2011
-
-   This program is free software; you can redistribute it and/or modify
-   it under the terms of the GNU General Public License as published by
-   the Free Software Foundation; either version 3 of the License, or
-   (at your option) any later version.
-
-   This program is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-   GNU General Public License for more details.
-
-   You should have received a copy of the GNU General Public License
-   along with this program.  If not, see <http://www.gnu.org/licenses/>.
-*/
-
-#include "includes.h"
-#include "dynconfig/dynconfig.h"
-#include "lib/util/internal_module.h"
-#include "system/filesys.h"
-#include "system/dir.h"
-
-/**
- * Run the specified init functions.
- *
- * @return true if all functions ran successfully, false otherwise
- */
-bool samba_module_init_fns_run(samba_module_init_fn *fns)
-{
-	int i;
-	bool ret = true;
-
-	if (fns == NULL)
-		return true;
-
-	for (i = 0; fns[i]; i++) { ret &= (bool)NT_STATUS_IS_OK(fns[i]()); }
-
-	return ret;
-}
-
-/**
- * Load the initialization functions from DSO files for a specific subsystem.
- *
- * Will return an array of function pointers to initialization functions
- */
-
-samba_module_init_fn *samba_module_init_fns_for_subsystem(TALLOC_CTX *mem_ctx, const char *subsystem)
-{
-	char *path = modules_path(mem_ctx, subsystem);
-	samba_module_init_fn *ret;
-
-	ret = load_modules(mem_ctx, path);
-
-	talloc_free(path);
-
-	return ret;
-}
diff --git a/lib/util/samba_module.h b/lib/util/samba_modules.h
similarity index 70%
rename from lib/util/samba_module.h
rename to lib/util/samba_modules.h
index fa9a6b9..5eb2a0d 100644
--- a/lib/util/samba_module.h
+++ b/lib/util/samba_modules.h
@@ -22,28 +22,38 @@
 #define _SAMBA_MODULES_H
 
 /* Module support */
-typedef NTSTATUS (*samba_module_init_fn) (void);
+typedef NTSTATUS (*init_module_fn) (void);
 
-NTSTATUS samba_module_init(void);
+NTSTATUS samba_init_module(void);
 
 /* this needs to be a string which is not in the C library. We
    previously used "init_module", but that meant that modules which
    did not define this function ended up calling the C library
    function init_module() which makes a system call */
-#define SAMBA_MODULE_INIT "samba_module_init"
+#define SAMBA_INIT_MODULE "samba_init_module"
+
+/**
+ * Obtain the init function from a shared library file.  
+ *
+ * The handle to dlclose() in case of error is returns in *handle if handle is not NULL
+ */
+init_module_fn load_module(const char *path, bool is_probe, void **handle);
 
 /**
  * Run the specified init functions.
  *
  * @return true if all functions ran successfully, false otherwise
  */
-bool samba_module_init_fns_run(samba_module_init_fn *fns);
+bool run_init_functions(init_module_fn *fns);
 
 /**
  * Load the initialization functions from DSO files for a specific subsystem.
  *
  * Will return an array of function pointers to initialization functions
  */
-samba_module_init_fn *samba_module_init_fns_for_subsystem(TALLOC_CTX *mem_ctx, const char *subsystem);
+init_module_fn *load_samba_modules(TALLOC_CTX *mem_ctx, const char *subsystem);
+
+int smb_load_modules(const char **modules);
+NTSTATUS smb_probe_module(const char *subsystem, const char *module);
 
 #endif /* _SAMBA_MODULES_H */
diff --git a/lib/util/wscript_build b/lib/util/wscript_build
index 63a898a..1dc65fa 100755
--- a/lib/util/wscript_build
+++ b/lib/util/wscript_build
@@ -17,21 +17,11 @@ bld.SAMBA_LIBRARY('samba-util',
                   pc_files='samba-util.pc'
                   )
 
-bld.SAMBA_LIBRARY('samba-module',
-		  source='samba_module.c',
-		  deps='errors samba-util samba-internal-module',
-		  local_include=False,
-                  public_headers='samba_module.h',
-                  vnum='0.0.1',
-                  abi_directory='ABI',
-                  abi_match='samba_module_*',
-                  pc_files='samba-module.pc')
-
-bld.SAMBA_LIBRARY('samba-internal-module',
-		  source='internal_module.c',
+bld.SAMBA_LIBRARY('samba-modules',
+		  source='modules.c',
 		  deps='errors samba-util',
 		  local_include=False,
-                  private_library=True)
+		  private_library=True)
 
 bld.SAMBA_LIBRARY('asn1util',
                   source='asn1.c',
diff --git a/source3/Makefile.in b/source3/Makefile.in
index 3cdf9b6..0d89c14 100644
--- a/source3/Makefile.in
+++ b/source3/Makefile.in
@@ -470,7 +470,7 @@ LIB_OBJ = $(LIBSAMBAUTIL_OBJ) $(UTIL_OBJ) $(CRYPTO_OBJ) $(LIBTSOCKET_OBJ) \
 	  ../lib/util/charset/charset_macosxfs.o intl/lang_tdb.o \
 	  lib/conn_tdb.o lib/adt_tree.o lib/gencache.o \
 	  lib/sessionid_tdb.o \
-	  ../lib/util/internal_module.o ../lib/util/samba_module.o lib/events.o @LIBTEVENT_OBJ0@ \
+	  ../lib/util/modules.o lib/events.o @LIBTEVENT_OBJ0@ \
 	  @CCAN_OBJ@ \
 	  lib/server_contexts.o \
 	  lib/server_prefork.o \
diff --git a/source3/exports/modules-darwin.syms b/source3/exports/modules-darwin.syms
index b4bd6f3..276543b 100644
--- a/source3/exports/modules-darwin.syms
+++ b/source3/exports/modules-darwin.syms
@@ -1 +1 @@
-_samba_module_init
+_samba_init_module
diff --git a/source3/include/includes.h b/source3/include/includes.h
index 94ff318..562b64c 100644
--- a/source3/include/includes.h
+++ b/source3/include/includes.h
@@ -524,7 +524,7 @@ typedef char fstring[FSTRING_LEN];
 #include "smb.h"
 #include "../lib/util/byteorder.h"
 
-#include "../lib/util/internal_module.h"
+#include "../lib/util/samba_modules.h"
 #include "../lib/util/talloc_stack.h"
 #include "../lib/util/smb_threads.h"
 #include "../lib/util/smb_threads_internal.h"
diff --git a/source3/m4/aclocal.m4 b/source3/m4/aclocal.m4
index 8eef69d..a4db42e 100644
--- a/source3/m4/aclocal.m4
+++ b/source3/m4/aclocal.m4
@@ -25,7 +25,7 @@ AC_DEFUN(SMB_MODULE,
 	fi
 	
 	if test x"$DEST" = xSHARED; then
-		AC_DEFINE([$1][_init], [samba_module_init], [Whether to build $1 as shared module])
+		AC_DEFINE([$1][_init], [samba_init_module], [Whether to build $1 as shared module])
 		$4_MODULES="$$4_MODULES $3"
 		AC_MSG_RESULT([shared])
 		[$6]
diff --git a/source3/modules/perfcount_test.c b/source3/modules/perfcount_test.c
index 5365362..8d17ee5 100644
--- a/source3/modules/perfcount_test.c
+++ b/source3/modules/perfcount_test.c
@@ -381,7 +381,7 @@ static struct smb_perfcount_handlers perfcount_test_handlers = {
 	perfcount_test_end
 };
 
-NTSTATUS samba_module_init(void)
+NTSTATUS samba_init_module(void)
 {
 	return smb_register_perfcounter(SMB_PERFCOUNTER_INTERFACE_VERSION,
 					"pc_test", &perfcount_test_handlers);
diff --git a/source3/winbindd/idmap_ad.c b/source3/winbindd/idmap_ad.c
index 83ed03b..e19bf68 100644
--- a/source3/winbindd/idmap_ad.c
+++ b/source3/winbindd/idmap_ad.c
@@ -1094,7 +1094,7 @@ static struct nss_info_methods nss_sfu20_methods = {
  Initialize the plugins
  ***********************************************************************/
 
-NTSTATUS samba_module_init(void)
+NTSTATUS samba_init_module(void)
 {
 	static NTSTATUS status_idmap_ad = NT_STATUS_UNSUCCESSFUL;
 	static NTSTATUS status_nss_rfc2307 = NT_STATUS_UNSUCCESSFUL;
diff --git a/source3/winbindd/idmap_adex/idmap_adex.c b/source3/winbindd/idmap_adex/idmap_adex.c
index e274784..7440d5c 100644
--- a/source3/winbindd/idmap_adex/idmap_adex.c
+++ b/source3/winbindd/idmap_adex/idmap_adex.c
@@ -383,7 +383,7 @@ static struct nss_info_methods adex_nss_methods = {
  against the idmap and nss_info interfaces being in a half-registered
  state.
  **********************************************************************/
-NTSTATUS samba_module_init(void)
+NTSTATUS samba_init_module(void)
 {
 	static NTSTATUS idmap_status = NT_STATUS_UNSUCCESSFUL;
 	static NTSTATUS nss_status = NT_STATUS_UNSUCCESSFUL;
diff --git a/source3/winbindd/idmap_autorid.c b/source3/winbindd/idmap_autorid.c
index 8d32f0e..1a88fd4 100644


-- 
Samba Shared Repository


More information about the samba-cvs mailing list