diff options
Diffstat (limited to 'net/ftp/ftp_util.cc')
-rw-r--r-- | net/ftp/ftp_util.cc | 24 |
1 files changed, 16 insertions, 8 deletions
diff --git a/net/ftp/ftp_util.cc b/net/ftp/ftp_util.cc index 269a063..aeb2355 100644 --- a/net/ftp/ftp_util.cc +++ b/net/ftp/ftp_util.cc @@ -160,15 +160,23 @@ bool FtpUtil::LsDateListingToTime(const string16& month, const string16& day, return false; if (!base::StringToInt(rest, &time_exploded.year)) { - // Maybe it's time. Does it look like time (MM:HH)? - if (rest.length() != 5 || rest[2] != ':') - return false; - - if (!base::StringToInt(rest.substr(0, 2), &time_exploded.hour)) - return false; - - if (!base::StringToInt(rest.substr(3, 2), &time_exploded.minute)) + // Maybe it's time. Does it look like time (HH:MM)? + if (rest.length() == 5 && rest[2] == ':') { + if (!base::StringToInt(rest.substr(0, 2), &time_exploded.hour)) + return false; + + if (!base::StringToInt(rest.substr(3, 2), &time_exploded.minute)) + return false; + } else if (rest.length() == 4 && rest[1] == ':') { + // Sometimes it's just H:MM. + if (!base::StringToInt(rest.substr(0, 1), &time_exploded.hour)) + return false; + + if (!base::StringToInt(rest.substr(2, 2), &time_exploded.minute)) + return false; + } else { return false; + } // Guess the year. base::Time::Exploded current_exploded; |