diff --git a/src/BufferedFile.cc b/src/BufferedFile.cc index a12d46e7..078acb27 100644 --- a/src/BufferedFile.cc +++ b/src/BufferedFile.cc @@ -57,7 +57,7 @@ BufferedFile::~BufferedFile() BufferedFile::operator unspecified_bool_type() const { - return (!open_ || ferror(fp_) || feof(fp_)) ? 0 : &BufferedFile::good_state; + return (!open_ || ferror(fp_)) ? 0 : &BufferedFile::good_state; } size_t BufferedFile::read(void* ptr, size_t count) @@ -97,4 +97,9 @@ int BufferedFile::close() } } +bool BufferedFile::eof() +{ + return open_ && feof(fp_); +} + } // namespace aria2 diff --git a/src/BufferedFile.h b/src/BufferedFile.h index 66acb7ff..a4cb7f59 100644 --- a/src/BufferedFile.h +++ b/src/BufferedFile.h @@ -63,6 +63,8 @@ public: char* getsn(char* s, int size); // wrapper for fclose int close(); + // Return true if open_ && feof(fp_) != 0. Otherwise returns false. + bool eof(); // Mode for reading static const std::string READ; // Mode for writing diff --git a/test/BufferedFileTest.cc b/test/BufferedFileTest.cc index 10fd01bf..1058050d 100644 --- a/test/BufferedFileTest.cc +++ b/test/BufferedFileTest.cc @@ -52,7 +52,7 @@ void BufferedFileTest::testOpen() CPPUNIT_ASSERT(rd.getsn(buf, sizeof(buf))); CPPUNIT_ASSERT_EQUAL(std::string("charlie"), std::string(buf)); - CPPUNIT_ASSERT(!rd); + CPPUNIT_ASSERT(rd.eof()); } } // namespace aria2