shared/options: add helper function to count positional args

This commit is contained in:
Zbigniew Jędrzejewski-Szmek
2026-03-25 00:45:57 +01:00
parent 7aa94251fe
commit 848dd000e0
3 changed files with 9 additions and 2 deletions
+1 -1
View File
@@ -240,7 +240,7 @@ int option_parse(
return option->id;
}
char** option_parser_get_args(OptionParser *state, int argc, char *argv[]) {
char** option_parser_get_args(const OptionParser *state, int argc, char *argv[]) {
/* Returns positional args as a strv.
* If "--" was found, it has been removed. */
+6 -1
View File
@@ -2,6 +2,7 @@
#pragma once
#include "shared-forward.h"
#include "strv.h"
typedef enum OptionFlags {
OPTION_OPTIONAL_ARG = 1U << 0, /* Same as optional_argument in getopt */
@@ -89,7 +90,11 @@ int option_parse(
#define FOREACH_OPTION(parser, opt, argc, argv, ret_a, on_error) \
FOREACH_OPTION_FULL(parser, opt, argc, argv, /* ret_o= */ NULL, ret_a, on_error)
char** option_parser_get_args(OptionParser *state, int argc, char *argv[]);
char** option_parser_get_args(const OptionParser *state, int argc, char *argv[]);
static inline size_t option_parser_get_n_args(const OptionParser *state, int argc, char *argv[]) {
return strv_length(option_parser_get_args(state, argc, argv));
}
int _option_parser_get_help_table(
const Option options[],
const Option options_end[],
+2
View File
@@ -57,6 +57,8 @@ static void test_option_parse_one(
char **args = option_parser_get_args(&state, argc, argv);
ASSERT_TRUE(strv_equal(args, remaining));
ASSERT_STREQ(argv[0], saved_argv0);
ASSERT_EQ(option_parser_get_n_args(&state, argc, argv), strv_length(remaining));
}
static void test_option_invalid_one(