mirror of https://github.com/aria2/aria2
2009-07-22 Tatsuhiro Tsujikawa <t-tujikawa@users.sourceforge.net>
Rewritten Signature::save() * src/Signature.ccpull/1/head
parent
65906c07fe
commit
f4a533846d
|
@ -1,3 +1,8 @@
|
|||
2009-07-22 Tatsuhiro Tsujikawa <t-tujikawa@users.sourceforge.net>
|
||||
|
||||
Rewritten Signature::save()
|
||||
* src/Signature.cc
|
||||
|
||||
2009-07-22 Tatsuhiro Tsujikawa <t-tujikawa@users.sourceforge.net>
|
||||
|
||||
Rewritten stream error handling
|
||||
|
|
|
@ -64,15 +64,20 @@ bool Signature::save(const std::string& filepath) const
|
|||
if(File(filepath).exists()) {
|
||||
return false;
|
||||
}
|
||||
std::ofstream out(filepath.c_str(), std::ios::binary);
|
||||
try {
|
||||
out.exceptions(std::ios::failbit);
|
||||
out << _body;
|
||||
out.close();
|
||||
return true;
|
||||
} catch(const std::ios::failure& exception) {
|
||||
std::string tempFilepath = filepath;
|
||||
tempFilepath += "__temp";
|
||||
{
|
||||
std::ofstream out(tempFilepath.c_str(), std::ios::binary);
|
||||
if(!out) {
|
||||
return false;
|
||||
}
|
||||
out << _body;
|
||||
out.flush();
|
||||
if(!out) {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
return File(tempFilepath).renameTo(filepath);
|
||||
}
|
||||
|
||||
} // namespace aria2
|
||||
|
|
Loading…
Reference in New Issue