X-Git-Url: https://git.lttng.org/?a=blobdiff_plain;f=src%2Fbin%2Flttng%2Fcommands%2Fremove_trigger.cpp;h=65b5e79a9b4b18b562e536772b87bfd4f94e0a89;hb=c9e313bc594f40a86eed237dce222c0fc99c957f;hp=2ac237c3a872ee7449a065d403f601458f615794;hpb=48a4000561343808724f7cb5fa8c131877489ccd;p=lttng-tools.git diff --git a/src/bin/lttng/commands/remove_trigger.cpp b/src/bin/lttng/commands/remove_trigger.cpp index 2ac237c3a..65b5e79a9 100644 --- a/src/bin/lttng/commands/remove_trigger.cpp +++ b/src/bin/lttng/commands/remove_trigger.cpp @@ -5,9 +5,10 @@ * */ -#include "../command.h" +#include "../command.hpp" #include "common/argpar/argpar.h" -#include "common/mi-lttng.h" +#include "common/argpar-utils/argpar-utils.hpp" +#include "common/mi-lttng.hpp" #include #include @@ -61,7 +62,8 @@ int cmd_remove_trigger(int argc, const char **argv) { enum lttng_error_code ret_code; int ret; - struct argpar_parse_ret argpar_parse_ret = {}; + struct argpar_iter *argpar_iter = NULL; + const struct argpar_item *argpar_item = NULL; const char *name = NULL; int i; struct lttng_triggers *triggers = NULL; @@ -97,22 +99,35 @@ int cmd_remove_trigger(int argc, const char **argv) } } - argpar_parse_ret = argpar_parse(argc - 1, argv + 1, - remove_trigger_options, true); - if (!argpar_parse_ret.items) { - ERR("%s", argpar_parse_ret.error); + argc--; + argv++; + + argpar_iter = argpar_iter_create(argc, argv, remove_trigger_options); + if (!argpar_iter) { + ERR("Failed to allocate an argpar iter."); goto error; } - for (i = 0; i < argpar_parse_ret.items->n_items; i++) { - const struct argpar_item *item = - argpar_parse_ret.items->items[i]; + while (true) { + enum parse_next_item_status status; + + status = parse_next_item(argpar_iter, &argpar_item, 1, argv, + true, NULL, NULL); + if (status == PARSE_NEXT_ITEM_STATUS_ERROR || + status == PARSE_NEXT_ITEM_STATUS_ERROR_MEMORY) { + goto error; + } else if (status == PARSE_NEXT_ITEM_STATUS_END) { + break; + } + + assert(status == PARSE_NEXT_ITEM_STATUS_OK); - if (item->type == ARGPAR_ITEM_TYPE_OPT) { - const struct argpar_item_opt *item_opt = - (const struct argpar_item_opt *) item; + if (argpar_item_type(argpar_item) == ARGPAR_ITEM_TYPE_OPT) { + const struct argpar_opt_descr *descr = + argpar_item_opt_descr(argpar_item); + const char *arg = argpar_item_opt_arg(argpar_item); - switch (item_opt->descr->id) { + switch (descr->id) { case OPT_HELP: SHOW_HELP(); ret = 0; @@ -124,7 +139,7 @@ int cmd_remove_trigger(int argc, const char **argv) goto end; case OPT_OWNER_UID: { - if (!assign_string(&owner_uid, item_opt->arg, + if (!assign_string(&owner_uid, arg, "--owner-uid")) { goto error; } @@ -134,15 +149,14 @@ int cmd_remove_trigger(int argc, const char **argv) abort(); } } else { - const struct argpar_item_non_opt *item_non_opt = - (const struct argpar_item_non_opt *) item; + const char *arg = argpar_item_non_opt_arg(argpar_item); if (name) { - ERR("Unexpected argument '%s'", item_non_opt->arg); + ERR("Unexpected argument '%s'", arg); goto error; } - name = item_non_opt->arg; + name = arg; } } @@ -251,7 +265,8 @@ end: } cleanup: - argpar_parse_ret_fini(&argpar_parse_ret); + argpar_item_destroy(argpar_item); + argpar_iter_destroy(argpar_iter); lttng_triggers_destroy(triggers); free(owner_uid);