From patchwork Tue May 27 22:39:37 2014 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Hani Benhabiles X-Patchwork-Id: 353196 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Received: from lists.gnu.org (lists.gnu.org [IPv6:2001:4830:134:3::11]) (using TLSv1 with cipher AES256-SHA (256/256 bits)) (No client certificate requested) by ozlabs.org (Postfix) with ESMTPS id B27E91400D8 for ; Wed, 28 May 2014 08:51:49 +1000 (EST) Received: from localhost ([::1]:38531 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1WpQ3U-0007Hw-9v for incoming@patchwork.ozlabs.org; Tue, 27 May 2014 18:41:12 -0400 Received: from eggs.gnu.org ([2001:4830:134:3::10]:49245) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1WpQ2T-0005fh-25 for qemu-devel@nongnu.org; Tue, 27 May 2014 18:40:14 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1WpQ2M-00038Y-Er for qemu-devel@nongnu.org; Tue, 27 May 2014 18:40:09 -0400 Received: from mail-wg0-x234.google.com ([2a00:1450:400c:c00::234]:33437) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1WpQ2M-00036n-1s for qemu-devel@nongnu.org; Tue, 27 May 2014 18:40:02 -0400 Received: by mail-wg0-f52.google.com with SMTP id l18so10362753wgh.35 for ; Tue, 27 May 2014 15:40:01 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113; h=from:to:cc:subject:date:message-id:in-reply-to:references; bh=xk7cjakW5iDDJ8CvdmbiAEMjiezo3S2chAsp2bUc2Qc=; b=SpTFVFOHUJXO3PIlrWSP5flyXsaba2IlJVl1fp6OLglfjheMlw2COqLIsIvQTbWP0c +w/P9CxYDvsf4K43kNeLuqVOdmi8DplRmXD0aG4vm2xSsJzscc7Nh5hnj1EOiwY5tK44 OtFtR5PqERbwiayc4vSuNoKUoLjKiJhGghjmkYFVGhigL9Ps9jGoqkUT31CO3Hd61X+M dYEhW6Gos/OdN062snRabT8jukGFrFIVMsDFWg1CE3oybPrOK7jowBCz2oDqtOBnWABF AEvbwA/iaxQRa+xmN3sPPklAkVRxtec3yXykAKTGM5o89bQPk+rlMl462KW1a2XDmkG+ 3XXA== X-Received: by 10.194.57.225 with SMTP id l1mr46408016wjq.25.1401230401242; Tue, 27 May 2014 15:40:01 -0700 (PDT) Received: from localhost.localdomain ([41.109.242.35]) by mx.google.com with ESMTPSA id gp6sm10172133wib.12.2014.05.27.15.39.59 for (version=TLSv1.1 cipher=ECDHE-RSA-RC4-SHA bits=128/128); Tue, 27 May 2014 15:40:00 -0700 (PDT) From: Hani Benhabiles To: qemu-devel@nongnu.org Date: Tue, 27 May 2014 23:39:37 +0100 Message-Id: <1401230377-14778-9-git-send-email-kroosec@gmail.com> X-Mailer: git-send-email 1.8.3.2 In-Reply-To: <1401230377-14778-1-git-send-email-kroosec@gmail.com> References: <1401230377-14778-1-git-send-email-kroosec@gmail.com> X-detected-operating-system: by eggs.gnu.org: Error: Malformed IPv6 address (bad octet value). X-Received-From: 2a00:1450:400c:c00::234 Cc: kwolf@redhat.com, mst@redhat.com, mdroth@linux.vnet.ibm.com, lcapitulino@redhat.com, kraxel@redhat.com, stefanha@redhat.com, imammedo@redhat.com Subject: [Qemu-devel] [PATCHv2 8/8] monitor: Add delvm and loadvm argument completion. X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.14 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org Sender: qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org Signed-off-by: Hani Benhabiles --- 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 f99da0e..5f1a677 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 1226bc9..0b40255 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) @@ -4647,6 +4648,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,