rewritten save function

This commit is contained in:
dborth 2009-10-06 07:09:18 +00:00
parent c2e8d57671
commit 6bfaa25966

View File

@ -835,32 +835,35 @@ SaveFile (char * buffer, char *filepath, size_t datasize, bool silent)
{ {
while(!written && retry == 1) while(!written && retry == 1)
{ {
if(ChangeInterface(device, silent)) if(!ChangeInterface(device, silent))
break;
file = fopen (filepath, "wb");
if(!file)
{ {
file = fopen (filepath, "wb"); if(silent)
break;
if (file)
{ retry = ErrorPromptRetry("Error creating file!");
while(written < datasize) continue;
{
if(datasize - written > 4096) nextwrite=4096;
else nextwrite = datasize-written;
writesize = fwrite (buffer+written, 1, nextwrite, file);
if(writesize != nextwrite) break; // write failure
written += writesize;
}
if(written != datasize) written = 0;
fclose (file);
}
} }
while(written < datasize)
{
if(datasize - written > 4096) nextwrite=4096;
else nextwrite = datasize-written;
writesize = fwrite (buffer+written, 1, nextwrite, file);
if(writesize != nextwrite) break; // write failure
written += writesize;
}
if(written != datasize) written = 0;
if(!written) if(!written)
{ {
unmountRequired[device] = true; unmountRequired[device] = true;
if(!silent) retry = ErrorPromptRetry("Error saving file!");
retry = ErrorPromptRetry("Error saving file!");
else
retry = 0;
} }
} }
} }