// 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 <stdlib.h>

#include <iostream>
#include <string>

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;
}
