mirror of
https://gitlab.com/libvirt/libvirt.git
synced 2025-01-22 04:25:18 +00:00
tpm: Refactor virTPMEmulatorInit to use loop
Refactor virTPMEmulatorInit to use a loop with parameters. This allows for easier extension later on. Signed-off-by: Stefan Berger <stefanb@linux.ibm.com> Reviewed-by: Marc-André Lureau <marcandre.lureau@redhat.com> Reviewed-by: Daniel P. Berrangé <berrange@redhat.com>
This commit is contained in:
parent
4777bbdd76
commit
2fcbe9f97d
@ -136,54 +136,46 @@ int
|
||||
virTPMEmulatorInit(void)
|
||||
{
|
||||
int ret = -1;
|
||||
static const struct {
|
||||
const char *name;
|
||||
char **path;
|
||||
} prgs[] = {
|
||||
{
|
||||
.name = "swtpm",
|
||||
.path = &swtpm_path,
|
||||
},
|
||||
{
|
||||
.name = "swtpm_setup",
|
||||
.path = &swtpm_setup,
|
||||
},
|
||||
{
|
||||
.name = "swtpm_ioctl",
|
||||
.path = &swtpm_ioctl,
|
||||
}
|
||||
};
|
||||
size_t i;
|
||||
|
||||
virMutexLock(&swtpm_tools_lock);
|
||||
|
||||
if (!swtpm_path) {
|
||||
swtpm_path = virFindFileInPath("swtpm");
|
||||
if (!swtpm_path) {
|
||||
virReportSystemError(ENOENT, "%s",
|
||||
_("Unable to find 'swtpm' binary in $PATH"));
|
||||
goto cleanup;
|
||||
}
|
||||
if (!virFileIsExecutable(swtpm_path)) {
|
||||
virReportError(VIR_ERR_INTERNAL_ERROR,
|
||||
_("TPM emulator %s is not an executable"),
|
||||
swtpm_path);
|
||||
VIR_FREE(swtpm_path);
|
||||
goto cleanup;
|
||||
}
|
||||
}
|
||||
for (i = 0; i < ARRAY_CARDINALITY(prgs); i++) {
|
||||
VIR_AUTOFREE(char *) path = NULL;
|
||||
bool findit = *prgs[i].path == NULL;
|
||||
|
||||
if (!swtpm_setup) {
|
||||
swtpm_setup = virFindFileInPath("swtpm_setup");
|
||||
if (!swtpm_setup) {
|
||||
virReportError(VIR_ERR_INTERNAL_ERROR, "%s",
|
||||
_("Could not find 'swtpm_setup' in PATH"));
|
||||
if (findit) {
|
||||
path = virFindFileInPath(prgs[i].name);
|
||||
if (!path) {
|
||||
virReportSystemError(ENOENT,
|
||||
_("Unable to find '%s' binary in $PATH"),
|
||||
prgs[i].name);
|
||||
goto cleanup;
|
||||
}
|
||||
if (!virFileIsExecutable(swtpm_setup)) {
|
||||
if (!virFileIsExecutable(path)) {
|
||||
virReportError(VIR_ERR_INTERNAL_ERROR,
|
||||
_("'%s' is not an executable"),
|
||||
swtpm_setup);
|
||||
VIR_FREE(swtpm_setup);
|
||||
_("%s is not an executable"),
|
||||
path);
|
||||
goto cleanup;
|
||||
}
|
||||
}
|
||||
|
||||
if (!swtpm_ioctl) {
|
||||
swtpm_ioctl = virFindFileInPath("swtpm_ioctl");
|
||||
if (!swtpm_ioctl) {
|
||||
virReportError(VIR_ERR_INTERNAL_ERROR, "%s",
|
||||
_("Could not find swtpm_ioctl in PATH"));
|
||||
goto cleanup;
|
||||
}
|
||||
if (!virFileIsExecutable(swtpm_ioctl)) {
|
||||
virReportError(VIR_ERR_INTERNAL_ERROR,
|
||||
_("swtpm_ioctl program %s is not an executable"),
|
||||
swtpm_ioctl);
|
||||
VIR_FREE(swtpm_ioctl);
|
||||
goto cleanup;
|
||||
*prgs[i].path = path;
|
||||
}
|
||||
}
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user