aboutsummaryrefslogtreecommitdiff
path: root/libbb
diff options
context:
space:
mode:
Diffstat (limited to 'libbb')
-rw-r--r--libbb/appletlib.c72
-rw-r--r--libbb/lineedit.c20
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
949int FAST_FUNC 943static int find_script_by_name(const char *name)
950find_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
956int 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
965char* FAST_FUNC 964char* 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
982static NORETURN void run_applet_and_exit(const char *name, char **argv) 981static 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 }