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; }
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); }
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; }
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); }
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 */ }