From ba7026939863bb932aaa736c8060dfd34ec2f585 Mon Sep 17 00:00:00 2001 From: topjohnwu Date: Fri, 16 Nov 2018 01:49:15 -0500 Subject: [PATCH] Directly print output over socket --- native/jni/magiskhide/hide_utils.cpp | 7 ++++--- native/jni/magiskhide/magiskhide.cpp | 12 ++---------- 2 files changed, 6 insertions(+), 13 deletions(-) diff --git a/native/jni/magiskhide/hide_utils.cpp b/native/jni/magiskhide/hide_utils.cpp index 0ab7d3993..539ece8da 100644 --- a/native/jni/magiskhide/hide_utils.cpp +++ b/native/jni/magiskhide/hide_utils.cpp @@ -247,10 +247,11 @@ bool init_list() { } void ls_list(int client) { - write_int(client, DAEMON_SUCCESS); - write_int(client, hide_list.size()); + FILE *out = fdopen(recv_fd(client), "a"); for (auto &s : hide_list) - write_string(client, s); + fprintf(out, "%s\n", s.c_str()); + fclose(out); + write_int(client, DAEMON_SUCCESS); close(client); } diff --git a/native/jni/magiskhide/magiskhide.cpp b/native/jni/magiskhide/magiskhide.cpp index 8edf514e9..704f8b1d0 100644 --- a/native/jni/magiskhide/magiskhide.cpp +++ b/native/jni/magiskhide/magiskhide.cpp @@ -97,6 +97,8 @@ int magiskhide_main(int argc, char *argv[]) { write_int(fd, req); if (req == ADD_HIDELIST || req == RM_HIDELIST) write_string(fd, argv[2]); + if (req == LS_HIDELIST) + send_fd(fd, STDOUT_FILENO); // Get response int code = read_int(fd); @@ -129,15 +131,5 @@ int magiskhide_main(int argc, char *argv[]) { return DAEMON_ERROR; } - if (code == DAEMON_SUCCESS && req == LS_HIDELIST) { - int cnt = read_int(fd); - for (int i = 0; i < cnt; ++i) { - char *s = read_string(fd); - printf("%s\n", s); - free(s); - } - } - close(fd); - return req == HIDE_STATUS ? (code == HIDE_IS_ENABLED ? 0 : 1) : code != DAEMON_SUCCESS; }