diff options
Diffstat (limited to 'usr.bin/make/dir.c')
-rw-r--r-- | usr.bin/make/dir.c | 11 |
1 files changed, 8 insertions, 3 deletions
diff --git a/usr.bin/make/dir.c b/usr.bin/make/dir.c index 57d1687..137a21e 100644 --- a/usr.bin/make/dir.c +++ b/usr.bin/make/dir.c @@ -680,7 +680,7 @@ Dir_FindFile (char *name, Lst path) LstNode ln; /* a list element */ char *file; /* the current filename to check */ Path *p; /* current path member */ - char *cp; /* index of first slash, if any */ + char *cp; /* final component of the name */ Boolean hasSlash; /* true if 'name' contains a / */ struct stat stb; /* Buffer for stat, if necessary */ Hash_Entry *entry; /* Entry for mtimes table */ @@ -767,9 +767,14 @@ Dir_FindFile (char *name, Lst path) continue; } if (*p1 == '\0' && p2 == cp - 1) { - DEBUGF(DIR, ("must be here but isn't -- returing NULL\n")); Lst_Close (path); - return ((char *) NULL); + if (*cp == '\0' || ISDOT(cp) || ISDOTDOT(cp)) { + DEBUGF(DIR, ("returning %s\n", name)); + return (estrdup(name)); + } else { + DEBUGF(DIR, ("must be here but isn't -- returning NULL\n")); + return ((char *) NULL); + } } } } |