From 957896fd630d32e81aaa4d1433aface19d9399fc Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=8D=97=E5=AE=AB=E9=9B=AA=E7=8F=8A?= Date: Sat, 25 Sep 2021 13:57:51 +0800 Subject: [PATCH] [core] Use fd instead of realpath (#1170) Co-authored-by: LoveSy --- .../java/org/lsposed/lspd/service/LogcatService.java | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/core/src/main/java/org/lsposed/lspd/service/LogcatService.java b/core/src/main/java/org/lsposed/lspd/service/LogcatService.java index cdf1b1b2..dd0a092c 100644 --- a/core/src/main/java/org/lsposed/lspd/service/LogcatService.java +++ b/core/src/main/java/org/lsposed/lspd/service/LogcatService.java @@ -36,11 +36,16 @@ public class LogcatService implements Runnable { @SuppressWarnings("unused") private int refreshFd(boolean isVerboseLog) { try { - File log = isVerboseLog ? (verboseLog = ConfigFileManager.getNewVerboseLogPath()) : - (modulesLog = ConfigFileManager.getNewModulesLogPath()); + File log = isVerboseLog ? ConfigFileManager.getNewVerboseLogPath() : ConfigFileManager.getNewModulesLogPath(); Log.i(TAG, "New " + (isVerboseLog ? "verbose" : "modules") + " log file: " + log); - return ParcelFileDescriptor.open(log, mode).detachFd(); + int fd = ParcelFileDescriptor.open(log, mode).detachFd(); + var fdFile = new File("/proc/self/fd/" + fd); + if (isVerboseLog) verboseLog = fdFile; + else modulesLog = fdFile; + return fd; } catch (IOException e) { + if (isVerboseLog) verboseLog = null; + else modulesLog = null; Log.w(TAG, "someone chattr +i ?", e); return -1; }