[libvirt] [PATCH 1/2] virsh-snapshot: Refactor some details in virsh snapshot-create-as
Osier Yang
jyang at redhat.com
Mon Feb 11 13:37:52 UTC 2013
On 2013年02月11日 21:10, Peter Krempa wrote:
> This patch simplifies the creation of XML, some error paths and adds
> correct approach to check for virBuffer errors.
> ---
> tools/virsh-snapshot.c | 19 ++++++++-----------
> 1 file changed, 8 insertions(+), 11 deletions(-)
>
> diff --git a/tools/virsh-snapshot.c b/tools/virsh-snapshot.c
> index 66776e2..fe1cee9 100644
> --- a/tools/virsh-snapshot.c
> +++ b/tools/virsh-snapshot.c
> @@ -427,19 +427,16 @@ cmdSnapshotCreateAs(vshControl *ctl, const vshCmd *cmd)
> if (vshCommandOptBool(cmd, "live"))
> flags |= VIR_DOMAIN_SNAPSHOT_CREATE_LIVE;
>
> - dom = vshCommandOptDomain(ctl, cmd, NULL);
> - if (dom == NULL)
> - goto cleanup;
> + if (!(dom = vshCommandOptDomain(ctl, cmd, NULL)))
> + return false;
>
> if (vshCommandOptStringReq(ctl, cmd, "name",&name)< 0 ||
> vshCommandOptStringReq(ctl, cmd, "description",&desc)< 0)
> goto cleanup;
>
> virBufferAddLit(&buf, "<domainsnapshot>\n");
> - if (name)
> - virBufferEscapeString(&buf, "<name>%s</name>\n", name);
> - if (desc)
> - virBufferEscapeString(&buf, "<description>%s</description>\n", desc);
> + virBufferEscapeString(&buf, "<name>%s</name>\n", name);
> + virBufferEscapeString(&buf, "<description>%s</description>\n", desc);
>
> if (vshCommandOptStringReq(ctl, cmd, "memspec",&memspec)< 0)
> goto cleanup;
> @@ -457,12 +454,13 @@ cmdSnapshotCreateAs(vshControl *ctl, const vshCmd *cmd)
> }
> virBufferAddLit(&buf, "</domainsnapshot>\n");
>
> - buffer = virBufferContentAndReset(&buf);
> - if (buffer == NULL) {
> + if (virBufferError(&buf)) {
> vshError(ctl, "%s", _("Out of memory"));
> goto cleanup;
> }
>
> + buffer = virBufferContentAndReset(&buf);
> +
> if (vshCommandOptBool(cmd, "print-xml")) {
> vshPrint(ctl, "%s\n", buffer);
> ret = true;
> @@ -474,8 +472,7 @@ cmdSnapshotCreateAs(vshControl *ctl, const vshCmd *cmd)
> cleanup:
> virBufferFreeAndReset(&buf);
> VIR_FREE(buffer);
> - if (dom)
> - virDomainFree(dom);
> + virDomainFree(dom);
>
> return ret;
> }
ACK
More information about the libvir-list
mailing list