…or OpenBSD 5.5.
….h inclusion; note a couple known bugs.
…ename() doesn't crash.
Yes, I am committing support for FUSE for OpenBSD. This is an actual, real, honest to (no-)god thing. If you want to know about it and try it, see here: http://marc.info/?t=136248759400010&r=1&w=4 Keep in mind that while this builds and runs, you should know a few things: * truncate() does not work. This is not my fault. The fuse kernel driver doesn't implement any support for truncate(), never mind libfuse. It literally doesn't do anything with it. * You can't make anything other than plain files, directories and symlinks right now. The kernel driver doesn't support it yet. * There is a bug if a file is created in the fuse filesystem and goes away, then you create another file of the same name via FUSE and try to do utime(). Not sure if it's just utime() or if other things trip it too, but I discovered that via playing around. I *THINK* it's a vnode caching problem. * There's a reason the rename() test doesn't run. IT WILL CRASH YOUR KERNEL. No joke. The rename() op in the kernel driver is busted. * The kernel code passes the trailing null character at the end of the read symlink path in readlink(). This causes all sorts of fun trouble. This needs to be fixed in the kernel driver. * fuse_get_context() returns an undef, because the reimplemented libfuse doesn't implement that. It also doesn't do any argument handling at all. Hence why it's all #ifndef'd out for OpenBSD. * mknod() will not get called to create a plain file. You need to implement create(), unless the OpenBSD devs fix libfuse to call mknod() for plain files. * You should probably implement release(); the kernel driver bitches a lot about the ENOSYS if you don't. * You should probably implement all of chown(), chmod() and utime() and/or utimens(). The kernel driver will mask out future setattr() requests if it gets ENOSYS from ANY of these. Oops. That said, 'make test' finishes, and with only... some failed tests!
Librefuse still doesn't have a fuse_main_mt() entry point, but libfuse when coupled with Perfuse does.