Merge "Remove -z option."
This commit is contained in:
commit
8511b3ae5e
@ -366,7 +366,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"
|
||||||
@ -389,7 +388,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;
|
||||||
@ -429,7 +427,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");
|
||||||
@ -524,10 +521,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();
|
||||||
|
@ -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();
|
||||||
|
@ -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 */
|
||||||
@ -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…
Reference in New Issue
Block a user