示例#1
0
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);
}
示例#2
0
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);
}