*/
/*
- * "The Road goes ever on and on, down from the door where it began."
+ * The Road goes ever on and on
+ * Down from the door where it began.
+ *
+ * [Bilbo on p.35 of _The Lord of the Rings_, I/i: "A Long-Expected Party"]
+ * [Frodo on p.73 of _The Lord of the Rings_, I/iii: "Three Is Company"]
*/
/* This file contains the main() function for the perl interpreter.
static void xs_init (pTHX);
static PerlInterpreter *my_perl;
-#if defined (__MINT__) || defined (atarist)
+#if defined (atarist)
/* The Atari operating system doesn't have a dynamic stack. The
stack size is determined from this value. */
long _stksize = 64 * 1024;
#endif
{
dVAR;
- int exitstatus;
+ int exitstatus, i;
#ifdef PERL_GLOBAL_STRUCT
struct perl_vars *plvarsp = init_global_struct();
# ifdef PERL_GLOBAL_STRUCT_PRIVATE
my_vars = my_plvarsp = plvarsp;
# endif
#endif /* PERL_GLOBAL_STRUCT */
- (void)env;
+#ifndef NO_ENV_ARRAY_IN_MAIN
+ PERL_UNUSED_ARG(env);
+#endif
#ifndef PERL_USE_SAFE_PUTENV
- PL_use_safe_putenv = 0;
+ PL_use_safe_putenv = FALSE;
#endif /* PERL_USE_SAFE_PUTENV */
/* if user wants control of gprof profiling off by default */
if (!exitstatus)
perl_run(my_perl);
+#ifndef PERL_MICRO
+ /* Unregister our signal handler before destroying my_perl */
+ for (i = 0; PL_sig_name[i]; i++) {
+ if (rsignal_state(PL_sig_num[i]) == (Sighandler_t) PL_csighandlerp) {
+ rsignal(PL_sig_num[i], (Sighandler_t) SIG_DFL);
+ }
+ }
+#endif
+
exitstatus = perl_destruct(my_perl);
perl_free(my_perl);