[ARC] Implement Stat.

This commit is contained in:
2025-09-01 06:26:42 +01:00
parent 4ac93232b0
commit a2ddbb2846
2 changed files with 41 additions and 5 deletions

View File

@@ -1,6 +1,7 @@
using System;
using System.IO;
using Aaru.CommonTypes.Enums;
using Aaru.CommonTypes.Structs;
using FileAttributes = System.IO.FileAttributes;
namespace Aaru.Archives;
@@ -90,5 +91,44 @@ public sealed partial class Arc
return ErrorNumber.NoError;
}
/// <inheritdoc />
public ErrorNumber Stat(int entryNumber, out FileEntryInfo stat)
{
stat = null;
if(!Opened) return ErrorNumber.NotOpened;
if(entryNumber < 0 || entryNumber >= _entries.Count) return ErrorNumber.OutOfRange;
Entry entry = _entries[entryNumber];
stat = new FileEntryInfo
{
Attributes = CommonTypes.Structs.FileAttributes.None,
Blocks = entry.Uncompressed / 512,
BlockSize = 512,
Length = entry.Uncompressed,
LastWriteTime = entry.LastWriteTime,
LastWriteTimeUtc = entry.LastWriteTime
};
if(entry.Attributes.HasFlag(FileAttributes.Directory))
stat.Attributes |= CommonTypes.Structs.FileAttributes.Directory;
if(entry.Attributes.HasFlag(FileAttributes.Archive))
stat.Attributes |= CommonTypes.Structs.FileAttributes.Archive;
if(entry.Attributes.HasFlag(FileAttributes.Hidden))
stat.Attributes |= CommonTypes.Structs.FileAttributes.Hidden;
if(entry.Attributes.HasFlag(FileAttributes.ReadOnly))
stat.Attributes |= CommonTypes.Structs.FileAttributes.ReadOnly;
if(entry.Attributes.HasFlag(FileAttributes.System))
stat.Attributes |= CommonTypes.Structs.FileAttributes.System;
return ErrorNumber.NoError;
}
#endregion
}

View File

@@ -1,7 +1,6 @@
using System;
using Aaru.CommonTypes.Enums;
using Aaru.CommonTypes.Interfaces;
using Aaru.CommonTypes.Structs;
namespace Aaru.Archives;
@@ -9,9 +8,6 @@ public sealed partial class Arc
{
#region IArchive Members
/// <inheritdoc />
public ErrorNumber Stat(int entryNumber, out FileEntryInfo stat) => throw new NotImplementedException();
/// <inheritdoc />
public ErrorNumber GetEntry(int entryNumber, out IFilter filter) => throw new NotImplementedException();