mirror of
https://git.proxmox.com/git/mirror_lxc
synced 2025-08-14 09:05:44 +00:00
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:
parent
9618063c87
commit
4237c6ca1f
@ -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;
|
||||
}
|
||||
|
||||
|
@ -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;
|
||||
|
@ -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;
|
||||
|
@ -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;
|
||||
|
@ -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;
|
||||
}
|
||||
|
||||
|
@ -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;
|
||||
}
|
||||
|
||||
|
@ -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;
|
||||
}
|
||||
|
@ -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;
|
||||
|
@ -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;
|
||||
|
Loading…
Reference in New Issue
Block a user