static void make_dirs_and_migrate(void) { Array items; int i; const char *src; char *dst; if (fs_mkdir("Replays")) { if ((items = fs_dir_scan("", is_replay))) { for (i = 0; i < array_len(items); i++) { src = DIR_ITEM_GET(items, i)->path; dst = concat_string("Replays/", src, NULL); fs_rename(src, dst); free(dst); } fs_dir_free(items); } } if (fs_mkdir("Scores")) { if ((items = fs_dir_scan("", is_score))) { for (i = 0; i < array_len(items); i++) { src = DIR_ITEM_GET(items, i)->path; dst = concat_string("Scores/", src + sizeof ("neverballhs-") - 1, ".txt", NULL); fs_rename(src, dst); free(dst); } fs_dir_free(items); } } fs_mkdir("Screenshots"); }
int set_init() { fs_file fin; char *name; Array items; int i; if (sets) set_quit(); sets = array_new(sizeof (struct set)); curr = 0; /* * First, load the sets listed in the set file, preserving order. */ if ((fin = fs_open(SET_FILE, "r"))) { while (read_line(&name, fin)) { struct set *s = array_add(sets); if (!set_load(s, name)) array_del(sets); free(name); } fs_close(fin); } /* * Then, scan for any remaining set description files, and add * them after the first group in alphabetic order. */ if ((items = fs_dir_scan("", is_unseen_set))) { array_sort(items, cmp_dir_items); for (i = 0; i < array_len(items); i++) { struct set *s = array_add(sets); if (!set_load(s, DIR_ITEM_GET(items, i)->path)) array_del(sets); } fs_dir_free(items); } return array_len(sets); }
void course_init() { fs_file fin; char *line; Array items; int i; if (course_state) course_free(); count = 0; if ((fin = fs_open(COURSE_FILE, "r"))) { while (count < MAXCRS && read_line(&line, fin)) { if (course_load(&course_v[count], line)) count++; free(line); } fs_close(fin); course_state = 1; } if ((items = fs_dir_scan("", is_unseen_course))) { array_sort(items, cmp_dir_items); for (i = 0; i < array_len(items) && count < MAXCRS; i++) if (course_load(&course_v[count], DIR_ITEM_GET(items, i)->path)) count++; fs_dir_free(items); course_state = 1; } }
int set_init() { fs_file fin; char *name; Array items; int i; if (sets) set_quit(); sets = array_new(sizeof (struct set)); curr = 0; /* * First, load the sets listed in the set file, preserving order. */ if ((fin = fs_open(SET_FILE, "r"))) { while (read_line(&name, fin)) { struct set *s = array_add(sets); if (!set_load(s, name)) array_del(sets); free(name); } fs_close(fin); } //senquack - added error reporting after getting random errors opening set files: #ifdef GCWZERO else { log_printf("Error opening sets file %s\n", SET_FILE); log_printf(fs_error()); } #endif //GCWZERO /* * Then, scan for any remaining set description files, and add * them after the first group in alphabetic order. */ if ((items = fs_dir_scan("", is_unseen_set))) { array_sort(items, cmp_dir_items); for (i = 0; i < array_len(items); i++) { struct set *s = array_add(sets); if (!set_load(s, DIR_ITEM_GET(items, i)->path)) array_del(sets); } fs_dir_free(items); } return array_len(sets); }