vppinfra: add unformat_c_string_array
Type: improvement Change-Id: Iea5ecca5d4cbc6c7aea69104830afcfe78c708ee Signed-off-by: Damjan Marion <damarion@cisco.com>
This commit is contained in:
@ -304,6 +304,9 @@ unformat_function_t unformat_eof;
|
||||
/* Parse memory size e.g. 100, 100k, 100m, 100g. */
|
||||
unformat_function_t unformat_memory_size;
|
||||
|
||||
/* Unformat C string array, takes array length as 2nd argument */
|
||||
unformat_function_t unformat_c_string_array;
|
||||
|
||||
/* Format base 10 e.g. 100, 100K, 100M, 100G */
|
||||
u8 *format_base10 (u8 *s, va_list *va);
|
||||
|
||||
|
@ -1086,6 +1086,30 @@ unformat_data_size (unformat_input_t * input, va_list * args)
|
||||
return 1;
|
||||
}
|
||||
|
||||
__clib_export uword
|
||||
unformat_c_string_array (unformat_input_t *input, va_list *va)
|
||||
{
|
||||
char *str = va_arg (*va, char *);
|
||||
u32 array_len = va_arg (*va, u32);
|
||||
uword c, rv = 0;
|
||||
u8 *s = 0;
|
||||
|
||||
if (unformat (input, "%v", &s) == 0)
|
||||
return 0;
|
||||
|
||||
c = vec_len (s);
|
||||
|
||||
if (c > 0 && c < array_len)
|
||||
{
|
||||
clib_memcpy (str, s, c);
|
||||
str[c] = 0;
|
||||
rv = 1;
|
||||
}
|
||||
|
||||
vec_free (s);
|
||||
return rv;
|
||||
}
|
||||
|
||||
#endif /* CLIB_UNIX */
|
||||
|
||||
|
||||
|
Reference in New Issue
Block a user