Loading cmds/dumpstate/dumpstate.c +1 −5 Original line number Original line Diff line number Diff line Loading @@ -388,7 +388,6 @@ static void usage() { fprintf(stderr, "usage: dumpstate [-b soundfile] [-e soundfile] [-o file [-d] [-p] [-z]] [-s] [-q]\n" fprintf(stderr, "usage: dumpstate [-b soundfile] [-e soundfile] [-o file [-d] [-p] [-z]] [-s] [-q]\n" " -o: write to file (instead of stdout)\n" " -o: write to file (instead of stdout)\n" " -d: append date to filename (requires -o)\n" " -d: append date to filename (requires -o)\n" " -z: gzip output (requires -o)\n" " -p: capture screenshot to filename.png (requires -o)\n" " -p: capture screenshot to filename.png (requires -o)\n" " -s: write output to control socket (for init)\n" " -s: write output to control socket (for init)\n" " -b: play sound file instead of vibrate, at beginning of job\n" " -b: play sound file instead of vibrate, at beginning of job\n" Loading @@ -411,7 +410,6 @@ static void vibrate(FILE* vibrator, int ms) { int main(int argc, char *argv[]) { int main(int argc, char *argv[]) { struct sigaction sigact; struct sigaction sigact; int do_add_date = 0; int do_add_date = 0; int do_compress = 0; int do_vibrate = 1; int do_vibrate = 1; char* use_outfile = 0; char* use_outfile = 0; int use_socket = 0; int use_socket = 0; Loading Loading @@ -451,7 +449,6 @@ int main(int argc, char *argv[]) { case 's': use_socket = 1; break; case 's': use_socket = 1; break; case 'v': break; // compatibility no-op case 'v': break; // compatibility no-op case 'q': do_vibrate = 0; break; case 'q': do_vibrate = 0; 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 'B': do_broadcast = 1; break; case '?': printf("\n"); case '?': printf("\n"); Loading Loading @@ -546,10 +543,9 @@ int main(int argc, char *argv[]) { strlcat(screenshot_path, ".png", sizeof(screenshot_path)); strlcat(screenshot_path, ".png", sizeof(screenshot_path)); } } strlcat(path, ".txt", sizeof(path)); strlcat(path, ".txt", sizeof(path)); if (do_compress) strlcat(path, ".gz", sizeof(path)); strlcpy(tmp_path, path, sizeof(tmp_path)); strlcpy(tmp_path, path, sizeof(tmp_path)); strlcat(tmp_path, ".tmp", sizeof(tmp_path)); strlcat(tmp_path, ".tmp", sizeof(tmp_path)); gzip_pid = redirect_to_file(stdout, tmp_path, do_compress); redirect_to_file(stdout, tmp_path); } } dumpstate(); dumpstate(); Loading cmds/dumpstate/dumpstate.h +2 −2 Original line number Original line Diff line number Diff line Loading @@ -43,8 +43,8 @@ void print_properties(); /* redirect output to a service control socket */ /* redirect output to a service control socket */ void redirect_to_socket(FILE *redirect, const char *service); void redirect_to_socket(FILE *redirect, const char *service); /* redirect output to a file, optionally gzipping; returns gzip pid */ /* redirect output to a file */ pid_t redirect_to_file(FILE *redirect, char *path, int gzip_level); void redirect_to_file(FILE *redirect, char *path); /* dump Dalvik and native stack traces, return the trace file location (NULL if none) */ /* dump Dalvik and native stack traces, return the trace file location (NULL if none) */ const char *dump_traces(); const char *dump_traces(); Loading cmds/dumpstate/utils.c +5 −42 Original line number Original line Diff line number Diff line Loading @@ -476,8 +476,8 @@ void redirect_to_socket(FILE *redirect, const char *service) { close(fd); close(fd); } } /* redirect output to a file, optionally gzipping; returns gzip pid (or -1) */ /* redirect output to a file */ pid_t redirect_to_file(FILE *redirect, char *path, int gzip_level) { void redirect_to_file(FILE *redirect, char *path) { char *chp = path; char *chp = path; /* skip initial slash */ /* skip initial slash */ Loading @@ -494,52 +494,15 @@ pid_t redirect_to_file(FILE *redirect, char *path, int gzip_level) { } } } } int fd = open(path, O_WRONLY | O_CREAT | O_TRUNC, S_IRUSR | S_IWUSR | S_IRGRP | S_IROTH); int fd = TEMP_FAILURE_RETRY(open(path, O_WRONLY | O_CREAT | O_TRUNC, S_IRUSR | S_IWUSR | S_IRGRP | S_IROTH)); if (fd < 0) { if (fd < 0) { fprintf(stderr, "%s: %s\n", path, strerror(errno)); fprintf(stderr, "%s: %s\n", path, strerror(errno)); exit(1); exit(1); } } pid_t gzip_pid = -1; TEMP_FAILURE_RETRY(dup2(fd, fileno(redirect))); if (gzip_level > 0) { int fds[2]; if (pipe(fds)) { fprintf(stderr, "pipe: %s\n", strerror(errno)); exit(1); } fflush(redirect); fflush(stdout); gzip_pid = fork(); if (gzip_pid < 0) { fprintf(stderr, "fork: %s\n", strerror(errno)); exit(1); } if (gzip_pid == 0) { dup2(fds[0], STDIN_FILENO); dup2(fd, STDOUT_FILENO); close(fd); close(fds[0]); close(fds[1]); char level[10]; snprintf(level, sizeof(level), "-%d", gzip_level); execlp("gzip", "gzip", level, NULL); fprintf(stderr, "exec(gzip): %s\n", strerror(errno)); _exit(-1); } close(fd); close(fds[0]); fd = fds[1]; } dup2(fd, fileno(redirect)); close(fd); close(fd); return gzip_pid; } } static bool should_dump_native_traces(const char* path) { static bool should_dump_native_traces(const char* path) { Loading Loading
cmds/dumpstate/dumpstate.c +1 −5 Original line number Original line Diff line number Diff line Loading @@ -388,7 +388,6 @@ static void usage() { fprintf(stderr, "usage: dumpstate [-b soundfile] [-e soundfile] [-o file [-d] [-p] [-z]] [-s] [-q]\n" fprintf(stderr, "usage: dumpstate [-b soundfile] [-e soundfile] [-o file [-d] [-p] [-z]] [-s] [-q]\n" " -o: write to file (instead of stdout)\n" " -o: write to file (instead of stdout)\n" " -d: append date to filename (requires -o)\n" " -d: append date to filename (requires -o)\n" " -z: gzip output (requires -o)\n" " -p: capture screenshot to filename.png (requires -o)\n" " -p: capture screenshot to filename.png (requires -o)\n" " -s: write output to control socket (for init)\n" " -s: write output to control socket (for init)\n" " -b: play sound file instead of vibrate, at beginning of job\n" " -b: play sound file instead of vibrate, at beginning of job\n" Loading @@ -411,7 +410,6 @@ static void vibrate(FILE* vibrator, int ms) { int main(int argc, char *argv[]) { int main(int argc, char *argv[]) { struct sigaction sigact; struct sigaction sigact; int do_add_date = 0; int do_add_date = 0; int do_compress = 0; int do_vibrate = 1; int do_vibrate = 1; char* use_outfile = 0; char* use_outfile = 0; int use_socket = 0; int use_socket = 0; Loading Loading @@ -451,7 +449,6 @@ int main(int argc, char *argv[]) { case 's': use_socket = 1; break; case 's': use_socket = 1; break; case 'v': break; // compatibility no-op case 'v': break; // compatibility no-op case 'q': do_vibrate = 0; break; case 'q': do_vibrate = 0; 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 'B': do_broadcast = 1; break; case '?': printf("\n"); case '?': printf("\n"); Loading Loading @@ -546,10 +543,9 @@ int main(int argc, char *argv[]) { strlcat(screenshot_path, ".png", sizeof(screenshot_path)); strlcat(screenshot_path, ".png", sizeof(screenshot_path)); } } strlcat(path, ".txt", sizeof(path)); strlcat(path, ".txt", sizeof(path)); if (do_compress) strlcat(path, ".gz", sizeof(path)); strlcpy(tmp_path, path, sizeof(tmp_path)); strlcpy(tmp_path, path, sizeof(tmp_path)); strlcat(tmp_path, ".tmp", sizeof(tmp_path)); strlcat(tmp_path, ".tmp", sizeof(tmp_path)); gzip_pid = redirect_to_file(stdout, tmp_path, do_compress); redirect_to_file(stdout, tmp_path); } } dumpstate(); dumpstate(); Loading
cmds/dumpstate/dumpstate.h +2 −2 Original line number Original line Diff line number Diff line Loading @@ -43,8 +43,8 @@ void print_properties(); /* redirect output to a service control socket */ /* redirect output to a service control socket */ void redirect_to_socket(FILE *redirect, const char *service); void redirect_to_socket(FILE *redirect, const char *service); /* redirect output to a file, optionally gzipping; returns gzip pid */ /* redirect output to a file */ pid_t redirect_to_file(FILE *redirect, char *path, int gzip_level); void redirect_to_file(FILE *redirect, char *path); /* dump Dalvik and native stack traces, return the trace file location (NULL if none) */ /* dump Dalvik and native stack traces, return the trace file location (NULL if none) */ const char *dump_traces(); const char *dump_traces(); Loading
cmds/dumpstate/utils.c +5 −42 Original line number Original line Diff line number Diff line Loading @@ -476,8 +476,8 @@ void redirect_to_socket(FILE *redirect, const char *service) { close(fd); close(fd); } } /* redirect output to a file, optionally gzipping; returns gzip pid (or -1) */ /* redirect output to a file */ pid_t redirect_to_file(FILE *redirect, char *path, int gzip_level) { void redirect_to_file(FILE *redirect, char *path) { char *chp = path; char *chp = path; /* skip initial slash */ /* skip initial slash */ Loading @@ -494,52 +494,15 @@ pid_t redirect_to_file(FILE *redirect, char *path, int gzip_level) { } } } } int fd = open(path, O_WRONLY | O_CREAT | O_TRUNC, S_IRUSR | S_IWUSR | S_IRGRP | S_IROTH); int fd = TEMP_FAILURE_RETRY(open(path, O_WRONLY | O_CREAT | O_TRUNC, S_IRUSR | S_IWUSR | S_IRGRP | S_IROTH)); if (fd < 0) { if (fd < 0) { fprintf(stderr, "%s: %s\n", path, strerror(errno)); fprintf(stderr, "%s: %s\n", path, strerror(errno)); exit(1); exit(1); } } pid_t gzip_pid = -1; TEMP_FAILURE_RETRY(dup2(fd, fileno(redirect))); if (gzip_level > 0) { int fds[2]; if (pipe(fds)) { fprintf(stderr, "pipe: %s\n", strerror(errno)); exit(1); } fflush(redirect); fflush(stdout); gzip_pid = fork(); if (gzip_pid < 0) { fprintf(stderr, "fork: %s\n", strerror(errno)); exit(1); } if (gzip_pid == 0) { dup2(fds[0], STDIN_FILENO); dup2(fd, STDOUT_FILENO); close(fd); close(fds[0]); close(fds[1]); char level[10]; snprintf(level, sizeof(level), "-%d", gzip_level); execlp("gzip", "gzip", level, NULL); fprintf(stderr, "exec(gzip): %s\n", strerror(errno)); _exit(-1); } close(fd); close(fds[0]); fd = fds[1]; } dup2(fd, fileno(redirect)); close(fd); close(fd); return gzip_pid; } } static bool should_dump_native_traces(const char* path) { static bool should_dump_native_traces(const char* path) { Loading