From: Your Name <[email protected]>

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<[email protected]>
---

 src/tools/cgcreate.c |   47 +++++++++++++++++++++++++++++++++++++++--------
 1 files changed, 39 insertions(+), 8 deletions(-)

diff --git a/doc/man/cgcreate.1 b/doc/man/cgcreate.1
index 2d444ef..d8e0449 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>:<tgid\fR>] [\fB-a\fR <\fIagid>:<auid\fR>] 
-\fB-g\fR <\fIcontrollers>:<path\fR> [-g ...]
+\fBcgcreate\fR [\fB-h\fR] [\fB-t\fR <\fItuid>:<tgid\fR>]
+[\fB-a\fR <\fIagid>:<auid\fR>] \fB-g\fR <\fIcontrollers>:<path\fR> [-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 435df4a..c79183e 100644
--- a/src/tools/cgcreate.c
+++ b/src/tools/cgcreate.c
@@ -24,8 +24,33 @@
 #include <errno.h>
 #include <unistd.h>
 #include <grp.h>
+#include <getopt.h>
 
 #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 <tuid>:<tgid>] "\
+                       "[-a <agid>:<auid>] -g <controllers>:<path> [-g ...]\n",
+                       program_name);
+               fprintf(stdout, "  -t <tuid>:<tgid>             Set "\
+                       "the task permission\n");
+               fprintf(stdout, "  -a <tuid>:<tgid>             Set "\
+                       "the admin permission\n");
+               fprintf(stdout, "  -g <controllers>:<path>      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 <tuid>:<tgid> -a <agid>:<auid> "
-                       "-g <list of controllers>:<relative path to cgroup>\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;
                }


------------------------------------------------------------------------------
The Next 800 Companies to Lead America's Growth: New Video Whitepaper
David G. Thomson, author of the best-selling book "Blueprint to a 
Billion" shares his insights and actions to help propel your 
business during the next growth cycle. Listen Now!
http://p.sf.net/sfu/SAP-dev2dev
_______________________________________________
Libcg-devel mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/libcg-devel

Reply via email to