diff Modules/getpath.c @ 5482:6fa29756ec6a legacy-trunk

Fix problem reported by Donn Cave: if VPATH is an absolute path, it would always be a hit. Prevent this by only using VPATH if we know we are in the build directory.
author Guido van Rossum <guido@python.org>
date Mon, 12 May 1997 20:49:39 +0000
parents c8e24c4b8bfb
children 73509efa724b
line wrap: on
line diff
--- a/Modules/getpath.c	Mon May 12 16:04:09 1997 +0000
+++ b/Modules/getpath.c	Mon May 12 20:49:39 1997 +0000
@@ -209,25 +209,30 @@
 	int i, n;
 	char *vpath;
 
-	/* Check VPATH to see if argv0_path is in the build directory.
-	 * Complication: the VPATH passed in is relative to the
-	 * Modules build directory and points to the Modules source
-	 * directory; we need it relative to the build tree and
-	 * pointing to the source tree.  Solution: chop off a leading
-	 * ".." (but only if it's there -- it could be an absolute
-	 * path) and chop off the final component (assuming it's
-	 * "Modules").
-	 */
-	vpath = VPATH;
-	if (vpath[0] == '.' && vpath[1] == '.' && vpath[2] == '/')
-		vpath += 3;
+	/* Check to see if argv[0] is in the build directory */
 	strcpy(prefix, argv0_path);
-	join(prefix, vpath);
-	reduce(prefix);
-	join(prefix, "Lib");
-	join(prefix, LANDMARK);
-	if (exists(prefix))
-		return -1;
+	join(prefix, "Modules/Setup");
+	if (exists(prefix)) {
+		/* Check VPATH to see if argv0_path is in the build directory.
+		 * Complication: the VPATH passed in is relative to the
+		 * Modules build directory and points to the Modules source
+		 * directory; we need it relative to the build tree and
+		 * pointing to the source tree.  Solution: chop off a leading
+		 * ".." (but only if it's there -- it could be an absolute
+		 * path) and chop off the final component (assuming it's
+		 * "Modules").
+		 */
+		vpath = VPATH;
+		if (vpath[0] == '.' && vpath[1] == '.' && vpath[2] == '/')
+			vpath += 3;
+		strcpy(prefix, argv0_path);
+		join(prefix, vpath);
+		reduce(prefix);
+		join(prefix, "Lib");
+		join(prefix, LANDMARK);
+		if (exists(prefix))
+			return -1;
+	}
 
 	if (home) {
 		/* Check $PYTHONHOME */
@@ -474,6 +479,8 @@
 			strcpy(buf, rtpypath);
 			strcat(buf, delimiter);
 		}
+		else
+			buf[0] = '\0';
 
 		/* Next goes merge of compile-time $PYTHONPATH with
 		 * dynamically located prefix.