lineedit: match local directories when searching PATH

When tab-completing a command we search PATH if the partial text
doesn't include a slash.  Also match subdirectories of the current
directory, in case the user intends to run a binary from one of
them.

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

Signed-off-by: Ron Yorston <rmy@pobox.com>
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
diff --git a/libbb/lineedit.c b/libbb/lineedit.c
index d64d7d0..5eb701f 100644
--- a/libbb/lineedit.c
+++ b/libbb/lineedit.c
@@ -753,7 +753,7 @@
 		return 1;
 
 	tmp = (char*)pth;
-	npth = 1; /* path component count */
+	npth = 2; /* path component count */
 	while (1) {
 		tmp = strchr(tmp, ':');
 		if (!tmp)
@@ -776,6 +776,8 @@
 			break; /* :<empty> */
 		res[npth++] = tmp;
 	}
+	/* special case: match subdirectories of the current directory */
+	res[npth++] = NULL;
 	return npth;
 }
 
@@ -843,6 +845,11 @@
 		struct stat st;
 		char *found;
 
+		if (paths[i] == NULL) {
+			type = FIND_DIR_ONLY;
+			paths[i] = (char *)".";
+		}
+
 		dir = opendir(paths[i]);
 		if (!dir)
 			continue; /* don't print an error */