diff options
Diffstat (limited to 'contrib/perl5/miniperlmain.c')
-rw-r--r-- | contrib/perl5/miniperlmain.c | 65 |
1 files changed, 65 insertions, 0 deletions
diff --git a/contrib/perl5/miniperlmain.c b/contrib/perl5/miniperlmain.c new file mode 100644 index 000000000000..4eb1dcdd6fdf --- /dev/null +++ b/contrib/perl5/miniperlmain.c @@ -0,0 +1,65 @@ +/* + * "The Road goes ever on and on, down from the door where it began." + */ + +#ifdef OEMVS +#pragma runopts(HEAP(1M,32K,ANYWHERE,KEEP,8K,4K)) +#endif + + +#include "EXTERN.h" +#include "perl.h" + +static void xs_init _((void)); +static PerlInterpreter *my_perl; + +int +main(int argc, char **argv, char **env) +{ + int exitstatus; + +#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 (!PL_do_undump) { + my_perl = perl_alloc(); + if (!my_perl) + exit(1); + perl_construct( my_perl ); + PL_perl_destruct_level = 0; + } + + exitstatus = perl_parse( my_perl, xs_init, argc, argv, (char **) NULL ); + if (!exitstatus) { + exitstatus = perl_run( my_perl ); + } + + perl_destruct( my_perl ); + perl_free( my_perl ); + + PERL_SYS_TERM(); + + exit( exitstatus ); + return exitstatus; +} + +/* Register any extra external extensions */ + +/* Do not delete this line--writemain depends on it */ + +static void +xs_init(void) +{ + dXSUB_SYS; +} |