mirror of
https://github.com/dolphin-emu/dolphin.git
synced 2025-02-10 14:39:01 +01:00
Common: Remove gotos in FileUtil, and replace FILE*s with IOFile/ifstreams.
This commit is contained in:
parent
3210a942ec
commit
e3abad234c
@ -322,8 +322,9 @@ bool Copy(const std::string &srcFilename, const std::string &destFilename)
|
|||||||
char buffer[BSIZE];
|
char buffer[BSIZE];
|
||||||
|
|
||||||
// Open input file
|
// Open input file
|
||||||
FILE *input = fopen(srcFilename.c_str(), "rb");
|
std::ifstream input;
|
||||||
if (!input)
|
OpenFStream(input, srcFilename, std::ifstream::in | std::ifstream::binary);
|
||||||
|
if (!input.is_open())
|
||||||
{
|
{
|
||||||
ERROR_LOG(COMMON, "Copy: input failed %s --> %s: %s",
|
ERROR_LOG(COMMON, "Copy: input failed %s --> %s: %s",
|
||||||
srcFilename.c_str(), destFilename.c_str(), GetLastErrorMsg());
|
srcFilename.c_str(), destFilename.c_str(), GetLastErrorMsg());
|
||||||
@ -331,51 +332,39 @@ bool Copy(const std::string &srcFilename, const std::string &destFilename)
|
|||||||
}
|
}
|
||||||
|
|
||||||
// open output file
|
// open output file
|
||||||
FILE *output = fopen(destFilename.c_str(), "wb");
|
File::IOFile output(destFilename, "wb");
|
||||||
if (!output)
|
|
||||||
|
if (!output.IsOpen())
|
||||||
{
|
{
|
||||||
fclose(input);
|
|
||||||
ERROR_LOG(COMMON, "Copy: output failed %s --> %s: %s",
|
ERROR_LOG(COMMON, "Copy: output failed %s --> %s: %s",
|
||||||
srcFilename.c_str(), destFilename.c_str(), GetLastErrorMsg());
|
srcFilename.c_str(), destFilename.c_str(), GetLastErrorMsg());
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
// copy loop
|
// copy loop
|
||||||
while (!feof(input))
|
while (!input.eof())
|
||||||
{
|
{
|
||||||
// read input
|
// read input
|
||||||
int rnum = fread(buffer, sizeof(char), BSIZE, input);
|
input.read(buffer, BSIZE);
|
||||||
if (rnum != BSIZE)
|
if (!input)
|
||||||
{
|
{
|
||||||
if (ferror(input) != 0)
|
ERROR_LOG(COMMON,
|
||||||
{
|
"Copy: failed reading from source, %s --> %s: %s",
|
||||||
ERROR_LOG(COMMON,
|
srcFilename.c_str(), destFilename.c_str(), GetLastErrorMsg());
|
||||||
"Copy: failed reading from source, %s --> %s: %s",
|
return false;
|
||||||
srcFilename.c_str(), destFilename.c_str(), GetLastErrorMsg());
|
|
||||||
goto bail;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// write output
|
// write output
|
||||||
int wnum = fwrite(buffer, sizeof(char), rnum, output);
|
if (!output.WriteBytes(buffer, BSIZE))
|
||||||
if (wnum != rnum)
|
|
||||||
{
|
{
|
||||||
ERROR_LOG(COMMON,
|
ERROR_LOG(COMMON,
|
||||||
"Copy: failed writing to output, %s --> %s: %s",
|
"Copy: failed writing to output, %s --> %s: %s",
|
||||||
srcFilename.c_str(), destFilename.c_str(), GetLastErrorMsg());
|
srcFilename.c_str(), destFilename.c_str(), GetLastErrorMsg());
|
||||||
goto bail;
|
return false;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
// close files
|
|
||||||
fclose(input);
|
|
||||||
fclose(output);
|
|
||||||
return true;
|
return true;
|
||||||
bail:
|
|
||||||
if (input)
|
|
||||||
fclose(input);
|
|
||||||
if (output)
|
|
||||||
fclose(output);
|
|
||||||
return false;
|
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user