fFS
fuseContext->private_data = fFS != NULL ? fFS->userData : NULL;
if (fFS != NULL)
fuse_fs_destroy(fFS);
fFS = fuse_fs_new(ops, opSize, userData);
if (fFS == NULL)
fuse_fs_init(fFS, &fConnectionInfo);
if (fFS == NULL) {
fNodeCapabilities.Set(FS_VNODE_CAPABILITY_FSYNC, fFS->ops.fsync);
fNodeCapabilities.Set(FS_VNODE_CAPABILITY_READ_SYMLINK, fFS->ops.readlink);
fNodeCapabilities.Set(FS_VNODE_CAPABILITY_CREATE_SYMLINK, fFS->ops.symlink);
fNodeCapabilities.Set(FS_VNODE_CAPABILITY_LINK, fFS->ops.link);
fNodeCapabilities.Set(FS_VNODE_CAPABILITY_UNLINK, fFS->ops.unlink);
fNodeCapabilities.Set(FS_VNODE_CAPABILITY_RENAME, fFS->ops.rename);
fNodeCapabilities.Set(FS_VNODE_CAPABILITY_ACCESS, fFS->ops.access);
fNodeCapabilities.Set(FS_VNODE_CAPABILITY_READ_STAT, fFS->ops.getattr);
fFS->ops.chmod != NULL || fFS->ops.chown != NULL
|| fFS->ops.truncate != NULL || fFS->ops.utimens != NULL
|| fFS->ops.utime != NULL);
fVolumeCapabilities.Set(FS_VOLUME_CAPABILITY_READ_FS_INFO, fFS->ops.statfs);
fVolumeCapabilities.Set(FS_VOLUME_CAPABILITY_SYNC, fFS->ops.fsync);
fNodeCapabilities.Set(FS_VNODE_CAPABILITY_CREATE, fFS->ops.create);
fNodeCapabilities.Set(FS_VNODE_CAPABILITY_OPEN, fFS->ops.open);
fNodeCapabilities.Set(FS_VNODE_CAPABILITY_CLOSE, fFS->ops.flush);
fNodeCapabilities.Set(FS_VNODE_CAPABILITY_FREE_COOKIE, fFS->ops.release);
fNodeCapabilities.Set(FS_VNODE_CAPABILITY_READ, fFS->ops.read);
fNodeCapabilities.Set(FS_VNODE_CAPABILITY_WRITE, fFS->ops.write);
fNodeCapabilities.Set(FS_VNODE_CAPABILITY_CREATE_DIR, fFS->ops.mkdir);
fNodeCapabilities.Set(FS_VNODE_CAPABILITY_REMOVE_DIR, fFS->ops.rmdir);
bool readDirSupport = fFS->ops.opendir != NULL || fFS->ops.readdir != NULL
|| fFS->ops.getdir;
bool hasAttributes = fFS->ops.listxattr != NULL;
fNodeCapabilities.Set(FS_VNODE_CAPABILITY_READ_ATTR, fFS->ops.getxattr);
fFS->ops.getxattr);
if (fFS == NULL)
fuse_fs* GetFS() const { return fFS; }
fuse_fs* fFS;
fuseError = fuse_fs_open(fFS, path, cookie);
fuse_fs_release(fFS, path, cookie);
fuseError = fuse_fs_open(fFS, path, &cookie);
fuseError = fuse_fs_fsync(fFS, path, 0, &cookie);
fuse_fs_flush(fFS, path, &cookie);
fuse_fs_release(fFS, path, &cookie);
int fuseError = fuse_fs_readlink(fFS, path, buffer, bufferSize);
fuseError = fuse_fs_symlink(fFS, target, path);
fuseError = fuse_fs_link(fFS, oldPath, newPath);
fuseError = fuse_fs_unlink(fFS, path);
fuseError = fuse_fs_rename(fFS, oldPath, newPath);
fuseError = fuse_fs_access(fFS, path, mode);
fuseError = fuse_fs_getattr(fFS, path, st);
int fuseError = fuse_fs_chmod(fFS, path, st->st_mode);
int fuseError = fuse_fs_chown(fFS, path, uid, gid);
int fuseError = fuse_fs_truncate(fFS, path, st->st_size);
int fuseError = fuse_fs_getattr(fFS, path, ¤tStat);
int fuseError = fuse_fs_utimens(fFS, path, tv);
fuseError = fuse_fs_create(fFS, path, mode, cookie);
fuse_fs_flush(fFS, path, cookie);
fuse_fs_release(fFS, path, cookie);
fuse_fs_unlink(fFS, path);
fuseError = fuse_fs_open(fFS, path, cookie);
fuseError = fuse_fs_ftruncate(fFS, path, 0, cookie);
fuseError = fuse_fs_truncate(fFS, path, 0);
fuse_fs_flush(fFS, path, cookie);
fuse_fs_release(fFS, path, cookie);
fuseError = fuse_fs_getattr(fFS, path, &st);
fuseError = fuse_fs_flush(fFS, path, cookie);
fuseError = fuse_fs_release(fFS, path, cookie);
fuseError = fuse_fs_mkdir(fFS, path, mode);
fuseError = fuse_fs_rmdir(fFS, path);
if (fFS->ops.readdir == NULL && fFS->ops.getdir != NULL) {
int fuseError = fuse_fs_opendir(fFS, path, cookie);
fuseError = fuse_fs_releasedir(fFS, path, cookie);
fuseError = fFS->ops.getdir(path, (fuse_dirh_t)&readDirBuffer,
fuseError = fuse_fs_readdir(fFS, path, &readDirBuffer,
listSize = fuse_fs_listxattr(fFS, path, NULL, 0);
bytesRead = fuse_fs_listxattr(fFS, path, cookie->AttributesBuffer(), listSize);
attrSize = fuse_fs_getxattr(fFS, path, name, NULL, 0);
bytesRead = fuse_fs_getxattr(fFS, path, name, cookie->Buffer(), attrSize);
fuseError = fuse_fs_getattr(fFS, path, &st);
fuseError = fuse_fs_getattr(fFS, path, &st);
fuseError = fuse_fs_getattr(fFS, path, &st);
fuseError = fuse_fs_write(fFS, path, buffer, length, pos, cookie);
fuseError = fuse_fs_read(fFS, path, buffer, length, pos, cookie);
fFS(NULL),
fFS = _FileSystem()->GetFS();
if (fFS != NULL) {
context->private_data = fFS->userData;
fuseError = fuse_fs_getattr(fFS, "/", &st);
fuseError = fuse_fs_open(fFS, path, &cookie);
fuseError = fuse_fs_fsync(fFS, path, 0, &cookie);
fuse_fs_flush(fFS, path, &cookie);
fuse_fs_release(fFS, path, &cookie);
if (_FileSystem()->HasHaikuFuseExtensions() && fFS->ops.ioctl != NULL) {
int fuseError = fuse_fs_ioctl(fFS, "/", FUSE_HAIKU_GET_DRIVE_INFO, info, NULL,
if (fFS->ops.statfs == NULL)
fuseError = fuse_fs_statfs(fFS, "/", &st);
fuse_fs* fFS;
void SetFS(fuse_fs* fs) { fFS = fs; }