diff --git a/archival/tar.c b/archival/tar.c index 3e90d46cb..375e838d2 100644 --- a/archival/tar.c +++ b/archival/tar.c @@ -924,7 +924,7 @@ int tar_main(int argc UNUSED_PARAM, char **argv) /* 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 diff --git a/coreutils/ls.c b/coreutils/ls.c index f11eb4358..d5b25ee70 100644 --- a/coreutils/ls.c +++ b/coreutils/ls.c @@ -1111,7 +1111,7 @@ int ls_main(int argc UNUSED_PARAM, char **argv) 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: */ @@ -1121,7 +1121,7 @@ int ls_main(int argc UNUSED_PARAM, char **argv) ":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 diff --git a/libbb/getopt32.c b/libbb/getopt32.c index c7c4079c2..d0e83d88e 100644 --- a/libbb/getopt32.c +++ b/libbb/getopt32.c @@ -467,13 +467,17 @@ getopt32(char **argv, const char *applet_opts, ...) } 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') { diff --git a/testsuite/date/date-R-works b/testsuite/date/date-R-works index d05634456..12f9b96ed 100644 --- a/testsuite/date/date-R-works +++ b/testsuite/date/date-R-works @@ -5,4 +5,17 @@ while test x"$dt" = x"$dt1"; do 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" diff --git a/testsuite/ls.tests b/testsuite/ls.tests index e2284658d..9309d366b 100755 --- a/testsuite/ls.tests +++ b/testsuite/ls.tests @@ -256,7 +256,8 @@ mkdir ls.testdir || exit 1 # 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" \ "" "" diff --git a/testsuite/mount.tests b/testsuite/mount.tests index 58eeb2ec5..9ddd58795 100755 --- a/testsuite/mount.tests +++ b/testsuite/mount.tests @@ -46,6 +46,7 @@ rm mount.image1m # 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 @@ -80,5 +81,6 @@ a b " \ "" "" +SKIP= exit $FAILCOUNT diff --git a/testsuite/od.tests b/testsuite/od.tests index fa47b4790..7a9da3e97 100755 --- a/testsuite/od.tests +++ b/testsuite/od.tests @@ -16,7 +16,7 @@ testing "od -b" \ "" "HELLO" SKIP= -optional DESKTOP +optional DESKTOP LONG_OPTS testing "od -b --traditional" \ "od -b --traditional" \ "\ @@ -26,7 +26,7 @@ testing "od -b --traditional" \ "" "HELLO" SKIP= -optional DESKTOP +optional DESKTOP LONG_OPTS testing "od -b --traditional FILE" \ "od -b --traditional input" \ "\ diff --git a/testsuite/tar.tests b/testsuite/tar.tests index 534135df8..39ece5feb 100755 --- a/testsuite/tar.tests +++ b/testsuite/tar.tests @@ -156,6 +156,7 @@ SKIP= # 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 @@ -167,8 +168,10 @@ 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 @@ -184,6 +187,7 @@ input_dir/file Ok " \ "" "" +SKIP= cd .. && rm -rf tar.tempdir || exit 1