xl_cfg_get_list can cope with the option not being a list, but
it always reports a warning in this case. Introduce a parameter
to omit this warning if needed. Future code can then decide what
to do with this information.
Signed-off-by: Andre Przywara <andre.przywara@xxxxxxx>
--
Andre Przywara
AMD-Operating System Research Center (OSRC), Dresden, Germany
Tel: +49 351 448-3567-12
>From cae88598268186391b64d351721f410af97989a9 Mon Sep 17 00:00:00 2001
From: Andre Przywara <andre.przywara@xxxxxxx>
Date: Mon, 20 Sep 2010 12:29:09 +0200
Subject: [PATCH 3/4] libxl: change xl_cfg_get_list to take a dont_warn parameter
xl_cfg_get_list can cope with the option not being a list, but
it always reports a warning in this case. Introduce a parameter
to omit this warning if needed. Future code can then decide what
to do with this information.
Signed-off-by: Andre Przywara <andre.przywara@xxxxxxx>
---
tools/libxl/libxlu_cfg.c | 12 +++++++-----
tools/libxl/libxlutil.h | 3 ++-
tools/libxl/xl_cmdimpl.c | 10 +++++-----
3 files changed, 14 insertions(+), 11 deletions(-)
diff --git a/tools/libxl/libxlu_cfg.c b/tools/libxl/libxlu_cfg.c
index 07e65e1..864a723 100644
--- a/tools/libxl/libxlu_cfg.c
+++ b/tools/libxl/libxlu_cfg.c
@@ -194,14 +194,16 @@ int xlu_cfg_get_long(const XLU_Config *cfg, const char *n,
int xlu_cfg_get_list(const XLU_Config *cfg, const char *n,
- XLU_ConfigList **list_r, int *entries_r) {
+ XLU_ConfigList **list_r, int *entries_r, int dont_warn) {
XLU_ConfigSetting *set;
set= find(cfg,n); if (!set) return ESRCH;
if (set->avalues==1) {
- fprintf(cfg->report,
- "%s:%d: warning: parameter `%s' is a single value"
- " but should be a list\n",
- cfg->filename, set->lineno, n);
+ if (!dont_warn) {
+ fprintf(cfg->report,
+ "%s:%d: warning: parameter `%s' is a single value"
+ " but should be a list\n",
+ cfg->filename, set->lineno, n);
+ }
return EINVAL;
}
if (list_r) *list_r= set;
diff --git a/tools/libxl/libxlutil.h b/tools/libxl/libxlutil.h
index 6c992a2..8a6fcbd 100644
--- a/tools/libxl/libxlutil.h
+++ b/tools/libxl/libxlutil.h
@@ -51,7 +51,8 @@ int xlu_cfg_get_long(const XLU_Config*, const char *n, long
*value_r);
int xlu_cfg_get_list(const XLU_Config*, const char *n,
XLU_ConfigList **list_r /* may be 0 */,
- int *entries_r /* may be 0 */);
+ int *entries_r /* may be 0 */,
+ int dont_warn);
/* there is no need to free *list_r; lifetime is that of the XLU_Config */
const char *xlu_cfg_get_listitem(const XLU_ConfigList*, int entry);
/* xlu_cfg_get_listitem cannot fail, except that if entry is
diff --git a/tools/libxl/xl_cmdimpl.c b/tools/libxl/xl_cmdimpl.c
index 1f7117e..7c37cc6 100644
--- a/tools/libxl/xl_cmdimpl.c
+++ b/tools/libxl/xl_cmdimpl.c
@@ -744,7 +744,7 @@ static void parse_config_data(const char
*configfile_filename_report,
xlu_cfg_replace_string (config, "ramdisk", &b_info->u.pv.ramdisk.path);
}
- if (!xlu_cfg_get_list (config, "disk", &vbds, 0)) {
+ if (!xlu_cfg_get_list (config, "disk", &vbds, 0, 0)) {
d_config->num_disks = 0;
d_config->disks = NULL;
while ((buf = xlu_cfg_get_listitem (vbds, d_config->num_disks)) !=
NULL) {
@@ -808,7 +808,7 @@ static void parse_config_data(const char
*configfile_filename_report,
}
}
- if (!xlu_cfg_get_list (config, "vif", &nics, 0)) {
+ if (!xlu_cfg_get_list (config, "vif", &nics, 0, 0)) {
d_config->num_vifs = 0;
d_config->vifs = NULL;
while ((buf = xlu_cfg_get_listitem (nics, d_config->num_vifs)) !=
NULL) {
@@ -882,7 +882,7 @@ skip:
}
}
- if (!xlu_cfg_get_list(config, "vif2", &net2s, 0)) {
+ if (!xlu_cfg_get_list(config, "vif2", &net2s, 0, 0)) {
d_config->num_vif2s = 0;
d_config->vif2s = NULL;
while ((buf = xlu_cfg_get_listitem(net2s, d_config->num_vif2s))) {
@@ -930,7 +930,7 @@ skip:
}
}
- if (!xlu_cfg_get_list (config, "vfb", &cvfbs, 0)) {
+ if (!xlu_cfg_get_list (config, "vfb", &cvfbs, 0, 0)) {
d_config->num_vfbs = 0;
d_config->num_vkbs = 0;
d_config->vfbs = NULL;
@@ -994,7 +994,7 @@ skip_vfb:
if (!xlu_cfg_get_long (config, "pci_power_mgmt", &l))
pci_power_mgmt = l;
- if (!xlu_cfg_get_list (config, "pci", &pcis, 0)) {
+ if (!xlu_cfg_get_list (config, "pci", &pcis, 0, 0)) {
int i;
d_config->num_pcidevs = 0;
d_config->pcidevs = NULL;
--
1.6.4
_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxxxxxxxx
http://lists.xensource.com/xen-devel
|