summaryrefslogtreecommitdiffstats
path: root/common/globalvar.c
diff options
context:
space:
mode:
authorSascha Hauer <s.hauer@pengutronix.de>2016-10-18 14:36:49 +0200
committerSascha Hauer <s.hauer@pengutronix.de>2016-10-18 22:45:32 +0200
commiteca7871bced78837154ad52c42864ba3c87a9904 (patch)
treed6ad489173bde58cef1c41c8f01f2698fa661343 /common/globalvar.c
parent57aac5f1ff63b4997d3dc665c4c05f5470a1e681 (diff)
downloadbarebox-eca7871bced78837154ad52c42864ba3c87a9904.tar.gz
barebox-eca7871bced78837154ad52c42864ba3c87a9904.tar.xz
complete: Add completion for nv and globalvar commands
The 'nv' command is often used to create a nv variable for an existing global variable, so add a command completion function for this. Signed-off-by: Sascha Hauer <s.hauer@pengutronix.de>
Diffstat (limited to 'common/globalvar.c')
-rw-r--r--common/globalvar.c28
1 files changed, 28 insertions, 0 deletions
diff --git a/common/globalvar.c b/common/globalvar.c
index fb69db973a..e75cac96d7 100644
--- a/common/globalvar.c
+++ b/common/globalvar.c
@@ -626,3 +626,31 @@ static void nv_exit(void)
nvvar_save();
}
predevshutdown_exitcall(nv_exit);
+
+static int nv_global_param_complete(struct device_d *dev, struct string_list *sl,
+ char *instr, int eval)
+{
+ struct param_d *param;
+ int len;
+
+ len = strlen(instr);
+
+ list_for_each_entry(param, &dev->parameters, list) {
+ if (strncmp(instr, param->name, len))
+ continue;
+
+ string_list_add_asprintf(sl, "%s%c",
+ param->name,
+ eval ? ' ' : '=');
+ }
+
+ return 0;
+}
+
+int nv_global_complete(struct string_list *sl, char *instr)
+{
+ nv_global_param_complete(&global_device, sl, instr, 0);
+ nv_global_param_complete(&nv_device, sl, instr, 0);
+
+ return 0;
+}