diff options
| author | Tatsuhiro Tsujikawa <tatsuhiro.t@gmail.com> | 2013-03-03 14:12:59 +0900 |
|---|---|---|
| committer | Tatsuhiro Tsujikawa <tatsuhiro.t@gmail.com> | 2013-03-03 14:12:59 +0900 |
| commit | 9b9987547840e90cb61c2364926e00dd6b6e2381 (patch) | |
| tree | 625efce9904a8ebfbfc0cb2f9ae491e6e4e248aa /src/SessionSerializer.cc | |
| parent | 6b55f5d39399a33e911bb9e2907e0f9ba95a576d (diff) | |
Add writeOptionLine() to format 1 line of option name/value pair
Diffstat (limited to 'src/SessionSerializer.cc')
| -rw-r--r-- | src/SessionSerializer.cc | 62 |
1 files changed, 26 insertions, 36 deletions
diff --git a/src/SessionSerializer.cc b/src/SessionSerializer.cc index d3d00cb2..45e7b591 100644 --- a/src/SessionSerializer.cc +++ b/src/SessionSerializer.cc @@ -91,6 +91,21 @@ bool SessionSerializer::save(const std::string& filename) const } namespace { +// Write 1 line of option name/value pair. This function returns true +// if it succeeds, or false. +bool writeOptionLine(BufferedFile& fp, const Pref* pref, + const std::string& val) +{ + size_t prefLen = strlen(pref->k); + return fp.write(" ", 1) == 1 && + fp.write(pref->k, prefLen) == prefLen && + fp.write("=", 1) == 1 && + fp.write(val.c_str(), val.size()) == val.size() && + fp.write("\n", 1) == 1; +} +} // namespace + +namespace { bool writeOption(BufferedFile& fp, const SharedHandle<Option>& op) { const SharedHandle<OptionParser>& oparser = OptionParser::getInstance(); @@ -105,36 +120,12 @@ bool writeOption(BufferedFile& fp, const SharedHandle<Option>& op) false, false); for(std::vector<std::string>::const_iterator j = v.begin(), eoj = v.end(); j != eoj; ++j) { - if (fp.write(" ", 1) != 1) { - return false; - } - if (fp.write(pref->k) == 0) { - return false; - } - if (fp.write("=", 1) != 1) { - return false; - } - if (!j->empty() && fp.write(j->c_str()) == 0) { - return false; - } - if (fp.write("\n", 1) != 1) { + if(!writeOptionLine(fp, pref, *j)) { return false; } } } else { - if (fp.write(" ", 1) != 1) { - return false; - } - if (fp.write(pref->k) == 0) { - return false; - } - if (fp.write("=", 1) != 1) { - return false; - } - if (fp.write(op->get(pref).c_str()) == 0) { - return false; - } - if (fp.write("\n", 1) != 1) { + if(!writeOptionLine(fp, pref, op->get(pref))) { return false; } } @@ -189,17 +180,15 @@ bool writeDownloadResult } for(std::vector<std::string>::const_iterator i = uris.begin(), eoi = uris.end(); i != eoi; ++i) { - if (fp.write(i->c_str()) == 0 || fp.write("\t", 1) != 1) { + if (fp.write((*i).c_str(), (*i).size()) != (*i).size() || + fp.write("\t", 1) != 1) { return false; } } - if(fp.write("\n gid=", 6) != 6) { + if(fp.write("\n", 1) != 1) { return false; } - if(fp.write(dr->gid->toHex().c_str()) == 0) { - return false; - } - if(fp.write("\n", 1) != 1) { + if(!writeOptionLine(fp, PREF_GID, dr->gid->toHex())) { return false; } } else { @@ -207,12 +196,14 @@ bool writeDownloadResult return true; } else { metainfoCache.insert(mi->getGID()); - if (fp.write(mi->getUri().c_str()) == 0 || fp.write("\n", 1) != 1) { + if (fp.write(mi->getUri().c_str(), + mi->getUri().size()) != mi->getUri().size() || + fp.write("\n", 1) != 1) { return false; } // For downloads generated by metadata (e.g., BitTorrent, // Metalink), save gid of Metadata download. - if (fp.write(" gid=", 5) != 5 || fp.write(GroupId::toHex(mi->getGID()).c_str()) == 0 || fp.write("\n", 1) != 1) { + if(!writeOptionLine(fp, PREF_GID, GroupId::toHex(mi->getGID()))) { return false; } } @@ -281,8 +272,7 @@ bool SessionSerializer::save(BufferedFile& fp) const // PREF_PAUSE was removed from option, so save it here looking // property separately. if(rg->isPauseRequested()) { - if (fp.write(" ", 1) != 1 || fp.write(PREF_PAUSE->k) == 0 || - fp.write("=true\n", 6) != 6) { + if(!writeOptionLine(fp, PREF_PAUSE, A2_V_TRUE)) { return false; } } |
