source: tags/arb-6.0/PERL2ARB/perlmain_source.c

Last change on this file was 12303, checked in by westram, 10 years ago
  • Property svn:eol-style set to native
  • Property svn:keywords set to Author Date Id Revision
File size: 1.6 KB
Line 
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
14static void xs_init (pTHX);
15static 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.  */
20long _stksize = 64 * 1024;
21#endif
22
23int
24main(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 **)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
66EXTERN_C void boot_ARB (pTHX_ CV* cv);
67EXTERN_C void boot_DynaLoader (pTHX_ CV* cv);
68
69
70static void
71xs_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}
Note: See TracBrowser for help on using the repository browser.