bool Options::valid_byte_size()

in src/options.cc [34:63]


	bool Options::valid_byte_size(const char *arg) {
		assert(arg);

		static const char validchars[] = {'K','M','G','b','\0'};

		// fail if it doesn't start with a non-zero number
		if (arg[0] <= '0' || arg[0] > '9') {
			fprintf(stderr, "Invalid byte size!\n");
			return false;
		}

		for (char *c = (char *)arg; *c; c++) {
			if (*c < '0' || *c > '9') {
				bool valid = false;
				for (int i = 0; i < strlen(validchars); ++i) {
					// must be a valid char and at the end of the string
					if (*c == validchars[i] && c[1] == '\0') {
						valid = true;
						break;
					}
				}
				if (!valid) {
					fprintf(stderr, "Invalid byte size!\n");
					return false;
				}
			}
		}

		return true;
	}