static bool_t _process_parameters(int argc, char* argv[]) { int i = 1; char* prog = 0; bool_t eval = false; bool_t help = false; char* memp = 0; char* diri = 0; while(i < argc) { if(!memcmp(argv[i], "-", 1)) { if(!memcmp(argv[i] + 1, "e", 1)) { eval = true; _CHECK_ARG(argc, i, "-e: Expression expected.\n"); prog = argv[++i]; } else if(!memcmp(argv[i] + 1, "h", 1)) { help = true; #if _USE_MEM_POOL } else if(!memcmp(argv[i] + 1, "p", 1)) { _CHECK_ARG(argc, i, "-p: Memory pool threashold size expected.\n"); memp = argv[++i]; if(argc > i + 1) prog = argv[++i]; #endif /* _USE_MEM_POOL */ } else if(!memcmp(argv[i] + 1, "f", 1)) { _CHECK_ARG(argc, i, "-f: Importing directories expected.\n"); diri = argv[++i]; } else { _printf("Unknown argument: %s.\n", argv[i]); } } else { prog = argv[i]; } i++; } #if _USE_MEM_POOL if(memp) _POOL_THRESHOLD_BYTES = atoi(memp); #else /* _USE_MEM_POOL */ mb_unrefvar(memp); #endif /* _USE_MEM_POOL */ if(diri) _set_importing_directories(diri); if(eval) _evaluate_expression(prog); else if(prog) _run_file(prog); else if(help) _show_help(); else return false; return true; }
void generate_spoilers(void) { spoiler_hack = TRUE; _text_file("Races.txt", _races_help); _text_file("MonsterRaces.txt", _monster_races_help); _text_file("Demigods.txt", _demigods_help); _text_file("Classes.txt", _classes_help); _text_file("Personalities.txt", _personalities_help); _text_file("PossessorStats.csv", _possessor_stats_help); _text_file("DragonRealms.txt", _dragon_realms_help); _show_help("Personalities.txt"); spoiler_hack = FALSE; }
static int _do_line(void) { int result = MB_FUNC_OK; char line[_MAX_LINE_LENGTH]; char dup[_MAX_LINE_LENGTH]; mb_assert(bas); memset(line, 0, _MAX_LINE_LENGTH); _printf("]"); mb_gets(line, _MAX_LINE_LENGTH); memcpy(dup, line, _MAX_LINE_LENGTH); strtok(line, " "); if(_str_eq(line, "")) { /* Do nothing */ } else if(_str_eq(line, "HELP")) { _show_help(); } else if(_str_eq(line, "CLS")) { _clear_screen(); } else if(_str_eq(line, "NEW")) { result = _new_program(); } else if(_str_eq(line, "RUN")) { int i = 0; mb_assert(_code()); result = mb_reset(&bas, false); for(i = 0; i < _code()->count; ++i) { if(result) break; result = mb_load_string(bas, _code()->lines[i], false); } if(result == MB_FUNC_OK) result = mb_run(bas); _printf("\n"); } else if(_str_eq(line, "BYE")) { result = MB_FUNC_BYE; } else if(_str_eq(line, "LIST")) { char* sn = line + strlen(line) + 1; char* cn = 0; strtok(sn, " "); cn = sn + strlen(sn) + 1; _list_program(sn, cn); } else if(_str_eq(line, "EDIT")) { char* no = line + strlen(line) + 1; char* ne = 0; strtok(no, " "); ne = no + strlen(no) + 1; if(!(*ne)) _edit_program(no); else if(_str_eq(no, "-I")) _insert_program(ne); else if(_str_eq(no, "-R")) _alter_program(ne); } else if(_str_eq(line, "LOAD")) { char* path = line + strlen(line) + 1; _load_program(path); } else if(_str_eq(line, "SAVE")) { char* path = line + strlen(line) + 1; _save_program(path); } else if(_str_eq(line, "KILL")) { char* path = line + strlen(line) + 1; _kill_program(path); } else if(_str_eq(line, "DIR")) { char* path = line + strlen(line) + 1; _list_directory(path); } else { _append_one_line(dup); } return result; }