return ret;
}
+/* Returns true if a compression program is available in PATH */
+static bool qemudCompressProgramAvailable(enum qemud_save_formats compress)
+{
+ const char *prog;
+ char *c;
+
+ if (compress == QEMUD_SAVE_FORMAT_RAW)
+ return true;
+ prog = qemudSaveCompressionTypeToString(compress);
+ c = virFindFileInPath(prog);
+ if (!c)
+ return false;
+ VIR_FREE(c);
+ return true;
+}
+
static int qemudDomainSave(virDomainPtr dom, const char *path)
{
struct qemud_driver *driver = dom->conn->privateData;
"in configuration file"));
return -1;
}
+ if (!qemudCompressProgramAvailable(compressed)) {
+ qemuReportError(VIR_ERR_OPERATION_FAILED,
+ "%s", _("Compression program for image format "
+ "in configuration file isn't available"));
+ return -1;
+ }
}
vm = virDomainFindByUUID(&driver->domains, dom->uuid);
"configuration file"));
return -1;
}
+ if (!qemudCompressProgramAvailable(compress)) {
+ qemuReportError(VIR_ERR_OPERATION_FAILED,
+ "%s", _("Compression program for dump image format "
+ "in configuration file isn't available"));
+ return -1;
+ }
}
qemuDriverLock(driver);