]> git.ipfire.org Git - thirdparty/lxc.git/commitdiff
add long options step2
authorMichel Normand <normand@fr.ibm.com>
Mon, 18 May 2009 20:11:45 +0000 (22:11 +0200)
committerDaniel Lezcano <dlezcano@fr.ibm.com>
Mon, 18 May 2009 20:11:45 +0000 (22:11 +0200)
add the long options to lxc-start
with a small change in lxc_start proto to avoid compilation warning

Signed-off-by: Michel Normand <normand@fr.ibm.com>
Signed-off-by: Daniel Lezcano <dlezcano@fr.ibm.com>
src/lxc/lxc.h
src/lxc/lxc_start.c
src/lxc/start.c
src/lxc/start.h

index f17a9060def228facbac36b8fde47b56d11ab26b..7507ef5b4088533b6d05290a170b3d8656671081 100644 (file)
@@ -72,7 +72,7 @@ extern int lxc_destroy(const char *name);
  * @argv     : an array of char * corresponding to the commande line
  * Returns 0 on sucess, < 0 otherwise
  */
-extern int lxc_start(const char *name, char *argv[]);
+extern int lxc_start(const char *name, char *const argv[]);
 
 /*
  * Stop the container previously started with lxc_start, all
index 0faf446c749c818bf1567e9629eb6397e0fe02d0..3f8741f5659e9b5424ba5bbd33998e8dc292dc79 100644 (file)
 
 #include <lxc/lxc.h>
 #include <lxc/log.h>
+#include "arguments.h"
 
 lxc_log_define(lxc_start, lxc);
 
-void usage(char *cmd)
-{
-       fprintf(stderr, "%s <command>\n", basename(cmd));
-       fprintf(stderr, "\t -n <name>   : name of the container\n");
-       fprintf(stderr, "\t[-o <logfile>]    : path of the log file\n");
-       fprintf(stderr, "\t[-l <logpriority>]: log level priority\n");
-       fprintf(stderr, "\t[-q ]             : be quiet\n");
-       _exit(1);
-}
+static const struct option my_longopts[] = {
+       LXC_COMMON_OPTIONS
+};
+
+static struct lxc_arguments my_args = {
+       .progname = "lxc-start",
+       .help     = "\
+--name=NAME -- COMMAND\n\
+\n\
+lxc-start start COMMAND in specified container NAME\n\
+\n\
+Options :\n\
+  -n, --name=NAME      NAME for name of the container",
+       .options  = my_longopts,
+       .parser   = NULL,
+       .checker  = NULL,
+};
 
 int main(int argc, char *argv[])
 {
-       char *name = NULL;
-       const char *log_file = NULL, *log_priority = NULL;
-       char **args;
-       int opt, err = LXC_ERROR_INTERNAL, nbargs = 0;
-       int quiet = 0;
+       char *const *args;
+       int err;
        struct termios tios;
 
-       char *default_args[] = {
+       char *const default_args[] = {
                "/sbin/init",
                '\0',
        };
 
-       while ((opt = getopt(argc, argv, "n:o:l:")) != -1) {
-               switch (opt) {
-               case 'n':
-                       name = optarg;
-                       break;
-               case 'o':
-                       log_file = optarg;
-                       break;
-               case 'l':
-                       log_priority = optarg;
-                       break;
-               case 'q':
-                       quiet = 1;
-                       break;
-               }
-
-               nbargs++;
-       }
+       err = lxc_arguments_parse(&my_args, argc, argv);
+       if (err)
+               return 1;
 
-       if (!argv[optind] || !strlen(argv[optind]))
+       if (!my_args.argc)
                args = default_args; 
-       else {
-               args = &argv[optind];
-               argc -= nbargs;
-       }
-
-       if (!name)
-               usage(argv[0]);
+       else
+               args = my_args.argv;
 
-       if (lxc_log_init(log_file, log_priority, basename(argv[0]), quiet))
+       if (lxc_log_init(my_args.log_file, my_args.log_priority,
+                        my_args.progname, my_args.quiet))
                return 1;
 
        if (tcgetattr(0, &tios)) {
@@ -101,9 +88,9 @@ int main(int argc, char *argv[])
                return 1;
        }
 
-       err = lxc_start(name, args);
+       err = lxc_start(my_args.name, args);
        if (err) {
-               ERROR("failed to start '%s'", name);
+               ERROR("failed to start '%s'", my_args.name);
                err = 1;
        }
 
index 3d10153a8511d1f27e0e9e5d4b74d37b26534f12..83aff9ababfe665510f7795a19b71b33970daffe 100644 (file)
@@ -410,7 +410,7 @@ void lxc_abort(const char *name, struct lxc_handler *handler)
        kill(handler->pid, SIGKILL);
 }
 
-int lxc_spawn(const char *name, struct lxc_handler *handler, char *argv[])
+int lxc_spawn(const char *name, struct lxc_handler *handler, char *const argv[])
 {
        int sv[2];
        int clone_flags;
@@ -539,7 +539,7 @@ out_abort:
        goto out_close;
 }
 
-int lxc_start(const char *name, char *argv[])
+int lxc_start(const char *name, char *const argv[])
 {
        struct lxc_handler handler = { 0 };
        int err = -LXC_ERROR_INTERNAL;
index 9eccc331c224a20a0f333e3fb589ea74587de6da..6324d37643e80750db967d62f8839f216138d82f 100644 (file)
@@ -32,7 +32,7 @@ struct lxc_handler {
 
 extern int lxc_init(const char *name, struct lxc_handler *handler);
 extern int lxc_spawn(const char *name, struct lxc_handler *handler,
-                    char *argv[]);
+                    char *const argv[]);
 
 extern int lxc_poll(const char *name, struct lxc_handler *handler);
 extern void lxc_abort(const char *name, struct lxc_handler *handler);