aboutsummaryrefslogtreecommitdiff
path: root/gcc/ada
diff options
context:
space:
mode:
authorDoug Rupp <rupp@adacore.com>2005-03-29 18:13:31 +0200
committerArnaud Charlet <charlet@gcc.gnu.org>2005-03-29 18:13:31 +0200
commit78dabc95d53fa3a6c41039456eeec9ac9763fea8 (patch)
tree091d36c2b73022556a90cec05742791a6bbadf6c /gcc/ada
parenta50c33459fc9967a388f254e93de7cdbae438a66 (diff)
downloadgcc-78dabc95d53fa3a6c41039456eeec9ac9763fea8.zip
gcc-78dabc95d53fa3a6c41039456eeec9ac9763fea8.tar.gz
gcc-78dabc95d53fa3a6c41039456eeec9ac9763fea8.tar.bz2
adaint.c (__gnat_to_canonical_file_spec [VMS]): Check for logical name and translate.
2005-03-29 Doug Rupp <rupp@adacore.com> * adaint.c (__gnat_to_canonical_file_spec [VMS]): Check for logical name and translate. From-SVN: r97167
Diffstat (limited to 'gcc/ada')
-rw-r--r--gcc/ada/adaint.c17
1 files changed, 14 insertions, 3 deletions
diff --git a/gcc/ada/adaint.c b/gcc/ada/adaint.c
index fbb67af..2195b49 100644
--- a/gcc/ada/adaint.c
+++ b/gcc/ada/adaint.c
@@ -2204,18 +2204,29 @@ __gnat_to_canonical_dir_spec (char *dirspec, int prefixflag)
}
/* Translate a VMS syntax file specification into Unix syntax.
- If no indicators of VMS syntax found, return input string. */
+ If no indicators of VMS syntax found, check if its an uppercase
+ alphanumeric_ name and if so try it out as an environment
+ variable (logical name). If all else fails return the
+ input string. */
char *
__gnat_to_canonical_file_spec (char *filespec)
{
+ char *filespec1;
+
strncpy (new_canonical_filespec, "", MAXPATH);
if (strchr (filespec, ']') || strchr (filespec, ':'))
{
strncpy (new_canonical_filespec,
- (char *) decc$translate_vms (filespec),
- MAXPATH);
+ (char *) decc$translate_vms (filespec), MAXPATH);
+ }
+ else if ((strlen (filespec) == strspn (filespec,
+ "ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789_"))
+ && (filespec1 = getenv (filespec)))
+ {
+ strncpy (new_canonical_filespec,
+ (char *) decc$translate_vms (filespec1), MAXPATH);
}
else
{