diff options
author | Steve Baird <baird@adacore.com> | 2024-03-08 15:48:32 -0800 |
---|---|---|
committer | Marc Poulhiès <poulhies@adacore.com> | 2024-05-17 10:21:04 +0200 |
commit | 615c29a8c5d47a28887087d3ff49b9df7f74fe9e (patch) | |
tree | de666d57d0f164ea0ba9cc565cea806eb4d8a555 /gcc | |
parent | 591ddf34a1e759560d89627eefae1d0e13b61ee8 (diff) | |
download | gcc-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')
-rw-r--r-- | gcc/ada/libgnat/a-direct.adb | 18 |
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; |