aboutsummaryrefslogtreecommitdiff
path: root/gcc/ada/adaint.c
diff options
context:
space:
mode:
authorArnaud Charlet <charlet@gcc.gnu.org>2011-08-02 17:36:49 +0200
committerArnaud Charlet <charlet@gcc.gnu.org>2011-08-02 17:36:49 +0200
commitb191a12525973bac726397a591bbd636dc465e07 (patch)
tree4305c0af794e314013320062252e0c080fe25c92 /gcc/ada/adaint.c
parent316a0661918aacd3cc0acca417b5390ad1e3d535 (diff)
downloadgcc-b191a12525973bac726397a591bbd636dc465e07.zip
gcc-b191a12525973bac726397a591bbd636dc465e07.tar.gz
gcc-b191a12525973bac726397a591bbd636dc465e07.tar.bz2
[multiple changes]
2011-08-02 Vincent Celier <celier@adacore.com> * adaint.c (file_names_case_sensitive_cache): New static int. (__gnat_get_file_names_case_sensitive): Cache the return value in file_names_case_sensitive_cache at the first invocation, to avoid multiple calls to getenv. 2011-08-02 Bob Duff <duff@adacore.com> * sem_ch12.adb (Validate_Derived_Type_Instance): Implement AI05-0218-1. From-SVN: r177189
Diffstat (limited to 'gcc/ada/adaint.c')
-rw-r--r--gcc/ada/adaint.c22
1 files changed, 14 insertions, 8 deletions
diff --git a/gcc/ada/adaint.c b/gcc/ada/adaint.c
index 446f500..bfaa31a 100644
--- a/gcc/ada/adaint.c
+++ b/gcc/ada/adaint.c
@@ -592,21 +592,27 @@ __gnat_get_maximum_file_name_length (void)
/* Return nonzero if file names are case sensitive. */
+static int file_names_case_sensitive_cache = -1;
+
int
__gnat_get_file_names_case_sensitive (void)
{
- const char *sensitive = getenv ("GNAT_FILE_NAME_CASE_SENSITIVE");
+ if (file_names_case_sensitive_cache == -1)
+ {
+ const char *sensitive = getenv ("GNAT_FILE_NAME_CASE_SENSITIVE");
- if (sensitive != NULL
- && (sensitive[0] == '0' || sensitive[0] == '1')
- && sensitive[1] == '\0')
- return sensitive[0] - '0';
- else
+ if (sensitive != NULL
+ && (sensitive[0] == '0' || sensitive[0] == '1')
+ && sensitive[1] == '\0')
+ file_names_case_sensitive_cache = sensitive[0] - '0';
+ else
#if defined (VMS) || defined (WINNT) || defined (__APPLE__)
- return 0;
+ file_names_case_sensitive_cache = 0;
#else
- return 1;
+ file_names_case_sensitive_cache = 1;
#endif
+ }
+ return file_names_case_sensitive_cache;
}
/* Return nonzero if environment variables are case sensitive. */