// Copyright 2019 The Chromium 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 #include #include namespace { // Returns the current user username. std::string Username() { const char* username = getenv("USER"); return username ? std::string(username) : std::string(); } // Writes |string| to |stream| while escaping all C escape sequences. void EscapeString(std::ostream* stream, const std::string& string) { for (char c : string) { switch (c) { case 0: *stream << "\\0"; break; case '\a': *stream << "\\a"; break; case '\b': *stream << "\\b"; break; case '\e': *stream << "\\e"; break; case '\f': *stream << "\\f"; break; case '\n': *stream << "\\n"; break; case '\r': *stream << "\\r"; break; case '\t': *stream << "\\t"; break; case '\v': *stream << "\\v"; break; case '\\': *stream << "\\\\"; break; case '\"': *stream << "\\\""; break; default: *stream << c; break; } } } } // namespace int main(int argc, char** argv) { std::string username = Username(); std::cout << "{\"username\": \""; EscapeString(&std::cout, username); std::cout << "\"}" << std::endl; return 0; }