Loading cmds/incident/main.cpp +17 −15 Original line number Original line Diff line number Diff line Loading @@ -52,9 +52,13 @@ public: virtual Status onReportServiceStatus(const String16& service, int32_t status); virtual Status onReportServiceStatus(const String16& service, int32_t status); virtual Status onReportFinished(); virtual Status onReportFinished(); virtual Status onReportFailed(); virtual Status onReportFailed(); int getExitCodeOrElse(int defaultCode); private: int mExitCode; }; }; StatusListener::StatusListener() StatusListener::StatusListener(): mExitCode(-1) { { } } Loading Loading @@ -89,7 +93,7 @@ StatusListener::onReportFinished() { { fprintf(stderr, "done\n"); fprintf(stderr, "done\n"); ALOGD("done\n"); ALOGD("done\n"); exit(0); mExitCode = 0; return Status::ok(); return Status::ok(); } } Loading @@ -98,10 +102,15 @@ StatusListener::onReportFailed() { { fprintf(stderr, "failed\n"); fprintf(stderr, "failed\n"); ALOGD("failed\n"); ALOGD("failed\n"); exit(1); mExitCode = 1; return Status::ok(); return Status::ok(); } } int StatusListener::getExitCodeOrElse(int defaultCode) { return mExitCode == -1 ? defaultCode : mExitCode; } // ================================================================================ // ================================================================================ static void section_list(FILE* out) { static void section_list(FILE* out) { IncidentSection sections[INCIDENT_SECTION_COUNT]; IncidentSection sections[INCIDENT_SECTION_COUNT]; Loading Loading @@ -201,20 +210,13 @@ parse_receiver_arg(const string& arg, string* pkg, string* cls) static int static int stream_output(const int read_fd, const int write_fd) { stream_output(const int read_fd, const int write_fd) { while (true) { while (true) { uint8_t buf[4096]; int amt = splice(read_fd, NULL, write_fd, NULL, 4096, 0); ssize_t amt = TEMP_FAILURE_RETRY(read(read_fd, buf, sizeof(buf))); if (amt < 0) { if (amt < 0) { break; } else if (amt == 0) { break; } ssize_t wamt = TEMP_FAILURE_RETRY(write(write_fd, buf, amt)); if (wamt != amt) { return errno; return errno; } else if (amt == 0) { return 0; } } } } return 0; } } // ================================================================================ // ================================================================================ Loading Loading @@ -384,7 +386,7 @@ main(int argc, char** argv) // Wait for the result and print out the data they send. // Wait for the result and print out the data they send. //IPCThreadState::self()->joinThreadPool(); //IPCThreadState::self()->joinThreadPool(); return stream_output(fds[0], STDOUT_FILENO); return listener->getExitCodeOrElse(stream_output(fds[0], STDOUT_FILENO)); } else if (destination == DEST_DUMPSTATE) { } else if (destination == DEST_DUMPSTATE) { // Call into the service // Call into the service sp<StatusListener> listener(new StatusListener()); sp<StatusListener> listener(new StatusListener()); Loading @@ -393,7 +395,7 @@ main(int argc, char** argv) fprintf(stderr, "reportIncident returned \"%s\"\n", status.toString8().string()); fprintf(stderr, "reportIncident returned \"%s\"\n", status.toString8().string()); return 1; return 1; } } return stream_output(fds[0], STDOUT_FILENO); return listener->getExitCodeOrElse(stream_output(fds[0], STDOUT_FILENO)); } else { } else { status = service->reportIncident(args); status = service->reportIncident(args); if (!status.isOk()) { if (!status.isOk()) { Loading Loading
cmds/incident/main.cpp +17 −15 Original line number Original line Diff line number Diff line Loading @@ -52,9 +52,13 @@ public: virtual Status onReportServiceStatus(const String16& service, int32_t status); virtual Status onReportServiceStatus(const String16& service, int32_t status); virtual Status onReportFinished(); virtual Status onReportFinished(); virtual Status onReportFailed(); virtual Status onReportFailed(); int getExitCodeOrElse(int defaultCode); private: int mExitCode; }; }; StatusListener::StatusListener() StatusListener::StatusListener(): mExitCode(-1) { { } } Loading Loading @@ -89,7 +93,7 @@ StatusListener::onReportFinished() { { fprintf(stderr, "done\n"); fprintf(stderr, "done\n"); ALOGD("done\n"); ALOGD("done\n"); exit(0); mExitCode = 0; return Status::ok(); return Status::ok(); } } Loading @@ -98,10 +102,15 @@ StatusListener::onReportFailed() { { fprintf(stderr, "failed\n"); fprintf(stderr, "failed\n"); ALOGD("failed\n"); ALOGD("failed\n"); exit(1); mExitCode = 1; return Status::ok(); return Status::ok(); } } int StatusListener::getExitCodeOrElse(int defaultCode) { return mExitCode == -1 ? defaultCode : mExitCode; } // ================================================================================ // ================================================================================ static void section_list(FILE* out) { static void section_list(FILE* out) { IncidentSection sections[INCIDENT_SECTION_COUNT]; IncidentSection sections[INCIDENT_SECTION_COUNT]; Loading Loading @@ -201,20 +210,13 @@ parse_receiver_arg(const string& arg, string* pkg, string* cls) static int static int stream_output(const int read_fd, const int write_fd) { stream_output(const int read_fd, const int write_fd) { while (true) { while (true) { uint8_t buf[4096]; int amt = splice(read_fd, NULL, write_fd, NULL, 4096, 0); ssize_t amt = TEMP_FAILURE_RETRY(read(read_fd, buf, sizeof(buf))); if (amt < 0) { if (amt < 0) { break; } else if (amt == 0) { break; } ssize_t wamt = TEMP_FAILURE_RETRY(write(write_fd, buf, amt)); if (wamt != amt) { return errno; return errno; } else if (amt == 0) { return 0; } } } } return 0; } } // ================================================================================ // ================================================================================ Loading Loading @@ -384,7 +386,7 @@ main(int argc, char** argv) // Wait for the result and print out the data they send. // Wait for the result and print out the data they send. //IPCThreadState::self()->joinThreadPool(); //IPCThreadState::self()->joinThreadPool(); return stream_output(fds[0], STDOUT_FILENO); return listener->getExitCodeOrElse(stream_output(fds[0], STDOUT_FILENO)); } else if (destination == DEST_DUMPSTATE) { } else if (destination == DEST_DUMPSTATE) { // Call into the service // Call into the service sp<StatusListener> listener(new StatusListener()); sp<StatusListener> listener(new StatusListener()); Loading @@ -393,7 +395,7 @@ main(int argc, char** argv) fprintf(stderr, "reportIncident returned \"%s\"\n", status.toString8().string()); fprintf(stderr, "reportIncident returned \"%s\"\n", status.toString8().string()); return 1; return 1; } } return stream_output(fds[0], STDOUT_FILENO); return listener->getExitCodeOrElse(stream_output(fds[0], STDOUT_FILENO)); } else { } else { status = service->reportIncident(args); status = service->reportIncident(args); if (!status.isOk()) { if (!status.isOk()) { Loading