package ru.serce.jnrfuse; import jnr.ffi.Pointer; import jnr.ffi.Struct; import jnr.ffi.annotations.Delegate; import jnr.ffi.types.off_t; import ru.serce.jnrfuse.struct.FileStat; import java.nio.ByteBuffer; /** * Function to add an entry in a readdir() operation */ public interface FuseFillDir { @Delegate int apply(Pointer buf, ByteBuffer name, Pointer stbuf, @off_t long off); /** * Function to add an entry in a readdir() operation * * @param buf the buffer passed to the readdir() operation * @param name the file name of the directory entry * @param stbuf file attributes, can be NULL * @param off offset of the next entry or zero * * @return 1 if buffer is full, zero otherwise */ default int apply(Pointer buf, String name, FileStat stbuf, @off_t long off) { return apply(buf, ByteBuffer.wrap(name.getBytes()), stbuf == null ? null : Struct.getMemory(stbuf), off); } }