aboutsummaryrefslogtreecommitdiff
path: root/gcc/ada/libgnat
diff options
context:
space:
mode:
authorSteve Baird <baird@adacore.com>2024-03-08 15:48:32 -0800
committerMarc Poulhiès <poulhies@adacore.com>2024-05-17 10:21:04 +0200
commit615c29a8c5d47a28887087d3ff49b9df7f74fe9e (patch)
treede666d57d0f164ea0ba9cc565cea806eb4d8a555 /gcc/ada/libgnat
parent591ddf34a1e759560d89627eefae1d0e13b61ee8 (diff)
downloadgcc-615c29a8c5d47a28887087d3ff49b9df7f74fe9e.zip
gcc-615c29a8c5d47a28887087d3ff49b9df7f74fe9e.tar.gz
gcc-615c29a8c5d47a28887087d3ff49b9df7f74fe9e.tar.bz2
ada: Do not query the modification time of a special file.
In Ada.Directories, the function Modification_Time raises Name_Error if it is called for a special file. So don't do that in Start_Search_Internal. gcc/ada/ * libgnat/a-direct.adb (Start_Search_Internal): Do not call Modification_Time for a special file; declare a Calendar.Time constant No_Time and use that instead.
Diffstat (limited to 'gcc/ada/libgnat')
-rw-r--r--gcc/ada/libgnat/a-direct.adb18
1 files changed, 16 insertions, 2 deletions
diff --git a/gcc/ada/libgnat/a-direct.adb b/gcc/ada/libgnat/a-direct.adb
index 32e020c..adff122 100644
--- a/gcc/ada/libgnat/a-direct.adb
+++ b/gcc/ada/libgnat/a-direct.adb
@@ -29,7 +29,7 @@
-- --
------------------------------------------------------------------------------
-with Ada.Calendar; use Ada.Calendar;
+with Ada.Calendar.Formatting; use Ada.Calendar;
with Ada.Characters.Handling; use Ada.Characters.Handling;
with Ada.Containers.Vectors;
with Ada.Directories.Validity; use Ada.Directories.Validity;
@@ -1392,6 +1392,17 @@ package body Ada.Directories is
end record;
Res : Result := (Found => False);
+
+ -- This declaration of No_Time copied from GNAT.Calendar
+ -- because adding a "with GNAT.Calendar;" to this unit
+ -- results in problems.
+
+ No_Time : constant Ada.Calendar.Time :=
+ Ada.Calendar.Formatting.Time_Of
+ (Ada.Calendar.Year_Number'First,
+ Ada.Calendar.Month_Number'First,
+ Ada.Calendar.Day_Number'First,
+ Time_Zone => 0);
begin
-- Get the file attributes for the directory item
@@ -1452,7 +1463,10 @@ package body Ada.Directories is
Full_Name => To_Unbounded_String (Path),
Attr_Error_Code => 0,
Kind => Res.Kind,
- Modification_Time => Modification_Time (Path),
+ Modification_Time =>
+ (if Res.Kind = Special_File
+ then No_Time
+ else Modification_Time (Path)),
Size => Res.Size));
end if;
end if;