[Python-checkins] CVS: python/dist/src/Modules getpath.c,1.25,1.26

Fred L. Drake python-dev@python.org
Fri, 7 Jul 2000 23:16:40 -0700


Update of /cvsroot/python/python/dist/src/Modules
In directory slayer.i.sourceforge.net:/tmp/cvs-serv23644

Modified Files:
	getpath.c 
Log Message:

ANSI-fied sources, converted to four-space indentation.


Index: getpath.c
===================================================================
RCS file: /cvsroot/python/python/dist/src/Modules/getpath.c,v
retrieving revision 1.25
retrieving revision 1.26
diff -C2 -r1.25 -r1.26
*** getpath.c	2000/06/30 23:58:05	1.25
--- getpath.c	2000/07/08 06:16:37	1.26
***************
*** 140,150 ****
  
  static void
! reduce(dir)
! 	char *dir;
  {
! 	size_t i = strlen(dir);
! 	while (i > 0 && dir[i] != SEP)
! 		--i;
! 	dir[i] = '\0';
  }
  
--- 140,149 ----
  
  static void
! reduce(char *dir)
  {
!     size_t i = strlen(dir);
!     while (i > 0 && dir[i] != SEP)
!         --i;
!     dir[i] = '\0';
  }
  
***************
*** 159,358 ****
  
  static int
! isfile(filename)		/* Is file, not directory */
! 	char *filename;
  {
! 	struct stat buf;
! 	if (stat(filename, &buf) != 0)
! 		return 0;
! 	if (!S_ISREG(buf.st_mode))
! 		return 0;
! 	return 1;
  }
  
  
  static int
! ismodule(filename)		/* Is module -- check for .pyc/.pyo too */
! 	char *filename;
  {
! 	if (isfile(filename))
! 		return 1;
  
! 	/* Check for the compiled version of prefix. */
! 	if (strlen(filename) < MAXPATHLEN) {
! 		strcat(filename, Py_OptimizeFlag ? "o" : "c");
! 		if (isfile(filename))
! 			return 1;
! 	}
! 	return 0;
  }
  
  
  static int
! isxfile(filename)		/* Is executable file */
! 	char *filename;
  {
! 	struct stat buf;
! 	if (stat(filename, &buf) != 0)
! 		return 0;
! 	if (!S_ISREG(buf.st_mode))
! 		return 0;
! 	if ((buf.st_mode & 0111) == 0)
! 		return 0;
! 	return 1;
  }
  
  
  static int
! isdir(filename)			/* Is directory */
! 	char *filename;
  {
! 	struct stat buf;
! 	if (stat(filename, &buf) != 0)
! 		return 0;
! 	if (!S_ISDIR(buf.st_mode))
! 		return 0;
! 	return 1;
  }
  
  
  static void
! joinpath(buffer, stuff)
! 	char *buffer;
! 	char *stuff;
! {
! 	size_t n, k;
! 	if (stuff[0] == SEP)
! 		n = 0;
! 	else {
! 		n = strlen(buffer);
! 		if (n > 0 && buffer[n-1] != SEP && n < MAXPATHLEN)
! 			buffer[n++] = SEP;
! 	}
! 	k = strlen(stuff);
! 	if (n + k > MAXPATHLEN)
! 		k = MAXPATHLEN - n;
! 	strncpy(buffer+n, stuff, k);
! 	buffer[n+k] = '\0';
  }
  
  
  static int
