diff options
Diffstat (limited to 'lib/cmdline.c')
| -rw-r--r-- | lib/cmdline.c | 16 | 
1 files changed, 11 insertions, 5 deletions
| diff --git a/lib/cmdline.c b/lib/cmdline.c index f596c08d213a..f5f3ad8b62ff 100644 --- a/lib/cmdline.c +++ b/lib/cmdline.c | |||
| @@ -116,7 +116,7 @@ char *get_options(const char *str, int nints, int *ints) | |||
| 116 | /** | 116 | /** | 
| 117 | * memparse - parse a string with mem suffixes into a number | 117 | * memparse - parse a string with mem suffixes into a number | 
| 118 | * @ptr: Where parse begins | 118 | * @ptr: Where parse begins | 
| 119 | * @retptr: (output) Pointer to next char after parse completes | 119 | * @retptr: (output) Optional pointer to next char after parse completes | 
| 120 | * | 120 | * | 
| 121 | * Parses a string into a number. The number stored at @ptr is | 121 | * Parses a string into a number. The number stored at @ptr is | 
| 122 | * potentially suffixed with %K (for kilobytes, or 1024 bytes), | 122 | * potentially suffixed with %K (for kilobytes, or 1024 bytes), | 
| @@ -126,11 +126,13 @@ char *get_options(const char *str, int nints, int *ints) | |||
| 126 | * megabyte, or one gigabyte, respectively. | 126 | * megabyte, or one gigabyte, respectively. | 
| 127 | */ | 127 | */ | 
| 128 | 128 | ||
| 129 | unsigned long long memparse (char *ptr, char **retptr) | 129 | unsigned long long memparse(const char *ptr, char **retptr) | 
| 130 | { | 130 | { | 
| 131 | unsigned long long ret = simple_strtoull (ptr, retptr, 0); | 131 | char *endptr; /* local pointer to end of parsed string */ | 
| 132 | 132 | ||
| 133 | switch (**retptr) { | 133 | unsigned long long ret = simple_strtoull(ptr, &endptr, 0); | 
| 134 | |||
| 135 | switch (*endptr) { | ||
| 134 | case 'G': | 136 | case 'G': | 
| 135 | case 'g': | 137 | case 'g': | 
| 136 | ret <<= 10; | 138 | ret <<= 10; | 
| @@ -140,10 +142,14 @@ unsigned long long memparse (char *ptr, char **retptr) | |||
| 140 | case 'K': | 142 | case 'K': | 
| 141 | case 'k': | 143 | case 'k': | 
| 142 | ret <<= 10; | 144 | ret <<= 10; | 
| 143 | (*retptr)++; | 145 | endptr++; | 
| 144 | default: | 146 | default: | 
| 145 | break; | 147 | break; | 
| 146 | } | 148 | } | 
| 149 | |||
| 150 | if (retptr) | ||
| 151 | *retptr = endptr; | ||
| 152 | |||
| 147 | return ret; | 153 | return ret; | 
| 148 | } | 154 | } | 
| 149 | 155 | ||
