Jim Meyering <[EMAIL PROTECTED]> wrote: > mwoehlke <[EMAIL PROTECTED]> wrote: >> Mike Frysinger wrote: >>> On Thursday 24 August 2006 17:03, mwoehlke wrote: >>>> https://savannah.gnu.org/bugs/?func=detailitem&item_id=15043 >>>> >>>> Is this going to get fixed, or what? There is a trivial fix available, >>>> it just needs someone that knows how to make it 'Linux-only'. >>> #if __linux__ >>> <foo> >>> #endif >>> -mike >> >> Ok, thanks. I a: wasn't sure of a macro that would be defined on Linux >> (is there a list of these things anywhere? Preferably covering most >> major platforms?), and b: wasn't sure if people here appreciated such >> patches. >> >> If #ifdef is OK, this should do it (works for me with 5.97 and 6.1): > > Thanks for pursuing that. > No #ifdef needed. > Here's the patch I'll probably commit (destined for the trunk):
I've checked this in on the trunk: 2006-08-26 Jim Meyering <[EMAIL PROTECTED]> "ls --color" would highlight other-writable and sticky directories no differently than regular directories on a file system with dirent.d_type support. * NEWS: Say the above. * src/ls.c (gobble_file): With --color, also stat the file when we know it is a directory. Derived from an anonymous one-line fix and bug report: <https://savannah.gnu.org/bugs/?15043>. * tests/ls/color-dtype-dir: New file. Test for the above fix. * tests/ls/Makefile.am (TESTS): Add color-dtype-dir. Index: NEWS =================================================================== RCS file: /fetish/cu/NEWS,v retrieving revision 1.410 retrieving revision 1.411 diff -u -p -u -r1.410 -r1.411 --- NEWS 23 Aug 2006 23:38:27 -0000 1.410 +++ NEWS 26 Aug 2006 06:46:17 -0000 1.411 @@ -9,6 +9,13 @@ GNU coreutils NEWS in README-cvs. Although this represents a large change to the infrastructure, it should cause no change in the actual tools. +** Bug fixes + + "ls --color" would highlight other-writable and sticky directories + no differently than regular directories on a file system with + dirent.d_type support. + + * Major changes in release 6.1 (2006-08-19) [unstable] ** Changes in behavior Index: src/ls.c =================================================================== RCS file: /fetish/cu/src/ls.c,v retrieving revision 1.438 retrieving revision 1.439 diff -u -p -u -r1.438 -r1.439 --- src/ls.c 23 Aug 2006 19:19:02 -0000 1.438 +++ src/ls.c 26 Aug 2006 06:46:17 -0000 1.439 @@ -2531,6 +2531,10 @@ gobble_file (char const *name, enum file if (command_line_arg || format_needs_stat + /* When coloring a directory (we may know the type from + direct.d_type), we have to stat it in order to indicate + sticky and/or other-writable attributes. */ + || (type == directory && print_with_color) || (print_inode && (inode == NOT_AN_INODE_NUMBER /* When dereferencing symlinks, the inode must come from Index: tests/ls/color-dtype-dir =================================================================== RCS file: tests/ls/color-dtype-dir diff -N tests/ls/color-dtype-dir --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ tests/ls/color-dtype-dir 26 Aug 2006 06:46:18 -0000 1.1 @@ -0,0 +1,70 @@ +#!/bin/sh +# Ensure "ls --color" properly colors other-writable and sticky directories. +# Before coreutils-6.2, this test would fail, coloring all three +# directories the same as the first one -- but only on a file system +# with dirent.d_type support. + +# Copyright (C) 2006 Free Software Foundation, Inc. + +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2 of the License, or +# (at your option) any later version. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. + +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA +# 02110-1301, USA. + +if test "$VERBOSE" = yes; then + set -x + ls --version +fi + +. $srcdir/../envvar-check + +pwd=`pwd` +t0=`echo "$0"|sed 's,.*/,,'`.tmp; tmp=$t0/$$ +trap 'status=$?; cd $pwd; chmod -R u+rwx $t0; rm -rf $t0 && exit $status' 0 +trap '(exit $?); exit $?' 1 2 13 15 + +framework_failure=0 +mkdir -p $tmp || framework_failure=1 +cd $tmp || framework_failure=1 + +mkdir d other-writable sticky || framework_failure=1 +chmod o+w other-writable || framework_failure=1 +chmod o+t sticky || framework_failure=1 + +if test $framework_failure = 1; then + echo "$0: failure in testing framework" 1>&2 + (exit 1); exit 1 +fi + +fail=0 + +# Ensure that LS_COLORS is set to known values. +eval "`dircolors -b`" + +ls --color=always > out || fail=1 +cat -A out > o1 || fail=1 +echo >> o1 || fail=1 +mv o1 out || fail=1 + +cat <<\EOF > exp || fail=1 +^[[00m^[[01;34md^[[00m$ +^[[34;42mother-writable^[[00m$ +^[[00mout^[[00m$ +^[[37;44msticky^[[00m$ +^[[m +EOF + +cmp out exp || fail=1 +test $fail = 1 && diff out exp 2> /dev/null + +(exit $fail); exit $fail Index: tests/ls/Makefile.am =================================================================== RCS file: /fetish/cu/tests/ls/Makefile.am,v retrieving revision 1.25 retrieving revision 1.26 diff -u -p -u -r1.25 -r1.26 --- tests/ls/Makefile.am 17 Aug 2006 19:58:31 -0000 1.25 +++ tests/ls/Makefile.am 26 Aug 2006 06:46:18 -0000 1.26 @@ -21,6 +21,7 @@ AUTOMAKE_OPTIONS = 1.2 gnits TESTS = \ + color-dtype-dir \ stat-failed \ stat-dtype \ inode dangle file-type recursive dired infloop \ _______________________________________________ Bug-coreutils mailing list Bug-coreutils@gnu.org http://lists.gnu.org/mailman/listinfo/bug-coreutils