This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
UMRs in universal.c (SvCUR() may not be there unless SvPOK())
[perl5.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 #define PERL_IN_MINIPERLMAIN_C
12 #include "perl.h"
13
14 static void xs_init (pTHX);
15 static PerlInterpreter *my_perl;
16
17 #if defined (__MINT__) || defined (atarist)
18 /* The Atari operating system doesn't have a dynamic stack.  The
19    stack size is determined from this value.  */
20 long _stksize = 64 * 1024;
21 #endif
22
23 int
24 main(int argc, char **argv, char **env)
25 {
26     int exitstatus;
27
28 #ifdef PERL_GLOBAL_STRUCT
29 #define PERLVAR(var,type) /**/
30 #define PERLVARA(var,type) /**/
31 #define PERLVARI(var,type,init) PL_Vars.var = init;
32 #define PERLVARIC(var,type,init) PL_Vars.var = init;
33 #include "perlvars.h"
34 #undef PERLVAR
35 #undef PERLVARA
36 #undef PERLVARI
37 #undef PERLVARIC
38 #endif
39
40     PERL_SYS_INIT3(&argc,&argv,&env);
41
42     if (!PL_do_undump) {
43         my_perl = perl_alloc();
44         if (!my_perl)
45             exit(1);
46         perl_construct(my_perl);
47         PL_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(pTHX)
70 {
71     dXSUB_SYS;
72 }