Rename argpar_iter_get_ingested_orig_args() -> argpar_iter_ingested_orig_args()
[argpar.git] / argpar / argpar.c
index 72caa49dfd79c1272d47cb3a1279c766444d4abb..f324d7fb130355a42ef07583cfcd520f09f2e324 100644 (file)
@@ -33,8 +33,8 @@
 /*
  * An argpar iterator.
  *
- * Such a structure contains the state of an iterator between
- * calls to argpar_iter_parse_next().
+ * Such a structure contains the state of an iterator between calls to
+ * argpar_iter_next().
  */
 struct argpar_iter {
        /*
@@ -47,7 +47,7 @@ struct argpar_iter {
 
        /*
         * Index of the argument to process in the next
-        * argpar_iter_parse_next() call.
+        * argpar_iter_next() call.
         */
        unsigned int i;
 
@@ -58,7 +58,7 @@ struct argpar_iter {
         * Current character of the current short option group: if it's
         * not `NULL`, the parser is in within a short option group,
         * therefore it must resume there in the next
-        * argpar_iter_parse_next() call.
+        * argpar_iter_next() call.
         */
        const char *short_opt_ch;
 };
@@ -400,7 +400,7 @@ enum parse_orig_arg_opt_ret {
        PARSE_ORIG_ARG_OPT_RET_OK,
        PARSE_ORIG_ARG_OPT_RET_ERROR_UNKNOWN_OPT = -1,
        PARSE_ORIG_ARG_OPT_RET_ERROR_MISSING_OPT_ARG = -2,
-       PARSE_ORIG_ARG_OPT_RET_ERROR_INVALID_OPT = -3,
+       PARSE_ORIG_ARG_OPT_RET_ERROR_INVALID_ARG = -3,
        PARSE_ORIG_ARG_OPT_RET_ERROR_UNEXPECTED_OPT_ARG = -4,
        PARSE_ORIG_ARG_OPT_RET_ERROR_MEMORY = -5,
 };
@@ -420,7 +420,7 @@ enum parse_orig_arg_opt_ret parse_short_opts(const char * const short_opts,
 
        if (strlen(short_opts) == 0) {
                try_append_string_printf(error, "Invalid argument");
-               ret = PARSE_ORIG_ARG_OPT_RET_ERROR_INVALID_OPT;
+               ret = PARSE_ORIG_ARG_OPT_RET_ERROR_INVALID_ARG;
                goto error;
        }
 
@@ -519,7 +519,7 @@ enum parse_orig_arg_opt_ret parse_long_opt(const char * const long_opt_arg,
 
        if (strlen(long_opt_arg) == 0) {
                try_append_string_printf(error, "Invalid argument");
-               ret = PARSE_ORIG_ARG_OPT_RET_ERROR_INVALID_OPT;
+               ret = PARSE_ORIG_ARG_OPT_RET_ERROR_INVALID_ARG;
                goto error;
        }
 
@@ -532,7 +532,7 @@ enum parse_orig_arg_opt_ret parse_long_opt(const char * const long_opt_arg,
                if (long_opt_name_size > max_len) {
                        try_append_string_printf(error,
                                "Invalid argument `--%s`", long_opt_arg);
-                       ret = PARSE_ORIG_ARG_OPT_RET_ERROR_INVALID_OPT;
+                       ret = PARSE_ORIG_ARG_OPT_RET_ERROR_INVALID_ARG;
                        goto error;
                }
 
@@ -679,11 +679,11 @@ void argpar_iter_destroy(struct argpar_iter * const iter)
 }
 
 ARGPAR_HIDDEN
-enum argpar_iter_parse_next_status argpar_iter_parse_next(
+enum argpar_iter_next_status argpar_iter_next(
                struct argpar_iter * const iter,
                const struct argpar_item ** const item, char ** const error)
 {
-       enum argpar_iter_parse_next_status status;
+       enum argpar_iter_next_status status;
        enum parse_orig_arg_opt_ret parse_orig_arg_opt_ret;
        const char *orig_arg;
        const char *next_orig_arg;
@@ -695,7 +695,7 @@ enum argpar_iter_parse_next_status argpar_iter_parse_next(
        }
 
        if (iter->i == iter->argc) {
-               status = ARGPAR_ITER_PARSE_NEXT_STATUS_END;
+               status = ARGPAR_ITER_NEXT_STATUS_END;
                goto end;
        }
 
@@ -710,14 +710,14 @@ enum argpar_iter_parse_next_status argpar_iter_parse_next(
                                iter->non_opt_index);
 
                if (!non_opt_item) {
-                       status = ARGPAR_ITER_PARSE_NEXT_STATUS_ERROR;
+                       status = ARGPAR_ITER_NEXT_STATUS_ERROR_MEMORY;
                        goto end;
                }
 
                iter->non_opt_index++;
                iter->i++;
                *item = &non_opt_item->base;
-               status = ARGPAR_ITER_PARSE_NEXT_STATUS_OK;
+               status = ARGPAR_ITER_NEXT_STATUS_OK;
                goto end;
        }
 
@@ -727,20 +727,35 @@ enum argpar_iter_parse_next_status argpar_iter_parse_next(
                (struct argpar_item **) item);
        switch (parse_orig_arg_opt_ret) {
        case PARSE_ORIG_ARG_OPT_RET_OK:
-               status = ARGPAR_ITER_PARSE_NEXT_STATUS_OK;
+               status = ARGPAR_ITER_NEXT_STATUS_OK;
                break;
        case PARSE_ORIG_ARG_OPT_RET_ERROR_UNKNOWN_OPT:
-               try_prepend_while_parsing_arg_to_error(error, iter->i,
-                       orig_arg);
-               status = ARGPAR_ITER_PARSE_NEXT_STATUS_ERROR_UNKNOWN_OPT;
-               break;
        case PARSE_ORIG_ARG_OPT_RET_ERROR_MISSING_OPT_ARG:
-       case PARSE_ORIG_ARG_OPT_RET_ERROR_INVALID_OPT:
+       case PARSE_ORIG_ARG_OPT_RET_ERROR_INVALID_ARG:
        case PARSE_ORIG_ARG_OPT_RET_ERROR_UNEXPECTED_OPT_ARG:
-       case PARSE_ORIG_ARG_OPT_RET_ERROR_MEMORY:
                try_prepend_while_parsing_arg_to_error(error, iter->i,
                        orig_arg);
-               status = ARGPAR_ITER_PARSE_NEXT_STATUS_ERROR;
+
+               switch (parse_orig_arg_opt_ret) {
+               case PARSE_ORIG_ARG_OPT_RET_ERROR_UNKNOWN_OPT:
+                       status = ARGPAR_ITER_NEXT_STATUS_ERROR_UNKNOWN_OPT;
+                       break;
+               case PARSE_ORIG_ARG_OPT_RET_ERROR_MISSING_OPT_ARG:
+                       status = ARGPAR_ITER_NEXT_STATUS_ERROR_MISSING_OPT_ARG;
+                       break;
+               case PARSE_ORIG_ARG_OPT_RET_ERROR_INVALID_ARG:
+                       status = ARGPAR_ITER_NEXT_STATUS_ERROR_INVALID_ARG;
+                       break;
+               case PARSE_ORIG_ARG_OPT_RET_ERROR_UNEXPECTED_OPT_ARG:
+                       status = ARGPAR_ITER_NEXT_STATUS_ERROR_UNEXPECTED_OPT_ARG;
+                       break;
+               default:
+                       abort();
+               }
+
+               break;
+       case PARSE_ORIG_ARG_OPT_RET_ERROR_MEMORY:
+               status = ARGPAR_ITER_NEXT_STATUS_ERROR_MEMORY;
                break;
        default:
                abort();
@@ -751,7 +766,7 @@ end:
 }
 
 ARGPAR_HIDDEN
-unsigned int argpar_iter_get_ingested_orig_args(
+unsigned int argpar_iter_ingested_orig_args(
                const struct argpar_iter * const iter)
 {
        return iter->i;
@@ -782,27 +797,32 @@ struct argpar_parse_ret argpar_parse(const unsigned int argc,
        }
 
        while (true) {
-               const enum argpar_iter_parse_next_status status =
-                       argpar_iter_parse_next(iter, &item, &parse_ret.error);
-
-               if (status == ARGPAR_ITER_PARSE_NEXT_STATUS_ERROR) {
+               const enum argpar_iter_next_status status =
+                       argpar_iter_next(iter, &item, &parse_ret.error);
+
+               switch (status) {
+               case ARGPAR_ITER_NEXT_STATUS_ERROR_MISSING_OPT_ARG:
+               case ARGPAR_ITER_NEXT_STATUS_ERROR_INVALID_ARG:
+               case ARGPAR_ITER_NEXT_STATUS_ERROR_UNEXPECTED_OPT_ARG:
+               case ARGPAR_ITER_NEXT_STATUS_ERROR_MEMORY:
                        goto error;
-               } else if (status == ARGPAR_ITER_PARSE_NEXT_STATUS_END) {
-                       break;
-               } else if (status == ARGPAR_ITER_PARSE_NEXT_STATUS_ERROR_UNKNOWN_OPT) {
+               case ARGPAR_ITER_NEXT_STATUS_ERROR_UNKNOWN_OPT:
                        if (fail_on_unknown_opt) {
                                parse_ret.ingested_orig_args =
-                                       argpar_iter_get_ingested_orig_args(iter);
+                                       argpar_iter_ingested_orig_args(iter);
                                goto error;
                        }
 
                        free(parse_ret.error);
                        parse_ret.error = NULL;
+                       goto success;
+               case ARGPAR_ITER_NEXT_STATUS_END:
+                       goto success;
+               default:
+                       ARGPAR_ASSERT(status == ARGPAR_ITER_NEXT_STATUS_OK);
                        break;
                }
 
-               ARGPAR_ASSERT(status == ARGPAR_ITER_PARSE_NEXT_STATUS_OK);
-
                if (!push_item(parse_ret.items, item)) {
                        goto error;
                }
@@ -810,8 +830,9 @@ struct argpar_parse_ret argpar_parse(const unsigned int argc,
                item = NULL;
        }
 
+success:
        ARGPAR_ASSERT(!parse_ret.error);
-       parse_ret.ingested_orig_args = argpar_iter_get_ingested_orig_args(iter);
+       parse_ret.ingested_orig_args = argpar_iter_ingested_orig_args(iter);
        goto end;
 
 error:
This page took 0.024864 seconds and 4 git commands to generate.