case LIBXL_DEVICE_MODEL_VERSION_QEMU_XEN_TRADITIONAL:
dm = libxl__abs_path(gc, "qemu-dm", libxl__private_bindir_path());
break;
- case LIBXL_DEVICE_MODEL_VERSION_QEMU_XEN: {
- const char *configured_dm = qemu_xen_path(gc);
- if (configured_dm[0] == '/')
- {
- dm = configured_dm;
- }
- else
- {
- const char *path_env = getenv("PATH");
- if (!path_env)
- {
- dm = configured_dm;
- }
- else
- {
- char *path_dup = libxl__strdup(gc, path_env);
- char *saveptr;
-
- char *path = strtok_r(path_dup, ":", &saveptr);
- dm = NULL;
- while (path)
- {
- char *candidate = libxl__abs_path(gc, configured_dm, path);
- if (access(candidate, X_OK) == 0)
- {
- dm = candidate;
- break;
- }
- path = strtok_r(NULL, ":", &saveptr);
- }
-
- if (!dm)
- dm = configured_dm;
- }
- }
+ case LIBXL_DEVICE_MODEL_VERSION_QEMU_XEN:
+ dm = qemu_xen_path(gc);
break;
- }
default:
LOG(ERROR, "invalid device model version %d",
info->device_model_version);