diff options
author | Volker Lendecke <vl@samba.org> | 2015-06-26 13:36:43 +0200 |
---|---|---|
committer | Jeremy Allison <jra@samba.org> | 2015-07-10 09:35:13 +0200 |
commit | 8a58a48f8692880df7f42980c9a981d4ed08e3b7 (patch) | |
tree | 1e1a7734237b34dd3a3b09d00ef72341e01be025 /examples/libsmbclient | |
parent | b1ea9856e03c21b52c13aee29971a5326c8cd652 (diff) | |
download | samba-8a58a48f8692880df7f42980c9a981d4ed08e3b7.tar.gz |
libsmb: Implement smbc_notify
Signed-off-by: Volker Lendecke <vl@samba.org>
Reviewed-by: Jeremy Allison <jra@samba.org>
Autobuild-User(master): Jeremy Allison <jra@samba.org>
Autobuild-Date(master): Fri Jul 10 09:35:13 CEST 2015 on sn-devel-104
Diffstat (limited to 'examples/libsmbclient')
-rw-r--r-- | examples/libsmbclient/testnotify.c | 78 | ||||
-rw-r--r-- | examples/libsmbclient/wscript_build | 1 |
2 files changed, 79 insertions, 0 deletions
diff --git a/examples/libsmbclient/testnotify.c b/examples/libsmbclient/testnotify.c new file mode 100644 index 00000000000..68513af0502 --- /dev/null +++ b/examples/libsmbclient/testnotify.c @@ -0,0 +1,78 @@ +#include <sys/types.h> +#include <stdio.h> +#include <unistd.h> +#include <string.h> +#include <time.h> +#include <errno.h> +#include <libsmbclient.h> +#include <inttypes.h> +#include "get_auth_data_fn.h" + +static int notify_cb(const struct smbc_notify_callback_action *actions, + size_t num_actions, void *private_data) +{ + int *count = private_data; + size_t i; + + printf("%zu\n", num_actions); + + for (i=0; i<num_actions; i++) { + const struct smbc_notify_callback_action *a = &actions[i]; + printf("%s: %"PRIu32"\n", a->filename, a->action); + } + + *count -= 1; + if (*count < 0) { + return 1; + } + + return 0; +} + +int main(int argc, char * argv[]) +{ + int fd; + int ret; + int debug = 0; + int saved_errno; + char path[2048]; + char * p; + int count = 1000; + + smbc_init(get_auth_data_fn, debug); + + fprintf(stdout, "Path: "); + *path = '\0'; + fgets(path, sizeof(path) - 1, stdin); + if (strlen(path) == 0) { + return 0; + } + + p = path + strlen(path) - 1; + if (*p == '\n') { + *p = '\0'; + } + + fd = smbc_opendir(path); + if (fd < 0) { + perror("smbc_open"); + return 1; + } + + ret = smbc_notify(fd, 1, + SMBC_NOTIFY_CHANGE_SECURITY| + SMBC_NOTIFY_CHANGE_FILE_NAME, + 1000, notify_cb, &count); + if (ret < 0) { + saved_errno = errno; + } + + smbc_close(fd); + + if (ret < 0) { + errno = saved_errno; + perror("notify"); + } + + return 0; +} diff --git a/examples/libsmbclient/wscript_build b/examples/libsmbclient/wscript_build index aa39965d22a..c58a5b9e5a3 100644 --- a/examples/libsmbclient/wscript_build +++ b/examples/libsmbclient/wscript_build @@ -6,6 +6,7 @@ names = ['testsmbc', 'testacl3', 'testbrowse', 'testbrowse2', + 'testnotify', 'teststat', 'teststat2', 'teststat3', |