{
int exitstatus;
PerlInterpreter *my_perl, *new_perl = NULL;
- OSVERSIONINFO osver;
- char szModuleName[MAX_PATH];
- char *arg0 = argv[0];
- char *ansi = NULL;
bool use_environ = (env == environ);
- osver.dwOSVersionInfoSize = sizeof(osver);
- GetVersionEx(&osver);
-
- if (osver.dwMajorVersion > 4) {
- WCHAR widename[MAX_PATH];
- GetModuleFileNameW(NULL, widename, sizeof(widename)/sizeof(WCHAR));
- argv[0] = ansi = win32_ansipath(widename);
- }
- else {
- Win_GetModuleFileName(NULL, szModuleName, sizeof(szModuleName));
- (void)win32_longpath(szModuleName);
- argv[0] = szModuleName;
- }
-
#ifdef PERL_GLOBAL_STRUCT
#define PERLVAR(prefix,var,type) /**/
#define PERLVARA(prefix,var,type) /**/
if (use_environ)
env = environ;
- exitstatus = perl_parse(my_perl, xs_init, argc, argv, env);
- if (!exitstatus) {
+ if (!perl_parse(my_perl, xs_init, argc, argv, env)) {
#if defined(TOP_CLONE) && defined(USE_ITHREADS) /* XXXXXX testing */
new_perl = perl_clone(my_perl, 1);
- exitstatus = perl_run(new_perl);
+ (void) perl_run(new_perl);
PERL_SET_THX(my_perl);
#else
- exitstatus = perl_run(my_perl);
+ (void) perl_run(my_perl);
#endif
}
- perl_destruct(my_perl);
+ exitstatus = perl_destruct(my_perl);
perl_free(my_perl);
#ifdef USE_ITHREADS
if (new_perl) {
PERL_SET_THX(new_perl);
- perl_destruct(new_perl);
+ exitstatus = perl_destruct(new_perl);
perl_free(new_perl);
}
#endif
- /* Some RTLs may want to free argv[] after main() returns. */
- argv[0] = arg0;
- if (ansi)
- win32_free(ansi);
-
PERL_SYS_TERM();
return (exitstatus);
EXTERN_C /* GCC in C++ mode mangles the name, otherwise */
#endif
BOOL APIENTRY
-DllMain(HANDLE hModule, /* DLL module handle */
+DllMain(HINSTANCE hModule, /* DLL module handle */
DWORD fdwReason, /* reason called */
LPVOID lpvReserved) /* reserved */
{