[PATCH 10/11] complete: add delpart complete support
Jean-Christophe PLAGNIOL-VILLARD
plagnioj at jcrosoft.com
Mon Apr 30 08:26:03 EDT 2012
Signed-off-by: Jean-Christophe PLAGNIOL-VILLARD <plagnioj at jcrosoft.com>
---
commands/partition.c | 2 ++
fs/devfs-core.c | 19 +++++++++++++++++++
include/complete.h | 1 +
3 files changed, 22 insertions(+), 0 deletions(-)
diff --git a/commands/partition.c b/commands/partition.c
index 4892261..6cce042 100644
--- a/commands/partition.c
+++ b/commands/partition.c
@@ -32,6 +32,7 @@
#include <common.h>
#include <command.h>
+#include <complete.h>
#include <driver.h>
#include <malloc.h>
#include <partition.h>
@@ -225,5 +226,6 @@ BAREBOX_CMD_START(delpart)
.cmd = do_delpart,
.usage = "delete partition(s)",
BAREBOX_CMD_HELP(cmd_delpart_help)
+ BAREBOX_CMD_COMPLETE(devfs_partition_complete)
BAREBOX_CMD_END
diff --git a/fs/devfs-core.c b/fs/devfs-core.c
index 3014d0e..ff6a976 100644
--- a/fs/devfs-core.c
+++ b/fs/devfs-core.c
@@ -20,6 +20,7 @@
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
*/
#include <common.h>
+#include <complete.h>
#include <driver.h>
#include <errno.h>
#include <malloc.h>
@@ -29,6 +30,24 @@
LIST_HEAD(cdev_list);
+#ifdef CONFIG_AUTO_COMPLETE
+int devfs_partition_complete(struct string_list *sl, char *instr)
+{
+ struct cdev *cdev;
+ int len;
+
+ len = strlen(instr);
+
+ list_for_each_entry(cdev, &cdev_list, list) {
+ if (cdev->flags & DEVFS_IS_PARTITION &&
+ !strncmp(instr, cdev->name, len)) {
+ string_list_add_asprintf(sl, "%s ", cdev->name);
+ }
+ }
+ return COMPLETE_CONTINUE;
+}
+#endif
+
struct cdev *cdev_by_name(const char *filename)
{
struct cdev *cdev;
diff --git a/include/complete.h b/include/complete.h
index 1365803..8248c64 100644
--- a/include/complete.h
+++ b/include/complete.h
@@ -16,6 +16,7 @@ int device_complete(struct string_list *sl, char *instr);
int empty_complete(struct string_list *sl, char *instr);
int eth_complete(struct string_list *sl, char *instr);
int cammand_var_complete(struct string_list *sl, char *instr);
+int devfs_partition_complete(struct string_list *sl, char *instr);
#endif /* __COMPLETE_ */
--
1.7.9.1
More information about the barebox
mailing list