]> git.ipfire.org Git - thirdparty/lxc.git/commitdiff
add -f option to lxc-attach
authorWolfgang Bumiller <w.bumiller@proxmox.com>
Thu, 4 Aug 2016 09:23:54 +0000 (11:23 +0200)
committerWolfgang Bumiller <w.bumiller@proxmox.com>
Thu, 4 Aug 2016 10:26:08 +0000 (12:26 +0200)
Otherwise a container with a non-standard configuration file
can be started but not attached to.
Fixes the following case:
 # lxc-start -n ct -f /different/path/my.config
 # lxc-attach -n ct
 Error: container ct is not defined

Signed-off-by: Wolfgang Bumiller <w.bumiller@proxmox.com>
src/lxc/tools/lxc_attach.c

index 58f658bfdd06a63991ed533e777e3220a88f373b..7116885ac7cc5bc32043924b802ae6715d1ffa9a 100644 (file)
@@ -65,6 +65,7 @@ static const struct option my_longopts[] = {
        {"keep-var", required_argument, 0, 502},
        {"set-var", required_argument, 0, 'v'},
        {"pty-log", required_argument, 0, 'L'},
+       {"rcfile", required_argument, 0, 'f'},
        LXC_COMMON_OPTIONS
 };
 
@@ -153,6 +154,7 @@ static int my_parser(struct lxc_arguments* args, int c, char* arg)
        case 'L':
                args->console_log = arg;
                break;
+       case 'f': args->rcfile = arg; break;
        }
 
        return 0;
@@ -202,7 +204,10 @@ Options :\n\
                     multiple times.\n\
       --keep-var    Keep an additional environment variable. Only\n\
                     applicable if --clear-env is specified. May be used\n\
-                    multiple times.\n",
+                    multiple times.\n\
+  -f, --rcfile=FILE\n\
+                    Load configuration file FILE\n\
+",
        .options  = my_longopts,
        .parser   = my_parser,
        .checker  = NULL,
@@ -373,6 +378,15 @@ int main(int argc, char *argv[])
        if (!c)
                exit(EXIT_FAILURE);
 
+       if (my_args.rcfile) {
+               c->clear_config(c);
+               if (!c->load_config(c, my_args.rcfile)) {
+                       ERROR("Failed to load rcfile");
+                       lxc_container_put(c);
+                       exit(EXIT_FAILURE);
+               }
+       }
+
        if (!c->may_control(c)) {
                fprintf(stderr, "Insufficent privileges to control %s\n", c->name);
                lxc_container_put(c);