On Wed, Sep 4, 2013 at 11:29 PM, Libo Chen <clbchenlibo.c...@huawei.com>wrote:
> 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); > Add a return here, and you don't need the else. > + } 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