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

Side by Side Diff: net/ftp/ftp_directory_listing_parser_vms.cc

Issue 266243004: Clang format slam. Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 6 years, 7 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 unified diff | Download patch | Annotate | Revision Log
OLDNEW
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "net/ftp/ftp_directory_listing_parser_vms.h" 5 #include "net/ftp/ftp_directory_listing_parser_vms.h"
6 6
7 #include <vector> 7 #include <vector>
8 8
9 #include "base/strings/string_number_conversions.h" 9 #include "base/strings/string_number_conversions.h"
10 #include "base/strings/string_split.h" 10 #include "base/strings/string_split.h"
(...skipping 103 matching lines...) Expand 10 before | Expand all | Expand 10 after
114 return false; 114 return false;
115 115
116 // We expect four parts of the file protection listing: for System, Owner, 116 // We expect four parts of the file protection listing: for System, Owner,
117 // Group, and World. 117 // Group, and World.
118 std::vector<base::string16> parts; 118 std::vector<base::string16> parts;
119 base::SplitString(input.substr(1, input.length() - 2), ',', &parts); 119 base::SplitString(input.substr(1, input.length() - 2), ',', &parts);
120 if (parts.size() != 4) 120 if (parts.size() != 4)
121 return false; 121 return false;
122 122
123 return LooksLikeVmsFileProtectionListingPart(parts[0]) && 123 return LooksLikeVmsFileProtectionListingPart(parts[0]) &&
124 LooksLikeVmsFileProtectionListingPart(parts[1]) && 124 LooksLikeVmsFileProtectionListingPart(parts[1]) &&
125 LooksLikeVmsFileProtectionListingPart(parts[2]) && 125 LooksLikeVmsFileProtectionListingPart(parts[2]) &&
126 LooksLikeVmsFileProtectionListingPart(parts[3]); 126 LooksLikeVmsFileProtectionListingPart(parts[3]);
127 } 127 }
128 128
129 bool LooksLikeVmsUserIdentificationCode(const base::string16& input) { 129 bool LooksLikeVmsUserIdentificationCode(const base::string16& input) {
130 if (input.length() < 2) 130 if (input.length() < 2)
131 return false; 131 return false;
132 return input[0] == '[' && input[input.length() - 1] == ']'; 132 return input[0] == '[' && input[input.length() - 1] == ']';
133 } 133 }
134 134
135 bool LooksLikeVMSError(const base::string16& text) { 135 bool LooksLikeVMSError(const base::string16& text) {
136 static const char* kPermissionDeniedMessages[] = { 136 static const char* kPermissionDeniedMessages[] = {
137 "%RMS-E-FNF", // File not found. 137 "%RMS-E-FNF", // File not found.
138 "%RMS-E-PRV", // Access denied. 138 "%RMS-E-PRV", // Access denied.
139 "%SYSTEM-F-NOPRIV", 139 "%SYSTEM-F-NOPRIV", "privilege",
140 "privilege",
141 }; 140 };
142 141
143 for (size_t i = 0; i < arraysize(kPermissionDeniedMessages); i++) { 142 for (size_t i = 0; i < arraysize(kPermissionDeniedMessages); i++) {
144 if (text.find(base::ASCIIToUTF16(kPermissionDeniedMessages[i])) != 143 if (text.find(base::ASCIIToUTF16(kPermissionDeniedMessages[i])) !=
145 base::string16::npos) 144 base::string16::npos)
146 return true; 145 return true;
147 } 146 }
148 147
149 return false; 148 return false;
150 } 149 }
151 150
152 bool VmsDateListingToTime(const std::vector<base::string16>& columns, 151 bool VmsDateListingToTime(const std::vector<base::string16>& columns,
153 base::Time* time) { 152 base::Time* time) {
154 DCHECK_EQ(4U, columns.size()); 153 DCHECK_EQ(4U, columns.size());
155 154
156 base::Time::Exploded time_exploded = { 0 }; 155 base::Time::Exploded time_exploded = {0};
157 156
158 // Date should be in format DD-MMM-YYYY. 157 // Date should be in format DD-MMM-YYYY.
159 std::vector<base::string16> date_parts; 158 std::vector<base::string16> date_parts;
160 base::SplitString(columns[2], '-', &date_parts); 159 base::SplitString(columns[2], '-', &date_parts);
161 if (date_parts.size() != 3) 160 if (date_parts.size() != 3)
162 return false; 161 return false;
163 if (!base::StringToInt(date_parts[0], &time_exploded.day_of_month)) 162 if (!base::StringToInt(date_parts[0], &time_exploded.day_of_month))
164 return false; 163 return false;
165 if (!FtpUtil::AbbreviatedMonthToNumber(date_parts[1], 164 if (!FtpUtil::AbbreviatedMonthToNumber(date_parts[1], &time_exploded.month))
166 &time_exploded.month))
167 return false; 165 return false;
168 if (!base::StringToInt(date_parts[2], &time_exploded.year)) 166 if (!base::StringToInt(date_parts[2], &time_exploded.year))
169 return false; 167 return false;
170 168
171 // Time can be in format HH:MM, HH:MM:SS, or HH:MM:SS.mm. Try to recognize the 169 // Time can be in format HH:MM, HH:MM:SS, or HH:MM:SS.mm. Try to recognize the
172 // last type first. Do not parse the seconds, they will be ignored anyway. 170 // last type first. Do not parse the seconds, they will be ignored anyway.
173 base::string16 time_column(columns[3]); 171 base::string16 time_column(columns[3]);
174 if (time_column.length() == 11 && time_column[8] == '.') 172 if (time_column.length() == 11 && time_column[8] == '.')
175 time_column = time_column.substr(0, 8); 173 time_column = time_column.substr(0, 8);
176 if (time_column.length() == 8 && time_column[5] == ':') 174 if (time_column.length() == 8 && time_column[5] == ':')
(...skipping 107 matching lines...) Expand 10 before | Expand all | Expand 10 after
284 entries->push_back(entry); 282 entries->push_back(entry);
285 } 283 }
286 284
287 // The only place where we return true is after receiving the "Total" line, 285 // The only place where we return true is after receiving the "Total" line,
288 // that should be present in every VMS listing. Alternatively, if the listing 286 // that should be present in every VMS listing. Alternatively, if the listing
289 // contains error messages, it's OK not to have the "Total" line. 287 // contains error messages, it's OK not to have the "Total" line.
290 return seen_error; 288 return seen_error;
291 } 289 }
292 290
293 } // namespace net 291 } // namespace net
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698