int exitcode;
} _PyInitError;
-/* Almost all errors causing Python initialization to fail */
-#ifdef _MSC_VER
- /* Visual Studio 2015 doesn't implement C99 __func__ in C */
-# define _Py_INIT_GET_FUNC() __FUNCTION__
-#else
-# define _Py_INIT_GET_FUNC() __func__
-#endif
-
-#define _Py_INIT_OK() \
- (_PyInitError){._type = _Py_INIT_ERR_TYPE_OK,}
- /* other fields are set to 0 */
-#define _Py_INIT_ERR(ERR_MSG) \
- (_PyInitError){ \
- ._type = _Py_INIT_ERR_TYPE_ERROR, \
- ._func = _Py_INIT_GET_FUNC(), \
- .err_msg = (ERR_MSG)}
- /* other fields are set to 0 */
-#define _Py_INIT_NO_MEMORY() _Py_INIT_ERR("memory allocation failed")
-#define _Py_INIT_EXIT(EXITCODE) \
- (_PyInitError){ \
- ._type = _Py_INIT_ERR_TYPE_EXIT, \
- .exitcode = (EXITCODE)}
-#define _Py_INIT_IS_ERROR(err) \
- (err._type == _Py_INIT_ERR_TYPE_ERROR)
-#define _Py_INIT_IS_EXIT(err) \
- (err._type == _Py_INIT_ERR_TYPE_EXIT)
-#define _Py_INIT_FAILED(err) \
- (err._type != _Py_INIT_ERR_TYPE_OK)
+PyAPI_FUNC(_PyInitError) _PyInitError_Ok(void);
+PyAPI_FUNC(_PyInitError) _PyInitError_Error(const char *err_msg);
+PyAPI_FUNC(_PyInitError) _PyInitError_NoMemory(void);
+PyAPI_FUNC(_PyInitError) _PyInitError_Exit(int exitcode);
+PyAPI_FUNC(int) _PyInitError_IsError(_PyInitError err);
+PyAPI_FUNC(int) _PyInitError_IsExit(_PyInitError err);
+PyAPI_FUNC(int) _PyInitError_Failed(_PyInitError err);
/* --- _PyWstrList ------------------------------------------------ */
wchar_t **items;
} _PyWstrList;
-#define _PyWstrList_INIT (_PyWstrList){.length = 0, .items = NULL}
-
/* --- _PyPreConfig ----------------------------------------------- */
#include "pycore_pystate.h" /* _PyRuntimeState */
+/* --- _PyInitError ----------------------------------------------- */
+
+/* Almost all errors causing Python initialization to fail */
+#ifdef _MSC_VER
+ /* Visual Studio 2015 doesn't implement C99 __func__ in C */
+# define _Py_INIT_GET_FUNC() __FUNCTION__
+#else
+# define _Py_INIT_GET_FUNC() __func__
+#endif
+
+#define _Py_INIT_OK() \
+ (_PyInitError){._type = _Py_INIT_ERR_TYPE_OK,}
+ /* other fields are set to 0 */
+#define _Py_INIT_ERR(ERR_MSG) \
+ (_PyInitError){ \
+ ._type = _Py_INIT_ERR_TYPE_ERROR, \
+ ._func = _Py_INIT_GET_FUNC(), \
+ .err_msg = (ERR_MSG)}
+ /* other fields are set to 0 */
+#define _Py_INIT_NO_MEMORY() _Py_INIT_ERR("memory allocation failed")
+#define _Py_INIT_EXIT(EXITCODE) \
+ (_PyInitError){ \
+ ._type = _Py_INIT_ERR_TYPE_EXIT, \
+ .exitcode = (EXITCODE)}
+#define _Py_INIT_IS_ERROR(err) \
+ (err._type == _Py_INIT_ERR_TYPE_ERROR)
+#define _Py_INIT_IS_EXIT(err) \
+ (err._type == _Py_INIT_ERR_TYPE_EXIT)
+#define _Py_INIT_FAILED(err) \
+ (err._type != _Py_INIT_ERR_TYPE_OK)
/* --- _PyWstrList ------------------------------------------------ */
+#define _PyWstrList_INIT (_PyWstrList){.length = 0, .items = NULL}
+
#ifndef NDEBUG
PyAPI_FUNC(int) _PyWstrList_CheckConsistency(const _PyWstrList *list);
#endif
#include "Python.h"
+#include "pycore_coreconfig.h"
#include "pythread.h"
#include <signal.h>
#include <object.h>
/* Return the initial module search path. */
#include "Python.h"
+#include "pycore_coreconfig.h"
#include "osdefs.h"
#include "pycore_fileutils.h"
#include "pycore_pathconfig.h"
#define PY_SSIZE_T_CLEAN
#include <Python.h>
+#include "pycore_coreconfig.h"
#include "pycore_object.h"
#include "pycore_pymem.h"
#include "pycore_pystate.h"
/* Generic object operations; and implementation of None */
#include "Python.h"
+#include "pycore_coreconfig.h"
#include "pycore_object.h"
#include "pycore_pystate.h"
#include "pycore_context.h"
#include "Python.h"
+#include "pycore_coreconfig.h"
#include "pycore_pystate.h"
#include "osdefs.h"
#include <wchar.h>
_PyInitError err = _Py_InitializeFromConfig(&config);
/* No need to call _PyCoreConfig_Clear() since we didn't allocate any
memory: program_name is a constant string. */
- if (_Py_INIT_FAILED(err)) {
+ if (_PyInitError_Failed(err)) {
_Py_ExitInitError(err);
}
preconfig.utf8_mode = 1;
err = _Py_PreInitialize(&preconfig);
- if (_Py_INIT_FAILED(err)) {
+ if (_PyInitError_Failed(err)) {
_Py_ExitInitError(err);
}
config.pathconfig_warnings = 0;
err = _Py_InitializeFromConfig(&config);
- if (_Py_INIT_FAILED(err)) {
+ if (_PyInitError_Failed(err)) {
_Py_ExitInitError(err);
}
dump_config();
config.parse_argv = parse_argv;
err = _Py_InitializeFromConfig(&config);
- if (_Py_INIT_FAILED(err)) {
+ if (_PyInitError_Failed(err)) {
_Py_ExitInitError(err);
}
dump_config();
test_init_env_dev_mode_putenvs();
err = _Py_InitializeFromConfig(&config);
- if (_Py_INIT_FAILED(err)) {
+ if (_PyInitError_Failed(err)) {
_Py_ExitInitError(err);
}
dump_config();
preconfig.isolated = 1;
err = _Py_PreInitialize(&preconfig);
- if (_Py_INIT_FAILED(err)) {
+ if (_PyInitError_Failed(err)) {
_Py_ExitInitError(err);
}
test_init_env_dev_mode_putenvs();
err = _Py_InitializeFromConfig(&config);
- if (_Py_INIT_FAILED(err)) {
+ if (_PyInitError_Failed(err)) {
_Py_ExitInitError(err);
}
dump_config();
preconfig.isolated = 0;
err = _Py_PreInitialize(&preconfig);
- if (_Py_INIT_FAILED(err)) {
+ if (_PyInitError_Failed(err)) {
_Py_ExitInitError(err);
}
test_init_env_dev_mode_putenvs();
err = _Py_InitializeFromConfig(&config);
- if (_Py_INIT_FAILED(err)) {
+ if (_PyInitError_Failed(err)) {
_Py_ExitInitError(err);
}
dump_config();
_PyPreConfig_InitIsolatedConfig(&preconfig);
err = _Py_PreInitialize(&preconfig);
- if (_Py_INIT_FAILED(err)) {
+ if (_PyInitError_Failed(err)) {
_Py_ExitInitError(err);
}
_PyCoreConfig config;
err = _PyCoreConfig_InitIsolatedConfig(&config);
- if (_Py_INIT_FAILED(err)) {
+ if (_PyInitError_Failed(err)) {
_Py_ExitInitError(err);
}
config.program_name = L"./_testembed";
err = _Py_InitializeFromConfig(&config);
- if (_Py_INIT_FAILED(err)) {
+ if (_PyInitError_Failed(err)) {
_Py_ExitInitError(err);
}
dump_config();
_PyPreConfig_InitPythonConfig(&preconfig);
err = _Py_PreInitialize(&preconfig);
- if (_Py_INIT_FAILED(err)) {
+ if (_PyInitError_Failed(err)) {
_Py_ExitInitError(err);
}
_PyCoreConfig config;
err = _PyCoreConfig_InitPythonConfig(&config);
- if (_Py_INIT_FAILED(err)) {
+ if (_PyInitError_Failed(err)) {
_Py_ExitInitError(err);
}
config.program_name = L"./_testembed";
err = _Py_InitializeFromConfig(&config);
- if (_Py_INIT_FAILED(err)) {
+ if (_PyInitError_Failed(err)) {
_Py_ExitInitError(err);
}
dump_config();
preconfig.coerce_c_locale_warn = 1;
err = _Py_PreInitialize(&preconfig);
- if (_Py_INIT_FAILED(err)) {
+ if (_PyInitError_Failed(err)) {
_Py_ExitInitError(err);
}
_PyCoreConfig config = _PyCoreConfig_INIT;
config.program_name = L"./_testembed";
err = _Py_InitializeFromConfig(&config);
- if (_Py_INIT_FAILED(err)) {
+ if (_PyInitError_Failed(err)) {
_Py_ExitInitError(err);
}
config.dev_mode = 1;
config.program_name = L"./_testembed";
_PyInitError err = _Py_InitializeFromConfig(&config);
- if (_Py_INIT_FAILED(err)) {
+ if (_PyInitError_Failed(err)) {
_Py_ExitInitError(err);
}
dump_config();
_PyCoreConfig_Init(&config);
err = _PyCoreConfig_DecodeLocale(&config.program_name, "./init_read_set");
- if (_Py_INIT_FAILED(err)) {
+ if (_PyInitError_Failed(err)) {
goto fail;
}
err = _PyCoreConfig_Read(&config);
- if (_Py_INIT_FAILED(err)) {
+ if (_PyInitError_Failed(err)) {
goto fail;
}
if (_PyWstrList_Append(&config.module_search_paths,
L"init_read_set_path") < 0) {
- err = _Py_INIT_NO_MEMORY();
+ err = _PyInitError_NoMemory();
goto fail;
}
/* override executable computed by _PyCoreConfig_Read() */
err = _PyCoreConfig_SetString(&config.executable, L"my_executable");
- if (_Py_INIT_FAILED(err)) {
+ if (_PyInitError_Failed(err)) {
goto fail;
}
err = _Py_InitializeFromConfig(&config);
_PyCoreConfig_Clear(&config);
- if (_Py_INIT_FAILED(err)) {
+ if (_PyInitError_Failed(err)) {
goto fail;
}
dump_config();
configure_init_main(&config);
_PyInitError err = _Py_InitializeFromConfig(&config);
- if (_Py_INIT_FAILED(err)) {
+ if (_PyInitError_Failed(err)) {
_Py_ExitInitError(err);
}
config._init_main = 0;
_PyInitError err = _Py_InitializeFromConfig(&config);
- if (_Py_INIT_FAILED(err)) {
+ if (_PyInitError_Failed(err)) {
_Py_ExitInitError(err);
}
}
err = _Py_InitializeMain();
- if (_Py_INIT_FAILED(err)) {
+ if (_PyInitError_Failed(err)) {
_Py_ExitInitError(err);
}
config.program_name = L"./python3";
_PyInitError err = _Py_InitializeFromConfig(&config);
- if (_Py_INIT_FAILED(err)) {
+ if (_PyInitError_Failed(err)) {
_Py_ExitInitError(err);
}
#include "Python.h"
+#include "pycore_coreconfig.h"
#ifdef MS_WINDOWS
# include <windows.h>
/* All sample MSDN wincrypt programs include the header below. It is at least
}
+/* --- _PyInitError ----------------------------------------------- */
+
+_PyInitError _PyInitError_Ok(void)
+{ return _Py_INIT_OK(); }
+
+_PyInitError _PyInitError_Error(const char *err_msg)
+{
+ return (_PyInitError){._type = _Py_INIT_ERR_TYPE_ERROR,
+ .err_msg = err_msg};
+}
+
+_PyInitError _PyInitError_NoMemory(void)
+{ return _PyInitError_Error("memory allocation failed"); }
+
+_PyInitError _PyInitError_Exit(int exitcode)
+{ return _Py_INIT_EXIT(exitcode); }
+
+
+int _PyInitError_IsError(_PyInitError err)
+{ return _Py_INIT_IS_ERROR(err); }
+
+int _PyInitError_IsExit(_PyInitError err)
+{ return _Py_INIT_IS_EXIT(err); }
+
+int _PyInitError_Failed(_PyInitError err)
+{ return _Py_INIT_FAILED(err); }
+
+
/* --- _PyWstrList ------------------------------------------------ */
#ifndef NDEBUG
Py_FrozenMain(int argc, char **argv)
{
_PyInitError err = _PyRuntime_Initialize();
- if (_Py_INIT_FAILED(err)) {
+ if (_PyInitError_Failed(err)) {
_Py_ExitInitError(err);
}
err = _Py_InitializeFromConfig(&config);
/* No need to call _PyCoreConfig_Clear() since we didn't allocate any
memory: program_name is a constant string. */
- if (_Py_INIT_FAILED(err)) {
+ if (_PyInitError_Failed(err)) {
_Py_ExitInitError(err);
}