diff Python/sysmodule.c @ 4256:e225e70fd657 legacy-trunk

Changes to setpythonpath(): Test for / as well as for SEP for MS filenames. Drop trailing separator from sys.path[0] for MS and Unix filenames.
author Guido van Rossum <guido@python.org>
date Tue, 10 Sep 1996 14:44:21 +0000
parents c80c515999b9
children 1427d61f1307
line wrap: on
line diff
--- a/Python/sysmodule.c	Tue Sep 10 12:39:26 1996 +0000
+++ b/Python/sysmodule.c	Tue Sep 10 14:44:21 1996 +0000
@@ -367,14 +367,33 @@
 		fatal("can't assign sys.argv");
 	if (path != NULL) {
 		char *p = NULL;
-		int n;
+		int n = 0;
 		object *a;
+#if SEP == '\\' /* Special case for MS filename syntax */
+		if (argc > 0 && argv[0] != NULL) {
+			char *q;
+			p = strrchr(argv[0], SEP);
+			/* Test for alternate separator */
+			q = strrchr(p ? p : argv[0], '/');
+			if (q != NULL)
+				p = q;
+			if (p != NULL) {
+				n = p + 1 - argv[0];
+				if (n > 1 && p[-1] != ':')
+					n--; /* Drop trailing separator */
+			}
+		}
+#else /* All other filename syntaxes */
 		if (argc > 0 && argv[0] != NULL)
 			p = strrchr(argv[0], SEP);
-		if (p == NULL)
-			n = 0;
-		else
+		if (p != NULL) {
 			n = p + 1 - argv[0];
+#if SEP == '/' /* Special case for Unix filename syntax */
+			if (n > 1)
+				n--; /* Drop trailing separator */
+#endif /* Unix */
+		}
+#endif /* All others */
 		a = newsizedstringobject(argv[0], n);
 		if (a == NULL)
 			fatal("no mem for sys.path insertion");