Commit 01531ac3 authored by BingJing Chang's avatar BingJing Chang Committed by Jan Kara
Browse files

parser: add unsigned int parser

parent 63c9e47a
Loading
Loading
Loading
Loading
+1 −0
Original line number Diff line number Diff line
@@ -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);
+22 −0
Original line number Diff line number Diff line
@@ -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