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 "system/filesys.h"
#include "ntvfs/sysdep/sys_notify.h"
#include "lib/events/events.h"
-#include "dlinklist.h"
+#include "lib/util/dlinklist.h"
+#include "param/param.h"
/* list of registered backends */
static struct sys_notify_backend *backends;
static uint32_t num_backends;
+#define NOTIFY_BACKEND "notify:backend"
+
/*
initialise a system change notify backend
*/
-struct sys_notify_context *sys_notify_init(int snum,
- TALLOC_CTX *mem_ctx,
- struct event_context *ev)
+_PUBLIC_ struct sys_notify_context *sys_notify_context_create(struct share_config *scfg,
+ TALLOC_CTX *mem_ctx,
+ struct event_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);
ctx->ev = ev;
- bname = lp_parm_string(snum, "notify", "backend");
+ bname = share_string_option(scfg, NOTIFY_BACKEND, NULL);
if (!bname) {
if (num_backends) {
bname = backends[0].name;
bits to remove ones handled by this backend. Any remaining bits will
be handled by the generic notify layer
*/
-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);
}
/*
register a notify backend
*/
-NTSTATUS sys_notify_register(struct sys_notify_backend *backend)
+_PUBLIC_ NTSTATUS sys_notify_register(struct sys_notify_backend *backend)
{
struct sys_notify_backend *b;
b = talloc_realloc(talloc_autofree_context(), backends,
num_backends++;
return NT_STATUS_OK;
}
+
+_PUBLIC_ NTSTATUS sys_notify_init(void)
+{
+ static bool initialized = false;
+ extern NTSTATUS sys_notify_inotify_init(void);
+
+ init_module_fn static_init[] = { STATIC_sys_notify_MODULES };
+
+ if (initialized) return NT_STATUS_OK;
+ initialized = true;
+
+ run_init_functions(static_init);
+
+ return NT_STATUS_OK;
+}