| // Copyright 2020 The Chromium OS Authors. All rights reserved. |
| // Use of this source code is governed by a BSD-style license that can be |
| // found in the LICENSE file. |
| |
| #include "croslog/log_parser.h" |
| |
| #include <string> |
| #include <utility> |
| |
| namespace { |
| |
| std::string StripLeadingNull(std::string&& entire_line) { |
| int null_len = 0; |
| for (; null_len < entire_line.size(); null_len++) { |
| if (entire_line[null_len] != '\0') |
| break; |
| } |
| |
| return entire_line.substr(null_len); |
| } |
| |
| } // anonymous namespace |
| |
| namespace croslog { |
| |
| MaybeLogEntry LogParser::Parse(std::string&& entire_line) { |
| // This hack is the temporary solution for crbug.com/1132182. |
| // TODO(yoshiki): remove this after solving the issue. |
| if (!entire_line.empty() && entire_line[0] == '\0') { |
| LOG(WARNING) << "The line has leading NULLs. This is unresolved bug. " |
| "Please report this to crbug.com/1132182. Content: " |
| << entire_line; |
| |
| entire_line = StripLeadingNull(std::move(entire_line)); |
| } |
| |
| return ParseInternal(std::move(entire_line)); |
| } |
| |
| } // namespace croslog |