diff --git a/src/BufferedFile.cc b/src/BufferedFile.cc index fe763501..c7da3b54 100644 --- a/src/BufferedFile.cc +++ b/src/BufferedFile.cc @@ -43,15 +43,19 @@ namespace aria2 { -const std::string BufferedFile::READ = "rb"; -const std::string BufferedFile::WRITE = "wb"; -const std::string BufferedFile::APPEND = "ab"; +const char BufferedFile::READ[] = "rb"; +const char BufferedFile::WRITE[] = "wb"; +const char BufferedFile::APPEND[] = "ab"; -BufferedFile::BufferedFile(const std::string& filename, const std::string& mode) -{ - fp_ = a2fopen(utf8ToWChar(filename).c_str(), utf8ToWChar(mode).c_str()); - open_ = fp_; -} +BufferedFile::BufferedFile(const char* filename, const char* mode) + : +#ifdef __MINGW32__ + fp_(a2fopen(utf8ToWChar(filename).c_str(), utf8ToWChar(mode).c_str)), +#else // !__MINGW32__ + fp_(a2fopen(filename, mode)), +#endif // !__MINGW32__ + open_(fp_) +{} BufferedFile::BufferedFile(FILE* fp) : fp_(fp), open_(true) diff --git a/src/BufferedFile.h b/src/BufferedFile.h index 421cc8e8..aeba3a85 100644 --- a/src/BufferedFile.h +++ b/src/BufferedFile.h @@ -49,7 +49,7 @@ private: typedef void (BufferedFile::*unspecified_bool_type)() const; void good_state() const {} public: - BufferedFile(const std::string& filename, const std::string& mode); + BufferedFile(const char* filename, const char* mode); BufferedFile(FILE* fp); virtual ~BufferedFile(); // Returns true if file is opened and ferror returns 0. Otherwise @@ -78,11 +78,11 @@ public: // wrapper for fflush virtual int flush(); // Mode for reading - static const std::string READ; + static const char READ[]; // Mode for writing - static const std::string WRITE; + static const char WRITE[]; // Mode for append - static const std::string APPEND; + static const char APPEND[]; private: // Don't allow copying BufferedFile(const BufferedFile&); diff --git a/src/CookieStorage.cc b/src/CookieStorage.cc index 86e1874e..2acb353b 100644 --- a/src/CookieStorage.cc +++ b/src/CookieStorage.cc @@ -360,7 +360,7 @@ bool CookieStorage::load(const std::string& filename, time_t now) char header[16]; // "SQLite format 3" plus \0 size_t headlen; { - BufferedFile fp(filename, BufferedFile::READ); + BufferedFile fp(filename.c_str(), BufferedFile::READ); if(!fp) { A2_LOG_ERROR(fmt("Failed to open cookie file %s", filename.c_str())); return false; @@ -402,7 +402,7 @@ bool CookieStorage::saveNsFormat(const std::string& filename) std::string tempfilename = filename; tempfilename += "__temp"; { - BufferedFile fp(tempfilename, BufferedFile::WRITE); + BufferedFile fp(tempfilename.c_str(), BufferedFile::WRITE); if(!fp) { A2_LOG_ERROR(fmt("Cannot create cookie file %s", filename.c_str())); return false; diff --git a/src/DHTRoutingTableDeserializer.cc b/src/DHTRoutingTableDeserializer.cc index cd514656..4bab77ce 100644 --- a/src/DHTRoutingTableDeserializer.cc +++ b/src/DHTRoutingTableDeserializer.cc @@ -77,7 +77,7 @@ void DHTRoutingTableDeserializer::deserialize(const std::string& filename) { A2_LOG_INFO(fmt("Loading DHT routing table from %s.", filename.c_str())); - BufferedFile fp(filename, BufferedFile::READ); + BufferedFile fp(filename.c_str(), BufferedFile::READ); if(!fp) { throw DL_ABORT_EX(fmt("Failed to load DHT routing table from %s", filename.c_str())); diff --git a/src/DHTRoutingTableSerializer.cc b/src/DHTRoutingTableSerializer.cc index f1cd2896..ba196cdc 100644 --- a/src/DHTRoutingTableSerializer.cc +++ b/src/DHTRoutingTableSerializer.cc @@ -80,7 +80,7 @@ void DHTRoutingTableSerializer::serialize(const std::string& filename) A2_LOG_INFO(fmt("Saving DHT routing table to %s.", filename.c_str())); std::string filenameTemp = filename; filenameTemp += "__temp"; - BufferedFile fp(filenameTemp, BufferedFile::WRITE); + BufferedFile fp(filenameTemp.c_str(), BufferedFile::WRITE); if(!fp) { throw DL_ABORT_EX(fmt("Failed to save DHT routing table to %s.", filename.c_str())); diff --git a/src/DefaultBtProgressInfoFile.cc b/src/DefaultBtProgressInfoFile.cc index 888d408e..93ec092f 100644 --- a/src/DefaultBtProgressInfoFile.cc +++ b/src/DefaultBtProgressInfoFile.cc @@ -114,7 +114,7 @@ void DefaultBtProgressInfoFile::save() std::string filenameTemp = filename_; filenameTemp += "__temp"; { - BufferedFile fp(filenameTemp, BufferedFile::WRITE); + BufferedFile fp(filenameTemp.c_str(), BufferedFile::WRITE); if(!fp) { throw DL_ABORT_EX(fmt(EX_SEGMENT_FILE_WRITE, filename_.c_str())); } @@ -212,7 +212,7 @@ void DefaultBtProgressInfoFile::save() void DefaultBtProgressInfoFile::load() { A2_LOG_INFO(fmt(MSG_LOADING_SEGMENT_FILE, filename_.c_str())); - BufferedFile fp(filename_, BufferedFile::READ); + BufferedFile fp(filename_.c_str(), BufferedFile::READ); if(!fp) { throw DL_ABORT_EX(fmt(EX_SEGMENT_FILE_READ, filename_.c_str())); } diff --git a/src/Logger.cc b/src/Logger.cc index a123db01..980f7e83 100644 --- a/src/Logger.cc +++ b/src/Logger.cc @@ -63,7 +63,7 @@ void Logger::openFile(const std::string& filename) if(filename == DEV_STDOUT) { fpp_ = global::cout(); } else { - fpp_.reset(new BufferedFile(filename, BufferedFile::APPEND)); + fpp_.reset(new BufferedFile(filename.c_str(), BufferedFile::APPEND)); if(!*static_cast(fpp_.get())) { throw DL_ABORT_EX(fmt(EX_FILE_OPEN, filename.c_str(), "n/a")); } diff --git a/src/Netrc.cc b/src/Netrc.cc index 1eb10aa6..1d67f1bb 100644 --- a/src/Netrc.cc +++ b/src/Netrc.cc @@ -134,7 +134,7 @@ void skipMacdef(BufferedFile& fp) void Netrc::parse(const std::string& path) { authenticators_.clear(); - BufferedFile fp(path, BufferedFile::READ); + BufferedFile fp(path.c_str(), BufferedFile::READ); if(!fp) { throw DL_ABORT_EX(fmt("Cannot open file: %s", path.c_str())); } diff --git a/src/NsCookieParser.cc b/src/NsCookieParser.cc index 2d9c0ab9..61672d18 100644 --- a/src/NsCookieParser.cc +++ b/src/NsCookieParser.cc @@ -101,7 +101,7 @@ bool parseNsCookie std::vector NsCookieParser::parse (const std::string& filename, time_t creationTime) { - BufferedFile fp(filename, BufferedFile::READ); + BufferedFile fp(filename.c_str(), BufferedFile::READ); if(!fp) { throw DL_ABORT_EX(fmt("Failed to open file %s", filename.c_str())); } diff --git a/src/ProtocolDetector.cc b/src/ProtocolDetector.cc index 7ca0ba8a..f8160146 100644 --- a/src/ProtocolDetector.cc +++ b/src/ProtocolDetector.cc @@ -61,7 +61,7 @@ bool ProtocolDetector::isStreamProtocol(const std::string& uri) const bool ProtocolDetector::guessTorrentFile(const std::string& uri) const { - BufferedFile fp(uri, BufferedFile::READ); + BufferedFile fp(uri.c_str(), BufferedFile::READ); if(fp) { char head[1]; if(fp.read(head, sizeof(head)) == sizeof(head)) { @@ -90,7 +90,7 @@ bool ProtocolDetector::guessTorrentMagnet(const std::string& uri) const bool ProtocolDetector::guessMetalinkFile(const std::string& uri) const { - BufferedFile fp(uri, BufferedFile::READ); + BufferedFile fp(uri.c_str(), BufferedFile::READ); if(fp) { char head[5]; if(fp.read(head, sizeof(head)) == sizeof(head)) { diff --git a/src/ServerStatMan.cc b/src/ServerStatMan.cc index c76d9638..0b6c198a 100644 --- a/src/ServerStatMan.cc +++ b/src/ServerStatMan.cc @@ -84,7 +84,7 @@ bool ServerStatMan::save(const std::string& filename) const std::string tempfile = filename; tempfile += "__temp"; { - BufferedFile fp(tempfile, BufferedFile::WRITE); + BufferedFile fp(tempfile.c_str(), BufferedFile::WRITE); if(!fp) { A2_LOG_ERROR(fmt(MSG_OPENING_WRITABLE_SERVER_STAT_FILE_FAILED, filename.c_str())); @@ -155,7 +155,7 @@ int idField(std::string::const_iterator first, bool ServerStatMan::load(const std::string& filename) { - BufferedFile fp(filename, BufferedFile::READ); + BufferedFile fp(filename.c_str(), BufferedFile::READ); if(!fp) { A2_LOG_ERROR(fmt(MSG_OPENING_READABLE_SERVER_STAT_FILE_FAILED, filename.c_str())); diff --git a/src/SessionSerializer.cc b/src/SessionSerializer.cc index 04f53b33..ed8f20a2 100644 --- a/src/SessionSerializer.cc +++ b/src/SessionSerializer.cc @@ -66,7 +66,7 @@ bool SessionSerializer::save(const std::string& filename) const std::string tempFilename = filename; tempFilename += "__temp"; { - BufferedFile fp(tempFilename, BufferedFile::WRITE); + BufferedFile fp(tempFilename.c_str(), BufferedFile::WRITE); if(!fp) { return false; } diff --git a/src/UriListParser.cc b/src/UriListParser.cc index b040d582..5578bad7 100644 --- a/src/UriListParser.cc +++ b/src/UriListParser.cc @@ -48,7 +48,7 @@ namespace aria2 { UriListParser::UriListParser(const std::string& filename) - : fp_(filename, BufferedFile::READ) + : fp_(filename.c_str(), BufferedFile::READ) {} UriListParser::~UriListParser() {} diff --git a/src/option_processing.cc b/src/option_processing.cc index ed2e1102..dbe09c3b 100644 --- a/src/option_processing.cc +++ b/src/option_processing.cc @@ -224,7 +224,7 @@ void option_processing(Option& op, std::vector& uris, if(File(cfname).isFile()) { std::stringstream ss; { - BufferedFile fp(cfname, BufferedFile::READ); + BufferedFile fp(cfname.c_str(), BufferedFile::READ); if(fp) { fp.transfer(ss); } diff --git a/src/util.cc b/src/util.cc index 7ecddfab..a72d3365 100644 --- a/src/util.cc +++ b/src/util.cc @@ -1328,7 +1328,7 @@ bool saveAs std::string tempFilename = filename; tempFilename += "__temp"; { - BufferedFile fp(tempFilename, BufferedFile::WRITE); + BufferedFile fp(tempFilename.c_str(), BufferedFile::WRITE); if(!fp) { return false; } diff --git a/test/BufferedFileTest.cc b/test/BufferedFileTest.cc index 1058050d..d0dbc93e 100644 --- a/test/BufferedFileTest.cc +++ b/test/BufferedFileTest.cc @@ -24,16 +24,16 @@ void BufferedFileTest::testOpen() { File f(A2_TEST_OUT_DIR"/aria2_BufferedFileTest_testOpen"); f.remove(); - BufferedFile fail(f.getPath(), BufferedFile::READ); + BufferedFile fail(f.getPath().c_str(), BufferedFile::READ); CPPUNIT_ASSERT(!fail); - BufferedFile wr(f.getPath(), BufferedFile::WRITE); + BufferedFile wr(f.getPath().c_str(), BufferedFile::WRITE); CPPUNIT_ASSERT(wr); std::string msg = "aria2 rules\nalpha\nbravo\ncharlie"; wr.write(msg.data(), msg.size()); wr.close(); - BufferedFile rd(f.getPath(), BufferedFile::READ); + BufferedFile rd(f.getPath().c_str(), BufferedFile::READ); char buf[256]; size_t len = rd.read(buf, 11); CPPUNIT_ASSERT_EQUAL((size_t)11, len); diff --git a/test/ServerStatManTest.cc b/test/ServerStatManTest.cc index 660a6bc4..130d7c89 100644 --- a/test/ServerStatManTest.cc +++ b/test/ServerStatManTest.cc @@ -79,7 +79,7 @@ void ServerStatManTest::testSave() CPPUNIT_ASSERT(ssm.add(localhost_ftp)); CPPUNIT_ASSERT(ssm.add(mirror)); - std::string filename = A2_TEST_OUT_DIR"/aria2_ServerStatManTest_testSave"; + const char* filename = A2_TEST_OUT_DIR"/aria2_ServerStatManTest_testSave"; CPPUNIT_ASSERT(ssm.save(filename)); CPPUNIT_ASSERT_EQUAL (std::string @@ -111,7 +111,7 @@ void ServerStatManTest::testSave() void ServerStatManTest::testLoad() { - std::string filename = A2_TEST_OUT_DIR"/aria2_ServerStatManTest_testLoad"; + const char* filename = A2_TEST_OUT_DIR"/aria2_ServerStatManTest_testLoad"; std::string in = "host=localhost, protocol=ftp, dl_speed=30000, last_updated=1210000001, status=OK\n" "host=localhost, protocol=http, dl_speed=25000, sc_avg_speed=101, mc_avg_speed=102, last_updated=1210000000, counter=6, status=OK\n" diff --git a/test/UtilTest.cc b/test/UtilTest.cc index ab193d29..705015bf 100644 --- a/test/UtilTest.cc +++ b/test/UtilTest.cc @@ -1081,7 +1081,7 @@ void UtilTest::testToStream() std::deque > entries; entries.push_back(f1); entries.push_back(f2); - std::string filename = A2_TEST_OUT_DIR"/aria2_UtilTest_testToStream"; + const char* filename = A2_TEST_OUT_DIR"/aria2_UtilTest_testToStream"; BufferedFile fp(filename, BufferedFile::WRITE); util::toStream(entries.begin(), entries.end(), fp); fp.close();