summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorsyl <syl@openbsd.org>2013-11-07 18:15:09 +0000
committersyl <syl@openbsd.org>2013-11-07 18:15:09 +0000
commite4ecea3280d1dee0e0f9d61720c04ad5a63f5b08 (patch)
tree0eaed440d4a3973618cb521d5d9aca0ae7c87388
parentsync (diff)
downloadwireguard-openbsd-e4ecea3280d1dee0e0f9d61720c04ad5a63f5b08.tar.xz
wireguard-openbsd-e4ecea3280d1dee0e0f9d61720c04ad5a63f5b08.zip
add fuse_invalidate() and fuse_setup() functions.
ok tedu@
-rw-r--r--lib/libfuse/fuse.c39
-rw-r--r--lib/libfuse/fuse.h5
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
}