summaryrefslogtreecommitdiffstats
path: root/Include
diff options
context:
space:
mode:
authorVictor Stinner <victor.stinner@gmail.com>2017-11-24 21:55:40 (GMT)
committerGitHub <noreply@github.com>2017-11-24 21:55:40 (GMT)
commit46972b7bc385ec2bdc7f567bbd22c9e56ffdf003 (patch)
treee55f61feac1afb22e18bb33274a5e3f0beec5355 /Include
parent84c4b1938fade2b425ac906730beabd413de094d (diff)
downloadcpython-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.h13
-rw-r--r--Include/pymem.h6
-rw-r--r--Include/pystate.h9
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 {