diff options
author | Victor Stinner <victor.stinner@gmail.com> | 2017-11-24 21:55:40 (GMT) |
---|---|---|
committer | GitHub <noreply@github.com> | 2017-11-24 21:55:40 (GMT) |
commit | 46972b7bc385ec2bdc7f567bbd22c9e56ffdf003 (patch) | |
tree | e55f61feac1afb22e18bb33274a5e3f0beec5355 /Include | |
parent | 84c4b1938fade2b425ac906730beabd413de094d (diff) | |
download | cpython-46972b7bc385ec2bdc7f567bbd22c9e56ffdf003.zip cpython-46972b7bc385ec2bdc7f567bbd22c9e56ffdf003.tar.gz cpython-46972b7bc385ec2bdc7f567bbd22c9e56ffdf003.tar.bz2 |
bpo-32030: Add _PyMainInterpreterConfig_ReadEnv() (#4542)
Py_GetPath() and Py_Main() now call
_PyMainInterpreterConfig_ReadEnv() to share the same code to get
environment variables.
Changes:
* Add _PyMainInterpreterConfig_ReadEnv()
* Add _PyMainInterpreterConfig_Clear()
* Add _PyMem_RawWcsdup()
* _PyMainInterpreterConfig: rename pythonhome to home
* Rename _Py_ReadMainInterpreterConfig() to
_PyMainInterpreterConfig_Read()
* Use _Py_INIT_USER_ERR(), instead of _Py_INIT_ERR(), for decoding
errors: the user is able to fix the issue, it's not a bug in
Python. Same change was made in _Py_INIT_NO_MEMORY().
* Remove _Py_GetPythonHomeWithConfig()
Diffstat (limited to 'Include')
-rw-r--r-- | Include/pylifecycle.h | 13 | ||||
-rw-r--r-- | Include/pymem.h | 6 | ||||
-rw-r--r-- | Include/pystate.h | 9 |
3 files changed, 17 insertions, 11 deletions
diff --git a/Include/pylifecycle.h b/Include/pylifecycle.h index efdc58e..ff91532 100644 --- a/Include/pylifecycle.h +++ b/Include/pylifecycle.h @@ -30,7 +30,7 @@ typedef struct { Don't abort() the process on such error. */ #define _Py_INIT_USER_ERR(MSG) \ (_PyInitError){.prefix = _Py_INIT_GET_FUNC(), .msg = (MSG), .user_err = 1} -#define _Py_INIT_NO_MEMORY() _Py_INIT_ERR("memory allocation failed") +#define _Py_INIT_NO_MEMORY() _Py_INIT_USER_ERR("memory allocation failed") #define _Py_INIT_FAILED(err) \ (err.msg != NULL) @@ -42,11 +42,6 @@ PyAPI_FUNC(wchar_t *) Py_GetProgramName(void); PyAPI_FUNC(void) Py_SetPythonHome(wchar_t *); PyAPI_FUNC(wchar_t *) Py_GetPythonHome(void); -#ifdef Py_BUILD_CORE -PyAPI_FUNC(_PyInitError) _Py_GetPythonHomeWithConfig( - const _PyMainInterpreterConfig *config, - wchar_t **home); -#endif #ifndef Py_LIMITED_API /* Only used by applications that embed the interpreter and need to @@ -58,7 +53,11 @@ PyAPI_FUNC(int) Py_SetStandardStreamEncoding(const char *encoding, /* PEP 432 Multi-phase initialization API (Private while provisional!) */ PyAPI_FUNC(_PyInitError) _Py_InitializeCore(const _PyCoreConfig *); PyAPI_FUNC(int) _Py_IsCoreInitialized(void); -PyAPI_FUNC(_PyInitError) _Py_ReadMainInterpreterConfig(_PyMainInterpreterConfig *); + +PyAPI_FUNC(_PyInitError) _PyMainInterpreterConfig_Read(_PyMainInterpreterConfig *); +PyAPI_FUNC(_PyInitError) _PyMainInterpreterConfig_ReadEnv(_PyMainInterpreterConfig *); +PyAPI_FUNC(void) _PyMainInterpreterConfig_Clear(_PyMainInterpreterConfig *); + PyAPI_FUNC(_PyInitError) _Py_InitializeMainInterpreter(const _PyMainInterpreterConfig *); #endif diff --git a/Include/pymem.h b/Include/pymem.h index 928851a..57a34cf 100644 --- a/Include/pymem.h +++ b/Include/pymem.h @@ -105,8 +105,14 @@ PyAPI_FUNC(void *) PyMem_Realloc(void *ptr, size_t new_size); PyAPI_FUNC(void) PyMem_Free(void *ptr); #ifndef Py_LIMITED_API +/* strdup() using PyMem_RawMalloc() */ PyAPI_FUNC(char *) _PyMem_RawStrdup(const char *str); + +/* strdup() using PyMem_Malloc() */ PyAPI_FUNC(char *) _PyMem_Strdup(const char *str); + +/* wcsdup() using PyMem_RawMalloc() */ +PyAPI_FUNC(wchar_t*) _PyMem_RawWcsdup(const wchar_t *str); #endif /* Macros. */ diff --git a/Include/pystate.h b/Include/pystate.h index ab6400c..533851f 100644 --- a/Include/pystate.h +++ b/Include/pystate.h @@ -60,16 +60,17 @@ typedef struct { */ typedef struct { int install_signal_handlers; - wchar_t *module_search_path_env; /* PYTHONPATH environment variable */ - wchar_t *pythonhome; /* PYTHONHOME environment variable, - see also Py_SetPythonHome(). */ + /* PYTHONPATH environment variable */ + wchar_t *module_search_path_env; + /* PYTHONHOME environment variable, see also Py_SetPythonHome(). */ + wchar_t *home; } _PyMainInterpreterConfig; #define _PyMainInterpreterConfig_INIT \ (_PyMainInterpreterConfig){\ .install_signal_handlers = -1, \ .module_search_path_env = NULL, \ - .pythonhome = NULL} + .home = NULL} typedef struct _is { |