From: Daniel Lezcano Date: Wed, 15 Jul 2009 21:48:22 +0000 (+0200) Subject: add a helper to dup the lxc arguments X-Git-Tag: lxc_0_6_3~16 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=fa7eddbbbbaf493268941bb013ed7477a5cc25b1;p=thirdparty%2Flxc.git add a helper to dup the lxc arguments Add a helper to dup the lxc_arguments, so the code making the copy of the arguments will be more clear. Signed-off-by: Daniel Lezcano --- diff --git a/src/lxc/arguments.c b/src/lxc/arguments.c index 3527be41d..03ec2afeb 100644 --- a/src/lxc/arguments.c +++ b/src/lxc/arguments.c @@ -201,3 +201,46 @@ error: lxc_error(args, "could not parse command line"); return ret; } + +extern char **lxc_arguments_dup(const char *file, struct lxc_arguments *args) +{ + char **argv; + int opt, nbargs = args->argc + 2; + + if (args->log_file) + nbargs += 2; + if (args->log_priority) + nbargs += 2; + if (args->quiet) + nbargs += 1; + + argv = malloc(nbargs * sizeof(*argv)); + if (!argv) + return NULL; + + nbargs = 0; + + argv[nbargs++] = strdup(file); + + if (args->log_file) { + argv[nbargs++] = "--logfile"; + argv[nbargs++] = strdup(args->log_file); + } + + if (args->log_priority) { + argv[nbargs++] = "--logpriority"; + argv[nbargs++] = strdup(args->log_priority); + } + + if (args->quiet) + argv[nbargs++] = "--quiet"; + + argv[nbargs++] = "--"; + + for (opt = 0; opt < args->argc; opt++) + argv[nbargs++] = strdup(args->argv[opt]); + + argv[nbargs] = NULL; + + return argv; +} diff --git a/src/lxc/arguments.h b/src/lxc/arguments.h index ffb436fe3..d38de89ec 100644 --- a/src/lxc/arguments.h +++ b/src/lxc/arguments.h @@ -73,8 +73,11 @@ struct lxc_arguments { /* option keys for long only options */ #define OPT_USAGE 0x1000 -extern int lxc_arguments_parse(struct lxc_arguments *a_args, +extern int lxc_arguments_parse(struct lxc_arguments *args, int argc, char *const argv[]); + +extern char **lxc_arguments_dup(const char *file, struct lxc_arguments *args); + extern const char *lxc_strerror(int errnum); #define lxc_error(arg, fmt, args...) if (!(arg)->quiet) \