private unsafe int Readdir(path *path, void *buf, fuse_fill_dir *filler, ulong offset, fuse_file_info *fi, int flags) { try { fuse_fill_dir_Delegate fillDelegate; ManagedFiller previousFiller = _previousFiller; if (previousFiller != null && previousFiller.Filler == filler) { fillDelegate = previousFiller.Delegate; } else { fillDelegate = Marshal.GetDelegateForFunctionPointer <fuse_fill_dir_Delegate>(new IntPtr(filler)); _previousFiller = new ManagedFiller(filler, fillDelegate); } var fiF = new FuseFileInfo(); return(_fileSystem.ReadDir(ToSpan(path), offset, (ReadDirFlags)flags, ToDirectoryContent(buf, fillDelegate), ref fiF)); } catch (Exception ex) { Console.WriteLine($"READDIR gets error: {ex.Message}"); return(-EIO); } }
private unsafe int Readdir(path *path, void *buf, fuse_fill_dir *filler, ulong offset, fuse_file_info *fi, int flags) { try { fuse_fill_dir_Delegate fillDelegate; ManagedFiller previousFiller = _previousFiller; if (previousFiller != null && previousFiller.Filler == filler) { fillDelegate = previousFiller.Delegate; } else { fillDelegate = Marshal.GetDelegateForFunctionPointer <fuse_fill_dir_Delegate>(new IntPtr(filler)); _previousFiller = new ManagedFiller(filler, fillDelegate); } return(_fileSystem.ReadDir(ToSpan(path), offset, (ReadDirFlags)flags, ToDirectoryContent(buf, fillDelegate), ref ToFileInfoRef(fi))); } catch { return(-EIO); } }