brintos

brintos / linux-shallow public Read only

0
0
Text · 875 B · c85f00f Raw
54 lines · c
1// SPDX-License-Identifier: GPL-2.0-only2/*3 * From lib/cmdline.c4 */5#include <stdlib.h>6 7#if __has_attribute(__fallthrough__)8# define fallthrough                    __attribute__((__fallthrough__))9#else10# define fallthrough                    do {} while (0)  /* fallthrough */11#endif12 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}54