Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 1d24efe4 authored by Christopher Ferris's avatar Christopher Ferris Committed by Android Git Automerger
Browse files

am 34e32466: am 8511b3ae: Merge "Remove -z option."

* commit '34e32466':
  Remove -z option.
parents 2f15949e 34e32466
Loading
Loading
Loading
Loading
+1 −5
Original line number Original line Diff line number Diff line
@@ -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"
@@ -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;
@@ -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");
@@ -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();
+2 −2
Original line number Original line Diff line number Diff line
@@ -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();
+5 −42
Original line number Original line Diff line number Diff line
@@ -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) {