Date: Fri, 19 Jun 2015 23:54:23 +0200 From: Jilles Tjoelker <jilles@stack.nl> To: Xin LI <delphij@FreeBSD.org> Cc: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: Re: svn commit: r284162 - head/bin/ls Message-ID: <20150619215423.GA34741@stack.nl> In-Reply-To: <201506081913.t58JD5KX090442@svn.freebsd.org> References: <201506081913.t58JD5KX090442@svn.freebsd.org>
next in thread | previous in thread | raw e-mail | index | archive | help
On Mon, Jun 08, 2015 at 07:13:05PM +0000, Xin LI wrote: > Author: delphij > Date: Mon Jun 8 19:13:04 2015 > New Revision: 284162 > URL: https://svnweb.freebsd.org/changeset/base/284162 > Log: > It has been long time that when doing 'ls -G /path/to/a/symlink', instead of > using the color of symbolic link, the color is determined by the link target. > This behavior was quite confusing. > Looking at the file history, it looks like that r203665 intends to fix this > but the issue was never actually fixed. > Fix this by not setting FTS_COMFOLLOW when color is requested like what was > done in r203665. > MFC after: 2 weeks > Modified: > head/bin/ls/ls.c > Modified: head/bin/ls/ls.c > ============================================================================== > --- head/bin/ls/ls.c Mon Jun 8 18:59:14 2015 (r284161) > +++ head/bin/ls/ls.c Mon Jun 8 19:13:04 2015 (r284162) > @@ -413,9 +413,14 @@ main(int argc, char *argv[]) > > /* > * If not -F, -P, -d or -l options, follow any symbolic links listed on > - * the command line. > + * the command line, unless in color mode in which case we need to > + * distinguish file type for a symbolic link itself and its target. > */ > - if (!f_nofollow && !f_longform && !f_listdir && (!f_type || f_slash)) > + if (!f_nofollow && !f_longform && !f_listdir && (!f_type || f_slash) > +#ifdef COLORLS > + && !f_color > +#endif > + ) > fts_options |= FTS_COMFOLLOW; > > /* Hmm. This makes -G or CLICOLOR env behave like -F in that symlinks are no longer followed by default. This at least needs a change in the man page to document it, and I'm not sure whether -G should actually modify ls's action beyond adding colour. For example, in stable/10 doing ls /sys, ls -p /sys and ls -G /sys show a directory listing of the kernel source, while ls -F /sys shows just the symlink. What r203665 fixed was colour, inode number, etc. when -P was given and -F/-d/-l were not. I'll admit that this -F/-d/-l thing is bizarre but it has grown that way historically and I've found ls implementations that deviate from this annoying (e.g. on some embedded systems). -- Jilles Tjoelker
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?20150619215423.GA34741>