Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with HTTPS or Subversion.

Download ZIP
Newer
Older
100644 171 lines (147 sloc) 4.859 kb
d637624 @jhi Sprinkle some copyrights (use the oldest timestamp to
jhi authored
1 /* miniperlmain.c
2 *
cbdf9ef Update copyright years.
Nicholas Clark authored
3 * Copyright (C) 1994, 1995, 1996, 1997, 1999, 2000, 2001, 2002, 2003,
663f364 Fix up copyright years for files modified in 2007.
Nicholas Clark authored
4 * 2004, 2005, 2006, 2007, by Larry Wall and others
d637624 @jhi Sprinkle some copyrights (use the oldest timestamp to
jhi authored
5 *
6 * You may distribute under the terms of either the GNU General Public
7 * License or the Artistic License, as specified in the README file.
8 *
9 */
10
a0d0e21 perl 5.000
Larry Wall authored
11 /*
4ac7155 PATCH: Large omnibus patch to clean up the JRRT quotes
Tom Christiansen authored
12 * The Road goes ever on and on
13 * Down from the door where it began.
14 *
15 * [Bilbo on p.35 of _The Lord of the Rings_, I/i: "A Long-Expected Party"]
16 * [Frodo on p.73 of _The Lord of the Rings_, I/iii: "Three Is Company"]
a0d0e21 perl 5.000
Larry Wall authored
17 */
18
166f8a2 Add comment to the top of most .c files explaining their purpose
Dave Mitchell authored
19 /* This file contains the main() function for the perl interpreter.
20 * Note that miniperlmain.c contains main() for the 'miniperl' binary,
21 * while perlmain.c contains main() for the 'perl' binary.
22 *
ddfa107 more typo fixes for change 3176 (comments at top of .c files)
Dave Mitchell authored
23 * Miniperl is like perl except that it does not support dynamic loading,
24 * and in fact is used to build the dynamic modules needed for the 'real'
6129664 Add comment to top of reentr.c and fix typos in other files
Dave Mitchell authored
25 * perl executable.
166f8a2 Add comment to the top of most .c files explaining their purpose
Dave Mitchell authored
26 */
27
60e4866 Minor changes to ease port to MVS
Len Johnson authored
28 #ifdef OEMVS
9133bba Memory tweaks and notes for OEMVS.
Nick Ing-Simmons authored
29 #ifdef MYMALLOC
6129664 Add comment to top of reentr.c and fix typos in other files
Dave Mitchell authored
30 /* sbrk is limited to first heap segment so make it big */
9133bba Memory tweaks and notes for OEMVS.
Nick Ing-Simmons authored
31 #pragma runopts(HEAP(8M,500K,ANYWHERE,KEEP,8K,4K) STACK(,,ANY,) ALL31(ON))
32 #else
33 #pragma runopts(HEAP(2M,500K,ANYWHERE,KEEP,8K,4K) STACK(,,ANY,) ALL31(ON))
34 #endif
60e4866 Minor changes to ease port to MVS
Len Johnson authored
35 #endif
36
4633a7c 5.002 beta 1
Larry Wall authored
37
ecfc542 perl5.000 patch.0g: [various portability fixes, and use latest metaconfi...
Andy Dougherty authored
38 #include "EXTERN.h"
864dbfa initial stub implementation of implicit thread/this
Gurusamy Sarathy authored
39 #define PERL_IN_MINIPERLMAIN_C
2304df6 perl 5.0 alpha 8
Andy Dougherty authored
40 #include "perl.h"
41
864dbfa initial stub implementation of implicit thread/this
Gurusamy Sarathy authored
42 static void xs_init (pTHX);
a0d0e21 perl 5.000
Larry Wall authored
43 static PerlInterpreter *my_perl;
44
27da23d @jhi Symbian port of Perl
jhi authored
45 #if defined(PERL_GLOBAL_STRUCT_PRIVATE)
46 /* The static struct perl_vars* may seem counterproductive since the
47 * whole idea PERL_GLOBAL_STRUCT_PRIVATE was to avoid statics, but note
48 * that this static is not in the shared perl library, the globals PL_Vars
49 * and PL_VarsPtr will stay away. */
50 static struct perl_vars* my_plvarsp;
51 struct perl_vars* Perl_GetVarsPrivate(void) { return my_plvarsp; }
52 #endif
53
2f3efc9 @jhi z/OS: non-CPAN ext and lib + main() without the third arg + Stephen McCa...
jhi authored
54 #ifdef NO_ENV_ARRAY_IN_MAIN
55 extern char **environ;
56 int
57 main(int argc, char **argv)
58 #else
c07a80f perl5.002beta3
Perl 5 Porters authored
59 int
91487cf @jhi Oh, bother. In Tru64 cc -std1 was looking rather nice
jhi authored
60 main(int argc, char **argv, char **env)
2f3efc9 @jhi z/OS: non-CPAN ext and lib + main() without the third arg + Stephen McCa...
jhi authored
61 #endif
2304df6 perl 5.0 alpha 8
Andy Dougherty authored
62 {
27da23d @jhi Symbian port of Perl
jhi authored
63 dVAR;
01be072 @jswright main: Unregister signal handler before destroying my_perl
jswright authored
64 int exitstatus, i;
27da23d @jhi Symbian port of Perl
jhi authored
65 #ifdef PERL_GLOBAL_STRUCT
66 struct perl_vars *plvarsp = init_global_struct();
67 # ifdef PERL_GLOBAL_STRUCT_PRIVATE
68 my_vars = my_plvarsp = plvarsp;
69 # endif
70 #endif /* PERL_GLOBAL_STRUCT */
dedb16d @dgl [perl #81500] Make compilation work when NO_ENV_ARRAY_IN_MAIN is defined
dgl authored
71 #ifndef NO_ENV_ARRAY_IN_MAIN
72 PERL_UNUSED_ARG(env);
73 #endif
50acdf9 SuSE's perl safe_putenf diff
Michael Schroeder authored
74 #ifndef PERL_USE_SAFE_PUTENV
8bf2062 Change PL_use_safe_putenv from int to bool.
Nicholas Clark authored
75 PL_use_safe_putenv = FALSE;
50acdf9 SuSE's perl safe_putenf diff
Michael Schroeder authored
76 #endif /* PERL_USE_SAFE_PUTENV */
2304df6 perl 5.0 alpha 8
Andy Dougherty authored
77
2c4f7f0 @dougm [patch] perl.gprof control
dougm authored
78 /* if user wants control of gprof profiling off by default */
79 /* noop unless Configure is given -Accflags=-DPERL_GPROF_CONTROL */
80 PERL_GPROF_MONCONTROL(0);
81
2f3efc9 @jhi z/OS: non-CPAN ext and lib + main() without the third arg + Stephen McCa...
jhi authored
82 #ifdef NO_ENV_ARRAY_IN_MAIN
83 PERL_SYS_INIT3(&argc,&argv,&environ);
84 #else
91487cf @jhi Oh, bother. In Tru64 cc -std1 was looking rather nice
jhi authored
85 PERL_SYS_INIT3(&argc,&argv,&env);
2f3efc9 @jhi z/OS: non-CPAN ext and lib + main() without the third arg + Stephen McCa...
jhi authored
86 #endif
4633a7c 5.002 beta 1
Larry Wall authored
87
3db8f15 @Tux Happy chainsaw stories; The removal of the 5005 threads
Tux authored
88 #if defined(USE_ITHREADS)
52e18b1 Make perl fork()-safe (in a slightly limited way) even on
Gurusamy Sarathy authored
89 /* XXX Ideally, this should really be happening in perl_alloc() or
90 * perl_construct() to keep libperl.a transparently fork()-safe.
91 * It is currently done here only because Apache/mod_perl have
92 * problems due to lack of a call to cancel pthread_atfork()
93 * handlers when shared objects that contain the handlers may
94 * be dlclose()d. This forces applications that embed perl to
95 * call PTHREAD_ATFORK() explicitly, but if and only if it hasn't
96 * been called at least once before in the current process.
97 * --GSAR 2001-07-20 */
98e467d @dougm [patch] pthread_atfork bandaid
dougm authored
98 PTHREAD_ATFORK(Perl_atfork_lock,
99 Perl_atfork_unlock,
100 Perl_atfork_unlock);
101 #endif
102
3280af2 PL_ prefix to all perlvars, part1
Nick Ing-Simmons authored
103 if (!PL_do_undump) {
a0d0e21 perl 5.000
Larry Wall authored
104 my_perl = perl_alloc();
105 if (!my_perl)
106 exit(1);
642f9de perldelta update, typos and whitespace adjustments
Gurusamy Sarathy authored
107 perl_construct(my_perl);
3280af2 PL_ prefix to all perlvars, part1
Nick Ing-Simmons authored
108 PL_perl_destruct_level = 0;
a0d0e21 perl 5.000
Larry Wall authored
109 }
31d77e5 Adds PERL_EXIT_DESTRUCT_END to PL_exit_flags which if set moves END bloc...
Artur Bergman authored
110 PL_exit_flags |= PERL_EXIT_DESTRUCT_END;
642f9de perldelta update, typos and whitespace adjustments
Gurusamy Sarathy authored
111 exitstatus = perl_parse(my_perl, xs_init, argc, argv, (char **)NULL);
8815fa0 END{} can change the return value even if we die from BEGIN{}
Artur Bergman authored
112 if (!exitstatus)
31d77e5 Adds PERL_EXIT_DESTRUCT_END to PL_exit_flags which if set moves END bloc...
Artur Bergman authored
113 perl_run(my_perl);
22f43f2 PERL_TRACK_MEMPOOL cripples environment after exit()
Marcus Holland-Moritz authored
114
01d6546 @dgl Microperl doesn't do signal handlers, ifdef some handling code
dgl authored
115 #ifndef PERL_MICRO
01be072 @jswright main: Unregister signal handler before destroying my_perl
jswright authored
116 /* Unregister our signal handler before destroying my_perl */
724be0c @chipdude do not try to restore state of pseudosignal zero
chipdude authored
117 for (i = 1; PL_sig_name[i]; i++) {
01be072 @jswright main: Unregister signal handler before destroying my_perl
jswright authored
118 if (rsignal_state(PL_sig_num[i]) == (Sighandler_t) PL_csighandlerp) {
119 rsignal(PL_sig_num[i], (Sighandler_t) SIG_DFL);
120 }
121 }
01d6546 @dgl Microperl doesn't do signal handlers, ifdef some handling code
dgl authored
122 #endif
01be072 @jswright main: Unregister signal handler before destroying my_perl
jswright authored
123
8815fa0 END{} can change the return value even if we die from BEGIN{}
Artur Bergman authored
124 exitstatus = perl_destruct(my_perl);
2304df6 perl 5.0 alpha 8
Andy Dougherty authored
125
642f9de perldelta update, typos and whitespace adjustments
Gurusamy Sarathy authored
126 perl_free(my_perl);
2304df6 perl 5.0 alpha 8
Andy Dougherty authored
127
2f3efc9 @jhi z/OS: non-CPAN ext and lib + main() without the third arg + Stephen McCa...
jhi authored
128 #if defined(USE_ENVIRON_ARRAY) && defined(PERL_TRACK_MEMPOOL) && !defined(NO_ENV_ARRAY_IN_MAIN)
22f43f2 PERL_TRACK_MEMPOOL cripples environment after exit()
Marcus Holland-Moritz authored
129 /*
130 * The old environment may have been freed by perl_free()
131 * when PERL_TRACK_MEMPOOL is defined, but without having
132 * been restored by perl_destruct() before (this is only
133 * done if destruct_level > 0).
134 *
135 * It is important to have a valid environment for atexit()
136 * routines that are eventually called.
137 */
138 environ = env;
139 #endif
140
27da23d @jhi Symbian port of Perl
jhi authored
141 #ifdef PERL_GLOBAL_STRUCT
142 free_global_struct(plvarsp);
143 #endif /* PERL_GLOBAL_STRUCT */
144
a91be33 OS/2 update: add initialization macro
Perl 5 Porters authored
145 PERL_SYS_TERM();
146
642f9de perldelta update, typos and whitespace adjustments
Gurusamy Sarathy authored
147 exit(exitstatus);
4e35701 Builds C++ Borland, MSVC++ (Win32) and GCC++ (Solaris)
Nick Ing-Simmons authored
148 return exitstatus;
2304df6 perl 5.0 alpha 8
Andy Dougherty authored
149 }
150
151 /* Register any extra external extensions */
152
4633a7c 5.002 beta 1
Larry Wall authored
153 /* Do not delete this line--writemain depends on it */
154
a0d0e21 perl 5.000
Larry Wall authored
155 static void
864dbfa initial stub implementation of implicit thread/this
Gurusamy Sarathy authored
156 xs_init(pTHX)
2304df6 perl 5.0 alpha 8
Andy Dougherty authored
157 {
96a5add @petdance unused context warnings
petdance authored
158 PERL_UNUSED_CONTEXT;
642f9de perldelta update, typos and whitespace adjustments
Gurusamy Sarathy authored
159 dXSUB_SYS;
2304df6 perl 5.0 alpha 8
Andy Dougherty authored
160 }
66610fd @rgs Add editor boilerplates to all C files
rgs authored
161
162 /*
163 * Local variables:
164 * c-indentation-style: bsd
165 * c-basic-offset: 4
14d04a3 @rjbs update the editor hints for spaces, not tabs
rjbs authored
166 * indent-tabs-mode: nil
66610fd @rgs Add editor boilerplates to all C files
rgs authored
167 * End:
168 *
14d04a3 @rjbs update the editor hints for spaces, not tabs
rjbs authored
169 * ex: set ts=8 sts=4 sw=4 et:
37442d5 @rgs Include vim/emacs modelines in generated files to open them
rgs authored
170 */
Something went wrong with that request. Please try again.