parser: add unsigned int parser

Will be used by fs parsing options

Link: https://lore.kernel.org/r/20210129045242.10268-1-bingjingc@synology.com
Reviewed-by: Robbie Ko<robbieko@synology.com>
Reviewed-by: Chung-Chiang Cheng <cccheng@synology.com>
Signed-off-by: BingJing Chang <bingjingc@synology.com>
Signed-off-by: Jan Kara <jack@suse.cz>
This commit is contained in:
BingJing Chang 2021-01-29 12:52:42 +08:00 committed by Jan Kara
parent 63c9e47a16
commit 01531ac354
2 changed files with 23 additions and 0 deletions

View File

@ -29,6 +29,7 @@ typedef struct {
int match_token(char *, const match_table_t table, substring_t args[]);
int match_int(substring_t *, int *result);
int match_uint(substring_t *s, unsigned int *result);
int match_u64(substring_t *, u64 *result);
int match_octal(substring_t *, int *result);
int match_hex(substring_t *, int *result);

View File

@ -188,6 +188,28 @@ int match_int(substring_t *s, int *result)
}
EXPORT_SYMBOL(match_int);
/*
* match_uint - scan a decimal representation of an integer from a substring_t
* @s: substring_t to be scanned
* @result: resulting integer on success
*
* Description: Attempts to parse the &substring_t @s as a decimal integer. On
* success, sets @result to the integer represented by the string and returns 0.
* Returns -ENOMEM, -EINVAL, or -ERANGE on failure.
*/
int match_uint(substring_t *s, unsigned int *result)
{
int err = -ENOMEM;
char *buf = match_strdup(s);
if (buf) {
err = kstrtouint(buf, 10, result);
kfree(buf);
}
return err;
}
EXPORT_SYMBOL(match_uint);
/**
* match_u64: - scan a decimal representation of a u64 from
* a substring_t