From 445da0c4eaf1c699b10c5963f95440df6c8abdce Mon Sep 17 00:00:00 2001 From: Fredrik Fornwall Date: Sun, 14 Jul 2019 20:26:16 +0200 Subject: [PATCH] Fix problem with sharing large terminal transcript Fixes #1166. --- .../main/java/com/termux/app/TermuxActivity.java | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) diff --git a/app/src/main/java/com/termux/app/TermuxActivity.java b/app/src/main/java/com/termux/app/TermuxActivity.java index 8297231b..ba053a1e 100644 --- a/app/src/main/java/com/termux/app/TermuxActivity.java +++ b/app/src/main/java/com/termux/app/TermuxActivity.java @@ -722,7 +722,18 @@ public final class TermuxActivity extends Activity implements ServiceConnection if (session != null) { Intent intent = new Intent(Intent.ACTION_SEND); intent.setType("text/plain"); - intent.putExtra(Intent.EXTRA_TEXT, session.getEmulator().getScreen().getTranscriptText().trim()); + String transcriptText = session.getEmulator().getScreen().getTranscriptText().trim(); + // See https://github.com/termux/termux-app/issues/1166. + final int MAX_LENGTH = 100_000; + if (transcriptText.length() > MAX_LENGTH) { + int cutOffIndex = transcriptText.length() - MAX_LENGTH; + int nextNewlineIndex = transcriptText.indexOf('\n', cutOffIndex); + if (nextNewlineIndex != -1 && nextNewlineIndex != transcriptText.length() - 1) { + cutOffIndex = nextNewlineIndex + 1; + } + transcriptText = transcriptText.substring(cutOffIndex).trim(); + } + intent.putExtra(Intent.EXTRA_TEXT, transcriptText); intent.putExtra(Intent.EXTRA_SUBJECT, getString(R.string.share_transcript_title)); startActivity(Intent.createChooser(intent, getString(R.string.share_transcript_chooser_title))); }