(also remove -f from usage as it is not actually supported) Signed-off-by: Serge E. Hallyn <serue@xxxxxxxxxx> --- src/lxc/lxc_unshare.c | 28 ++++++++++++++++++++++++++-- 1 files changed, 26 insertions(+), 2 deletions(-) diff --git a/src/lxc/lxc_unshare.c b/src/lxc/lxc_unshare.c index 10654f7..8db1cb7 100644 --- a/src/lxc/lxc_unshare.c +++ b/src/lxc/lxc_unshare.c @@ -48,7 +48,7 @@ void usage(char *cmd) fprintf(stderr, "\t -s flags: Ored list of flags to unshare:\n" \ "\t MOUNT, PID, UTSNAME, IPC, USER, NETWORK\n"); fprintf(stderr, "\t -u <id> : new id to be set if -s USER is specified\n"); - fprintf(stderr, "\t if -f or -s PID is specified, <command> is mandatory)\n"); + fprintf(stderr, "\t if -s PID is specified, <command> is mandatory)\n"); _exit(1); } @@ -154,6 +154,29 @@ static int do_start(void *arg) return 1; } +void extend_namespaces(char **n, char *optarg) +{ + char *namespaces = *n; + int cont = 0, newlen = strlen(optarg) + 1; /* +1 for trailing \0 */ + + if (namespaces) { + cont = 1; + newlen += strlen(namespaces) + 1; /* +1 for '|' */ + } + + namespaces = realloc(namespaces, newlen); + if (!namespaces) { + perror("realloc"); + exit(1); + } + if (cont) + sprintf(namespaces+strlen(namespaces), "|%s", optarg); + else + sprintf(namespaces, "%s", optarg); + namespaces[newlen-1] = '\0'; + *n = namespaces; +} + int main(int argc, char *argv[]) { int opt, status; @@ -174,7 +197,8 @@ int main(int argc, char *argv[]) while ((opt = getopt(argc, argv, "s:u:")) != -1) { switch (opt) { case 's': - namespaces = optarg; + extend_namespaces(&namespaces, optarg); + printf("namespaces is %s\n", namespaces); break; case 'u': uid = lookup_user(optarg); -- 1.6.3.3 _______________________________________________ Containers mailing list Containers@xxxxxxxxxxxxxxxxxxxxxxxxxx https://lists.linux-foundation.org/mailman/listinfo/containers