e576bb | 2002-10-11 | Martin Nilsson | |
|
aedfb1 | 2002-10-09 | Martin Nilsson | |
|
5267b7 | 1995-08-09 | Fredrik Hübinette (Hubbe) | | #include "global.h"
|
574088 | 1998-01-01 | Fredrik Hübinette (Hubbe) | | #include "fdlib.h"
|
5267b7 | 1995-08-09 | Fredrik Hübinette (Hubbe) | | #include "backend.h"
#include "module.h"
#include "object.h"
#include "lex.h"
|
06983f | 1996-09-22 | Fredrik Hübinette (Hubbe) | | #include "pike_types.h"
#include "builtin_functions.h"
|
5267b7 | 1995-08-09 | Fredrik Hübinette (Hubbe) | | #include "array.h"
#include "stralloc.h"
#include "interpret.h"
|
b2d3e4 | 2000-12-01 | Fredrik Hübinette (Hubbe) | | #include "pike_error.h"
|
bb55f8 | 1997-03-16 | Fredrik Hübinette (Hubbe) | | #include "pike_macros.h"
|
5267b7 | 1995-08-09 | Fredrik Hübinette (Hubbe) | | #include "callback.h"
|
06983f | 1996-09-22 | Fredrik Hübinette (Hubbe) | | #include "signal_handler.h"
|
07513e | 1996-10-04 | Fredrik Hübinette (Hubbe) | | #include "threads.h"
|
9c6f7d | 1997-04-15 | Fredrik Hübinette (Hubbe) | | #include "dynamic_load.h"
#include "gc.h"
|
61e9a0 | 1998-01-25 | Fredrik Hübinette (Hubbe) | | #include "multiset.h"
|
9c6f7d | 1997-04-15 | Fredrik Hübinette (Hubbe) | | #include "mapping.h"
|
574088 | 1998-01-01 | Fredrik Hübinette (Hubbe) | | #include "cpp.h"
|
0808b2 | 1998-01-25 | Fredrik Hübinette (Hubbe) | | #include "main.h"
|
19aaeb | 1998-05-25 | Fredrik Hübinette (Hubbe) | | #include "operators.h"
|
ab5670 | 2001-04-30 | Martin Stjernholm | | #include "rbtree.h"
|
37775c | 2004-04-06 | Martin Nilsson | | #include "pike_security.h"
|
67f0b5 | 1999-09-26 | Henrik Grubbström (Grubba) | | #include "constants.h"
|
c37c7e | 1999-03-26 | Fredrik Hübinette (Hubbe) | | #include "version.h"
|
4b63c6 | 2001-12-14 | Martin Nilsson | | #include "program.h"
|
d5c61f | 2002-12-07 | Henrik Grubbström (Grubba) | | #include "pike_rusage.h"
|
d658ab | 2002-09-26 | Martin Stjernholm | | #include "module_support.h"
|
143d88 | 2003-11-14 | Martin Stjernholm | | #include "opcodes.h"
|
4b63c6 | 2001-12-14 | Martin Nilsson | |
#ifdef AUTO_BIGNUM
#include "bignum.h"
#endif
|
574088 | 1998-01-01 | Fredrik Hübinette (Hubbe) | |
|
ec337d | 2004-12-29 | Henrik Grubbström (Grubba) | | #include "pike_embed.h"
|
2064c0 | 2010-06-17 | Henrik Grubbström (Grubba) | | #ifdef LIBPIKE
#if defined(HAVE_DLOPEN) && defined(HAVE_DLFCN_H)
|
07eda2 | 2000-07-05 | Fredrik Hübinette (Hubbe) | | #include <dlfcn.h>
|
2064c0 | 2010-06-17 | Henrik Grubbström (Grubba) | | #elif !defined(USE_DLL) && defined(USE_MY_WIN32_DLOPEN)
#include "pike_dlfcn.h"
#else
#undef LIBPIKE
#endif
|
07eda2 | 2000-07-05 | Fredrik Hübinette (Hubbe) | | #endif
|
cee581 | 1999-12-05 | Henrik Grubbström (Grubba) | | #include "las.h"
|
834e02 | 2003-11-28 | Henrik Grubbström (Grubba) | | #ifdef HAVE_UNISTD_H
|
fde6ed | 2003-11-27 | Martin Stjernholm | | #include <unistd.h>
|
834e02 | 2003-11-28 | Henrik Grubbström (Grubba) | | #endif
#ifdef HAVE_ERRNO_H
|
ac173e | 1997-11-02 | Henrik Grubbström (Grubba) | | #include <errno.h>
|
834e02 | 2003-11-28 | Henrik Grubbström (Grubba) | | #endif
|
ac173e | 1997-11-02 | Henrik Grubbström (Grubba) | |
|
5267b7 | 1995-08-09 | Fredrik Hübinette (Hubbe) | | #ifdef HAVE_LOCALE_H
#include <locale.h>
#endif
|
693018 | 1996-02-25 | Fredrik Hübinette (Hubbe) | |
|
6e37dc | 1996-06-21 | Fredrik Hübinette (Hubbe) | | #include "time_stuff.h"
|
693018 | 1996-02-25 | Fredrik Hübinette (Hubbe) | |
|
5267b7 | 1995-08-09 | Fredrik Hübinette (Hubbe) | | #ifdef HAVE_SYS_RESOURCE_H
#include <sys/resource.h>
#endif
|
ff34a5 | 2001-05-31 | Henrik Grubbström (Grubba) | |
|
b0f01d | 2007-05-18 | Henrik Grubbström (Grubba) | | #ifdef PIKE_EXTRA_DEBUG
#define TRACE_MAIN
#endif /* PIKE_EXTRA_DEBUG */
|
ff34a5 | 2001-05-31 | Henrik Grubbström (Grubba) | | #ifdef TRACE_MAIN
#define TRACE(X) fprintf X
#else /* !TRACE_MAIN */
#define TRACE(X)
#endif /* TRACE_MAIN */
|
f8e5fe | 1997-01-18 | Henrik Grubbström (Grubba) | |
|
df458c | 2004-12-30 | Henrik Grubbström (Grubba) | |
|
3f1eeb | 1998-04-05 | Fredrik Hübinette (Hubbe) | |
|
df458c | 2004-12-30 | Henrik Grubbström (Grubba) | | #define MASTER_COOKIE1 "(#*&)@(*&$"
#define MASTER_COOKIE2 "Master Cookie:"
|
5267b7 | 1995-08-09 | Fredrik Hübinette (Hubbe) | |
|
df458c | 2004-12-30 | Henrik Grubbström (Grubba) | | #define MASTER_COOKIE MASTER_COOKIE1 MASTER_COOKIE2
|
5267b7 | 1995-08-09 | Fredrik Hübinette (Hubbe) | |
|
df458c | 2004-12-30 | Henrik Grubbström (Grubba) | | #ifndef MAXPATHLEN
#define MAXPATHLEN 32768
#endif
static char master_location[MAXPATHLEN * 2] = MASTER_COOKIE;
static void set_master(const char *file)
|
5267b7 | 1995-08-09 | Fredrik Hübinette (Hubbe) | | {
|
df458c | 2004-12-30 | Henrik Grubbström (Grubba) | | if (strlen(file) >= MAXPATHLEN*2 - CONSTANT_STRLEN(MASTER_COOKIE)) {
|
4e5f74 | 2005-05-20 | Martin Stjernholm | | fprintf(stderr, "Too long path to master: \"%s\" (limit:%"PRINTPTRDIFFT"d)\n",
|
df458c | 2004-12-30 | Henrik Grubbström (Grubba) | | file, MAXPATHLEN*2 - CONSTANT_STRLEN(MASTER_COOKIE));
exit(1);
}
strcpy(master_location + CONSTANT_STRLEN(MASTER_COOKIE), file);
|
5267b7 | 1995-08-09 | Fredrik Hübinette (Hubbe) | | }
|
a999e7 | 1998-07-27 | Fredrik Hübinette (Hubbe) | | #ifdef __NT__
|
1c32fd | 2000-08-19 | Henrik Grubbström (Grubba) | | static void get_master_key(HKEY cat)
|
a999e7 | 1998-07-27 | Fredrik Hübinette (Hubbe) | | {
HKEY k;
char buffer[4096];
DWORD len=sizeof(buffer)-1,type=REG_SZ;
|
a5cd6a | 2001-09-24 | Henrik Grubbström (Grubba) | |
|
a999e7 | 1998-07-27 | Fredrik Hübinette (Hubbe) | | if(RegOpenKeyEx(cat,
|
387b04 | 2003-01-02 | Martin Nilsson | | (LPCTSTR)("SOFTWARE\\Pike\\"
|
1f1f18 | 2001-03-10 | Henrik Grubbström (Grubba) | | DEFINETOSTR(PIKE_MAJOR_VERSION)
"."
|
50bf1e | 2004-09-16 | Martin Nilsson | | DEFINETOSTR(PIKE_MINOR_VERSION)
"."
DEFINETOSTR(PIKE_BUILD_VERSION)),
|
a999e7 | 1998-07-27 | Fredrik Hübinette (Hubbe) | | 0,KEY_READ,&k)==ERROR_SUCCESS)
{
if(RegQueryValueEx(k,
"PIKE_MASTER",
0,
&type,
buffer,
&len)==ERROR_SUCCESS)
{
|
df458c | 2004-12-30 | Henrik Grubbström (Grubba) | |
set_master(buffer);
|
a999e7 | 1998-07-27 | Fredrik Hübinette (Hubbe) | | }
RegCloseKey(k);
}
}
#endif /* __NT__ */
|
1176e8 | 2009-09-18 | Henrik Grubbström (Grubba) | | static void set_default_master(const char *bin_name)
|
df458c | 2004-12-30 | Henrik Grubbström (Grubba) | | {
|
200ba8 | 2008-06-29 | Martin Stjernholm | | char *mp = master_location + CONSTANT_STRLEN (MASTER_COOKIE);
|
df458c | 2004-12-30 | Henrik Grubbström (Grubba) | | #ifdef HAVE_GETENV
|
200ba8 | 2008-06-29 | Martin Stjernholm | | if(!*mp && getenv("PIKE_MASTER")) {
|
df458c | 2004-12-30 | Henrik Grubbström (Grubba) | | set_master(getenv("PIKE_MASTER"));
}
#endif
#ifdef __NT__
|
200ba8 | 2008-06-29 | Martin Stjernholm | | if(!*mp) get_master_key(HKEY_CURRENT_USER);
if(!*mp) get_master_key(HKEY_LOCAL_MACHINE);
|
df458c | 2004-12-30 | Henrik Grubbström (Grubba) | | #endif
|
1176e8 | 2009-09-18 | Henrik Grubbström (Grubba) | | if(!*mp && strncmp(DEFAULT_MASTER, "NONE/", 5))
|
df458c | 2004-12-30 | Henrik Grubbström (Grubba) | | {
|
200ba8 | 2008-06-29 | Martin Stjernholm | | SNPRINTF (mp, sizeof (master_location) - CONSTANT_STRLEN (MASTER_COOKIE),
|
1700b0 | 2008-06-28 | Martin Stjernholm | | DEFAULT_MASTER,
PIKE_MAJOR_VERSION,
PIKE_MINOR_VERSION,
PIKE_BUILD_VERSION);
|
df458c | 2004-12-30 | Henrik Grubbström (Grubba) | | }
|
1700b0 | 2008-06-28 | Martin Stjernholm | | #ifdef __NT__
|
200ba8 | 2008-06-29 | Martin Stjernholm | | if (!(*mp == '/' || *mp == '\\' || (isalpha (*mp) && mp[1] == ':'))) {
|
1700b0 | 2008-06-28 | Martin Stjernholm | | char exepath[MAXPATHLEN];
if (!GetModuleFileName (NULL, exepath, _MAX_PATH))
fprintf (stderr, "Failed to get path to exe file: %d\n",
GetLastError());
else {
char tmp[MAXPATHLEN * 2];
char *p = strrchr (exepath, '\\');
if (p) *p = 0;
|
200ba8 | 2008-06-29 | Martin Stjernholm | | SNPRINTF (tmp, sizeof (tmp), "%s/%s", exepath, mp);
strncpy (mp, tmp,
|
1700b0 | 2008-06-28 | Martin Stjernholm | | sizeof (master_location) - CONSTANT_STRLEN (MASTER_COOKIE));
}
}
|
1176e8 | 2009-09-18 | Henrik Grubbström (Grubba) | | #else
if (!*mp) {
if (strlen(bin_name) < (2*MAXPATHLEN -
CONSTANT_STRLEN(MASTER_COOKIE "master.pike"))) {
char *p;
strcpy(mp, bin_name);
p = strrchr(mp, '/');
if (!p) p = mp;
else p++;
strcpy(p, "master.pike");
}
}
|
1700b0 | 2008-06-28 | Martin Stjernholm | | #endif
|
200ba8 | 2008-06-29 | Martin Stjernholm | | TRACE((stderr, "Default master at \"%s\"...\n", mp));
|
df458c | 2004-12-30 | Henrik Grubbström (Grubba) | | }
#ifdef LIBPIKE
static char libpike_file[MAXPATHLEN * 2];
static void *libpike;
|
d59abf | 2010-06-22 | Henrik Grubbström (Grubba) | | typedef void (*modfun)(void);
#ifdef NO_CAST_TO_FUN
static modfun CAST_TO_FUN(void *ptr)
{
union {
void *ptr;
modfun fun;
} u;
u.ptr = ptr;
return u.fun;
}
#else /* !NO_CAST_TO_FUN */
#define CAST_TO_FUN(X) ((modfun)X)
#endif /* NO_CAST_TO_FUN */
|
11ae6e | 2010-06-17 | Henrik Grubbström (Grubba) | | static void (*init_pike_var)(const char **argv, const char *file);
static void (*init_pike_runtime_var)(void (*exit_cb)(int));
static void (*add_predefine_var)(char *s);
|
df458c | 2004-12-30 | Henrik Grubbström (Grubba) | | #endif /* LIBPIKE */
static void find_lib_dir(int argc, char **argv)
{
int e;
TRACE((stderr, "find_lib_dir...\n"));
|
1176e8 | 2009-09-18 | Henrik Grubbström (Grubba) | | set_default_master(argv[0]);
|
df458c | 2004-12-30 | Henrik Grubbström (Grubba) | |
for(e=1; e<argc; e++)
{
TRACE((stderr, "Parse argument %d:\"%s\"...\n", e, argv[e]));
if(argv[e][0] != '-') break;
switch(argv[e][1])
{
default:
break;
case 'm':
if(argv[e][2])
{
set_master(argv[e]+2);
}else{
e++;
if(e >= argc)
{
fprintf(stderr,"Missing argument to -m\n");
exit(1);
}
set_master(argv[e]);
}
break;
case 's':
if((!argv[e][2]) ||
((argv[e][2] == 's') && !argv[e][3])) {
e++;
}
break;
case 'q':
if(!argv[e][2]) e++;
break;
}
}
|
b0757b | 2006-07-05 | Martin Stjernholm | |
|
df458c | 2004-12-30 | Henrik Grubbström (Grubba) | | #ifdef LIBPIKE
|
b0757b | 2006-07-05 | Martin Stjernholm | | {
char *p;
char *dir;
memcpy(libpike_file, master_location + CONSTANT_STRLEN(MASTER_COOKIE),
sizeof(master_location) - CONSTANT_STRLEN(MASTER_COOKIE));
for (p = dir = libpike_file; *p; p++) {
if ((*p == '/')
|
df458c | 2004-12-30 | Henrik Grubbström (Grubba) | | #ifdef __NT__
|
b0757b | 2006-07-05 | Martin Stjernholm | | || (*p == '\\')
|
df458c | 2004-12-30 | Henrik Grubbström (Grubba) | | #endif /* __NT__ */
|
b0757b | 2006-07-05 | Martin Stjernholm | | )
dir = p+1;
}
|
a20512 | 2010-06-23 | Henrik Grubbström (Grubba) | | if ((dir + CONSTANT_STRLEN("pike.so")) >= libpike_file + 2*MAXPATHLEN) {
|
b0757b | 2006-07-05 | Martin Stjernholm | |
fprintf(stderr, "Too long path to pike.so.\n");
exit(1);
}
|
a20512 | 2010-06-23 | Henrik Grubbström (Grubba) | | memcpy(dir, "pike.so", CONSTANT_STRLEN("pike.so") + 1);
|
df458c | 2004-12-30 | Henrik Grubbström (Grubba) | | }
#endif /* LIBPIKE */
}
int main(int argc, char **argv)
|
ec337d | 2004-12-29 | Henrik Grubbström (Grubba) | | {
JMP_BUF back;
int e, num;
|
5267b7 | 1995-08-09 | Fredrik Hübinette (Hubbe) | | char *p;
|
a02566 | 2007-05-17 | Henrik Grubbström (Grubba) | | #ifdef PIKE_EXTRA_DEBUG
#ifdef HAVE_SIGNAL
if (sizeof(void *) == 8) {
signal(SIGPIPE, abort);
}
#endif
#endif
|
89d10f | 2012-08-17 | Henrik Grubbström (Grubba) | | #ifdef HAVE_MALLOPT
TRACE((stderr, "Init malloc...\n"));
#ifdef M_ARENA_TEST
mallopt(M_ARENA_TEST, 0) && mallopt(M_ARENA_TEST, 1);
#endif
#ifdef M_ARENA_MAX
mallopt(M_ARENA_MAX, 1);
#endif
#endif /* HAVE_MALLOPT */
|
df458c | 2004-12-30 | Henrik Grubbström (Grubba) | | TRACE((stderr, "Init master...\n"));
find_lib_dir(argc, argv);
|
cee581 | 1999-12-05 | Henrik Grubbström (Grubba) | |
|
df458c | 2004-12-30 | Henrik Grubbström (Grubba) | | #ifdef LIBPIKE
|
9bd21e | 2005-01-03 | Marcus Agehall | | #ifdef HAVE_DLINIT
|
df458c | 2004-12-30 | Henrik Grubbström (Grubba) | | if (!dlinit()) {
fprintf(stderr, "dlinit failed.\n");
exit(1);
}
|
9bd21e | 2005-01-03 | Marcus Agehall | | #endif /* HAVE_DLINIT */
|
bf47e1 | 2000-04-06 | Henrik Grubbström (Grubba) | |
|
f15b4b | 2010-06-21 | Henrik Grubbström (Grubba) | | if (!(libpike = dlopen(libpike_file, RTLD_NOW))) {
|
df458c | 2004-12-30 | Henrik Grubbström (Grubba) | | const char *err = dlerror();
if (!err) err = "Unknown reason.";
|
f15b4b | 2010-06-21 | Henrik Grubbström (Grubba) | | fprintf(stderr, "Failed to open %s: %s\n", libpike_file, err);
|
df458c | 2004-12-30 | Henrik Grubbström (Grubba) | | exit(1);
}
#define LOOKUP(symbol) do { \
|
11ae6e | 2010-06-17 | Henrik Grubbström (Grubba) | | if (!(PIKE_CONCAT(symbol, _var) = \
CAST_TO_FUN(dlsym(libpike, TOSTR(symbol)))) && \
!(PIKE_CONCAT(symbol, _var) = \
CAST_TO_FUN(dlsym(libpike, "_" TOSTR(symbol))))) { \
|
df458c | 2004-12-30 | Henrik Grubbström (Grubba) | | fprintf(stderr, "Missing symbol in %s: " TOSTR(symbol) "\n", \
|
f15b4b | 2010-06-21 | Henrik Grubbström (Grubba) | | libpike_file); \
|
df458c | 2004-12-30 | Henrik Grubbström (Grubba) | | dlclose(libpike); \
exit(1); \
} \
} while(0)
LOOKUP(init_pike);
|
11ae6e | 2010-06-17 | Henrik Grubbström (Grubba) | | #define init_pike init_pike_var
|
df458c | 2004-12-30 | Henrik Grubbström (Grubba) | | LOOKUP(init_pike_runtime);
|
11ae6e | 2010-06-17 | Henrik Grubbström (Grubba) | | #define init_pike_runtime init_pike_runtime_var
|
df458c | 2004-12-30 | Henrik Grubbström (Grubba) | | LOOKUP(add_predefine);
|
11ae6e | 2010-06-17 | Henrik Grubbström (Grubba) | | #define add_predefine add_predefine_var
|
ff34a5 | 2001-05-31 | Henrik Grubbström (Grubba) | |
|
df458c | 2004-12-30 | Henrik Grubbström (Grubba) | | #endif /* LIBPIKE */
TRACE((stderr, "init_pike()\n"));
init_pike(argv, master_location + CONSTANT_STRLEN(MASTER_COOKIE));
|
895ced | 2003-10-25 | Martin Nilsson | |
|
5267b7 | 1995-08-09 | Fredrik Hübinette (Hubbe) | | for(e=1; e<argc; e++)
{
|
ff34a5 | 2001-05-31 | Henrik Grubbström (Grubba) | | TRACE((stderr, "Parse argument %d:\"%s\"...\n", e, argv[e]));
|
5267b7 | 1995-08-09 | Fredrik Hübinette (Hubbe) | | if(argv[e][0]=='-')
{
for(p=argv[e]+1; *p;)
{
switch(*p)
{
case 'D':
add_predefine(p+1);
p+=strlen(p);
break;
case 'm':
if(p[1])
{
p+=strlen(p);
}else{
e++;
if(e >= argc)
{
fprintf(stderr,"Missing argument to -m\n");
exit(1);
}
p+=strlen(p);
}
break;
|
9f243b | 1996-08-12 | Fredrik Hübinette (Hubbe) | | case 's':
if(!p[1])
{
e++;
if(e >= argc)
{
fprintf(stderr,"Missing argument to -s\n");
exit(1);
}
p=argv[e];
|
490887 | 1998-08-10 | Fredrik Hübinette (Hubbe) | | }else{
p++;
if(*p=='s')
{
if(!p[1])
{
e++;
if(e >= argc)
{
fprintf(stderr,"Missing argument to -ss\n");
exit(1);
}
p=argv[e];
}else{
p++;
}
#ifdef _REENTRANT
thread_stack_size=STRTOL(p,&p,0);
#endif
p+=strlen(p);
break;
}
|
9f243b | 1996-08-12 | Fredrik Hübinette (Hubbe) | | }
|
7965d7 | 2001-01-24 | Fredrik Hübinette (Hubbe) | | Pike_stack_size=STRTOL(p,&p,0);
|
9f243b | 1996-08-12 | Fredrik Hübinette (Hubbe) | | p+=strlen(p);
|
7965d7 | 2001-01-24 | Fredrik Hübinette (Hubbe) | | if(Pike_stack_size < 256)
|
9f243b | 1996-08-12 | Fredrik Hübinette (Hubbe) | | {
fprintf(stderr,"Stack size must at least be 256.\n");
exit(1);
}
break;
|
3f1eeb | 1998-04-05 | Fredrik Hübinette (Hubbe) | | case 'q':
if(!p[1])
{
e++;
if(e >= argc)
{
fprintf(stderr,"Missing argument to -q\n");
exit(1);
}
p=argv[e];
|
490887 | 1998-08-10 | Fredrik Hübinette (Hubbe) | | }else{
p++;
|
3f1eeb | 1998-04-05 | Fredrik Hübinette (Hubbe) | | }
|
dc3e78 | 2005-01-01 | Henrik Grubbström (Grubba) | | set_pike_evaluator_limit(STRTOL(p, &p, 0));
|
3f1eeb | 1998-04-05 | Fredrik Hübinette (Hubbe) | | p+=strlen(p);
break;
|
5267b7 | 1995-08-09 | Fredrik Hübinette (Hubbe) | | case 'd':
|
cd8352 | 1998-02-02 | Fredrik Hübinette (Hubbe) | | more_d_flags:
switch(p[1])
{
case '0': case '1': case '2': case '3': case '4':
case '5': case '6': case '7': case '8': case '9':
d_flag+=STRTOL(p+1,&p,10);
break;
|
943f85 | 1998-04-13 | Henrik Grubbström (Grubba) | | case 'c':
p++;
|
332156 | 2012-12-10 | Felipe Monteiro de Carvalho | | #if (defined(YYDEBUG) && (YYDEBUG==1)) && defined(PIKE_DEBUG)
|
943f85 | 1998-04-13 | Henrik Grubbström (Grubba) | | yydebug++;
|
332156 | 2012-12-10 | Felipe Monteiro de Carvalho | | #endif /* YYDEBUG && PIKE_DEBUG */
|
943f85 | 1998-04-13 | Henrik Grubbström (Grubba) | | break;
|
cd8352 | 1998-02-02 | Fredrik Hübinette (Hubbe) | | case 's':
|
df458c | 2004-12-30 | Henrik Grubbström (Grubba) | | set_pike_debug_options(DEBUG_SIGNALS, DEBUG_SIGNALS);
|
cd8352 | 1998-02-02 | Fredrik Hübinette (Hubbe) | | p++;
|
9b08a2 | 1998-03-31 | Fredrik Hübinette (Hubbe) | | goto more_d_flags;
case 't':
|
df458c | 2004-12-30 | Henrik Grubbström (Grubba) | | set_pike_debug_options(NO_TAILRECURSION, NO_TAILRECURSION);
|
cd8352 | 1998-02-02 | Fredrik Hübinette (Hubbe) | | p++;
|
9b08a2 | 1998-03-31 | Fredrik Hübinette (Hubbe) | | goto more_d_flags;
|
cd8352 | 1998-02-02 | Fredrik Hübinette (Hubbe) | |
|
738697 | 2001-06-30 | Fredrik Hübinette (Hubbe) | | case 'g':
|
df458c | 2004-12-30 | Henrik Grubbström (Grubba) | | set_pike_debug_options(GC_RESET_DMALLOC, GC_RESET_DMALLOC);
|
738697 | 2001-06-30 | Fredrik Hübinette (Hubbe) | | p++;
goto more_d_flags;
case 'p':
|
df458c | 2004-12-30 | Henrik Grubbström (Grubba) | | set_pike_debug_options(NO_PEEP_OPTIMIZING, NO_PEEP_OPTIMIZING);
|
738697 | 2001-06-30 | Fredrik Hübinette (Hubbe) | | p++;
goto more_d_flags;
|
01185d | 2003-04-01 | Martin Stjernholm | | case 'T':
|
df458c | 2004-12-30 | Henrik Grubbström (Grubba) | | set_pike_debug_options(ERRORCHECK_MUTEXES, ERRORCHECK_MUTEXES);
|
01185d | 2003-04-01 | Martin Stjernholm | | p++;
goto more_d_flags;
|
2d5449 | 2008-07-31 | Martin Stjernholm | | case 'L':
set_pike_debug_options (WINDOWS_ERROR_DIALOGS,
WINDOWS_ERROR_DIALOGS);
p++;
goto more_d_flags;
|
7d955e | 1999-12-13 | Henrik Grubbström (Grubba) | | default:
d_flag += (p[0] == 'd');
|
cee581 | 1999-12-05 | Henrik Grubbström (Grubba) | | p++;
|
7d955e | 1999-12-13 | Henrik Grubbström (Grubba) | | }
break;
|
cee581 | 1999-12-05 | Henrik Grubbström (Grubba) | |
|
7d955e | 1999-12-13 | Henrik Grubbström (Grubba) | | case 'r':
|
17e177 | 1999-12-13 | Per Hedbor | | more_r_flags:
switch(p[1])
{
|
7d955e | 1999-12-13 | Henrik Grubbström (Grubba) | | case 't':
|
df458c | 2004-12-30 | Henrik Grubbström (Grubba) | | set_pike_runtime_options(RUNTIME_CHECK_TYPES, RUNTIME_CHECK_TYPES);
|
7d955e | 1999-12-13 | Henrik Grubbström (Grubba) | | p++;
|
17e177 | 1999-12-13 | Per Hedbor | | goto more_r_flags;
|
7d955e | 1999-12-13 | Henrik Grubbström (Grubba) | |
case 'T':
|
df458c | 2004-12-30 | Henrik Grubbström (Grubba) | | set_pike_runtime_options(RUNTIME_STRICT_TYPES,
RUNTIME_STRICT_TYPES);
|
7d955e | 1999-12-13 | Henrik Grubbström (Grubba) | | p++;
|
17e177 | 1999-12-13 | Per Hedbor | | goto more_r_flags;
|
7d955e | 1999-12-13 | Henrik Grubbström (Grubba) | |
|
17e177 | 1999-12-13 | Per Hedbor | | default:
p++;
|
7d955e | 1999-12-13 | Henrik Grubbström (Grubba) | | break;
|
cd8352 | 1998-02-02 | Fredrik Hübinette (Hubbe) | | }
|
5267b7 | 1995-08-09 | Fredrik Hübinette (Hubbe) | | break;
case 'a':
if(p[1]>='0' && p[1]<='9')
a_flag+=STRTOL(p+1,&p,10);
else
a_flag++,p++;
break;
case 't':
|
24d38f | 2004-03-17 | Martin Stjernholm | | more_t_flags:
switch (p[1]) {
case '0': case '1': case '2': case '3': case '4':
case '5': case '6': case '7': case '8': case '9':
Pike_interpreter.trace_level+=STRTOL(p+1,&p,10);
break;
case 'g':
gc_trace++;
p++;
goto more_t_flags;
default:
if (p[0] == 't')
Pike_interpreter.trace_level++;
p++;
}
|
97ebb3 | 2003-01-09 | Henrik Grubbström (Grubba) | | default_t_flag = Pike_interpreter.trace_level;
|
5267b7 | 1995-08-09 | Fredrik Hübinette (Hubbe) | | break;
|
06983f | 1996-09-22 | Fredrik Hübinette (Hubbe) | | case 'p':
|
061244 | 2001-05-16 | Fredrik Hübinette (Hubbe) | | if(p[1]=='s')
{
|
ec337d | 2004-12-29 | Henrik Grubbström (Grubba) | | pike_enable_stack_profiling();
|
061244 | 2001-05-16 | Fredrik Hübinette (Hubbe) | | p+=strlen(p);
}else{
if(p[1]>='0' && p[1]<='9')
p_flag+=STRTOL(p+1,&p,10);
else
p_flag++,p++;
}
|
06983f | 1996-09-22 | Fredrik Hübinette (Hubbe) | | break;
|
5267b7 | 1995-08-09 | Fredrik Hübinette (Hubbe) | | case 'l':
if(p[1]>='0' && p[1]<='9')
l_flag+=STRTOL(p+1,&p,10);
else
l_flag++,p++;
break;
default:
|
496707 | 1997-01-15 | Fredrik Hübinette (Hubbe) | | p+=strlen(p);
|
5267b7 | 1995-08-09 | Fredrik Hübinette (Hubbe) | | }
}
}else{
break;
}
}
|
01185d | 2003-04-01 | Martin Stjernholm | | #ifndef PIKE_MUTEX_ERRORCHECK
|
d86706 | 2005-01-01 | Henrik Grubbström (Grubba) | | if (set_pike_debug_options(0,0) & ERRORCHECK_MUTEXES)
|
01185d | 2003-04-01 | Martin Stjernholm | | fputs ("Warning: -dT (error checking mutexes) not supported on this system.\n",
stderr);
#endif
|
d86706 | 2005-01-01 | Henrik Grubbström (Grubba) | | if (d_flag)
set_pike_debug_options(ERRORCHECK_MUTEXES, ERRORCHECK_MUTEXES);
|
01185d | 2003-04-01 | Martin Stjernholm | |
|
8196fb | 2008-07-31 | Martin Stjernholm | | #ifdef HAVE_SETERRORMODE
|
2d5449 | 2008-07-31 | Martin Stjernholm | | if (!(debug_options & WINDOWS_ERROR_DIALOGS)) {
|
8196fb | 2008-07-31 | Martin Stjernholm | |
SetErrorMode (SEM_FAILCRITICALERRORS |
|
9624b6 | 2008-07-31 | Martin Stjernholm | | SetErrorMode (0));
|
8196fb | 2008-07-31 | Martin Stjernholm | | }
#endif
|
ec337d | 2004-12-29 | Henrik Grubbström (Grubba) | | init_pike_runtime(exit);
|
a9388a | 1998-09-02 | Henrik Grubbström (Grubba) | |
|
df458c | 2004-12-30 | Henrik Grubbström (Grubba) | |
add_pike_string_constant("__master_cookie",
master_location, CONSTANT_STRLEN(MASTER_COOKIE));
|
ec337d | 2004-12-29 | Henrik Grubbström (Grubba) | | if(SETJMP(back))
|
5267b7 | 1995-08-09 | Fredrik Hübinette (Hubbe) | | {
|
a1ed50 | 2010-08-26 | Martin Stjernholm | | if(throw_severity == THROW_EXIT || throw_severity == THROW_THREAD_EXIT)
|
61e9a0 | 1998-01-25 | Fredrik Hübinette (Hubbe) | | {
num=throw_value.u.integer;
}else{
|
017b57 | 2011-10-28 | Henrik Grubbström (Grubba) | | if (TYPEOF(throw_value) == T_OBJECT &&
|
667ec2 | 2003-07-22 | Martin Stjernholm | | throw_value.u.object->prog == master_load_error_program &&
!get_master()) {
struct generic_error_struct *err;
|
e8cbe4 | 2004-07-04 | Martin Nilsson | |
dynamic_buffer buf;
dynbuf_string s;
struct svalue t;
|
1ab4ac | 2008-01-26 | Martin Stjernholm | | move_svalue (Pike_sp++, &throw_value);
mark_free_svalue (&throw_value);
|
667ec2 | 2003-07-22 | Martin Stjernholm | | err = (struct generic_error_struct *)
get_storage (Pike_sp[-1].u.object, generic_error_program);
|
e8cbe4 | 2004-07-04 | Martin Nilsson | |
|
017b57 | 2011-10-28 | Henrik Grubbström (Grubba) | | SET_SVAL(t, PIKE_T_STRING, 0, string, err->error_message);
|
e8cbe4 | 2004-07-04 | Martin Nilsson | |
init_buf(&buf);
describe_svalue(&t,0,0);
s=complex_free_buf(&buf);
|
9f6bfe | 2004-07-04 | Stephen R. van den Berg | | fputs(s.str, stderr);
|
e8cbe4 | 2004-07-04 | Martin Nilsson | | free(s.str);
|
667ec2 | 2003-07-22 | Martin Stjernholm | | }
else
call_handle_error();
|
61e9a0 | 1998-01-25 | Fredrik Hübinette (Hubbe) | | num=10;
}
|
ec337d | 2004-12-29 | Henrik Grubbström (Grubba) | | }else{
|
dc3e78 | 2005-01-01 | Henrik Grubbström (Grubba) | | struct object *m;
|
ec337d | 2004-12-29 | Henrik Grubbström (Grubba) | |
|
dc3e78 | 2005-01-01 | Henrik Grubbström (Grubba) | | back.severity=THROW_EXIT;
|
09126b | 2001-12-19 | Martin Stjernholm | |
|
dc3e78 | 2005-01-01 | Henrik Grubbström (Grubba) | | if ((m = load_pike_master())) {
TRACE((stderr, "Call master->_main()...\n"));
|
09126b | 2001-12-19 | Martin Stjernholm | |
|
dc3e78 | 2005-01-01 | Henrik Grubbström (Grubba) | | pike_push_argv(argc, argv);
|
d86706 | 2005-01-01 | Henrik Grubbström (Grubba) | |
|
7afbec | 2008-06-05 | Martin Stjernholm | | apply(m, "_main", 1);
|
dc3e78 | 2005-01-01 | Henrik Grubbström (Grubba) | | pop_stack();
num=0;
} else {
num = -1;
}
|
5267b7 | 1995-08-09 | Fredrik Hübinette (Hubbe) | | }
UNSETJMP(back);
|
cfd36c | 2003-11-14 | Martin Stjernholm | | TRACE((stderr, "Exit %d...\n", num));
|
ec337d | 2004-12-29 | Henrik Grubbström (Grubba) | |
|
eb2fd5 | 2000-11-06 | Henrik Grubbström (Grubba) | | pike_do_exit(num);
|
3c0c28 | 1998-01-26 | Fredrik Hübinette (Hubbe) | | return num;
|
61e9a0 | 1998-01-25 | Fredrik Hübinette (Hubbe) | | }
|