Skip to content

Commit 61cf284

Browse files
committed
Fix the build for rust-lang/rust#8666
1 parent bd202d3 commit 61cf284

File tree

2 files changed

+85
-63
lines changed

2 files changed

+85
-63
lines changed

src/rust_fuse/fuse.rs

+54-31
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@ automatically generated by rust-bindgen, with some manual changes needed:
55
* * add Struct_iovec
66
* * add stub Struct_flock
77
* * add derived Zero impl for Struct_fuse_file_info
8+
* * manually change the type of the function pointers, since rust-bindgen hasn't been updated for that yet
89
*/
910

1011
use std::libc::*;
@@ -127,37 +128,59 @@ pub struct Struct_fuse_forget_data {
127128
nlookup: uint64_t,
128129
}
129130
pub struct Struct_fuse_lowlevel_ops {
130-
init: *u8,
131-
destroy: *u8,
132-
lookup: *u8,
133-
forget: *u8,
134-
getattr: *u8,
135-
setattr: *u8,
136-
readlink: *u8,
137-
mknod: *u8,
138-
mkdir: *u8,
139-
unlink: *u8,
140-
rmdir: *u8,
141-
symlink: *u8,
142-
rename: *u8,
143-
link: *u8,
144-
open: *u8,
145-
read: *u8,
146-
write: *u8,
147-
flush: *u8,
148-
release: *u8,
149-
fsync: *u8,
150-
opendir: *u8,
151-
readdir: *u8,
152-
releasedir: *u8,
153-
fsyncdir: *u8,
154-
statfs: *u8,
155-
setxattr: *u8,
156-
getxattr: *u8,
157-
listxattr: *u8,
158-
removexattr: *u8,
159-
access: *u8,
160-
create: *u8,
131+
init: extern "C" fn(userdata:*mut c_void, _conn:*Struct_fuse_conn_info),
132+
destroy: extern "C" fn(userdata:*mut c_void),
133+
lookup: extern "C" fn(req:fuse_req_t, parent:fuse_ino_t, name:*c_schar),
134+
forget: extern "C" fn(req: fuse_req_t, ino: fuse_ino_t, nlookup:c_ulong),
135+
getattr: extern "C" fn(req:fuse_req_t, ino: fuse_ino_t,
136+
_fi:*Struct_fuse_file_info),
137+
setattr: extern "C" fn(req: fuse_req_t, ino: fuse_ino_t, attr:*stat,
138+
to_set: int, fi: *Struct_fuse_file_info),
139+
readlink: extern "C" fn(req: fuse_req_t, ino: fuse_ino_t),
140+
mknod: extern "C" fn(req:fuse_req_t, parent: fuse_ino_t, name:*c_schar,
141+
mode: mode_t, rdev: dev_t),
142+
mkdir: extern "C" fn(req: fuse_req_t, parent: fuse_ino_t, name:*c_schar,
143+
mode:mode_t),
144+
unlink: extern "C" fn(req: fuse_req_t, parent: fuse_ino_t, name:*c_schar),
145+
rmdir: extern "C" fn(req: fuse_req_t, parent: fuse_ino_t, name:*c_schar),
146+
symlink: extern "C" fn(req: fuse_req_t, link: *c_schar, parent: fuse_ino_t,
147+
name: *c_schar),
148+
rename: extern "C" fn(req: fuse_req_t, parent: fuse_ino_t, name: *c_schar, newparent: fuse_ino_t,
149+
newname: *c_schar),
150+
link: extern "C" fn(req: fuse_req_t, ino: fuse_ino_t, newparent: fuse_ino_t,
151+
newname: *c_schar),
152+
open: extern "C" fn(req: fuse_req_t, ino: fuse_ino_t,
153+
fi: *Struct_fuse_file_info),
154+
read: extern "C" fn(req: fuse_req_t, ino: fuse_ino_t, size: size_t, off: off_t,
155+
fi: *Struct_fuse_file_info),
156+
write: extern "C" fn(req: fuse_req_t, ino: fuse_ino_t, buf: *u8,
157+
size: size_t, off: off_t, fi: *Struct_fuse_file_info),
158+
flush: extern "C" fn(req: fuse_req_t, ino: fuse_ino_t,
159+
fi: *Struct_fuse_file_info),
160+
release: extern "C" fn(req: fuse_req_t, ino: fuse_ino_t,
161+
fi: *Struct_fuse_file_info),
162+
fsync: extern "C" fn(req: fuse_req_t, ino: fuse_ino_t, datasync: c_int,
163+
fi: *Struct_fuse_file_info),
164+
opendir: extern "C" fn(req: fuse_req_t, ino: fuse_ino_t,
165+
_fi: *Struct_fuse_file_info),
166+
readdir: extern "C" fn(req: fuse_req_t, ino: fuse_ino_t, size: size_t, off: off_t,
167+
fi: *Struct_fuse_file_info),
168+
releasedir: extern "C" fn(req: fuse_req_t, ino: fuse_ino_t,
169+
fi: *Struct_fuse_file_info),
170+
fsyncdir: extern "C" fn(req: fuse_req_t, ino: fuse_ino_t, datasync: c_int,
171+
fi: *Struct_fuse_file_info),
172+
statfs: extern "C" fn(req: fuse_req_t, ino: fuse_ino_t),
173+
setxattr: extern "C" fn(req: fuse_req_t, ino: fuse_ino_t, name: *c_schar,
174+
value: *u8, size: size_t, flags: c_int),
175+
getxattr: extern "C" fn(req: fuse_req_t, ino: fuse_ino_t, name: *c_schar,
176+
size: size_t),
177+
listxattr: extern "C" fn(req: fuse_req_t, ino: fuse_ino_t, size: size_t),
178+
removexattr: extern "C" fn(req: fuse_req_t, ino: fuse_ino_t, name: *c_schar),
179+
access: extern "C" fn(req: fuse_req_t, ino: fuse_ino_t, mask: c_int),
180+
create: extern "C" fn(req: fuse_req_t, parent: fuse_ino_t, name: *c_schar,
181+
mode: mode_t, fi: *Struct_fuse_file_info),
182+
183+
// We don't use these yet...
161184
getlk: *u8,
162185
setlk: *u8,
163186
bmap: *u8,

src/rust_fuse/thin.rs

+31-32
Original file line numberDiff line numberDiff line change
@@ -269,41 +269,40 @@ pub fn fuse_main(args:~[~str], ops:~FuseLowLevelOps) {
269269
};
270270
}
271271

