---
tools/virsh-domain.c | 299 ++++++++++++++++++++-------------------------------
1 file changed, 116 insertions(+), 183 deletions(-)
diff --git a/tools/virsh-domain.c b/tools/virsh-domain.c
index f4b6622..e3c43d4 100644
--- a/tools/virsh-domain.c
+++ b/tools/virsh-domain.c
@@ -74,7 +74,7 @@ vshCommandOptDomainBy(vshControl *ctl, const vshCmd *cmd,
if (!vshCmdHasOption(ctl, cmd, optname))
return NULL;
- if (vshCommandOptString(cmd, optname, &n) <= 0)
+ if (vshCommandOptStringReq(ctl, cmd, optname, &n) < 0)
return NULL;
vshDebug(ctl, VSH_ERR_INFO, "%s: found option <%s>: %s\n",
@@ -188,43 +188,42 @@ cmdAttachDevice(vshControl *ctl, const vshCmd *cmd)
virDomainPtr dom;
const char *from = NULL;
char *buffer;
- int ret;
+ int rv;
+ bool ret = false;
unsigned int flags;
if (!(dom = vshCommandOptDomain(ctl, cmd, NULL)))
return false;
- if (vshCommandOptString(cmd, "file", &from) <= 0) {
- virDomainFree(dom);
- return false;
- }
+ if (vshCommandOptStringReq(ctl, cmd, "file", &from) < 0)
+ goto cleanup;
if (virFileReadAll(from, VSH_MAX_XML_FILE, &buffer) < 0) {
vshReportError(ctl);
- virDomainFree(dom);
- return false;
+ goto cleanup;
}
if (vshCommandOptBool(cmd, "config")) {
flags = VIR_DOMAIN_AFFECT_CONFIG;
if (virDomainIsActive(dom) == 1)
flags |= VIR_DOMAIN_AFFECT_LIVE;
- ret = virDomainAttachDeviceFlags(dom, buffer, flags);
+ rv = virDomainAttachDeviceFlags(dom, buffer, flags);
} else {
- ret = virDomainAttachDevice(dom, buffer);
+ rv = virDomainAttachDevice(dom, buffer);
}
VIR_FREE(buffer);
- if (ret < 0) {
+ if (rv < 0) {
vshError(ctl, _("Failed to attach device from %s"), from);
- virDomainFree(dom);
- return false;
- } else {
- vshPrint(ctl, "%s", _("Device attached successfully\n"));
+ goto cleanup;
}
+ vshPrint(ctl, "%s", _("Device attached successfully\n"));
+ ret = true;
+
+cleanup:
virDomainFree(dom);
- return true;
+ return ret;
}
/*
@@ -486,28 +485,18 @@ cmdAttachDisk(vshControl *ctl, const vshCmd *cmd)
if (!(dom = vshCommandOptDomain(ctl, cmd, NULL)))
goto cleanup;
- if (vshCommandOptString(cmd, "source", &source) <= 0)
- goto cleanup;
- /* Allow empty string as a placeholder that implies no source, for
- * use in adding a cdrom drive with no disk. */
- if (!*source)
- source = NULL;
-
- if (vshCommandOptString(cmd, "target", &target) <= 0)
+ if (vshCommandOptStringReq(ctl, cmd, "source", &source) < 0 ||
+ vshCommandOptStringReq(ctl, cmd, "target", &target) < 0 ||
+ vshCommandOptStringReq(ctl, cmd, "driver", &driver) < 0 ||
+ vshCommandOptStringReq(ctl, cmd, "subdriver", &subdriver) < 0
||
+ vshCommandOptStringReq(ctl, cmd, "type", &type) < 0 ||
+ vshCommandOptStringReq(ctl, cmd, "mode", &mode) < 0 ||
+ vshCommandOptStringReq(ctl, cmd, "cache", &cache) < 0 ||
+ vshCommandOptStringReq(ctl, cmd, "serial", &serial) < 0 ||
+ vshCommandOptStringReq(ctl, cmd, "address", &straddr) < 0 ||
+ vshCommandOptStringReq(ctl, cmd, "sourcetype", &stype) < 0)
goto cleanup;
- if (vshCommandOptString(cmd, "driver", &driver) < 0 ||
- vshCommandOptString(cmd, "subdriver", &subdriver) < 0 ||
- vshCommandOptString(cmd, "type", &type) < 0 ||
- vshCommandOptString(cmd, "mode", &mode) < 0 ||
- vshCommandOptString(cmd, "cache", &cache) < 0 ||
- vshCommandOptString(cmd, "serial", &serial) < 0 ||
- vshCommandOptString(cmd, "address", &straddr) < 0 ||
- vshCommandOptString(cmd, "sourcetype", &stype) < 0) {
- vshError(ctl, "%s", _("missing option"));
- goto cleanup;
- }
-
if (!stype) {
if (driver && (STREQ(driver, "file") || STREQ(driver,
"tap"))) {
isFile = true;
@@ -766,20 +755,16 @@ cmdAttachInterface(vshControl *ctl, const vshCmd *cmd)
if (!(dom = vshCommandOptDomain(ctl, cmd, NULL)))
goto cleanup;
- if (vshCommandOptString(cmd, "type", &type) <= 0)
+ if (vshCommandOptStringReq(ctl, cmd, "type", &type) < 0 ||
+ vshCommandOptStringReq(ctl, cmd, "source", &source) < 0 ||
+ vshCommandOptStringReq(ctl, cmd, "target", &target) < 0 ||
+ vshCommandOptStringReq(ctl, cmd, "mac", &mac) < 0 ||
+ vshCommandOptStringReq(ctl, cmd, "script", &script) < 0 ||
+ vshCommandOptStringReq(ctl, cmd, "model", &model) < 0 ||
+ vshCommandOptStringReq(ctl, cmd, "inbound", &inboundStr) < 0 ||
+ vshCommandOptStringReq(ctl, cmd, "outbound", &outboundStr) < 0)
goto cleanup;
- if (vshCommandOptString(cmd, "source", &source) < 0 ||
- vshCommandOptString(cmd, "target", &target) < 0 ||
- vshCommandOptString(cmd, "mac", &mac) < 0 ||
- vshCommandOptString(cmd, "script", &script) < 0 ||
- vshCommandOptString(cmd, "model", &model) < 0 ||
- vshCommandOptString(cmd, "inbound", &inboundStr) < 0 ||
- vshCommandOptString(cmd, "outbound", &outboundStr) < 0) {
- vshError(ctl, "missing argument");
- goto cleanup;
- }
-
/* check interface type */
if (STREQ(type, "network")) {
typ = 1;
@@ -1070,7 +1055,7 @@ cmdBlkdeviotune(vshControl *ctl, const vshCmd *cmd)
if (!(dom = vshCommandOptDomain(ctl, cmd, &name)))
goto cleanup;
- if (vshCommandOptString(cmd, "device", &disk) < 0)
+ if (vshCommandOptStringReq(ctl, cmd, "device", &disk) < 0)
goto cleanup;
if ((rv = vshCommandOptULongLong(cmd, "total-bytes-sec", &value)) <
0) {
@@ -1349,7 +1334,7 @@ blockJobImpl(vshControl *ctl, const vshCmd *cmd,
if (!(dom = vshCommandOptDomain(ctl, cmd, &name)))
goto cleanup;
- if (vshCommandOptString(cmd, "path", &path) < 0)
+ if (vshCommandOptStringReq(ctl, cmd, "path", &path) < 0)
goto cleanup;
if (vshCommandOptUL(cmd, "bandwidth", &bandwidth) < 0) {
@@ -1372,7 +1357,7 @@ blockJobImpl(vshControl *ctl, const vshCmd *cmd,
ret = virDomainBlockJobSetSpeed(dom, path, bandwidth, 0);
break;
case VSH_CMD_BLOCK_JOB_PULL:
- if (vshCommandOptString(cmd, "base", &base) < 0)
+ if (vshCommandOptStringReq(ctl, cmd, "base", &base) < 0)
goto cleanup;
if (base)
ret = virDomainBlockRebase(dom, path, base, bandwidth, 0);
@@ -1380,8 +1365,8 @@ blockJobImpl(vshControl *ctl, const vshCmd *cmd,
ret = virDomainBlockPull(dom, path, bandwidth, 0);
break;
case VSH_CMD_BLOCK_JOB_COMMIT:
- if (vshCommandOptString(cmd, "base", &base) < 0 ||
- vshCommandOptString(cmd, "top", &top) < 0)
+ if (vshCommandOptStringReq(ctl, cmd, "base", &base) < 0 ||
+ vshCommandOptStringReq(ctl, cmd, "top", &top) < 0)
goto cleanup;
if (vshCommandOptBool(cmd, "shallow"))
flags |= VIR_DOMAIN_BLOCK_COMMIT_SHALLOW;
@@ -1397,7 +1382,7 @@ blockJobImpl(vshControl *ctl, const vshCmd *cmd,
flags |= VIR_DOMAIN_BLOCK_REBASE_REUSE_EXT;
if (vshCommandOptBool(cmd, "raw"))
flags |= VIR_DOMAIN_BLOCK_REBASE_COPY_RAW;
- if (vshCommandOptString(cmd, "dest", &base) < 0)
+ if (vshCommandOptStringReq(ctl, cmd, "dest", &base) < 0)
goto cleanup;
ret = virDomainBlockRebase(dom, path, base, bandwidth, flags);
}
@@ -1541,7 +1526,7 @@ cmdBlockCommit(vshControl *ctl, const vshCmd *cmd)
}
timeout *= 1000;
}
- if (vshCommandOptString(cmd, "path", &path) < 0)
+ if (vshCommandOptStringReq(ctl, cmd, "path", &path) < 0)
return false;
if (vshCommandOptBool(cmd, "async"))
abort_flags |= VIR_DOMAIN_BLOCK_JOB_ABORT_ASYNC;
@@ -1741,7 +1726,7 @@ cmdBlockCopy(vshControl *ctl, const vshCmd *cmd)
}
timeout *= 1000;
}
- if (vshCommandOptString(cmd, "path", &path) < 0)
+ if (vshCommandOptStringReq(ctl, cmd, "path", &path) < 0)
return false;
if (vshCommandOptBool(cmd, "async"))
abort_flags |= VIR_DOMAIN_BLOCK_JOB_ABORT_ASYNC;
@@ -2017,7 +2002,7 @@ cmdBlockPull(vshControl *ctl, const vshCmd *cmd)
}
timeout *= 1000;
}
- if (vshCommandOptString(cmd, "path", &path) < 0)
+ if (vshCommandOptStringReq(ctl, cmd, "path", &path) < 0)
return false;
if (vshCommandOptBool(cmd, "async"))
abort_flags |= VIR_DOMAIN_BLOCK_JOB_ABORT_ASYNC;
@@ -2138,10 +2123,8 @@ cmdBlockResize(vshControl *ctl, const vshCmd *cmd)
unsigned int flags = 0;
int ret = false;
- if (vshCommandOptString(cmd, "path", (const char **) &path) < 0) {
- vshError(ctl, "%s", _("Path must not be empty"));
+ if (vshCommandOptStringReq(ctl, cmd, "path", (const char **) &path)
< 0)
return false;
- }
if (vshCommandOptScaledInt(cmd, "size", &size, 1024, ULLONG_MAX) <
0) {
vshError(ctl, "%s", _("Unable to parse integer"));
@@ -2250,10 +2233,8 @@ cmdConsole(vshControl *ctl, const vshCmd *cmd)
if (!(dom = vshCommandOptDomain(ctl, cmd, NULL)))
return false;
- if (vshCommandOptString(cmd, "devname", &name) < 0) {
- vshError(ctl, "%s", _("Invalid devname"));
+ if (vshCommandOptStringReq(ctl, cmd, "devname", &name) < 0)
goto cleanup;
- }
if (force)
flags |= VIR_DOMAIN_CONSOLE_FORCE;
@@ -2329,10 +2310,8 @@ cmdDomIfSetLink(vshControl *ctl, const vshCmd *cmd)
if (!(dom = vshCommandOptDomain(ctl, cmd, NULL)))
return false;
- if (vshCommandOptString(cmd, "interface", &iface) <= 0)
- goto cleanup;
-
- if (vshCommandOptString(cmd, "state", &state) <= 0)
+ if (vshCommandOptStringReq(ctl, cmd, "interface", &iface) < 0 ||
+ vshCommandOptStringReq(ctl, cmd, "state", &state) < 0)
goto cleanup;
config = vshCommandOptBool(cmd, "config");
@@ -2542,14 +2521,12 @@ cmdDomIftune(vshControl *ctl, const vshCmd *cmd)
if (!(dom = vshCommandOptDomain(ctl, cmd, &name)))
return false;
- if (vshCommandOptString(cmd, "interface", &device) <= 0)
+ if (vshCommandOptStringReq(ctl, cmd, "interface", &device) < 0)
goto cleanup;
- if (vshCommandOptString(cmd, "inbound", &inboundStr) < 0 ||
- vshCommandOptString(cmd, "outbound", &outboundStr) < 0) {
- vshError(ctl, "missing argument");
+ if (vshCommandOptStringReq(ctl, cmd, "inbound", &inboundStr) < 0 ||
+ vshCommandOptStringReq(ctl,cmd, "outbound", &outboundStr) < 0)
goto cleanup;
- }
memset(&inbound, 0, sizeof(inbound));
memset(&outbound, 0, sizeof(outbound));
@@ -2746,10 +2723,8 @@ cmdDomPMSuspend(vshControl *ctl, const vshCmd *cmd)
goto cleanup;
}
- if (vshCommandOptString(cmd, "target", &target) < 0) {
- vshError(ctl, _("Invalid target argument"));
+ if (vshCommandOptStringReq(ctl, cmd, "target", &target) < 0)
goto cleanup;
- }
if (STREQ(target, "mem"))
suspendTarget = VIR_NODE_SUSPEND_TARGET_MEM;
@@ -3374,7 +3349,7 @@ doSave(void *opaque)
if (pthread_sigmask(SIG_BLOCK, &sigmask, &oldsigmask) < 0)
goto out_sig;
- if (vshCommandOptString(cmd, "file", &to) <= 0)
+ if (vshCommandOptStringReq(ctl, cmd, "file", &to) < 0)
goto out;
if (vshCommandOptBool(cmd, "bypass-cache"))
@@ -3384,10 +3359,8 @@ doSave(void *opaque)
if (vshCommandOptBool(cmd, "paused"))
flags |= VIR_DOMAIN_SAVE_PAUSED;
- if (vshCommandOptString(cmd, "xml", &xmlfile) < 0) {
- vshError(ctl, "%s", _("malformed xml argument"));
+ if (vshCommandOptStringReq(ctl, cmd, "xml", &xmlfile) < 0)
goto out;
- }
if (!(dom = vshCommandOptDomain(ctl, cmd, &name)))
goto out;
@@ -3523,7 +3496,7 @@ cmdSave(vshControl *ctl, const vshCmd *cmd)
if (!(dom = vshCommandOptDomain(ctl, cmd, &name)))
return false;
- if (vshCommandOptString(cmd, "file", &to) <= 0)
+ if (vshCommandOptStringReq(ctl, cmd, "file", &to) < 0)
goto cleanup;
if (vshCommandOptBool(cmd, "verbose"))
@@ -3590,7 +3563,7 @@ cmdSaveImageDumpxml(vshControl *ctl, const vshCmd *cmd)
if (vshCommandOptBool(cmd, "security-info"))
flags |= VIR_DOMAIN_XML_SECURE;
- if (vshCommandOptString(cmd, "file", &file) <= 0)
+ if (vshCommandOptStringReq(ctl, cmd, "file", &file) < 0)
return false;
xml = virDomainSaveImageGetXMLDesc(ctl->conn, file, flags);
@@ -3652,13 +3625,11 @@ cmdSaveImageDefine(vshControl *ctl, const vshCmd *cmd)
if (vshCommandOptBool(cmd, "paused"))
flags |= VIR_DOMAIN_SAVE_PAUSED;
- if (vshCommandOptString(cmd, "file", &file) <= 0)
+ if (vshCommandOptStringReq(ctl, cmd, "file", &file) < 0)
return false;
- if (vshCommandOptString(cmd, "xml", &xmlfile) <= 0) {
- vshError(ctl, "%s", _("malformed or missing xml argument"));
+ if (vshCommandOptStringReq(ctl, cmd, "xml", &xmlfile) <= 0)
return false;
- }
if (virFileReadAll(xmlfile, 8192, &xml) < 0)
goto cleanup;
@@ -3726,7 +3697,7 @@ cmdSaveImageEdit(vshControl *ctl, const vshCmd *cmd)
return false;
}
- if (vshCommandOptString(cmd, "file", &file) <= 0)
+ if (vshCommandOptStringReq(ctl, cmd, "file", &file) < 0)
return false;
#define EDIT_GET_XML \
@@ -4213,7 +4184,7 @@ cmdRestore(vshControl *ctl, const vshCmd *cmd)
const char *xmlfile = NULL;
char *xml = NULL;
- if (vshCommandOptString(cmd, "file", &from) <= 0)
+ if (vshCommandOptStringReq(ctl, cmd, "file", &from) < 0)
return false;
if (vshCommandOptBool(cmd, "bypass-cache"))
@@ -4223,10 +4194,8 @@ cmdRestore(vshControl *ctl, const vshCmd *cmd)
if (vshCommandOptBool(cmd, "paused"))
flags |= VIR_DOMAIN_SAVE_PAUSED;
- if (vshCommandOptString(cmd, "xml", &xmlfile) < 0) {
- vshError(ctl, "%s", _("malformed xml argument"));
+ if (vshCommandOptStringReq(ctl, cmd, "xml", &xmlfile) < 0)
return false;
- }
if (xmlfile &&
virFileReadAll(xmlfile, 8192, &xml) < 0)
@@ -4318,7 +4287,7 @@ doDump(void *opaque)
if (pthread_sigmask(SIG_BLOCK, &sigmask, &oldsigmask) < 0)
goto out_sig;
- if (vshCommandOptString(cmd, "file", &to) <= 0)
+ if (vshCommandOptStringReq(ctl, cmd, "file", &to) < 0)
goto out;
if (!(dom = vshCommandOptDomain(ctl, cmd, &name)))
@@ -4364,7 +4333,7 @@ cmdDump(vshControl *ctl, const vshCmd *cmd)
if (!(dom = vshCommandOptDomain(ctl, cmd, &name)))
return false;
- if (vshCommandOptString(cmd, "file", &to) <= 0)
+ if (vshCommandOptStringReq(ctl, cmd, "file", &to) < 0)
return false;
if (vshCommandOptBool(cmd, "verbose"))
@@ -4474,10 +4443,8 @@ cmdScreenshot(vshControl *ctl, const vshCmd *cmd)
bool generated = false;
char *mime = NULL;
- if (vshCommandOptString(cmd, "file", (const char **) &file) < 0) {
- vshError(ctl, "%s", _("file must not be empty"));
+ if (vshCommandOptStringReq(ctl, cmd, "file", (const char **) &file)
< 0)
return false;
- }
if (vshCommandOptUInt(cmd, "screen", &screen) < 0) {
vshError(ctl, "%s", _("invalid screen ID"));
@@ -4615,10 +4582,8 @@ cmdShutdown(vshControl *ctl, const vshCmd *cmd)
int rv;
char **modes = NULL, **tmp;
- if (vshCommandOptString(cmd, "mode", &mode) < 0) {
- vshError(ctl, "%s", _("Invalid type"));
+ if (vshCommandOptStringReq(ctl, cmd, "mode", &mode) < 0)
return false;
- }
if (mode && !(modes = virStringSplit(mode, ",", 0))) {
vshError(ctl, "%s", _("Cannot parse mode string"));
@@ -4699,10 +4664,8 @@ cmdReboot(vshControl *ctl, const vshCmd *cmd)
int flags = 0;
char **modes = NULL, **tmp;
- if (vshCommandOptString(cmd, "mode", &mode) < 0) {
- vshError(ctl, "%s", _("Invalid type"));
+ if (vshCommandOptStringReq(ctl, cmd, "mode", &mode) < 0)
return false;
- }
if (mode && !(modes = virStringSplit(mode, ",", 0))) {
vshError(ctl, "%s", _("Cannot parse mode string"));
@@ -4926,14 +4889,12 @@ cmdMaxvcpus(vshControl *ctl, const vshCmd *cmd)
const char *type = NULL;
int vcpus;
- if (vshCommandOptString(cmd, "type", &type) < 0) {
- vshError(ctl, "%s", _("Invalid type"));
+ if (vshCommandOptStringReq(ctl, cmd, "type", &type) < 0)
return false;
- }
- vcpus = virConnectGetMaxVcpus(ctl->conn, type);
- if (vcpus < 0)
+ if ((vcpus = virConnectGetMaxVcpus(ctl->conn, type)) < 0)
return false;
+
vshPrint(ctl, "%d\n", vcpus);
return true;
@@ -5385,14 +5346,12 @@ cmdVcpuPin(vshControl *ctl, const vshCmd *cmd)
flags = -1;
}
- if (!(dom = vshCommandOptDomain(ctl, cmd, NULL)))
+ if (vshCommandOptStringReq(ctl, cmd, "cpulist", &cpulist) < 0)
return false;
- if (vshCommandOptString(cmd, "cpulist", &cpulist) < 0) {
- vshError(ctl, "%s", _("vcpupin: Missing cpulist."));
- virDomainFree(dom);
+ if (!(dom = vshCommandOptDomain(ctl, cmd, NULL)))
return false;
- }
+
query = !cpulist;
/* In query mode, "vcpu" is optional */
@@ -5623,8 +5582,7 @@ cmdEmulatorPin(vshControl *ctl, const vshCmd *cmd)
if (!(dom = vshCommandOptDomain(ctl, cmd, NULL)))
return false;
- if (vshCommandOptString(cmd, "cpulist", &cpulist) < 0) {
- vshError(ctl, "%s", _("emulatorpin: Missing cpulist."));
+ if (vshCommandOptStringReq(ctl, cmd, "cpulist", &cpulist) < 0) {
virDomainFree(dom);
return false;
}
@@ -5896,14 +5854,11 @@ cmdCPUCompare(vshControl *ctl, const vshCmd *cmd)
xmlBufferPtr xml_buf = NULL;
xmlNodePtr node;
- if (vshCommandOptString(cmd, "file", &from) <= 0)
+ if (vshCommandOptStringReq(ctl, cmd, "file", &from) < 0)
return false;
- if (virFileReadAll(from, VSH_MAX_XML_FILE, &buffer) < 0) {
- vshError(ctl, _("Failed to read file '%s' to compare"),
- from);
+ if (virFileReadAll(from, VSH_MAX_XML_FILE, &buffer) < 0)
return false;
- }
/* try to extract the CPU element from as it would appear in a domain XML*/
if (!(xml = virXMLParseStringCtxt(buffer, from, &ctxt)))
@@ -6000,7 +5955,7 @@ cmdCPUBaseline(vshControl *ctl, const vshCmd *cmd)
virBuffer buf = VIR_BUFFER_INITIALIZER;
int i;
- if (vshCommandOptString(cmd, "file", &from) <= 0)
+ if (vshCommandOptStringReq(ctl, cmd, "file", &from) < 0)
return false;
if (virFileReadAll(from, VSH_MAX_XML_FILE, &buffer) < 0)
@@ -6287,7 +6242,7 @@ cmdCreate(vshControl *ctl, const vshCmd *cmd)
#endif
unsigned int flags = VIR_DOMAIN_NONE;
- if (vshCommandOptString(cmd, "file", &from) <= 0)
+ if (vshCommandOptStringReq(ctl, cmd, "file", &from) < 0)
return false;
if (virFileReadAll(from, VSH_MAX_XML_FILE, &buffer) < 0)
@@ -6342,7 +6297,7 @@ cmdDefine(vshControl *ctl, const vshCmd *cmd)
bool ret = true;
char *buffer;
- if (vshCommandOptString(cmd, "file", &from) <= 0)
+ if (vshCommandOptStringReq(ctl, cmd, "file", &from) < 0)
return false;
if (virFileReadAll(from, VSH_MAX_XML_FILE, &buffer) < 0)
@@ -6813,15 +6768,11 @@ cmdSendProcessSignal(vshControl *ctl, const vshCmd *cmd)
if (!(dom = vshCommandOptDomain(ctl, cmd, NULL)))
return false;
- if (vshCommandOptString(cmd, "pid", &pidstr) <= 0) {
- vshError(ctl, "%s", _("missing argument"));
- return false;
- }
+ if (vshCommandOptStringReq(ctl, cmd, "pid", &pidstr) < 0)
+ goto cleanup;
- if (vshCommandOptString(cmd, "signame", &signame) <= 0) {
- vshError(ctl, "%s", _("missing argument"));
- return false;
- }
+ if (vshCommandOptStringReq(ctl, cmd, "signame", &signame) < 0)
+ goto cleanup;
if (virStrToLong_ll(pidstr, NULL, 10, &pid_value) < 0) {
vshError(ctl, _("malformed PID value: %s"), pidstr);
@@ -7334,19 +7285,17 @@ cmdNumatune(vshControl * ctl, const vshCmd * cmd)
if (!(dom = vshCommandOptDomain(ctl, cmd, NULL)))
return false;
- if (vshCommandOptString(cmd, "nodeset", &nodeset) < 0) {
- vshError(ctl, "%s", _("Unable to parse nodeset."));
+ if (vshCommandOptStringReq(ctl, cmd, "nodeset", &nodeset) < 0)
goto cleanup;
- }
+
if (nodeset &&
virTypedParamsAddString(¶ms, &nparams, &maxparams,
VIR_DOMAIN_NUMA_NODESET, nodeset) < 0)
goto save_error;
- if (vshCommandOptString(cmd, "mode", &mode) < 0) {
- vshError(ctl, "%s", _("Unable to parse mode."));
+ if (vshCommandOptStringReq(ctl, cmd, "mode", &mode) < 0)
goto cleanup;
- }
+
if (mode) {
int m;
/* Accept string or integer, in case server understands newer
@@ -7865,8 +7814,8 @@ cmdDomXMLFromNative(vshControl *ctl, const vshCmd *cmd)
char *xmlData;
unsigned int flags = 0;
- if (vshCommandOptString(cmd, "format", &format) < 0 ||
- vshCommandOptString(cmd, "config", &configFile) < 0)
+ if (vshCommandOptStringReq(ctl, cmd, "format", &format) < 0 ||
+ vshCommandOptStringReq(ctl, cmd, "config", &configFile) < 0)
return false;
if (virFileReadAll(configFile, 1024*1024, &configData) < 0)
@@ -7917,8 +7866,8 @@ cmdDomXMLToNative(vshControl *ctl, const vshCmd *cmd)
char *xmlData;
unsigned int flags = 0;
- if (vshCommandOptString(cmd, "format", &format) < 0
- || vshCommandOptString(cmd, "xml", &xmlFile) < 0)
+ if (vshCommandOptStringReq(ctl, cmd, "format", &format) < 0 ||
+ vshCommandOptStringReq(ctl, cmd, "xml", &xmlFile) < 0)
return false;
if (virFileReadAll(xmlFile, 1024*1024, &xmlData) < 0)
@@ -8179,17 +8128,11 @@ doMigrate(void *opaque)
if (!(dom = vshCommandOptDomain(ctl, cmd, NULL)))
goto out;
- if (vshCommandOptString(cmd, "desturi", &desturi) <= 0 ||
- vshCommandOptString(cmd, "migrateuri", &migrateuri) < 0 ||
- vshCommandOptString(cmd, "dname", &dname) < 0) {
- vshError(ctl, "%s", _("missing argument"));
- goto out;
- }
-
- if (vshCommandOptString(cmd, "xml", &xmlfile) < 0) {
- vshError(ctl, "%s", _("malformed xml argument"));
+ if (vshCommandOptStringReq(ctl, cmd, "desturi", &desturi) < 0 ||
+ vshCommandOptStringReq(ctl, cmd, "migrateuri", &migrateuri) < 0
||
+ vshCommandOptStringReq(ctl, cmd, "dname", &dname) < 0 ||
+ vshCommandOptStringReq(ctl, cmd, "xml", &xmlfile) < 0)
goto out;
- }
if (vshCommandOptBool(cmd, "live"))
flags |= VIR_MIGRATE_LIVE;
@@ -9115,7 +9058,7 @@ cmdDetachDevice(vshControl *ctl, const vshCmd *cmd)
if (!(dom = vshCommandOptDomain(ctl, cmd, NULL)))
return false;
- if (vshCommandOptString(cmd, "file", &from) <= 0)
+ if (vshCommandOptStringReq(ctl, cmd, "file", &from) < 0)
goto cleanup;
if (virFileReadAll(from, VSH_MAX_XML_FILE, &buffer) < 0) {
@@ -9189,22 +9132,19 @@ cmdUpdateDevice(vshControl *ctl, const vshCmd *cmd)
{
virDomainPtr dom;
const char *from = NULL;
- char *buffer;
- int ret;
+ char *buffer = NULL;
+ bool ret = false;
unsigned int flags;
if (!(dom = vshCommandOptDomain(ctl, cmd, NULL)))
return false;
- if (vshCommandOptString(cmd, "file", &from) <= 0) {
- virDomainFree(dom);
- return false;
- }
+ if (vshCommandOptStringReq(ctl, cmd, "file", &from) < 0)
+ goto cleanup;
if (virFileReadAll(from, VSH_MAX_XML_FILE, &buffer) < 0) {
vshReportError(ctl);
- virDomainFree(dom);
- return false;
+ goto cleanup;
}
if (vshCommandOptBool(cmd, "config")) {
@@ -9218,19 +9158,18 @@ cmdUpdateDevice(vshControl *ctl, const vshCmd *cmd)
if (vshCommandOptBool(cmd, "force"))
flags |= VIR_DOMAIN_DEVICE_MODIFY_FORCE;
- ret = virDomainUpdateDeviceFlags(dom, buffer, flags);
- VIR_FREE(buffer);
-
- if (ret < 0) {
+ if (virDomainUpdateDeviceFlags(dom, buffer, flags) < 0) {
vshError(ctl, _("Failed to update device from %s"), from);
- virDomainFree(dom);
- return false;
- } else {
- vshPrint(ctl, "%s", _("Device updated successfully\n"));
+ goto cleanup;
}
+ vshPrint(ctl, "%s", _("Device updated successfully\n"));
+ ret = true;
+
+cleanup:
+ VIR_FREE(buffer);
virDomainFree(dom);
- return true;
+ return ret;
}
/*
@@ -9289,15 +9228,13 @@ cmdDetachInterface(vshControl *ctl, const vshCmd *cmd)
unsigned int flags;
if (!(dom = vshCommandOptDomain(ctl, cmd, NULL)))
- goto cleanup;
+ return false;
- if (vshCommandOptString(cmd, "type", &type) <= 0)
+ if (vshCommandOptStringReq(ctl, cmd, "type", &type) < 0)
goto cleanup;
- if (vshCommandOptString(cmd, "mac", &mac) < 0) {
- vshError(ctl, "%s", _("missing option"));
+ if (vshCommandOptStringReq(ctl, cmd, "mac", &mac) < 0)
goto cleanup;
- }
doc = virDomainGetXMLDesc(dom, 0);
if (!doc)
@@ -9389,8 +9326,7 @@ cmdDetachInterface(vshControl *ctl, const vshCmd *cmd)
}
cleanup:
- if (dom)
- virDomainFree(dom);
+ virDomainFree(dom);
xmlXPathFreeObject(obj);
xmlXPathFreeContext(ctxt);
xmlFreeDoc(xml);
@@ -9660,9 +9596,9 @@ cmdDetachDisk(vshControl *ctl, const vshCmd *cmd)
xmlNodePtr disk_node = NULL;
if (!(dom = vshCommandOptDomain(ctl, cmd, NULL)))
- goto cleanup;
+ return false;
- if (vshCommandOptString(cmd, "target", &target) <= 0)
+ if (vshCommandOptStringReq(ctl, cmd, "target", &target) < 0)
goto cleanup;
doc = virDomainGetXMLDesc(dom, 0);
@@ -9698,8 +9634,7 @@ cmdDetachDisk(vshControl *ctl, const vshCmd *cmd)
xmlFreeNode(disk_node);
VIR_FREE(disk_xml);
VIR_FREE(doc);
- if (dom)
- virDomainFree(dom);
+ virDomainFree(dom);
return functionReturn;
}
@@ -9887,10 +9822,10 @@ cmdChangeMedia(vshControl *ctl, const vshCmd *cmd)
if (!(dom = vshCommandOptDomain(ctl, cmd, NULL)))
goto cleanup;
- if (vshCommandOptString(cmd, "path", &path) <= 0)
+ if (vshCommandOptStringReq(ctl, cmd, "path", &path) < 0)
goto cleanup;
- if (vshCommandOptString(cmd, "source", &source) < 0)
+ if (vshCommandOptStringReq(ctl, cmd, "source", &source) < 0)
goto cleanup;
if (insert && !source) {
@@ -9970,10 +9905,8 @@ cmdDomFSTrim(vshControl *ctl, const vshCmd *cmd)
goto cleanup;
}
- if (vshCommandOptString(cmd, "mountpoint", &mountPoint) < 0) {
- vshError(ctl, _("Unable to parse mountpoint parameter"));
+ if (vshCommandOptStringReq(ctl, cmd, "mountpoint", &mountPoint) <
0)
goto cleanup;
- }
if (virDomainFSTrim(dom, mountPoint, minimum, flags) < 0) {
vshError(ctl, _("Unable to invoke fstrim"));
--
1.8.1.1