From 3b69db27d70f05584b76ece61bb882c26ecfcc68 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Kristj=C3=A1n=20Valur=20J=C3=B3nsson?= Date: Mon, 27 Sep 2010 05:32:54 +0000 Subject: issue 9910 Add a Py_SetPath api to override magic path computations when starting up python. --- Modules/getpath.c | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) (limited to 'Modules/getpath.c') diff --git a/Modules/getpath.c b/Modules/getpath.c index c55b3d74be..6f2e5371c8 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) -- cgit v1.2.1