From def89ebc0588f05a7ff9b1f475ae974527bb1f0f Mon Sep 17 00:00:00 2001 From: Nico Huber Date: Fri, 18 Aug 2017 17:38:55 +0200 Subject: [PATCH] posix file: Add procedure to query the size of a file Change-Id: Ib3b31e90ca98dc09185463ce467a70770e0f222d Signed-off-by: Nico Huber Reviewed-on: https://review.coreboot.org/21095 Reviewed-by: Arthur Heymans --- ada/posix/hw-file.adb | 15 +++++++++++++++ common/hw-file.ads | 4 ++++ 2 files changed, 19 insertions(+) diff --git a/ada/posix/hw-file.adb b/ada/posix/hw-file.adb index e2384bee85..dd9d7f3bc6 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 @@ package body HW.File is 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 9dbfcf77d7..bc2242c547 100644 --- a/common/hw-file.ads +++ b/common/hw-file.ads @@ -39,4 +39,8 @@ package HW.File is 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;