ARB
perlmain_source.c
Go to the documentation of this file.
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(EXIT_FAILURE);
46  perl_construct(my_perl);
47  PL_perl_destruct_level = 0;
48  }
49 
50  exitstatus = perl_parse(my_perl, xs_init, argc, argv, (char **)NULp);
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 EXTERN_C void boot_ARB (pTHX_ CV* cv);
67 EXTERN_C void boot_DynaLoader (pTHX_ CV* cv);
68 
69 
70 static void
71 xs_init(pTHX)
72 {
73  const char *file = __FILE__;
74 
75  dXSUB_SYS;
76  {
77  newXS("ARB::bootstrap", boot_ARB, file);
78  }
79  {
80  // DynaLoader is a special case
81 
82  newXS("DynaLoader::boot_DynaLoader", boot_DynaLoader, file);
83  }
84 }
EXTERN_C void boot_ARB(pTHX_ CV *cv)
int main(int argc, char **argv, char **env)
static void xs_init(pTHX)
#define EXIT_FAILURE
Definition: arb_a2ps.c:157
static PerlInterpreter * my_perl
EXTERN_C void boot_DynaLoader(pTHX_ CV *cv)
#define NULp
Definition: cxxforward.h:116