Zsh Mailing List Archive
Messages sorted by:
Reverse Date,
Date,
Thread,
Author
Re: PATCH: 3.1.5: ``***'' symlink follow broken
- X-seq: zsh-workers 4614
- From: Peter Stephenson <pws@xxxxxxxxxxxxxxxxx>
- To: Zsh Hackers <zsh-workers@xxxxxxxxxxxxxxx>
- Subject: Re: PATCH: 3.1.5: ``***'' symlink follow broken
- Date: Thu, 12 Nov 1998 15:10:36 +0100
- In-reply-to: "Geoff Wing"'s message of "Thu, 12 Nov 1998 17:20:55 NFT."             <19981112172055.A21356@xxxxxxxxxxxxxxx> 
Geoff Wing wrote:
> Heyla,
> ``***'' recursive globbing with symlink follow has been broken since at
> least 3.1.2 (maybe before):
It's amazing how the shell can totally break down without anyone
noticing.
> This patch is probably suboptimal (possibly wrong) and may encourage someone
> to make a real patch.
It works fine, but there's one minor tweak: you can still reject
things that aren't directories (the test correctly uses stat(), not
lstat(), so it may be a link to a directory), but the link count test
doesn't apply when the directory could contain only symbolic links.
The following patch is a replacement which does that.  I can't imagine
the difference is that important -- in fact, since the opendir() will
fail if the thing isn't a directory, it's hard to see that the stat()
at this point gains much at all.  Unless someone knows something
sinister about opendir()?
*** Src/glob.c.follow	Sun Nov  8 16:01:28 1998
--- Src/glob.c	Thu Nov 12 14:59:26 1998
***************
*** 365,372 ****
  	if (dirs) {
  	    struct stat st;
  	    stat(fn, &st);
! 	    /* a directory with subdirectories has link count greater than 2 */
! 	    if (!S_ISDIR(st.st_mode) || st.st_nlink == 2)
  		return;
  	}
  	lock = opendir(fn);
--- 365,374 ----
  	if (dirs) {
  	    struct stat st;
  	    stat(fn, &st);
! 	    /* a directory with subdirectories has link count greater than 2
! 	     * (unless the `subdirectory' is a symbolic link).
! 	     */
! 	    if (!S_ISDIR(st.st_mode) || (st.st_nlink == 2 && !q->follow))
  		return;
  	}
  	lock = opendir(fn);
-- 
Peter Stephenson <pws@xxxxxxxxxxxxxxxxx>       Tel: +39 050 844536
WWW:  http://www.ifh.de/~pws/
Dipartimento di Fisica, Via Buonarroti 2, 56100 Pisa, Italy
Messages sorted by:
Reverse Date,
Date,
Thread,
Author