! search_for_prefix(argv0_path, home)
! 	char *argv0_path;
! 	char *home;
! {
! 	size_t n;
! 	char *vpath;
! 
! 	/* If PYTHONHOME is set, we believe it unconditionally */
! 	if (home) {
! 		char *delim;
! 		strcpy(prefix, home);
! 		delim = strchr(prefix, DELIM);
! 		if (delim)
! 			*delim = '\0';
! 		joinpath(prefix, lib_python);
! 		joinpath(prefix, LANDMARK);
! 		return 1;
! 	}
! 
! 	/* Check to see if argv[0] is in the build directory */
! 	strcpy(prefix, argv0_path);
! 	joinpath(prefix, "Modules/Setup");
! 	if (isfile(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);
! 		joinpath(prefix, vpath);
! 		reduce(prefix);
! 		joinpath(prefix, "Lib");
! 		joinpath(prefix, LANDMARK);
! 		if (ismodule(prefix))
! 			return -1;
! 	}
  
! 	/* Search from argv0_path, until root is found */
! 	strcpy(prefix, argv0_path);
! 	do {
! 		n = strlen(prefix);
! 		joinpath(prefix, lib_python);
! 		joinpath(prefix, LANDMARK);
! 		if (ismodule(prefix))
! 			return 1;
! 		prefix[n] = '\0';
! 		reduce(prefix);
! 	} while (prefix[0]);
! 
! 	/* Look at configure's PREFIX */
! 	strcpy(prefix, PREFIX);
! 	joinpath(prefix, lib_python);
! 	joinpath(prefix, LANDMARK);
! 	if (ismodule(prefix))
! 		return 1;
  
! 	/* Fail */
! 	return 0;
  }
  
  
  static int
! search_for_exec_prefix(argv0_path, home)
! 	char *argv0_path;
! 	char *home;
! {
! 	size_t n;
! 
! 	/* If PYTHONHOME is set, we believe it unconditionally */
! 	if (home) {
! 		char *delim;
! 		delim = strchr(home, DELIM);
! 		if (delim)
! 			strcpy(exec_prefix, delim+1);
! 		else
! 			strcpy(exec_prefix, home);
! 		joinpath(exec_prefix, lib_python);
! 		joinpath(exec_prefix, "lib-dynload");
! 			return 1;
! 	}
! 
! 	/* Check to see if argv[0] is in the build directory */
! 	strcpy(exec_prefix, argv0_path);
! 	joinpath(exec_prefix, "Modules/Setup");
! 	if (isfile(exec_prefix)) {
! 		reduce(exec_prefix);
! 		return -1;
! 	}
  
! 	/* Search from argv0_path, until root is found */
! 	strcpy(exec_prefix, argv0_path);
! 	do {
! 		n = strlen(exec_prefix);
! 		joinpath(exec_prefix, lib_python);
! 		joinpath(exec_prefix, "lib-dynload");
! 		if (isdir(exec_prefix))
! 			return 1;
! 		exec_prefix[n] = '\0';
! 		reduce(exec_prefix);
! 	} while (exec_prefix[0]);
! 
! 	/* Look at configure's EXEC_PREFIX */
! 	strcpy(exec_prefix, EXEC_PREFIX);
! 	joinpath(exec_prefix, lib_python);
! 	joinpath(exec_prefix, "lib-dynload");
! 	if (isdir(exec_prefix))
! 		return 1;
  
! 	/* Fail */
! 	return 0;
  }
  
--- 158,347 ----
  
  static int
! isfile(char *filename)		/* Is file, not directory */
  {
!     struct stat buf;
!     if (stat(filename, &buf) != 0)
!         return 0;
!     if (!S_ISREG(buf.st_mode))
!         return 0;
!     return 1;
  }
  
  
  static int
! ismodule(char *filename)	/* Is module -- check for .pyc/.pyo too */
  {
!     if (isfile(filename))
!         return 1;
  
!     /* Check for the compiled version of prefix. */
!     if (strlen(filename) < MAXPATHLEN) {
!         strcat(filename, Py_OptimizeFlag ? "o" : "c");
!         if (isfile(filename))
!             return 1;
!     }
!     return 0;
  }
  
  
  static int
! isxfile(char *filename)		/* Is executable file */
  {
!     struct stat buf;
!     if (stat(filename, &buf) != 0)
!         return 0;
!     if (!S_ISREG(buf.st_mode))
!         return 0;
!     if ((buf.st_mode & 0111) == 0)
!         return 0;
!     return 1;
  }
  
  
  static int
