source: tags/arb_5.1/PERL2ARB/perlmain_source.c

Last change on this file was 677, checked in by richter, 22 years ago

modified perl interface library files 27.06.2002

  • 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(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
66EXTERN_C void boot_ARB (pTHX_ CV* cv);
67EXTERN_C void boot_DynaLoader (pTHX_ CV* cv);
68
69static void
70xs_init(pTHX)
71{
72        char *file = __FILE__;
73        dXSUB_SYS;
74        {
75        newXS("ARB::bootstrap", boot_ARB, file);
76        }
77        {
78        /* DynaLoader is a special case */
79
80        newXS("DynaLoader::boot_DynaLoader", boot_DynaLoader, file);
81        }
82}
Note: See TracBrowser for help on using the repository browser.