void ScoreArray::load(istream* is) { size_t number_of_entries = 0; bool binmode = false; string substring, stringBuf; string::size_type loc; getline(*is, stringBuf); if (!is->good()) { return; } if (!stringBuf.empty()) { if ((loc = stringBuf.find(SCORES_TXT_BEGIN)) == 0) { binmode=false; } else if ((loc = stringBuf.find(SCORES_BIN_BEGIN)) == 0) { binmode=true; } else { TRACE_ERR("ERROR: ScoreArray::load(): Wrong header"); return; } getNextPound(stringBuf, substring); getNextPound(stringBuf, substring); m_index = atoi(substring.c_str()); getNextPound(stringBuf, substring); number_of_entries = atoi(substring.c_str()); getNextPound(stringBuf, substring); m_num_scores = atoi(substring.c_str()); getNextPound(stringBuf, substring); m_score_type = substring; } if (binmode) { loadbin(is, number_of_entries); } else { loadtxt(is, number_of_entries); } getline(*is, stringBuf); if (!stringBuf.empty()) { if ((loc = stringBuf.find(SCORES_TXT_END)) != 0 && (loc = stringBuf.find(SCORES_BIN_END)) != 0) { TRACE_ERR("ERROR: ScoreArray::load(): Wrong footer"); return; } } }
int main(int argc, char *argv[]) { void *binstart; void (*binoep)(); binstart = (void*)0x10000; binoep = (void(*))0x10020; if (argc != 2) { printf("Usage %%prog <name>\n"); return 0; } printf("Loading %s\n", argv[1]); loadbin(argv[1], binstart); printf("Execution resumed at oep\n"); (binoep)(); return 0; }