
On 2013年01月22日 02:07, Peter Krempa wrote:
--- 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 == '-') {
ACK