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 /Modules/getpath.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 'Modules/getpath.c')
-rw-r--r-- | Modules/getpath.c | 20 |
1 files changed, 20 insertions, 0 deletions
diff --git a/Modules/getpath.c b/Modules/getpath.c index c55b3d7..6f2e537 100644 --- a/Modules/getpath.c +++ b/Modules/getpath.c @@ -90,6 +90,9 @@ * known use of sys.prefix and sys.exec_prefix is for the ILU installation * process to find the installed Python tree. * + * An embedding application can use Py_SetPath() to override all of + * these authomatic path computations. + * * NOTE: Windows MSVC builds use PC/getpathp.c instead! */ @@ -771,6 +774,23 @@ 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); + exec_prefix[0] = 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) |