For reuse in snapshot_conf. --- src/conf/storage_conf.c | 23 +---------------------- src/conf/storage_feature_conf.c | 25 +++++++++++++++++++++++++ src/conf/storage_feature_conf.h | 3 +++ 3 files changed, 29 insertions(+), 22 deletions(-) diff --git a/src/conf/storage_conf.c b/src/conf/storage_conf.c index a5b5c1b..ee3019a 100644 --- a/src/conf/storage_conf.c +++ b/src/conf/storage_conf.c @@ -1544,28 +1544,7 @@ virStorageVolTargetDefFormat(virStorageVolOptionsPtr options, virBufferEscapeString(buf, "<compat>%s</compat>\n", def->compat); - if (def->features) { - size_t i; - bool empty = virBitmapIsAllClear(def->features); - - if (empty) { - virBufferAddLit(buf, "<features/>\n"); - } else { - virBufferAddLit(buf, "<features>\n"); - virBufferAdjustIndent(buf, 2); - } - - for (i = 0; i < VIR_STORAGE_FILE_FEATURE_LAST; i++) { - if (virBitmapIsBitSet(def->features, i)) - virBufferAsprintf(buf, "<%s/>\n", - virStorageFileFeatureTypeToString(i)); - } - if (!empty) { - virBufferAdjustIndent(buf, -2); - virBufferAddLit(buf, "</features>\n"); - } - } - + virStorageFeaturesFormat(buf, def->features); virBufferAdjustIndent(buf, -2); virBufferAsprintf(buf, "</%s>\n", type); return 0; diff --git a/src/conf/storage_feature_conf.c b/src/conf/storage_feature_conf.c index 77e6406..2a4b3df 100644 --- a/src/conf/storage_feature_conf.c +++ b/src/conf/storage_feature_conf.c @@ -60,3 +60,28 @@ int virStorageFeaturesParse(xmlXPathContextPtr ctxt, VIR_FREE(feat_xpath); return ret; } + +void virStorageFeaturesFormat(virBufferPtr buf, + virBitmapPtr features) +{ + size_t i; + + if (!features) + return; + + if (virBitmapIsAllClear(features)) { + virBufferAddLit(buf, "<features/>\n"); + return; + } + virBufferAddLit(buf, "<features>\n"); + virBufferAdjustIndent(buf, 2); + + for (i = 0; i < VIR_STORAGE_FILE_FEATURE_LAST; i++) { + if (virBitmapIsBitSet(features, i)) + virBufferAsprintf(buf, "<%s/>\n", + virStorageFileFeatureTypeToString(i)); + } + + virBufferAdjustIndent(buf, -2); + virBufferAddLit(buf, "</features>\n"); +} diff --git a/src/conf/storage_feature_conf.h b/src/conf/storage_feature_conf.h index a411b66..14de20e 100644 --- a/src/conf/storage_feature_conf.h +++ b/src/conf/storage_feature_conf.h @@ -12,11 +12,14 @@ # include "internal.h" # include "virbitmap.h" +# include "virbuffer.h" # include "virxml.h" int virStorageFeaturesParse(xmlXPathContextPtr ctxt, const char *xpath, char **compat, virBitmapPtr *features); +void virStorageFeaturesFormat(virBufferPtr buf, + virBitmapPtr features); #endif /* __VIR_STORAGE_FEATURE_CONF_H__ */ -- 2.0.5 -- libvir-list mailing list libvir-list@xxxxxxxxxx https://www.redhat.com/mailman/listinfo/libvir-list