From: Michel Normand Date: Mon, 18 May 2009 20:11:46 +0000 (+0200) Subject: add long options step3 X-Git-Tag: lxc_0_6_3~87 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=4237c6ca1f44de0345fbd63acc762401aaf49c68;p=thirdparty%2Flxc.git add long options step3 add the long options to remaining lxc_*.c files that do not impact the struct lxc_arguments Signed-off-by: Michel Normand Signed-off-by: Daniel Lezcano --- diff --git a/src/lxc/lxc_cgroup.c b/src/lxc/lxc_cgroup.c index a46b2f6ce..6579e3616 100644 --- a/src/lxc/lxc_cgroup.c +++ b/src/lxc/lxc_cgroup.c @@ -27,70 +27,68 @@ #include #include +#include "arguments.h" lxc_log_define(lxc_cgroup, lxc); -void usage(char *cmd) +static int my_checker(const struct lxc_arguments* args) { - fprintf(stderr, "%s [value]\n", basename(cmd)); - fprintf(stderr, "\t -n : name of the container\n"); - fprintf(stderr, "\t[-o ] : path of the log file\n"); - fprintf(stderr, "\t[-l ]: log level priority\n"); - fprintf(stderr, "\t[-q ] : be quiet\n"); - _exit(1); + if (!args->argc) { + lxc_error(args, "missing cgroup subsystem"); + return -1; + } + return 0; } -int main(int argc, char *argv[]) -{ - int opt; - char *name = NULL, *subsystem = NULL, *value = NULL; - const char *log_file = NULL, *log_priority = NULL; - int nbargs = 0; - int quiet = 0; +static const struct option my_longopts[] = { + LXC_COMMON_OPTIONS +}; - 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; - } +static struct lxc_arguments my_args = { + .progname = "lxc-cgroup", + .help = "\ +--name=NAME subsystem [value]\n\ +\n\ +lxc-cgroup get or set subsystem value of cgroup\n\ +associated with the NAME container\n\ +\n\ +Options :\n\ + -n, --name=NAME NAME for name of the container", + .options = my_longopts, + .parser = NULL, + .checker = my_checker, +}; - nbargs++; - } +int main(int argc, char *argv[]) +{ + int ret; + char *subsystem = NULL, *value = NULL; - if (!name || (argc-optind) < 1) - usage(argv[0]); + ret = lxc_arguments_parse(&my_args, argc, argv); + if (ret) + return 1; - 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 ((argc -optind) >= 1) - subsystem = argv[optind]; + subsystem = my_args.argv[0]; - if ((argc -optind) >= 2) - value = argv[optind+1]; + if ((argc) > 1) + value = my_args.argv[1]; if (value) { - if (lxc_cgroup_set(name, subsystem, value)) { - ERROR("failed to assign '%s' value to '%s' for '%s'\n", - value, subsystem, name); + if (lxc_cgroup_set(my_args.name, subsystem, value)) { + ERROR("failed to assign '%s' value to '%s' for '%s'", + value, subsystem, my_args.name); return 1; } } else { const unsigned long len = 4096; char buffer[len]; - if (lxc_cgroup_get(name, subsystem, buffer, len)) { - ERROR("failed to retrieve value of '%s' for '%s'\n", - subsystem, name); + if (lxc_cgroup_get(my_args.name, subsystem, buffer, len)) { + ERROR("failed to retrieve value of '%s' for '%s'", + subsystem, my_args.name); return 1; } diff --git a/src/lxc/lxc_create.c b/src/lxc/lxc_create.c index 3be3424cc..57dc41e85 100644 --- a/src/lxc/lxc_create.c +++ b/src/lxc/lxc_create.c @@ -33,60 +33,57 @@ #include #include "confile.h" +#include "arguments.h" -void usage(char *cmd) +static int my_parser(struct lxc_arguments* args, int c, char* arg) { - fprintf(stderr, "%s \n", basename(cmd)); - fprintf(stderr, "\t -n : name of the container\n"); - fprintf(stderr, "\t -f : path of the configuration file\n"); - fprintf(stderr, "\t[-o ] : path of the log file\n"); - fprintf(stderr, "\t[-l ]: log level priority\n"); - fprintf(stderr, "\t[-q ] : be quiet\n"); - _exit(1); + switch (c) { + case 'f': args->rcfile = arg; break; + } + return 0; } +static const struct option my_longopts[] = { + {"rcfile", required_argument, 0, 'f'}, + LXC_COMMON_OPTIONS +}; + +static struct lxc_arguments my_args = { + .progname = "lxc-create", + .help = "\ +--name=NAME\n\ +\n\ +lxc-create creates a container with the identifier NAME\n\ +\n\ +Options :\n\ + -n, --name=NAME NAME for name of the container\n\ + -f, --rcfile=FILE Load configuration file FILE\n", + .options = my_longopts, + .parser = my_parser, + .checker = NULL, +}; + int main(int argc, char *argv[]) { - const char *name = NULL, *file = NULL; - const char *log_file = NULL, *log_priority = NULL; struct lxc_conf lxc_conf; - int err, opt; - int quiet = 0; + int ret; - while ((opt = getopt(argc, argv, "f:n:o:l:q")) != -1) { - switch (opt) { - case 'n': - name = optarg; - break; - case 'f': - file = optarg; - break; - case 'o': - log_file = optarg; - break; - case 'l': - log_priority = optarg; - break; - case 'q': - quiet = 1; - break; - } - } - - if (!name) - usage(argv[0]); + ret = lxc_arguments_parse(&my_args, argc, argv); + if (ret) + return 1; - 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 (lxc_conf_init(&lxc_conf)) return 1; - if (file && lxc_config_read(file, &lxc_conf)) + if (my_args.rcfile && lxc_config_read(my_args.rcfile, &lxc_conf)) return 1; - err = lxc_create(name, &lxc_conf); - if (err) + ret = lxc_create(my_args.name, &lxc_conf); + if (ret) return 1; return 0; diff --git a/src/lxc/lxc_destroy.c b/src/lxc/lxc_destroy.c index 2c93ce5f6..ebd13bedd 100644 --- a/src/lxc/lxc_destroy.c +++ b/src/lxc/lxc_destroy.c @@ -26,53 +26,40 @@ #include #include +#include "arguments.h" -void usage(char *cmd) -{ - fprintf(stderr, "%s \n", basename(cmd)); - fprintf(stderr, "\t -n : name of the container\n"); - fprintf(stderr, "\t[-o ] : path of the log file\n"); - fprintf(stderr, "\t[-l ]: 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-destroy", + .help = "\ +--name=NAME\n\ +\n\ +lxc-destroy destroy a container with the identifier NAME\n\ +\n\ +Options :\n\ + -n, --name=NAME NAME for name of the container\n", + .options = my_longopts, + .parser = NULL, + .checker = NULL, +}; int main(int argc, char *argv[]) { - char *name = NULL; - const char *log_file = NULL, *log_priority = NULL; - int opt; - int nbargs = 0; - int err; - int quiet = 0; + int ret; - 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++; - } - - if (!name) - usage(argv[0]); + ret = lxc_arguments_parse(&my_args, argc, argv); + if (ret) + return 1; - 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; - err = lxc_destroy(name); - if (err) + ret = lxc_destroy(my_args.name); + if (ret) return 1; return 0; diff --git a/src/lxc/lxc_freeze.c b/src/lxc/lxc_freeze.c index 8190cba5a..ede5e911f 100644 --- a/src/lxc/lxc_freeze.c +++ b/src/lxc/lxc_freeze.c @@ -27,51 +27,39 @@ #include #include +#include "arguments.h" -void usage(char *cmd) -{ - fprintf(stderr, "%s \n", basename(cmd)); - fprintf(stderr, "\t -n : name of the container\n"); - fprintf(stderr, "\t[-o ] : path of the log file\n"); - fprintf(stderr, "\t[-l ]: 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-freeze", + .help = "\ +--name=NAME\n\ +\n\ +lxc-freeze freezes a container with the identifier 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; - int opt; - int nbargs = 0; - int quiet = 0; + int ret; - 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++; - } - - if (!name) - usage(argv[0]); + ret = lxc_arguments_parse(&my_args, argc, argv); + if (ret) + return 1; - 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 (lxc_freeze(name)) + if (lxc_freeze(my_args.name)) return 1; return 0; diff --git a/src/lxc/lxc_info.c b/src/lxc/lxc_info.c index 5cfb501ed..34518d93e 100644 --- a/src/lxc/lxc_info.c +++ b/src/lxc/lxc_info.c @@ -26,55 +26,43 @@ #include #include +#include "arguments.h" -void usage(char *cmd) -{ - fprintf(stderr, "%s \n", basename(cmd)); - fprintf(stderr, "\t -n : name of the container\n"); - fprintf(stderr, "\t[-o ] : path of the log file\n"); - fprintf(stderr, "\t[-l ]: 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-info", + .help = "\ +--name=NAME\n\ +\n\ +lxc-info display the state of a container with the identifier NAME\n\ +\n\ +Options :\n\ + -n, --name=NAME NAME for name of the container\n", + .options = my_longopts, + .parser = NULL, + .checker = NULL, +}; int main(int argc, char *argv[]) { - char *name = NULL; - const char *log_file = NULL, *log_priority = NULL; - int opt, state, nbargs = 0; - int quiet = 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; - } + int ret, state; - nbargs++; - } - - if (!name) - usage(argv[0]); + ret = lxc_arguments_parse(&my_args, argc, argv); + if (ret) + return 1; - 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; - state = lxc_getstate(name); + state = lxc_getstate(my_args.name); if (state < 0) return 1; - printf("'%s' is %s\n", name, lxc_state2str(state)); + printf("'%s' is %s\n", my_args.name, lxc_state2str(state)); return 0; } - diff --git a/src/lxc/lxc_monitor.c b/src/lxc/lxc_monitor.c index 937cf875d..ea33328a6 100644 --- a/src/lxc/lxc_monitor.c +++ b/src/lxc/lxc_monitor.c @@ -28,57 +28,49 @@ #include #include +#include "arguments.h" lxc_log_define(monitor, lxc); -void usage(char *cmd) -{ - fprintf(stderr, "%s \n", basename(cmd)); - fprintf(stderr, "\t -n : name of the container or regular expression\n"); - fprintf(stderr, "\t[-o ] : path of the log file\n"); - fprintf(stderr, "\t[-l ]: 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-monitor", + .help = "\ +--name=NAME\n\ +\n\ +lxc-monitor monitors the state of the NAME container\n\ +\n\ +Options :\n\ + -n, --name=NAME NAME for name of the container\n\ + NAME may be a regular expression", + .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 *regexp; struct lxc_msg msg; regex_t preg; - int fd, opt; - int quiet = 0; - - while ((opt = getopt(argc, argv, "n:o:l:q")) != -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; - } - } + int fd, ret; - if (!name) - usage(argv[0]); + ret = lxc_arguments_parse(&my_args, argc, argv); + if (ret) + return 1; - 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; - regexp = malloc(strlen(name) + 3); - sprintf(regexp, "^%s$", name); + regexp = malloc(strlen(my_args.name) + 3); + sprintf(regexp, "^%s$", my_args.name); if (regcomp(&preg, regexp, REG_NOSUB|REG_EXTENDED)) { - ERROR("failed to compile the regex '%s'", name); + ERROR("failed to compile the regex '%s'", my_args.name); return 1; } diff --git a/src/lxc/lxc_restart.c b/src/lxc/lxc_restart.c index 0b7812c73..3ac5b35e8 100644 --- a/src/lxc/lxc_restart.c +++ b/src/lxc/lxc_restart.c @@ -26,58 +26,50 @@ #include #include +#include "arguments.h" -lxc_log_define(lxc_restart, lxc); - -void usage(char *cmd) +static int my_checker(const struct lxc_arguments* args) { - fprintf(stderr, "%s \n", basename(cmd)); - fprintf(stderr, "\t -n : name of the container\n"); - fprintf(stderr, "\t[-o ] : path of the log file\n"); - fprintf(stderr, "\t[-l ]: log level priority\n"); - fprintf(stderr, "\t[-q ] : be quiet\n"); - _exit(1); -} + if (!args->argc) { + lxc_error(args, "missing STATEFILE filename !"); + return -1; + } -int main(int argc, char *argv[]) -{ - char *name = NULL; - const char *log_file = NULL, *log_priority = NULL; - int opt, nbargs = 0; - int quiet = 0; + return 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; - } +static const struct option my_longopts[] = { + LXC_COMMON_OPTIONS +}; - nbargs++; - } +static struct lxc_arguments my_args = { + .progname = "lxc-restart", + .help = "\ +--name=NAME STATEFILE\n\ +\n\ +lxc-restart restarts from STATEFILE file the NAME container\n\ +\n\ +Options :\n\ + -n, --name=NAME NAME for name of the container\n", + .options = my_longopts, + .parser = NULL, + .checker = my_checker, +}; - if (!name) - usage(argv[0]); +int main(int argc, char *argv[]) +{ + int ret; - if (!argv[optind]) - usage(argv[0]); + ret = lxc_arguments_parse(&my_args, argc, argv); + if (ret) + return 1; - 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 (lxc_restart(name, argv[1], 0)) { - ERROR("failed to restart %s", name); + if (lxc_restart(my_args.name, my_args.argv[0], 0)) return 1; - } return 0; } diff --git a/src/lxc/lxc_stop.c b/src/lxc/lxc_stop.c index 7c3ae3b68..fc6e28832 100644 --- a/src/lxc/lxc_stop.c +++ b/src/lxc/lxc_stop.c @@ -26,51 +26,40 @@ #include #include +#include "arguments.h" -void usage(char *cmd) -{ - fprintf(stderr, "%s \n", basename(cmd)); - fprintf(stderr, "\t -n : name of the container\n"); - fprintf(stderr, "\t[-o ] : path of the log file\n"); - fprintf(stderr, "\t[-l ]: 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-stop", + .help = "\ +--name=NAME\n\ +\n\ +lxc-stop stops a container with the identifier NAME\n\ +\n\ +Options :\n\ + -n, --name=NAME NAME for name of the container\n", + .options = my_longopts, + .parser = NULL, + .checker = NULL, +}; int main(int argc, char *argv[]) { - char *name = NULL; - const char *log_file = NULL, *log_priority = NULL; - int opt, err, nbargs = 0; - int quiet = 0; + int ret; - while ((opt = getopt(argc, argv, "n:o:l:q")) != -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++; - } - - if (!name) - usage(argv[0]); + ret = lxc_arguments_parse(&my_args, argc, argv); + if (ret) + return 1; - 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; - err = lxc_stop(name); - if (err) + ret = lxc_stop(my_args.name); + if (ret) return 1; return 0; diff --git a/src/lxc/lxc_unfreeze.c b/src/lxc/lxc_unfreeze.c index be8976552..3c778d067 100644 --- a/src/lxc/lxc_unfreeze.c +++ b/src/lxc/lxc_unfreeze.c @@ -26,50 +26,39 @@ #include #include +#include "arguments.h" -void usage(char *cmd) -{ - fprintf(stderr, "%s \n", basename(cmd)); - fprintf(stderr, "\t -n : name of the container\n"); - fprintf(stderr, "\t[-o ] : path of the log file\n"); - fprintf(stderr, "\t[-l ]: 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-unfreeze", + .help = "\ +--name=NAME\n\ +\n\ +lxc-unfreeze unfreezes a container with the identifier NAME\n\ +\n\ +Options :\n\ + -n, --name=NAME NAME for name of the container\n", + .options = my_longopts, + .parser = NULL, + .checker = NULL, +}; int main(int argc, char *argv[]) { - char *name = NULL; - const char *log_file = NULL, *log_priority = NULL; - int opt, nbargs = 0; - int quiet = 0; + int ret; - 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++; - } - - if (!name) - usage(argv[0]); + ret = lxc_arguments_parse(&my_args, argc, argv); + if (ret) + return 1; - 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 (lxc_unfreeze(name)) + if (lxc_unfreeze(my_args.name)) return 1; return 0;