From 036f467d0718daefe907670f10af7b92117be789 Mon Sep 17 00:00:00 2001 From: Ivana Hutarova Varekova Date: Wed, 10 Nov 2010 16:08:20 +0100 Subject: [PATCH] This patch adds help option to cgcreate tool and unified the cgget error messages CHANGELOG v1: * fix the typo (thanks jsafrane) Signed-off-by: Ivana Hutarova Varekova Acked-by: Dhaval Giani Signed-off-by: Jan Safranek --- doc/man/cgcreate.1 | 7 +++++-- src/tools/cgcreate.c | 47 ++++++++++++++++++++++++++++++++++++-------- 2 files changed, 44 insertions(+), 10 deletions(-) diff --git a/doc/man/cgcreate.1 b/doc/man/cgcreate.1 index 2d444ef4..d8e0449d 100644 --- a/doc/man/cgcreate.1 +++ b/doc/man/cgcreate.1 @@ -5,8 +5,8 @@ cgcreate \- create new cgroup(s) .SH SYNOPSIS -\fBcgcreate\fR [\fB-t\fR <\fItuid>:] [\fB-a\fR <\fIagid>:] -\fB-g\fR <\fIcontrollers>: [-g ...] +\fBcgcreate\fR [\fB-h\fR] [\fB-t\fR <\fItuid>:] +[\fB-a\fR <\fIagid>:] \fB-g\fR <\fIcontrollers>: [-g ...] .SH DESCRIPTION The command creates new cgroup(s) defined by option @@ -34,6 +34,9 @@ defines control groups which will be added. in the given controllers list. This option can be specified multiple times. +.TP +.B -h, --help +display this help and exit .SH FILES diff --git a/src/tools/cgcreate.c b/src/tools/cgcreate.c index 435df4a0..c79183ee 100644 --- a/src/tools/cgcreate.c +++ b/src/tools/cgcreate.c @@ -24,8 +24,33 @@ #include #include #include +#include #include "tools-common.h" +/* + * Display the usage + */ +static void usage(int status, const char *program_name) +{ + if (status != 0) { + fprintf(stderr, "Wrong input parameters," + " try %s -h' for more information.\n", + program_name); + } else { + fprintf(stdout, "Usage: %s [-h] [-t :] "\ + "[-a :] -g : [-g ...]\n", + program_name); + fprintf(stdout, " -t : Set "\ + "the task permission\n"); + fprintf(stdout, " -a : Set "\ + "the admin permission\n"); + fprintf(stdout, " -g : Control "\ + "group which should be added\n"); + fprintf(stdout, " -h,--help Display "\ + "this help\n"); + } +} + int main(int argc, char *argv[]) { @@ -33,6 +58,14 @@ int main(int argc, char *argv[]) int i, j; int c; + static struct option long_opts[] = { + {"help", no_argument, NULL, 'h'}, + {"task", required_argument, NULL, 't'}, + {"admin", required_argument, NULL, 'a'}, + {"", required_argument, NULL, 'g'}, + {0, 0, 0, 0}, + }; + /* Structure to get GID from group name */ struct group *grp = NULL; char *grp_string = NULL; @@ -53,10 +86,7 @@ int main(int argc, char *argv[]) /* no parametr on input */ if (argc < 2) { - fprintf(stderr, "Usage is %s " - "-t : -a : " - "-g :\n", - argv[0]); + usage(1, argv[0]); return -1; } cgroup_list = calloc(capacity, sizeof(struct cgroup_group_spec *)); @@ -66,8 +96,11 @@ int main(int argc, char *argv[]) } /* parse arguments */ - while ((c = getopt(argc, argv, "a:t:g:")) > 0) { + while ((c = getopt_long(argc, argv, "a:t:g:h", long_opts, NULL)) > 0) { switch (c) { + case 'h': + usage(0, argv[0]); + return 0; case 'a': /* set admin uid/gid */ if (optarg[0] == ':') @@ -146,9 +179,7 @@ int main(int argc, char *argv[]) } break; default: - fprintf(stderr, "%s: " - "invalid command line option\n", - argv[0]); + usage(1, argv[0]); return -1; break; } -- 2.47.2