From 108e4cb3916895c4e9a8702b5cd59617796e43a0 Mon Sep 17 00:00:00 2001 From: agnostic-apollo Date: Sat, 27 Feb 2021 13:14:13 +0500 Subject: [PATCH] Fix workdir logic in RunCommandService This commit fixes the workdir logic to not send `EXTRA_CURRENT_WORKING_DIRECTORY` extra to `TermuxService` if workdir is empty, since that will raise `No such file or directory` exceptions if `cwd` is empty when targeting sdk `29`. --- app/src/main/java/com/termux/app/RunCommandService.java | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/app/src/main/java/com/termux/app/RunCommandService.java b/app/src/main/java/com/termux/app/RunCommandService.java index 0cee3be6..4b01d660 100644 --- a/app/src/main/java/com/termux/app/RunCommandService.java +++ b/app/src/main/java/com/termux/app/RunCommandService.java @@ -104,14 +104,18 @@ public class RunCommandService extends Service { return Service.START_NOT_STICKY; } - Uri programUri = new Uri.Builder().scheme("com.termux.file").path(getExpandedTermuxPath(intent.getStringExtra(RUN_COMMAND_PATH))).build(); + Uri programUri = new Uri.Builder().scheme("com.termux.file").path(getExpandedTermuxPath(intent.getStringExtra(RUN_COMMAND_PATH))).build(); Intent execIntent = new Intent(TermuxService.ACTION_EXECUTE, programUri); execIntent.setClass(this, TermuxService.class); execIntent.putExtra(TermuxService.EXTRA_ARGUMENTS, intent.getStringArrayExtra(RUN_COMMAND_ARGUMENTS)); - execIntent.putExtra(TermuxService.EXTRA_CURRENT_WORKING_DIRECTORY, getExpandedTermuxPath(intent.getStringExtra(RUN_COMMAND_WORKDIR))); execIntent.putExtra(TermuxService.EXTRA_EXECUTE_IN_BACKGROUND, intent.getBooleanExtra(RUN_COMMAND_BACKGROUND, false)); + String workingDirectory = intent.getStringExtra(RUN_COMMAND_WORKDIR); + if (workingDirectory != null && !workingDirectory.isEmpty()) { + execIntent.putExtra(TermuxService.EXTRA_CURRENT_WORKING_DIRECTORY, getExpandedTermuxPath(workingDirectory)); + } + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) { this.startForegroundService(execIntent); } else {