aboutsummaryrefslogtreecommitdiffstats
path: root/tools/libxl/libxlu_cfg.c
diff options
context:
space:
mode:
authorIan Campbell <ian.campbell@citrix.com>2011-11-29 14:17:27 +0000
committerIan Campbell <ian.campbell@citrix.com>2011-11-29 14:17:27 +0000
commit0fe30a0519d073c88da3d94387b6190134eec5c7 (patch)
tree985174b45b04217ca5ff3f8285e930181835f133 /tools/libxl/libxlu_cfg.c
parent984848264bd4f1674cde10829f9966265373fe24 (diff)
downloadxen-0fe30a0519d073c88da3d94387b6190134eec5c7.tar.gz
xen-0fe30a0519d073c88da3d94387b6190134eec5c7.tar.bz2
xen-0fe30a0519d073c88da3d94387b6190134eec5c7.zip
libxlu: add xlu_cfg_get_list_as_string_list
Returns a cfg list as a libxl_string_list. Use this to simplify the parsing of device model extra args. Signed-off-by: Ian Campbell <ian.campbell@citrix.com> Committed-by: Ian Jackson <ian.jackson.citrix.com> Acked-by: Ian Jackson <ian.jackson.citrix.com>
Diffstat (limited to 'tools/libxl/libxlu_cfg.c')
-rw-r--r--tools/libxl/libxlu_cfg.c23
1 files changed, 23 insertions, 0 deletions
diff --git a/tools/libxl/libxlu_cfg.c b/tools/libxl/libxlu_cfg.c
index 19abcafdaf..0d1c5d385a 100644
--- a/tools/libxl/libxlu_cfg.c
+++ b/tools/libxl/libxlu_cfg.c
@@ -254,6 +254,29 @@ int xlu_cfg_get_list(const XLU_Config *cfg, const char *n,
return 0;
}
+int xlu_cfg_get_list_as_string_list(const XLU_Config *cfg, const char *n,
+ libxl_string_list *psl, int dont_warn) {
+ int i, rc, nr;
+ XLU_ConfigList *list;
+ libxl_string_list sl;
+
+ rc = xlu_cfg_get_list(cfg, n, &list, &nr, dont_warn);
+ if (rc) return rc;
+
+ sl = malloc(sizeof(char*)*(nr + 1));
+ if (sl == NULL) return ENOMEM;
+
+ for (i=0; i<nr; i++) {
+ const char *a = xlu_cfg_get_listitem(list, i);
+ sl[i] = a ? strdup(a) : NULL;
+ }
+
+ sl[nr] = NULL;
+
+ *psl = sl;
+ return 0;
+}
+
const char *xlu_cfg_get_listitem(const XLU_ConfigList *set, int entry) {
if (entry < 0 || entry >= set->nvalues) return 0;
return set->values[entry];