On Wed, 17 Sep 2025 19:04:02 GMT, Magnus Ihse Bursie <[email protected]> wrote:

>> Passing arguments on Windows is tricky. We faced a similar challenge 
>> implementing shims in the Windows JDK installer. See 
>> [JDK-8266473](https://bugs.openjdk.org/browse/JDK-8266473), 
>> [JDK-8296383](https://bugs.openjdk.org/browse/JDK-8296383), and 
>> [JDK-8309489](https://bugs.openjdk.org/browse/JDK-8309489). All three CRs 
>> about the same issue until we finally fixed it properly.
>> 
>> You need to encode command line args in a string suitable for passing to 
>> `CreateProcess()` function. The decoding algorithm is described at 
>> https://learn.microsoft.com/en-us/cpp/c-language/parsing-c-command-line-arguments?view=msvc-170&redirectedfrom=MSDN.
>>  You need to implement the reverse algorithm. It is not officially 
>> documented at MSDN. Fortunately, somebody contributed it to the blog post at 
>> https://learn.microsoft.com/en-us/archive/blogs/twistylittlepassagesallalike/everyone-quotes-command-line-arguments-the-wrong-way.
>
> Yes, I've read that blog post, tried to implement it and credited in the 
> source code. :-)
> 
> The discussion was if the executable name should be treated differently than 
> the command line arguments. I've added code do explicitly do this, but I 
> don't any longer recall why (this was originally developed back in like May 
> or April, it's just been sitting on the shelf waiting for me to get to the 
> finish line). I do recall that I ran into problems when I treated the 
> executable name as any other argument though, so *something* special needs to 
> be done about it.
> 
> But reading this blog post again, it seems that it claims that the program 
> name should be quoted the same way as well. I'll try to go back in time and 
> check my notes, command line histories and old commits to see if I can figure 
> out what kind of issue I ran into. Otherwise the correct solution seem to be 
> to quote the program name the same way.

Oh, my bad :) I didn't dive into the source code. I came across this discussion 
and recalled a similar issue in the installer code.

We quote the program name in the installer shims.

-------------

PR Review Comment: https://git.openjdk.org/jdk/pull/24380#discussion_r2356541157

Reply via email to