1 #include <xen/lib.h>
2 
parse_size_and_unit(const char * s,const char ** ps)3 unsigned long long parse_size_and_unit(const char *s, const char **ps)
4 {
5     unsigned long long ret;
6     const char *s1;
7 
8     ret = simple_strtoull(s, &s1, 0);
9 
10     switch ( *s1 )
11     {
12     case 'T': case 't':
13         ret <<= 10;
14         /* fallthrough */
15     case 'G': case 'g':
16         ret <<= 10;
17         /* fallthrough */
18     case 'M': case 'm':
19         ret <<= 10;
20         /* fallthrough */
21     case 'K': case 'k':
22         ret <<= 10;
23         /* fallthrough */
24     case 'B': case 'b':
25         s1++;
26         break;
27     case '%':
28         if ( ps )
29             break;
30         /* fallthrough */
31     default:
32         ret <<= 10; /* default to kB */
33         break;
34     }
35 
36     if ( ps != NULL )
37         *ps = s1;
38 
39     return ret;
40 }
41 
42 /*
43  * Local variables:
44  * mode: C
45  * c-file-style: "BSD"
46  * c-basic-offset: 4
47  * tab-width: 4
48  * indent-tabs-mode: nil
49  * End:
50  */
51