mirror of https://github.com/aria2/aria2
2010-10-12 Tatsuhiro Tsujikawa <t-tujikawa@users.sourceforge.net>
Rewritten File::mkdirs() * src/File.ccpull/1/head
parent
119b9a8448
commit
1a13d35406
|
@ -1,3 +1,8 @@
|
|||
2010-10-12 Tatsuhiro Tsujikawa <t-tujikawa@users.sourceforge.net>
|
||||
|
||||
Rewritten File::mkdirs()
|
||||
* src/File.cc
|
||||
|
||||
2010-10-11 Tatsuhiro Tsujikawa <t-tujikawa@users.sourceforge.net>
|
||||
|
||||
Use RFC1123 date format in debug log of MDTM response and
|
||||
|
|
29
src/File.cc
29
src/File.cc
|
@ -105,23 +105,22 @@ bool File::mkdirs() {
|
|||
if(isDir()) {
|
||||
return false;
|
||||
}
|
||||
std::vector<std::string> dirs;
|
||||
util::split(name_, std::back_inserter(dirs), "/");
|
||||
if(!dirs.size()) {
|
||||
return true;
|
||||
}
|
||||
|
||||
std::string accDir;
|
||||
if(util::startsWith(name_, A2STR::SLASH_C)) {
|
||||
accDir = A2STR::SLASH_C;
|
||||
}
|
||||
for(std::vector<std::string>::const_iterator itr = dirs.begin(),
|
||||
eoi = dirs.end(); itr != eoi; ++itr, accDir += A2STR::SLASH_C) {
|
||||
accDir += *itr;
|
||||
if(File(accDir).isDir()) {
|
||||
for(std::string::iterator i = name_.begin(), eoi = name_.end();
|
||||
i != eoi;) {
|
||||
std::string::iterator j = std::find(i, eoi, '/');
|
||||
if(std::distance(i, j) == 0) {
|
||||
++i;
|
||||
continue;
|
||||
}
|
||||
if(a2mkdir(accDir.c_str(), DIR_OPEN_MODE) == -1) {
|
||||
i = j;
|
||||
if(j != eoi) {
|
||||
++i;
|
||||
}
|
||||
std::string dir = std::string(name_.begin(), j);
|
||||
if(File(dir).isDir()) {
|
||||
continue;
|
||||
}
|
||||
if(a2mkdir(dir.c_str(), DIR_OPEN_MODE) == -1) {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue