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 2 of the License, or
+ 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,
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, write to the Free Software
- Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
/*
#include "includes.h"
#include "system/filesys.h"
#include "ntvfs/sysdep/sys_notify.h"
-#include "lib/events/events.h"
-#include "dlinklist.h"
-#include "build.h"
+#include <tevent.h>
+#include "../lib/util/dlinklist.h"
+#include "param/param.h"
+#include "lib/util/samba_modules.h"
/* list of registered backends */
static struct sys_notify_backend *backends;
static uint32_t num_backends;
-#define NOTIFY_BACKEND "notify-backend"
+#define NOTIFY_BACKEND "notify:backend"
/*
initialise a system change notify backend
*/
_PUBLIC_ struct sys_notify_context *sys_notify_context_create(struct share_config *scfg,
TALLOC_CTX *mem_ctx,
- struct event_context *ev)
+ struct tevent_context *ev)
{
struct sys_notify_context *ctx;
const char *bname;
}
if (ev == NULL) {
- ev = event_context_find(mem_ctx);
+ return NULL;
}
ctx = talloc_zero(mem_ctx, struct sys_notify_context);
}
for (i=0;i<num_backends;i++) {
+ char *enable_opt_name;
+ bool enabled;
+
+ enable_opt_name = talloc_asprintf(mem_ctx, "notify:%s",
+ backends[i].name);
+ enabled = share_bool_option(scfg, enable_opt_name, true);
+ talloc_free(enable_opt_name);
+
+ if (!enabled)
+ continue;
+
if (strcasecmp(backends[i].name, bname) == 0) {
bname = backends[i].name;
break;
bits to remove ones handled by this backend. Any remaining bits will
be handled by the generic notify layer
*/
-_PUBLIC_ NTSTATUS sys_notify_watch(struct sys_notify_context *ctx, struct notify_entry *e,
- sys_notify_callback_t callback, void *private, void **handle)
+_PUBLIC_ NTSTATUS sys_notify_watch(struct sys_notify_context *ctx,
+ struct notify_entry *e,
+ sys_notify_callback_t callback,
+ void *private_data, void *handle)
{
if (!ctx->notify_watch) {
return NT_STATUS_INVALID_SYSTEM_SERVICE;
}
- return ctx->notify_watch(ctx, e, callback, private, handle);
+ return ctx->notify_watch(ctx, e, callback, private_data, handle);
}
/*
_PUBLIC_ NTSTATUS sys_notify_init(void)
{
- static BOOL initialized = False;
-
- init_module_fn static_init[] = STATIC_sys_notify_MODULES;
- init_module_fn *shared_init;
+ static bool initialized = false;
+#define _MODULE_PROTO(init) extern NTSTATUS init(void);
+ STATIC_sys_notify_MODULES_PROTO;
+ init_module_fn static_init[] = { STATIC_sys_notify_MODULES };
if (initialized) return NT_STATUS_OK;
- initialized = True;
-
- shared_init = load_samba_modules(NULL, "sys_notify");
+ initialized = true;
run_init_functions(static_init);
- run_init_functions(shared_init);
-
- talloc_free(shared_init);
return NT_STATUS_OK;
}