lttng: list valid condition / action names if missing or unknown
[lttng-tools.git] / src / common / argpar-utils / argpar-utils.c
index 9ac246f81bd7d659a98bb3e89615c1b2302bbd22..493598693632ec32556a0260488a7d16662c8a84 100644 (file)
@@ -12,8 +12,6 @@
 #include <common/error.h>
 #include <common/string-utils/string-utils.h>
 
-#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;
This page took 0.025577 seconds and 4 git commands to generate.