Changes in File_Copy

This commit is contained in:
2015-10-18 14:11:39 +02:00
parent 8fc0e809cb
commit 74ddd9ccf7

View File

@@ -330,23 +330,23 @@ void File_DeleteDirectory(char *path) {
#define MaxBuffer 16384 #define MaxBuffer 16384
int File_Copy(const char *pathOrig, const char *pathDest) { int File_Copy(const char *pathOrig, const char *pathDest) {
FILE *fOrig; FILE *fOrig = NULL;
FILE *fDest; FILE *fDest = NULL;
char *buffer = NULL; char *buffer = NULL;
int readLen = 0; int readLen = 0;
int writeLen = 0; int writeLen = 0;
int ok = 0; int status = 0;
if ((fOrig = fopen(pathOrig, "rb")) == NULL) { if ((fOrig = fopen(pathOrig, "rb")) == NULL) {
return 0; goto cleanup;
} }
if ((fDest = fopen(pathDest, "wb")) == NULL) { if ((fDest = fopen(pathDest, "wb")) == NULL) {
return 0; goto cleanup;
} }
buffer = malloc(sizeof(char)*MaxBuffer); buffer = malloc(sizeof(char)*MaxBuffer);
if (buffer == NULL) { if (buffer == NULL) {
return 0; goto cleanup;
} }
do { do {
@@ -354,21 +354,20 @@ int File_Copy(const char *pathOrig, const char *pathDest) {
if (readLen > 0) { if (readLen > 0) {
writeLen = fwrite(buffer, 1, readLen, fDest); writeLen = fwrite(buffer, 1, readLen, fDest);
if (writeLen != readLen) { if (writeLen != readLen) {
// Error // Write error
fclose(fOrig); status = -1;
fclose(fDest); goto cleanup;
free(buffer);
return 0;
} }
} }
} while (readLen == MaxBuffer); } while (readLen == MaxBuffer);
if (feof(fOrig)) { if (feof(fOrig)) {
ok = 1; status = 1;
} }
fclose(fOrig); cleanup:
fclose(fDest); if (fOrig != NULL) { fclose(fOrig); }
free(buffer); if (fDest != NULL) { fclose(fDest); }
return ok; if (buffer != NULL) { free(buffer); }
return status;
} }