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