Merged revisions 10129-10142 via svnmerge from
[wvapps.git] / funfs / wvfs.h
blobd5b2f7a5698fab5b3695ec21716a79a8702b9219
1 /*
2 * WvFUSE: A WvStreams library for FUSE.
3 * Copyright (C) 2002 Net Integration Technologies, Inc.
5 * This program can be distributed under the terms of the GNU GPL.
6 * See the file COPYING.
8 * This is the base class for a generic userspace filesystem.
9 * The majority of these functions should be overridden with your actual
10 * filesystem functions.
11 */
13 #ifndef __WVFS_H
14 #define __WVFS_H
16 #include "wvfshelpers.h"
17 #include "wvfusecbmgr.h"
19 #include <wvstring.h>
21 #include <errno.h>
22 #include <sys/stat.h>
24 #define CONTEXT WvStream *context
25 #define PATH WvStringParm path
26 #define FD int fd
28 class WvStream;
30 typedef WvCallback<void, int, WvStringParm> WvFSMessageCB;
32 class WvFS
34 public:
35 // Override these functions with your own.
36 virtual int fs_chmod(CONTEXT, PATH, mode_t mode) = 0;
37 virtual int fs_chown(CONTEXT, PATH, uid_t uid, gid_t gid) = 0;
38 virtual int fs_getattr(CONTEXT, PATH, struct fuse_attr *attr) = 0;
39 virtual int fs_getdir(CONTEXT, PATH, WvFuseDirCb &cb) = 0;
40 virtual int fs_link(CONTEXT, PATH, WvStringParm to) = 0;
41 virtual int fs_mkdir(CONTEXT, PATH, mode_t mode) = 0;
42 virtual int fs_mknod(CONTEXT, PATH, mode_t mode, dev_t rdev) = 0;
43 virtual int fs_open(CONTEXT, PATH, int flags) = 0;
44 virtual int fs_readlink(CONTEXT, PATH, char *buf, size_t size) = 0;
45 virtual int fs_rename(CONTEXT, PATH, WvStringParm to) = 0;
46 virtual int fs_rmdir(CONTEXT, PATH) = 0;
47 virtual int fs_symlink(CONTEXT, PATH, WvStringParm to) = 0;
48 virtual int fs_unlink(CONTEXT, PATH) = 0;
49 virtual int fs_utime(CONTEXT, PATH, struct utimbuf *buf) = 0;
51 virtual int fs_release(CONTEXT, FD) = 0;
52 virtual int fs_read(CONTEXT, FD, char *buf, size_t size, off_t offset) = 0;
53 virtual int fs_truncate(CONTEXT, FD, off_t size) = 0;
54 virtual int fs_write(CONTEXT, FD, const char *buf, size_t size,
55 off_t offset) = 0;
57 virtual int fs_statfs(CONTEXT, struct fuse_kstatfs *fst) = 0;
59 virtual void set_message_callback(WvFSMessageCB cb) = 0;
63 #endif // __WVFS_H