]> git.ipfire.org Git - thirdparty/coreutils.git/commitdiff
* tests/ls/stat-dtype: Use a dynamic test to decide whether the
authorPaul Eggert <eggert@cs.ucla.edu>
Thu, 5 Oct 2006 22:10:08 +0000 (22:10 +0000)
committerPaul Eggert <eggert@cs.ucla.edu>
Thu, 5 Oct 2006 22:10:08 +0000 (22:10 +0000)
current file system has useful d_type info.

ChangeLog
tests/ls/stat-dtype

index f394bb4ef2dbf0e59eaf681010f76182e3a8301c..10f177fc37edc4444435d153c67c4aa3e91778d7 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,5 +1,8 @@
 2006-10-05  Paul Eggert  <eggert@cs.ucla.edu>
 
+       * tests/ls/stat-dtype: Use a dynamic test to decide whether the
+       current file system has useful d_type info.
+
        * src/dd.c (flags): noatime and nofollow now depend on
        HAVE_WORKING_O_NOATIME and HAVE_WORKING_O_NOFOLLOW, too.
        (usage): Output info about noatime and nofollow only if
index 153195cd32490c7b9a1fc882824ad9fa76a1488f..3f509a2d9b4c5c7579903bd39f1e5f2c6331d1f3 100755 (executable)
@@ -30,33 +30,6 @@ fi
 
 . $srcdir/../envvar-check
 
-# Skip this test unless "." is on a file system with useful d_type info.
-# FIXME: use a more dynamic test for this, since whether d_type is useful
-# depends on much more than the file system type.  For example, with
-# linux-2.6.15, at least tmpfs and ext3 work, but reiserfs and xfs don't.
-# Also, tmpfs on Solaris 10 lacks d_type support.
-skip=yes
-fs_type=`stat -f --printf %T .`
-
-linux_2_6_or_newer=0
-case `uname -r` in
-  [01].*) ;;
-  2.[0-5]*) ;;
-  *) linux_2_6_or_newer=1 ;;
-esac
-
-test `uname -s` = Linux \
-  && test $linux_2_6_or_newer = 1 \
-  && test $fs_type = tmpfs \
-  && skip=no
-test $fs_type = ext2/ext3 && skip=no
-test $skip = yes &&
-  {
-    echo "$0: '.' is not on a suitable file system for this test" 1>&2
-    echo "$0: skipping this test" 1>&2
-    (exit 77); exit 77
-  }
-
 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
@@ -66,6 +39,17 @@ framework_failure=0
 mkdir -p $tmp || framework_failure=1
 cd $tmp || framework_failure=1
 
+# Skip this test unless "." is on a file system with useful d_type info.
+# FIXME: This uses "ls -p" to decide whether to test "ls" with other options,
+# but if ls's d_type code is buggy then "ls -p" might be buggy too.
+mkdir -p c/d || framework_failure=1
+chmod a-x c || framework_failure=1
+if test "X`ls -p c 2>&1`" != Xd/; then
+  echo "$0: '.' is not on a suitable file system for this test" 1>&2
+  echo "$0: skipping this test" 1>&2
+  (exit 77); exit 77
+fi
+
 mkdir d || framework_failure=1
 ln -s / d/s || framework_failure=1
 chmod 600 d || framework_failure=1