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.
16 #include "wvfshelpers.h"
17 #include "wvfusecbmgr.h"
24 #define CONTEXT WvStream *context
25 #define PATH WvStringParm path
30 typedef WvCallback
<void, int, WvStringParm
> WvFSMessageCB
;
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
,
57 virtual int fs_statfs(CONTEXT
, struct fuse_kstatfs
*fst
) = 0;
59 virtual void set_message_callback(WvFSMessageCB cb
) = 0;