Example #1
0
File: parse.c Project: martin21/fio
static unsigned long long get_mult_bytes(char c, void *data)
{
	unsigned int kb_base = fio_get_kb_base(data);
	unsigned long long ret = 1;

	switch (c) {
	default:
		break;
	case 'p':
	case 'P':
		ret *= (unsigned long long) kb_base;
	case 't':
	case 'T':
		ret *= (unsigned long long) kb_base;
	case 'g':
	case 'G':
		ret *= (unsigned long long) kb_base;
	case 'm':
	case 'M':
		ret *= (unsigned long long) kb_base;
	case 'k':
	case 'K':
		ret *= (unsigned long long) kb_base;
		break;
	}

	return ret;
}
Example #2
0
File: parse.c Project: CodeMonk/fio
static unsigned long long __get_mult_bytes(const char *p, void *data,
					   int *percent)
{
	unsigned int kb_base = fio_get_kb_base(data);
	unsigned long long ret = 1;
	unsigned int i, pow = 0, mult = kb_base;
	char *c;

	if (!p)
		return 1;

	c = strdup(p);

	for (i = 0; i < strlen(c); i++) {
		c[i] = tolower(c[i]);
		if (is_separator(c[i])) {
			c[i] = '\0';
			break;
		}
	}

	if (!strncmp("pib", c, 3)) {
		pow = 5;
		mult = 1000;
	} else if (!strncmp("tib", c, 3)) {
		pow = 4;
		mult = 1000;
	} else if (!strncmp("gib", c, 3)) {
		pow = 3;
		mult = 1000;
	} else if (!strncmp("mib", c, 3)) {
		pow = 2;
		mult = 1000;
	} else if (!strncmp("kib", c, 3)) {
		pow = 1;
		mult = 1000;
	} else if (!strncmp("p", c, 1) || !strncmp("pb", c, 2))
		pow = 5;
	else if (!strncmp("t", c, 1) || !strncmp("tb", c, 2))
		pow = 4;
	else if (!strncmp("g", c, 1) || !strncmp("gb", c, 2))
		pow = 3;
	else if (!strncmp("m", c, 1) || !strncmp("mb", c, 2))
		pow = 2;
	else if (!strncmp("k", c, 1) || !strncmp("kb", c, 2))
		pow = 1;
	else if (!strncmp("%", c, 1)) {
		*percent = 1;
		free(c);
		return ret;
	}

	while (pow--)
		ret *= (unsigned long long) mult;

	free(c);
	return ret;
}