diff options
author | 2013-11-07 18:15:09 +0000 | |
---|---|---|
committer | 2013-11-07 18:15:09 +0000 | |
commit | e4ecea3280d1dee0e0f9d61720c04ad5a63f5b08 (patch) | |
tree | 0eaed440d4a3973618cb521d5d9aca0ae7c87388 | |
parent | sync (diff) | |
download | wireguard-openbsd-e4ecea3280d1dee0e0f9d61720c04ad5a63f5b08.tar.xz wireguard-openbsd-e4ecea3280d1dee0e0f9d61720c04ad5a63f5b08.zip |
add fuse_invalidate() and fuse_setup() functions.
ok tedu@
-rw-r--r-- | lib/libfuse/fuse.c | 39 | ||||
-rw-r--r-- | lib/libfuse/fuse.h | 5 |
2 files changed, 33 insertions, 11 deletions
diff --git a/lib/libfuse/fuse.c b/lib/libfuse/fuse.c index 50dd9f1080d..6d65446b8f3 100644 --- a/lib/libfuse/fuse.c +++ b/lib/libfuse/fuse.c @@ -1,4 +1,4 @@ -/* $OpenBSD: fuse.c,v 1.13 2013/11/06 19:53:20 syl Exp $ */ +/* $OpenBSD: fuse.c,v 1.14 2013/11/07 18:15:09 syl Exp $ */ /* * Copyright (c) 2013 Sylvestre Gallon <ccna.syl@gmail.com> * @@ -428,31 +428,50 @@ fuse_teardown(struct fuse *fuse, char *mp) } int -fuse_main(int argc, char **argv, const struct fuse_operations *ops, void *data) +fuse_invalidate(struct fuse *f, const char *path) +{ + return (EINVAL); +} + +struct fuse * +fuse_setup(int argc, char **argv, const struct fuse_operations *ops, + size_t size, char **mp, int *mt, void *data) { struct fuse_args args = FUSE_ARGS_INIT(argc, argv); struct fuse_chan *fc; struct fuse *fuse; - char *mp = NULL; - int mt, fg; - int error = -1; + int fg; - if (fuse_parse_cmdline(&args, &mp, &mt, &fg)) + if (fuse_parse_cmdline(&args, mp, mt, &fg)) goto err; fuse_daemonize(0); - if ((fc = fuse_mount(mp, NULL)) == NULL) + if ((fc = fuse_mount(*mp, NULL)) == NULL) goto err; - if ((fuse = fuse_new(fc, NULL, ops, sizeof(*(ops)), data)) == NULL) { + if ((fuse = fuse_new(fc, NULL, ops, size, data)) == NULL) { free(fc); goto err; } - error = fuse_loop(fuse); + return (fuse); err: if (mp) free(mp); - return (error); + return (NULL); +} + +int +fuse_main(int argc, char **argv, const struct fuse_operations *ops, void *data) +{ + struct fuse *fuse; + char *mp = NULL; + int mt; + + fuse = fuse_setup(argc, argv, ops, sizeof(*ops), &mp, &mt, data); + if (!fuse) + return (-1); + + return (fuse_loop(fuse)); } diff --git a/lib/libfuse/fuse.h b/lib/libfuse/fuse.h index ebcc4842c94..2aa9e4ae06b 100644 --- a/lib/libfuse/fuse.h +++ b/lib/libfuse/fuse.h @@ -1,4 +1,4 @@ -/* $OpenBSD: fuse.h,v 1.8 2013/11/01 18:16:22 syl Exp $ */ +/* $OpenBSD: fuse.h,v 1.9 2013/11/07 18:15:09 syl Exp $ */ /* * Copyright (c) 2013 Sylvestre Gallon <ccna.syl@gmail.com> * @@ -163,6 +163,8 @@ int fuse_version(void); int fuse_main(int, char **, const struct fuse_operations *, void *); struct fuse *fuse_new(struct fuse_chan *, struct fuse_args *, const struct fuse_operations *, size_t, void *); +struct fuse *fuse_setup(int, char **, const struct fuse_operations *, + size_t, char **, int *, void *); int fuse_parse_cmdline(struct fuse_args *, char **, int *, int *); struct fuse_chan *fuse_mount(const char *, struct fuse_args *); void fuse_remove_signal_handlers(struct fuse_session *); @@ -177,6 +179,7 @@ void fuse_unmount(const char *, struct fuse_chan *); int fuse_daemonize(int); void fuse_destroy(struct fuse *); void fuse_teardown(struct fuse *, char *); +int fuse_invalidate(struct fuse *, const char *); #ifdef __cplusplus } |