Signed-off-by: Jean-Christophe PLAGNIOL-VILLARD <plagnioj@xxxxxxxxxxxx> --- common/complete.c | 20 ++++++++++++++++++++ drivers/base/driver.c | 2 ++ include/complete.h | 1 + 3 files changed, 23 insertions(+), 0 deletions(-) diff --git a/common/complete.c b/common/complete.c index 9515072..cf06101 100644 --- a/common/complete.c +++ b/common/complete.c @@ -145,6 +145,26 @@ int command_complete(struct string_list *sl, char *instr) return 0; } +int device_complete(struct string_list *sl, char *instr) +{ + struct device_d *dev; + int len; + + if (!instr) + instr = ""; + + len = strlen(instr); + + for_each_device(dev) { + if (strncmp(instr, dev_name(dev), len)) + continue; + + string_list_add_asprintf(sl, "%s ", dev_name(dev)); + } + + return 0; +} + static int device_param_complete(char *begin, struct device_d *dev, struct string_list *sl, char *instr) { diff --git a/drivers/base/driver.c b/drivers/base/driver.c index 2d206f9..03b1834 100644 --- a/drivers/base/driver.c +++ b/drivers/base/driver.c @@ -33,6 +33,7 @@ #include <errno.h> #include <fs.h> #include <linux/list.h> +#include <complete.h> LIST_HEAD(device_list); EXPORT_SYMBOL(device_list); @@ -443,6 +444,7 @@ BAREBOX_CMD_START(devinfo) .cmd = do_devinfo, .usage = "Show information about devices and drivers.", BAREBOX_CMD_HELP(cmd_devinfo_help) + BAREBOX_CMD_COMPLETE(device_complete) BAREBOX_CMD_END #endif diff --git a/include/complete.h b/include/complete.h index 3f1fe89..8dfc99c 100644 --- a/include/complete.h +++ b/include/complete.h @@ -9,6 +9,7 @@ int complete(char *instr, char **outstr); void complete_reset(void); int command_complete(struct string_list *sl, char *instr); +int device_complete(struct string_list *sl, char *instr); #endif /* __COMPLETE_ */ -- 1.7.9.1 _______________________________________________ barebox mailing list barebox@xxxxxxxxxxxxxxxxxxx http://lists.infradead.org/mailman/listinfo/barebox