From 336e85f56a87f2216855ca8a5771755f480ae7db Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Martin=20v=2E=20L=C3=B6wis?= Date: Thu, 19 Aug 2004 11:31:58 +0000 Subject: Patch #900727: Add Py_InitializeEx to allow embedding without signals. --- Doc/api/init.tex | 7 +++++++ Include/pythonrun.h | 1 + Misc/NEWS | 2 ++ Python/pythonrun.c | 12 ++++++++++-- 4 files changed, 20 insertions(+), 2 deletions(-) diff --git a/Doc/api/init.tex b/Doc/api/init.tex index 4057f2f..ba96124 100644 --- a/Doc/api/init.tex +++ b/Doc/api/init.tex @@ -23,6 +23,13 @@ no return value; it is a fatal error if the initialization fails. \end{cfuncdesc} +\begin{cfuncdesc}{void}{Py_InitializeEx}{int initsigs} + This function works like \cfunction{Py_Initialize} if + \var{initsigs} is 1. If \var{initsigs} is 0, it skips + initialization registration of signal handlers, which + might be useful when Python is embedded. \versionadded{2.4} +\end{cfuncdesc} + \begin{cfuncdesc}{int}{Py_IsInitialized}{} Return true (nonzero) when the Python interpreter has been initialized, false (zero) if not. After \cfunction{Py_Finalize()} diff --git a/Include/pythonrun.h b/Include/pythonrun.h index 88ceea3..145c009 100644 --- a/Include/pythonrun.h +++ b/Include/pythonrun.h @@ -23,6 +23,7 @@ PyAPI_FUNC(void) Py_SetPythonHome(char *); PyAPI_FUNC(char *) Py_GetPythonHome(void); PyAPI_FUNC(void) Py_Initialize(void); +PyAPI_FUNC(void) Py_InitializeEx(int); PyAPI_FUNC(void) Py_Finalize(void); PyAPI_FUNC(int) Py_IsInitialized(void); PyAPI_FUNC(PyThreadState *) Py_NewInterpreter(void); diff --git a/Misc/NEWS b/Misc/NEWS index f8f5088..1c72294 100644 --- a/Misc/NEWS +++ b/Misc/NEWS @@ -12,6 +12,8 @@ What's New in Python 2.4 alpha 3? Core and builtins ----------------- +- Py_InitializeEx has been added. + - Fix the order of application of decorators. The proper order is bottom-up; the first decorator listed is the last one called. diff --git a/Python/pythonrun.c b/Python/pythonrun.c index 4d03229..917f2be 100644 --- a/Python/pythonrun.c +++ b/Python/pythonrun.c @@ -131,7 +131,7 @@ add_flag(int flag, const char *envs) } void -Py_Initialize(void) +Py_InitializeEx(int install_sigs) { PyInterpreterState *interp; PyThreadState *tstate; @@ -208,7 +208,8 @@ Py_Initialize(void) _PyImportHooks_Init(); - initsigs(); /* Signal handling stuff, including initintr() */ + if (install_sigs) + initsigs(); /* Signal handling stuff, including initintr() */ initmain(); /* Module __main__ */ if (!Py_NoSiteFlag) @@ -276,6 +277,13 @@ Py_Initialize(void) #endif } +void +Py_Initialize(void) +{ + Py_InitializeEx(1); +} + + #ifdef COUNT_ALLOCS extern void dump_counts(void); #endif -- cgit v0.12