diff options
author | Kristján Valur Jónsson <kristjan@ccpgames.com> | 2010-09-27 05:32:54 (GMT) |
---|---|---|
committer | Kristján Valur Jónsson <kristjan@ccpgames.com> | 2010-09-27 05:32:54 (GMT) |
commit | 3b69db27d70f05584b76ece61bb882c26ecfcc68 (patch) | |
tree | c02d068991fa7d393ec6a33ab4307d401a90c1f7 /PC/getpathp.c | |
parent | 42ef4b1f4c8f07357f7c4e9cb8470f57365b0ffa (diff) | |
download | cpython-3b69db27d70f05584b76ece61bb882c26ecfcc68.zip cpython-3b69db27d70f05584b76ece61bb882c26ecfcc68.tar.gz cpython-3b69db27d70f05584b76ece61bb882c26ecfcc68.tar.bz2 |
issue 9910
Add a Py_SetPath api to override magic path computations when starting up python.
Diffstat (limited to 'PC/getpathp.c')
-rw-r--r-- | PC/getpathp.c | 24 |
1 files changed, 24 insertions, 0 deletions
diff --git a/PC/getpathp.c b/PC/getpathp.c index 0fe04c7..3a87411 100644 --- a/PC/getpathp.c +++ b/PC/getpathp.c @@ -51,6 +51,9 @@ exe, some very strange installation setup) you get a path with some default, but relative, paths. + * An embedding application can use Py_SetPath() to override all of + these authomatic path computations. + ---------------------------------------------------------------- */ @@ -79,6 +82,9 @@ * The approach is an adaptation for Windows of the strategy used in * ../Modules/getpath.c; it uses the Windows Registry as one of its * information sources. + * + * Py_SetPath() can be used to override this mechanism. Call Py_SetPath + * with a semicolon separated path prior to calling Py_Initialize. */ #ifndef LANDMARK @@ -654,6 +660,24 @@ calculate_path(void) /* External interface */ +void +Py_SetPath(const wchar_t *path) +{ + if (module_search_path != NULL) { + free(module_search_path); + module_search_path = NULL; + } + if (path != NULL) { + extern wchar_t *Py_GetProgramName(void); + wchar_t *prog = Py_GetProgramName(); + wcsncpy(progpath, prog, MAXPATHLEN); + prefix[0] = L'\0'; + module_search_path = malloc((wcslen(path) + 1) * sizeof(wchar_t)); + if (module_search_path != NULL) + wcscpy(module_search_path, path); + } +} + wchar_t * Py_GetPath(void) { |