| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253 |
- // SPDX-License-Identifier: GPL-2.0-only
- /*
- * From lib/cmdline.c
- */
- #include <stdlib.h>
- #if __has_attribute(__fallthrough__)
- # define fallthrough __attribute__((__fallthrough__))
- #else
- # define fallthrough do {} while (0) /* fallthrough */
- #endif
- unsigned long long memparse(const char *ptr, char **retptr)
- {
- char *endptr; /* local pointer to end of parsed string */
- unsigned long long ret = strtoll(ptr, &endptr, 0);
- switch (*endptr) {
- case 'E':
- case 'e':
- ret <<= 10;
- fallthrough;
- case 'P':
- case 'p':
- ret <<= 10;
- fallthrough;
- case 'T':
- case 't':
- ret <<= 10;
- fallthrough;
- case 'G':
- case 'g':
- ret <<= 10;
- fallthrough;
- case 'M':
- case 'm':
- ret <<= 10;
- fallthrough;
- case 'K':
- case 'k':
- ret <<= 10;
- endptr++;
- fallthrough;
- default:
- break;
- }
- if (retptr)
- *retptr = endptr;
- return ret;
- }
|