mirror of
https://github.com/python/cpython.git
synced 2025-11-12 07:02:33 +00:00
catch up with zipimport changes to std getpathp.c
This commit is contained in:
parent
5180123a7b
commit
214d39a0ee
1 changed files with 25 additions and 3 deletions
|
|
@ -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)
|
||||||
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)
|
||||||
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)
|
||||||
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);
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue