blob: 57158ad5725947b8f081d68a314f3222b4e1018c [file] [log] [blame]
Dan Albert9a894b72015-02-18 18:36:08 -08001/*
2 * Copyright (C) 2015 The Android Open Source Project
3 *
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
7 *
8 * http://www.apache.org/licenses/LICENSE-2.0
9 *
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.
15 */
16
17#include <errno.h>
xunchang95d67322019-04-05 16:16:07 -070018#include <fcntl.h>
Dan Albert9a894b72015-02-18 18:36:08 -080019#include <signal.h>
20#include <stdio.h>
21#include <stdlib.h>
xunchang95d67322019-04-05 16:16:07 -070022#include <strings.h>
23
24#include <android-base/logging.h>
25#include <android-base/parseint.h>
Dan Albert9a894b72015-02-18 18:36:08 -080026
Dan Albert8f6eb5c2015-02-24 22:07:18 -080027#include "adb.h"
Elliott Hughes9813f5b2015-06-23 11:12:58 -070028#include "adb_auth.h"
Dan Albert8f6eb5c2015-02-24 22:07:18 -080029#include "transport.h"
30
xunchang95d67322019-04-05 16:16:07 -070031#include "minadbd_services.h"
32#include "minadbd_types.h"
Dan Albertf3a57262015-02-19 13:21:14 -080033
xunchang95d67322019-04-05 16:16:07 -070034int main(int argc, char** argv) {
35 android::base::InitLogging(argv, &android::base::StderrLogger);
36 // TODO(xunchang) implement a command parser
37 if (argc != 3 || strcmp("--socket_fd", argv[1]) != 0) {
38 LOG(ERROR) << "minadbd has invalid arguments, argc: " << argc;
39 exit(kMinadbdArgumentsParsingError);
40 }
Dan Albert9a894b72015-02-18 18:36:08 -080041
xunchang95d67322019-04-05 16:16:07 -070042 int socket_fd;
43 if (!android::base::ParseInt(argv[2], &socket_fd)) {
44 LOG(ERROR) << "Failed to parse int in " << argv[2];
45 exit(kMinadbdArgumentsParsingError);
46 }
47 if (fcntl(socket_fd, F_GETFD, 0) == -1) {
48 PLOG(ERROR) << "Failed to get minadbd socket";
49 exit(kMinadbdSocketIOError);
50 }
51 SetMinadbdSocketFd(socket_fd);
Elliott Hughes9813f5b2015-06-23 11:12:58 -070052
xunchang95d67322019-04-05 16:16:07 -070053 adb_device_banner = "sideload";
Dan Albert9a894b72015-02-18 18:36:08 -080054
xunchang95d67322019-04-05 16:16:07 -070055 signal(SIGPIPE, SIG_IGN);
Dan Albert9a894b72015-02-18 18:36:08 -080056
xunchang95d67322019-04-05 16:16:07 -070057 // We can't require authentication for sideloading. http://b/22025550.
58 auth_required = false;
59
60 init_transport_registration();
61 usb_init();
62
63 VLOG(ADB) << "Event loop starting";
64 fdevent_loop();
65
66 return 0;
Dan Albert9a894b72015-02-18 18:36:08 -080067}