make saved games and landscapes copy recursively

This commit is contained in:
IntelOrca 2015-02-15 17:31:16 +00:00
parent 524ae55052
commit 0ce4d70e35
3 changed files with 26 additions and 4 deletions

View File

@ -72,6 +72,25 @@ static void openrct2_copy_files_over(const char *originalDirectory, const char *
platform_file_copy(oldPath, newPath);
}
platform_enumerate_files_end(fileEnumHandle);
fileEnumHandle = platform_enumerate_directories_begin(originalDirectory);
while (platform_enumerate_directories_next(fileEnumHandle, filter)) {
strcpy(newPath, newDirectory);
strcat(newPath, filter);
strcpy(oldPath, originalDirectory);
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);
}
/**

View File

@ -92,7 +92,7 @@ int platform_enumerate_files_next(int handle, file_info *outFileInfo);
void platform_enumerate_files_end(int handle);
int platform_enumerate_directories_begin(const char *directory);
int platform_enumerate_directories_next(int handle, char *path);
int platform_enumerate_directories_end(int handle);
void platform_enumerate_directories_end(int handle);
int platform_file_copy(const char *srcPath, const char *dstPath);
int platform_file_move(const char *srcPath, const char *dstPath);
int platform_file_delete(const char *path);

View File

@ -234,8 +234,10 @@ int platform_enumerate_directories_next(int handle, char *path)
}
}
while ((enumFileInfo->data.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY) == 0
|| strchr(enumFileInfo->data.cFileName, '.') != NULL) {
while (
(enumFileInfo->data.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY) == 0
|| strchr(enumFileInfo->data.cFileName, '.') != NULL
) {
if (!FindNextFile(enumFileInfo->handle, &enumFileInfo->data)) {
return 0;
}
@ -246,7 +248,8 @@ int platform_enumerate_directories_next(int handle, char *path)
strncat(path, "\\", MAX_PATH);
return 1;
}
int platform_enumerate_directories_end(int handle)
void platform_enumerate_directories_end(int handle)
{
enumerate_file_info *enumFileInfo;