Przeglądaj źródła

Added printf and flush method to BufferedFile.

Tatsuhiro Tsujikawa 14 lat temu
rodzic
commit
b6b8cb005d
2 zmienionych plików z 27 dodań i 0 usunięć
  1. 20 0
      src/BufferedFile.cc
  2. 7 0
      src/BufferedFile.h

+ 20 - 0
src/BufferedFile.cc

@@ -35,6 +35,7 @@
 #include "BufferedFile.h"
 
 #include <cstring>
+#include <cstdarg>
 #include <ostream>
 
 #include "a2io.h"
@@ -44,6 +45,7 @@ namespace aria2 {
 
 const std::string BufferedFile::READ = "rb";
 const std::string BufferedFile::WRITE = "wb";
+const std::string BufferedFile::APPEND = "ab";
 
 BufferedFile::BufferedFile(const std::string& filename, const std::string& mode)
 {
@@ -51,6 +53,10 @@ BufferedFile::BufferedFile(const std::string& filename, const std::string& mode)
   open_ = fp_;
 }
 
+BufferedFile::BufferedFile(FILE* fp)
+  : fp_(fp), open_(true)
+{}
+
 BufferedFile::~BufferedFile()
 {
   close();
@@ -118,4 +124,18 @@ size_t BufferedFile::transfer(std::ostream& out)
   return count;
 }
 
+int BufferedFile::printf(const char* format, ...)
+{
+  va_list ap;
+  va_start(ap, format);
+  int r = vfprintf(fp_, format, ap);
+  va_end(ap);
+  return r;
+}
+
+int BufferedFile::flush()
+{
+  return fflush(fp_);
+}
+
 } // namespace aria2

+ 7 - 0
src/BufferedFile.h

@@ -50,6 +50,7 @@ private:
   void good_state() const {}
 public:
   BufferedFile(const std::string& filename, const std::string& mode);
+  BufferedFile(FILE* fp);
   ~BufferedFile();
   // Returns true if file is opened and both ferror and feof returns
   // 0. Otherwise returns false.
@@ -69,10 +70,16 @@ public:
   // Convenient method. Read data to end of file and write them into
   // given stream. Returns written size.
   size_t transfer(std::ostream& out);
+  // wrapper for fprintf
+  int printf(const char* format, ...);
+  // wrapper for fflush
+  int flush();
   // Mode for reading
   static const std::string READ;
   // Mode for writing
   static const std::string WRITE;
+  // Mode for append
+  static const std::string APPEND;
 private:
   // Don't allow copying
   BufferedFile(const BufferedFile&);