posix file: Add procedure to query the size of a file
Change-Id: Ib3b31e90ca98dc09185463ce467a70770e0f222d
Signed-off-by: Nico Huber <nico.h@gmx.de>
Reviewed-on: https://review.coreboot.org/21095
Reviewed-by: Arthur Heymans <arthur@aheymans.xyz>
diff --git a/ada/posix/hw-file.adb b/ada/posix/hw-file.adb
index e2384be..dd9d7f3 100644
--- a/ada/posix/hw-file.adb
+++ b/ada/posix/hw-file.adb
@@ -14,6 +14,7 @@
with Interfaces.C;
with Interfaces.C.Strings;
+with Ada.Directories;
with HW.Debug;
@@ -68,4 +69,18 @@
pragma Debug (not Success, Debug.New_Line);
end Map;
+ procedure Size (Length : out Natural; Path : String)
+ with
+ SPARK_Mode => Off
+ is
+ use type Ada.Directories.File_Size;
+ Res_Size : Ada.Directories.File_Size;
+ begin
+ Res_Size := Ada.Directories.Size (Path);
+ Length := Natural (Res_Size);
+ exception
+ when others =>
+ Length := 0;
+ end Size;
+
end HW.File;
diff --git a/common/hw-file.ads b/common/hw-file.ads
index 9dbfcf7..bc2242c 100644
--- a/common/hw-file.ads
+++ b/common/hw-file.ads
@@ -39,4 +39,8 @@
Pre => (Readable or Writable) and
(if Map_Copy then Readable and not Writable);
+ -- Sets `Length` to the size of the file given by `Path` or 0 if an
+ -- error occurs.
+ procedure Size (Length : out Natural; Path : String);
+
end HW.File;