| // Copyright 2015 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 <regex.h> |
| #include <stdio.h> |
| #include <stdlib.h> |
| |
| #include <base/files/file_path.h> |
| #include <base/files/file_util.h> |
| #include <base/logging.h> |
| #include <brillo/flag_helper.h> |
| |
| #include "debugd/src/constants.h" |
| |
| namespace { |
| |
| const char kUsageMessage[] = |
| "\n" |
| "Configures Chrome remote debugging on port 9222." |
| "\n"; |
| |
| bool IsConfigured() { |
| return base::PathExists( |
| base::FilePath(debugd::kDevFeaturesChromeRemoteDebuggingFlagPath)); |
| } |
| |
| bool ConfigureChromeRemoteDebugging() { |
| bool result = true; |
| if (IsConfigured()) { |
| VLOG(1) << "Chrome remote debugging is already on."; |
| } else { |
| // This is basically touching a new empty file. It's only checked for |
| // existence. The content is not used. |
| int bytes_written = base::WriteFile( |
| base::FilePath(debugd::kDevFeaturesChromeRemoteDebuggingFlagPath), "", |
| 0); |
| if (bytes_written < 0) { |
| PLOG(WARNING) << "Failed to write Chrome remote debugging marker file."; |
| result = false; |
| } |
| } |
| return result; |
| } |
| |
| } // namespace |
| |
| int main(int argc, char** argv) { |
| DEFINE_bool(q, false, |
| "Query whether Chrome remote debugging has been configured"); |
| brillo::FlagHelper::Init(argc, argv, kUsageMessage); |
| |
| if (FLAGS_q) { |
| return IsConfigured() ? EXIT_SUCCESS : EXIT_FAILURE; |
| } |
| |
| return ConfigureChromeRemoteDebugging() ? EXIT_SUCCESS : EXIT_FAILURE; |
| } |