diff options
author | Jean-Christophe PLAGNIOL-VILLARD <plagnioj@jcrosoft.com> | 2011-06-06 23:14:38 +0800 |
---|---|---|
committer | Jean-Christophe PLAGNIOL-VILLARD <plagnioj@jcrosoft.com> | 2012-04-30 20:29:50 +0800 |
commit | 9dfb0030ee60306bfd1e6e86560685c44bede9e7 (patch) | |
tree | f39c64d6d00e38c946eb91061c570e4773a08176 /include | |
parent | c3d60e6df33c47401813c4529d23d25a76c6a982 (diff) | |
download | barebox-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.h | 8 | ||||
-rw-r--r-- | include/complete.h | 7 |
2 files changed, 15 insertions, 0 deletions
diff --git a/include/command.h b/include/command.h index b2e84496c8..80cbf5603f 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 cc0e88de0f..0c8ebd6a3b 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_ */ |