Kaydet (Commit) 214d39a0 authored tarafından Andrew MacIntyre's avatar Andrew MacIntyre

catch up with zipimport changes to std getpathp.c

üst 5180123a
...@@ -250,6 +250,8 @@ calculate_path(void) ...@@ -250,6 +250,8 @@ calculate_path(void)
size_t bufsz; size_t bufsz;
char *pythonhome = Py_GetPythonHome(); char *pythonhome = Py_GetPythonHome();
char *envpath = getenv("PYTHONPATH"); char *envpath = getenv("PYTHONPATH");
char zip_path[MAXPATHLEN+1];
size_t len;
get_progpath(); get_progpath();
/* progpath guaranteed \0 terminated in MAXPATH+1 bytes. */ /* progpath guaranteed \0 terminated in MAXPATH+1 bytes. */
...@@ -267,12 +269,26 @@ calculate_path(void) ...@@ -267,12 +269,26 @@ calculate_path(void)
if (envpath && *envpath == '\0') if (envpath && *envpath == '\0')
envpath = NULL; envpath = NULL;
/* Calculate zip archive path */
strncpy(zip_path, progpath, MAXPATHLEN);
zip_path[MAXPATHLEN] = '\0';
len = strlen(zip_path);
if (len > 4) {
zip_path[len-3] = 'z'; /* change ending to "zip" */
zip_path[len-2] = 'i';
zip_path[len-1] = 'p';
}
else {
zip_path[0] = 0;
}
/* We need to construct a path from the following parts. /* We need to construct a path from the following parts.
(1) the PYTHONPATH environment variable, if set; (1) the PYTHONPATH environment variable, if set;
(2) the PYTHONPATH config macro, with the leading "." (2) the zip archive file path;
(3) the PYTHONPATH config macro, with the leading "."
of each component replaced with pythonhome, if set; of each component replaced with pythonhome, if set;
(3) the directory containing the executable (argv0_path). (4) the directory containing the executable (argv0_path).
The length calculation calculates #2 first. The length calculation calculates #3 first.
*/ */
/* Calculate size of return buffer */ /* Calculate size of return buffer */
...@@ -289,6 +305,7 @@ calculate_path(void) ...@@ -289,6 +305,7 @@ calculate_path(void)
bufsz = 0; bufsz = 0;
bufsz += strlen(PYTHONPATH) + 1; bufsz += strlen(PYTHONPATH) + 1;
bufsz += strlen(argv0_path) + 1; bufsz += strlen(argv0_path) + 1;
bufsz += strlen(zip_path) + 1;
if (envpath != NULL) if (envpath != NULL)
bufsz += strlen(envpath) + 1; bufsz += strlen(envpath) + 1;
...@@ -312,6 +329,11 @@ calculate_path(void) ...@@ -312,6 +329,11 @@ calculate_path(void)
buf = strchr(buf, '\0'); buf = strchr(buf, '\0');
*buf++ = DELIM; *buf++ = DELIM;
} }
if (zip_path[0]) {
strcpy(buf, zip_path);
buf = strchr(buf, '\0');
*buf++ = DELIM;
}
if (pythonhome == NULL) { if (pythonhome == NULL) {
strcpy(buf, PYTHONPATH); strcpy(buf, PYTHONPATH);
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment