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

Side by Side Diff: net/tools/tld_cleanup/tld_cleanup.cc

Issue 31004: Have tld_cleanup generate a .cc file that contains the effective (Closed)
Patch Set: Created 11 years, 10 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
« no previous file with comments | « net/tools/tld_cleanup/README ('k') | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright (c) 2006-2008 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2006-2008 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 // This command-line program converts an effective-TLD data file in UTF-8 from 5 // This command-line program converts an effective-TLD data file in UTF-8 from
6 // the format provided by Mozilla to the format expected by Chrome. Any errors 6 // the format provided by Mozilla to the format expected by Chrome. Any errors
7 // or warnings are recorded in tld_cleanup.log. 7 // or warnings are recorded in tld_cleanup.log.
8 // 8 //
9 // In particular, it 9 // In particular, it
10 // * Strips blank lines and comments, as well as notes for individual rules. 10 // * Strips blank lines and comments, as well as notes for individual rules.
(...skipping 20 matching lines...) Expand all
31 #include "googleurl/src/gurl.h" 31 #include "googleurl/src/gurl.h"
32 #include "googleurl/src/url_parse.h" 32 #include "googleurl/src/url_parse.h"
33 33
34 typedef std::set<std::string> StringSet; 34 typedef std::set<std::string> StringSet;
35 35
36 // Writes the list of domain rules contained in the 'rules' set to the 36 // Writes the list of domain rules contained in the 'rules' set to the
37 // 'outfile', with each rule terminated by a LF. The file must already have 37 // 'outfile', with each rule terminated by a LF. The file must already have
38 // been created with write access. 38 // been created with write access.
39 bool WriteRules(const StringSet& rules, FilePath outfile) { 39 bool WriteRules(const StringSet& rules, FilePath outfile) {
40 std::string data; 40 std::string data;
41 data.append(
42 "// Copyright (c) 2009 The Chromium Authors. All rights reserved.\n"
43 "// Use of this source code is governed by a BSD-style license that\n"
44 "// can be found in the LICENSE file.\n\n"
45 "// This file is generated by net/tools/tld_cleanup/.\n"
46 "// DO NOT MANUALLY EDIT!\n"
47 "#include \"net/base/registry_controlled_domain.h\"\n\n"
48 "const char net::RegistryControlledDomainService::kDomainData[] =\n"
49 );
50
41 for (StringSet::const_iterator iter = rules.begin(); 51 for (StringSet::const_iterator iter = rules.begin();
42 iter != rules.end(); 52 iter != rules.end();
43 ++iter) { 53 ++iter) {
54 data.append(" \"");
44 data.append(*iter); 55 data.append(*iter);
45 data.append("\n"); 56 data.append("\\n\"\n");
46 } 57 }
47 58
59 data.append(";\n");
60
48 int written = file_util::WriteFile(outfile.ToWStringHack(), data.data(), 61 int written = file_util::WriteFile(outfile.ToWStringHack(), data.data(),
49 data.size()); 62 data.size());
50 63
51 return written == static_cast<int>(data.size()); 64 return written == static_cast<int>(data.size());
52 } 65 }
53 66
54 // These result codes should be in increasing order of severity. 67 // These result codes should be in increasing order of severity.
55 typedef enum { 68 typedef enum {
56 kSuccess, 69 kSuccess,
57 kWarning, 70 kWarning,
(...skipping 65 matching lines...) Expand 10 before | Expand all | Expand 10 after
123 rule->insert(0, 1, '!'); 136 rule->insert(0, 1, '!');
124 else if (wildcard) 137 else if (wildcard)
125 rule->insert(0, "*."); 138 rule->insert(0, "*.");
126 139
127 return result; 140 return result;
128 } 141 }
129 142
130 // Loads the file described by 'in_filename', converts it to the desired format 143 // Loads the file described by 'in_filename', converts it to the desired format
131 // (see the file comments above), and saves it into 'out_filename'. Returns 144 // (see the file comments above), and saves it into 'out_filename'. Returns
132 // the most severe of the result codes encountered when normalizing the rules. 145 // the most severe of the result codes encountered when normalizing the rules.
133 NormalizeResult NormalizeFile(const std::wstring& in_filename, 146 NormalizeResult NormalizeFile(const FilePath& in_filename,
134 const std::wstring& out_filename) { 147 const FilePath& out_filename) {
135 std::string data; 148 std::string data;
136 if (!file_util::ReadFileToString(in_filename, &data)) { 149 if (!file_util::ReadFileToString(in_filename, &data)) {
137 fwprintf(stderr, L"Unable to read file %ls\n", in_filename.c_str()); 150 LOG(ERROR) << "Unable to read file";
138 // We return success since we've already reported the error. 151 // We return success since we've already reported the error.
139 return kSuccess; 152 return kSuccess;
140 } 153 }
141 154
142 // We do a lot of string assignment during parsing, but simplicity is more 155 // We do a lot of string assignment during parsing, but simplicity is more
143 // important than performance here. 156 // important than performance here.
144 std::string rule; 157 std::string rule;
145 NormalizeResult result = kSuccess; 158 NormalizeResult result = kSuccess;
146 size_t line_start = 0; 159 size_t line_start = 0;
147 size_t line_end = 0; 160 size_t line_end = 0;
(...skipping 26 matching lines...) Expand all
174 187
175 // Find beginning of next non-empty line. 188 // Find beginning of next non-empty line.
176 line_start = data.find_first_of("\r\n", line_end); 189 line_start = data.find_first_of("\r\n", line_end);
177 if (line_start == std::string::npos) 190 if (line_start == std::string::npos)
178 line_start = data.size(); 191 line_start = data.size();
179 line_start = data.find_first_not_of("\r\n", line_start); 192 line_start = data.find_first_not_of("\r\n", line_start);
180 if (line_start == std::string::npos) 193 if (line_start == std::string::npos)
181 line_start = data.size(); 194 line_start = data.size();
182 } 195 }
183 196
184 if (!WriteRules(rules, FilePath::FromWStringHack(out_filename))) { 197 if (!WriteRules(rules, out_filename)) {
185 LOG(ERROR) << "Error(s) writing " << out_filename; 198 LOG(ERROR) << "Error(s) writing output file";
186 result = kError; 199 result = kError;
187 } 200 }
188 201
189 return result; 202 return result;
190 } 203 }
191 204
192 int main(int argc, const char* argv[]) { 205 int main(int argc, const char* argv[]) {
193 base::EnableTerminationOnHeapCorruption(); 206 base::EnableTerminationOnHeapCorruption();
194 if (argc != 3) { 207 if (argc != 1) {
195 fprintf(stderr, "Normalizes and verifies UTF-8 TLD data files\n"); 208 fprintf(stderr, "Normalizes and verifies UTF-8 TLD data files\n");
196 fprintf(stderr, "Usage: %s <input> <output>\n", argv[0]); 209 fprintf(stderr, "Usage: %s\n", argv[0]);
197 return 1; 210 return 1;
198 } 211 }
199 212
200 // Manages the destruction of singletons. 213 // Manages the destruction of singletons.
201 base::AtExitManager exit_manager; 214 base::AtExitManager exit_manager;
202 215
203 // Only use OutputDebugString in debug mode. 216 // Only use OutputDebugString in debug mode.
204 #ifdef NDEBUG 217 #ifdef NDEBUG
205 logging::LoggingDestination destination = logging::LOG_ONLY_TO_FILE; 218 logging::LoggingDestination destination = logging::LOG_ONLY_TO_FILE;
206 #else 219 #else
207 logging::LoggingDestination destination = 220 logging::LoggingDestination destination =
208 logging::LOG_TO_BOTH_FILE_AND_SYSTEM_DEBUG_LOG; 221 logging::LOG_TO_BOTH_FILE_AND_SYSTEM_DEBUG_LOG;
209 #endif 222 #endif
210 223
211 CommandLine::Init(argc, argv); 224 CommandLine::Init(argc, argv);
212 225
213 FilePath log_filename; 226 FilePath log_filename;
214 PathService::Get(base::DIR_EXE, &log_filename); 227 PathService::Get(base::DIR_EXE, &log_filename);
215 log_filename = log_filename.AppendASCII("tld_cleanup.log"); 228 log_filename = log_filename.AppendASCII("tld_cleanup.log");
216 logging::InitLogging(log_filename.value().c_str(), 229 logging::InitLogging(log_filename.value().c_str(),
217 destination, 230 destination,
218 logging::LOCK_LOG_FILE, 231 logging::LOCK_LOG_FILE,
219 logging::DELETE_OLD_LOG_FILE); 232 logging::DELETE_OLD_LOG_FILE);
220 233
221 icu_util::Initialize(); 234 icu_util::Initialize();
222 235
223 NormalizeResult result = NormalizeFile(UTF8ToWide(argv[1]), 236 FilePath input_file;
224 UTF8ToWide(argv[2])); 237 PathService::Get(base::DIR_SOURCE_ROOT, &input_file);
238 input_file = input_file.Append(FILE_PATH_LITERAL("net"))
239 .Append(FILE_PATH_LITERAL("base"))
240 .Append(FILE_PATH_LITERAL("effective_tld_names.dat"));
241 FilePath output_file;
242 PathService::Get(base::DIR_SOURCE_ROOT, &output_file);
243 output_file = output_file.Append(FILE_PATH_LITERAL("net"))
244 .Append(FILE_PATH_LITERAL("base"))
245 .Append(FILE_PATH_LITERAL("effective_tld_names.cc"));
246 NormalizeResult result = NormalizeFile(input_file, output_file);
225 if (result != kSuccess) { 247 if (result != kSuccess) {
226 fprintf(stderr, 248 fprintf(stderr,
227 "Errors or warnings processing file. See log in tld_cleanup.log."); 249 "Errors or warnings processing file. See log in tld_cleanup.log.");
228 } 250 }
229 251
230 if (result == kError) 252 if (result == kError)
231 return 1; 253 return 1;
232 return 0; 254 return 0;
233 } 255 }
OLDNEW
« no previous file with comments | « net/tools/tld_cleanup/README ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698