[libvirt] [PATCH 06/17] virsh-volume: Update volume commands to use vshCommandOptStringReq

Peter Krempa pkrempa at redhat.com
Mon Jan 21 18:07:31 UTC 2013


---
 tools/virsh-volume.c | 69 +++++++++++++++++++++-------------------------------
 1 file changed, 28 insertions(+), 41 deletions(-)

diff --git a/tools/virsh-volume.c b/tools/virsh-volume.c
index 466188c..0575166 100644
--- a/tools/virsh-volume.c
+++ b/tools/virsh-volume.c
@@ -52,13 +52,12 @@ vshCommandOptVolBy(vshControl *ctl, const vshCmd *cmd,
     const char *n = NULL, *p = NULL;
     virCheckFlags(VSH_BYUUID | VSH_BYNAME, NULL);

-    if (vshCommandOptString(cmd, optname, &n) <= 0)
+    if (vshCommandOptStringReq(ctl, cmd, optname, &n) < 0)
         return NULL;

-    if (pooloptname != NULL && vshCommandOptString(cmd, pooloptname, &p) < 0) {
-        vshError(ctl, "%s", _("missing option"));
+    if (pooloptname != NULL &&
+        vshCommandOptStringReq(ctl, cmd, pooloptname, &p) < 0)
         return NULL;
-    }

     if (p)
         pool = vshCommandOptPoolBy(ctl, cmd, pooloptname, name, flags);
@@ -182,10 +181,10 @@ cmdVolCreateAs(vshControl *ctl, const vshCmd *cmd)
                                      VSH_BYNAME)))
         return false;

-    if (vshCommandOptString(cmd, "name", &name) <= 0)
+    if (vshCommandOptStringReq(ctl, cmd, "name", &name) < 0)
         goto cleanup;

-    if (vshCommandOptString(cmd, "capacity", &capacityStr) <= 0)
+    if (vshCommandOptStringReq(ctl, cmd, "capacity", &capacityStr) < 0)
         goto cleanup;

     if (vshVolSize(capacityStr, &capacity) < 0) {
@@ -199,14 +198,11 @@ cmdVolCreateAs(vshControl *ctl, const vshCmd *cmd)
         goto cleanup;
     }

-    if (vshCommandOptString(cmd, "format", &format) < 0 ||
-        vshCommandOptString(cmd, "backing-vol", &snapshotStrVol) < 0 ||
-        vshCommandOptString(cmd, "backing-vol-format",
-                            &snapshotStrFormat) < 0) {
-        vshError(ctl, "%s", _("missing argument"));
+    if (vshCommandOptStringReq(ctl, cmd, "format", &format) < 0 ||
+        vshCommandOptStringReq(ctl, cmd, "backing-vol", &snapshotStrVol) < 0 ||
+        vshCommandOptStringReq(ctl, cmd, "backing-vol-format",
+                               &snapshotStrFormat) < 0)
         goto cleanup;
-    }
-

     virBufferAddLit(&buf, "<volume>\n");
     virBufferAsprintf(&buf, "  <name>%s</name>\n", name);
@@ -340,9 +336,9 @@ cmdVolCreate(vshControl *ctl, const vshCmd *cmd)
     virStoragePoolPtr pool;
     virStorageVolPtr vol;
     const char *from = NULL;
-    bool ret = true;
+    bool ret = false;
     unsigned int flags = 0;
-    char *buffer;
+    char *buffer = NULL;

     if (vshCommandOptBool(cmd, "prealloc-metadata"))
         flags |= VIR_STORAGE_VOL_CREATE_PREALLOC_METADATA;
@@ -350,29 +346,26 @@ cmdVolCreate(vshControl *ctl, const vshCmd *cmd)
                                            VSH_BYNAME)))
         return false;

-    if (vshCommandOptString(cmd, "file", &from) <= 0) {
-        virStoragePoolFree(pool);
-        return false;
-    }
+    if (vshCommandOptStringReq(ctl, cmd, "file", &from) < 0)
+        goto cleanup;

     if (virFileReadAll(from, VSH_MAX_XML_FILE, &buffer) < 0) {
-        vshReportError(ctl);
-        virStoragePoolFree(pool);
-        return false;
+        vshSaveLibvirtError();
+        goto cleanup;
     }

