summaryrefslogtreecommitdiffstats
path: root/PC/os2emx
diff options
context:
space:
mode:
authorAndrew MacIntyre <andymac@bullseye.apana.org.au>2003-01-02 12:41:58 (GMT)
committerAndrew MacIntyre <andymac@bullseye.apana.org.au>2003-01-02 12:41:58 (GMT)
commit214d39a0eef5c32c215c830cbf5b53f36c1d68f6 (patch)
tree2054859bad97d746583b13db1b3f6411341e6b34 /PC/os2emx
parent5180123a7b3c85d5332bc834eb8f45c6f7240171 (diff)
downloadcpython-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.c28
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);