14d71d2913702fd5a6b6f84bdfae02f6ef1a14b24Yifan Hong/* 24d71d2913702fd5a6b6f84bdfae02f6ef1a14b24Yifan Hong * Copyright (C) 2017 The Android Open Source Project 34d71d2913702fd5a6b6f84bdfae02f6ef1a14b24Yifan Hong * 44d71d2913702fd5a6b6f84bdfae02f6ef1a14b24Yifan Hong * Licensed under the Apache License, Version 2.0 (the "License"); 54d71d2913702fd5a6b6f84bdfae02f6ef1a14b24Yifan Hong * you may not use this file except in compliance with the License. 64d71d2913702fd5a6b6f84bdfae02f6ef1a14b24Yifan Hong * You may obtain a copy of the License at 74d71d2913702fd5a6b6f84bdfae02f6ef1a14b24Yifan Hong * 84d71d2913702fd5a6b6f84bdfae02f6ef1a14b24Yifan Hong * http://www.apache.org/licenses/LICENSE-2.0 94d71d2913702fd5a6b6f84bdfae02f6ef1a14b24Yifan Hong * 104d71d2913702fd5a6b6f84bdfae02f6ef1a14b24Yifan Hong * Unless required by applicable law or agreed to in writing, software 114d71d2913702fd5a6b6f84bdfae02f6ef1a14b24Yifan Hong * distributed under the License is distributed on an "AS IS" BASIS, 124d71d2913702fd5a6b6f84bdfae02f6ef1a14b24Yifan Hong * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 134d71d2913702fd5a6b6f84bdfae02f6ef1a14b24Yifan Hong * See the License for the specific language governing permissions and 144d71d2913702fd5a6b6f84bdfae02f6ef1a14b24Yifan Hong * limitations under the License. 154d71d2913702fd5a6b6f84bdfae02f6ef1a14b24Yifan Hong */ 164d71d2913702fd5a6b6f84bdfae02f6ef1a14b24Yifan Hong 174d71d2913702fd5a6b6f84bdfae02f6ef1a14b24Yifan Hong#include "DebugCommand.h" 184d71d2913702fd5a6b6f84bdfae02f6ef1a14b24Yifan Hong 194d71d2913702fd5a6b6f84bdfae02f6ef1a14b24Yifan Hong#include "Lshal.h" 204d71d2913702fd5a6b6f84bdfae02f6ef1a14b24Yifan Hong 214d71d2913702fd5a6b6f84bdfae02f6ef1a14b24Yifan Hongnamespace android { 224d71d2913702fd5a6b6f84bdfae02f6ef1a14b24Yifan Hongnamespace lshal { 234d71d2913702fd5a6b6f84bdfae02f6ef1a14b24Yifan Hong 244d71d2913702fd5a6b6f84bdfae02f6ef1a14b24Yifan HongDebugCommand::DebugCommand(Lshal &lshal) : mLshal(lshal) { 254d71d2913702fd5a6b6f84bdfae02f6ef1a14b24Yifan Hong} 264d71d2913702fd5a6b6f84bdfae02f6ef1a14b24Yifan Hong 274d71d2913702fd5a6b6f84bdfae02f6ef1a14b24Yifan HongStatus DebugCommand::parseArgs(const std::string &command, const Arg &arg) { 284d71d2913702fd5a6b6f84bdfae02f6ef1a14b24Yifan Hong if (optind >= arg.argc) { 294d71d2913702fd5a6b6f84bdfae02f6ef1a14b24Yifan Hong mLshal.usage(command); 304d71d2913702fd5a6b6f84bdfae02f6ef1a14b24Yifan Hong return USAGE; 314d71d2913702fd5a6b6f84bdfae02f6ef1a14b24Yifan Hong } 324d71d2913702fd5a6b6f84bdfae02f6ef1a14b24Yifan Hong mInterfaceName = arg.argv[optind]; 334d71d2913702fd5a6b6f84bdfae02f6ef1a14b24Yifan Hong ++optind; 344d71d2913702fd5a6b6f84bdfae02f6ef1a14b24Yifan Hong for (; optind < arg.argc; ++optind) { 354d71d2913702fd5a6b6f84bdfae02f6ef1a14b24Yifan Hong mOptions.push_back(arg.argv[optind]); 364d71d2913702fd5a6b6f84bdfae02f6ef1a14b24Yifan Hong } 374d71d2913702fd5a6b6f84bdfae02f6ef1a14b24Yifan Hong return OK; 384d71d2913702fd5a6b6f84bdfae02f6ef1a14b24Yifan Hong} 394d71d2913702fd5a6b6f84bdfae02f6ef1a14b24Yifan Hong 404d71d2913702fd5a6b6f84bdfae02f6ef1a14b24Yifan HongStatus DebugCommand::main(const std::string &command, const Arg &arg) { 414d71d2913702fd5a6b6f84bdfae02f6ef1a14b24Yifan Hong Status status = parseArgs(command, arg); 424d71d2913702fd5a6b6f84bdfae02f6ef1a14b24Yifan Hong if (status != OK) { 434d71d2913702fd5a6b6f84bdfae02f6ef1a14b24Yifan Hong return status; 444d71d2913702fd5a6b6f84bdfae02f6ef1a14b24Yifan Hong } 454d71d2913702fd5a6b6f84bdfae02f6ef1a14b24Yifan Hong auto pair = splitFirst(mInterfaceName, '/'); 464d71d2913702fd5a6b6f84bdfae02f6ef1a14b24Yifan Hong return mLshal.emitDebugInfo( 474d71d2913702fd5a6b6f84bdfae02f6ef1a14b24Yifan Hong pair.first, pair.second.empty() ? "default" : pair.second, mOptions, 484d71d2913702fd5a6b6f84bdfae02f6ef1a14b24Yifan Hong mLshal.out().buf(), 494d71d2913702fd5a6b6f84bdfae02f6ef1a14b24Yifan Hong mLshal.err()); 504d71d2913702fd5a6b6f84bdfae02f6ef1a14b24Yifan Hong} 514d71d2913702fd5a6b6f84bdfae02f6ef1a14b24Yifan Hong 524d71d2913702fd5a6b6f84bdfae02f6ef1a14b24Yifan Hong} // namespace lshal 534d71d2913702fd5a6b6f84bdfae02f6ef1a14b24Yifan Hong} // namespace android 544d71d2913702fd5a6b6f84bdfae02f6ef1a14b24Yifan Hong 55