aboutsummaryrefslogtreecommitdiff
path: root/gcc/ada/sysdep.c
diff options
context:
space:
mode:
authorJustin Squirek <squirek@adacore.com>2018-05-30 08:58:12 +0000
committerPierre-Marie de Rodat <pmderodat@gcc.gnu.org>2018-05-30 08:58:12 +0000
commitefa760f0ca2f45209525de0e9b6939351e1a0072 (patch)
tree4a3757f6f63dac9276c3c0ae180009fc3fae09c5 /gcc/ada/sysdep.c
parent0c506265dd18ed7669eac58c027320b5c16b2b6e (diff)
downloadgcc-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.c18
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
+}
+