| 491 | } |
| 492 | |
| 493 | static std::string JsonEscape(const std::string& s) |
| 494 | { |
| 495 | std::string out; |
| 496 | out.reserve(s.size() + 8); |
| 497 | for (char c : s) |
| 498 | { |
| 499 | switch (c) |
| 500 | { |
| 501 | case '"': |
| 502 | out += "\\\""; |
| 503 | break; |
| 504 | case '\\': |
| 505 | out += "\\\\"; |
| 506 | break; |
| 507 | case '\n': |
| 508 | out += "\\n"; |
| 509 | break; |
| 510 | case '\r': |
| 511 | out += "\\r"; |
| 512 | break; |
| 513 | case '\t': |
| 514 | out += "\\t"; |
| 515 | break; |
| 516 | default: |
| 517 | out += c; |
| 518 | break; |
| 519 | } |
| 520 | } |
| 521 | return out; |
| 522 | } |
| 523 | |
| 524 | static void RunScan(const std::string& directory, int threadCount, bool verbose, bool jsonOutput) |
| 525 | { |