diff options
| author | Ron Yorston <rmy@pobox.com> | 2020-05-29 10:49:00 +0100 |
|---|---|---|
| committer | Ron Yorston <rmy@pobox.com> | 2020-05-29 11:03:33 +0100 |
| commit | 53c09d0e1720bd927a2995f87df324a9854f1771 (patch) | |
| tree | 982b357d9d188cfb6a1d488ebaba6c42d818209f | |
| parent | d4247a9f03290a96433e18dba538404005a21311 (diff) | |
| parent | 45fa3f18adf57ef9d743038743d9c90573aeeb91 (diff) | |
| download | busybox-w32-53c09d0e1720bd927a2995f87df324a9854f1771.tar.gz busybox-w32-53c09d0e1720bd927a2995f87df324a9854f1771.tar.bz2 busybox-w32-53c09d0e1720bd927a2995f87df324a9854f1771.zip | |
Merge branch 'busybox' into mergeFRP-3466-g53c09d0e1
| -rw-r--r-- | Makefile.flags | 3 | ||||
| -rwxr-xr-x | applets_sh/mim | 39 | ||||
| -rw-r--r-- | archival/unzip.c | 8 | ||||
| -rw-r--r-- | configs/mingw32_defconfig | 3 | ||||
| -rw-r--r-- | configs/mingw64_defconfig | 3 | ||||
| -rw-r--r-- | findutils/grep.c | 24 | ||||
| -rw-r--r-- | miscutils/mim.c | 15 | ||||
| -rw-r--r-- | networking/httpd.c | 6 | ||||
| -rw-r--r-- | networking/wget.c | 20 | ||||
| -rw-r--r-- | scripts/Kbuild.include | 1 | ||||
| -rw-r--r-- | scripts/Makefile.IMA | 1 | ||||
| -rw-r--r-- | scripts/Makefile.lib | 8 | ||||
| -rwxr-xr-x | scripts/trylink | 3 | ||||
| -rw-r--r-- | shell/ash.c | 7 | ||||
| -rwxr-xr-x | shell/ash_test/ash-misc/exitcode_trap2.tests | 3 | ||||
| -rwxr-xr-x | shell/ash_test/ash-misc/exitcode_trap6.tests | 3 | ||||
| -rw-r--r-- | shell/hush.c | 3 | ||||
| -rwxr-xr-x | shell/hush_test/hush-misc/exitcode_trap2.tests | 3 | ||||
| -rwxr-xr-x | shell/hush_test/hush-misc/exitcode_trap6.tests | 3 | ||||
| -rwxr-xr-x | testsuite/grep.tests | 18 |
20 files changed, 138 insertions, 36 deletions
diff --git a/Makefile.flags b/Makefile.flags index ec46c4f4f..dddeb0ce6 100644 --- a/Makefile.flags +++ b/Makefile.flags | |||
| @@ -15,7 +15,8 @@ CPPFLAGS += \ | |||
| 15 | -include include/autoconf.h \ | 15 | -include include/autoconf.h \ |
| 16 | -D_GNU_SOURCE -DNDEBUG \ | 16 | -D_GNU_SOURCE -DNDEBUG \ |
| 17 | $(if $(CONFIG_LFS),-D_LARGEFILE_SOURCE -D_LARGEFILE64_SOURCE -D_FILE_OFFSET_BITS=64) \ | 17 | $(if $(CONFIG_LFS),-D_LARGEFILE_SOURCE -D_LARGEFILE64_SOURCE -D_FILE_OFFSET_BITS=64) \ |
| 18 | -D"BB_VER=KBUILD_STR($(BB_VER))" -D"MINGW_VER=KBUILD_STR($(MINGW_VER))" | 18 | -DMINGW_VER=$(squote)$(quote)$(MINGW_VER)$(quote)$(squote) \ |
| 19 | -DBB_VER=$(squote)$(quote)$(BB_VER)$(quote)$(squote) | ||
| 19 | 20 | ||
| 20 | CFLAGS += $(call cc-option,-Wall,) | 21 | CFLAGS += $(call cc-option,-Wall,) |
| 21 | CFLAGS += $(call cc-option,-Wshadow,) | 22 | CFLAGS += $(call cc-option,-Wshadow,) |
diff --git a/applets_sh/mim b/applets_sh/mim new file mode 100755 index 000000000..2a65c35bb --- /dev/null +++ b/applets_sh/mim | |||
| @@ -0,0 +1,39 @@ | |||
| 1 | #!/bin/sh | ||
| 2 | MIMFILE="Mimfile" | ||
| 3 | if [ $# -ge 2 ] && [ "$1" = "-f" ] | ||
| 4 | then | ||
| 5 | MIMFILE="$2" | ||
| 6 | shift 2 | ||
| 7 | fi | ||
| 8 | exec <"$MIMFILE" || exit 1 | ||
| 9 | { | ||
| 10 | INCASE=false | ||
| 11 | while read -r REPLY | ||
| 12 | do | ||
| 13 | case $REPLY in | ||
| 14 | *:) | ||
| 15 | if ! $INCASE | ||
| 16 | then | ||
| 17 | printf '[ $# -eq 0 ] && set -- "%s" | ||
| 18 | TARGET="$1" | ||
| 19 | shift | ||
| 20 | case "$TARGET" in | ||
| 21 | ' "${REPLY%:}" | ||
| 22 | else | ||
| 23 | printf ';;\n' | ||
| 24 | fi | ||
| 25 | printf '%s)\n' "${REPLY%:}" | ||
| 26 | INCASE=true | ||
| 27 | ;; | ||
| 28 | "") ;; | ||
| 29 | *) printf '%s\n' "${REPLY##[ ]}";; | ||
| 30 | esac | ||
| 31 | done | ||
| 32 | $INCASE && printf ';;\n' | ||
| 33 | printf '*) | ||
| 34 | echo "Unknown command $TARGET" | ||
| 35 | exit 1 | ||
| 36 | ;; | ||
| 37 | esac | ||
| 38 | ' | ||
| 39 | } | sh -s "$@" | ||
diff --git a/archival/unzip.c b/archival/unzip.c index 759456c1d..67593d4ed 100644 --- a/archival/unzip.c +++ b/archival/unzip.c | |||
| @@ -652,8 +652,14 @@ int unzip_main(int argc, char **argv) | |||
| 652 | } | 652 | } |
| 653 | 653 | ||
| 654 | /* Change dir if necessary */ | 654 | /* Change dir if necessary */ |
| 655 | if (base_dir) | 655 | if (base_dir) { |
| 656 | /* -p DIR: try to create, errors don't matter. | ||
| 657 | * UnZip 6.00 does no multi-level mkdir (-p DIR1/DIR2 syntax), | ||
| 658 | * not using bb_make_directory() here (yet?) | ||
| 659 | */ | ||
| 660 | mkdir(base_dir, 0777); | ||
| 656 | xchdir(base_dir); | 661 | xchdir(base_dir); |
| 662 | } | ||
| 657 | 663 | ||
| 658 | if (quiet <= 1) { /* not -qq */ | 664 | if (quiet <= 1) { /* not -qq */ |
| 659 | if (quiet == 0) { | 665 | if (quiet == 0) { |
diff --git a/configs/mingw32_defconfig b/configs/mingw32_defconfig index afb52b4ee..bffe88842 100644 --- a/configs/mingw32_defconfig +++ b/configs/mingw32_defconfig | |||
| @@ -1,7 +1,7 @@ | |||
| 1 | # | 1 | # |
| 2 | # Automatically generated make config: don't edit | 2 | # Automatically generated make config: don't edit |
| 3 | # Busybox version: 1.32.0.git | 3 | # Busybox version: 1.32.0.git |
| 4 | # Thu May 28 10:59:26 2020 | 4 | # Fri May 29 10:58:25 2020 |
| 5 | # | 5 | # |
| 6 | CONFIG_HAVE_DOT_CONFIG=y | 6 | CONFIG_HAVE_DOT_CONFIG=y |
| 7 | # CONFIG_PLATFORM_POSIX is not set | 7 | # CONFIG_PLATFORM_POSIX is not set |
| @@ -820,6 +820,7 @@ CONFIG_FEATURE_LESS_ENV=y | |||
| 820 | # CONFIG_FEATURE_MAKEDEVS_TABLE is not set | 820 | # CONFIG_FEATURE_MAKEDEVS_TABLE is not set |
| 821 | CONFIG_MAN=y | 821 | CONFIG_MAN=y |
| 822 | # CONFIG_MICROCOM is not set | 822 | # CONFIG_MICROCOM is not set |
| 823 | # CONFIG_MIM is not set | ||
| 823 | # CONFIG_MT is not set | 824 | # CONFIG_MT is not set |
| 824 | # CONFIG_NANDWRITE is not set | 825 | # CONFIG_NANDWRITE is not set |
| 825 | # CONFIG_NANDDUMP is not set | 826 | # CONFIG_NANDDUMP is not set |
diff --git a/configs/mingw64_defconfig b/configs/mingw64_defconfig index 938bbcc3a..d0a541162 100644 --- a/configs/mingw64_defconfig +++ b/configs/mingw64_defconfig | |||
| @@ -1,7 +1,7 @@ | |||
| 1 | # | 1 | # |
| 2 | # Automatically generated make config: don't edit | 2 | # Automatically generated make config: don't edit |
| 3 | # Busybox version: 1.32.0.git | 3 | # Busybox version: 1.32.0.git |
| 4 | # Thu May 28 10:59:26 2020 | 4 | # Fri May 29 10:59:57 2020 |
| 5 | # | 5 | # |
| 6 | CONFIG_HAVE_DOT_CONFIG=y | 6 | CONFIG_HAVE_DOT_CONFIG=y |
| 7 | # CONFIG_PLATFORM_POSIX is not set | 7 | # CONFIG_PLATFORM_POSIX is not set |
| @@ -820,6 +820,7 @@ CONFIG_FEATURE_LESS_ENV=y | |||
| 820 | # CONFIG_FEATURE_MAKEDEVS_TABLE is not set | 820 | # CONFIG_FEATURE_MAKEDEVS_TABLE is not set |
| 821 | CONFIG_MAN=y | 821 | CONFIG_MAN=y |
| 822 | # CONFIG_MICROCOM is not set | 822 | # CONFIG_MICROCOM is not set |
| 823 | # CONFIG_MIM is not set | ||
| 823 | # CONFIG_MT is not set | 824 | # CONFIG_MT is not set |
| 824 | # CONFIG_NANDWRITE is not set | 825 | # CONFIG_NANDWRITE is not set |
| 825 | # CONFIG_NANDDUMP is not set | 826 | # CONFIG_NANDDUMP is not set |
diff --git a/findutils/grep.c b/findutils/grep.c index 5b8644c36..55e9c0a8f 100644 --- a/findutils/grep.c +++ b/findutils/grep.c | |||
| @@ -650,6 +650,13 @@ static void load_regexes_from_file(llist_t *fopt) | |||
| 650 | } | 650 | } |
| 651 | } | 651 | } |
| 652 | 652 | ||
| 653 | static void load_pattern_list(llist_t **lst, char *pattern) | ||
| 654 | { | ||
| 655 | char *p; | ||
| 656 | while ((p = strsep(&pattern, "\n")) != NULL) | ||
| 657 | llist_add_to(lst, new_grep_list_data(p, 0)); | ||
| 658 | } | ||
| 659 | |||
| 653 | static int FAST_FUNC file_action_grep(const char *filename, | 660 | static int FAST_FUNC file_action_grep(const char *filename, |
| 654 | struct stat *statbuf, | 661 | struct stat *statbuf, |
| 655 | void* matched, | 662 | void* matched, |
| @@ -754,16 +761,19 @@ int grep_main(int argc UNUSED_PARAM, char **argv) | |||
| 754 | #endif | 761 | #endif |
| 755 | invert_search = ((option_mask32 & OPT_v) != 0); /* 0 | 1 */ | 762 | invert_search = ((option_mask32 & OPT_v) != 0); /* 0 | 1 */ |
| 756 | 763 | ||
| 757 | { /* convert char **argv to grep_list_data_t */ | 764 | { /* convert char **argv to pattern_list */ |
| 758 | llist_t *cur; | 765 | llist_t *cur, *new = NULL; |
| 759 | for (cur = pattern_head; cur; cur = cur->link) | 766 | for (cur = pattern_head; cur; cur = cur->link) |
| 760 | cur->data = new_grep_list_data(cur->data, 0); | 767 | load_pattern_list(&new, cur->data); |
| 768 | llist_free(pattern_head, NULL); | ||
| 769 | pattern_head = new; | ||
| 761 | } | 770 | } |
| 762 | if (option_mask32 & OPT_f) { | 771 | if (option_mask32 & OPT_f) { |
| 763 | load_regexes_from_file(fopt); | 772 | load_regexes_from_file(fopt); |
| 764 | if (!pattern_head) { /* -f EMPTY_FILE? */ | 773 | if (!pattern_head) { /* -f EMPTY_FILE? */ |
| 765 | /* GNU grep treats it as "nothing matches" */ | 774 | /* GNU grep treats it as "nothing matches" except when -x */ |
| 766 | llist_add_to(&pattern_head, new_grep_list_data((char*) "", 0)); | 775 | const char *data = (option_mask32 & OPT_x) ? ".*" : ""; |
| 776 | llist_add_to(&pattern_head, new_grep_list_data((char*)data, 0)); | ||
| 767 | invert_search ^= 1; | 777 | invert_search ^= 1; |
| 768 | } | 778 | } |
| 769 | } | 779 | } |
| @@ -805,11 +815,9 @@ int grep_main(int argc UNUSED_PARAM, char **argv) | |||
| 805 | /* if we didn't get a pattern from -e and no command file was specified, | 815 | /* if we didn't get a pattern from -e and no command file was specified, |
| 806 | * first parameter should be the pattern. no pattern, no worky */ | 816 | * first parameter should be the pattern. no pattern, no worky */ |
| 807 | if (pattern_head == NULL) { | 817 | if (pattern_head == NULL) { |
| 808 | char *pattern; | ||
| 809 | if (*argv == NULL) | 818 | if (*argv == NULL) |
| 810 | bb_show_usage(); | 819 | bb_show_usage(); |
| 811 | pattern = new_grep_list_data(*argv++, 0); | 820 | load_pattern_list(&pattern_head, *argv++); |
| 812 | llist_add_to(&pattern_head, pattern); | ||
| 813 | } | 821 | } |
| 814 | 822 | ||
| 815 | /* argv[0..(argc-1)] should be names of file to grep through. If | 823 | /* argv[0..(argc-1)] should be names of file to grep through. If |
diff --git a/miscutils/mim.c b/miscutils/mim.c new file mode 100644 index 000000000..d9b4694cb --- /dev/null +++ b/miscutils/mim.c | |||
| @@ -0,0 +1,15 @@ | |||
| 1 | //config:config MIM | ||
| 2 | //config: bool "mim (0.5 kb)" | ||
| 3 | //config: default y | ||
| 4 | //config: depends on FEATURE_SH_EMBEDDED_SCRIPTS | ||
| 5 | //config: help | ||
| 6 | //config: Run a script from a Makefile-like specification file. | ||
| 7 | //config: Unlike 'make' dependencies aren't supported. | ||
| 8 | |||
| 9 | //applet:IF_MIM(APPLET_SCRIPTED(mim, scripted, BB_DIR_USR_SBIN, BB_SUID_DROP, mim)) | ||
| 10 | |||
| 11 | //usage:#define mim_trivial_usage | ||
| 12 | //usage: "[-f FILE] [SHELL_OPTIONS] [TARGET] ..." | ||
| 13 | //usage:#define mim_full_usage "\n\n" | ||
| 14 | //usage: "Run a script from a Makefile-like specification file\n" | ||
| 15 | //usage: "\n -f FILE Spec file (default Mimfile)" | ||
diff --git a/networking/httpd.c b/networking/httpd.c index efe57ecf7..eeaa4bec1 100644 --- a/networking/httpd.c +++ b/networking/httpd.c | |||
| @@ -2878,10 +2878,16 @@ int httpd_main(int argc UNUSED_PARAM, char **argv) | |||
| 2878 | mingw_daemonize(argv); | 2878 | mingw_daemonize(argv); |
| 2879 | #endif | 2879 | #endif |
| 2880 | 2880 | ||
| 2881 | /* Chdir to home (unless we were re-execed for NOMMU case: | ||
| 2882 | * we are already in the home dir then). | ||
| 2883 | */ | ||
| 2881 | #if ENABLE_PLATFORM_MINGW32 | 2884 | #if ENABLE_PLATFORM_MINGW32 |
| 2882 | if (!(opt & OPT_INETD)) | 2885 | if (!(opt & OPT_INETD)) |
| 2886 | #else | ||
| 2887 | if (!re_execed) | ||
| 2883 | #endif | 2888 | #endif |
| 2884 | xchdir(home_httpd); | 2889 | xchdir(home_httpd); |
| 2890 | |||
| 2885 | if (!(opt & OPT_INETD)) { | 2891 | if (!(opt & OPT_INETD)) { |
| 2886 | #ifdef SIGCHLD | 2892 | #ifdef SIGCHLD |
| 2887 | signal(SIGCHLD, SIG_IGN); | 2893 | signal(SIGCHLD, SIG_IGN); |
diff --git a/networking/wget.c b/networking/wget.c index 4365c76ce..bc237c4a8 100644 --- a/networking/wget.c +++ b/networking/wget.c | |||
| @@ -91,6 +91,9 @@ | |||
| 91 | //config: patches, but do want to waste bandwidth expaining how wrong | 91 | //config: patches, but do want to waste bandwidth expaining how wrong |
| 92 | //config: it is, you will be ignored. | 92 | //config: it is, you will be ignored. |
| 93 | //config: | 93 | //config: |
| 94 | //config: FEATURE_WGET_OPENSSL does implement TLS verification | ||
| 95 | //config: using the certificates available to OpenSSL. | ||
| 96 | //config: | ||
| 94 | //config:config FEATURE_WGET_OPENSSL | 97 | //config:config FEATURE_WGET_OPENSSL |
| 95 | //config: bool "Try to connect to HTTPS using openssl" | 98 | //config: bool "Try to connect to HTTPS using openssl" |
| 96 | //config: default y | 99 | //config: default y |
| @@ -115,6 +118,9 @@ | |||
| 115 | //config: If openssl can't be executed, internal TLS code will be used | 118 | //config: If openssl can't be executed, internal TLS code will be used |
| 116 | //config: (if you enabled it); if openssl can be executed but fails later, | 119 | //config: (if you enabled it); if openssl can be executed but fails later, |
| 117 | //config: wget can't detect this, and download will fail. | 120 | //config: wget can't detect this, and download will fail. |
| 121 | //config: | ||
| 122 | //config: By default TLS verification is performed, unless | ||
| 123 | //config: --no-check-certificate option is passed. | ||
| 118 | 124 | ||
| 119 | //applet:IF_WGET(APPLET(wget, BB_DIR_USR_BIN, BB_SUID_DROP)) | 125 | //applet:IF_WGET(APPLET(wget, BB_DIR_USR_BIN, BB_SUID_DROP)) |
| 120 | 126 | ||
| @@ -124,8 +130,11 @@ | |||
| 124 | //usage: IF_FEATURE_WGET_LONG_OPTIONS( | 130 | //usage: IF_FEATURE_WGET_LONG_OPTIONS( |
| 125 | //usage: "[-c|--continue] [--spider] [-q|--quiet] [-O|--output-document FILE]\n" | 131 | //usage: "[-c|--continue] [--spider] [-q|--quiet] [-O|--output-document FILE]\n" |
| 126 | //usage: " [-o|--output-file FILE] [--header 'header: value'] [-Y|--proxy on/off]\n" | 132 | //usage: " [-o|--output-file FILE] [--header 'header: value'] [-Y|--proxy on/off]\n" |
| 133 | //usage: IF_FEATURE_WGET_OPENSSL( | ||
| 134 | //usage: " [--no-check-certificate]\n" | ||
| 135 | //usage: ) | ||
| 127 | /* Since we ignore these opts, we don't show them in --help */ | 136 | /* Since we ignore these opts, we don't show them in --help */ |
| 128 | /* //usage: " [--no-check-certificate] [--no-cache] [--passive-ftp] [-t TRIES]" */ | 137 | /* //usage: " [--no-cache] [--passive-ftp] [-t TRIES]" */ |
| 129 | /* //usage: " [-nv] [-nc] [-nH] [-np]" */ | 138 | /* //usage: " [-nv] [-nc] [-nH] [-np]" */ |
| 130 | //usage: " [-P DIR] [-S|--server-response] [-U|--user-agent AGENT]" IF_FEATURE_WGET_TIMEOUT(" [-T SEC]") " URL..." | 139 | //usage: " [-P DIR] [-S|--server-response] [-U|--user-agent AGENT]" IF_FEATURE_WGET_TIMEOUT(" [-T SEC]") " URL..." |
| 131 | //usage: ) | 140 | //usage: ) |
| @@ -137,7 +146,9 @@ | |||
| 137 | //usage: "Retrieve files via HTTP or FTP\n" | 146 | //usage: "Retrieve files via HTTP or FTP\n" |
| 138 | //usage: IF_FEATURE_WGET_LONG_OPTIONS( | 147 | //usage: IF_FEATURE_WGET_LONG_OPTIONS( |
| 139 | //usage: "\n --spider Only check URL existence: $? is 0 if exists" | 148 | //usage: "\n --spider Only check URL existence: $? is 0 if exists" |
| 140 | ///////: "\n --no-check-certificate Don't validate the server's certificate" | 149 | //usage: IF_FEATURE_WGET_OPENSSL( |
| 150 | //usage: "\n --no-check-certificate Don't validate the server's certificate" | ||
| 151 | //usage: ) | ||
| 141 | //usage: ) | 152 | //usage: ) |
| 142 | //usage: "\n -c Continue retrieval of aborted transfer" | 153 | //usage: "\n -c Continue retrieval of aborted transfer" |
| 143 | //usage: "\n -q Quiet" | 154 | //usage: "\n -q Quiet" |
| @@ -668,7 +679,7 @@ static int spawn_https_helper_openssl(const char *host, unsigned port) | |||
| 668 | pid = xvfork(); | 679 | pid = xvfork(); |
| 669 | if (pid == 0) { | 680 | if (pid == 0) { |
| 670 | /* Child */ | 681 | /* Child */ |
| 671 | char *argv[8]; | 682 | char *argv[9]; |
| 672 | 683 | ||
| 673 | close(sp[0]); | 684 | close(sp[0]); |
| 674 | xmove_fd(sp[1], 0); | 685 | xmove_fd(sp[1], 0); |
| @@ -695,6 +706,9 @@ static int spawn_https_helper_openssl(const char *host, unsigned port) | |||
| 695 | argv[5] = (char*)"-servername"; | 706 | argv[5] = (char*)"-servername"; |
| 696 | argv[6] = (char*)servername; | 707 | argv[6] = (char*)servername; |
| 697 | } | 708 | } |
| 709 | if (!(option_mask32 & WGET_OPT_NO_CHECK_CERT)) { | ||
| 710 | argv[7] = (char*)"-verify_return_error"; | ||
| 711 | } | ||
| 698 | 712 | ||
| 699 | BB_EXECVP(argv[0], argv); | 713 | BB_EXECVP(argv[0], argv); |
| 700 | xmove_fd(3, 2); | 714 | xmove_fd(3, 2); |
diff --git a/scripts/Kbuild.include b/scripts/Kbuild.include index 6ec1809a2..5b4db5c2c 100644 --- a/scripts/Kbuild.include +++ b/scripts/Kbuild.include | |||
| @@ -4,6 +4,7 @@ | |||
| 4 | # Convinient variables | 4 | # Convinient variables |
| 5 | comma := , | 5 | comma := , |
| 6 | squote := ' | 6 | squote := ' |
| 7 | quote := " | ||
| 7 | empty := | 8 | empty := |
| 8 | space := $(empty) $(empty) | 9 | space := $(empty) $(empty) |
| 9 | 10 | ||
diff --git a/scripts/Makefile.IMA b/scripts/Makefile.IMA index f155108d7..1e3005864 100644 --- a/scripts/Makefile.IMA +++ b/scripts/Makefile.IMA | |||
| @@ -49,7 +49,6 @@ OBJCOPY = $(CROSS_COMPILE)objcopy | |||
| 49 | OBJDUMP = $(CROSS_COMPILE)objdump | 49 | OBJDUMP = $(CROSS_COMPILE)objdump |
| 50 | 50 | ||
| 51 | CFLAGS := $(CFLAGS) | 51 | CFLAGS := $(CFLAGS) |
| 52 | CPPFLAGS += -D"KBUILD_STR(s)=\#s" #-Q | ||
| 53 | 52 | ||
| 54 | # We need some generic definitions | 53 | # We need some generic definitions |
| 55 | include $(srctree)/scripts/Kbuild.include | 54 | include $(srctree)/scripts/Kbuild.include |
diff --git a/scripts/Makefile.lib b/scripts/Makefile.lib index 3e54ea712..d8d768a28 100644 --- a/scripts/Makefile.lib +++ b/scripts/Makefile.lib | |||
| @@ -81,10 +81,10 @@ obj-dirs := $(addprefix $(obj)/,$(obj-dirs)) | |||
| 81 | # Note: It's possible that one object gets potentially linked into more | 81 | # Note: It's possible that one object gets potentially linked into more |
| 82 | # than one module. In that case KBUILD_MODNAME will be set to foo_bar, | 82 | # than one module. In that case KBUILD_MODNAME will be set to foo_bar, |
| 83 | # where foo and bar are the name of the modules. | 83 | # where foo and bar are the name of the modules. |
| 84 | name-fix = $(subst $(comma),_,$(subst -,_,$1)) | 84 | name-fix = $(squote)$(quote)$(subst $(comma),_,$(subst -,_,$1))$(quote)$(squote) |
| 85 | basename_flags = -D"KBUILD_BASENAME=KBUILD_STR($(call name-fix,$(*F)))" | 85 | basename_flags = -DKBUILD_BASENAME=$(call name-fix,$(*F)) |
| 86 | modname_flags = $(if $(filter 1,$(words $(modname))),\ | 86 | modname_flags = $(if $(filter 1,$(words $(modname))),\ |
| 87 | -D"KBUILD_MODNAME=KBUILD_STR($(call name-fix,$(modname)))") | 87 | -DKBUILD_MODNAME=$(call name-fix,$(modname))) |
| 88 | 88 | ||
| 89 | _c_flags = $(CFLAGS) $(EXTRA_CFLAGS) $(CFLAGS_$(*F).o) | 89 | _c_flags = $(CFLAGS) $(EXTRA_CFLAGS) $(CFLAGS_$(*F).o) |
| 90 | _a_flags = $(AFLAGS) $(EXTRA_AFLAGS) $(AFLAGS_$(*F).o) | 90 | _a_flags = $(AFLAGS) $(EXTRA_AFLAGS) $(AFLAGS_$(*F).o) |
| @@ -110,7 +110,7 @@ endif | |||
| 110 | 110 | ||
| 111 | c_flags = -Wp,-MD,$(depfile) $(NOSTDINC_FLAGS) $(CPPFLAGS) \ | 111 | c_flags = -Wp,-MD,$(depfile) $(NOSTDINC_FLAGS) $(CPPFLAGS) \ |
| 112 | $(__c_flags) $(modkern_cflags) \ | 112 | $(__c_flags) $(modkern_cflags) \ |
| 113 | -D"KBUILD_STR(s)=\#s" $(basename_flags) $(modname_flags) | 113 | $(basename_flags) $(modname_flags) |
| 114 | 114 | ||
| 115 | a_flags = -Wp,-MD,$(depfile) $(NOSTDINC_FLAGS) $(CPPFLAGS) \ | 115 | a_flags = -Wp,-MD,$(depfile) $(NOSTDINC_FLAGS) $(CPPFLAGS) \ |
| 116 | $(__a_flags) $(modkern_aflags) | 116 | $(__a_flags) $(modkern_aflags) |
diff --git a/scripts/trylink b/scripts/trylink index bb6b2de2f..6b74f092d 100755 --- a/scripts/trylink +++ b/scripts/trylink | |||
| @@ -50,9 +50,6 @@ check_cc() { | |||
| 50 | echo "int main(int argc,char**argv){return argv?argc:0;}" >"$tempname".c | 50 | echo "int main(int argc,char**argv){return argv?argc:0;}" >"$tempname".c |
| 51 | # Can use "-o /dev/null", but older gcc tend to *unlink it* on failure! :( | 51 | # Can use "-o /dev/null", but older gcc tend to *unlink it* on failure! :( |
| 52 | # Was using "-xc /dev/null", but we need a valid C program. | 52 | # Was using "-xc /dev/null", but we need a valid C program. |
| 53 | # "eval" may be needed if CFLAGS can contain | ||
| 54 | # '... -D"BB_VER=KBUILD_STR(1.N.M)" ...' | ||
| 55 | # and we need shell to process quotes! | ||
| 56 | $CC $CFLAGS $LDFLAGS $1 "$tempname".c -o "$tempname" >/dev/null 2>&1 | 53 | $CC $CFLAGS $LDFLAGS $1 "$tempname".c -o "$tempname" >/dev/null 2>&1 |
| 57 | exitcode=$? | 54 | exitcode=$? |
| 58 | rm -f "$tempname" "$tempname".c "$tempname".o | 55 | rm -f "$tempname" "$tempname".c "$tempname".o |
diff --git a/shell/ash.c b/shell/ash.c index c6f64e202..27e097a99 100644 --- a/shell/ash.c +++ b/shell/ash.c | |||
| @@ -9251,7 +9251,6 @@ typecmd(int argc UNUSED_PARAM, char **argv) | |||
| 9251 | return err; | 9251 | return err; |
| 9252 | } | 9252 | } |
| 9253 | 9253 | ||
| 9254 | #if ENABLE_ASH_CMDCMD | ||
| 9255 | static struct strlist * | 9254 | static struct strlist * |
| 9256 | fill_arglist(struct arglist *arglist, union node **argpp) | 9255 | fill_arglist(struct arglist *arglist, union node **argpp) |
| 9257 | { | 9256 | { |
| @@ -9268,6 +9267,7 @@ fill_arglist(struct arglist *arglist, union node **argpp) | |||
| 9268 | return *lastp; | 9267 | return *lastp; |
| 9269 | } | 9268 | } |
| 9270 | 9269 | ||
| 9270 | #if ENABLE_ASH_CMDCMD | ||
| 9271 | /* Is it "command [-p] PROG ARGS" bltin, no other opts? Return ptr to "PROG" if yes */ | 9271 | /* Is it "command [-p] PROG ARGS" bltin, no other opts? Return ptr to "PROG" if yes */ |
| 9272 | static int | 9272 | static int |
| 9273 | parse_command_args(struct arglist *arglist, union node **argpp, const char **path) | 9273 | parse_command_args(struct arglist *arglist, union node **argpp, const char **path) |
| @@ -10882,11 +10882,13 @@ evalcommand(union node *cmd, int flags) | |||
| 10882 | vlocal = !spclbltin; | 10882 | vlocal = !spclbltin; |
| 10883 | } | 10883 | } |
| 10884 | cmd_is_exec = cmdentry.u.cmd == EXECCMD; | 10884 | cmd_is_exec = cmdentry.u.cmd == EXECCMD; |
| 10885 | #if ENABLE_ASH_CMDCMD | ||
| 10885 | if (cmdentry.u.cmd != COMMANDCMD) | 10886 | if (cmdentry.u.cmd != COMMANDCMD) |
| 10886 | break; | 10887 | break; |
| 10887 | 10888 | ||
| 10888 | cmd_flag = parse_command_args(&arglist, &argp, &path); | 10889 | cmd_flag = parse_command_args(&arglist, &argp, &path); |
| 10889 | if (!cmd_flag) | 10890 | if (!cmd_flag) |
| 10891 | #endif | ||
| 10890 | break; | 10892 | break; |
| 10891 | } | 10893 | } |
| 10892 | 10894 | ||
| @@ -14574,8 +14576,7 @@ helpcmd(int argc UNUSED_PARAM, char **argv UNUSED_PARAM) | |||
| 14574 | static int FAST_FUNC | 14576 | static int FAST_FUNC |
| 14575 | historycmd(int argc UNUSED_PARAM, char **argv UNUSED_PARAM) | 14577 | historycmd(int argc UNUSED_PARAM, char **argv UNUSED_PARAM) |
| 14576 | { | 14578 | { |
| 14577 | if (line_input_state) | 14579 | show_history(line_input_state); |
| 14578 | show_history(line_input_state); | ||
| 14579 | return EXIT_SUCCESS; | 14580 | return EXIT_SUCCESS; |
| 14580 | } | 14581 | } |
| 14581 | #endif | 14582 | #endif |
diff --git a/shell/ash_test/ash-misc/exitcode_trap2.tests b/shell/ash_test/ash-misc/exitcode_trap2.tests index f259774bf..aff6d5187 100755 --- a/shell/ash_test/ash-misc/exitcode_trap2.tests +++ b/shell/ash_test/ash-misc/exitcode_trap2.tests | |||
| @@ -3,7 +3,6 @@ | |||
| 3 | $THIS_SH -c ' | 3 | $THIS_SH -c ' |
| 4 | trap "false;exit" term | 4 | trap "false;exit" term |
| 5 | kill $$ & | 5 | kill $$ & |
| 6 | (exit 42) | 6 | (sleep 1; exit 42) |
| 7 | wait | ||
| 8 | ' | 7 | ' |
| 9 | echo 42:$? | 8 | echo 42:$? |
diff --git a/shell/ash_test/ash-misc/exitcode_trap6.tests b/shell/ash_test/ash-misc/exitcode_trap6.tests index 15fb99d2d..59a07fc91 100755 --- a/shell/ash_test/ash-misc/exitcode_trap6.tests +++ b/shell/ash_test/ash-misc/exitcode_trap6.tests | |||
| @@ -5,7 +5,6 @@ $THIS_SH -c ' | |||
| 5 | trap "echo INT" int | 5 | trap "echo INT" int |
| 6 | trap "kill -int $$;exit" term | 6 | trap "kill -int $$;exit" term |
| 7 | kill $$ & | 7 | kill $$ & |
| 8 | (exit 42) | 8 | (sleep 1; exit 42) |
| 9 | wait | ||
| 10 | ' | 9 | ' |
| 11 | echo 42:$? | 10 | echo 42:$? |
diff --git a/shell/hush.c b/shell/hush.c index 0a92f5da7..cab7ea5b0 100644 --- a/shell/hush.c +++ b/shell/hush.c | |||
| @@ -10461,8 +10461,7 @@ static int FAST_FUNC builtin_help(char **argv UNUSED_PARAM) | |||
| 10461 | #if MAX_HISTORY && ENABLE_FEATURE_EDITING | 10461 | #if MAX_HISTORY && ENABLE_FEATURE_EDITING |
| 10462 | static int FAST_FUNC builtin_history(char **argv UNUSED_PARAM) | 10462 | static int FAST_FUNC builtin_history(char **argv UNUSED_PARAM) |
| 10463 | { | 10463 | { |
| 10464 | if (G.line_input_state) | 10464 | show_history(G.line_input_state); |
| 10465 | show_history(G.line_input_state); | ||
| 10466 | return EXIT_SUCCESS; | 10465 | return EXIT_SUCCESS; |
| 10467 | } | 10466 | } |
| 10468 | #endif | 10467 | #endif |
diff --git a/shell/hush_test/hush-misc/exitcode_trap2.tests b/shell/hush_test/hush-misc/exitcode_trap2.tests index f259774bf..aff6d5187 100755 --- a/shell/hush_test/hush-misc/exitcode_trap2.tests +++ b/shell/hush_test/hush-misc/exitcode_trap2.tests | |||
| @@ -3,7 +3,6 @@ | |||
| 3 | $THIS_SH -c ' | 3 | $THIS_SH -c ' |
| 4 | trap "false;exit" term | 4 | trap "false;exit" term |
| 5 | kill $$ & | 5 | kill $$ & |
| 6 | (exit 42) | 6 | (sleep 1; exit 42) |
| 7 | wait | ||
| 8 | ' | 7 | ' |
| 9 | echo 42:$? | 8 | echo 42:$? |
diff --git a/shell/hush_test/hush-misc/exitcode_trap6.tests b/shell/hush_test/hush-misc/exitcode_trap6.tests index 15fb99d2d..59a07fc91 100755 --- a/shell/hush_test/hush-misc/exitcode_trap6.tests +++ b/shell/hush_test/hush-misc/exitcode_trap6.tests | |||
| @@ -5,7 +5,6 @@ $THIS_SH -c ' | |||
| 5 | trap "echo INT" int | 5 | trap "echo INT" int |
| 6 | trap "kill -int $$;exit" term | 6 | trap "kill -int $$;exit" term |
| 7 | kill $$ & | 7 | kill $$ & |
| 8 | (exit 42) | 8 | (sleep 1; exit 42) |
| 9 | wait | ||
| 10 | ' | 9 | ' |
| 11 | echo 42:$? | 10 | echo 42:$? |
diff --git a/testsuite/grep.tests b/testsuite/grep.tests index 26f8e69cf..e38278810 100755 --- a/testsuite/grep.tests +++ b/testsuite/grep.tests | |||
| @@ -129,6 +129,12 @@ testing "grep -v -f EMPTY_FILE" \ | |||
| 129 | "" \ | 129 | "" \ |
| 130 | "test\n" | 130 | "test\n" |
| 131 | 131 | ||
| 132 | testing "grep -vxf EMPTY_FILE" \ | ||
| 133 | "grep -vxf input" \ | ||
| 134 | "test\n" \ | ||
| 135 | "" \ | ||
| 136 | "test\n" | ||
| 137 | |||
| 132 | testing "grep -Fw matches only words" \ | 138 | testing "grep -Fw matches only words" \ |
| 133 | "grep -Fw foo input" \ | 139 | "grep -Fw foo input" \ |
| 134 | "" \ | 140 | "" \ |
| @@ -184,6 +190,18 @@ testing "grep -x -v -e EXP1 -e EXP2 finds nothing if either EXP matches" \ | |||
| 184 | "" \ | 190 | "" \ |
| 185 | " aa bb cc\n" | 191 | " aa bb cc\n" |
| 186 | 192 | ||
| 193 | testing "grep PATTERN can be a newline-delimited list" \ | ||
| 194 | 'grep -Fv "$(printf "foo\nbar\n")"' \ | ||
| 195 | "baz\n" \ | ||
| 196 | "" \ | ||
| 197 | "foo\nbar\nbaz\n" | ||
| 198 | |||
| 199 | testing "grep -e PATTERN can be a newline-delimited list" \ | ||
| 200 | 'grep -Fv -e "$(printf "foo\nbar\n")"' \ | ||
| 201 | "baz\n" \ | ||
| 202 | "" \ | ||
| 203 | "foo\nbar\nbaz\n" | ||
| 204 | |||
| 187 | # -r on symlink to dir should recurse into dir | 205 | # -r on symlink to dir should recurse into dir |
| 188 | mkdir -p grep.testdir/foo | 206 | mkdir -p grep.testdir/foo |
| 189 | echo bar > grep.testdir/foo/file | 207 | echo bar > grep.testdir/foo/file |
