source: trunk/third/perl/miniperlmain.c @ 18450

Revision 18450, 2.7 KB checked in by zacheiss, 21 years ago (diff)
This commit was generated by cvs2svn to compensate for changes in r18449, which included commits to RCS files with non-trunk default branches.
Line 
1/*    miniperlmain.c
2 *
3 *    Copyright (c) 1997-2002, Larry Wall
4 *
5 *    You may distribute under the terms of either the GNU General Public
6 *    License or the Artistic License, as specified in the README file.
7 *
8 */
9
10/*
11 * "The Road goes ever on and on, down from the door where it began."
12 */
13
14#ifdef OEMVS
15#ifdef MYMALLOC
16/* sbrk is limited to first heap segement so make it big */
17#pragma runopts(HEAP(8M,500K,ANYWHERE,KEEP,8K,4K) STACK(,,ANY,) ALL31(ON))
18#else
19#pragma runopts(HEAP(2M,500K,ANYWHERE,KEEP,8K,4K) STACK(,,ANY,) ALL31(ON))
20#endif
21#endif
22
23
24#include "EXTERN.h"
25#define PERL_IN_MINIPERLMAIN_C
26#include "perl.h"
27
28static void xs_init (pTHX);
29static PerlInterpreter *my_perl;
30
31#if defined (__MINT__) || defined (atarist)
32/* The Atari operating system doesn't have a dynamic stack.  The
33   stack size is determined from this value.  */
34long _stksize = 64 * 1024;
35#endif
36
37int
38main(int argc, char **argv, char **env)
39{
40    int exitstatus;
41
42#ifdef PERL_GLOBAL_STRUCT
43#define PERLVAR(var,type) /**/
44#define PERLVARA(var,type) /**/
45#define PERLVARI(var,type,init) PL_Vars.var = init;
46#define PERLVARIC(var,type,init) PL_Vars.var = init;
47#include "perlvars.h"
48#undef PERLVAR
49#undef PERLVARA
50#undef PERLVARI
51#undef PERLVARIC
52#endif
53
54    /* if user wants control of gprof profiling off by default */
55    /* noop unless Configure is given -Accflags=-DPERL_GPROF_CONTROL */
56    PERL_GPROF_MONCONTROL(0);
57
58    PERL_SYS_INIT3(&argc,&argv,&env);
59
60#if defined(USE_5005THREADS) || defined(USE_ITHREADS)
61    /* XXX Ideally, this should really be happening in perl_alloc() or
62     * perl_construct() to keep libperl.a transparently fork()-safe.
63     * It is currently done here only because Apache/mod_perl have
64     * problems due to lack of a call to cancel pthread_atfork()
65     * handlers when shared objects that contain the handlers may
66     * be dlclose()d.  This forces applications that embed perl to
67     * call PTHREAD_ATFORK() explicitly, but if and only if it hasn't
68     * been called at least once before in the current process.
69     * --GSAR 2001-07-20 */
70    PTHREAD_ATFORK(Perl_atfork_lock,
71                   Perl_atfork_unlock,
72                   Perl_atfork_unlock);
73#endif
74
75    if (!PL_do_undump) {
76        my_perl = perl_alloc();
77        if (!my_perl)
78            exit(1);
79        perl_construct(my_perl);
80        PL_perl_destruct_level = 0;
81    }
82    PL_exit_flags |= PERL_EXIT_DESTRUCT_END;
83    exitstatus = perl_parse(my_perl, xs_init, argc, argv, (char **)NULL);
84    if (!exitstatus)
85        perl_run(my_perl);
86     
87    exitstatus = perl_destruct(my_perl);
88
89    perl_free(my_perl);
90
91    PERL_SYS_TERM();
92
93    exit(exitstatus);
94    return exitstatus;
95}
96
97/* Register any extra external extensions */
98
99/* Do not delete this line--writemain depends on it */
100
101static void
102xs_init(pTHX)
103{
104    dXSUB_SYS;
105}
Note: See TracBrowser for help on using the repository browser.