summaryrefslogtreecommitdiffstats
path: root/PC/os2emx/dllentry.c
diff options
context:
space:
mode:
Diffstat (limited to 'PC/os2emx/dllentry.c')
-rw-r--r--PC/os2emx/dllentry.c42
1 files changed, 42 insertions, 0 deletions
diff --git a/PC/os2emx/dllentry.c b/PC/os2emx/dllentry.c
new file mode 100644
index 0000000..9ccca1c
--- /dev/null
+++ b/PC/os2emx/dllentry.c
@@ -0,0 +1,42 @@
+/*
+ * This is the entry point for the Python 2.3 core DLL.
+ */
+
+#define NULL 0
+
+#define REF(s) extern void s(); void *____ref_##s = &s;
+
+/* Make references to imported symbols to pull them from static library */
+REF(Py_Main);
+
+#include <signal.h>
+
+extern int _CRT_init(void);
+extern void _CRT_term(void);
+extern void __ctordtorInit(void);
+extern void __ctordtorTerm(void);
+
+unsigned long _DLL_InitTerm(unsigned long mod_handle, unsigned long flag)
+{
+ switch (flag)
+ {
+ case 0:
+ if (_CRT_init())
+ return 0;
+ __ctordtorInit();
+
+ /* Ignore fatal signals */
+ signal(SIGSEGV, SIG_IGN);
+ signal(SIGFPE, SIG_IGN);
+
+ return 1;
+
+ case 1:
+ __ctordtorTerm();
+ _CRT_term();
+ return 1;
+
+ default:
+ return 0;
+ }
+}