diff options
author | Justin Squirek <squirek@adacore.com> | 2018-05-30 08:58:12 +0000 |
---|---|---|
committer | Pierre-Marie de Rodat <pmderodat@gcc.gnu.org> | 2018-05-30 08:58:12 +0000 |
commit | efa760f0ca2f45209525de0e9b6939351e1a0072 (patch) | |
tree | 4a3757f6f63dac9276c3c0ae180009fc3fae09c5 /gcc/ada/sysdep.c | |
parent | 0c506265dd18ed7669eac58c027320b5c16b2b6e (diff) | |
download | gcc-efa760f0ca2f45209525de0e9b6939351e1a0072.zip gcc-efa760f0ca2f45209525de0e9b6939351e1a0072.tar.gz gcc-efa760f0ca2f45209525de0e9b6939351e1a0072.tar.bz2 |
[Ada] ACATS 4.1G - CXAG003 - Name_Case_Equivalence doesn't exist
Implement a missing portion of Ada 2005's AI05-0049-1 for subprogram
Ada.Directories.Name_Case_Equivalence so that user programs can account for
operating system differences in case sensitivity.
------------
-- Source --
------------
-- main.adb
with Ada.Directories; use Ada.Directories;
with Ada.Text_IO; use Ada.Text_IO;
procedure Main is
begin
-- Directory layout:
-- /empty +-- Nothing...
--
-- /mutliplefiles +-- "TEST1.TXT"
-- |
-- "test1.txt"
--
-- /singlefile +-- "test1.txt"
--
-- /noncasable +-- "!"
--
Put_Line (Name_Case_Equivalence ("./empty")'Image);
Put_Line (Name_Case_Equivalence ("./multiplefiles")'Image);
Put_Line (Name_Case_Equivalence ("./singlefile")'Image);
Put_Line (Name_Case_Equivalence ("./multiplefiles/test1.txt")'Image);
Put_Line (Name_Case_Equivalence ("./singlefile/test1.txt")'Image);
Put_Line (Name_Case_Equivalence ("./noncaseable/!")'Image);
end;
----------------------------
-- Compilation and Output --
----------------------------
& gnatmake -q main.adb
& main
CASE_SENSITIVE
CASE_SENSITIVE
CASE_SENSITIVE
CASE_SENSITIVE
CASE_SENSITIVE
CASE_SENSITIVE
2018-05-30 Justin Squirek <squirek@adacore.com>
gcc/ada/
* libgnat/a-direct.adb, libgnat/a-direct.ads (Name_Case_Equivalence):
Add implementation.
(Start_Search): Modify to use Start_Search_Internal
(Start_Search_Internal): Add to break out an extra flag for searching
case insensative due to the potential for directories within the same
OS to allow different casing schemes.
* sysdep.c (__gnat_name_case_equivalence): Add as a default fallback
for when the more precise solution fails.
From-SVN: r260942
Diffstat (limited to 'gcc/ada/sysdep.c')
-rw-r--r-- | gcc/ada/sysdep.c | 18 |
1 files changed, 18 insertions, 0 deletions
diff --git a/gcc/ada/sysdep.c b/gcc/ada/sysdep.c index 98b3901..0b6a441 100644 --- a/gcc/ada/sysdep.c +++ b/gcc/ada/sysdep.c @@ -1049,3 +1049,21 @@ _getpagesize (void) return getpagesize (); } #endif + +int +__gnat_name_case_equivalence () +{ + /* the values here must be synchronized with Ada.Directories.Name_Case_Kind: + + Unknown = 0 + Case_Sensitive = 1 + Case_Insensitive = 2 + Case_Preserving = 3 */ + +#if defined (__APPLE__) || defined (WIN32) + return 3; +#else + return 1; +#endif +} + |