Devices can have a dot in the name, so do not expect the full device name before the first dot. Signed-off-by: Sascha Hauer <s.hauer@xxxxxxxxxxxxxx> --- common/complete.c | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/common/complete.c b/common/complete.c index aee21ea..2dab7d1 100644 --- a/common/complete.c +++ b/common/complete.c @@ -279,7 +279,7 @@ static int env_param_complete(struct string_list *sl, char *instr, int eval) struct env_context *c; char *instr_param; int len; - char end = '='; + char end = '=', *pos, *dot; char *begin = ""; if (!instr) @@ -290,7 +290,6 @@ static int env_param_complete(struct string_list *sl, char *instr, int eval) end = ' '; } - instr_param = strchr(instr, '.'); len = strlen(instr); c = get_current_context(); @@ -312,20 +311,21 @@ static int env_param_complete(struct string_list *sl, char *instr, int eval) c = c->parent; } - if (instr_param) { + pos = instr; + while ((dot = strchr(pos, '.'))) { char *devname; - len = (instr_param - instr); - - devname = xstrndup(instr, len); + devname = xstrndup(instr, dot - instr); instr_param++; dev = get_device_by_name(devname); free(devname); + if (dev) - device_param_complete(dev, sl, instr_param, eval); - return 0; + device_param_complete(dev, sl, dot + 1, eval); + + pos = dot + 1; } len = strlen(instr); -- 2.9.3 _______________________________________________ barebox mailing list barebox@xxxxxxxxxxxxxxxxxxx http://lists.infradead.org/mailman/listinfo/barebox