| 949 | } |
| 950 | |
| 951 | void EscapeJson(std::ostream& os, const butil::StringPiece& s) { |
| 952 | for (auto it = s.begin(); it != s.end(); it++) { |
| 953 | auto c = *it; |
| 954 | switch (c) { |
| 955 | case '"': os << "\\\""; break; |
| 956 | case '\\': os << "\\\\"; break; |
| 957 | case '\b': os << "\\b"; break; |
| 958 | case '\f': os << "\\f"; break; |
| 959 | case '\n': os << "\\n"; break; |
| 960 | case '\r': os << "\\r"; break; |
| 961 | case '\t': os << "\\t"; break; |
| 962 | default: os << c; |
| 963 | } |
| 964 | } |
| 965 | } |
| 966 | |
| 967 | inline void OutputLog(std::ostream& os, const butil::StringPiece& s) { |
| 968 | if (FLAGS_escape_log) { |