summaryrefslogtreecommitdiff
path: root/src/DefaultBtProgressInfoFile.cc
diff options
context:
space:
mode:
authorTatsuhiro Tsujikawa <tatsuhiro.t@gmail.com>2009-07-22 12:51:51 +0000
committerTatsuhiro Tsujikawa <tatsuhiro.t@gmail.com>2009-07-22 12:51:51 +0000
commit0d101d47c9beb6020242fd105993a0f023485588 (patch)
tree6128ba7cc4577adf2670e7cfad9f0037ac96a1dc /src/DefaultBtProgressInfoFile.cc
parentcec451951d892c2d953840c9257059462cdf9cc9 (diff)
2009-07-22 Tatsuhiro Tsujikawa <t-tujikawa@users.sourceforge.net>
Check stream status after file is opened. * src/DefaultBtProgressInfoFile.cc
Diffstat (limited to 'src/DefaultBtProgressInfoFile.cc')
-rw-r--r--src/DefaultBtProgressInfoFile.cc9
1 files changed, 8 insertions, 1 deletions
diff --git a/src/DefaultBtProgressInfoFile.cc b/src/DefaultBtProgressInfoFile.cc
index fa571443..ce93ad9f 100644
--- a/src/DefaultBtProgressInfoFile.cc
+++ b/src/DefaultBtProgressInfoFile.cc
@@ -108,6 +108,10 @@ void DefaultBtProgressInfoFile::save()
std::string filenameTemp = _filename+"__temp";
{
std::ofstream o(filenameTemp.c_str(), std::ios::out|std::ios::binary);
+ if(!o) {
+ throw DL_ABORT_EX(StringFormat(EX_SEGMENT_FILE_WRITE,
+ _filename.c_str(), strerror(errno)).str());
+ }
bool torrentDownload = isTorrentDownload();
// file version: 16 bits
// values: '1'
@@ -212,7 +216,10 @@ void DefaultBtProgressInfoFile::load()
{
_logger->info(MSG_LOADING_SEGMENT_FILE, _filename.c_str());
std::ifstream in(_filename.c_str(), std::ios::in|std::ios::binary);
-
+ if(!in) { \
+ throw DL_ABORT_EX(StringFormat(EX_SEGMENT_FILE_READ, \
+ _filename.c_str(), strerror(errno)).str());
+ }
unsigned char versionBuf[2];
in.read((char*)versionBuf, sizeof(versionBuf));
CHECK_STREAM(in, sizeof(versionBuf));