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 <normand@fr.ibm.com>
Signed-off-by: Daniel Lezcano <dlezcano@fr.ibm.com>
This commit is contained in:
Michel Normand 2009-05-18 22:11:46 +02:00 committed by Daniel Lezcano
parent 9618063c87
commit 4237c6ca1f
9 changed files with 281 additions and 361 deletions

View File

@ -27,70 +27,68 @@
#include <sys/types.h>
#include <lxc/lxc.h>
#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 <subsystem> [value]\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);
if (!args->argc) {
lxc_error(args, "missing cgroup subsystem");
return -1;
}
return 0;
}
static const struct option my_longopts[] = {
LXC_COMMON_OPTIONS
};
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,
};
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;
int ret;
char *subsystem = NULL, *value = NULL;
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 || (argc-optind) < 1)
usage(argv[0]);
if (lxc_log_init(log_file, log_priority, basename(argv[0]), quiet))
ret = lxc_arguments_parse(&my_args, argc, argv);
if (ret)
return 1;
if ((argc -optind) >= 1)
subsystem = argv[optind];
if (lxc_log_init(my_args.log_file, my_args.log_priority,
my_args.progname, my_args.quiet))
return 1;
if ((argc -optind) >= 2)
value = argv[optind+1];
subsystem = my_args.argv[0];
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;
}

View File

@ -33,60 +33,57 @@
#include <lxc/lxc.h>
#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 <command>\n", basename(cmd));
fprintf(stderr, "\t -n <name> : name of the container\n");
fprintf(stderr, "\t -f <confile> : path of the configuration file\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);
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;
}
}
ret = lxc_arguments_parse(&my_args, argc, argv);
if (ret)
return 1;
if (!name)
usage(argv[0]);
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;

View File

@ -26,53 +26,40 @@
#include <sys/types.h>
#include <lxc/lxc.h>
#include "arguments.h"
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-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]);
if (lxc_log_init(log_file, log_priority, basename(argv[0]), quiet))
ret = lxc_arguments_parse(&my_args, argc, argv);
if (ret)
return 1;
err = lxc_destroy(name);
if (err)
if (lxc_log_init(my_args.log_file, my_args.log_priority,
my_args.progname, my_args.quiet))
return 1;
ret = lxc_destroy(my_args.name);
if (ret)
return 1;
return 0;

View File

@ -27,51 +27,39 @@
#include <string.h>
#include <lxc/lxc.h>
#include "arguments.h"
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-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]);
if (lxc_log_init(log_file, log_priority, basename(argv[0]), quiet))
ret = lxc_arguments_parse(&my_args, argc, argv);
if (ret)
return 1;
if (lxc_freeze(name))
if (lxc_log_init(my_args.log_file, my_args.log_priority,
my_args.progname, my_args.quiet))
return 1;
if (lxc_freeze(my_args.name))
return 1;
return 0;

View File

@ -26,55 +26,43 @@
#include <sys/types.h>
#include <lxc/lxc.h>
#include "arguments.h"
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-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;
int ret, state;
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]);
if (lxc_log_init(log_file, log_priority, basename(argv[0]), quiet))
ret = lxc_arguments_parse(&my_args, argc, argv);
if (ret)
return 1;
state = lxc_getstate(name);
if (lxc_log_init(my_args.log_file, my_args.log_priority,
my_args.progname, my_args.quiet))
return 1;
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;
}

View File

@ -28,57 +28,49 @@
#include <sys/types.h>
#include <lxc/lxc.h>
#include "arguments.h"
lxc_log_define(monitor, lxc);
void usage(char *cmd)
{
fprintf(stderr, "%s <command>\n", basename(cmd));
fprintf(stderr, "\t -n <name> : name of the container or regular expression\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-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;
int fd, 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;
}
}
if (!name)
usage(argv[0]);
if (lxc_log_init(log_file, log_priority, basename(argv[0]), quiet))
ret = lxc_arguments_parse(&my_args, argc, argv);
if (ret)
return 1;
regexp = malloc(strlen(name) + 3);
sprintf(regexp, "^%s$", name);
if (lxc_log_init(my_args.log_file, my_args.log_priority,
my_args.progname, my_args.quiet))
return 1;
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;
}

View File

@ -26,58 +26,50 @@
#include <sys/types.h>
#include <lxc.h>
#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 <statefile>\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);
}
int main(int argc, char *argv[])
{
char *name = NULL;
const char *log_file = NULL, *log_priority = NULL;
int opt, 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;
}
nbargs++;
}
if (!name)
usage(argv[0]);
if (!argv[optind])
usage(argv[0]);
if (lxc_log_init(log_file, log_priority, basename(argv[0]), quiet))
return 1;
if (lxc_restart(name, argv[1], 0)) {
ERROR("failed to restart %s", name);
return 1;
if (!args->argc) {
lxc_error(args, "missing STATEFILE filename !");
return -1;
}
return 0;
}
static const struct option my_longopts[] = {
LXC_COMMON_OPTIONS
};
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,
};
int main(int argc, char *argv[])
{
int ret;
ret = lxc_arguments_parse(&my_args, argc, argv);
if (ret)
return 1;
if (lxc_log_init(my_args.log_file, my_args.log_priority,
my_args.progname, my_args.quiet))
return 1;
if (lxc_restart(my_args.name, my_args.argv[0], 0))
return 1;
return 0;
}

View File

@ -26,51 +26,40 @@
#include <sys/types.h>
#include <lxc/lxc.h>
#include "arguments.h"
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-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]);
if (lxc_log_init(log_file, log_priority, basename(argv[0]), quiet))
ret = lxc_arguments_parse(&my_args, argc, argv);
if (ret)
return 1;
err = lxc_stop(name);
if (err)
if (lxc_log_init(my_args.log_file, my_args.log_priority,
my_args.progname, my_args.quiet))
return 1;
ret = lxc_stop(my_args.name);
if (ret)
return 1;
return 0;

View File

@ -26,50 +26,39 @@
#include <sys/types.h>
#include <lxc/lxc.h>
#include "arguments.h"
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-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]);
if (lxc_log_init(log_file, log_priority, basename(argv[0]), quiet))
ret = lxc_arguments_parse(&my_args, argc, argv);
if (ret)
return 1;
if (lxc_unfreeze(name))
if (lxc_log_init(my_args.log_file, my_args.log_priority,
my_args.progname, my_args.quiet))
return 1;
if (lxc_unfreeze(my_args.name))
return 1;
return 0;