package co.paralleluniverse.fuse; import java.nio.ByteBuffer; import java.nio.file.Path; import jnr.constants.platform.Errno; import jnr.ffi.Pointer; /** * An adapter that tries to put sane defaults for default return values. Will silently pretend that most non-critical operations * have succeeded, but return ENOSYS on non-implemented important operations. */ public abstract class AbstractFuseFilesystem extends FuseFilesystem { @Override protected String getName() { return null; } @Override protected String[] getOptions() { return null; } @Override protected void afterUnmount(Path mountPoint) { } @Override protected void beforeMount(Path mountPoint) { } @Override protected int getattr(String path, StructStat stat) { return -Errno.ENOSYS.intValue(); } @Override protected int readlink(String path, ByteBuffer buffer, long size) { return 0; } @Override protected int mknod(String path, long mode, long dev) { return create(path, mode, null); } @Override protected int mkdir(String path, long mode) { return 0; } @Override protected int unlink(String path) { return 0; } @Override protected int rmdir(String path) { return 0; } @Override protected int symlink(String path, String target) { return 0; } @Override protected int rename(String path, String newName) { return 0; } @Override protected int link(String path, String target) { return 0; } @Override protected int chmod(String path, long mode) { return 0; } @Override protected int chown(String path, long uid, long gid) { return 0; } @Override protected int truncate(String path, long offset) { return 0; } @Override protected int open(String path, StructFuseFileInfo info) { return 0; } @Override protected int read(String path, ByteBuffer buffer, long size, long offset, StructFuseFileInfo info) { return 0; } @Override protected int write(String path, ByteBuffer buf, long bufSize, long writeOffset, StructFuseFileInfo wrapper) { return 0; } @Override protected int statfs(String path, StructStatvfs stratvfs) { return 0; } @Override protected int flush(String path, StructFuseFileInfo info) { return 0; } @Override protected int release(String path, StructFuseFileInfo info) { return 0; } @Override protected int fsync(String path, int datasync, StructFuseFileInfo info) { return 0; } @Override protected int setxattr(String path, String xattr, ByteBuffer buf, long size, int flags, int position) { return -Errno.ENOSYS.intValue(); } @Override protected int getxattr(String path, String xattr, XattrFiller filler, long size, long position) { return -Errno.ENOSYS.intValue(); } @Override protected int listxattr(String path, XattrListFiller filler) { return -Errno.ENOSYS.intValue(); } @Override protected int removexattr(String path, String xattr) { return -Errno.ENOSYS.intValue(); } @Override protected int opendir(String path, StructFuseFileInfo info) { return 0; } @Override protected int readdir(String path, StructFuseFileInfo info, DirectoryFiller filler) { return 0; } @Override protected int releasedir(String path, StructFuseFileInfo info) { return 0; } @Override protected int fsyncdir(String path, int datasync, StructFuseFileInfo info) { return 0; } @Override protected void init() { } @Override protected void destroy() { } @Override protected int access(String path, int access) { return -Errno.ENOSYS.intValue(); } @Override protected int create(String path, long mode, StructFuseFileInfo info) { return -Errno.ENOSYS.intValue(); } @Override public int ftruncate(String path, long offset, StructFuseFileInfo info) { return truncate(path, offset); } @Override protected int fgetattr(String path, StructStat stat, StructFuseFileInfo info) { return getattr(path, stat); } @Override protected int lock(String path, StructFuseFileInfo info, int command, StructFlock flock) { return -Errno.ENOSYS.intValue(); } @Override protected int utimens(String path, StructTimeBuffer timeBuffer) { return -Errno.ENOSYS.intValue(); } @Override protected int bmap(String path, StructFuseFileInfo info) { return 0; } @Override public int ioctl(String path, int cmd, Pointer arg, StructFuseFileInfo fi, long flags, Pointer data) { return -ErrorCodes.ENOSYS(); } @Override public int poll(String path, StructFuseFileInfo fi, StructFusePollHandle ph, Pointer reventsp) { return -ErrorCodes.ENOSYS(); } @Override protected int write_buf(String path, StructFuseBufvec buf, long off, StructFuseFileInfo fi) { return -ErrorCodes.ENOSYS(); } @Override protected int read_buf(String path, Pointer bufp, long size, long off, StructFuseFileInfo fi) { return -ErrorCodes.ENOSYS(); } @Override public int flock(String path, StructFuseFileInfo fi, int op) { return -ErrorCodes.ENOSYS(); } @Override public int fallocate(String path, int mode, long off, long length, StructFuseFileInfo fi) { return -ErrorCodes.ENOSYS(); } }