mirror of
https://github.com/aaru-dps/Aaru.git
synced 2025-12-16 19:24:25 +00:00
[HA] Implement Stat.
This commit is contained in:
@@ -1,6 +1,7 @@
|
|||||||
using System;
|
using System;
|
||||||
using System.IO;
|
|
||||||
using Aaru.CommonTypes.Enums;
|
using Aaru.CommonTypes.Enums;
|
||||||
|
using Aaru.CommonTypes.Structs;
|
||||||
|
using FileAttributes = System.IO.FileAttributes;
|
||||||
|
|
||||||
namespace Aaru.Archives;
|
namespace Aaru.Archives;
|
||||||
|
|
||||||
@@ -89,5 +90,52 @@ public sealed partial class Ha
|
|||||||
return ErrorNumber.NoError;
|
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.LastWrite,
|
||||||
|
LastWriteTimeUtc = entry.LastWrite
|
||||||
|
};
|
||||||
|
|
||||||
|
if(entry.Uncompressed % 512 != 0) stat.Blocks++;
|
||||||
|
|
||||||
|
if(entry.Attributes.HasFlag(FileAttributes.Directory))
|
||||||
|
stat.Attributes |= CommonTypes.Structs.FileAttributes.Directory;
|
||||||
|
else
|
||||||
|
stat.Attributes |= CommonTypes.Structs.FileAttributes.File;
|
||||||
|
|
||||||
|
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;
|
||||||
|
|
||||||
|
stat.Mode = entry.Mode;
|
||||||
|
stat.UID = entry.Uid;
|
||||||
|
stat.GID = entry.Gid;
|
||||||
|
|
||||||
|
return ErrorNumber.NoError;
|
||||||
|
}
|
||||||
|
|
||||||
#endregion
|
#endregion
|
||||||
}
|
}
|
||||||
@@ -17,9 +17,9 @@ public sealed partial class Ha
|
|||||||
public FileAttributes Attributes;
|
public FileAttributes Attributes;
|
||||||
public long DataOffset;
|
public long DataOffset;
|
||||||
public string Filename;
|
public string Filename;
|
||||||
public ushort Mode;
|
public ushort? Mode;
|
||||||
public ushort Uid;
|
public ushort? Uid;
|
||||||
public ushort Gid;
|
public ushort? Gid;
|
||||||
}
|
}
|
||||||
|
|
||||||
#endregion
|
#endregion
|
||||||
|
|||||||
@@ -1,7 +1,6 @@
|
|||||||
using System;
|
using System;
|
||||||
using Aaru.CommonTypes.Enums;
|
using Aaru.CommonTypes.Enums;
|
||||||
using Aaru.CommonTypes.Interfaces;
|
using Aaru.CommonTypes.Interfaces;
|
||||||
using Aaru.CommonTypes.Structs;
|
|
||||||
|
|
||||||
namespace Aaru.Archives;
|
namespace Aaru.Archives;
|
||||||
|
|
||||||
@@ -9,10 +8,6 @@ public sealed partial class Ha
|
|||||||
{
|
{
|
||||||
#region IArchive Members
|
#region IArchive Members
|
||||||
|
|
||||||
/// <inheritdoc />
|
|
||||||
/// <inheritdoc />
|
|
||||||
public ErrorNumber Stat(int entryNumber, out FileEntryInfo stat) => throw new NotImplementedException();
|
|
||||||
|
|
||||||
/// <inheritdoc />
|
/// <inheritdoc />
|
||||||
public ErrorNumber GetEntry(int entryNumber, out IFilter filter) => throw new NotImplementedException();
|
public ErrorNumber GetEntry(int entryNumber, out IFilter filter) => throw new NotImplementedException();
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user