mirror of https://github.com/aria2/aria2
Add writeOptionLine() to format 1 line of option name/value pair
parent
6b55f5d393
commit
9b99875478
|
@ -90,6 +90,21 @@ bool SessionSerializer::save(const std::string& filename) const
|
||||||
return File(tempFilename).renameTo(filename);
|
return File(tempFilename).renameTo(filename);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
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 {
|
namespace {
|
||||||
bool writeOption(BufferedFile& fp, const SharedHandle<Option>& op)
|
bool writeOption(BufferedFile& fp, const SharedHandle<Option>& op)
|
||||||
{
|
{
|
||||||
|
@ -105,36 +120,12 @@ bool writeOption(BufferedFile& fp, const SharedHandle<Option>& op)
|
||||||
false, false);
|
false, false);
|
||||||
for(std::vector<std::string>::const_iterator j = v.begin(),
|
for(std::vector<std::string>::const_iterator j = v.begin(),
|
||||||
eoj = v.end(); j != eoj; ++j) {
|
eoj = v.end(); j != eoj; ++j) {
|
||||||
if (fp.write(" ", 1) != 1) {
|
if(!writeOptionLine(fp, pref, *j)) {
|
||||||
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) {
|
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
if (fp.write(" ", 1) != 1) {
|
if(!writeOptionLine(fp, pref, op->get(pref))) {
|
||||||
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) {
|
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -189,30 +180,30 @@ bool writeDownloadResult
|
||||||
}
|
}
|
||||||
for(std::vector<std::string>::const_iterator i = uris.begin(),
|
for(std::vector<std::string>::const_iterator i = uris.begin(),
|
||||||
eoi = uris.end(); i != eoi; ++i) {
|
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;
|
return false;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if(fp.write("\n gid=", 6) != 6) {
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
if(fp.write(dr->gid->toHex().c_str()) == 0) {
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
if(fp.write("\n", 1) != 1) {
|
if(fp.write("\n", 1) != 1) {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
if(!writeOptionLine(fp, PREF_GID, dr->gid->toHex())) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
} else {
|
} else {
|
||||||
if(metainfoCache.count(mi->getGID()) != 0) {
|
if(metainfoCache.count(mi->getGID()) != 0) {
|
||||||
return true;
|
return true;
|
||||||
} else {
|
} else {
|
||||||
metainfoCache.insert(mi->getGID());
|
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;
|
return false;
|
||||||
}
|
}
|
||||||
// For downloads generated by metadata (e.g., BitTorrent,
|
// For downloads generated by metadata (e.g., BitTorrent,
|
||||||
// Metalink), save gid of Metadata download.
|
// 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;
|
return false;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -281,8 +272,7 @@ bool SessionSerializer::save(BufferedFile& fp) const
|
||||||
// PREF_PAUSE was removed from option, so save it here looking
|
// PREF_PAUSE was removed from option, so save it here looking
|
||||||
// property separately.
|
// property separately.
|
||||||
if(rg->isPauseRequested()) {
|
if(rg->isPauseRequested()) {
|
||||||
if (fp.write(" ", 1) != 1 || fp.write(PREF_PAUSE->k) == 0 ||
|
if(!writeOptionLine(fp, PREF_PAUSE, A2_V_TRUE)) {
|
||||||
fp.write("=true\n", 6) != 6) {
|
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue