diff options
author | Andrew MacIntyre <andymac@bullseye.apana.org.au> | 2003-01-02 12:41:58 (GMT) |
---|---|---|
committer | Andrew MacIntyre <andymac@bullseye.apana.org.au> | 2003-01-02 12:41:58 (GMT) |
commit | 214d39a0eef5c32c215c830cbf5b53f36c1d68f6 (patch) | |
tree | 2054859bad97d746583b13db1b3f6411341e6b34 /PC/os2emx | |
parent | 5180123a7b3c85d5332bc834eb8f45c6f7240171 (diff) | |
download | cpython-214d39a0eef5c32c215c830cbf5b53f36c1d68f6.zip cpython-214d39a0eef5c32c215c830cbf5b53f36c1d68f6.tar.gz cpython-214d39a0eef5c32c215c830cbf5b53f36c1d68f6.tar.bz2 |
catch up with zipimport changes to std getpathp.c
Diffstat (limited to 'PC/os2emx')
-rw-r--r-- | PC/os2emx/getpathp.c | 28 |
1 files changed, 25 insertions, 3 deletions
diff --git a/PC/os2emx/getpathp.c b/PC/os2emx/getpathp.c index 5cb8278..ab31c65 100644 --- a/PC/os2emx/getpathp.c +++ b/PC/os2emx/getpathp.c @@ -250,6 +250,8 @@ calculate_path(void) size_t bufsz; char *pythonhome = Py_GetPythonHome(); char *envpath = getenv("PYTHONPATH"); + char zip_path[MAXPATHLEN+1]; + size_t len; get_progpath(); /* progpath guaranteed \0 terminated in MAXPATH+1 bytes. */ @@ -267,12 +269,26 @@ calculate_path(void) if (envpath && *envpath == '\0') 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. (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; - (3) the directory containing the executable (argv0_path). - The length calculation calculates #2 first. + (4) the directory containing the executable (argv0_path). + The length calculation calculates #3 first. */ /* Calculate size of return buffer */ @@ -289,6 +305,7 @@ calculate_path(void) bufsz = 0; bufsz += strlen(PYTHONPATH) + 1; bufsz += strlen(argv0_path) + 1; + bufsz += strlen(zip_path) + 1; if (envpath != NULL) bufsz += strlen(envpath) + 1; @@ -312,6 +329,11 @@ calculate_path(void) buf = strchr(buf, '\0'); *buf++ = DELIM; } + if (zip_path[0]) { + strcpy(buf, zip_path); + buf = strchr(buf, '\0'); + *buf++ = DELIM; + } if (pythonhome == NULL) { strcpy(buf, PYTHONPATH); |