blob: 78b7c2bd0a5034963fe3764a30a90aba3282c01a [file] [log] [blame]
bigbiff bigbiff9c754052013-01-09 09:09:08 -05001/*
2 FUSE: Filesystem in Userspace
3 Copyright (C) 2001-2007 Miklos Szeredi <miklos@szeredi.hu>
4
5 This program can be distributed under the terms of the GNU LGPLv2.
6 See the file COPYING.LIB.
7*/
8
9/* these definitions provide source compatibility to prior versions.
10 Do not include this file directly! */
11
12struct fuse_lowlevel_ops_compat25 {
13 void (*init) (void *userdata);
14 void (*destroy) (void *userdata);
15 void (*lookup) (fuse_req_t req, fuse_ino_t parent, const char *name);
16 void (*forget) (fuse_req_t req, fuse_ino_t ino, unsigned long nlookup);
17 void (*getattr) (fuse_req_t req, fuse_ino_t ino,
18 struct fuse_file_info *fi);
19 void (*setattr) (fuse_req_t req, fuse_ino_t ino, struct stat *attr,
20 int to_set, struct fuse_file_info *fi);
21 void (*readlink) (fuse_req_t req, fuse_ino_t ino);
22 void (*mknod) (fuse_req_t req, fuse_ino_t parent, const char *name,
23 mode_t mode, dev_t rdev);
24 void (*mkdir) (fuse_req_t req, fuse_ino_t parent, const char *name,
25 mode_t mode);
26 void (*unlink) (fuse_req_t req, fuse_ino_t parent, const char *name);
27 void (*rmdir) (fuse_req_t req, fuse_ino_t parent, const char *name);
28 void (*symlink) (fuse_req_t req, const char *link, fuse_ino_t parent,
29 const char *name);
30 void (*rename) (fuse_req_t req, fuse_ino_t parent, const char *name,
31 fuse_ino_t newparent, const char *newname);
32 void (*link) (fuse_req_t req, fuse_ino_t ino, fuse_ino_t newparent,
33 const char *newname);
34 void (*open) (fuse_req_t req, fuse_ino_t ino,
35 struct fuse_file_info *fi);
36 void (*read) (fuse_req_t req, fuse_ino_t ino, size_t size, off64_t off,
37 struct fuse_file_info *fi);
38 void (*write) (fuse_req_t req, fuse_ino_t ino, const char *buf,
39 size_t size, off64_t off, struct fuse_file_info *fi);
40 void (*flush) (fuse_req_t req, fuse_ino_t ino,
41 struct fuse_file_info *fi);
42 void (*release) (fuse_req_t req, fuse_ino_t ino,
43 struct fuse_file_info *fi);
44 void (*fsync) (fuse_req_t req, fuse_ino_t ino, int datasync,
45 struct fuse_file_info *fi);
46 void (*opendir) (fuse_req_t req, fuse_ino_t ino,
47 struct fuse_file_info *fi);
48 void (*readdir) (fuse_req_t req, fuse_ino_t ino, size_t size, off64_t off,
49 struct fuse_file_info *fi);
50 void (*releasedir) (fuse_req_t req, fuse_ino_t ino,
51 struct fuse_file_info *fi);
52 void (*fsyncdir) (fuse_req_t req, fuse_ino_t ino, int datasync,
53 struct fuse_file_info *fi);
54 void (*statfs) (fuse_req_t req);
55 void (*setxattr) (fuse_req_t req, fuse_ino_t ino, const char *name,
56 const char *value, size_t size, int flags);
57 void (*getxattr) (fuse_req_t req, fuse_ino_t ino, const char *name,
58 size_t size);
59 void (*listxattr) (fuse_req_t req, fuse_ino_t ino, size_t size);
60 void (*removexattr) (fuse_req_t req, fuse_ino_t ino, const char *name);
61 void (*access) (fuse_req_t req, fuse_ino_t ino, int mask);
62 void (*create) (fuse_req_t req, fuse_ino_t parent, const char *name,
63 mode_t mode, struct fuse_file_info *fi);
64};
65
66struct fuse_session *fuse_lowlevel_new_compat25(struct fuse_args *args,
67 const struct fuse_lowlevel_ops_compat25 *op,
68 size_t op_size, void *userdata);
69
70size_t fuse_dirent_size(size_t namelen);
71
72char *fuse_add_dirent(char *buf, const char *name, const struct stat *stbuf,
73 off64_t off);
74
Dees_Troye34c1332013-02-06 19:13:00 +000075#if !defined(__FreeBSD__) && !defined(__NetBSD__)
bigbiff bigbiff9c754052013-01-09 09:09:08 -050076
77#include <sys/statfs.h>
78
79struct fuse_lowlevel_ops_compat {
80 void (*init) (void *userdata);
81 void (*destroy) (void *userdata);
82 void (*lookup) (fuse_req_t req, fuse_ino_t parent, const char *name);
83 void (*forget) (fuse_req_t req, fuse_ino_t ino, unsigned long nlookup);
84 void (*getattr) (fuse_req_t req, fuse_ino_t ino,
85 struct fuse_file_info_compat *fi);
86 void (*setattr) (fuse_req_t req, fuse_ino_t ino, struct stat *attr,
87 int to_set, struct fuse_file_info_compat *fi);
88 void (*readlink) (fuse_req_t req, fuse_ino_t ino);
89 void (*mknod) (fuse_req_t req, fuse_ino_t parent, const char *name,
90 mode_t mode, dev_t rdev);
91 void (*mkdir) (fuse_req_t req, fuse_ino_t parent, const char *name,
92 mode_t mode);
93 void (*unlink) (fuse_req_t req, fuse_ino_t parent, const char *name);
94 void (*rmdir) (fuse_req_t req, fuse_ino_t parent, const char *name);
95 void (*symlink) (fuse_req_t req, const char *link, fuse_ino_t parent,
96 const char *name);
97 void (*rename) (fuse_req_t req, fuse_ino_t parent, const char *name,
98 fuse_ino_t newparent, const char *newname);
99 void (*link) (fuse_req_t req, fuse_ino_t ino, fuse_ino_t newparent,
100 const char *newname);
101 void (*open) (fuse_req_t req, fuse_ino_t ino,
102 struct fuse_file_info_compat *fi);
103 void (*read) (fuse_req_t req, fuse_ino_t ino, size_t size, off64_t off,
104 struct fuse_file_info_compat *fi);
105 void (*write) (fuse_req_t req, fuse_ino_t ino, const char *buf,
106 size_t size, off64_t off, struct fuse_file_info_compat *fi);
107 void (*flush) (fuse_req_t req, fuse_ino_t ino,
108 struct fuse_file_info_compat *fi);
109 void (*release) (fuse_req_t req, fuse_ino_t ino,
110 struct fuse_file_info_compat *fi);
111 void (*fsync) (fuse_req_t req, fuse_ino_t ino, int datasync,
112 struct fuse_file_info_compat *fi);
113 void (*opendir) (fuse_req_t req, fuse_ino_t ino,
114 struct fuse_file_info_compat *fi);
115 void (*readdir) (fuse_req_t req, fuse_ino_t ino, size_t size, off64_t off,
116 struct fuse_file_info_compat *fi);
117 void (*releasedir) (fuse_req_t req, fuse_ino_t ino,
118 struct fuse_file_info_compat *fi);
119 void (*fsyncdir) (fuse_req_t req, fuse_ino_t ino, int datasync,
120 struct fuse_file_info_compat *fi);
121 void (*statfs) (fuse_req_t req);
122 void (*setxattr) (fuse_req_t req, fuse_ino_t ino, const char *name,
123 const char *value, size_t size, int flags);
124 void (*getxattr) (fuse_req_t req, fuse_ino_t ino, const char *name,
125 size_t size);
126 void (*listxattr) (fuse_req_t req, fuse_ino_t ino, size_t size);
127 void (*removexattr) (fuse_req_t req, fuse_ino_t ino, const char *name);
128 void (*access) (fuse_req_t req, fuse_ino_t ino, int mask);
129 void (*create) (fuse_req_t req, fuse_ino_t parent, const char *name,
130 mode_t mode, struct fuse_file_info_compat *fi);
131};
132
133int fuse_reply_statfs_compat(fuse_req_t req, const struct statfs *stbuf);
134
135int fuse_reply_open_compat(fuse_req_t req,
136 const struct fuse_file_info_compat *fi);
137
138struct fuse_session *fuse_lowlevel_new_compat(const char *opts,
139 const struct fuse_lowlevel_ops_compat *op,
140 size_t op_size, void *userdata);
141
Dees_Troye34c1332013-02-06 19:13:00 +0000142#endif /* __FreeBSD__ || __NetBSD__ */
bigbiff bigbiff9c754052013-01-09 09:09:08 -0500143
144struct fuse_chan_ops_compat24 {
145 int (*receive)(struct fuse_chan *ch, char *buf, size_t size);
146 int (*send)(struct fuse_chan *ch, const struct iovec iov[],
147 size_t count);
148 void (*destroy)(struct fuse_chan *ch);
149};
150
151struct fuse_chan *fuse_chan_new_compat24(struct fuse_chan_ops_compat24 *op,
152 int fd, size_t bufsize, void *data);
153
154int fuse_chan_receive(struct fuse_chan *ch, char *buf, size_t size);
155struct fuse_chan *fuse_kern_chan_new(int fd);