native symlink support should fallback to default format if target missing
Christopher Faylor
cgf-use-the-mailinglist-please@cygwin.com
Tue May 14 16:42:00 GMT 2013
On Tue, May 14, 2013 at 11:54:50AM -0400, Jeffrey Altman wrote:
>On 5/14/2013 11:04 AM, Corinna Vinschen wrote:
>> But here's the deal:
>>
>> If the user *deliberately* added CYGWIN=winsymlinks:native to the
>> call, then the user *deliberately* wants to generate native symlinks.
>> The *only* good reason to do that is to support the usage of the
>> symlinks from native (==non-Cygwin) tools.
>>
>> Now consider: If you silently create cygwin symlinks, the symlink
>> will be unusable for native tools and your use case will be broken.
>>
>> OTOH, if it doesn't matter if native tools work with that symlink, then
>> why did you set CYGWIN=winsymlinks:native at all?
>>
>> So, cgf has a good point here, IMHO. Either you don't care for
>> interoperability of the symlink, then don't set
>> CYGWIN=winsymlinks:native. Or, if interoperability is important, set
>> CYGWIN=winsymlinks:native, but then creating a non-native symlink
>> doesn't make sense.
>>
>> This is a valid argument which has to be seriously considered.
>>
>>
>> Corinna
>
>I definitely see Christopher's point and I am very sympathetic to it as
>someone that has to support a large anonymous user community. Provide
>rope but not enough to permit the user to hang themselves from the
>perspective of losing data through a lack of understanding of a how a
>feature works.
>
>I suspect the behavior that James really wants is the following:
>
> 1. if the target of a symlink exists and the underlying file system
> supports symlink reparse points, create a symlink reparse point.
>
> 2. if underlying file system doesn't support symlink reparse points,
> generate an error.
>
> 3. if the target of a symlink doesn't exist, create a cygwin
> symlink as a place holder.
I see 2. and 3. as basically the same thing. By the logic advanced
here it seems like, for consistency, 2. should silently create a
cygwin symlink. I don't think that's a good idea but I do think it
would at least be consistent.
> 4. if a cygwin symlink is accessed and the target exists and the
> file system supports symlink reparse points, replace the cygwin
> symlink with the symlink reparse point.
Ugh. Please no. Silently modifying the filesystem is rather surprising
behavior. It gives the user no control.
cgf
More information about the Cygwin-developers
mailing list