From: Daniel Lezcano Date: Thu, 28 May 2009 10:10:50 +0000 (+0200) Subject: copy the configuration file in the conf repo X-Git-Tag: lxc-2.1.1~3260 X-Git-Url: https://git.proxmox.com/?a=commitdiff_plain;h=d7efa8fcbf0911f93c83dc06a708e7d73833dce3;p=mirror_lxc.git copy the configuration file in the conf repo When creating the container, copy the configuration file to the configuration tree. Signed-off-by: Daniel Lezcano --- diff --git a/src/lxc/lxc_create.c b/src/lxc/lxc_create.c index d6a3a9ba5..110d68274 100644 --- a/src/lxc/lxc_create.c +++ b/src/lxc/lxc_create.c @@ -20,9 +20,11 @@ * License along with this library; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ +#define _GNU_SOURCE #include #include #include +#include #include #include #include @@ -67,7 +69,20 @@ Options :\n\ static int copy_config_file(const char *name, const char *file) { - return 0; + char *src; + int ret; + + if (!asprintf(&src, LXCPATH "/%s/config", name)) { + ERROR("failed to allocate memory"); + return -1; + } + + ret = lxc_copy_file(file, src); + if (ret) + ERROR("failed to copy '%s' to '%s'", file, src); + free(src); + + return ret; } int main(int argc, char *argv[]) @@ -96,12 +111,14 @@ int main(int argc, char *argv[]) return -1; } - if (copy_config_file(my_args.name, my_args.rcfile)) { + if (my_args.rcfile && copy_config_file(my_args.name, my_args.rcfile)) { ERROR("failed to copy the configuration file"); lxc_destroy(my_args.name); return -1; } + INFO("'%s' created", my_args.name); + return 0; } diff --git a/src/lxc/lxc_destroy.c b/src/lxc/lxc_destroy.c index 6c1cf3b8b..7aef61687 100644 --- a/src/lxc/lxc_destroy.c +++ b/src/lxc/lxc_destroy.c @@ -21,12 +21,15 @@ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ #include +#include #include #include #include #include "arguments.h" +lxc_log_define(lxc_destroy, lxc); + static const struct option my_longopts[] = { LXC_COMMON_OPTIONS }; @@ -45,6 +48,24 @@ Options :\n\ .checker = NULL, }; +static int remove_config_file(const char *name) +{ + char path[MAXPATHLEN]; + + snprintf(path, MAXPATHLEN, LXCPATH "/%s/config", name); + + /* config file does not exists */ + if (access(path, F_OK)) + return 0; + + if (unlink(path)) { + ERROR("failed to unlink '%s'", path); + return -1; + } + + return 0; +} + int main(int argc, char *argv[]) { if (lxc_arguments_parse(&my_args, argc, argv)) @@ -54,6 +75,16 @@ int main(int argc, char *argv[]) my_args.progname, my_args.quiet)) return -1; - return lxc_destroy(my_args.name); + if (remove_config_file(my_args.name)) + WARN("failed to remove the configuration file"); + + if (lxc_destroy(my_args.name)) { + ERROR("failed to destroy the container"); + return -1; + } + + INFO("'%s' destroyed", my_args.name); + + return 0; }