char *help = NULL;
char *tmp = NULL;
g_autofree char *ch_cmd = g_find_program_in_path(CH_CMD);
- virCommand *cmd = virCommandNewArgList(ch_cmd, "--version", NULL);
+ virCommand *cmd = NULL;
+ if (!ch_cmd)
+ return -2;
+
+ cmd = virCommandNewArgList(ch_cmd, "--version", NULL);
virCommandAddEnvString(cmd, "LC_ALL=C");
virCommandSetOutputBuffer(cmd, &help);
virStateInhibitCallback callback G_GNUC_UNUSED,
void *opaque G_GNUC_UNUSED)
{
+ int ret = VIR_DRV_STATE_INIT_ERROR;
+ int rv;
+
if (root != NULL) {
virReportError(VIR_ERR_INVALID_ARG, "%s",
_("Driver does not support embedded mode"));
if (!(ch_driver->config = virCHDriverConfigNew(privileged)))
goto cleanup;
- if (chExtractVersion(ch_driver) < 0)
+ if ((rv = chExtractVersion(ch_driver)) < 0) {
+ if (rv == -2)
+ ret = VIR_DRV_STATE_INIT_SKIPPED;
goto cleanup;
+ }
- return VIR_DRV_STATE_INIT_COMPLETE;
+ ret = VIR_DRV_STATE_INIT_COMPLETE;
cleanup:
- chStateCleanup();
- return VIR_DRV_STATE_INIT_ERROR;
+ if (ret != VIR_DRV_STATE_INIT_COMPLETE)
+ chStateCleanup();
+ return ret;
}
/* Function Tables */