Пример #1
0
int EiC_run(int argc, char **argv)
{
    char * n2 = doargs(argc,argv);
    int h = EiC_interActive;
    code_t code;
    
    EiC_interActive = 0;  /* turn off interactive mode */

    code = EiC_ENV->CODE;
    EiC_ENV->CODE.nextinst = EiC_ENV->CODE.binst = 0;
    EiC_ENV->CODE.inst = NULL;
    EiC_ENV->CODE.prev = &code;
    /*sp = EiC_ENV->sp;*/


    EiC_prolineString(n2);
    runEiC();


    if(!EiC_Include_file(argv[0],1))
	return 0;
    else 
	runEiC();

    if(doEntry()) 
	runEiC();

    /* rem: runEiC will call free_env_code */
    EiC_ENV->CODE.prev = NULL;
    EiC_ENV->CODE = code;
    /*EiC_ENV->sp = sp;*/

    xfree(n2);
	n2 = NULL; //maks

    EiC_interActive = h;
    return 1;
}    
Пример #2
0
void EiC_parseStringFile(const char *str, const char *fname) //maks
{
	//Parser the string in a new file
	//avoid % and \ processor
	
	code_t code;
	int h = EiC_interActive;
	int gs = FREE_G_STRING;
	char *newStr;
	int lsp; //maks
	
	/*  unsigned sp;*/
	
	//maks: copy only valid chars
	newStr = malloc(strlen(str) + 1);
	strcpy(newStr, str);
	onlyValidChars(newStr);
	
	
	
	FREE_G_STRING = 0;  
	
	EiC_interActive = 0;  /* turn off interactive mode */
	
	//Set the file
	EiC_prolineStringFile(newStr, fname);
	
	//Parser
	code = EiC_ENV->CODE;
	EiC_ENV->CODE.nextinst = EiC_ENV->CODE.binst = 0;
	EiC_ENV->CODE.inst = NULL;
	EiC_ENV->CODE.prev = &code;
	/*  sp = EiC_ENV->sp;*/
	
	lsp = EiC_ENV->lsp; //maks

	runEiC();

	EiC_ENV->lsp = lsp; //maks
	
	/* rem: runEiC will call free_env_code */
	EiC_ENV->CODE = code;
	
	EiC_interActive = h;
	FREE_G_STRING = gs;
	
	free(newStr);
}
Пример #3
0
void EiC_parseString(char * fmt,...)
{

  code_t code;
  char *str;
  int h = EiC_interActive;
  int gs = FREE_G_STRING;
  int len;
  int lsp; //maks

  /*  unsigned sp;*/

  va_list args;
  va_start(args,fmt);

  FREE_G_STRING = 0;

  len = 2 * strlen(fmt);
  str = malloc(len > 256 ? len : 256);
  vsprintf(str,fmt,args);

  onlyValidChars(str); //maks

  EiC_interActive = 0;  /* turn off interactive mode */
  EiC_prolineString(str);


  code = EiC_ENV->CODE;
  EiC_ENV->CODE.nextinst = EiC_ENV->CODE.binst = 0;
  EiC_ENV->CODE.inst = NULL;
  EiC_ENV->CODE.prev = &code;
  /*  sp = EiC_ENV->sp;*/

  lsp = EiC_ENV->lsp; //maks

  runEiC();

  EiC_ENV->lsp = lsp; //maks

  /* rem: runEiC will call free_env_code */
  EiC_ENV->CODE = code;

  EiC_interActive = h;
  free(str);
  va_end(args);
  FREE_G_STRING = gs;
}    
Пример #4
0
void EiC_parseStringSingle(char *str) //maks: avoid % and \ processor
{
	code_t code;
  int h = EiC_interActive;
  int gs = FREE_G_STRING;
  char *newStr;
  int lsp; //maks

  if(!str) return;

  /*  unsigned sp;*/

  //maks: copy only valid chars
  newStr = malloc(strlen(str) + 1);
  strcpy(newStr, str);
  onlyValidChars(newStr);



  FREE_G_STRING = 0;  

  EiC_interActive = 0;  /* turn off interactive mode */
  EiC_prolineString(newStr); //maks

  code = EiC_ENV->CODE;
  EiC_ENV->CODE.nextinst = EiC_ENV->CODE.binst = 0;
  EiC_ENV->CODE.inst = NULL;
  EiC_ENV->CODE.prev = &code;
  /*  sp = EiC_ENV->sp;*/

  lsp = EiC_ENV->lsp; //maks

  runEiC();

  EiC_ENV->lsp = lsp; //maks

  /* rem: runEiC will call free_env_code */
  EiC_ENV->CODE = code;

  EiC_interActive = h;
  FREE_G_STRING = gs;

  free(newStr);
}
Пример #5
0
void EiC_startEiC(int argc, char **argv)
{
    extern int EiC_load_history(char *fname,int prompt);

#if defined(WIN32) || defined(_DJGPP)
    signal(SIGABRT, EiC_bus_err);
#else
    signal(SIGBUS, EiC_bus_err);
#endif
    signal(SIGILL, EiC_ill_oper);
    signal(SIGSEGV, EiC_stor_access);
    signal(SIGFPE, EiC_float_err);
    signal(SIGINT, EiC_term_int);
#if defined(WIN32) || defined(_DJGPP)
    signal(SIGTERM, EiC_exit_call);
#else
    signal(SIGUSR1, EiC_exit_call);
#endif


    EiC_getSwitchCommands(&argc,&argv);

#ifndef NO_ARGV

    if(argc-- >0) {
        if(!EiC_run(argc+1,argv+1))
            EiC_error("Error: Failed to run %s\n",argv[1]);
        exit(0);
    }
#endif

    if(!silent) {
        fputs(Version,stdout);
    }

#ifndef NO_HISTORY
    if(StartUpH)
        EiC_setinfile("starteic.h");

    if(HistoryFile) {
        char * name = "EiChist.lst";
        if(reStart) {
            puts("Re Initiating EiC -- please wait.");
            if(EiC_load_history(name,prompt)) {
                runEiC();  /* ensure that startup files have
			  been loaded and compiled */
                EiChist = fopen(name,"w");
                EiC_save_history(EiChist,0);
                fclose(EiChist);
                EiChist=NULL;
                EiC_Include_file(name,1);
                runEiC();
                EiChist = fopen(name,"a");
            } else {
                EiC_error("Error: unable to load history file\n");
                HistoryFile = 0;
                EiChist = NULL;
            }
            puts("Done.");
        } else {
            EiChist = fopen(name,"w");
            if(!EiChist) {
                EiC_messageDisplay("Failed to create EiChist.lst\n"
                                   "Start No history file mode switch\n");
                HistoryFile = 0;
            }
        }
        if(HistoryFile)
            setvbuf(EiChist,NULL,_IOLBF,0);
    }
#endif

#ifdef PPCLIB
    setvbuf(stdout,NULL,_IONBF,0);
    setvbuf(stderr,NULL,_IONBF,0);
#endif
    /* Hawk start change */
    /*  while(1)         */
    /* runEiC();         */
    /* Hawk change       */
}