[libvirt] [PREPOST 14/17] src/xenxs:Refactor code formating char devices config
Jim Fehlig
jfehlig at suse.com
Mon Jul 14 22:35:29 UTC 2014
David Kiarie wrote:
> From: Kiarie Kahurani <davidkiarie4 at gmail.com>
>
> Introduce function
> xenFormatXMCharDev(....);
> which formats char devices config
>
> signed-off-by:David Kiarie<davidkiarie4 at gmail.com>
> ---
> src/xenxs/xen_xm.c | 155 ++++++++++++++++++++++++++++-------------------------
> 1 file changed, 82 insertions(+), 73 deletions(-)
>
> diff --git a/src/xenxs/xen_xm.c b/src/xenxs/xen_xm.c
> index 367a8cd..ee5dc19 100644
> --- a/src/xenxs/xen_xm.c
> +++ b/src/xenxs/xen_xm.c
> @@ -1742,6 +1742,85 @@ static int xenFormatXMEventActions(virConfPtr conf, virDomainDefPtr def)
>
> return 0;
> }
> +static int xenFormatXMCharDev(virConfPtr conf, virDomainDefPtr def)
> +{
> + size_t i;
> + if (STREQ(def->os.type, "hvm")) {
> + if (def->nparallels) {
> + virBuffer buf = VIR_BUFFER_INITIALIZER;
> + char *str;
> + int ret;
> +
> + ret = xenFormatSxprChr(def->parallels[0], &buf);
> + str = virBufferContentAndReset(&buf);
> + if (ret == 0)
> + ret = xenXMConfigSetString(conf, "parallel", str);
> + VIR_FREE(str);
> + if (ret < 0)
> + goto cleanup;
> + } else {
> + if (xenXMConfigSetString(conf, "parallel", "none") < 0)
> + goto cleanup;
> + }
> +
> + if (def->nserials) {
> + if ((def->nserials == 1) && (def->serials[0]->target.port == 0)) {
> + virBuffer buf = VIR_BUFFER_INITIALIZER;
> + char *str;
> + int ret;
> +
> + ret = xenFormatSxprChr(def->serials[0], &buf);
> + str = virBufferContentAndReset(&buf);
> + if (ret == 0)
> + ret = xenXMConfigSetString(conf, "serial", str);
> + VIR_FREE(str);
> + if (ret < 0)
> + goto cleanup;
> + } else {
> + size_t j = 0;
> + int maxport = -1, port;
> + virConfValuePtr serialVal = NULL;
> +
> + if (VIR_ALLOC(serialVal) < 0)
> + goto cleanup;
> + serialVal->type = VIR_CONF_LIST;
> + serialVal->list = NULL;
> +
> + for (i = 0; i < def->nserials; i++)
> + if (def->serials[i]->target.port > maxport)
> + maxport = def->serials[i]->target.port;
> +
> + for (port = 0; port <= maxport; port++) {
> + virDomainChrDefPtr chr = NULL;
> + for (j = 0; j < def->nserials; j++) {
> + if (def->serials[j]->target.port == port) {
> + chr = def->serials[j];
> + break;
> + }
> + }
> + if (xenFormatXMSerial(serialVal, chr) < 0) {
> + virConfFreeValue(serialVal);
> + goto cleanup;
> + }
> + }
> +
> + if (serialVal->list != NULL) {
> + int ret = virConfSetValue(conf, "serial", serialVal);
> + serialVal = NULL;
> + if (ret < 0)
> + goto cleanup;
> + }
> + VIR_FREE(serialVal);
> + }
> + } else {
> + if (xenXMConfigSetString(conf, "serial", "none") < 0)
> + goto cleanup;
> + }
> + }
> + return 0;
> +cleanup:
> + return -1;
> +}
> virConfPtr xenFormatXM(virConnectPtr conn,
> virDomainDefPtr def,
> int xendConfigVersion)
> @@ -2067,79 +2146,10 @@ virConfPtr xenFormatXM(virConnectPtr conn,
> if (xenFormatXMPCI(conf, def) < 0)
> goto cleanup;
>
> - if (hvm) {
> - if (def->nparallels) {
> - virBuffer buf = VIR_BUFFER_INITIALIZER;
> - char *str;
> - int ret;
> -
> - ret = xenFormatSxprChr(def->parallels[0], &buf);
> - str = virBufferContentAndReset(&buf);
> - if (ret == 0)
> - ret = xenXMConfigSetString(conf, "parallel", str);
> - VIR_FREE(str);
> - if (ret < 0)
> - goto cleanup;
> - } else {
> - if (xenXMConfigSetString(conf, "parallel", "none") < 0)
> - goto cleanup;
> - }
> -
> - if (def->nserials) {
> - if ((def->nserials == 1) && (def->serials[0]->target.port == 0)) {
> - virBuffer buf = VIR_BUFFER_INITIALIZER;
> - char *str;
> - int ret;
> -
> - ret = xenFormatSxprChr(def->serials[0], &buf);
> - str = virBufferContentAndReset(&buf);
> - if (ret == 0)
> - ret = xenXMConfigSetString(conf, "serial", str);
> - VIR_FREE(str);
> - if (ret < 0)
> - goto cleanup;
> - } else {
> - size_t j = 0;
> - int maxport = -1, port;
> - virConfValuePtr serialVal = NULL;
> -
> - if (VIR_ALLOC(serialVal) < 0)
> - goto cleanup;
> - serialVal->type = VIR_CONF_LIST;
> - serialVal->list = NULL;
> -
> - for (i = 0; i < def->nserials; i++)
> - if (def->serials[i]->target.port > maxport)
> - maxport = def->serials[i]->target.port;
> -
> - for (port = 0; port <= maxport; port++) {
> - virDomainChrDefPtr chr = NULL;
> - for (j = 0; j < def->nserials; j++) {
> - if (def->serials[j]->target.port == port) {
> - chr = def->serials[j];
> - break;
> - }
> - }
> - if (xenFormatXMSerial(serialVal, chr) < 0) {
> - virConfFreeValue(serialVal);
> - goto cleanup;
> - }
> - }
> -
> - if (serialVal->list != NULL) {
> - int ret = virConfSetValue(conf, "serial", serialVal);
> - serialVal = NULL;
> - if (ret < 0)
> - goto cleanup;
> - }
> - VIR_FREE(serialVal);
> - }
> - } else {
> - if (xenXMConfigSetString(conf, "serial", "none") < 0)
> - goto cleanup;
> - }
> -
> + if (xenFormatXMCharDev(conf, def) < 0)
> + goto cleanup;
>
> + if (hvm) {
> if (def->sounds) {
> virBuffer buf = VIR_BUFFER_INITIALIZER;
> char *str = NULL;
> @@ -2153,7 +2163,6 @@ virConfPtr xenFormatXM(virConnectPtr conn,
> goto cleanup;
> }
> }
> -
>
Spurious whitespace change.
Regards,
Jim
> return conf;
>
> cleanup:
>
More information about the libvir-list
mailing list