/* Prepend '-' to the first argument if required */
opt_complementary = "--:" // first arg is options
"tt:vv:" // count -t,-v
- "X::T::" // cumulative lists
+ IF_FEATURE_TAR_FROM("X::T::") // cumulative lists
#if ENABLE_FEATURE_TAR_LONG_OPTIONS && ENABLE_FEATURE_TAR_FROM
"\xff::" // cumulative lists for --exclude
#endif
IF_FEATURE_LS_COLOR(applet_long_options = ls_longopts;)
opt_complementary =
/* -e implies -l */
- "el"
+ IF_FEATURE_LS_TIMESTAMPS("el")
/* http://pubs.opengroup.org/onlinepubs/9699919799/utilities/ls.html:
* in some pairs of opts, only last one takes effect:
*/
":C-xl:x-Cl:l-xC" /* bycols/bylines/long */
":C-1:1-C" /* bycols/oneline */
":x-1:1-x" /* bylines/oneline (not in SuS, but in GNU coreutils 8.4) */
- ":c-u:u-c" /* mtime/atime */
+ IF_FEATURE_LS_TIMESTAMPS(":c-u:u-c") /* mtime/atime */
/* -w NUM: */
IF_FEATURE_AUTOWIDTH(":w+");
opt = getopt32(argv, ls_options
}
for (on_off = complementary; on_off->opt_char; on_off++)
if (on_off->opt_char == *s)
- break;
+ goto found_opt;
+ /* Without this, diagnostic of such bugs is not easy */
+ bb_error_msg_and_die("NO OPT %c!", *s);
+ found_opt:
if (c == ':' && s[2] == ':') {
on_off->param_type = PARAM_LIST;
continue;
}
if (c == '+' && (s[2] == ':' || s[2] == '\0')) {
on_off->param_type = PARAM_INT;
+ s++;
continue;
}
if (c == ':' || c == '\0') {
dt="`date -R`"
done
-test x"$dt" = x"`busybox date -R`"
+bdt=`busybox date -R`
+bdt=`busybox date -R`
+bdt=`busybox date -R`
+bdt=`busybox date -R`
+bdt=`busybox date -R`
+
+# Wtih !FEATURE_DATE_NANO, that is, with time()
+# instead of clock_gettime(), seconds transition
+# may not happen at _exactly_ the same moment,
+# but can be delayed. Several busybox date -R
+# invocations above are meant to deal with this.
+# (two were enough for me, but I added more just in case).
+
+test x"$dt" = x"$bdt"
# testing "test name" "command" "expected result" "file input" "stdin"
-testing "ls symlink_to_dir" \
+test x"$CONFIG_FEATURE_LS_SORTFILES" = x"y" \
+&& 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" \
"" ""
# Bug: mount.shared1 directory shows no files (has to show files a and b)
+optional FEATURE_LS_RECURSIVE
testing "mount bind+rshared" "\
mkdir -p mount.dir mount.shared1 mount.shared2
touch mount.dir/a mount.dir/b
b
" \
"" ""
+SKIP=
exit $FAILCOUNT
"" "HELLO"
SKIP=
-optional DESKTOP
+optional DESKTOP LONG_OPTS
testing "od -b --traditional" \
"od -b --traditional" \
"\
"" "HELLO"
SKIP=
-optional DESKTOP
+optional DESKTOP LONG_OPTS
testing "od -b --traditional FILE" \
"od -b --traditional input" \
"\
# Had a bug where on extract autodetect first "switched off" -z
# and then failed to recognize .tgz extension
+optional FEATURE_TAR_CREATE FEATURE_SEAMLESS_GZ
testing "tar extract tgz" "\
dd count=1 bs=1M if=/dev/zero of=F0 2>/dev/null
tar -czf F0.tgz F0
Ok
" \
"" ""
+SKIP=
# On extract, everything up to and including last ".." component is stripped
+optional FEATURE_TAR_CREATE
testing "tar strips /../ on extract" "\
rm -rf input_* test.tar 2>/dev/null
mkdir input_dir
Ok
" \
"" ""
+SKIP=
cd .. && rm -rf tar.tempdir || exit 1