On Thu, 20 Apr 2023 18:39:59 GMT, Jorn Vernee <[email protected]> wrote:
> Simpler reproducer:
>
> ```
> bash -x ./make/scripts/fixpath.sh print '-Djava.library.path=/mnt/h/xyz
> --add-exports=java.base/jdk.internal.org.objectweb.asm=ALL-UNNAMED'
> ```
>
> Shows:
>
> ```
> + print_command_line '-Djava.library.path=/mnt/h/xyz
> --add-exports=java.base/jdk.internal.org.objectweb.asm=ALL-UNNAMED'
> + converted_args=
> + for arg in "$@"
> + [[ -Djava.library.path=/mnt/h/xyz
> --add-exports=java.base/jdk.internal.org.objectweb.asm=ALL-UNNAMED =~ ^@(.*$)
> ]]
> + convert_path '-Djava.library.path=/mnt/h/xyz
> --add-exports=java.base/jdk.internal.org.objectweb.asm=ALL-UNNAMED'
> + [[ -Djava.library.path=/mnt/h/xyz
> --add-exports=java.base/jdk.internal.org.objectweb.asm=ALL-UNNAMED =~ : ]]
> + arg='-Djava.library.path=/mnt/h/xyz
> --add-exports=java.base/jdk.internal.org.objectweb.asm=ALL-UNNAMED'
> + winpath=
> + [[ -Djava.library.path=/mnt/h/xyz
> --add-exports=java.base/jdk.internal.org.objectweb.asm=ALL-UNNAMED =~
> ^([^/]*|-[^:=]*[:=]|.*file://|/[a-zA-Z:]{1,3}:?)(/mnt/)([a-z])(/[^/]+.*$) ]]
> + prefix=-Djava.library.path=
> + winpath='h:/xyz
> --add-exports=java.base/jdk.internal.org.objectweb.asm=ALL-UNNAMED'
> + [[ 20 -eq 2 ]]
> + [[ '' != true ]]
> + winpath='h:\xyz
> --add-exports=java.base\jdk.internal.org.objectweb.asm=ALL-UNNAMED'
> + [[ h:\xyz
> --add-exports=java.base\jdk.internal.org.objectweb.asm=ALL-UNNAMED != '' ]]
> + result='-Djava.library.path=h:\xyz
> --add-exports=java.base\jdk.internal.org.objectweb.asm=ALL-UNNAMED'
> ```
>
> i.e. fixpath thinks all of the stuff after `/mnt/h` is a part of the path
Do you know if fixpath will take unix-style path with spaces as input? If it
should reject spaces, then we can run fixpath before quote and reject this
quoted argument with space, which is known to be absent in unix paths.
-------------
PR Comment: https://git.openjdk.org/jdk/pull/13550#issuecomment-1516973910