summaryrefslogtreecommitdiffstats
path: root/usr.bin/make
diff options
context:
space:
mode:
authorru <ru@FreeBSD.org>2003-10-02 21:30:30 +0000
committerru <ru@FreeBSD.org>2003-10-02 21:30:30 +0000
commitf246003ac7f1a9c9f7ad60af2eb277214fc51f4c (patch)
treece7b4dd061a28517eb5677f21263ba45f59ffd29 /usr.bin/make
parent660d6cc7c1cd42f3526f3a1a124bca9801bcf306 (diff)
downloadFreeBSD-src-f246003ac7f1a9c9f7ad60af2eb277214fc51f4c.zip
FreeBSD-src-f246003ac7f1a9c9f7ad60af2eb277214fc51f4c.tar.gz
Fix a bug that prevented exists() from finding "foo/", "foo/."
and "foo/.." when ".PATH: foo" was also given. PR: bin/34062
Diffstat (limited to 'usr.bin/make')
-rw-r--r--usr.bin/make/dir.c11
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);
+ }
}
}
}
OpenPOWER on IntegriCloud