DIR *dir;
struct dirent *dirent;
- snprintf(name, PATH_MAX, "%s%s", HOME_DIR, KVM_PID_FILE_PATH);
+ snprintf(name, PATH_MAX, "%s", kvm__get_dir());
dir = opendir(name);
if (dir == NULL)
return -1;
return 0;
}
- snprintf(path, PATH_MAX, "%s%s%s", HOME_DIR, KVM_PID_FILE_PATH, arg);
+ snprintf(path, PATH_MAX, "%s%s", kvm__get_dir(), arg);
if (stat(path, &st) == 0 &&
S_ISDIR(st.st_mode)) {
kvm_setup_create_new("default");
kvm_setup_resolv("default");
- snprintf(tmp, PATH_MAX, "%s%s%s", HOME_DIR, KVM_PID_FILE_PATH, "default");
+ snprintf(tmp, PATH_MAX, "%s%s", kvm__get_dir(), "default");
if (virtio_9p__register(kvm, tmp, "/dev/root") < 0)
die("Unable to initialize virtio 9p");
if (virtio_9p__register(kvm, "/", "hostfs") < 0)
{
char path[PATH_MAX];
- snprintf(path, PATH_MAX, "%s%s%s/virt/init", HOME_DIR, KVM_PID_FILE_PATH, guestfs_name);
+ snprintf(path, PATH_MAX, "%s%s/virt/init", kvm__get_dir(), guestfs_name);
return copy_file("guest/init", path);
}
char target[PATH_MAX];
char name[PATH_MAX];
- snprintf(name, PATH_MAX, "%s%s%s%s", HOME_DIR, KVM_PID_FILE_PATH, guestfs_name, path);
+ snprintf(name, PATH_MAX, "%s%s%s", kvm__get_dir(), guestfs_name, path);
snprintf(target, PATH_MAX, "/host%s", path);
{
char name[PATH_MAX];
- snprintf(name, PATH_MAX, "%s%s", HOME_DIR, KVM_PID_FILE_PATH);
+ snprintf(name, PATH_MAX, "%s", kvm__get_dir());
mkdir(name, 0777);
}
{
char name[PATH_MAX];
- snprintf(name, PATH_MAX, "%s%s%s", HOME_DIR, KVM_PID_FILE_PATH, dir);
+ snprintf(name, PATH_MAX, "%s%s", kvm__get_dir(), dir);
return mkdir(name, 0777);
}
{
char path[PATH_MAX];
- snprintf(path, PATH_MAX, "%s%s%s/etc/resolv.conf", HOME_DIR, KVM_PID_FILE_PATH, guestfs_name);
+ snprintf(path, PATH_MAX, "%s%s/etc/resolv.conf", kvm__get_dir(), guestfs_name);
copy_file("/etc/resolv.conf", path);
}
const char *name;
};
+void kvm__set_dir(const char *fmt, ...);
+const char *kvm__get_dir(void);
+
struct kvm *kvm__init(const char *kvm_dev, u64 ram_size, const char *name);
int kvm__recommended_cpus(struct kvm *kvm);
int kvm__max_cpus(struct kvm *kvm);
static int pause_event;
static DEFINE_MUTEX(pause_lock);
+static char kvm_dir[PATH_MAX];
+
+static void set_dir(const char *fmt, va_list args)
+{
+ vsnprintf(kvm_dir, sizeof(kvm_dir), fmt, args);
+}
+
+void kvm__set_dir(const char *fmt, ...)
+{
+ va_list args;
+
+ va_start(args, fmt);
+ set_dir(fmt, args);
+ va_end(args);
+}
+
+const char *kvm__get_dir(void)
+{
+ return kvm_dir;
+}
+
static bool kvm__supports_extension(struct kvm *kvm, unsigned int extension)
{
int ret;
if (!kvm->name)
return;
- sprintf(full_name, "%s/%s", HOME_DIR, KVM_PID_FILE_PATH);
+ sprintf(full_name, "%s", kvm__get_dir());
mkdir(full_name, 0777);
- sprintf(full_name, "%s/%s/%s.pid", HOME_DIR, KVM_PID_FILE_PATH, kvm->name);
+ sprintf(full_name, "%s/%s.pid", kvm__get_dir(), kvm->name);
fd = open(full_name, O_CREAT | O_WRONLY, 0666);
sprintf(pid, "%u\n", getpid());
if (write(fd, pid, strlen(pid)) <= 0)
{
char full_name[PATH_MAX];
- sprintf(full_name, "%s/%s/%s.pid", HOME_DIR, KVM_PID_FILE_PATH, name);
+ sprintf(full_name, "%s/%s.pid", kvm__get_dir(), name);
unlink(full_name);
}
pid_t pid;
char pid_str[10], pid_file[PATH_MAX];
- sprintf(pid_file, "%s/%s/%s.pid", HOME_DIR, KVM_PID_FILE_PATH, name);
+ sprintf(pid_file, "%s/%s.pid", kvm__get_dir(), name);
fd = open(pid_file, O_RDONLY);
if (fd < 0)
return -1;
struct dirent entry, *result;
int ret = 0;
- sprintf(full_name, "%s/%s", HOME_DIR, KVM_PID_FILE_PATH);
+ sprintf(full_name, "%s", kvm__get_dir());
dir = opendir(full_name);
while (dir != NULL) {
+#include "kvm/kvm.h"
+
+#include <stdlib.h>
#include <stdio.h>
/* user defined header files */
int main(int argc, char *argv[])
{
+ kvm__set_dir("%s/%s", HOME_DIR, KVM_PID_FILE_PATH);
+
return handle_kvm_command(argc - 1, &argv[1]);
}