init: Support bugreports to SD card in user builds if adb is enabled.
The rationale being that we do not want this enabled by default, but tying it to adb being enabled allows convenient bugreport collection for savvy users and developers using production devices. Change-Id: I71535b33f0774faf1975c98d106080f2ff12e349 Signed-off-by: Mike Lockwood <lockwood@android.com>
This commit is contained in:
parent
c4fc728e70
commit
7a36210cdb
1 changed files with 22 additions and 15 deletions
37
init/init.c
37
init/init.c
|
|
@ -767,21 +767,31 @@ int open_keychord()
|
|||
void handle_keychord(int fd)
|
||||
{
|
||||
struct service *svc;
|
||||
char* debuggable;
|
||||
char* adb_enabled;
|
||||
int ret;
|
||||
__u16 id;
|
||||
|
||||
ret = read(fd, &id, sizeof(id));
|
||||
if (ret != sizeof(id)) {
|
||||
ERROR("could not read keychord id\n");
|
||||
return;
|
||||
}
|
||||
// only handle keychords if ro.debuggable is set or adb is enabled.
|
||||
// the logic here is that bugreports should be enabled in userdebug or eng builds
|
||||
// and on user builds for users that are developers.
|
||||
debuggable = property_get("ro.debuggable");
|
||||
adb_enabled = property_get("init.svc.adbd");
|
||||
if ((debuggable && !strcmp(debuggable, "1")) ||
|
||||
(adb_enabled && !strcmp(adb_enabled, "running"))) {
|
||||
ret = read(fd, &id, sizeof(id));
|
||||
if (ret != sizeof(id)) {
|
||||
ERROR("could not read keychord id\n");
|
||||
return;
|
||||
}
|
||||
|
||||
svc = service_find_by_keychord(id);
|
||||
if (svc) {
|
||||
INFO("starting service %s from keychord\n", svc->name);
|
||||
service_start(svc, NULL);
|
||||
} else {
|
||||
ERROR("service for keychord %d not found\n", id);
|
||||
svc = service_find_by_keychord(id);
|
||||
if (svc) {
|
||||
INFO("starting service %s from keychord\n", svc->name);
|
||||
service_start(svc, NULL);
|
||||
} else {
|
||||
ERROR("service for keychord %d not found\n", id);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -853,10 +863,7 @@ int main(int argc, char **argv)
|
|||
property_init();
|
||||
|
||||
// only listen for keychords if ro.debuggable is true
|
||||
debuggable = property_get("ro.debuggable");
|
||||
if (debuggable && !strcmp(debuggable, "1")) {
|
||||
keychord_fd = open_keychord();
|
||||
}
|
||||
keychord_fd = open_keychord();
|
||||
|
||||
if (console[0]) {
|
||||
snprintf(tmp, sizeof(tmp), "/dev/%s", console);
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue