X-Git-Url: http://git.lttng.org./?a=blobdiff_plain;f=src%2Fcommon%2Fargpar-utils%2Fargpar-utils.c;h=493598693632ec32556a0260488a7d16662c8a84;hb=ef9ff9cb5ff4dd763d4c9dbbcfcb5952adce167e;hp=9ac246f81bd7d659a98bb3e89615c1b2302bbd22;hpb=35c4b2b3fec47b84bf169557ea23454881b76027;p=lttng-tools.git diff --git a/src/common/argpar-utils/argpar-utils.c b/src/common/argpar-utils/argpar-utils.c index 9ac246f81..493598693 100644 --- a/src/common/argpar-utils/argpar-utils.c +++ b/src/common/argpar-utils/argpar-utils.c @@ -12,8 +12,6 @@ #include #include -#define WHILE_PARSING_ARG_N_ARG_FMT "While parsing argument #%d (`%s`): " - /* * Given argpar error status `status` and error `error`, return a formatted * error message describing the error. @@ -122,6 +120,7 @@ end: enum parse_next_item_status parse_next_item(struct argpar_iter *iter, const struct argpar_item **item, int argc_offset, const char **argv, bool unknown_opt_is_error, + const struct argpar_error **error_out, const char *context_fmt, ...) { enum argpar_iter_next_status status; @@ -134,7 +133,7 @@ enum parse_next_item_status parse_next_item(struct argpar_iter *iter, switch (status) { case ARGPAR_ITER_NEXT_STATUS_ERROR_MEMORY: ERR("Failed to get next argpar item."); - ret = PARSE_NEXT_ITEM_STATUS_ERROR; + ret = PARSE_NEXT_ITEM_STATUS_ERROR_MEMORY; break; case ARGPAR_ITER_NEXT_STATUS_ERROR: { @@ -172,6 +171,12 @@ enum parse_next_item_status parse_next_item(struct argpar_iter *iter, abort(); } + if (error_out) { + argpar_error_destroy(*error_out); + *error_out = error; + error = NULL; + } + argpar_error_destroy(error); return ret;