diff options
author | Ian Campbell <ian.campbell@citrix.com> | 2011-11-29 14:17:27 +0000 |
---|---|---|
committer | Ian Campbell <ian.campbell@citrix.com> | 2011-11-29 14:17:27 +0000 |
commit | 0fe30a0519d073c88da3d94387b6190134eec5c7 (patch) | |
tree | 985174b45b04217ca5ff3f8285e930181835f133 /tools/libxl/libxlu_cfg.c | |
parent | 984848264bd4f1674cde10829f9966265373fe24 (diff) | |
download | xen-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.c | 23 |
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]; |