From 9297dbc9d285e823af59c443e0123cb99577569a Mon Sep 17 00:00:00 2001 From: Denys Vlasenko Date: Mon, 5 Jul 2010 21:37:12 +0200 Subject: [PATCH] randomconfig fixes Signed-off-by: Denys Vlasenko --- applets/applets.c | 2 -- archival/bbunzip.c | 2 +- archival/libunarchive/Kbuild.src | 1 + libbb/appletlib.c | 6 +++++- shell/hush.c | 18 +++++++++++++----- testsuite/ash.tests | 1 - testsuite/cal.tests | 1 - testsuite/cpio.tests | 2 +- testsuite/date/date-works-1 | 2 ++ testsuite/expand.tests | 7 ++++--- testsuite/fold.tests | 7 ++++--- testsuite/ls.tests | 8 ++++---- testsuite/mount.tests | 1 - testsuite/unexpand.tests | 6 ++++-- 14 files changed, 39 insertions(+), 25 deletions(-) diff --git a/applets/applets.c b/applets/applets.c index 133a21575..6a3996272 100644 --- a/applets/applets.c +++ b/applets/applets.c @@ -6,8 +6,6 @@ * * Licensed under GPLv2, see file License in this tarball for details. */ - -#include #include "busybox.h" #if ENABLE_BUILD_LIBBUSYBOX diff --git a/archival/bbunzip.c b/archival/bbunzip.c index 832a7bbf3..c1259ac46 100644 --- a/archival/bbunzip.c +++ b/archival/bbunzip.c @@ -387,7 +387,7 @@ IF_DESKTOP(long long) int FAST_FUNC unpack_unxz(unpack_info_t *info UNUSED_PARAM int unxz_main(int argc, char **argv) MAIN_EXTERNALLY_VISIBLE; int unxz_main(int argc UNUSED_PARAM, char **argv) { - int opts = getopt32(argv, "cfvdt"); + IF_XZ(int opts =) getopt32(argv, "cfvdt"); # if ENABLE_XZ /* xz without -d or -t? */ if (applet_name[2] == '\0' && !(opts & (OPT_DECOMPRESS|OPT_TEST))) diff --git a/archival/libunarchive/Kbuild.src b/archival/libunarchive/Kbuild.src index 6ad1d7a65..a8549570e 100644 --- a/archival/libunarchive/Kbuild.src +++ b/archival/libunarchive/Kbuild.src @@ -38,6 +38,7 @@ INSERT lib-$(CONFIG_AR) += get_header_ar.o unpack_ar_archive.o lib-$(CONFIG_BUNZIP2) += decompress_bunzip2.o lib-$(CONFIG_UNLZMA) += decompress_unlzma.o +lib-$(CONFIG_UNXZ) += decompress_unxz.o lib-$(CONFIG_CPIO) += get_header_cpio.o lib-$(CONFIG_DPKG) += $(DPKG_FILES) lib-$(CONFIG_DPKG_DEB) += $(DPKG_FILES) diff --git a/libbb/appletlib.c b/libbb/appletlib.c index 6f058bcc8..4924a97c1 100644 --- a/libbb/appletlib.c +++ b/libbb/appletlib.c @@ -195,7 +195,11 @@ void lbb_prepare(const char *applet #if ENABLE_FEATURE_INDIVIDUAL /* Redundant for busybox (run_applet_and_exit covers that case) * but needed for "individual applet" mode */ - if (argv[1] && !argv[2] && strcmp(argv[1], "--help") == 0) { + if (argv[1] + && !argv[2] + && strcmp(argv[1], "--help") == 0 + && strncmp(applet, "busybox", 7) != 0 + ) { /* Special case. POSIX says "test --help" * should be no different from e.g. "test --foo". */ if (!ENABLE_TEST || strcmp(applet_name, "test") != 0) diff --git a/shell/hush.c b/shell/hush.c index 831443e2e..31ca22a2e 100644 --- a/shell/hush.c +++ b/shell/hush.c @@ -117,6 +117,10 @@ * and therefore waitpid will return the same result as last time) */ #define ENABLE_HUSH_FAST 0 +/* TODO: implement simplified code for users which do not need ${var%...} ops + * So far ${var%...} ops are always enabled: + */ +#define ENABLE_HUSH_DOLLAR_OPS 1 #if BUILD_AS_NOMMU @@ -2681,7 +2685,7 @@ static NOINLINE int expand_vars_to_list(o_string *output, int n, char *arg, char } } } else if (exp_op == ':') { -#if ENABLE_HUSH_BASH_COMPAT +#if ENABLE_HUSH_BASH_COMPAT && ENABLE_SH_MATH_SUPPORT /* It's ${var:N[:M]} bashism. * Note that in encoded form it has TWO parts: * var:NM @@ -5820,7 +5824,7 @@ static int parse_group(o_string *dest, struct parse_context *ctx, /* command remains "open", available for possible redirects */ } -#if ENABLE_HUSH_TICK || ENABLE_SH_MATH_SUPPORT +#if ENABLE_HUSH_TICK || ENABLE_SH_MATH_SUPPORT || ENABLE_HUSH_DOLLAR_OPS /* Subroutines for copying $(...) and `...` things */ static void add_till_backquote(o_string *dest, struct in_str *input); /* '...' */ @@ -5921,9 +5925,9 @@ static int add_till_closing_bracket(o_string *dest, struct in_str *input, unsign { int ch; char dbl = end_ch & DOUBLE_CLOSE_CHAR_FLAG; -#if ENABLE_HUSH_BASH_COMPAT +# if ENABLE_HUSH_BASH_COMPAT char end_char2 = end_ch >> 8; -#endif +# endif end_ch &= (DOUBLE_CLOSE_CHAR_FLAG - 1); while (1) { @@ -5976,7 +5980,7 @@ static int add_till_closing_bracket(o_string *dest, struct in_str *input, unsign } return ch; } -#endif /* ENABLE_HUSH_TICK || ENABLE_SH_MATH_SUPPORT */ +#endif /* ENABLE_HUSH_TICK || ENABLE_SH_MATH_SUPPORT || ENABLE_HUSH_DOLLAR_OPS */ /* Return code: 0 for OK, 1 for syntax error */ #if BB_MMU @@ -6082,7 +6086,11 @@ static int parse_dollar(o_string *as_string, again: if (!BB_MMU) pos = dest->length; +#if ENABLE_HUSH_DOLLAR_OPS last_ch = add_till_closing_bracket(dest, input, end_ch); +#else +#error Simple code to only allow ${var} is not implemented +#endif if (as_string) { o_addstr(as_string, dest->data + pos); o_addchr(as_string, last_ch); diff --git a/testsuite/ash.tests b/testsuite/ash.tests index dd626e6d1..2eeb746e4 100755 --- a/testsuite/ash.tests +++ b/testsuite/ash.tests @@ -6,7 +6,6 @@ # Licensed under GPL v2, see file LICENSE for details. . ./testing.sh - test -f "$bindir/.config" && . "$bindir/.config" test x"CONFIG_SCRIPT" = x"y" || exit 0 diff --git a/testsuite/cal.tests b/testsuite/cal.tests index 30985688b..db693ee59 100755 --- a/testsuite/cal.tests +++ b/testsuite/cal.tests @@ -3,7 +3,6 @@ # Licensed under GPL v2, see file LICENSE for details. . ./testing.sh - test -f "$bindir/.config" && . "$bindir/.config" # testing "test name" "command" "expected result" "file input" "stdin" diff --git a/testsuite/cpio.tests b/testsuite/cpio.tests index 5b397b01c..7aee774a1 100755 --- a/testsuite/cpio.tests +++ b/testsuite/cpio.tests @@ -99,7 +99,7 @@ SKIP= # chown on a link was affecting file, dropping its suid/sgid bits rm -rf cpio.testdir -optional FEATURE_CPIO_O +optional FEATURE_CPIO_O FEATURE_STAT_FORMAT mkdir cpio.testdir touch cpio.testdir/file chmod 6755 cpio.testdir/file # sets suid/sgid bits diff --git a/testsuite/date/date-works-1 b/testsuite/date/date-works-1 index 1b3e47ab0..e745d3841 100644 --- a/testsuite/date/date-works-1 +++ b/testsuite/date/date-works-1 @@ -1,3 +1,5 @@ +unset LANG + dt=`busybox date -d 1:2 +%T` test x"$dt" = x"01:02:00" diff --git a/testsuite/expand.tests b/testsuite/expand.tests index 357a9ad6b..2d92344d4 100755 --- a/testsuite/expand.tests +++ b/testsuite/expand.tests @@ -3,6 +3,7 @@ # Licensed under GPL v2, see file LICENSE for details. . ./testing.sh +test -f "$bindir/.config" && . "$bindir/.config" # testing "test name" "options" "expected result" "file input" "stdin" @@ -12,13 +13,13 @@ testing "expand" \ "" \ "\t12345678\t12345678\n" -optional UNICODE_SUPPORT +test x"$CONFIG_UNICODE_SUPPORT" = x"y" \ +&& test x"$CONFIG_UNICODE_USING_LOCALE" != x"y" \ +&& test "$CONFIG_LAST_SUPPORTED_WCHAR" -gt "916" \ testing "expand with unicode characher 0x394" \ "expand" \ "Δ 12345ΔΔΔ 12345678\n" \ "" \ "Δ\t12345ΔΔΔ\t12345678\n" -SKIP= - exit $FAILCOUNT diff --git a/testsuite/fold.tests b/testsuite/fold.tests index 0197d024d..e5700cc2b 100755 --- a/testsuite/fold.tests +++ b/testsuite/fold.tests @@ -3,6 +3,7 @@ # Licensed under GPL v2, see file LICENSE for details. . ./testing.sh +test -f "$bindir/.config" && . "$bindir/.config" # testing "test name" "options" "expected result" "file input" "stdin" @@ -28,9 +29,10 @@ be preserved is here:>\0< - they must be preserved " \ -optional UNICODE_SUPPORT # The text was taken from English and Ukrainian wikipedia pages -testing "fold -sw66 with unicode input" "fold -sw66" \ +test x"$CONFIG_UNICODE_SUPPORT" = x"y" \ +&& test x"$CONFIG_UNICODE_USING_LOCALE" != x"y" \ +&& testing "fold -sw66 with unicode input" "fold -sw66" \ "\ The Andromeda Galaxy (pronounced /ænˈdrɒmədə/, also known as \n\ Messier 31, M31, or NGC224; often referred to as the Great \n\ @@ -56,6 +58,5 @@ Way. спіральна галактика, що знаходиться на відстані приблизно у 2,5 \ мільйони світлових років від нашої планети у сузір'ї Андромеди. \ На початку ХХІ ст. в центрі галактики виявлено чорну дірку." -SKIP= exit $FAILCOUNT diff --git a/testsuite/ls.tests b/testsuite/ls.tests index 0680762fc..dc842123d 100755 --- a/testsuite/ls.tests +++ b/testsuite/ls.tests @@ -3,10 +3,9 @@ # Licensed under GPL v2, see file LICENSE for details. . ./testing.sh - test -f "$bindir/.config" && . "$bindir/.config" -rm -rf ls.testdir >/dev/null +rm -rf ls.testdir 2>/dev/null mkdir ls.testdir || exit 1 # testing "test name" "command" "expected result" "file input" "stdin" @@ -15,9 +14,10 @@ mkdir ls.testdir || exit 1 # I suspect we might fail to skip exactly correct number of bytes # over broked unicode sequences. test x"$CONFIG_UNICODE_SUPPORT" = x"y" \ -&& test x"$CONFIG_LOCALE_SUPPORT" != x"y" \ +&& test x"$CONFIG_UNICODE_USING_LOCALE" != x"y" \ && test x"$CONFIG_SUBST_WCHAR" = x"63" \ && test x"$CONFIG_LAST_SUPPORTED_WCHAR" = x"767" \ +&& test x"$CONFIG_FEATURE_LS_SORTFILES" = x"y" \ && testing "ls unicode test with codepoints limited to 767" \ "(cd ls.testdir && sh ../ls.mk_uni_tests) && ls -1 ls.testdir" \ '0001_1__Some_correct_UTF-8_text___________________________________________| @@ -134,7 +134,7 @@ test x"$CONFIG_UNICODE_SUPPORT" = x"y" \ # Currently fails on "0080_4.2.2__U-000007FF_=_e0_9f_bf" line test x"$CONFIG_UNICODE_SUPPORT" = x"y" \ -&& test x"$CONFIG_LOCALE_SUPPORT" != x"y" \ +&& test x"$CONFIG_UNICODE_USING_LOCALE" != x"y" \ && test x"$CONFIG_SUBST_WCHAR" = x"63" \ && test x"$CONFIG_LAST_SUPPORTED_WCHAR" = x"0" \ && testing "ls unicode test with unlimited codepoints" \ diff --git a/testsuite/mount.tests b/testsuite/mount.tests index 3c7405fbd..ce1a6006b 100755 --- a/testsuite/mount.tests +++ b/testsuite/mount.tests @@ -3,7 +3,6 @@ # Licensed under GPL v2, see file LICENSE for details. . ./testing.sh - test -f "$bindir/.config" && . "$bindir/.config" test "`id -u`" = 0 || { diff --git a/testsuite/unexpand.tests b/testsuite/unexpand.tests index a48e3214e..0727884f7 100755 --- a/testsuite/unexpand.tests +++ b/testsuite/unexpand.tests @@ -3,6 +3,7 @@ # Licensed under GPL v2, see file LICENSE for details. . ./testing.sh +test -f "$bindir/.config" && . "$bindir/.config" # testing "test name" "options" "expected result" "file input" "stdin" @@ -30,9 +31,10 @@ testing "unexpand case 7" "unexpand" \ testing "unexpand case 8" "unexpand" \ "a b\n" "" "a b\n" \ -optional UNICODE_SUPPORT +test x"$CONFIG_UNICODE_SUPPORT" = x"y" \ +&& test x"$CONFIG_UNICODE_USING_LOCALE" != x"y" \ +&& test "$CONFIG_LAST_SUPPORTED_WCHAR" -gt "916" \ testing "unexpand with unicode characher 0x394" "unexpand" \ "1ΔΔΔ5\t99999\n" "" "1ΔΔΔ5 99999\n" -SKIP= exit $FAILCOUNT -- 2.25.1