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