Support broadcast when dumpstate finishes.

Add flag that sends BUGREPORT_FINISHED broadcast when dumpstate
is finished, including the resulting filesystem paths.  Also reduces
directory creation to 0770.

Bug: 7005318
Change-Id: Id4c6b699a56f8acd859b7ab73368500e1a8f3c67
This commit is contained in:
Jeff Sharkey 2013-03-13 15:45:50 -07:00
parent f795852b54
commit 27f9e6d849
2 changed files with 14 additions and 3 deletions

View File

@ -161,7 +161,7 @@ static void dumpstate() {
if (screenshot_path[0]) { if (screenshot_path[0]) {
ALOGI("taking screenshot\n"); ALOGI("taking screenshot\n");
run_command(NULL, 5, SU_PATH, "root", "screenshot", screenshot_path, NULL); run_command(NULL, 5, "/system/bin/screencap", "-p", screenshot_path, NULL);
ALOGI("wrote screenshot: %s\n", screenshot_path); ALOGI("wrote screenshot: %s\n", screenshot_path);
} }
@ -311,6 +311,7 @@ static void usage() {
" -b: play sound file instead of vibrate, at beginning of job\n" " -b: play sound file instead of vibrate, at beginning of job\n"
" -e: play sound file instead of vibrate, at end of job\n" " -e: play sound file instead of vibrate, at end of job\n"
" -q: disable vibrate\n" " -q: disable vibrate\n"
" -B: send broadcast when finished (requires -o and -p)\n"
); );
} }
@ -323,6 +324,7 @@ int main(int argc, char *argv[]) {
char* end_sound = 0; char* end_sound = 0;
int use_socket = 0; int use_socket = 0;
int do_fb = 0; int do_fb = 0;
int do_broadcast = 0;
if (getuid() != 0) { if (getuid() != 0) {
// Old versions of the adb client would call the // Old versions of the adb client would call the
@ -348,7 +350,7 @@ int main(int argc, char *argv[]) {
dump_traces_path = dump_traces(); dump_traces_path = dump_traces();
int c; int c;
while ((c = getopt(argc, argv, "b:de:ho:svqzp")) != -1) { while ((c = getopt(argc, argv, "b:de:ho:svqzpB")) != -1) {
switch (c) { switch (c) {
case 'b': begin_sound = optarg; break; case 'b': begin_sound = optarg; break;
case 'd': do_add_date = 1; break; case 'd': do_add_date = 1; break;
@ -359,6 +361,7 @@ int main(int argc, char *argv[]) {
case 'q': do_vibrate = 0; break; case 'q': do_vibrate = 0; break;
case 'z': do_compress = 6; break; case 'z': do_compress = 6; break;
case 'p': do_fb = 1; break; case 'p': do_fb = 1; break;
case 'B': do_broadcast = 1; break;
case '?': printf("\n"); case '?': printf("\n");
case 'h': case 'h':
usage(); usage();
@ -474,6 +477,14 @@ int main(int argc, char *argv[]) {
fprintf(stderr, "rename(%s, %s): %s\n", tmp_path, path, strerror(errno)); fprintf(stderr, "rename(%s, %s): %s\n", tmp_path, path, strerror(errno));
} }
if (do_broadcast && use_outfile && do_fb) {
run_command(NULL, 5, "/system/bin/am", "broadcast",
"-a", "android.intent.action.BUGREPORT_FINISHED",
"--es", "android.intent.extra.BUGREPORT", path,
"--es", "android.intent.extra.SCREENSHOT", screenshot_path,
"--receiver-permission", "android.permission.DUMP", NULL);
}
ALOGI("done\n"); ALOGI("done\n");
return 0; return 0;

View File

@ -379,7 +379,7 @@ pid_t redirect_to_file(FILE *redirect, char *path, int gzip_level) {
chp = strchr(chp, '/'); chp = strchr(chp, '/');
if (chp) { if (chp) {
*chp = 0; *chp = 0;
mkdir(path, 0775); /* drwxrwxr-x */ mkdir(path, 0770); /* drwxrwx--- */
*chp++ = '/'; *chp++ = '/';
} }
} }