if (vshCommandOptString(ctl, cmd, "file", &to) < 0)
goto out;
- if (to &&
- virTypedParamsAddString(¶ms, &nparams, &maxparams,
- VIR_DOMAIN_SAVE_PARAM_FILE, to) < 0)
- goto out;
if ((rc = vshCommandOptInt(ctl, cmd, "parallel-channels", &nchannels)) < 0)
goto out;
vshReportError(ctl);
goto out;
}
- if (xml &&
- virTypedParamsAddString(¶ms, &nparams, &maxparams,
- VIR_DOMAIN_SAVE_PARAM_DXML, xml) < 0)
- goto out;
- if (flags || xml) {
+ if (nparams > 0) {
+ if (to &&
+ virTypedParamsAddString(¶ms, &nparams, &maxparams,
+ VIR_DOMAIN_SAVE_PARAM_FILE, to) < 0)
+ goto out;
+
+ if (xml &&
+ virTypedParamsAddString(¶ms, &nparams, &maxparams,
+ VIR_DOMAIN_SAVE_PARAM_DXML, xml) < 0)
+ goto out;
+
rc = virDomainSaveParams(dom, params, nparams, flags);
+ } else if (flags || xml) {
+ rc = virDomainSaveFlags(dom, to, xml, flags);
} else {
rc = virDomainSave(dom, to);
}