PyAPI_FUNC(wchar_t *) Py_GetExecPrefix(void);
PyAPI_FUNC(wchar_t *) Py_GetPath(void);
#ifdef Py_BUILD_CORE
-PyAPI_FUNC(wchar_t *) _Py_GetPathWithConfig(_PyCoreConfig *config);
+PyAPI_FUNC(wchar_t *) _Py_GetPathWithConfig(_PyMainInterpreterConfig *config);
#endif
PyAPI_FUNC(void) Py_SetPath(const wchar_t *);
#ifdef MS_WINDOWS
unsigned long hash_seed;
int _disable_importlib; /* Needed by freeze_importlib */
const char *allocator; /* Memory allocator: _PyMem_SetupAllocators() */
- wchar_t *module_search_path_env; /* PYTHONPATH environment variable */
int dev_mode; /* -X dev */
int faulthandler; /* -X faulthandler */
int tracemalloc; /* -X tracemalloc=N */
.hash_seed = 0, \
._disable_importlib = 0, \
.allocator = NULL, \
- .module_search_path_env = NULL, \
.dev_mode = 0, \
.faulthandler = 0, \
.tracemalloc = 0, \
*/
typedef struct {
int install_signal_handlers;
+ wchar_t *module_search_path_env; /* PYTHONPATH environment variable */
} _PyMainInterpreterConfig;
#define _PyMainInterpreterConfig_INIT \
(_PyMainInterpreterConfig){\
- .install_signal_handlers = -1}
+ .install_signal_handlers = -1, \
+ .module_search_path_env = NULL}
typedef struct _is {
}
static void
-calculate_path(_PyCoreConfig *core_config)
+calculate_path(_PyMainInterpreterConfig *config)
{
extern wchar_t *Py_GetProgramName(void);
bufsz = 0;
wchar_t *env_path = NULL;
- if (core_config) {
- if (core_config->module_search_path_env) {
- bufsz += wcslen(core_config->module_search_path_env) + 1;
+ if (config) {
+ if (config->module_search_path_env) {
+ bufsz += wcslen(config->module_search_path_env) + 1;
}
}
else {
/* Run-time value of $PYTHONPATH goes first */
buf[0] = '\0';
- if (core_config) {
- if (core_config->module_search_path_env) {
- wcscpy(buf, core_config->module_search_path_env);
+ if (config) {
+ if (config->module_search_path_env) {
+ wcscpy(buf, config->module_search_path_env);
wcscat(buf, delimiter);
}
}
}
wchar_t *
-_Py_GetPathWithConfig(_PyCoreConfig *core_config)
+_Py_GetPathWithConfig(_PyMainInterpreterConfig *config)
{
if (!module_search_path) {
- calculate_path(core_config);
+ calculate_path(config);
}
return module_search_path;
}
/* non-zero is stdin is a TTY or if -i option is used */
int stdin_is_interactive;
_PyCoreConfig core_config;
+ _PyMainInterpreterConfig config;
_Py_CommandLineDetails cmdline;
PyObject *main_importer_path;
/* non-zero if filename, command (-c) or module (-m) is set
{.status = 0, \
.cf = {.cf_flags = 0}, \
.core_config = _PyCoreConfig_INIT, \
+ .config = _PyMainInterpreterConfig_INIT, \
.main_importer_path = NULL, \
.run_code = -1, \
.program_name = NULL, \
Py_CLEAR(pymain->main_importer_path);
PyMem_RawFree(pymain->program_name);
- PyMem_RawFree(pymain->core_config.module_search_path_env);
+ PyMem_RawFree(pymain->config.module_search_path_env);
#ifdef __INSURE__
/* Insure++ is a memory analysis tool that aids in discovering
static int
pymain_init_main_interpreter(_PyMain *pymain)
{
- _PyMainInterpreterConfig config = _PyMainInterpreterConfig_INIT;
_PyInitError err;
- /* TODO: Moar config options! */
- config.install_signal_handlers = 1;
-
/* TODO: Print any exceptions raised by these operations */
- err = _Py_ReadMainInterpreterConfig(&config);
+ err = _Py_ReadMainInterpreterConfig(&pymain->config);
if (_Py_INIT_FAILED(err)) {
pymain->err = err;
return -1;
}
- err = _Py_InitializeMainInterpreter(&config);
+ err = _Py_InitializeMainInterpreter(&pymain->config);
if (_Py_INIT_FAILED(err)) {
pymain->err = err;
return -1;
return -1;
}
- pymain->core_config.module_search_path_env = path2;
+ pymain->config.module_search_path_env = path2;
#else
char *path = pymain_get_env_var("PYTHONPATH");
if (!path) {
}
return -1;
}
- pymain->core_config.module_search_path_env = wpath;
+ pymain->config.module_search_path_env = wpath;
#endif
return 0;
}
}
pymain->core_config._disable_importlib = 0;
+ /* TODO: Moar config options! */
+ pymain->config.install_signal_handlers = 1;
orig_argc = pymain->argc; /* For Py_GetArgcArgv() */
orig_argv = pymain->argv;
static void
-calculate_path(_PyCoreConfig *core_config)
+calculate_path(_PyMainInterpreterConfig *config)
{
wchar_t argv0_path[MAXPATHLEN+1];
wchar_t *buf;
wchar_t *userpath = NULL;
wchar_t zip_path[MAXPATHLEN+1];
- if (core_config) {
- envpath = core_config->module_search_path_env;
+ if (config) {
+ envpath = config->module_search_path_env;
}
else if (!Py_IgnoreEnvironmentFlag) {
envpath = _wgetenv(L"PYTHONPATH");
}
wchar_t *
-_Py_GetPathWithConfig(_PyCoreConfig *core_config)
+_Py_GetPathWithConfig(_PyMainInterpreterConfig *config)
{
if (!module_search_path) {
- calculate_path(core_config);
+ calculate_path(config);
}
return module_search_path;
}
/* GetPath may initialize state that _PySys_EndInit locks
in, and so has to be called first. */
/* TODO: Call Py_GetPath() in Py_ReadConfig, rather than here */
- wchar_t *sys_path = _Py_GetPathWithConfig(&interp->core_config);
+ wchar_t *sys_path = _Py_GetPathWithConfig(&interp->config);
if (interp->core_config._disable_importlib) {
/* Special mode for freeze_importlib: run with no import system
/* XXX The following is lax in error checking */
- wchar_t *sys_path = _Py_GetPathWithConfig(&interp->core_config);
+ wchar_t *sys_path = _Py_GetPathWithConfig(&interp->config);
PyObject *modules = PyDict_New();
if (modules == NULL) {