Skip to content

Commit 80858ba

Browse files
Fix path expansion in RunCommandService
This commit fixes `getExpandedTermuxPath()` (previously `parsePath()`) not expanding path if exactly `$PREFIX` is passed and addition of extra trailing slashes in some cases.
1 parent 00194eb commit 80858ba

File tree

1 file changed

+7
-5
lines changed

1 file changed

+7
-5
lines changed

app/src/main/java/com/termux/app/RunCommandService.java

+7-5
Original file line numberDiff line numberDiff line change
@@ -104,12 +104,12 @@ public int onStartCommand(Intent intent, int flags, int startId) {
104104
return Service.START_NOT_STICKY;
105105
}
106106

107-
Uri programUri = new Uri.Builder().scheme("com.termux.file").path(parsePath(intent.getStringExtra(RUN_COMMAND_PATH))).build();
107+
Uri programUri = new Uri.Builder().scheme("com.termux.file").path(getExpandedTermuxPath(intent.getStringExtra(RUN_COMMAND_PATH))).build();
108108

109109
Intent execIntent = new Intent(TermuxService.ACTION_EXECUTE, programUri);
110110
execIntent.setClass(this, TermuxService.class);
111111
execIntent.putExtra(TermuxService.EXTRA_ARGUMENTS, intent.getStringArrayExtra(RUN_COMMAND_ARGUMENTS));
112-
execIntent.putExtra(TermuxService.EXTRA_CURRENT_WORKING_DIRECTORY, parsePath(intent.getStringExtra(RUN_COMMAND_WORKDIR)));
112+
execIntent.putExtra(TermuxService.EXTRA_CURRENT_WORKING_DIRECTORY, getExpandedTermuxPath(intent.getStringExtra(RUN_COMMAND_WORKDIR)));
113113
execIntent.putExtra(TermuxService.EXTRA_EXECUTE_IN_BACKGROUND, intent.getBooleanExtra(RUN_COMMAND_BACKGROUND, false));
114114

115115
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
@@ -188,10 +188,12 @@ private boolean allowExternalApps() {
188188
}
189189

190190
/** Replace "$PREFIX/" or "~/" prefix with termux absolute paths */
191-
private String parsePath(String path) {
191+
public static String getExpandedTermuxPath(String path) {
192192
if(path != null && !path.isEmpty()) {
193-
path = path.replaceAll("^\\$PREFIX\\/", TermuxService.PREFIX_PATH + "/");
194-
path = path.replaceAll("^~\\/", TermuxService.HOME_PATH + "/");
193+
path = path.replaceAll("^\\$PREFIX$", TermuxService.PREFIX_PATH);
194+
path = path.replaceAll("^\\$PREFIX/", TermuxService.PREFIX_PATH + "/");
195+
path = path.replaceAll("^~/$", TermuxService.HOME_PATH);
196+
path = path.replaceAll("^~/", TermuxService.HOME_PATH + "/");
195197
}
196198

197199
return path;

0 commit comments

Comments
 (0)