From 7df54d316e70e2d6ae080ef98aa9d2388bbb8af9 Mon Sep 17 00:00:00 2001 From: Piotr Wilczek Date: Sun, 27 Jan 2013 22:59:24 +0000 Subject: vsprintf: add ustrtoll function Add 'ustrtoull' function to convert size from string (ex: 1GiB) to unsigned long long type Signed-off-by: Piotr Wilczek Signed-off-by: Kyungmin Park --- lib/vsprintf.c | 23 +++++++++++++++++++++++ 1 file changed, 23 insertions(+) (limited to 'lib/vsprintf.c') diff --git a/lib/vsprintf.c b/lib/vsprintf.c index 3c432f8764..533a96b85e 100644 --- a/lib/vsprintf.c +++ b/lib/vsprintf.c @@ -126,6 +126,29 @@ unsigned long ustrtoul(const char *cp, char **endp, unsigned int base) return result; } +unsigned long long ustrtoull(const char *cp, char **endp, unsigned int base) +{ + unsigned long long result = simple_strtoull(cp, endp, base); + switch (**endp) { + case 'G': + result *= 1024; + /* fall through */ + case 'M': + result *= 1024; + /* fall through */ + case 'K': + case 'k': + result *= 1024; + if ((*endp)[1] == 'i') { + if ((*endp)[2] == 'B') + (*endp) += 3; + else + (*endp) += 2; + } + } + return result; +} + unsigned long long simple_strtoull(const char *cp, char **endp, unsigned int base) { -- cgit v1.2.1