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:
parent
46e8eb8219
commit
e5c59c3867
|
@ -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;
|
||||
|
|
Loading…
Reference in New Issue