diff options
Diffstat (limited to 'libbb')
-rw-r--r-- | libbb/appletlib.c | 72 | ||||
-rw-r--r-- | libbb/lineedit.c | 20 |
2 files changed, 36 insertions, 56 deletions
diff --git a/libbb/appletlib.c b/libbb/appletlib.c index 6dfaf1f41..a0ebaca29 100644 --- a/libbb/appletlib.c +++ b/libbb/appletlib.c | |||
@@ -51,7 +51,7 @@ | |||
51 | #include "usage_compressed.h" | 51 | #include "usage_compressed.h" |
52 | 52 | ||
53 | #if ENABLE_ASH_EMBEDDED_SCRIPTS | 53 | #if ENABLE_ASH_EMBEDDED_SCRIPTS |
54 | # define DEFINE_script_names 1 | 54 | # define DEFINE_SCRIPT_DATA 1 |
55 | # include "embedded_scripts.h" | 55 | # include "embedded_scripts.h" |
56 | #else | 56 | #else |
57 | # define NUM_SCRIPTS 0 | 57 | # define NUM_SCRIPTS 0 |
@@ -818,27 +818,21 @@ int busybox_main(int argc UNUSED_PARAM, char **argv) | |||
818 | /* prevent last comma to be in the very last pos */ | 818 | /* prevent last comma to be in the very last pos */ |
819 | output_width--; | 819 | output_width--; |
820 | a = applet_names; | 820 | a = applet_names; |
821 | { | 821 | while (*a) { |
822 | # if NUM_SCRIPTS > 0 | 822 | int len2 = strlen(a) + 2; |
823 | int i; | 823 | if (col >= (int)output_width - len2) { |
824 | for (i = 0; i < 2; i++, a = script_names) | 824 | full_write2_str(",\n"); |
825 | # endif | 825 | col = 0; |
826 | while (*a) { | 826 | } |
827 | int len2 = strlen(a) + 2; | 827 | if (col == 0) { |
828 | if (col >= (int)output_width - len2) { | 828 | col = 6; |
829 | full_write2_str(",\n"); | 829 | full_write2_str("\t"); |
830 | col = 0; | 830 | } else { |
831 | } | 831 | full_write2_str(", "); |
832 | if (col == 0) { | ||
833 | col = 6; | ||
834 | full_write2_str("\t"); | ||
835 | } else { | ||
836 | full_write2_str(", "); | ||
837 | } | ||
838 | full_write2_str(a); | ||
839 | col += len2; | ||
840 | a += len2 - 1; | ||
841 | } | 832 | } |
833 | full_write2_str(a); | ||
834 | col += len2; | ||
835 | a += len2 - 1; | ||
842 | } | 836 | } |
843 | full_write2_str("\n"); | 837 | full_write2_str("\n"); |
844 | return 0; | 838 | return 0; |
@@ -946,20 +940,25 @@ void FAST_FUNC run_applet_no_and_exit(int applet_no, const char *name, char **ar | |||
946 | # endif /* NUM_APPLETS > 0 */ | 940 | # endif /* NUM_APPLETS > 0 */ |
947 | 941 | ||
948 | # if NUM_SCRIPTS > 0 | 942 | # if NUM_SCRIPTS > 0 |
949 | int FAST_FUNC | 943 | static int find_script_by_name(const char *name) |
950 | find_script_by_name(const char *name) | ||
951 | { | 944 | { |
952 | const char *s = script_names; | 945 | int i; |
953 | int i = 0; | 946 | int applet = find_applet_by_name(name); |
954 | 947 | ||
955 | while (*s) { | 948 | if (applet >= 0) { |
956 | if (strcmp(name, s) == 0) | 949 | for (i = 0; i < NUM_SCRIPTS; ++i) |
957 | return i; | 950 | if (applet_numbers[i] == applet) |
958 | i++; | 951 | return i; |
959 | while (*s++ != '\0') | ||
960 | continue; | ||
961 | } | 952 | } |
962 | return -0x10000; /* make it so that NUM_APPLETS + <error> is still < 0 */ | 953 | return -1; |
954 | } | ||
955 | |||
956 | int scripted_main(int argc UNUSED_PARAM, char **argv) | ||
957 | { | ||
958 | int script = find_script_by_name(applet_name); | ||
959 | if (script >= 0) | ||
960 | exit(ash_main(-script - 1, argv)); | ||
961 | return 0; | ||
963 | } | 962 | } |
964 | 963 | ||
965 | char* FAST_FUNC | 964 | char* FAST_FUNC |
@@ -978,7 +977,7 @@ get_script_content(unsigned n) | |||
978 | } | 977 | } |
979 | # endif /* NUM_SCRIPTS > 0 */ | 978 | # endif /* NUM_SCRIPTS > 0 */ |
980 | 979 | ||
981 | # if ENABLE_BUSYBOX || NUM_APPLETS > 0 || NUM_SCRIPTS > 0 | 980 | # if ENABLE_BUSYBOX || NUM_APPLETS > 0 |
982 | static NORETURN void run_applet_and_exit(const char *name, char **argv) | 981 | static NORETURN void run_applet_and_exit(const char *name, char **argv) |
983 | { | 982 | { |
984 | # if ENABLE_BUSYBOX | 983 | # if ENABLE_BUSYBOX |
@@ -993,13 +992,6 @@ static NORETURN void run_applet_and_exit(const char *name, char **argv) | |||
993 | run_applet_no_and_exit(applet, name, argv); | 992 | run_applet_no_and_exit(applet, name, argv); |
994 | } | 993 | } |
995 | # endif | 994 | # endif |
996 | # if NUM_SCRIPTS > 0 | ||
997 | { | ||
998 | int script = find_script_by_name(name); | ||
999 | if (script >= 0) | ||
1000 | exit(ash_main(-script - 1, argv)); | ||
1001 | } | ||
1002 | # endif | ||
1003 | 995 | ||
1004 | /*bb_error_msg_and_die("applet not found"); - links in printf */ | 996 | /*bb_error_msg_and_die("applet not found"); - links in printf */ |
1005 | full_write2_str(applet_name); | 997 | full_write2_str(applet_name); |
diff --git a/libbb/lineedit.c b/libbb/lineedit.c index 618e7c221..b1e971f88 100644 --- a/libbb/lineedit.c +++ b/libbb/lineedit.c | |||
@@ -41,12 +41,6 @@ | |||
41 | #include "busybox.h" | 41 | #include "busybox.h" |
42 | #include "NUM_APPLETS.h" | 42 | #include "NUM_APPLETS.h" |
43 | #include "unicode.h" | 43 | #include "unicode.h" |
44 | #if ENABLE_ASH_EMBEDDED_SCRIPTS | ||
45 | # include "embedded_scripts.h" | ||
46 | #else | ||
47 | # define NUM_SCRIPTS 0 | ||
48 | #endif | ||
49 | |||
50 | #ifndef _POSIX_VDISABLE | 44 | #ifndef _POSIX_VDISABLE |
51 | # define _POSIX_VDISABLE '\0' | 45 | # define _POSIX_VDISABLE '\0' |
52 | #endif | 46 | #endif |
@@ -812,20 +806,14 @@ static NOINLINE unsigned complete_cmd_dir_file(const char *command, int type) | |||
812 | } | 806 | } |
813 | pf_len = strlen(pfind); | 807 | pf_len = strlen(pfind); |
814 | 808 | ||
815 | # if ENABLE_FEATURE_SH_STANDALONE && (NUM_APPLETS != 1 || NUM_SCRIPTS > 0) | 809 | # if ENABLE_FEATURE_SH_STANDALONE && NUM_APPLETS != 1 |
816 | if (type == FIND_EXE_ONLY && !dirbuf) { | 810 | if (type == FIND_EXE_ONLY && !dirbuf) { |
817 | const char *p; | 811 | const char *p = applet_names; |
818 | # if NUM_APPLETS != 1 && NUM_SCRIPTS > 0 | 812 | |
819 | for (i = 0, p = applet_names; i < 2; i++, p = script_names) | ||
820 | # elif NUM_APPLETS != 1 /* and NUM_SCRIPTS == 0 */ | ||
821 | p = applet_names; | ||
822 | # else /* NUM_APPLETS == 1 && NUM_SCRIPTS > 0 */ | ||
823 | p = script_names; | ||
824 | # endif | ||
825 | while (*p) { | 813 | while (*p) { |
826 | if (strncmp(pfind, p, pf_len) == 0) | 814 | if (strncmp(pfind, p, pf_len) == 0) |
827 | add_match(xstrdup(p)); | 815 | add_match(xstrdup(p)); |
828 | while (*p++) | 816 | while (*p++ != '\0') |
829 | continue; | 817 | continue; |
830 | } | 818 | } |
831 | } | 819 | } |