diff options
Diffstat (limited to 'lib/vsprintf.c')
| -rw-r--r-- | lib/vsprintf.c | 23 | 
1 files changed, 23 insertions, 0 deletions
| diff --git a/lib/vsprintf.c b/lib/vsprintf.c index 3c432f876..533a96b85 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)  { |