static void scenario_list_include(const utf8 *directory) { int handle; file_info fileInfo; // Scenarios in this directory utf8 pattern[MAX_PATH]; safe_strcpy(pattern, directory, sizeof(pattern)); safe_strcat_path(pattern, "*.sc6", sizeof(pattern)); handle = platform_enumerate_files_begin(pattern); while (platform_enumerate_files_next(handle, &fileInfo)) { utf8 path[MAX_PATH]; safe_strcpy(path, directory, sizeof(pattern)); safe_strcat_path(path, fileInfo.path, sizeof(pattern)); scenario_list_add(path, fileInfo.last_modified); } platform_enumerate_files_end(handle); // Include sub-directories utf8 subDirectory[MAX_PATH]; handle = platform_enumerate_directories_begin(directory); while (platform_enumerate_directories_next(handle, subDirectory)) { utf8 path[MAX_PATH]; safe_strcpy(path, directory, sizeof(pattern)); safe_strcat_path(path, subDirectory, sizeof(pattern)); scenario_list_include(path); } platform_enumerate_directories_end(handle); }
static void openrct2_copy_files_over(const utf8 *originalDirectory, const utf8 *newDirectory, const utf8 *extension) { utf8 *ch, filter[MAX_PATH], oldPath[MAX_PATH], newPath[MAX_PATH]; int fileEnumHandle; file_info fileInfo; if (!platform_ensure_directory_exists(newDirectory)) { log_error("Could not create directory %s.", newDirectory); return; } // Create filter path safe_strncpy(filter, originalDirectory, MAX_PATH); ch = strchr(filter, '*'); if (ch != NULL) *ch = 0; strcat(filter, "*"); strcat(filter, extension); fileEnumHandle = platform_enumerate_files_begin(filter); while (platform_enumerate_files_next(fileEnumHandle, &fileInfo)) { safe_strncpy(newPath, newDirectory, MAX_PATH); strcat(newPath, fileInfo.path); safe_strncpy(oldPath, originalDirectory, MAX_PATH); ch = strchr(oldPath, '*'); if (ch != NULL) *ch = 0; strcat(oldPath, fileInfo.path); if (!platform_file_exists(newPath)) platform_file_copy(oldPath, newPath, false); } platform_enumerate_files_end(fileEnumHandle); fileEnumHandle = platform_enumerate_directories_begin(originalDirectory); while (platform_enumerate_directories_next(fileEnumHandle, filter)) { safe_strncpy(newPath, newDirectory, MAX_PATH); strcat(newPath, filter); safe_strncpy(oldPath, originalDirectory, MAX_PATH); ch = strchr(oldPath, '*'); if (ch != NULL) *ch = 0; strcat(oldPath, filter); if (!platform_ensure_directory_exists(newPath)) { log_error("Could not create directory %s.", newPath); return; } openrct2_copy_files_over(oldPath, newPath, extension); } platform_enumerate_directories_end(fileEnumHandle); }