-#ifdef ABC
-#define WIN32_LEAN_AND_MEAN
-#include <windows.h>
-#include <stdio.h>
-#include <stdlib.h>
-#include <fcntl.h>
-#include <io.h>
-#endif
-
/*
* "The Road goes ever on and on, down from the door where it began."
*/
-#ifdef __cplusplus
-extern "C" {
-#endif
#include "EXTERN.h"
#include "perl.h"
-
-#ifdef __cplusplus
-}
-# define EXTERN_C extern "C"
-#else
-# define EXTERN_C extern
-#endif
+#include "XSUB.h"
static void xs_init _((void));
-__declspec(dllexport) int RunPerl(int argc, char **argv, char **env, void *iosubsystem)
+DllExport int
+RunPerl(int argc, char **argv, char **env, void *iosubsystem)
{
- int exitstatus;
- PerlInterpreter *my_perl;
- void *pOldIOSubsystem;
-
- pOldIOSubsystem = SetIOSubSystem(iosubsystem);
+ int exitstatus;
+ PerlInterpreter *my_perl;
+
+#ifdef PERL_GLOBAL_STRUCT
+#define PERLVAR(var,type) /**/
+#define PERLVARI(var,type,init) PL_Vars.var = init;
+#define PERLVARIC(var,type,init) PL_Vars.var = init;
+#include "perlvars.h"
+#undef PERLVAR
+#undef PERLVARI
+#undef PERLVARIC
+#endif
PERL_SYS_INIT(&argc,&argv);
perl_init_i18nl10n(1);
- if (!(my_perl = perl_alloc())) return (1);
- perl_construct( my_perl );
- perl_destruct_level = 0;
-
+ if (!(my_perl = perl_alloc()))
+ return (1);
+ perl_construct( my_perl );
+ PL_perl_destruct_level = 0;
exitstatus = perl_parse( my_perl, xs_init, argc, argv, env);
if (!exitstatus) {
exitstatus = perl_run( my_perl );
}
-
perl_destruct( my_perl );
perl_free( my_perl );
PERL_SYS_TERM();
- SetIOSubSystem(pOldIOSubsystem);
-
- return (exitstatus);
+ return (exitstatus);
}
-/* Register any extra external extensions */
-
-char *staticlinkmodules[]={
- "DynaLoader",
- NULL,
- };
-
-EXTERN_C void boot_DynaLoader _((CV* cv));
+extern HANDLE w32_perldll_handle;
-static void
-xs_init()
-{
- dXSUB_SYS;
- char *file = __FILE__;
- newXS("DynaLoader::boot_DynaLoader", boot_DynaLoader, file);
-}
-
-extern HANDLE PerlDllHandle;
-
-BOOL APIENTRY DllMain(HANDLE hModule, // DLL module handle
- DWORD fdwReason, // reason called
- LPVOID lpvReserved) // reserved
+BOOL APIENTRY
+DllMain(HANDLE hModule, /* DLL module handle */
+ DWORD fdwReason, /* reason called */
+ LPVOID lpvReserved) /* reserved */
{
- switch (fdwReason)
- {
- // The DLL is attaching to a process due to process
- // initialization or a call to LoadLibrary.
- case DLL_PROCESS_ATTACH:
-//#define DEFAULT_BINMODE
+ switch (fdwReason) {
+ /* The DLL is attaching to a process due to process
+ * initialization or a call to LoadLibrary.
+ */
+ case DLL_PROCESS_ATTACH:
+/* #define DEFAULT_BINMODE */
#ifdef DEFAULT_BINMODE
- _setmode( _fileno( stdin ), _O_BINARY );
- _setmode( _fileno( stdout ), _O_BINARY );
- _setmode( _fileno( stderr ), _O_BINARY );
- _fmode = _O_BINARY;
+ setmode( fileno( stdin ), O_BINARY );
+ setmode( fileno( stdout ), O_BINARY );
+ setmode( fileno( stderr ), O_BINARY );
+ _fmode = O_BINARY;
#endif
+ w32_perldll_handle = hModule;
+ break;
- PerlDllHandle = hModule;
- break;
+ /* The DLL is detaching from a process due to
+ * process termination or call to FreeLibrary.
+ */
+ case DLL_PROCESS_DETACH:
+ break;
- // The DLL is detaching from a process due to
- // process termination or call to FreeLibrary.
- case DLL_PROCESS_DETACH:
- break;
+ /* The attached process creates a new thread. */
+ case DLL_THREAD_ATTACH:
+ break;
- // The attached process creates a new thread.
- case DLL_THREAD_ATTACH:
- break;
+ /* The thread of the attached process terminates. */
+ case DLL_THREAD_DETACH:
+ break;
- // The thread of the attached process terminates.
- case DLL_THREAD_DETACH:
- break;
+ default:
+ break;
+ }
+ return TRUE;
+}
- default:
- break;
- }
- return TRUE;
+/* Register any extra external extensions */
+
+char *staticlinkmodules[] = {
+ "DynaLoader",
+ NULL,
+};
+
+EXTERN_C void boot_DynaLoader _((CV* cv));
+
+static void
+xs_init()
+{
+ char *file = __FILE__;
+ dXSUB_SYS;
+ newXS("DynaLoader::boot_DynaLoader", boot_DynaLoader, file);
}