| delorie.com/archives/browse.cgi | search |
| X-Recipient: | archive-cygwin AT delorie DOT com |
| X-Original-To: | cygwin AT cygwin DOT com |
| Delivered-To: | cygwin AT cygwin DOT com |
| DMARC-Filter: | OpenDMARC Filter v1.4.1 sourceware.org 8221E3858419 |
| Authentication-Results: | sourceware.org; |
| dmarc=fail (p=none dis=none) header.from=nifty.ne.jp | |
| Authentication-Results: | sourceware.org; spf=fail smtp.mailfrom=nifty.ne.jp |
| DKIM-Filter: | OpenDKIM Filter v2.10.3 conssluserg-02.nifty.com 21KNuLHm010895 |
| DKIM-Signature: | v=1; a=rsa-sha256; c=relaxed/relaxed; d=nifty.ne.jp; |
| s=dec2015msa; t=1645401381; | |
| bh=TXCJKWq9/Md4WwX0qeTkl8Apjmtr7kAgt4F1kIZZqko=; | |
| h=Date:From:To:Subject:In-Reply-To:References:From; | |
| b=gFe4wLBBAFrTCz4ZkMQ3TLa9qyGHl629uUp/ov8+EGPoyQcjTucDj2zI15CCgA8tQ | |
| GX05z5a1SKVvol7j1V8MILMOL4fY0L+j77Cm9XypQMZfWLohKyLXWys8ihSkCrkh3z | |
| WUMfkUczStamtSfCU0eDYe07TTIy3KOD3qdq/KkOikOMGT/3Ug9COmtma/q8coSYlv | |
| wH4oaikqK7Y7YsqijaLtNefOxpTx7OY48QzVybzA6nyK4PWt7y+lkAM/xVhUCrpuVf | |
| hEchjZnyCEtLBC8igULkTQ1+pucp+aa7MaTRp+4oO0+Sxg3kIerfLJ/dxOYZMoUoPb | |
| q35lsSnH39pzA== | |
| X-Nifty-SrcIP: | [119.150.36.16] |
| Date: | Mon, 21 Feb 2022 08:56:29 +0900 |
| From: | Takashi Yano <takashi DOT yano AT nifty DOT ne DOT jp> |
| To: | cygwin AT cygwin DOT com |
| Subject: | Re: bash from local mounted drive with subst command |
| Message-Id: | <20220221085629.db8678da50910b5255981705@nifty.ne.jp> |
| In-Reply-To: | <20220221084152.d4ffc040ec085f001f1fad0d@nifty.ne.jp> |
| References: | <CACR4mKVj1SAO04iFOukMKEkD0YNUUD=x3Gh4Ypz8TQaPYx=6TA AT mail DOT gmail DOT com> |
| <20220221084152 DOT d4ffc040ec085f001f1fad0d AT nifty DOT ne DOT jp> | |
| X-Mailer: | Sylpheed 3.7.0 (GTK+ 2.24.30; i686-pc-mingw32) |
| Mime-Version: | 1.0 |
| X-Spam-Status: | No, score=-4.5 required=5.0 tests=BAYES_00, DKIM_SIGNED, |
| DKIM_VALID, DKIM_VALID_AU, DKIM_VALID_EF, NICE_REPLY_A, RCVD_IN_DNSWL_NONE, | |
| RCVD_IN_MSPIKE_H2, SPF_HELO_NONE, SPF_PASS, TXREP, | |
| T_SCC_BODY_TEXT_LINE autolearn=ham autolearn_force=no version=3.4.4 | |
| X-Spam-Checker-Version: | SpamAssassin 3.4.4 (2020-01-24) on |
| server2.sourceware.org | |
| X-BeenThere: | cygwin AT cygwin DOT com |
| X-Mailman-Version: | 2.1.29 |
| List-Id: | General Cygwin discussions and problem reports <cygwin.cygwin.com> |
| List-Unsubscribe: | <https://cygwin.com/mailman/options/cygwin>, |
| <mailto:cygwin-request AT cygwin DOT com?subject=unsubscribe> | |
| List-Archive: | <https://cygwin.com/pipermail/cygwin/> |
| List-Post: | <mailto:cygwin AT cygwin DOT com> |
| List-Help: | <mailto:cygwin-request AT cygwin DOT com?subject=help> |
| List-Subscribe: | <https://cygwin.com/mailman/listinfo/cygwin>, |
| <mailto:cygwin-request AT cygwin DOT com?subject=subscribe> | |
| Errors-To: | cygwin-bounces+archive-cygwin=delorie DOT com AT cygwin DOT com |
| Sender: | "Cygwin" <cygwin-bounces+archive-cygwin=delorie DOT com AT cygwin DOT com> |
On Mon, 21 Feb 2022 08:41:52 +0900
Takashi Yano wrote:
> On Sun, 20 Feb 2022 22:38:53 +0100
> Claude TETE wrote:
> > A bash in a local mounted drive, use realpath instead of mounted one
> > for all child processes.
> >
> > Example, mount a local folder on Z: drive, go in there and run any
> > external command:
> > $ subst Z: C:\\Users
> > $ cd /cygdrive/z/
> > $ /bin/pwd
> > /cygdrive/c/Users
> >
> > Expected
> > /cygdrive/w
>
> This is since:
>
> commit 19d59ce75d5301ae167b421111d77615eb307aa7
> Author: Corinna Vinschen <corinna AT vinschen DOT de>
> Date: Fri May 7 16:07:03 2021 +0200
>
> Cygwin: path_conv: Rework handling native symlinks as inner path components
>
> commit 456c3a46386f was only going half-way. It handled symlinks and
> junction points as inner path components and made realpath return the
> correct path, but it ignored drive letter substitution, i. e., virtual
> drives created with, e. g.
>
> subst X: C:\foo\bar
>
> It was also too simple. Just returning an error code from
> symlink_info::check puts an unnecessary onus on the symlink evaluation
> loop in path_conv::check.
>
> Rework the code to use GetFinalPathNameByHandle, and only do this after
> checking the current file for being a symlink failed.
>
> If the final path returned by GetFinalPathNameByHandle is not the same
> as the incoming path, replace the incoming path with the POSIXified
> final path. This also short-circuits path evaluation, because
> path_conv::check doesn't have to recurse over the inner path components
> multiple times if all symlinks are of a native type, while still getting
> the final path as end result.
>
> Virtual drives are now handled like symlinks. This is a necessary change
> from before to make sure virtual drives are handled identically across
> different access methods. An example is realpath(1) from coreutils. It
> doesn't call readlink(2), but iterates over all path components using
> lstat/readlink calls. Both methods should result in the same real path.
>
> Fixes: 456c3a46386f ("path_conv: Try to handle native symlinks more sanely")
> Signed-off-by: Corinna Vinschen <corinna AT vinschen DOT de>
>
>
> The behaviour is by design. Does this cause any practical issue?
The similar happens also in Linux.
In Debuan GNU/Linux 11.2:
yano AT debian:~$ mkdir -p a/b/c
yano AT debian:~$ ln -s a/b/c c
yano AT debian:~$ cd c
yano AT debian:~/c$ pwd
/home/yano/c
yano AT debian:~/c$ /bin/pwd
/home/yano/a/b/c
In cygwin 3.3.4:
yano AT cygwin:~$ mkdir -p a/b/c
yano AT cygwin:~$ ln -s a/b/c c
yano AT cygwin:~$ cd c
yano AT cygwin:~/c$ pwd
/home/yano/c
yano AT cygwin:~/c$ /bin/pwd
/home/yano/a/b/c
--
Takashi Yano <takashi DOT yano AT nifty DOT ne DOT jp>
--
Problem reports: https://cygwin.com/problems.html
FAQ: https://cygwin.com/faq/
Documentation: https://cygwin.com/docs.html
Unsubscribe info: https://cygwin.com/ml/#unsubscribe-simple
| webmaster | delorie software privacy |
| Copyright © 2019 by DJ Delorie | Updated Jul 2019 |