-    vol = virStorageVolCreateXML(pool, buffer, flags);
-    VIR_FREE(buffer);
-    virStoragePoolFree(pool);
-
-    if (vol != NULL) {
+    if ((vol = virStorageVolCreateXML(pool, buffer, flags))) {
         vshPrint(ctl, _("Vol %s created from %s\n"),
                  virStorageVolGetName(vol), from);
         virStorageVolFree(vol);
+        ret = true;
     } else {
         vshError(ctl, _("Failed to create vol from %s"), from);
-        ret = false;
     }
+
+cleanup:
+    VIR_FREE(buffer);
+    virStoragePoolFree(pool);
     return ret;
 }

@@ -429,9 +422,9 @@ cmdVolCreateFrom(vshControl *ctl, const vshCmd *cmd)

     if (vshCommandOptBool(cmd, "prealloc-metadata"))
         flags |= VIR_STORAGE_VOL_CREATE_PREALLOC_METADATA;
-    if (vshCommandOptString(cmd, "file", &from) <= 0) {
+
+    if (vshCommandOptStringReq(ctl, cmd, "file", &from) < 0)
         goto cleanup;
-    }

     if (!(inputvol = vshCommandOptVol(ctl, cmd, "vol", "inputpool", NULL)))
         goto cleanup;
@@ -548,7 +541,7 @@ cmdVolClone(vshControl *ctl, const vshCmd *cmd)
         goto cleanup;
     }

-    if (vshCommandOptString(cmd, "newname", &name) <= 0)
+    if (vshCommandOptStringReq(ctl, cmd, "newname", &name) < 0)
         goto cleanup;

     origxml = virStorageVolGetXMLDesc(origvol, 0);
@@ -658,10 +651,8 @@ cmdVolUpload(vshControl *ctl, const vshCmd *cmd)
         return false;
     }

-    if (vshCommandOptString(cmd, "file", &file) < 0) {
-        vshError(ctl, _("file must not be empty"));
+    if (vshCommandOptStringReq(ctl, cmd, "file", &file) < 0)
         goto cleanup;
-    }

     if ((fd = open(file, O_RDONLY)) < 0) {
         vshError(ctl, _("cannot read %s"), file);
@@ -764,10 +755,8 @@ cmdVolDownload(vshControl *ctl, const vshCmd *cmd)
     if (!(vol = vshCommandOptVol(ctl, cmd, "vol", "pool", &name)))
         return false;

-    if (vshCommandOptString(cmd, "file", &file) < 0) {
-        vshError(ctl, _("file must not be empty"));
+    if (vshCommandOptStringReq(ctl, cmd, "file", &file) < 0)
         goto cleanup;
-    }

     if ((fd = open(file, O_WRONLY|O_CREAT|O_EXCL, 0666)) < 0) {
         if (errno != EEXIST ||
@@ -906,10 +895,8 @@ cmdVolWipe(vshControl *ctl, const vshCmd *cmd)
         return false;
     }

-    if (vshCommandOptString(cmd, "algorithm", &algorithm_str) < 0) {
-        vshError(ctl, "%s", _("missing argument"));
+    if (vshCommandOptStringReq(ctl, cmd, "algorithm", &algorithm_str) < 0)
         goto out;
-    }

     if (algorithm_str &&
         (algorithm = virStorageVolWipeAlgorithmTypeFromString(algorithm_str)) < 0) {
@@ -1072,7 +1059,7 @@ cmdVolResize(vshControl *ctl, const vshCmd *cmd)
     if (!(vol = vshCommandOptVol(ctl, cmd, "vol", "pool", NULL)))
         return false;

-    if (vshCommandOptString(cmd, "capacity", &capacityStr) <= 0)
+    if (vshCommandOptStringReq(ctl, cmd, "capacity", &capacityStr) <= 0)
         goto cleanup;
     virSkipSpaces(&capacityStr);
     if (*capacityStr == '-') {
-- 
1.8.1.1




More information about the libvir-list mailing list