Patch #900727: Add Py_InitializeEx to allow embedding without signals.
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(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 @@
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 @@
}
void
-Py_Initialize(void)
+Py_InitializeEx(int install_sigs)
{
PyInterpreterState *interp;
PyThreadState *tstate;
@@ -208,7 +208,8 @@
_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 @@
#endif
}
+void
+Py_Initialize(void)
+{
+ Py_InitializeEx(1);
+}
+
+
#ifdef COUNT_ALLOCS
extern void dump_counts(void);
#endif