vppinfra: create unformat function for data size parsing
Type: feature
Signed-off-by: MathiasRaoul <mathias.raoul@gmail.com>
Change-Id: I8d71078a9ed42326e19453ea10008c6bb6992c52
(cherry picked from commit 579b165069
)
This commit is contained in:

committed by
Andrew Yourtchenko

parent
fb76b4549f
commit
cb19100c18
@ -317,6 +317,8 @@ uword unformat_init_unix_env (unformat_input_t * input, char *var);
|
||||
unformat_function_t unformat_unix_gid;
|
||||
#endif /* CLIB_UNIX */
|
||||
|
||||
uword unformat_data_size (unformat_input_t * input, va_list * args);
|
||||
|
||||
/* Test code. */
|
||||
int test_format_main (unformat_input_t * input);
|
||||
int test_unformat_main (unformat_input_t * input);
|
||||
|
@ -1077,6 +1077,30 @@ unformat_init_unix_env (unformat_input_t * input, char *var)
|
||||
return val != 0;
|
||||
}
|
||||
|
||||
uword
|
||||
unformat_data_size (unformat_input_t * input, va_list * args)
|
||||
{
|
||||
u64 _a;
|
||||
u64 *a = va_arg (*args, u64 *);
|
||||
if (unformat (input, "%lluGb", &_a))
|
||||
*a = _a << 30;
|
||||
else if (unformat (input, "%lluG", &_a))
|
||||
*a = _a << 30;
|
||||
else if (unformat (input, "%lluMb", &_a))
|
||||
*a = _a << 20;
|
||||
else if (unformat (input, "%lluM", &_a))
|
||||
*a = _a << 20;
|
||||
else if (unformat (input, "%lluKb", &_a))
|
||||
*a = _a << 10;
|
||||
else if (unformat (input, "%lluK", &_a))
|
||||
*a = _a << 10;
|
||||
else if (unformat (input, "%llu", a))
|
||||
;
|
||||
else
|
||||
return 0;
|
||||
return 1;
|
||||
}
|
||||
|
||||
#endif /* CLIB_UNIX */
|
||||
|
||||
|
||||
|
Reference in New Issue
Block a user