Introduced thr->threadsvp and THREADSV() for faster per-thread
[p5sagit/p5-mst-13.2.git] / miniperlmain.c
1 /*
2  * "The Road goes ever on and on, down from the door where it began."
3  */
4
5 #ifdef OEMVS
6 #pragma runopts(HEAP(1M,32K,ANYWHERE,KEEP,8K,4K))
7 #endif
8
9
10 #include "EXTERN.h"
11 #include "perl.h"
12
13 static void xs_init _((void));
14 static PerlInterpreter *my_perl;
15
16 int
17 #ifdef CAN_PROTOTYPE
18 main(int argc, char **argv, char **env)
19 #else
20 main(argc, argv, env)
21 int argc;
22 char **argv;
23 char **env;
24 #endif
25 {
26     int exitstatus;
27
28 #ifdef PERL_GLOBAL_STRUCT
29 #define PERLVAR(var,type) /**/
30 #define PERLVARI(var,type,init) Perl_Vars.var = init;
31 #define PERLVARIC(var,type,init) Perl_Vars.var = init;
32 #include "perlvars.h"
33 #undef PERLVAR
34 #undef PERLVARI
35 #undef PERLVARIC
36 #endif
37
38     PERL_SYS_INIT(&argc,&argv);
39
40     perl_init_i18nl10n(1);
41
42     if (!do_undump) {
43         my_perl = perl_alloc();
44         if (!my_perl)
45             exit(1);
46         perl_construct( my_perl );
47         perl_destruct_level = 0;
48     }
49
50     exitstatus = perl_parse( my_perl, xs_init, argc, argv, (char **) NULL );
51     if (!exitstatus) {
52         exitstatus = perl_run( my_perl );
53     }
54
55     perl_destruct( my_perl );
56     perl_free( my_perl );
57
58     PERL_SYS_TERM();
59
60     exit( exitstatus );
61     return exitstatus;
62 }
63
64 /* Register any extra external extensions */
65
66 /* Do not delete this line--writemain depends on it */
67
68 static void
69 xs_init(void)
70 {
71   dXSUB_SYS;
72 }