Hi,

This is a bit old, but this is apparently a Termux specific issue,
which has just been fixed (but the fix isn't available yet, so that
I couldn't test).

On 2023-11-20 03:43:31 +0900, Yasuhito FUTATSUKI wrote:
> Hello,
> 
> On 2023/11/19 11:34, Vincent Lefevre wrote:
> > I've reported the following bug on
> > 
> >    https://github.com/termux/termux-packages/issues/18537
> > 
> > Since this is specific to svn, I'm reporting it here too.
> > In particular, I'm wondering what special thing svn does
> > to trigger the failure compared to the shell.
> > 
> > With "svn diff", I use the --diff-cmd option with my own diff utility,
> > which is a script that runs an interpreter using /usr/bin/env. I use
> > this config on various machines, including on my Android phones in
> > Termux. After the upgrade to Android 14, this is no longer working.
> 
> "svn diff --diff-cmd ..." on Unix platforms uses execvp(3) through
> svn_io_run_diff2(), svn_io_run_cmd() (inherit == TRUE),
> svn_io_start_cmd3(), and apr_proc_create(), and no special
> treatment about environment variables.

The execvp() function wasn't wrapped by Termux to fix paths. It seems
that the issue is that /usr/bin/env doesn't exist, hence the need for
a wrapper to use the actual pathname. However, this doesn't explain
why the standard execvp() was working with Android 13.

> [[[
> #!/bin/sh
> if [ ! -n ${ZSH_VERSION} ]; then
>     exec zsh "$0" "$@"
> fi
> ...
> ]]]

I'm currently using

#!/bin/sh
[ -n "$ZSH_VERSION" ] || exec zsh -f -- "$0" ${1+"$@"}

-- 
Vincent Lefèvre <vinc...@vinc17.net> - Web: <https://www.vinc17.net/>
100% accessible validated (X)HTML - Blog: <https://www.vinc17.net/blog/>
Work: CR INRIA - computer arithmetic / AriC project (LIP, ENS-Lyon)

Reply via email to