commit
dad7911214
|
@ -322,8 +322,9 @@ bool Copy(const std::string &srcFilename, const std::string &destFilename)
|
|||
char buffer[BSIZE];
|
||||
|
||||
// Open input file
|
||||
FILE *input = fopen(srcFilename.c_str(), "rb");
|
||||
if (!input)
|
||||
std::ifstream input;
|
||||
OpenFStream(input, srcFilename, std::ifstream::in | std::ifstream::binary);
|
||||
if (!input.is_open())
|
||||
{
|
||||
ERROR_LOG(COMMON, "Copy: input failed %s --> %s: %s",
|
||||
srcFilename.c_str(), destFilename.c_str(), GetLastErrorMsg());
|
||||
|
@ -331,51 +332,39 @@ bool Copy(const std::string &srcFilename, const std::string &destFilename)
|
|||
}
|
||||
|
||||
// open output file
|
||||
FILE *output = fopen(destFilename.c_str(), "wb");
|
||||
if (!output)
|
||||
File::IOFile output(destFilename, "wb");
|
||||
|
||||
if (!output.IsOpen())
|
||||
{
|
||||
fclose(input);
|
||||
ERROR_LOG(COMMON, "Copy: output failed %s --> %s: %s",
|
||||
srcFilename.c_str(), destFilename.c_str(), GetLastErrorMsg());
|
||||
return false;
|
||||
}
|
||||
|
||||
// copy loop
|
||||
while (!feof(input))
|
||||
while (!input.eof())
|
||||
{
|
||||
// read input
|
||||
int rnum = fread(buffer, sizeof(char), BSIZE, input);
|
||||
if (rnum != BSIZE)
|
||||
input.read(buffer, BSIZE);
|
||||
if (!input)
|
||||
{
|
||||
if (ferror(input) != 0)
|
||||
{
|
||||
ERROR_LOG(COMMON,
|
||||
"Copy: failed reading from source, %s --> %s: %s",
|
||||
srcFilename.c_str(), destFilename.c_str(), GetLastErrorMsg());
|
||||
goto bail;
|
||||
}
|
||||
ERROR_LOG(COMMON,
|
||||
"Copy: failed reading from source, %s --> %s: %s",
|
||||
srcFilename.c_str(), destFilename.c_str(), GetLastErrorMsg());
|
||||
return false;
|
||||
}
|
||||
|
||||
// write output
|
||||
int wnum = fwrite(buffer, sizeof(char), rnum, output);
|
||||
if (wnum != rnum)
|
||||
if (!output.WriteBytes(buffer, BSIZE))
|
||||
{
|
||||
ERROR_LOG(COMMON,
|
||||
"Copy: failed writing to output, %s --> %s: %s",
|
||||
srcFilename.c_str(), destFilename.c_str(), GetLastErrorMsg());
|
||||
goto bail;
|
||||
return false;
|
||||
}
|
||||
}
|
||||
// close files
|
||||
fclose(input);
|
||||
fclose(output);
|
||||
|
||||
return true;
|
||||
bail:
|
||||
if (input)
|
||||
fclose(input);
|
||||
if (output)
|
||||
fclose(output);
|
||||
return false;
|
||||
#endif
|
||||
}
|
||||
|
||||
|
|
|
@ -208,18 +208,17 @@ static bool Memory_TryBase(u8 *base, MemoryView *views, int num_views, u32 flags
|
|||
}
|
||||
|
||||
if (!view->view_ptr)
|
||||
goto bail;
|
||||
{
|
||||
// Argh! ERROR! Free what we grabbed so far so we can try again.
|
||||
MemoryMap_Shutdown(views, i+1, flags, arena);
|
||||
return false;
|
||||
}
|
||||
|
||||
if (view->out_ptr)
|
||||
*(view->out_ptr) = (u8*) view->view_ptr;
|
||||
}
|
||||
|
||||
return true;
|
||||
|
||||
bail:
|
||||
// Argh! ERROR! Free what we grabbed so far so we can try again.
|
||||
MemoryMap_Shutdown(views, i+1, flags, arena);
|
||||
return false;
|
||||
}
|
||||
|
||||
static u32 MemoryMap_InitializeViews(MemoryView *views, int num_views, u32 flags)
|
||||
|
|
Loading…
Reference in New Issue