summaryrefslogtreecommitdiffstats
path: root/include
diff options
context:
space:
mode:
authorJean-Christophe PLAGNIOL-VILLARD <plagnioj@jcrosoft.com>2011-06-06 23:14:38 +0800
committerJean-Christophe PLAGNIOL-VILLARD <plagnioj@jcrosoft.com>2012-04-30 20:29:50 +0800
commit9dfb0030ee60306bfd1e6e86560685c44bede9e7 (patch)
treef39c64d6d00e38c946eb91061c570e4773a08176 /include
parentc3d60e6df33c47401813c4529d23d25a76c6a982 (diff)
downloadbarebox-9dfb0030ee60306bfd1e6e86560685c44bede9e7.tar.gz
barebox-9dfb0030ee60306bfd1e6e86560685c44bede9e7.tar.xz
complete: add generic command complete framework
introduce generic command specific complete callback Signed-off-by: Jean-Christophe PLAGNIOL-VILLARD <plagnioj@jcrosoft.com>
Diffstat (limited to 'include')
-rw-r--r--include/command.h8
-rw-r--r--include/complete.h7
2 files changed, 15 insertions, 0 deletions
diff --git a/include/command.h b/include/command.h
index b2e84496c..80cbf5603 100644
--- a/include/command.h
+++ b/include/command.h
@@ -40,6 +40,8 @@ extern struct list_head command_list;
#define for_each_command(cmd) list_for_each_entry(cmd, &command_list, list)
+struct string_list;
+
/*
* Monitor Command Table
*/
@@ -48,6 +50,7 @@ struct command {
const char **aliases;
/* Implementation function */
int (*cmd)(int, char *[]);
+ int (*complete)(struct string_list *sl, char *instr);
const char *usage; /* Usage message (short) */
struct list_head list; /* List of commands */
@@ -88,6 +91,11 @@ const struct command __barebox_cmd_##_name \
#define BAREBOX_CMD_END \
};
+#ifdef CONFIG_AUTO_COMPLETE
+#define BAREBOX_CMD_COMPLETE(_cpt) .complete = _cpt,
+#else
+#define BAREBOX_CMD_COMPLETE(_cpt)
+#endif
#define BAREBOX_CMD_HELP_START(_name) \
static const __maybe_unused char cmd_##_name##_help[] =
diff --git a/include/complete.h b/include/complete.h
index cc0e88de0..0c8ebd6a3 100644
--- a/include/complete.h
+++ b/include/complete.h
@@ -2,9 +2,16 @@
#define __COMPLETE_
#include <linux/list.h>
+#include <malloc.h>
+#include <stringlist.h>
+
+#define COMPLETE_END 0
+#define COMPLETE_CONTINUE 1
int complete(char *instr, char **outstr);
void complete_reset(void);
+int command_complete(struct string_list *sl, char *instr);
+
#endif /* __COMPLETE_ */