From: Pawel Szewczyk Date: Wed, 1 Jul 2015 12:29:04 +0000 (+0200) Subject: gadget: Add --help option to gadget subcommands X-Git-Tag: accepted/tizen/3.0/common/20161114.110810~44 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=ee3fe56469de8aad40884659f00a8f31e1d7d7f0;p=platform%2Fupstream%2Fgt.git gadget: Add --help option to gadget subcommands Change-Id: I8b1ea3ecc06976bee0128c5dbeb40f1615d6cdc2 Signed-off-by: Pawel Szewczyk --- diff --git a/source/gadget/include/gadget.h b/source/gadget/include/gadget.h index e5439e4..4209b81 100644 --- a/source/gadget/include/gadget.h +++ b/source/gadget/include/gadget.h @@ -105,21 +105,25 @@ struct gt_gadget_rm_data { struct gt_gadget_get_data { const char *name; const char **attrs; + int opts; }; struct gt_gadget_set_data { const char *name; struct gt_setting *attrs; + int opts; }; struct gt_gadget_enable_data { const char *gadget; const char *udc; + int opts; }; struct gt_gadget_disable_data { const char *gadget; const char *udc; + int opts; }; struct gt_gadget_gadget_data { @@ -149,14 +153,21 @@ struct gt_gadget_template_data { int opts; }; +struct gt_gadget_template_rm_data { + const char *name; + int opts; +}; + struct gt_gadget_template_set_data { const char *name; struct gt_setting *attr; + int opts; }; struct gt_gadget_template_get_data { const char *name; const char **attr; + int opts; }; /** diff --git a/source/gadget/src/gadget.c b/source/gadget/src/gadget.c index 8078dce..104dbdb 100644 --- a/source/gadget/src/gadget.c +++ b/source/gadget/src/gadget.c @@ -114,7 +114,7 @@ static void gt_parse_gadget_create(const Command *cmd, int argc, char **argv, struct gt_gadget_create_data *dt; int ind; int c; - int avaible_opts = GT_FORCE; + int avaible_opts = GT_FORCE | GT_HELP; struct gt_setting *setting, *attrs = NULL; _Bool iter; int i; @@ -124,7 +124,7 @@ static void gt_parse_gadget_create(const Command *cmd, int argc, char **argv, goto out; ind = gt_get_options(&dt->opts, avaible_opts, argc, argv); - if (ind < 0) + if (ind < 0 || dt->opts & GT_HELP) goto out; if (ind == argc) @@ -197,7 +197,8 @@ static int gt_gadget_rm_help(void *data) "\n" "Options:\n" " -f, --force\tDisable gadget if it was enabled\n" - " -r, --recursive\tRemove configs and functions recursively\n", + " -r, --recursive\tRemove configs and functions recursively\n" + " -h, --help\tPrint this help\n", program_name); return -1; } @@ -207,14 +208,14 @@ static void gt_parse_gadget_rm(const Command *cmd, int argc, char **argv, { struct gt_gadget_rm_data *dt; int ind; - int avaible_opts = GT_FORCE | GT_RECURSIVE; + int avaible_opts = GT_FORCE | GT_RECURSIVE | GT_HELP; dt = zalloc(sizeof(*dt)); if (dt == NULL) goto out; ind = gt_get_options(&dt->opts, avaible_opts, argc, argv); - if (ind < 0) + if (ind < 0 || dt->opts & GT_HELP) goto out; if (argc - ind != 1) @@ -251,6 +252,8 @@ static void gt_parse_gadget_get(const Command *cmd, int argc, char **argv, { struct gt_gadget_get_data *dt = NULL; int i; + int ind; + int avaible_opts = GT_HELP; if (argc == 0) goto out; @@ -259,15 +262,18 @@ static void gt_parse_gadget_get(const Command *cmd, int argc, char **argv, if (dt == NULL) goto out; - dt->name = argv[0]; - dt->attrs = calloc(argc, sizeof(char *)); + ind = gt_get_options(&dt->opts, avaible_opts, argc, argv); + if (ind < 0 || dt->opts & GT_HELP) + goto out; + + dt->name = argv[ind++]; + dt->attrs = calloc(argc - ind + 1, sizeof(char *)); if (dt->attrs == NULL) goto out; - argv++; - for (i = 0; i < argc; i++) { - dt->attrs[i] = argv[i]; - } + i = 0; + while (argv[ind]) + dt->attrs[i++] = argv[ind++]; executable_command_set(exec, GET_EXECUTABLE(get), (void *)dt, gt_gadget_get_destructor); @@ -300,16 +306,22 @@ static void gt_parse_gadget_set(const Command *cmd, int argc, char **argv, { struct gt_gadget_set_data *dt = NULL; int tmp; - - if (argc < 2) - goto out; + int ind; + int avaible_opts = GT_HELP; dt = zalloc(sizeof(*dt)); if (dt == NULL) goto out; - dt->name = argv[0]; - tmp = gt_parse_setting_list(&dt->attrs, argc-1, argv+1); + ind = gt_get_options(&dt->opts, avaible_opts, argc, argv); + if (ind < 0 || dt->opts & GT_HELP) + goto out; + + if (argc - ind < 2) + goto out; + + dt->name = argv[ind++]; + tmp = gt_parse_setting_list(&dt->attrs, argc - ind, argv + ind); if (tmp < 0) goto out; @@ -331,18 +343,24 @@ static void gt_parse_gadget_enable(const Command *cmd, int argc, char **argv, ExecutableCommand *exec, void * data) { struct gt_gadget_enable_data *dt; + int ind; + int avaible_opts = GT_HELP; dt = zalloc(sizeof(*dt)); if (dt == NULL) goto out; - switch (argc) { + ind = gt_get_options(&dt->opts, avaible_opts, argc, argv); + if (ind < 0 || dt->opts & GT_HELP) + goto out; + + switch (argc - ind) { case 1: - dt->gadget = argv[0]; + dt->gadget = argv[ind++]; break; case 2: - dt->gadget = argv[0]; - dt->udc = argv[1]; + dt->gadget = argv[ind++]; + dt->udc = argv[ind++]; break; default: goto out; @@ -369,6 +387,7 @@ static void gt_parse_gadget_disable(const Command *cmd, int argc, char c; struct option opts[] = { {"udc", required_argument, 0, 'u'}, + {"help", no_argument, 0, 'h'}, {0, 0, 0, 0} }; @@ -379,13 +398,16 @@ static void gt_parse_gadget_disable(const Command *cmd, int argc, argc++; while (1) { int opt_index = 0; - c = getopt_long(argc, argv, "u:", opts, &opt_index); + c = getopt_long(argc, argv, "u:h", opts, &opt_index); if (c == -1) break; switch (c) { case 'u': dt->udc = optarg; break; + case 'h': + goto out; + break; default: goto out; } @@ -415,14 +437,14 @@ static void gt_parse_gadget_gadget(const Command *cmd, int argc, { struct gt_gadget_gadget_data *dt; int ind; - int avaible_opts = GT_RECURSIVE | GT_VERBOSE; + int avaible_opts = GT_RECURSIVE | GT_VERBOSE | GT_HELP; dt = zalloc(sizeof(*dt)); if (dt == NULL) goto out; ind = gt_get_options(&dt->opts, avaible_opts, argc, argv); - if (ind < 0) + if (ind < 0 || dt->opts & GT_HELP) goto out; switch (argc - ind) { @@ -459,6 +481,7 @@ static void gt_parse_gadget_load(const Command *cmd, int argc, {"file", required_argument, 0, 1}, {"stdin", no_argument, 0, 2}, {"path", required_argument, 0, 3}, + {"help", no_argument, 0, 'h'}, {0, 0, 0, 0} }; @@ -469,7 +492,7 @@ static void gt_parse_gadget_load(const Command *cmd, int argc, argc++; while (1) { int opt_index = 0; - c = getopt_long(argc, argv, "o", opts, &opt_index); + c = getopt_long(argc, argv, "oh", opts, &opt_index); if (c == -1) break; switch (c) { @@ -491,6 +514,9 @@ static void gt_parse_gadget_load(const Command *cmd, int argc, goto out; dt->path = optarg; break; + case 'h': + goto out; + break; default: goto out; } @@ -544,6 +570,7 @@ static void gt_parse_gadget_save(const Command *cmd, int argc, {"file", required_argument, 0, 1}, {"stdout", no_argument, 0, 2}, {"path", required_argument, 0, 3}, + {"help", no_argument, 0, 'h'}, {0, 0, 0, 0} }; @@ -554,7 +581,7 @@ static void gt_parse_gadget_save(const Command *cmd, int argc, argc++; while (1) { int opt_index = 0; - c = getopt_long(argc, argv, "f", opts, &opt_index); + c = getopt_long(argc, argv, "fh", opts, &opt_index); if (c == -1) break; switch (c) { @@ -576,6 +603,9 @@ static void gt_parse_gadget_save(const Command *cmd, int argc, goto out; dt->path = optarg; break; + case 'h': + goto out; + break; default: goto out; } @@ -617,13 +647,14 @@ static void gt_parse_gadget_template(const Command *cmd, int argc, { int ind; struct gt_gadget_template_data *dt; - int avaible_opts = GT_VERBOSE | GT_RECURSIVE; + int avaible_opts = GT_VERBOSE | GT_RECURSIVE | GT_HELP; dt = zalloc(sizeof(*dt)); if (dt == NULL) goto out; + ind = gt_get_options(&dt->opts, avaible_opts, argc, argv); - if (ind < 0) + if (ind < 0 || dt->opts & GT_HELP) goto out; if (argc - ind > 1) @@ -650,12 +681,22 @@ static int gt_gadget_template_rm_help(void *data) static void gt_parse_gadget_template_rm(const Command *cmd, int argc, char **argv, ExecutableCommand *exec, void * data) { - const char *dt = NULL; + struct gt_gadget_template_rm_data *dt = NULL; + int ind; + int avaible_opts = GT_HELP; + + dt = zalloc(sizeof(*dt)); + if (dt == NULL) + goto out; + + ind = gt_get_options(&dt->opts, avaible_opts, argc, argv); + if (ind < 0 || dt->opts & GT_HELP) + goto out; - if (argc != 1) + if (argc - ind != 1) goto out; - dt = argv[0]; + dt->name = argv[ind++]; executable_command_set(exec, GET_EXECUTABLE(template_rm), (void *)dt, NULL); @@ -686,16 +727,22 @@ static void gt_parse_gadget_template_set(const Command *cmd, int argc, { int tmp; struct gt_gadget_template_set_data *dt; + int ind; + int avaible_opts = GT_HELP; dt = zalloc(sizeof(*dt)); if (dt == NULL) goto out; - if (argc != 2) + ind = gt_get_options(&dt->opts, avaible_opts, argc, argv); + if (ind < 0 || dt->opts & GT_HELP) + goto out; + + if (argc - ind != 2) goto out; - dt->name = argv[0]; - tmp = gt_parse_setting_list(&dt->attr, argc-1, argv+1); + dt->name = argv[ind++]; + tmp = gt_parse_setting_list(&dt->attr, argc - ind, argv + ind); if (tmp < 0) goto out; @@ -730,23 +777,28 @@ static void gt_parse_gadget_template_get(const Command *cmd, int argc, { int i; struct gt_gadget_template_get_data *dt; + int ind; + int avaible_opts = GT_HELP; dt = zalloc(sizeof(*dt)); if (dt == NULL) goto out; - if (argc < 1) + ind = gt_get_options(&dt->opts, avaible_opts, argc, argv); + if (ind < 0 || dt->opts & GT_HELP) goto out; - dt->name = argv[0]; + if (argc - ind < 1) + goto out; + + dt->name = argv[ind++]; dt->attr = calloc(argc, sizeof(char *)); if (dt->attr == NULL) goto out; - argv++; - argc--; - for (i = 0; i < argc; i++) - dt->attr[i] = argv[i]; + i = 0; + while (argv[ind]) + dt->attr[i++] = argv[ind++]; executable_command_set(exec, GET_EXECUTABLE(get), (void *)dt, gt_gadget_template_get_destructor);