Tizen 2.1 base
[framework/base/fuse.git] / include / fuse_compat.h
1 /*
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
12 struct fuse_operations_compat25 {
13         int (*getattr) (const char *, struct stat *);
14         int (*readlink) (const char *, char *, size_t);
15         int (*getdir) (const char *, fuse_dirh_t, fuse_dirfil_t);
16         int (*mknod) (const char *, mode_t, dev_t);
17         int (*mkdir) (const char *, mode_t);
18         int (*unlink) (const char *);
19         int (*rmdir) (const char *);
20         int (*symlink) (const char *, const char *);
21         int (*rename) (const char *, const char *);
22         int (*link) (const char *, const char *);
23         int (*chmod) (const char *, mode_t);
24         int (*chown) (const char *, uid_t, gid_t);
25         int (*truncate) (const char *, off_t);
26         int (*utime) (const char *, struct utimbuf *);
27         int (*open) (const char *, struct fuse_file_info *);
28         int (*read) (const char *, char *, size_t, off_t,
29                      struct fuse_file_info *);
30         int (*write) (const char *, const char *, size_t, off_t,
31                       struct fuse_file_info *);
32         int (*statfs) (const char *, struct statvfs *);
33         int (*flush) (const char *, struct fuse_file_info *);
34         int (*release) (const char *, struct fuse_file_info *);
35         int (*fsync) (const char *, int, struct fuse_file_info *);
36         int (*setxattr) (const char *, const char *, const char *, size_t, int);
37         int (*getxattr) (const char *, const char *, char *, size_t);
38         int (*listxattr) (const char *, char *, size_t);
39         int (*removexattr) (const char *, const char *);
40         int (*opendir) (const char *, struct fuse_file_info *);
41         int (*readdir) (const char *, void *, fuse_fill_dir_t, off_t,
42                         struct fuse_file_info *);
43         int (*releasedir) (const char *, struct fuse_file_info *);
44         int (*fsyncdir) (const char *, int, struct fuse_file_info *);
45         void *(*init) (void);
46         void (*destroy) (void *);
47         int (*access) (const char *, int);
48         int (*create) (const char *, mode_t, struct fuse_file_info *);
49         int (*ftruncate) (const char *, off_t, struct fuse_file_info *);
50         int (*fgetattr) (const char *, struct stat *, struct fuse_file_info *);
51 };
52
53 struct fuse *fuse_new_compat25(int fd, struct fuse_args *args,
54                                const struct fuse_operations_compat25 *op,
55                                size_t op_size);
56
57 int fuse_main_real_compat25(int argc, char *argv[],
58                             const struct fuse_operations_compat25 *op,
59                             size_t op_size);
60
61 struct fuse *fuse_setup_compat25(int argc, char *argv[],
62                                  const struct fuse_operations_compat25 *op,
63                                  size_t op_size, char **mountpoint,
64                                  int *multithreaded, int *fd);
65
66 void fuse_teardown_compat22(struct fuse *fuse, int fd, char *mountpoint);
67
68 #if !defined(__FreeBSD__) && !defined(__NetBSD__)
69 #include <sys/statfs.h>
70
71 struct fuse_operations_compat22 {
72         int (*getattr) (const char *, struct stat *);
73         int (*readlink) (const char *, char *, size_t);
74         int (*getdir) (const char *, fuse_dirh_t, fuse_dirfil_t);
75         int (*mknod) (const char *, mode_t, dev_t);
76         int (*mkdir) (const char *, mode_t);
77         int (*unlink) (const char *);
78         int (*rmdir) (const char *);
79         int (*symlink) (const char *, const char *);
80         int (*rename) (const char *, const char *);
81         int (*link) (const char *, const char *);
82         int (*chmod) (const char *, mode_t);
83         int (*chown) (const char *, uid_t, gid_t);
84         int (*truncate) (const char *, off_t);
85         int (*utime) (const char *, struct utimbuf *);
86         int (*open) (const char *, struct fuse_file_info_compat *);
87         int (*read) (const char *, char *, size_t, off_t,
88                      struct fuse_file_info_compat *);
89         int (*write) (const char *, const char *, size_t, off_t,
90                       struct fuse_file_info_compat *);
91         int (*statfs) (const char *, struct statfs *);
92         int (*flush) (const char *, struct fuse_file_info_compat *);
93         int (*release) (const char *, struct fuse_file_info_compat *);
94         int (*fsync) (const char *, int, struct fuse_file_info_compat *);
95         int (*setxattr) (const char *, const char *, const char *, size_t, int);
96         int (*getxattr) (const char *, const char *, char *, size_t);
97         int (*listxattr) (const char *, char *, size_t);
98         int (*removexattr) (const char *, const char *);
99         int (*opendir) (const char *, struct fuse_file_info_compat *);
100         int (*readdir) (const char *, void *, fuse_fill_dir_t, off_t,
101                         struct fuse_file_info_compat *);
102         int (*releasedir) (const char *, struct fuse_file_info_compat *);
103         int (*fsyncdir) (const char *, int, struct fuse_file_info_compat *);
104         void *(*init) (void);
105         void (*destroy) (void *);
106 };
107
108 struct fuse *fuse_new_compat22(int fd, const char *opts,
109                                const struct fuse_operations_compat22 *op,
110                                size_t op_size);
111
112 struct fuse *fuse_setup_compat22(int argc, char *argv[],
113                                  const struct fuse_operations_compat22 *op,
114                                  size_t op_size, char **mountpoint,
115                                  int *multithreaded, int *fd);
116
117 int fuse_main_real_compat22(int argc, char *argv[],
118                             const struct fuse_operations_compat22 *op,
119                             size_t op_size);
120
121 typedef int (*fuse_dirfil_t_compat) (fuse_dirh_t h, const char *name, int type);
122 struct fuse_operations_compat2 {
123         int (*getattr)     (const char *, struct stat *);
124         int (*readlink)    (const char *, char *, size_t);
125         int (*getdir)      (const char *, fuse_dirh_t, fuse_dirfil_t_compat);
126         int (*mknod)       (const char *, mode_t, dev_t);
127         int (*mkdir)       (const char *, mode_t);
128         int (*unlink)      (const char *);
129         int (*rmdir)       (const char *);
130         int (*symlink)     (const char *, const char *);
131         int (*rename)      (const char *, const char *);
132         int (*link)        (const char *, const char *);
133         int (*chmod)       (const char *, mode_t);
134         int (*chown)       (const char *, uid_t, gid_t);
135         int (*truncate)    (const char *, off_t);
136         int (*utime)       (const char *, struct utimbuf *);
137         int (*open)        (const char *, int);
138         int (*read)        (const char *, char *, size_t, off_t);
139         int (*write)       (const char *, const char *, size_t, off_t);
140         int (*statfs)      (const char *, struct statfs *);
141         int (*flush)       (const char *);
142         int (*release)     (const char *, int);
143         int (*fsync)       (const char *, int);
144         int (*setxattr)    (const char *, const char *, const char *,
145                             size_t, int);
146         int (*getxattr)    (const char *, const char *, char *, size_t);
147         int (*listxattr)   (const char *, char *, size_t);
148         int (*removexattr) (const char *, const char *);
149 };
150
151 int fuse_main_compat2(int argc, char *argv[],
152                       const struct fuse_operations_compat2 *op);
153
154 struct fuse *fuse_new_compat2(int fd, const char *opts,
155                               const struct fuse_operations_compat2 *op);
156
157 struct fuse *fuse_setup_compat2(int argc, char *argv[],
158                                 const struct fuse_operations_compat2 *op,
159                                 char **mountpoint, int *multithreaded, int *fd);
160
161 struct fuse_statfs_compat1 {
162         long block_size;
163         long blocks;
164         long blocks_free;
165         long files;
166         long files_free;
167         long namelen;
168 };
169
170 struct fuse_operations_compat1 {
171         int (*getattr)  (const char *, struct stat *);
172         int (*readlink) (const char *, char *, size_t);
173         int (*getdir)   (const char *, fuse_dirh_t, fuse_dirfil_t_compat);
174         int (*mknod)    (const char *, mode_t, dev_t);
175         int (*mkdir)    (const char *, mode_t);
176         int (*unlink)   (const char *);
177         int (*rmdir)    (const char *);
178         int (*symlink)  (const char *, const char *);
179         int (*rename)   (const char *, const char *);
180         int (*link)     (const char *, const char *);
181         int (*chmod)    (const char *, mode_t);
182         int (*chown)    (const char *, uid_t, gid_t);
183         int (*truncate) (const char *, off_t);
184         int (*utime)    (const char *, struct utimbuf *);
185         int (*open)     (const char *, int);
186         int (*read)     (const char *, char *, size_t, off_t);
187         int (*write)    (const char *, const char *, size_t, off_t);
188         int (*statfs)   (struct fuse_statfs_compat1 *);
189         int (*release)  (const char *, int);
190         int (*fsync)    (const char *, int);
191 };
192
193 #define FUSE_DEBUG_COMPAT1       (1 << 1)
194
195 struct fuse *fuse_new_compat1(int fd, int flags,
196                               const struct fuse_operations_compat1 *op);
197
198 void fuse_main_compat1(int argc, char *argv[],
199                        const struct fuse_operations_compat1 *op);
200
201 #endif /* __FreeBSD__ || __NetBSD__ */