Changes in File_Copy
This commit is contained in:
@@ -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;
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user