]> git.ipfire.org Git - thirdparty/lxc.git/commitdiff
tools: better error reporting for lxc-start 1234/head
authorChristian Brauner <christian.brauner@canonical.com>
Fri, 14 Oct 2016 13:27:24 +0000 (15:27 +0200)
committerChristian Brauner <christian.brauner@canonical.com>
Tue, 18 Oct 2016 14:25:31 +0000 (16:25 +0200)
Signed-off-by: Christian Brauner <christian.brauner@canonical.com>
src/lxc/tools/lxc_start.c

index 25d8f194e50c3c9434979784d146be563e5cb948..eaa8da4183fa276d6d752f18bb3cd89528ee7235 100644 (file)
@@ -86,7 +86,7 @@ static int ensure_path(char **confpath, const char *path)
                        goto err;
                }
        }
-       err = 0;
+       err = EXIT_SUCCESS;
 
 err:
        free(fullpath);
@@ -231,6 +231,12 @@ int main(int argc, char *argv[])
                exit(err);
        lxc_log_options_no_override();
 
+       if (access(my_args.lxcpath[0], O_RDWR) < 0) {
+               if (!my_args.quiet)
+                       fprintf(stderr, "You lack access to %s\n", my_args.lxcpath[0]);
+               exit(err);
+       }
+
        const char *lxcpath = my_args.lxcpath[0];
 
        /*
@@ -275,9 +281,19 @@ int main(int argc, char *argv[])
                }
        }
 
+       if (!c->is_defined(c)) {
+               fprintf(stderr, "Error: container %s is not defined\n", c->name);
+               goto out;
+       }
+
+       if (!c->may_control(c)) {
+               fprintf(stderr, "Insufficent privileges to control %s\n", c->name);
+               goto out;
+       }
+
        if (c->is_running(c)) {
                ERROR("Container is already running.");
-               err = 0;
+               err = EXIT_SUCCESS;
                goto out;
        }
        /*