Przeglądaj źródła

Removed feof from operator unspecified_bool_type. Added eof().

In BufferedFile, removed feof from operator unspecified_bool_type. EOF
can be queried separately using newly added eof().
Tatsuhiro Tsujikawa 14 lat temu
rodzic
commit
7f3d027b83
3 zmienionych plików z 9 dodań i 2 usunięć
  1. 6 1
      src/BufferedFile.cc
  2. 2 0
      src/BufferedFile.h
  3. 1 1
      test/BufferedFileTest.cc

+ 6 - 1
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

+ 2 - 0
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

+ 1 - 1
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