2 // Copyright (C) 2015 Google, Inc.
4 // Licensed under the Apache License, Version 2.0 (the "License");
5 // you may not use this file except in compliance with the License.
6 // You may obtain a copy of the License at:
8 // http://www.apache.org/licenses/LICENSE-2.0
10 // Unless required by applicable law or agreed to in writing, software
11 // distributed under the License is distributed on an "AS IS" BASIS,
12 // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 // See the License for the specific language governing permissions and
14 // limitations under the License.
17 #include "service/settings.h"
19 #include <base/base_switches.h>
20 #include <base/command_line.h>
21 #include <base/logging.h>
23 #include "service/switches.h"
28 : initialized_(false) {
31 Settings::~Settings() {
34 bool Settings::Init() {
36 auto command_line = base::CommandLine::ForCurrentProcess();
37 const auto& switches = command_line->GetSwitches();
39 for (const auto& iter : switches) {
40 if (iter.first == switches::kCreateIPCSocketPath) {
41 // kCreateIPCSocketPath: An optional argument that initializes an IPC
42 // socket path for IPC.
43 base::FilePath path(iter.second);
44 if (path.empty() || path.EndsWithSeparator()) {
45 LOG(ERROR) << "Invalid IPC create socket path";
49 create_ipc_socket_path_ = path;
50 } else if (iter.first == switches::kAndroidIPCSocketSuffix) {
51 // kAndroidIPCSocketSuffix: An optional argument used to express
52 // a socket that Android init created for us. We bind to this.
53 const std::string& suffix = iter.second;
55 LOG(ERROR) << "Invalid Android socket suffix";
59 android_ipc_socket_suffix_ = suffix;
61 // Check for libbase logging switches. These get processed by
62 // logging::InitLogging directly.
63 else if (iter.first != ::switches::kV) {
64 LOG(ERROR) << "Unexpected command-line switches found: " << iter.first;
69 // Two IPC methods/paths were provided.
70 if (!android_ipc_socket_suffix_.empty() &&
71 !create_ipc_socket_path_.empty()) {
72 LOG(ERROR) << "Too many IPC methods provided";
76 // The daemon has no arguments
77 if (command_line->GetArgs().size()) {
78 LOG(ERROR) << "Unexpected command-line arguments found";
86 } // namespace bluetooth