Some changes to make it work on NT; add the directory where the binary
lives to the end of the path.
(Still to do: add $PYTHONPATH to the front instead of using it as is;
add the Win32 registry paths as in getpath_nt.c (which can then
retire).)
diff --git a/PC/getpathp.c b/PC/getpathp.c
index b7d903b..b6279e7 100644
--- a/PC/getpathp.c
+++ b/PC/getpathp.c
@@ -35,6 +35,10 @@
#include "Python.h"
#include "osdefs.h"
+#ifdef MS_WIN32
+#include <windows.h>
+#endif
+
#include <sys/types.h>
#include <sys/stat.h>
#include <string.h>
@@ -149,7 +153,6 @@
get_progpath()
{
#ifdef MS_WIN32
-#include <windows.h>
if (!GetModuleFileName(NULL, progpath, MAXPATHLEN))
progpath[0] = '\0'; /* failure */
#else
@@ -239,6 +242,7 @@
if (*pt == DELIM)
bufsz++; /* number of DELIM plus one */
bufsz *= strlen(PYTHONPATH) + strlen(prefix); /* high estimate */
+ bufsz += strlen(argv0_path) + 1;
module_search_path = buf = malloc(bufsz);
@@ -251,7 +255,7 @@
}
for (pt = PYTHONPATH; *pt; pt++) {
if (!strncmp(pt, ".\\lib", 5) &&
- ((ch = *(pt + 5)) == '\\' || ch == DELIM || !ch)){
+ ((ch = *(pt + 5)) == '\\' || ch == DELIM || !ch)) {
pt += 4;
for (pt2 = prefix; *pt2; pt2++)
*buf++ = *pt2;
@@ -259,6 +263,9 @@
else
*buf++ = *pt;
}
+ *buf++ = DELIM;
+ strcpy(buf, argv0_path);
+ buf += strlen(buf);
*buf = '\0';
}