diff --git a/DiscImageChef.Filesystems/Opera/File.cs b/DiscImageChef.Filesystems/Opera/File.cs index f482fdfa9..678d19e37 100644 --- a/DiscImageChef.Filesystems/Opera/File.cs +++ b/DiscImageChef.Filesystems/Opera/File.cs @@ -8,7 +8,20 @@ namespace DiscImageChef.Filesystems { public partial class OperaFS { - public Errno MapBlock(string path, long fileBlock, out long deviceBlock) => throw new NotImplementedException(); + public Errno MapBlock(string path, long fileBlock, out long deviceBlock) + { + deviceBlock = 0; + if(!mounted) return Errno.AccessDenied; + + Errno err = GetFileEntry(path, out DirectoryEntryWithPointers entry); + if(err != Errno.NoError) return err; + + if((entry.entry.flags & FLAGS_MASK) == (uint)FileFlags.Directory && !debug) return Errno.IsDirectory; + + deviceBlock = entry.pointers[0] + fileBlock; + + return Errno.NoError; + } public Errno GetAttributes(string path, out FileAttributes attributes) {