[git commit] lineedit: omit directories when tab-completing from PATH

Denys Vlasenko vda.linux at googlemail.com
Wed Dec 16 08:38:18 UTC 2020


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

Only files should be matched when using PATH for tab-completion.

function                                             old     new   delta
complete_cmd_dir_file                                883     894     +11
------------------------------------------------------------------------------
(add/remove: 0/0 grow/shrink: 1/0 up/down: 11/0)               Total: 11 bytes

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

diff --git a/libbb/lineedit.c b/libbb/lineedit.c
index a3b798e3f..d64d7d0c2 100644
--- a/libbb/lineedit.c
+++ b/libbb/lineedit.c
@@ -871,6 +871,9 @@ static NOINLINE unsigned complete_cmd_dir_file(const char *command, int type)
 			strcpy(found, name_found);
 
 			if (S_ISDIR(st.st_mode)) {
+				/* skip directories if searching PATH */
+				if (type == FIND_EXE_ONLY && !dirbuf)
+					goto cont;
 				/* name is a directory, add slash */
 				found[len] = '/';
 				found[len + 1] = '\0';


More information about the busybox-cvs mailing list