Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(42)

Unified Diff: net/ftp/ftp_directory_listing_parser_windows.cc

Issue 7590011: FTP: add directory listing parser for OS/2 format. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: fixes Created 9 years, 4 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: net/ftp/ftp_directory_listing_parser_windows.cc
diff --git a/net/ftp/ftp_directory_listing_parser_windows.cc b/net/ftp/ftp_directory_listing_parser_windows.cc
index 2317fa3a6ccd228db29e7ab4029f83c805025717..1a70a375a92997020d510387ac869e4108c18206 100644
--- a/net/ftp/ftp_directory_listing_parser_windows.cc
+++ b/net/ftp/ftp_directory_listing_parser_windows.cc
@@ -13,65 +13,6 @@
#include "net/ftp/ftp_directory_listing_parser.h"
#include "net/ftp/ftp_util.h"
-namespace {
-
-bool WindowsDateListingToTime(const std::vector<string16>& columns,
- base::Time* time) {
- DCHECK_LE(3U, columns.size());
-
- base::Time::Exploded time_exploded = { 0 };
-
- // Date should be in format MM-DD-YY[YY].
- std::vector<string16> date_parts;
- base::SplitString(columns[0], '-', &date_parts);
- if (date_parts.size() != 3)
- return false;
- if (!base::StringToInt(date_parts[0], &time_exploded.month))
- return false;
- if (!base::StringToInt(date_parts[1], &time_exploded.day_of_month))
- return false;
- if (!base::StringToInt(date_parts[2], &time_exploded.year))
- return false;
- if (time_exploded.year < 0)
- return false;
- // If year has only two digits then assume that 00-79 is 2000-2079,
- // and 80-99 is 1980-1999.
- if (time_exploded.year < 80)
- time_exploded.year += 2000;
- else if (time_exploded.year < 100)
- time_exploded.year += 1900;
-
- // Time should be in format HH:MM(AM|PM)
- if (columns[1].length() != 7)
- return false;
- std::vector<string16> time_parts;
- base::SplitString(columns[1].substr(0, 5), ':', &time_parts);
- if (time_parts.size() != 2)
- return false;
- if (!base::StringToInt(time_parts[0], &time_exploded.hour))
- return false;
- if (!base::StringToInt(time_parts[1], &time_exploded.minute))
- return false;
- if (!time_exploded.HasValidValues())
- return false;
- string16 am_or_pm(columns[1].substr(5, 2));
- if (EqualsASCII(am_or_pm, "PM")) {
- if (time_exploded.hour < 12)
- time_exploded.hour += 12;
- } else if (EqualsASCII(am_or_pm, "AM")) {
- if (time_exploded.hour == 12)
- time_exploded.hour = 0;
- } else {
- return false;
- }
-
- // We don't know the time zone of the server, so just use local time.
- *time = base::Time::FromLocalExploded(time_exploded);
- return true;
-}
-
-} // namespace
-
namespace net {
bool ParseFtpDirectoryListingWindows(
@@ -107,8 +48,11 @@ bool ParseFtpDirectoryListingWindows(
return false;
}
- if (!WindowsDateListingToTime(columns, &entry.last_modified))
+ if (!FtpUtil::WindowsDateListingToTime(columns[0],
+ columns[1],
+ &entry.last_modified)) {
return false;
+ }
entry.name = FtpUtil::GetStringPartAfterColumns(lines[i], 3);
if (entry.name.empty()) {
« no previous file with comments | « net/ftp/ftp_directory_listing_parser_unittest.cc ('k') | net/ftp/ftp_directory_listing_parser_windows_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698