Beispiel #1
0
        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);
            }
        }
Beispiel #2
0
        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);
            }
        }