This is the mail archive of the
cygwin-developers@cygwin.com
mailing list for the Cygwin project.
Re: Some "interesting" changes checked in
- To: cygwin-developers at cygwin dot com
- Subject: Re: Some "interesting" changes checked in
- From: Corinna Vinschen <vinschen at redhat dot com>
- Date: Tue, 6 Mar 2001 14:06:41 +0100
- References: <20010305013457.A1344@redhat.com>
- Reply-To: Corinna Vinschen <cygwin-developers at cygwin dot com>
On Mon, Mar 05, 2001 at 01:34:58AM -0500, Christopher Faylor wrote:
> I've checked in some changes that may destabilize things for a while
> until the bugs have been wrung out.
>
> 1) Changed CTRL-Z handling so that tty handler recognizes when a signal
> has been sent and exits appropriately.
>
> 2) Cleaned up extension scanning in symlink_info::check. I've been slowly
> cleaning up this routine and Corinna's addition of .lnk scanning prompted
> me to work on this a little more.
>
> 3) Eliminated the ReadFile (this topic was all the rage in the cygwin mailing
> list a while ago) unless the program using cygwin needs to check for the
> executable bit. This requires a recompilation to operate correctly.
>
> The one that is probably most iffy is 2. I really redesigned things and
> everything seemed to work the first time. That's usually a symptom that
> I got something horribly wrong somewhere and I just don't remember one
> of the parameters to the problem. It does seem to scan .exe extensions
> correctly and correctly default to finding .lnk when appropriate,
> though.
Your patch has broken readdir's ability to drop the .lnk suffix.
The problem is that in symlink::check the call to suffix.lnk_match()
only sets sym_check to 1 when suffix.next() has added the .lnk suffix
by itself but not when it's already given in the input file name. This
results in a weird behaviour.
Example:
cd /
mkdir foo
cd ~
ln -s /foo
ls -l foo
-> results in `lrwxrwxrwx ... foo -> /foo <- OK
ls -l foo.lnk
-> results in `lrwxrwxrwx ... foo.lnk -> /foo <- OK
ls -l
-> results in `lrwxrwxrwx ... foo.lnk -> /foo <- Wrong
cd foo
-> works <- OK
cd ~
cd foo.lnk
-> results in `foo.lnk: Not a directory.' <- Wrong
The error is in suffix_scan::has. The order of the conditionals
disallows .lnk suffixes for input files when in_suffixes is NULL.
I have checked in a patch.
Corinna
--
Corinna Vinschen Please, send mails regarding Cygwin to
Cygwin Developer mailto:cygwin@cygwin.com
Red Hat, Inc.