package net.fusejna.util;
import java.io.File;
import java.nio.ByteBuffer;
import net.fusejna.DirectoryFiller;
import net.fusejna.ErrorCodes;
import net.fusejna.FlockCommand;
import net.fusejna.FuseFilesystem;
import net.fusejna.StructFlock.FlockWrapper;
import net.fusejna.StructFuseFileInfo.FileInfoWrapper;
import net.fusejna.StructStat.StatWrapper;
import net.fusejna.StructStatvfs.StatvfsWrapper;
import net.fusejna.StructTimeBuffer.TimeBufferWrapper;
import net.fusejna.XattrListFiller;
import net.fusejna.types.TypeMode.ModeWrapper;
/**
* 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 FuseFilesystemAdapterFull extends FuseFilesystem
{
@Override
public int access(final String path, final int access)
{
return -ErrorCodes.ENOSYS();
}
@Override
public void afterUnmount(final File mountPoint)
{
}
@Override
public void beforeMount(final File mountPoint)
{
}
@Override
public void beforeUnmount(final File mountPoint)
{
}
@Override
public int bmap(final String path, final FileInfoWrapper info)
{
return 0;
}
@Override
public int chmod(final String path, final ModeWrapper mode)
{
return 0;
}
@Override
public int chown(final String path, final long uid, final long gid)
{
return 0;
}
@Override
public int create(final String path, final ModeWrapper mode, final FileInfoWrapper info)
{
return -ErrorCodes.ENOSYS();
}
@Override
public void destroy()
{
}
@Override
public int fgetattr(final String path, final StatWrapper stat, final FileInfoWrapper info)
{
return getattr(path, stat);
}
@Override
public int flush(final String path, final FileInfoWrapper info)
{
return 0;
}
@Override
public int fsync(final String path, final int datasync, final FileInfoWrapper info)
{
return 0;
}
@Override
public int fsyncdir(final String path, final int datasync, final FileInfoWrapper info)
{
return 0;
}
@Override
public int ftruncate(final String path, final long offset, final FileInfoWrapper info)
{
return truncate(path, offset);
}
@Override
public int getattr(final String path, final StatWrapper stat)
{
return -ErrorCodes.ENOSYS();
}
@Override
protected String getName()
{
return null;
}
@Override
protected String[] getOptions()
{
return null;
}
@Override
public int getxattr(final String path, final String xattr, final ByteBuffer buf, final long size, final long position)
{
return -ErrorCodes.ENOSYS();
}
@Override
public void init()
{
}
@Override
public int link(final String path, final String target)
{
return 0;
}
@Override
public int listxattr(final String path, final XattrListFiller filler)
{
return -ErrorCodes.ENOSYS();
}
@Override
public int lock(final String path, final FileInfoWrapper info, final FlockCommand command, final FlockWrapper flock)
{
return -ErrorCodes.ENOSYS();
}
@Override
public int mkdir(final String path, final ModeWrapper mode)
{
return 0;
}
@Override
public int mknod(final String path, final ModeWrapper mode, final long dev)
{
return create(path, mode, null);
}
@Override
public int open(final String path, final FileInfoWrapper info)
{
return 0;
}
@Override
public int opendir(final String path, final FileInfoWrapper info)
{
return 0;
}
@Override
public int read(final String path, final ByteBuffer buffer, final long size, final long offset, final FileInfoWrapper info)
{
return 0;
}
@Override
public int readdir(final String path, final DirectoryFiller filler)
{
return 0;
}
@Override
public int readlink(final String path, final ByteBuffer buffer, final long size)
{
return 0;
}
@Override
public int release(final String path, final FileInfoWrapper info)
{
return 0;
}
@Override
public int releasedir(final String path, final FileInfoWrapper info)
{
return 0;
}
@Override
public int removexattr(final String path, final String xattr)
{
return -ErrorCodes.ENOSYS();
}
@Override
public int rename(final String path, final String newName)
{
return 0;
}
@Override
public int rmdir(final String path)
{
return 0;
}
@Override
public int setxattr(final String path, final ByteBuffer buf, final long size, final int flags, final long position)
{
return -ErrorCodes.ENOSYS();
}
@Override
public int statfs(final String path, final StatvfsWrapper wrapper)
{
return 0;
}
@Override
public int symlink(final String path, final String target)
{
return 0;
}
@Override
public int truncate(final String path, final long offset)
{
return 0;
}
@Override
public int unlink(final String path)
{
return 0;
}
@Override
public int utimens(final String path, final TimeBufferWrapper wrapper)
{
return -ErrorCodes.ENOSYS();
}
@Override
public int write(final String path, final ByteBuffer buf, final long bufSize, final long writeOffset,
final FileInfoWrapper wrapper)
{
return 0;
}
}