cmd: implement b_arglist_get_* functions

This commit is contained in:
2024-12-10 22:26:12 +00:00
parent 87b42f299d
commit 96308b2965

View File

@@ -757,6 +757,60 @@ void b_arglist_destroy(struct b_arglist *args)
free(args); free(args);
} }
b_status b_arglist_get_string(
const b_arglist *args, unsigned int opt_id, unsigned int arg_id,
unsigned int index, const char **out)
{
b_arglist_iterator it = {0};
b_arglist_iterator_begin(args, opt_id, arg_id, &it);
while (b_arglist_iterator_is_valid(&it)) {
if (it.value && it.value->val_str) {
*out = it.value->val_str;
return B_SUCCESS;
}
b_arglist_iterator_next(&it);
}
return B_ERR_NO_ENTRY;
}
b_status b_arglist_get_int(
const b_arglist *args, unsigned int opt_id, unsigned int arg_id,
unsigned int index, long long *out)
{
b_arglist_iterator it = {0};
b_arglist_iterator_begin(args, opt_id, arg_id, &it);
while (b_arglist_iterator_is_valid(&it)) {
if (it.value) {
*out = it.value->val_int;
return B_SUCCESS;
}
b_arglist_iterator_next(&it);
}
return B_ERR_NO_ENTRY;
}
b_status b_arglist_get_uint(
const b_arglist *args, unsigned int opt_id, unsigned int arg_id,
unsigned int index, unsigned long long *out)
{
b_arglist_iterator it = {0};
b_arglist_iterator_begin(args, opt_id, arg_id, &it);
while (b_arglist_iterator_is_valid(&it)) {
if (it.value && it.value->val_uint) {
*out = it.value->val_uint;
return B_SUCCESS;
}
b_arglist_iterator_next(&it);
}
return B_ERR_NO_ENTRY;
}
size_t b_arglist_get_count( size_t b_arglist_get_count(
const b_arglist *args, unsigned int opt_id, unsigned int arg_id) const b_arglist *args, unsigned int opt_id, unsigned int arg_id)
{ {