This patch adds option -h to cgexec tool

Signed-off-by: Ivana Hutarova Varekova <[email protected]>
---

 src/tools/cgexec.c |   35 ++++++++++++++++++++++-------------
 1 files changed, 22 insertions(+), 13 deletions(-)

diff --git a/doc/man/cgexec.1 b/doc/man/cgexec.1
index bf197bd..e9d38d2 100644
--- a/doc/man/cgexec.1
+++ b/doc/man/cgexec.1
@@ -7,7 +7,7 @@
 cgexec \- run the task in given control groups
 
 .SH SYNOPSIS
-\fBcgexec\fR [\fB-g\fR <\fIcontrollers>:<path\fR>] [--sticky] \fBcommand\fR 
[\fIarguments\fR]
+\fBcgexec\fR [\fB-h\fR] [\fB-g\fR <\fIcontrollers>:<path\fR>] [--sticky] 
\fBcommand\fR [\fIarguments\fR]
 
 .SH DESCRIPTION
 The \fBcgexec\fR
@@ -32,6 +32,10 @@ If this option is not used then
 cgroup based on \fB/etc/cgrules.conf\fR.
 
 .TP
+.B -h, --help
+Display this help and exit.
+
+.TP
 .B --sticky
 If running the task \fBcommand\fR with this option, the daemon of
 service cgred (cgrulesengd process) does not change both the task
diff --git a/src/tools/cgexec.c b/src/tools/cgexec.c
index 8e0b4d8..f03f1fa 100644
--- a/src/tools/cgexec.c
+++ b/src/tools/cgexec.c
@@ -35,10 +35,25 @@
 #include "tools-common.h"
 
 static struct option longopts[] = {
-       {"sticky", no_argument, NULL, 's'}, 
+       {"sticky", no_argument, NULL, 's'},
+       {"help", no_argument, NULL, 'h'},
        {0, 0, 0, 0}
 };
 
+static void usage(int status, const char *program_name)
+{
+       if (status != 0)
+               fprintf(stderr, "Wrong input parameters,"
+                       " try %s --help' for more information.\n",
+                       program_name);
+       else {
+               printf("Usage: %s [-h] [-g <controllers>:<path>] "
+                       "[--sticky] command [arguments] ...\n",
+                       program_name);
+       }
+}
+
+
 int main(int argc, char *argv[])
 {
        int ret = 0, i;
@@ -50,17 +65,9 @@ int main(int argc, char *argv[])
        int c;
        struct cgroup_group_spec *cgroup_list[CG_HIER_MAX];
 
-       if (argc < 2) {
-               fprintf(stderr, "Usage is %s"
-                       " [-g <list of controllers>:<relative path to cgroup>]"
-                       " [--sticky] command [arguments]  \n",
-                       argv[0]);
-               exit(2);
-       }
-
        memset(cgroup_list, 0, sizeof(cgroup_list));
 
-       while ((c = getopt_long(argc, argv, "+g:s", longopts, NULL)) > 0) {
+       while ((c = getopt_long(argc, argv, "+g:sh", longopts, NULL)) > 0) {
                switch (c) {
                case 'g':
                        ret = parse_cgroup_spec(cgroup_list, optarg,
@@ -75,16 +82,18 @@ int main(int argc, char *argv[])
                case 's':
                        flag_child |= CGROUP_DAEMON_UNCHANGE_CHILDREN;
                        break;
+               case 'h':
+                       usage(0, argv[0]);
+                       exit(0);
                default:
-                       fprintf(stderr, "Invalid command line option\n");
+                       usage(1, argv[0]);
                        exit(1);
-                       break;
                }
        }
 
        /* Executable name */
        if (!argv[optind]) {
-               fprintf(stderr, "No command specified\n");
+               usage(1, argv[0]);
                exit(1);
        }
 


------------------------------------------------------------------------------
WhatsUp Gold - Download Free Network Management Software
The most intuitive, comprehensive, and cost-effective network 
management toolset available today.  Delivers lowest initial 
acquisition cost and overall TCO of any competing solution.
http://p.sf.net/sfu/whatsupgold-sd
_______________________________________________
Libcg-devel mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/libcg-devel

Reply via email to