package com.termux.shared.shell; import com.termux.terminal.TerminalBuffer; import com.termux.terminal.TerminalEmulator; import com.termux.terminal.TerminalSession; import java.lang.reflect.Field; public class ShellUtils { public static int getPid(Process p) { try { Field f = p.getClass().getDeclaredField("pid"); f.setAccessible(true); try { return f.getInt(p); } finally { f.setAccessible(false); } } catch (Throwable e) { return -1; } } public static String getExecutableBasename(String executable) { if (executable == null) return null; int lastSlash = executable.lastIndexOf('/'); return (lastSlash == -1) ? executable : executable.substring(lastSlash + 1); } public static String getTerminalSessionTranscriptText(TerminalSession terminalSession, boolean linesJoined, boolean trim) { if (terminalSession == null) return null; TerminalEmulator terminalEmulator = terminalSession.getEmulator(); if (terminalEmulator == null) return null; TerminalBuffer terminalBuffer = terminalEmulator.getScreen(); if (terminalBuffer == null) return null; String transcriptText; if (linesJoined) transcriptText = terminalBuffer.getTranscriptTextWithFullLinesJoined(); else transcriptText = terminalBuffer.getTranscriptTextWithoutJoinedLines(); if (transcriptText == null) return null; if (trim) transcriptText = transcriptText.trim(); return transcriptText; } }