Loading...
Note: File does not exist in v3.1.
1// SPDX-License-Identifier: GPL-2.0-only
2/*
3 * From lib/cmdline.c
4 */
5#include <stdlib.h>
6
7#if __has_attribute(__fallthrough__)
8# define fallthrough __attribute__((__fallthrough__))
9#else
10# define fallthrough do {} while (0) /* fallthrough */
11#endif
12
13unsigned long long memparse(const char *ptr, char **retptr)
14{
15 char *endptr; /* local pointer to end of parsed string */
16
17 unsigned long long ret = strtoll(ptr, &endptr, 0);
18
19 switch (*endptr) {
20 case 'E':
21 case 'e':
22 ret <<= 10;
23 fallthrough;
24 case 'P':
25 case 'p':
26 ret <<= 10;
27 fallthrough;
28 case 'T':
29 case 't':
30 ret <<= 10;
31 fallthrough;
32 case 'G':
33 case 'g':
34 ret <<= 10;
35 fallthrough;
36 case 'M':
37 case 'm':
38 ret <<= 10;
39 fallthrough;
40 case 'K':
41 case 'k':
42 ret <<= 10;
43 endptr++;
44 fallthrough;
45 default:
46 break;
47 }
48
49 if (retptr)
50 *retptr = endptr;
51
52 return ret;
53}