ls: fix handling of symlinks by option -1

Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
This commit is contained in:
Denys Vlasenko 2011-03-12 03:12:36 +01:00
parent 8345b2bd5e
commit ea684c6aaf
2 changed files with 14 additions and 2 deletions

View File

@ -1,6 +1,5 @@
/* vi: set sw=4 ts=4: */ /* vi: set sw=4 ts=4: */
/* /*
* tiny-ls.c version 0.1.0: A minimalist 'ls'
* Copyright (C) 1996 Brian Candler <B.Candler@pobox.com> * Copyright (C) 1996 Brian Candler <B.Candler@pobox.com>
* *
* Licensed under GPLv2 or later, see file LICENSE in this source tree. * Licensed under GPLv2 or later, see file LICENSE in this source tree.
@ -1145,7 +1144,10 @@ int ls_main(int argc UNUSED_PARAM, char **argv)
do { do {
cur = my_stat(*argv, *argv, cur = my_stat(*argv, *argv,
/* follow links on command line unless -l, -s or -F: */ /* follow links on command line unless -l, -s or -F: */
!((all_fmt & (STYLE_LONG|LIST_BLOCKS)) || (option_mask32 & OPT_F)) !((all_fmt & STYLE_MASK) == STYLE_LONG
|| (all_fmt & LIST_BLOCKS)
|| (option_mask32 & OPT_F)
)
/* ... or if -H: */ /* ... or if -H: */
|| (option_mask32 & OPT_H) || (option_mask32 & OPT_H)
); );

View File

@ -251,6 +251,16 @@ test x"$CONFIG_UNICODE_SUPPORT" = x"y" \
0110_5.3.2__U+FFFF_=_ef_bf_bf_=_"?"_______________________________________| 0110_5.3.2__U+FFFF_=_ef_bf_bf_=_"?"_______________________________________|
' "" "" ' "" ""
rm -rf ls.testdir 2>/dev/null
mkdir ls.testdir || exit 1
# testing "test name" "command" "expected result" "file input" "stdin"
testing "ls symlink_to_dir" \
"touch ls.testdir/A ls.testdir/B; ln -s ls.testdir ls.link; ls ls.link; ls -1 ls.link/; ls -1 ls.link; rm -f ls.link" \
"A\nB\nA\nB\nA\nB\n" \
"" ""
# Clean up # Clean up
rm -rf ls.testdir 2>/dev/null rm -rf ls.testdir 2>/dev/null