9
0
Fork 0

complete: Fix completion after options

the command specific complete callbacks only work when no
option is typed already. For example "devinfo <tab><tab>"
correctly completes the devices, but "devinfo -x <tab><tab>"
does nothing. That is because the options are passed to
the input string of the completion handlers. Skip the option
string by finding the last space in the input string. This
is not perfect since "devinfo -f<tab><tab>" still does not
work, but it's better than what we have now.

Signed-off-by: Sascha Hauer <s.hauer@pengutronix.de>
This commit is contained in:
Sascha Hauer 2014-05-19 13:43:19 +02:00
parent 46e8eb8219
commit e5c59c3867
1 changed files with 5 additions and 0 deletions

View File

@ -277,11 +277,16 @@ static char* cmd_complete_lookup(struct string_list *sl, char *instr)
int len;
int ret = COMPLETE_END;
char *res = NULL;
char *t;
for_each_command(cmdtp) {
len = strlen(cmdtp->name);
if (!strncmp(instr, cmdtp->name, len) && instr[len] == ' ') {
instr += len + 1;
t = strrchr(instr, ' ');
if (t)
instr = t + 1;
if (cmdtp->complete) {
ret = cmdtp->complete(sl, instr);
res = instr;