[git commit] lineedit: autocompletion for embedded scripts

Denys Vlasenko vda.linux at googlemail.com
Thu Nov 1 11:51:10 UTC 2018


commit: https://git.busybox.net/busybox/commit/?id=c9e161277eae5d2af39704e220ca5652e69bc428
branch: https://git.busybox.net/busybox/commit/?id=refs/heads/master

function                                             old     new   delta
complete_cmd_dir_file                                811     826     +15

Signed-off-by: Ron Yorston <rmy at pobox.com>
Signed-off-by: Denys Vlasenko <vda.linux at googlemail.com>
---
 libbb/lineedit.c | 14 ++++++++++----
 1 file changed, 10 insertions(+), 4 deletions(-)

diff --git a/libbb/lineedit.c b/libbb/lineedit.c
index aef1911d9..618e7c221 100644
--- a/libbb/lineedit.c
+++ b/libbb/lineedit.c
@@ -812,14 +812,20 @@ static NOINLINE unsigned complete_cmd_dir_file(const char *command, int type)
 	}
 	pf_len = strlen(pfind);
 
-# if ENABLE_FEATURE_SH_STANDALONE && NUM_APPLETS != 1
+# if ENABLE_FEATURE_SH_STANDALONE && (NUM_APPLETS != 1 || NUM_SCRIPTS > 0)
 	if (type == FIND_EXE_ONLY && !dirbuf) {
-		const char *p = applet_names;
-
+		const char *p;
+#  if NUM_APPLETS != 1 && NUM_SCRIPTS > 0
+		for (i = 0, p = applet_names; i < 2; i++, p = script_names)
+#  elif NUM_APPLETS != 1 /* and NUM_SCRIPTS == 0 */
+		p = applet_names;
+#  else /* NUM_APPLETS == 1 && NUM_SCRIPTS > 0 */
+		p = script_names;
+#  endif
 		while (*p) {
 			if (strncmp(pfind, p, pf_len) == 0)
 				add_match(xstrdup(p));
-			while (*p++ != '\0')
+			while (*p++)
 				continue;
 		}
 	}


More information about the busybox-cvs mailing list