272-
273272
pub fn make_fuse_ll_oper(ops:&FuseLowLevelOps)
274273
-> Struct_fuse_lowlevel_ops {
275274
return Struct_fuse_lowlevel_ops {
276-
init: if ops.init_is_implemented() { init_impl } else { ptr::null() },
277-
destroy: if ops.destroy_is_implemented() { destroy_impl } else { ptr::null() },
278-
lookup: if ops.lookup_is_implemented() { lookup_impl } else { ptr::null() },
279-
forget: if ops.forget_is_implemented() { forget_impl } else { ptr::null() },
280-
getattr: if ops.getattr_is_implemented() { getattr_impl } else { ptr::null() },
281-
setattr: if ops.setattr_is_implemented() { setattr_impl } else { ptr::null() },
282-
readlink: if ops.readlink_is_implemented() { readlink_impl } else { ptr::null() },
283-
mknod: if ops.mknod_is_implemented() { mknod_impl } else { ptr::null() },
284-
mkdir: if ops.mkdir_is_implemented() { mkdir_impl } else { ptr::null() },
285-
unlink: if ops.unlink_is_implemented() { unlink_impl } else { ptr::null() },
286-
rmdir: if ops.rmdir_is_implemented() { rmdir_impl } else { ptr::null() },
287-
symlink: if ops.symlink_is_implemented() { symlink_impl } else { ptr::null() },
288-
rename: if ops.rename_is_implemented() { rename_impl } else { ptr::null() },
289-
link: if ops.link_is_implemented() { link_impl } else { ptr::null() },
290-
open: if ops.open_is_implemented() { open_impl } else { ptr::null() },
291-
read: if ops.read_is_implemented() { read_impl } else { ptr::null() },
292-
write: if ops.write_is_implemented() { write_impl } else { ptr::null() },
293-
flush: if ops.flush_is_implemented() { flush_impl } else { ptr::null() },
294-
release: if ops.release_is_implemented() { release_impl } else { ptr::null() },
295-
fsync: if ops.fsync_is_implemented() { fsync_impl } else { ptr::null() },
296-
opendir: if ops.opendir_is_implemented() { opendir_impl } else { ptr::null() },
297-
readdir: if ops.readdir_is_implemented() { readdir_impl } else { ptr::null() },
298-
releasedir: if ops.releasedir_is_implemented() { releasedir_impl } else { ptr::null() },
299-
fsyncdir: if ops.fsyncdir_is_implemented() { fsyncdir_impl } else { ptr::null() },
300-
statfs: if ops.statfs_is_implemented() { statfs_impl } else { ptr::null() },
301-
setxattr: if ops.setxattr_is_implemented() { setxattr_impl } else { ptr::null() },
302-
getxattr: if ops.getxattr_is_implemented() { getxattr_impl } else { ptr::null() },
303-
listxattr: if ops.listxattr_is_implemented() { listxattr_impl } else { ptr::null() },
304-
removexattr: if ops.removexattr_is_implemented() { removexattr_impl } else { ptr::null() },
305-
access: if ops.access_is_implemented() { access_impl } else { ptr::null() },
306-
create: if ops.create_is_implemented() { create_impl } else { ptr::null() },
275+
init: if ops.init_is_implemented() { init_impl } else { ptr::null::<c_void>() as extern "C" fn(userdata:*mut c_void, _conn:*Struct_fuse_conn_info) },
276+
destroy: if ops.destroy_is_implemented() { destroy_impl } else { ptr::null::<c_void>() as extern "C" fn(userdata:*mut c_void) },
277+
lookup: if ops.lookup_is_implemented() { lookup_impl } else { ptr::null::<c_void>() as extern "C" fn(req:fuse_req_t, parent:fuse_ino_t, name:*c_schar) },
278+
forget: if ops.forget_is_implemented() { forget_impl } else { ptr::null::<c_void>() as extern "C" fn(req: fuse_req_t, ino: fuse_ino_t, nlookup:c_ulong) },
279+
getattr: if ops.getattr_is_implemented() { getattr_impl } else { ptr::null::<c_void>() as extern "C" fn(req:fuse_req_t, ino: fuse_ino_t, _fi:*Struct_fuse_file_info) },
280+
setattr: if ops.setattr_is_implemented() { setattr_impl } else { ptr::null::<c_void>() as extern "C" fn(req: fuse_req_t, ino: fuse_ino_t, attr:*stat, to_set: int, fi: *Struct_fuse_file_info) },
281+
readlink: if ops.readlink_is_implemented() { readlink_impl } else { ptr::null::<c_void>() as extern "C" fn(req: fuse_req_t, ino: fuse_ino_t) },
282+
mknod: if ops.mknod_is_implemented() { mknod_impl } else { ptr::null::<c_void>() as extern "C" fn(req:fuse_req_t, parent: fuse_ino_t, name:*c_schar, mode: mode_t, rdev: dev_t) },
283+
mkdir: if ops.mkdir_is_implemented() { mkdir_impl } else { ptr::null::<c_void>() as extern "C" fn(req: fuse_req_t, parent: fuse_ino_t, name:*c_schar, mode:mode_t) },
284+
unlink: if ops.unlink_is_implemented() { unlink_impl } else { ptr::null::<c_void>() as extern "C" fn(req: fuse_req_t, parent: fuse_ino_t, name:*c_schar) },
285+
rmdir: if ops.rmdir_is_implemented() { rmdir_impl } else { ptr::null::<c_void>() as extern "C" fn(req: fuse_req_t, parent: fuse_ino_t, name:*c_schar) },
286+
symlink: if ops.symlink_is_implemented() { symlink_impl } else { ptr::null::<c_void>() as extern "C" fn(req: fuse_req_t, link: *c_schar, parent: fuse_ino_t, name: *c_schar) },
287+
rename: if ops.rename_is_implemented() { rename_impl } else { ptr::null::<c_void>() as extern "C" fn(req: fuse_req_t, parent: fuse_ino_t, name: *c_schar, newparent: fuse_ino_t, newname: *c_schar) },
288+
link: if ops.link_is_implemented() { link_impl } else { ptr::null::<c_void>() as extern "C" fn(req: fuse_req_t, ino: fuse_ino_t, newparent: fuse_ino_t, newname: *c_schar) },
289+
open: if ops.open_is_implemented() { open_impl } else { ptr::null::<c_void>() as extern "C" fn(req: fuse_req_t, ino: fuse_ino_t, fi: *Struct_fuse_file_info) },
290+
read: if ops.read_is_implemented() { read_impl } else { ptr::null::<c_void>() as extern "C" fn(req: fuse_req_t, ino: fuse_ino_t, size: size_t, off: off_t, fi: *Struct_fuse_file_info) },
291+
write: if ops.write_is_implemented() { write_impl } else { ptr::null::<c_void>() as extern "C" fn(req: fuse_req_t, ino: fuse_ino_t, buf: *u8, size: size_t, off: off_t, fi: *Struct_fuse_file_info) },
292+
flush: if ops.flush_is_implemented() { flush_impl } else { ptr::null::<c_void>() as extern "C" fn(req: fuse_req_t, ino: fuse_ino_t, fi: *Struct_fuse_file_info) },
293+
release: if ops.release_is_implemented() { release_impl } else { ptr::null::<c_void>() as extern "C" fn(req: fuse_req_t, ino: fuse_ino_t, fi: *Struct_fuse_file_info) },
294+
fsync: if ops.fsync_is_implemented() { fsync_impl } else { ptr::null::<c_void>() as extern "C" fn(req: fuse_req_t, ino: fuse_ino_t, datasync: c_int, fi: *Struct_fuse_file_info) },
295+
opendir: if ops.opendir_is_implemented() { opendir_impl } else { ptr::null::<c_void>() as extern "C" fn(req: fuse_req_t, ino: fuse_ino_t, _fi: *Struct_fuse_file_info) },
296+
readdir: if ops.readdir_is_implemented() { readdir_impl } else { ptr::null::<c_void>() as extern "C" fn(req: fuse_req_t, ino: fuse_ino_t, size: size_t, off: off_t, fi: *Struct_fuse_file_info) },
297+
releasedir: if ops.releasedir_is_implemented() { releasedir_impl } else { ptr::null::<c_void>() as extern "C" fn(req: fuse_req_t, ino: fuse_ino_t, fi: *Struct_fuse_file_info) },
298+
fsyncdir: if ops.fsyncdir_is_implemented() { fsyncdir_impl } else { ptr::null::<c_void>() as extern "C" fn(req: fuse_req_t, ino: fuse_ino_t, datasync: c_int, fi: *Struct_fuse_file_info) },
299+
statfs: if ops.statfs_is_implemented() { statfs_impl } else { ptr::null::<c_void>() as extern "C" fn(req: fuse_req_t, ino: fuse_ino_t) },
300+
setxattr: if ops.setxattr_is_implemented() { setxattr_impl } else { ptr::null::<c_void>() as extern "C" fn(req: fuse_req_t, ino: fuse_ino_t, name: *c_schar, value: *u8, size: size_t, flags: c_int) },
301+
getxattr: if ops.getxattr_is_implemented() { getxattr_impl } else { ptr::null::<c_void>() as extern "C" fn(req: fuse_req_t, ino: fuse_ino_t, name: *c_schar, size: size_t) },
302+
listxattr: if ops.listxattr_is_implemented() { listxattr_impl } else { ptr::null::<c_void>() as extern "C" fn(req: fuse_req_t, ino: fuse_ino_t, size: size_t) },
303+
removexattr: if ops.removexattr_is_implemented() { removexattr_impl } else { ptr::null::<c_void>() as extern "C" fn(req: fuse_req_t, ino: fuse_ino_t, name: *c_schar) },
304+
access: if ops.access_is_implemented() { access_impl } else { ptr::null::<c_void>() as extern "C" fn(req: fuse_req_t, ino: fuse_ino_t, mask: c_int) },
305+
create: if ops.create_is_implemented() { create_impl } else { ptr::null::<c_void>() as extern "C" fn(req: fuse_req_t, parent: fuse_ino_t, name: *c_schar, mode: mode_t, fi: *Struct_fuse_file_info) },
307306

308307
// Not implemented yet:
309308
getlk: ptr::null(),

0 commit comments

Comments
 (0)