From: Pekka Enberg Date: Sun, 16 Oct 2011 18:22:49 +0000 (+0300) Subject: kvm tools: Use kvm__get_dir() helper function X-Git-Tag: next-20111025~3^2~7 X-Git-Url: https://git.karo-electronics.de/?a=commitdiff_plain;h=f1a7aeefa3ee99fcd1b3edf60dc56426fadba19e;p=karo-tx-linux.git kvm tools: Use kvm__get_dir() helper function This patch adds a kvm__get_dir() helper function that replaces open-coded uses of HOME_DIR and KVM_PID_FILE_PATH. Cc: Asias He Cc: Cyrill Gorcunov Cc: Ingo Molnar Cc: Sasha Levin Signed-off-by: Pekka Enberg --- diff --git a/tools/kvm/builtin-list.c b/tools/kvm/builtin-list.c index 3e116d664916..d80b3fb3f330 100644 --- a/tools/kvm/builtin-list.c +++ b/tools/kvm/builtin-list.c @@ -78,7 +78,7 @@ static int kvm_list_rootfs(void) 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; diff --git a/tools/kvm/builtin-run.c b/tools/kvm/builtin-run.c index a88503fab964..cb5733a6320f 100644 --- a/tools/kvm/builtin-run.c +++ b/tools/kvm/builtin-run.c @@ -121,7 +121,7 @@ static int img_name_parser(const struct option *opt, const char *arg, int unset) 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)) { @@ -842,7 +842,7 @@ int kvm_cmd_run(int argc, const char **argv, const char *prefix) 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) diff --git a/tools/kvm/builtin-setup.c b/tools/kvm/builtin-setup.c index 71a58fb38cc9..dce1748f2ef4 100644 --- a/tools/kvm/builtin-setup.c +++ b/tools/kvm/builtin-setup.c @@ -125,7 +125,7 @@ static int copy_init(const char *guestfs_name) { 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); } @@ -135,7 +135,7 @@ static int make_guestfs_symlink(const char *guestfs_name, const char *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); @@ -146,7 +146,7 @@ static void make_root_dir(void) { 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); } @@ -155,7 +155,7 @@ static int make_dir(const char *dir) { 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); } @@ -173,7 +173,7 @@ void kvm_setup_resolv(const char *guestfs_name) { 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); } diff --git a/tools/kvm/include/kvm/kvm.h b/tools/kvm/include/kvm/kvm.h index 79fa97d00111..eee99591e296 100644 --- a/tools/kvm/include/kvm/kvm.h +++ b/tools/kvm/include/kvm/kvm.h @@ -57,6 +57,9 @@ struct kvm { 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); diff --git a/tools/kvm/kvm.c b/tools/kvm/kvm.c index 199c9b9ba41f..65feeb7327b2 100644 --- a/tools/kvm/kvm.c +++ b/tools/kvm/kvm.c @@ -78,6 +78,27 @@ extern struct kvm_cpu *kvm_cpus[KVM_NR_CPUS]; 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; @@ -122,9 +143,9 @@ static void kvm__create_pidfile(struct kvm *kvm) 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) @@ -136,7 +157,7 @@ void kvm__remove_pidfile(const char *name) { 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); } @@ -146,7 +167,7 @@ pid_t kvm__get_pid_by_instance(const char *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; @@ -171,7 +192,7 @@ int kvm__enumerate_instances(int (*callback)(const char *name, int pid)) 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) { diff --git a/tools/kvm/main.c b/tools/kvm/main.c index 2138e7b990bb..05bc82c8c6fa 100644 --- a/tools/kvm/main.c +++ b/tools/kvm/main.c @@ -1,3 +1,6 @@ +#include "kvm/kvm.h" + +#include #include /* user defined header files */ @@ -10,5 +13,7 @@ static int handle_kvm_command(int argc, char **argv) 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]); }