Example #1
0
int main(int argc, char* argv[])
{
 void* callbacks[] = {Joutput,0,Jinput,0,(void*)SMCON}; int type;

 jepath(argv[0]);     // get path to JFE folder
 jt=jeload(callbacks);
 if(!jt){char m[1000]; jefail(m), fputs(m,stdout); exit(1);}
 adadbreak=(char**)jt; // first address in jt is address of breakdata
 signal(SIGINT,sigint);
 
#ifdef READLINE
 char* rl_readline_name="jconsole"; /* argv[0] varies too much*/
#endif

 if(argc==2&&!strcmp(argv[1],"-jprofile"))
	 type=3;
 else if(argc>2&&!strcmp(argv[1],"-jprofile"))
	 type=1;
 else
	 type=0;
 addargv(argc,argv,input+strlen(input));
 jefirst(type,input);
 while(1){jedo(Jinput(jt,"   "));}
 jefree();
 return 0;
}
Example #2
0
int main(int argc, char* argv[])
{
 void* callbacks[] = {Joutput,0,Jinput,0,(void*)SMCON}; int type;
#if !defined(WIN32) && !(defined(__arm__)||defined(__mips__))
// set stack size to get limit error instead of crash
 struct rlimit lim;
 getrlimit(RLIMIT_STACK,&lim);
 lim.rlim_cur=0x1000000; // 0xc000000 12mb works, but let's be safe with 16mb
 setrlimit(RLIMIT_STACK,&lim);
#endif
 jepath(argv[0]);     // get path to JFE folder
 jt=jeload(callbacks);
 if(!jt){char m[1000]; jefail(m), fputs(m,stdout); exit(1);}
 adadbreak=(char**)jt; // first address in jt is address of breakdata
 signal(SIGINT,sigint);

#ifdef READLINE
 char* rl_readline_name="jconsole"; /* argv[0] varies too much*/
#endif

 if(argc==2&&!strcmp(argv[1],"-jprofile"))
	 type=3;
 else if(argc>2&&!strcmp(argv[1],"-jprofile"))
	 type=1;
 else
	 type=0;
 addargv(argc,argv,input+strlen(input));
#ifndef READLINE
#ifndef ANDROID
// _O_TEXT may not be defined on non-VC++ systems
#ifdef _O_TEXT
 _setmode( _fileno( stdin ), _O_TEXT ); //readline filters '\r' (so does this)
#endif
#endif
#endif
 jefirst(type,input);
 while(1){jedo(Jinput(jt,"   "));}
 jefree();
 return 0;
}
Example #3
0
void speedy_getopt(
    OptsRec myopts[], int numopts, char *argv[], char *envp[],
    char ***scr_argv, char ***perl_argv
)
{
    char **p;
    int i, state, perl_argc, scr_argc;

    // Init perl argv
    initargv(&perl_argc, perl_argv);
    addargv(&perl_argc, perl_argv, "");

    // Init script argv
    initargv(&scr_argc, scr_argv);

    // Fill in opts from environment first.
    for (p = envp; *p; ++p) {
	if (strncmp(*p, PRE, sizeof(PRE)-1) == 0) {
	    for (i = 0; i < numopts; ++i) {
		char *name = myopts[i].name;
		int l = strlen(name);
		if (strncmp(*p+sizeof(PRE)-1, name, l) == 0 &&
		    (*p)[sizeof(PRE)+l-1] == '=')
		{
		    setval(myopts +i, *p+sizeof(PRE)+l);
		}
	    }
	}
    }

    // Fill in opts from command line.
    for (++argv, state = ST_PERLOPTS; *argv; ++argv) {
	int c, j;
	char *beg, *end;

	for (beg = *argv; ; beg = end + 1) {
	    c = *beg;
	    while (xispc(c)) {
		c = *++beg;
	    }
	    end = beg;
	    while (c && !xispc(c)) {
		c = *++end;
	    }
	    *end = '\0';

	    if (beg == end) break;

	    if (beg[0] != '-') {
		// End of perl/speedy opts, start of argv[0] for script
		*end = c;
		addargv(&perl_argc, perl_argv, beg);
		addargv(&scr_argc, scr_argv, beg);
		for (++argv; *argv; ++argv) {
		    addargv(&perl_argc, perl_argv, *argv);
		    addargv(&scr_argc, scr_argv, *argv);
		}
		return;
	    } else {
		switch(state) {

		    case ST_PERLOPTS:
		    if (beg[1] == '-') {
			state = ST_SPEEDYOPTS;
		    } else {
			addargv(&perl_argc, perl_argv, beg);
		    }
		    break;

		    case ST_SPEEDYOPTS:
		    for (j = 0; j < numopts; ++j) {
			OptsRec *r = myopts + j;
			if (r->opt == beg[1]) {
			    if (!beg[2]) {
				fprintf(stderr,
				    "missing argument to speedy option -%c\n",
				    beg[1]
				);
				exit(1);
			    }
			    setval(r, beg+2);
			    break;
			}
		    }
		    if (j == numopts) {
			fprintf(stderr, "unknown speedy option -%c\n", beg[1]);
			exit(1);
		    }
		    break;
		}
	    }
	    if (c == '\0') break;
	    *end = c;
	}
    }
}