Johannes, Takashi,

On Dec 15 14:37, Johannes Schindelin via GitGitGadget wrote:
> From: Johannes Schindelin <[email protected]>
> 
> In 0a9ee3ea23 (Allow executing Windows Store's "app execution aliases",
> 2021-03-12), I introduced support for calling Microsoft Store
> applications.
> 
> However, it was reported several times (first in
> https://inbox.sourceware.org/cygwin/CAAM_cieBo_M76sqZMGgF+tXxswvT=juhl_pshff+arv9p1e...@mail.gmail.com
> and then also in
> https://github.com/msys2/MSYS2-packages/issues/1943#issuecomment-3467583078)
> that there is something amiss: The standard handles are not working as
> expected, as they are not connected to the terminal at all (and hence
> the application seems to "hang").
> 
> The culprit is the `is_console_app()` function which assumes that it can
> simply open the first few bytes of the `.exe` file to read the PE header
> in order to determine whether it is a console application or not.
> 
> For app execution aliases, already creating a regular file handle for
> reading will fail. Let's introduce some special handling for the exact
> error code returned in those instances, and try to read the symlink
> target instead (taking advantage of the code I introduced in 0631c6644e
> (Cygwin: Treat Windows Store's "app execution aliases" as symbolic
> links, 2021-03-22) to treat app execution aliases like symbolic links).
> 
> Signed-off-by: Johannes Schindelin <[email protected]>
> ---
>  winsup/cygwin/fhandler/termios.cc | 13 +++++++++++++
>  1 file changed, 13 insertions(+)
> 
> diff --git a/winsup/cygwin/fhandler/termios.cc 
> b/winsup/cygwin/fhandler/termios.cc
> index 5505bf416..6edd5be9b 100644
> --- a/winsup/cygwin/fhandler/termios.cc
> +++ b/winsup/cygwin/fhandler/termios.cc
> @@ -710,6 +710,19 @@ is_console_app (const WCHAR *filename)
>    HANDLE h;
>    h = CreateFileW (filename, GENERIC_READ, FILE_SHARE_READ,
>                  NULL, OPEN_EXISTING, 0, NULL);
> +  if (h == INVALID_HANDLE_VALUE && GetLastError () == ERROR_CANT_ACCESS_FILE)
> +    {
> +      UNICODE_STRING ustr;
> +      RtlInitUnicodeString (&ustr, filename);
> +      path_conv pc (&ustr, PC_SYM_FOLLOW);
> +      if (!pc.error && pc.exists ())
> +     {
> +       tmp_pathbuf tp;
> +       PWCHAR path = tp.w_get ();
> +       h = CreateFileW (pc.get_wide_win32_path (path), GENERIC_READ,
> +                        FILE_SHARE_READ, NULL, OPEN_EXISTING, 0, NULL);
> +     }
> +    }
>    if (h == INVALID_HANDLE_VALUE)
>      return false;
>    char buf[1024];

Erm... does this patch collide with
https://sourceware.org/pipermail/cygwin-patches/2025q4/014421.html
by any chance?  Are you both trying to fix the same problem somehow?


Thanks,
Corinna

Reply via email to