summaryrefslogtreecommitdiff
path: root/file.c
diff options
context:
space:
mode:
Diffstat (limited to 'file.c')
-rw-r--r--file.c26
1 files changed, 18 insertions, 8 deletions
diff --git a/file.c b/file.c
index e1a8e80..fab1d96 100644
--- a/file.c
+++ b/file.c
@@ -75,9 +75,12 @@ lookup_file (const char *name)
{
struct file *f;
struct file file_key;
-#if defined(VMS) && !defined(WANT_CASE_SENSITIVE_TARGETS)
+#ifdef VMS
+ int want_vmsify;
+#ifndef WANT_CASE_SENSITIVE_TARGETS
char *lname;
#endif
+#endif
assert (*name != '\0');
@@ -85,6 +88,7 @@ lookup_file (const char *name)
for names read from makefiles. It is here for names passed
on the command line. */
#ifdef VMS
+ want_vmsify = (strpbrk (name, "]>:^") != NULL);
# ifndef WANT_CASE_SENSITIVE_TARGETS
if (*name != '.')
{
@@ -100,6 +104,8 @@ lookup_file (const char *name)
while (name[0] == '[' && name[1] == ']' && name[2] != '\0')
name += 2;
+ while (name[0] == '<' && name[1] == '>' && name[2] != '\0')
+ name += 2;
#endif
while (name[0] == '.'
#ifdef HAVE_DOS_PATHS
@@ -120,15 +126,19 @@ lookup_file (const char *name)
}
if (*name == '\0')
- /* It was all slashes after a dot. */
-#if defined(VMS)
- name = "[]";
-#elif defined(_AMIGA)
- name = "";
+ {
+ /* It was all slashes after a dot. */
+#if defined(_AMIGA)
+ name = "";
#else
- name = "./";
+ name = "./";
#endif
-
+#if defined(VMS)
+ /* TODO - This section is probably not needed. */
+ if (want_vmsify)
+ name = "[]";
+#endif
+ }
file_key.hname = name;
f = hash_find_item (&files, &file_key);
#if defined(VMS) && !defined(WANT_CASE_SENSITIVE_TARGETS)