! isdir(char *filename)			/* Is directory */
  {
!     struct stat buf;
!     if (stat(filename, &buf) != 0)
!         return 0;
!     if (!S_ISDIR(buf.st_mode))
!         return 0;
!     return 1;
  }
  
  
  static void
! joinpath(char *buffer, char *stuff)
! {
!     size_t n, k;
!     if (stuff[0] == SEP)
!         n = 0;
!     else {
!         n = strlen(buffer);
!         if (n > 0 && buffer[n-1] != SEP && n < MAXPATHLEN)
!             buffer[n++] = SEP;
!     }
!     k = strlen(stuff);
!     if (n + k > MAXPATHLEN)
!         k = MAXPATHLEN - n;
!     strncpy(buffer+n, stuff, k);
!     buffer[n+k] = '\0';
  }
  
  
  static int
! search_for_prefix(char *argv0_path, char *home)
! {
!     size_t n;
!     char *vpath;
  
!     /* If PYTHONHOME is set, we believe it unconditionally */
!     if (home) {
!         char *delim;
!         strcpy(prefix, home);
!         delim = strchr(prefix, DELIM);
!         if (delim)
!             *delim = '\0';
!         joinpath(prefix, lib_python);
!         joinpath(prefix, LANDMARK);
!         return 1;
!     }
! 
!     /* Check to see if argv[0] is in the build directory */
!     strcpy(prefix, argv0_path);
!     joinpath(prefix, "Modules/Setup");
!     if (isfile(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);
!         joinpath(prefix, vpath);
!         reduce(prefix);
!         joinpath(prefix, "Lib");
!         joinpath(prefix, LANDMARK);
!         if (ismodule(prefix))
!             return -1;
!     }
! 
!     /* Search from argv0_path, until root is found */
!     strcpy(prefix, argv0_path);
!     do {
!         n = strlen(prefix);
!         joinpath(prefix, lib_python);
!         joinpath(prefix, LANDMARK);
!         if (ismodule(prefix))
!             return 1;
!         prefix[n] = '\0';
!         reduce(prefix);
!     } while (prefix[0]);
! 
!     /* Look at configure's PREFIX */
!     strcpy(prefix, PREFIX);
!     joinpath(prefix, lib_python);
!     joinpath(prefix, LANDMARK);
!     if (ismodule(prefix))
!         return 1;
  
!     /* Fail */
!     return 0;
  }
  
  
  static int
! search_for_exec_prefix(char *argv0_path, char *home)
! {
!     size_t n;
  
!     /* If PYTHONHOME is set, we believe it unconditionally */
!     if (home) {
!         char *delim;
!         delim = strchr(home, DELIM);
!         if (delim)
!             strcpy(exec_prefix, delim+1);
!         else
!             strcpy(exec_prefix, home);
!         joinpath(exec_prefix, lib_python);
!         joinpath(exec_prefix, "lib-dynload");
!         return 1;
!     }
! 
!     /* Check to see if argv[0] is in the build directory */
!     strcpy(exec_prefix, argv0_path);
!     joinpath(exec_prefix, "Modules/Setup");
!     if (isfile(exec_prefix)) {
!         reduce(exec_prefix);
!         return -1;
!     }
! 
!     /* Search from argv0_path, until root is found */
!     strcpy(exec_prefix, argv0_path);
!     do {
!         n = strlen(exec_prefix);
!         joinpath(exec_prefix, lib_python);
!         joinpath(exec_prefix, "lib-dynload");
!         if (isdir(exec_prefix))
!             return 1;
!         exec_prefix[n] = '\0';
!         reduce(exec_prefix);
!     } while (exec_prefix[0]);
! 
!     /* Look at configure's EXEC_PREFIX */
!     strcpy(exec_prefix, EXEC_PREFIX);
!     joinpath(exec_prefix, lib_python);
!     joinpath(exec_prefix, "lib-dynload");
!     if (isdir(exec_prefix))
!         return 1;
  
!     /* Fail */
!     return 0;
  }
  
