remove exit from function usage and add a structure like usage function
in the other tools.
This is suggested by Ivana Hutarova Varekova <varek...@redhat.com>

now usage willn't exit, so we should help it in err case.

v4:
 - fix some code style reported by checkpatch.pl

Signed-off-by: Libo Chen <clbchenlibo.c...@huawei.com>
---
 src/tools/cgconfig.c |   61 ++++++++++++++++++++++++++++---------------------
 1 files changed, 35 insertions(+), 26 deletions(-)

diff --git a/src/tools/cgconfig.c b/src/tools/cgconfig.c
index 900c235..6ed4c77 100644
--- a/src/tools/cgconfig.c
+++ b/src/tools/cgconfig.c
@@ -35,29 +35,34 @@
 
 static struct cgroup_string_list cfg_files;
 
-static void usage(char *progname)
+static void usage(int status, char *progname)
 {
-       printf("Usage: %s [-h] [-f mode] [-d mode] [-s mode] "\
+       if (status != 0) {
+               fprintf(stderr, "Wrong input parameters, "\
+                       "try %s -h' for more information.\n", progname);
+       } else {
+               printf("Usage: %s [-h] [-f mode] [-d mode] [-s mode] "\
                        "[-t <tuid>:<tgid>] [-a <agid>:<auid>] "\
                        "[-l FILE] [-L DIR] ...\n", basename(progname));
-       printf("Parse and load the specified cgroups configuration file\n");
-       printf("\n");
-       printf("  -h, --help                    Display this help\n");
-       printf("  -l, --load=FILE               Parse and load the cgroups"\
-                       " configuration file\n");
-       printf("  -L, --load-directory=DIR      Parse and load the cgroups"\
-                       " configuration files from a directory\n");
-       printf("  -a <tuid>:<tgid>              Default owner of groups files"\
-                       " and directories\n");
-       printf("  -d, --dperm=mode              Default group directory"\
-                       " permissions\n");
-       printf("  -f, --fperm=mode              Default group file"\
-                       " permissions\n");
-       printf("  -s, --tperm=mode              Default tasks file"
-                       " permissions\n");
-       printf("  -t <tuid>:<tgid>              Default owner of the tasks "
-                       "file\n");
-       exit(2);
+               printf("Parse and load the specified cgroups "\
+                       "configuration file\n");
+               printf("\n");
+               printf("  -h, --help                    Display this help\n");
+               printf("  -l, --load=FILE               Parse and load "\
+                       "the cgroups configuration file\n");
+               printf("  -L, --load-directory=DIR      Parse and load "\
+                       "the cgroups configuration files from a directory\n");
+               printf("  -a <tuid>:<tgid>              Default owner of "\
+                       "groups files and directories\n");
+               printf("  -d, --dperm=mode              Default group "\
+                       "directory permissions\n");
+               printf("  -f, --fperm=mode              Default group file "\
+                       "permissions\n");
+               printf("  -s, --tperm=mode              Default tasks file "\
+                       "permissions\n");
+               printf("  -t <tuid>:<tgid>              Default owner of "
+                       "the tasks file\n");
+       }
 }
 
 int main(int argc, char *argv[])
@@ -86,8 +91,10 @@ int main(int argc, char *argv[])
 
        cgroup_set_default_logger(-1);
 
-       if (argc < 2)
-               usage(argv[0]); /* usage() exits */
+       if (argc < 2) {
+               usage(1, argv[0]);
+               return -1;
+       }
 
        ret = cgroup_string_list_init(&cfg_files, argc/2);
 
@@ -95,8 +102,9 @@ int main(int argc, char *argv[])
                        NULL)) > 0) {
                switch (c) {
                case 'h':
-                       usage(argv[0]);
-                       break;
+                       usage(0, argv[0]);
+                       error = 0;
+                       goto err;
                case 'l':
                        error = cgroup_string_list_add_item(&cfg_files, optarg);
                        if (error) {
@@ -138,8 +146,9 @@ int main(int argc, char *argv[])
                                goto err;
                        break;
                default:
-                       usage(argv[0]);
-                       break;
+                       usage(1, argv[0]);
+                       error = -1;
+                       goto err;
                }
        }
 
-- 
1.7.1



------------------------------------------------------------------------------
Learn the latest--Visual Studio 2012, SharePoint 2013, SQL 2012, more!
Discover the easy way to master current and previous Microsoft technologies
and advance your career. Get an incredible 1,500+ hours of step-by-step
tutorial videos with LearnDevNow. Subscribe today and save!
http://pubads.g.doubleclick.net/gampad/clk?id=58041391&iu=/4140/ostg.clktrk
_______________________________________________
Libcg-devel mailing list
Libcg-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/libcg-devel

Reply via email to