diff --git a/DiscImageChef.Filesystems/FAT/File.cs b/DiscImageChef.Filesystems/FAT/File.cs index e8dc2a4c7..9a9d8e881 100644 --- a/DiscImageChef.Filesystems/FAT/File.cs +++ b/DiscImageChef.Filesystems/FAT/File.cs @@ -44,7 +44,19 @@ namespace DiscImageChef.Filesystems.FAT deviceBlock = 0; if(!mounted) return Errno.AccessDenied; - throw new NotImplementedException(); + Errno err = Stat(path, out FileEntryInfo stat); + + if(err != Errno.NoError) return err; + + if(stat.Attributes.HasFlag(FileAttributes.Directory) && !debug) return Errno.IsDirectory; + + uint[] clusters = GetClusters((uint)stat.Inode); + + if(fileBlock >= clusters.Length) return Errno.InvalidArgument; + + deviceBlock = (long)(firstClusterSector + (clusters[fileBlock] - 2) * sectorsPerCluster); + + return Errno.NoError; } public Errno GetAttributes(string path, out FileAttributes attributes)