X-Recipient: archive-cygwin AT delorie DOT com X-SWARE-Spam-Status: No, hits=-1.9 required=5.0 tests=AWL,BAYES_00,SPF_SOFTFAIL X-Spam-Check-By: sourceware.org Message-ID: <4AB8B6E9.2060806@byu.net> Date: Tue, 22 Sep 2009 05:37:13 -0600 From: Eric Blake User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.1.23) Gecko/20090812 Thunderbird/2.0.0.23 Mnenhy/0.7.6.666 MIME-Version: 1.0 To: cygwin AT cygwin DOT com Subject: Re: [1.7] symlink regression References: <20090922092701 DOT GQ20981 AT calimero DOT vinschen DOT de> In-Reply-To: <20090922092701.GQ20981@calimero.vinschen.de> Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: 7bit X-IsSubscribed: yes Mailing-List: contact cygwin-help AT cygwin DOT com; run by ezmlm List-Id: List-Subscribe: List-Archive: List-Post: List-Help: , Sender: cygwin-owner AT cygwin DOT com Mail-Followup-To: cygwin AT cygwin DOT com Delivered-To: mailing list cygwin AT cygwin DOT com -----BEGIN PGP SIGNED MESSAGE----- Hash: SHA1 According to Corinna Vinschen on 9/22/2009 3:27 AM: > I reworked symlink's error handling so that in my testing I now get > the exact same error messages as on Linux: > > $ rm wqwqwq > $ ln -sT nowhere wqwqwq/ > ln: creating symbolic link `wqwqwq/': No such file or directory One oddity left: $ touch a $ ln -sT nowhere a/ => EEXIST $ ln -sT nowhere a// => ENOTDIR On Linux, both fail with EEXIST (but this violates POSIX, since a/ does not exist). On Solaris, both fail with ENOTDIR (which makes more sense). The reason that cygwin is inconsistent is that you created newpath but only truncated the final /, rather than checking for multiple /. Here's once case where I think it might be smarter to match Solaris and fail with ENOTDIR regardless of how many trailing slashes, rather than matching Linux and failing with EEXIST, particularly since it is faster (we don't have to even bother with creating newpath); but if we want to match Linux, then we have to handle all trailing when creating newpath. But at least the testsuite where I originally found the issue now passes (since it accepts either EEXIST or ENOTDIR). So I could also live with inaction, making no further changes to your patch. - -- Don't work too hard, make some time for fun as well! Eric Blake ebb9 AT byu DOT net -----BEGIN PGP SIGNATURE----- Version: GnuPG v1.4.9 (Cygwin) Comment: Public key at home.comcast.net/~ericblake/eblake.gpg Comment: Using GnuPG with Mozilla - http://enigmail.mozdev.org/ iEYEARECAAYFAkq4tukACgkQ84KuGfSFAYC6EQCfVw0pmvmTPiVDHvqer00mP6Me 7vgAn3yFprWCkfvelPJtYLL+FIO8+RUt =qOce -----END PGP SIGNATURE----- -- Problem reports: http://cygwin.com/problems.html FAQ: http://cygwin.com/faq/ Documentation: http://cygwin.com/docs.html Unsubscribe info: http://cygwin.com/ml/#unsubscribe-simple