From patchwork Fri Nov 23 07:47:42 2012 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Robert Wang X-Patchwork-Id: 201269 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Received: from lists.gnu.org (lists.gnu.org [208.118.235.17]) (using TLSv1 with cipher AES256-SHA (256/256 bits)) (Client did not present a certificate) by ozlabs.org (Postfix) with ESMTPS id 7ED5C2C00B4 for ; Fri, 23 Nov 2012 20:05:46 +1100 (EST) Received: from localhost ([::1]:40289 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1Tbo0q-00069L-0o for incoming@patchwork.ozlabs.org; Fri, 23 Nov 2012 02:49:24 -0500 Received: from eggs.gnu.org ([208.118.235.92]:53756) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1Tbo07-0004Jt-PH for qemu-devel@nongnu.org; Fri, 23 Nov 2012 02:48:45 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1Tbo06-0001uo-O0 for qemu-devel@nongnu.org; Fri, 23 Nov 2012 02:48:39 -0500 Received: from mail-ie0-f173.google.com ([209.85.223.173]:33630) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1Tbo06-0001rA-Je for qemu-devel@nongnu.org; Fri, 23 Nov 2012 02:48:38 -0500 Received: by mail-ie0-f173.google.com with SMTP id e13so2761118iej.4 for ; Thu, 22 Nov 2012 23:48:38 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113; h=sender:from:to:cc:subject:date:message-id:x-mailer:in-reply-to :references; bh=nhEkU0fflY37Axg1FqbAfXN9SHaFh8iYfDmfR0pBfOg=; b=K4c1gkjFWK0rdZKPaatrvh41/M4S5oc7dEuS6pJ5ezOKS73c+hwrA9SdkMqUUZYtd2 BXovdfiMJqK690G5NluC93kryA+MdDmAsGhSqMFLmvr4vJIhYQ5UJ327/A6bwScGTVEh X0GsqmXSZNM7WQD9u762WjByI1Mf4XE0DRYYAbKfyehtiLL6HWNtieOZvXgzOeFbou+m j7KtE7R6zUQ0hiPV/I/mK48EMyFjbHavJ4Sglu+fSV/l3EIXcrdKAdjMgwX1ZKxeN3m1 jxRpKQ9xEH0k0wIO9OgRSCTbvblrXFmhJd5MDawyM1LPY8qIcdCsoZg4jHc3Rz9ebP/D tNDQ== Received: by 10.50.168.102 with SMTP id zv6mr5602531igb.9.1353656918299; Thu, 22 Nov 2012 23:48:38 -0800 (PST) Received: from localhost.localdomain ([202.108.130.194]) by mx.google.com with ESMTPS id az6sm3859043igb.11.2012.11.22.23.48.35 (version=TLSv1/SSLv3 cipher=OTHER); Thu, 22 Nov 2012 23:48:37 -0800 (PST) From: Dong Xu Wang To: qemu-devel@nongnu.org Date: Fri, 23 Nov 2012 15:47:42 +0800 Message-Id: <1353656865-20910-8-git-send-email-wdongxu@linux.vnet.ibm.com> X-Mailer: git-send-email 1.7.1 In-Reply-To: <1353656865-20910-1-git-send-email-wdongxu@linux.vnet.ibm.com> References: <1353656865-20910-1-git-send-email-wdongxu@linux.vnet.ibm.com> X-detected-operating-system: by eggs.gnu.org: GNU/Linux 3.x [fuzzy] X-Received-From: 209.85.223.173 Cc: kwolf@redhat.com, Dong Xu Wang Subject: [Qemu-devel] [PATCH V6 07/10] add def_print_str and use it in qemu_opts_print. 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 qemu_opts_print has no user now, so can re-write the function safely. qemu_opts_print will be used while using "qemu-img create", it will produce the same output as previous code. The behavior of this function has changed: 1. Print every possible option, whether a value has been set or not. 2. Option descriptors may provide a default value. 3. Print to stdout instead of stderr. Previously the behavior was to print every option that has been set. Options that have not been set would be skipped. Signed-off-by: Dong Xu Wang --- qemu-option.c | 27 ++++++++++++++++++++------- qemu-option.h | 1 + 2 files changed, 21 insertions(+), 7 deletions(-) diff --git a/qemu-option.c b/qemu-option.c index 94557cf..e0628da 100644 --- a/qemu-option.c +++ b/qemu-option.c @@ -862,15 +862,28 @@ void qemu_opts_del(QemuOpts *opts) int qemu_opts_print(QemuOpts *opts, void *dummy) { - QemuOpt *opt; + QemuOptDesc *desc = opts->list->desc; - fprintf(stderr, "%s: %s:", opts->list->name, - opts->id ? opts->id : ""); - QTAILQ_FOREACH(opt, &opts->head, next) { - fprintf(stderr, " %s=\"%s\"", opt->name, opt->str); + for (desc = opts->list->desc; desc && desc->name; desc++) { + const char *value = desc->def_print_str; + QemuOpt *opt; + + opt = qemu_opt_find(opts, desc->name); + if (opt) { + value = opt->str; + } + + if (!value) { + continue; + } + + if (desc->type == QEMU_OPT_STRING) { + printf("%s='%s' ", desc->name, value); + } else { + printf("%s=%s ", desc->name, value); + } } - fprintf(stderr, "\n"); - return 0; + return 0; } static int opts_do_parse(QemuOpts *opts, const char *params, diff --git a/qemu-option.h b/qemu-option.h index 002dd07..ab02023 100644 --- a/qemu-option.h +++ b/qemu-option.h @@ -96,6 +96,7 @@ typedef struct QemuOptDesc { const char *name; enum QemuOptType type; const char *help; + const char *def_print_str; } QemuOptDesc; struct QemuOptsList {