From 9ee3255349ff96435a719fa43ef80cf8300a841a Mon Sep 17 00:00:00 2001 From: Natalia Portillo Date: Tue, 3 Feb 2026 01:15:21 +0000 Subject: [PATCH] [BeOFS] Implement StatFS. --- Aaru.Filesystems/BOFS/Super.cs | 51 ++++++++++++++++++++++++++ Aaru.Filesystems/BOFS/Unimplemented.cs | 5 --- 2 files changed, 51 insertions(+), 5 deletions(-) create mode 100644 Aaru.Filesystems/BOFS/Super.cs diff --git a/Aaru.Filesystems/BOFS/Super.cs b/Aaru.Filesystems/BOFS/Super.cs new file mode 100644 index 000000000..3064c16b8 --- /dev/null +++ b/Aaru.Filesystems/BOFS/Super.cs @@ -0,0 +1,51 @@ +// /*************************************************************************** +// Aaru Data Preservation Suite +// ---------------------------------------------------------------------------- +// +// Filename : Super.cs +// Author(s) : Natalia Portillo +// +// Component : BeOS old filesystem plugin. +// +// --[ License ] -------------------------------------------------------------- +// +// This library is free software; you can redistribute it and/or modify +// it under the terms of the GNU Lesser General Public License as +// published by the Free Software Foundation; either version 2.1 of the +// License, or (at your option) any later version. +// +// This library is distributed in the hope that it will be useful, but +// WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +// Lesser General Public License for more details. +// +// You should have received a copy of the GNU Lesser General Public +// License along with this library; if not, see . +// +// ---------------------------------------------------------------------------- +// Copyright © 2011-2026 Natalia Portillo +// ****************************************************************************/ + +using Aaru.CommonTypes.Enums; +using Aaru.CommonTypes.Structs; + +namespace Aaru.Filesystems; + +public sealed partial class BOFS +{ + /// + public ErrorNumber StatFs(out FileSystemInfo stat) + { + stat = new FileSystemInfo + { + Blocks = (ulong)_track0.TotalSectors, + FilenameLength = 64, + FreeBlocks = _track0.TotalSectors > 0 ? (ulong)(_track0.TotalSectors - _track0.SectorsUsed) : 0, + FreeFiles = 0, // BOFS doesn't track available inodes + PluginId = Id, + Type = FS_TYPE + }; + + return ErrorNumber.NoError; + } +} \ No newline at end of file diff --git a/Aaru.Filesystems/BOFS/Unimplemented.cs b/Aaru.Filesystems/BOFS/Unimplemented.cs index 7e437623f..26a60e6f3 100644 --- a/Aaru.Filesystems/BOFS/Unimplemented.cs +++ b/Aaru.Filesystems/BOFS/Unimplemented.cs @@ -31,7 +31,6 @@ using System.Collections.Generic; using Aaru.CommonTypes.AaruMetadata; using Aaru.CommonTypes.Enums; using Aaru.CommonTypes.Interfaces; -using Aaru.CommonTypes.Structs; namespace Aaru.Filesystems; @@ -50,10 +49,6 @@ public sealed partial class BOFS public ErrorNumber Unmount() => throw new NotImplementedException(); - /// - public ErrorNumber StatFs(out FileSystemInfo stat) => throw new NotImplementedException(); - - /// public ErrorNumber ReadLink(string path, out string dest) => throw new NotImplementedException();