***************
*** 361,395 ****
  calculate_path()
  {
! 	extern char *Py_GetProgramName();
  
! 	static char delimiter[2] = {DELIM, '\0'};
! 	static char separator[2] = {SEP, '\0'};
! 	char *pythonpath = PYTHONPATH;
! 	char *rtpypath = getenv("PYTHONPATH");
! 	char *home = Py_GetPythonHome();
! 	char *path = getenv("PATH");
! 	char *prog = Py_GetProgramName();
! 	char argv0_path[MAXPATHLEN+1];
! 	int pfound, efound; /* 1 if found; -1 if found build directory */
! 	char *buf;
! 	size_t bufsz;
! 	size_t prefixsz;
! 	char *defpath = pythonpath;
  #ifdef WITH_NEXT_FRAMEWORK
!         NSModule pythonModule;
  #endif
  	
  #ifdef WITH_NEXT_FRAMEWORK
!         pythonModule = NSModuleForSymbol(NSLookupAndBindSymbol("_Py_Initialize"));
! 	/* Use dylib functions to find out where the framework was loaded from */
!         buf = NSLibraryNameForModule(pythonModule);
!         if (buf != NULL) {
!             /* We're in a framework. */
!             strcpy(progpath, buf);
! 
!             /* Frameworks have support for versioning */
!             strcpy(lib_python, "lib");
!         } else {
!             /* If we're not in a framework, fall back to the old way (even though NSNameOfModule() probably does the same thing.) */
  #endif
  	
--- 350,386 ----
  calculate_path()
  {
!     extern char *Py_GetProgramName();
  
!     static char delimiter[2] = {DELIM, '\0'};
!     static char separator[2] = {SEP, '\0'};
!     char *pythonpath = PYTHONPATH;
!     char *rtpypath = getenv("PYTHONPATH");
!     char *home = Py_GetPythonHome();
!     char *path = getenv("PATH");
!     char *prog = Py_GetProgramName();
!     char argv0_path[MAXPATHLEN+1];
!     int pfound, efound; /* 1 if found; -1 if found build directory */
!     char *buf;
!     size_t bufsz;
!     size_t prefixsz;
!     char *defpath = pythonpath;
  #ifdef WITH_NEXT_FRAMEWORK
!     NSModule pythonModule;
  #endif
  	
  #ifdef WITH_NEXT_FRAMEWORK
!     pythonModule = NSModuleForSymbol(NSLookupAndBindSymbol("_Py_Initialize"));
!     /* Use dylib functions to find out where the framework was loaded from */
!     buf = NSLibraryNameForModule(pythonModule);
!     if (buf != NULL) {
!         /* We're in a framework. */
!         strcpy(progpath, buf);
! 
!         /* Frameworks have support for versioning */
!         strcpy(lib_python, "lib");
!     }
!     else {
!         /* If we're not in a framework, fall back to the old way
!            (even though NSNameOfModule() probably does the same thing.) */
  #endif
  	
***************
*** 403,579 ****
  	 */
  	if (strchr(prog, SEP))
! 		strcpy(progpath, prog);
  	else if (path) {
! 		while (1) {
! 			char *delim = strchr(path, DELIM);
  
! 			if (delim) {
! 				size_t len = delim - path;
! 				strncpy(progpath, path, len);
! 				*(progpath + len) = '\0';
! 			}
! 			else
! 				strcpy(progpath, path);
! 
! 			joinpath(progpath, prog);
! 			if (isxfile(progpath))
! 				break;
! 
! 			if (!delim) {
! 				progpath[0] = '\0';
! 				break;
! 			}
! 			path = delim + 1;
! 		}
  	}
  	else
! 		progpath[0] = '\0';
  #ifdef WITH_NEXT_FRAMEWORK
!         }
  #endif
  
! 	strcpy(argv0_path, progpath);
  	
  #if HAVE_READLINK
! 	{
! 		char tmpbuffer[MAXPATHLEN+1];
! 		int linklen = readlink(progpath, tmpbuffer, MAXPATHLEN);
! 		while (linklen != -1) {
! 			/* It's not null terminated! */
! 			tmpbuffer[linklen] = '\0';
! 			if (tmpbuffer[0] == SEP)
! 				strcpy(argv0_path, tmpbuffer);
! 			else {
! 				/* Interpret relative to progpath */
! 				reduce(argv0_path);
! 				joinpath(argv0_path, tmpbuffer);
! 			}
! 			linklen = readlink(argv0_path, tmpbuffer, MAXPATHLEN);
! 		}
! 	}
  #endif /* HAVE_READLINK */
  
! 	reduce(argv0_path);
  
! 	if (!(pfound = search_for_prefix(argv0_path, home))) {
! 		if (!Py_FrozenFlag)
! 		fprintf(stderr,
! 		   "Could not find platform independent libraries <prefix>\n");
! 		strcpy(prefix, PREFIX);
! 		joinpath(prefix, lib_python);
! 	}
! 	else
! 		reduce(prefix);
  	
! 	if (!(efound = search_for_exec_prefix(argv0_path, home))) {
! 		if (!Py_FrozenFlag)
! 		fprintf(stderr,
! 		"Could not find platform dependent libraries <exec_prefix>\n");
! 		strcpy(exec_prefix, EXEC_PREFIX);
! 		joinpath(exec_prefix, "lib/lib-dynload");
! 	}
! 	/* If we found EXEC_PREFIX do *not* reduce it!  (Yet.) */
! 
! 	if ((!pfound || !efound) && !Py_FrozenFlag)
! 		fprintf(stderr,
! 		 "Consider setting $PYTHONHOME to <prefix>[:<exec_prefix>]\n");
! 
! 	/* Calculate size of return buffer.
! 	 */
! 	bufsz = 0;
! 
! 	if (rtpypath)
! 		bufsz += strlen(rtpypath) + 1;
! 
! 	prefixsz = strlen(prefix) + 1;
! 
! 	while (1) {
! 		char *delim = strchr(defpath, DELIM);
! 
! 		if (defpath[0] != SEP)
! 			/* Paths are relative to prefix */
! 			bufsz += prefixsz;
! 
! 		if (delim)
! 			bufsz += delim - defpath + 1;
! 		else {
! 			bufsz += strlen(defpath) + 1;
! 			break;
! 		}
! 		defpath = delim + 1;
! 	}
! 
! 	bufsz += strlen(exec_prefix) + 1;
  
! 	/* This is the only malloc call in this file */
! 	buf = PyMem_Malloc(bufsz);
  
! 	if (buf == NULL) {
! 		/* We can't exit, so print a warning and limp along */
! 		fprintf(stderr, "Not enough memory for dynamic PYTHONPATH.\n");
! 		fprintf(stderr, "Using default static PYTHONPATH.\n");
! 		module_search_path = PYTHONPATH;
! 	}
! 	else {
! 		/* Run-time value of $PYTHONPATH goes first */
! 		if (rtpypath) {
! 			strcpy(buf, rtpypath);
! 			strcat(buf, delimiter);
! 		}
! 		else
! 			buf[0] = '\0';
! 
! 		/* Next goes merge of compile-time $PYTHONPATH with
! 		 * dynamically located prefix.
! 		 */
! 		defpath = pythonpath;
! 		while (1) {
! 			char *delim = strchr(defpath, DELIM);
! 
! 			if (defpath[0] != SEP) {
! 				strcat(buf, prefix);
! 				strcat(buf, separator);
! 			}
! 
! 			if (delim) {
! 				size_t len = delim - defpath + 1;
! 				size_t end = strlen(buf) + len;
! 				strncat(buf, defpath, len);
! 				*(buf + end) = '\0';
! 			}
! 			else {
! 				strcat(buf, defpath);
! 				break;
! 			}
! 			defpath = delim + 1;
! 		}
! 		strcat(buf, delimiter);
  
! 		/* Finally, on goes the directory for dynamic-load modules */
! 		strcat(buf, exec_prefix);
  
! 		/* And publish the results */
! 		module_search_path = buf;
! 	}
  
! 	/* Reduce prefix and exec_prefix to their essence,
! 	 * e.g. /usr/local/lib/python1.5 is reduced to /usr/local.
! 	 * If we're loading relative to the build directory,
! 	 * return the compiled-in defaults instead.
! 	 */
! 	if (pfound > 0) {
! 		reduce(prefix);
! 		reduce(prefix);
! 	}
! 	else
! 		strcpy(prefix, PREFIX);
  
! 	if (efound > 0) {
! 		reduce(exec_prefix);
! 		reduce(exec_prefix);
! 		reduce(exec_prefix);
! 	}
! 	else
! 		strcpy(exec_prefix, EXEC_PREFIX);
  }
  
--- 394,570 ----
  	 */
  	if (strchr(prog, SEP))
!             strcpy(progpath, prog);
  	else if (path) {
!             while (1) {
!                 char *delim = strchr(path, DELIM);
  
!                 if (delim) {
!                     size_t len = delim - path;
!                     strncpy(progpath, path, len);
!                     *(progpath + len) = '\0';
!                 }
!                 else
!                     strcpy(progpath, path);
! 
!                 joinpath(progpath, prog);
!                 if (isxfile(progpath))
!                     break;
! 
!                 if (!delim) {
!                     progpath[0] = '\0';
!                     break;
!                 }
!                 path = delim + 1;
!             }
  	}
  	else
!             progpath[0] = '\0';
  #ifdef WITH_NEXT_FRAMEWORK
!     }
  #endif
  
!     strcpy(argv0_path, progpath);
  	
  #if HAVE_READLINK
!     {
!         char tmpbuffer[MAXPATHLEN+1];
!         int linklen = readlink(progpath, tmpbuffer, MAXPATHLEN);
!         while (linklen != -1) {
!             /* It's not null terminated! */
!             tmpbuffer[linklen] = '\0';
!             if (tmpbuffer[0] == SEP)
!                 strcpy(argv0_path, tmpbuffer);
!             else {
!                 /* Interpret relative to progpath */
!                 reduce(argv0_path);
!                 joinpath(argv0_path, tmpbuffer);
!             }
!             linklen = readlink(argv0_path, tmpbuffer, MAXPATHLEN);
!         }
!     }
  #endif /* HAVE_READLINK */
  
!     reduce(argv0_path);
  
!     if (!(pfound = search_for_prefix(argv0_path, home))) {
!         if (!Py_FrozenFlag)
!             fprintf(stderr,
!                     "Could not find platform independent libraries <prefix>\n");
!         strcpy(prefix, PREFIX);
!         joinpath(prefix, lib_python);
!     }
!     else
!         reduce(prefix);
  	
!     if (!(efound = search_for_exec_prefix(argv0_path, home))) {
!         if (!Py_FrozenFlag)
!             fprintf(stderr,
!                     "Could not find platform dependent libraries <exec_prefix>\n");
!         strcpy(exec_prefix, EXEC_PREFIX);
!         joinpath(exec_prefix, "lib/lib-dynload");
!     }
!     /* If we found EXEC_PREFIX do *not* reduce it!  (Yet.) */
! 
!     if ((!pfound || !efound) && !Py_FrozenFlag)
!         fprintf(stderr,
!                 "Consider setting $PYTHONHOME to <prefix>[:<exec_prefix>]\n");
! 
!     /* Calculate size of return buffer.
!      */
!     bufsz = 0;
! 
!     if (rtpypath)
!         bufsz += strlen(rtpypath) + 1;
! 
!     prefixsz = strlen(prefix) + 1;
! 
!     while (1) {
!         char *delim = strchr(defpath, DELIM);
! 
!         if (defpath[0] != SEP)
!             /* Paths are relative to prefix */
!             bufsz += prefixsz;
! 
!         if (delim)
!             bufsz += delim - defpath + 1;
!         else {
!             bufsz += strlen(defpath) + 1;
!             break;
!         }
!         defpath = delim + 1;
!     }
  
!     bufsz += strlen(exec_prefix) + 1;
  
!     /* This is the only malloc call in this file */
!     buf = PyMem_Malloc(bufsz);
  
!     if (buf == NULL) {
!         /* We can't exit, so print a warning and limp along */
!         fprintf(stderr, "Not enough memory for dynamic PYTHONPATH.\n");
!         fprintf(stderr, "Using default static PYTHONPATH.\n");
!         module_search_path = PYTHONPATH;
!     }
!     else {
!         /* Run-time value of $PYTHONPATH goes first */
!         if (rtpypath) {
!             strcpy(buf, rtpypath);
!             strcat(buf, delimiter);
!         }
!         else
!             buf[0] = '\0';
  
!         /* Next goes merge of compile-time $PYTHONPATH with
!          * dynamically located prefix.
!          */
!         defpath = pythonpath;
!         while (1) {
!             char *delim = strchr(defpath, DELIM);
! 
!             if (defpath[0] != SEP) {
!                 strcat(buf, prefix);
!                 strcat(buf, separator);
!             }
! 
!             if (delim) {
!                 size_t len = delim - defpath + 1;
!                 size_t end = strlen(buf) + len;
!                 strncat(buf, defpath, len);
!                 *(buf + end) = '\0';
!             }
!             else {
!                 strcat(buf, defpath);
!                 break;
!             }
!             defpath = delim + 1;
!         }
!         strcat(buf, delimiter);
  
!         /* Finally, on goes the directory for dynamic-load modules */
!         strcat(buf, exec_prefix);
  
!         /* And publish the results */
!         module_search_path = buf;
!     }
! 
!     /* Reduce prefix and exec_prefix to their essence,
!      * e.g. /usr/local/lib/python1.5 is reduced to /usr/local.
!      * If we're loading relative to the build directory,
!      * return the compiled-in defaults instead.
!      */
!     if (pfound > 0) {
!         reduce(prefix);
!         reduce(prefix);
!     }
!     else
!         strcpy(prefix, PREFIX);
! 
!     if (efound > 0) {
!         reduce(exec_prefix);
!         reduce(exec_prefix);
!         reduce(exec_prefix);
!     }
!     else
!         strcpy(exec_prefix, EXEC_PREFIX);
  }
  
***************
*** 584,590 ****
  Py_GetPath()
  {
! 	if (!module_search_path)
! 		calculate_path();
! 	return module_search_path;
  }
  
--- 575,581 ----
  Py_GetPath()
  {
!     if (!module_search_path)
!         calculate_path();
!     return module_search_path;
  }
  
***************
*** 592,598 ****
  Py_GetPrefix()
  {
! 	if (!module_search_path)
! 		calculate_path();
! 	return prefix;
  }
  
--- 583,589 ----
  Py_GetPrefix()
  {
!     if (!module_search_path)
!         calculate_path();
!     return prefix;
  }
  
***************
*** 600,606 ****
  Py_GetExecPrefix()
  {
! 	if (!module_search_path)
! 		calculate_path();
! 	return exec_prefix;
  }
  
--- 591,597 ----
  Py_GetExecPrefix()
  {
!     if (!module_search_path)
!         calculate_path();
!     return exec_prefix;
  }
  
***************
*** 608,613 ****
  Py_GetProgramFullPath()
  {
! 	if (!module_search_path)
! 		calculate_path();
! 	return progpath;
  }
--- 599,604 ----
  Py_GetProgramFullPath()
  {
!     if (!module_search_path)
!         calculate_path();
!     return progpath;
  }