Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
torvalds
GitHub Repository: torvalds/linux
Path: blob/master/tools/lib/cmdline.c
26278 views
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
13
unsigned 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
}
54
55