All of lore.kernel.org
 help / color / mirror / Atom feed
From: Hani Benhabiles <kroosec@gmail.com>
To: qemu-devel@nongnu.org
Cc: kwolf@redhat.com, mdroth@linux.vnet.ibm.com,
	lcapitulino@redhat.com, stefanha@redhat.com, imammedo@redhat.com
Subject: [Qemu-devel] [PATCH 7/7] monitor: Add delvm and loadvm argument completion.
Date: Tue, 20 May 2014 00:03:20 +0100	[thread overview]
Message-ID: <1400540600-1328-8-git-send-email-kroosec@gmail.com> (raw)
In-Reply-To: <1400540600-1328-1-git-send-email-kroosec@gmail.com>

Signed-off-by: Hani Benhabiles <hani@linux.com>
---
 hmp-commands.hx |  2 ++
 hmp.h           |  2 ++
 monitor.c       | 48 ++++++++++++++++++++++++++++++++++++++++++++++++
 3 files changed, 52 insertions(+)

diff --git a/hmp-commands.hx b/hmp-commands.hx
index 935f744..d68a00b 100644
--- a/hmp-commands.hx
+++ b/hmp-commands.hx
@@ -335,6 +335,7 @@ ETEXI
         .params     = "tag|id",
         .help       = "restore a VM snapshot from its tag or id",
         .mhandler.cmd = do_loadvm,
+        .command_completion = loadvm_completion,
     },
 
 STEXI
@@ -350,6 +351,7 @@ ETEXI
         .params     = "tag|id",
         .help       = "delete a VM snapshot from its tag or id",
         .mhandler.cmd = do_delvm,
+        .command_completion = delvm_completion,
     },
 
 STEXI
diff --git a/hmp.h b/hmp.h
index a53ad51..2d9b0a2 100644
--- a/hmp.h
+++ b/hmp.h
@@ -112,5 +112,7 @@ void migrate_set_capability_completion(ReadLineState *rs, int nb_args,
 void host_net_add_completion(ReadLineState *rs, int nb_args, const char *str);
 void host_net_remove_completion(ReadLineState *rs, int nb_args,
                                 const char *str);
+void delvm_completion(ReadLineState *rs, int nb_args, const char *str);
+void loadvm_completion(ReadLineState *rs, int nb_args, const char *str);
 
 #endif
diff --git a/monitor.c b/monitor.c
index 805d29f..b6ac4e0 100644
--- a/monitor.c
+++ b/monitor.c
@@ -69,6 +69,7 @@
 #include "qmp-commands.h"
 #include "hmp.h"
 #include "qemu/thread.h"
+#include "block/qapi.h"
 
 /* for pic/irq_info */
 #if defined(TARGET_SPARC)
@@ -4645,6 +4646,53 @@ void host_net_remove_completion(ReadLineState *rs, int nb_args, const char *str)
     }
 }
 
+static void vm_completion(ReadLineState *rs, const char *str)
+{
+    size_t len;
+    BlockDriverState *bs = NULL;
+
+    len = strlen(str);
+    readline_set_completion_index(rs, len);
+    while ((bs = bdrv_next(bs))) {
+        SnapshotInfoList *snapshots, *snapshot;
+
+        if (!bdrv_can_snapshot(bs)) {
+            continue;
+        }
+        if (bdrv_query_snapshot_info_list(bs, &snapshots, NULL)) {
+            continue;
+        }
+        snapshot = snapshots;
+        while (snapshot) {
+            char *completion = snapshot->value->name;
+            if (!strncmp(str, completion, len)) {
+                readline_add_completion(rs, completion);
+            }
+            completion = snapshot->value->id;
+            if (!strncmp(str, completion, len)) {
+                readline_add_completion(rs, completion);
+            }
+            snapshot = snapshot->next;
+        }
+        qapi_free_SnapshotInfoList(snapshots);
+    }
+
+}
+
+void delvm_completion(ReadLineState *rs, int nb_args, const char *str)
+{
+    if (nb_args == 2) {
+        vm_completion(rs, str);
+    }
+}
+
+void loadvm_completion(ReadLineState *rs, int nb_args, const char *str)
+{
+    if (nb_args == 2) {
+        vm_completion(rs, str);
+    }
+}
+
 static void monitor_find_completion_by_table(Monitor *mon,
                                              const mon_cmd_t *cmd_table,
                                              char **args,
-- 
1.8.3.2

      parent reply	other threads:[~2014-05-19 23:04 UTC|newest]

Thread overview: 14+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2014-05-19 23:03 [Qemu-devel] monitor: Command completion for various commands Hani Benhabiles
2014-05-19 23:03 ` [Qemu-devel] [PATCH 1/7] monitor: Add ringbuf_write and ringbuf_read argument completion Hani Benhabiles
2014-05-19 23:03 ` [Qemu-devel] [PATCH 2/7] monitor: Add watchdog_action " Hani Benhabiles
2014-05-19 23:03 ` [Qemu-devel] [PATCH 3/7] monitor: Add migrate_set_capability completion Hani Benhabiles
2014-05-21 18:42   ` Dr. David Alan Gilbert
2014-05-22  7:05     ` Markus Armbruster
2014-05-19 23:03 ` [Qemu-devel] [PATCH 4/7] monitor: Add host_net_add device argument completion Hani Benhabiles
2014-05-23 12:05   ` Stefan Hajnoczi
2014-05-25 16:12     ` Hani Benhabiles
2014-05-26  9:20       ` Stefan Hajnoczi
2014-05-19 23:03 ` [Qemu-devel] [PATCH 5/7] readline: Make completion strings always unique Hani Benhabiles
2014-05-19 23:03 ` [Qemu-devel] [PATCH 6/7] monitor: Add host_net_remove arguments completion Hani Benhabiles
2014-05-23 12:09   ` Stefan Hajnoczi
2014-05-19 23:03 ` Hani Benhabiles [this message]

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=1400540600-1328-8-git-send-email-kroosec@gmail.com \
    --to=kroosec@gmail.com \
    --cc=imammedo@redhat.com \
    --cc=kwolf@redhat.com \
    --cc=lcapitulino@redhat.com \
    --cc=mdroth@linux.vnet.ibm.com \
    --cc=qemu-devel@nongnu.org \
    --cc=stefanha@redhat.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.