*
* Licensed under GPLv2, see file License in this tarball for details.
*/
-
-#include <assert.h>
#include "busybox.h"
#if ENABLE_BUILD_LIBBUSYBOX
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)))
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)
#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)
* 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
}
}
} 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:N<SPECIAL_VAR_SYMBOL>M<SPECIAL_VAR_SYMBOL>
/* 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);
/* '...' */
{
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) {
}
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
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);
# 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
# 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"
# 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
+unset LANG
+
dt=`busybox date -d 1:2 +%T`
test x"$dt" = x"01:02:00"
# 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"
"" \
"\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
# 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"
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\
спіральна галактика, що знаходиться на відстані приблизно у 2,5 \
мільйони світлових років від нашої планети у сузір'ї Андромеди. \
На початку ХХІ ст. в центрі галактики виявлено чорну дірку."
-SKIP=
exit $FAILCOUNT
# 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"
# 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___________________________________________|
# 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" \
# Licensed under GPL v2, see file LICENSE for details.
. ./testing.sh
-
test -f "$bindir/.config" && . "$bindir/.config"
test "`id -u`" = 0 || {
# 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"
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