summaryrefslogtreecommitdiff
path: root/lib/librefuse
AgeCommit message (Collapse)Author
2023-04-21Fix incorrect test for FUSE_USE_VERSION 34abs
(Thanks to Mark Davies for report)
2022-01-29librefuse: default_log_func is __printfliketnn
2022-01-23librefuse: fix lint warnings about void function returning a valuerillig
lib/librefuse/refuse_compat.c(155): error: void function fuse_unmount cannot return value [213] lib/librefuse/refuse/v30.c(57): error: void function fuse_destroy_v30 cannot return value [213]
2022-01-22Use sysconf(_SC_PAGESIZE) instead of PAGE_SIZEpho
It broke build on platforms where PAGE_SIZE was not defined in <machine/vmparam.h>.
2022-01-22lib/librefuse: Implement all sorts of compat tweaks to appease various file ↵pho
systems ReFUSE now supports all the FUSE API variants from FUSE 1.1 to FUSE 3.10. Sorry for the freaking giant patch. I could not break it down any further.
2022-01-22Zero-clear the fuse_context in fuse_destroy(3)pho
2022-01-22Add some missing struct fields, structs, and constants that are part of the APIpho
2022-01-22Support the FUSE option -hopho
It is supposed to print a help message without the usage line. Although it is deprecated and has been removed as of FUSE 3.0, filesystems in the wild still use it.
2022-01-22Implement some missing functions that are part of the APIpho
2022-01-22Correct the wrong prototype of fuse_daemonize(3) while retaining ABI ↵pho
compatibility
2022-01-22Cosmetic changespho
2022-01-22Change the way how FUSE_*_VERSION are handledpho
* FUSE_MAKE_VERSION(maj, min) now generates a 3-digits number if the version is higher than 3.9. This is needed to support FUSE 3.10 API. * FUSE_{MAJOR,MINOR}_VERSION no longer have a fixed value but are derived from FUSE_USE_VERSION specified by the user code. This is needed to support more FUSE filesystems in the wild.
2022-01-22Implement a dummy pathconf() which always returns EINVALpho
2022-01-22Do not call fuse_operations.getattr() before initializing filesystempho
2022-01-22Increase the warning level to spot more mistakespho
2022-01-22lib/librefuse: Add support for legacy types and functionspho
2022-01-22lib/librefuse: Add stub functions for FUSE polling APIpho
2022-01-22lib/librefuse: Implement data buffer API appeared on FUSE 2.9pho
2022-01-22lib/librefuse: Implement FUSE session API and its signal handling functionalitypho
2022-01-22lib/librefuse: Implement logging API appeared on FUSE 3.7pho
2021-12-04librefuse: Preparation of a proper API versioning; no more #ifdef woes in ↵pho
user code The goal is to fully support FUSE API version 3.0 while maintaining API/ABI compatibility with code written for 2.6 (or even older). * <fuse.h> now emits a compiler warning if it's included without defining FUSE_USE_VERSION. It had been silently defaulted to the latest supported version prior to this change. This is permissive compared to the original FUSE, as it emits an error instead. * <fuse.h> now emits a warning if FUSE_USE_VERSION is higher than what can be provided. * Added a macro FUSE_MAKE_VERSION(maj, min). It was missing from librefuse <fuse.h>. No actual API updates have been made (yet).
2021-12-01Revert my previous change to struct fuse_optpho
I should have thought twice before commiting it. Of course changing the layout of a struct breaks ABI compatibility. Change the offset back to fixed 32 bits.
2021-12-01Use correct types for the fields of struct fuse_optpho
This change shouldn't make any behavioral differences in reality, but compilers these days dislike converting -1U to int32_t implicitly, which is indeed understandable.
2021-11-30Move the call of fuse_operations::init() from fuse_new() to fuse_loop()pho
Prior to this change we were calling init() before daemonizing the process. Some filesystems call chdir(2) in init() but fuse_daemonize() call chdir("/"), which breaks assumptions about the state of the process.
2021-10-30refuse(3): Simplify reallocation logic with reallocarr.nia
2019-09-23Restore binary compatibility by using the statvfs90 structure internally.christos
2019-04-11Avoid marking up semicolons.wiz
2019-04-10Use the equivalent FUSE_VERSION. Probably a more adequately named macro for thismaya
2019-04-10provide fuse_versionmaya
2016-11-20fuse_main(3): Support general fuse options via fuse_parse_cmdline(3)pho
* Prototypes for fuse_new(3), fuse_mount(3), and fuse_unmount(3) now matches to the original fuse interface. * Add fuse_daemonize(3): needs to have a different prototype, otherwise we can't use puffs_daemon(3). * Remove fuse_setup(3) and fuse_teardown(3). These obsolete functions has already been removed from the original interface. * fuse_main(3) now supports the following command-line options compatible with the original fuse: -h, --help print help message -V, --version print library version (currently does nothing) -d, -o debug enable debug output (PUFFS_FLAG_OPDUMP), implies -f -f foreground mode -s single threaded mode (always enabled for now) -o fsname=NAME explicitly set the name of the file system * fuse_main(3) now daemonizes the process by default. This is for the compatibility with the original fuse.
2016-11-20fuse_lowlevel.h: new file, currently only contains fuse_parse_cmdline(3) and ↵pho
struct fuse_cmdline_opts
2016-11-17Change the way how puffs_fuse_node_create() behaves.pho
In puffs "create" and "open" are two separate operations with atomicity achieved by locking the parent vnode. In fuse, on the other hand, "create" is actually a create-and-open-atomically and the open flags (O_RDWR, O_APPEND, ...) are passed via fi.flags. So the only way to emulate the fuse semantics is to open the file with dummy flags and then immediately close it. You might think that we could simply use fuse->op.mknod all the time but no, that's not possible because most file systems nowadays expect op.mknod to be called only for non-regular files and many don't even support it.
2016-11-16Major rework of fuse_opt_parse(3) so that it supports all the functionality ↵pho
of the original function
2016-11-15fuse_opt_match(3): Support every form of templates, not just the simple ↵pho
strcmp case Also it should return 1 for successful matches, not the way around.
2016-11-14Add missing macrospho
2016-11-14Implement missing fuse_opt_add_opt(3) and fuse_opt_add_opt_escaped(3)pho
2016-01-23Define _KERNTYPES for things that need it.christos
2016-01-22Needs stdint.h.dholland
2014-03-18Merge riastradh-drm2 to HEAD.riastradh
2013-07-20Use Mt for email addresses.wiz
2012-12-30FUSE seems to allow short writes without errors but PUFFS doesn't. Worktron
around this by returning ENOSPC in case of a short write to avoid protocol errors. This change is based on problem analysis provided by Antti Kantee. This fixes PR lib/45129 by myself.
2012-03-21These directories default to WARNS?=5matt
2011-11-24Set eofflag in puffs_fuse_node_readdir() from librefuse.manu
From Evgeniy Ivanov <lolkaantimat@gmail.com>
2011-07-09Call the FUSE init operation before we try to access the file-system.tron
This prevents a crash in "fuse_ext2" which I previously worked around with a patch.
2011-07-09Don't ignore "userdata" argument in "fuse_main_real". This can crashtron
a FUSE file-system that passes a non-NULL argument here.
2011-03-01fuse_opt_parse() was using uninitialized struct fuse_opt_option::data,soda
this bug made fuse_opt_proc_t not work, if it used first ``data'' argument, and might cause memory corruption even.
2010-05-21bump major of libs NEEDING libpuffspooka
2009-04-19PR/41250: David H. Gutteridge: librefuse fuse_opt.h header doesn't accommodatechristos
C++ compilation
2009-03-05fix typo (s/stucture/structure/)msaitoh
2009-01-26sign-compare fixlukem