mirror of https://github.com/OpenRCT2/OpenRCT2.git
Implement file copy on POSIX systems.
Autosave should work now on Mac OS X and Linux. Fix tabs randomly inserted by vim Concerns in file copy
This commit is contained in:
parent
9c648e01bc
commit
b0a531b523
|
@ -41,6 +41,8 @@
|
||||||
// The name of the mutex used to prevent multiple instances of the game from running
|
// The name of the mutex used to prevent multiple instances of the game from running
|
||||||
#define SINGLE_INSTANCE_MUTEX_NAME "RollerCoaster Tycoon 2_GSKMUTEX"
|
#define SINGLE_INSTANCE_MUTEX_NAME "RollerCoaster Tycoon 2_GSKMUTEX"
|
||||||
|
|
||||||
|
#define FILE_BUFFER_SIZE 4096
|
||||||
|
|
||||||
utf8 _userDataDirectoryPath[MAX_PATH] = { 0 };
|
utf8 _userDataDirectoryPath[MAX_PATH] = { 0 };
|
||||||
utf8 _openrctDataDirectoryPath[MAX_PATH] = { 0 };
|
utf8 _openrctDataDirectoryPath[MAX_PATH] = { 0 };
|
||||||
|
|
||||||
|
@ -492,7 +494,45 @@ int platform_get_drives(){
|
||||||
|
|
||||||
bool platform_file_copy(const utf8 *srcPath, const utf8 *dstPath, bool overwrite)
|
bool platform_file_copy(const utf8 *srcPath, const utf8 *dstPath, bool overwrite)
|
||||||
{
|
{
|
||||||
STUB();
|
log_verbose("Copying %s to %s", srcPath, dstPath);
|
||||||
|
|
||||||
|
FILE *dstFile;
|
||||||
|
|
||||||
|
if (overwrite) {
|
||||||
|
dstFile = fopen(dstPath, "wb");
|
||||||
|
} else {
|
||||||
|
dstFile = fopen(dstPath, "wbx");
|
||||||
|
}
|
||||||
|
|
||||||
|
if (dstFile != NULL) {
|
||||||
|
if (errno == EEXIST) {
|
||||||
|
log_warning("platform_file_copy: Not overwriting %s, because overwrite flag == false", dstPath);
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
log_error("Could not open destination file %s for copying", dstPath);
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Open both files and check whether they are opened correctly
|
||||||
|
FILE *srcFile = fopen(srcPath, "rb");
|
||||||
|
if (!srcFile) {
|
||||||
|
fclose(dstFile);
|
||||||
|
log_error("Could not open source file %s for copying", srcPath);
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
size_t amount_read = 0;
|
||||||
|
|
||||||
|
char* buffer = (char*) malloc(FILE_BUFFER_SIZE);
|
||||||
|
while ((amount_read = fread(buffer, FILE_BUFFER_SIZE, 1, srcFile))) {
|
||||||
|
fwrite(buffer, amount_read, 1, dstFile);
|
||||||
|
}
|
||||||
|
|
||||||
|
fclose(srcFile);
|
||||||
|
fclose(dstFile);
|
||||||
|
free(buffer);
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue