int main(int argc, char* args[]) { char epath[512]; char instr[512]; cd("ibin"); while(1) { getExecPath(epath); printf("$%s> ", epath); getln(instr); char* cmd = strtoknc(instr, " "); if(cmd != 0) { char* pargs[64]; int n = 0; do { pargs[n] = strtoknc(0, " "); } while(pargs[n++] != 0); fsexec(cmd, pargs, 0, 0, 0); printf("\n"); } } return 0; }
char* strtok(char* str, const char* delimiters) { if(str != 0) { //TODO better but if you call strtok and after that strtoknc will still be a memory leak. -> Don't use strtoknc if(fr != 0) { free(fr); } fr = strclone(str); return strtoknc(fr, delimiters); } return strtoknc(0, delimiters); }
char* strtok(char* str, const char* delimiters) { if(str != 0) { //TODO no way to free the cloned string :| return strtoknc(strclone(str), delimiters); } return strtoknc(0, delimiters); }