diff options
author | Doug Rupp <rupp@adacore.com> | 2005-03-29 18:13:31 +0200 |
---|---|---|
committer | Arnaud Charlet <charlet@gcc.gnu.org> | 2005-03-29 18:13:31 +0200 |
commit | 78dabc95d53fa3a6c41039456eeec9ac9763fea8 (patch) | |
tree | 091d36c2b73022556a90cec05742791a6bbadf6c /gcc/ada | |
parent | a50c33459fc9967a388f254e93de7cdbae438a66 (diff) | |
download | gcc-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.c | 17 |
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 { |