Пример #1
0
static bool parseOption(const Common::UString &arg, Common::UString &key) {
	if (arg.size() < 2) {
		warning("Unrecognized command line argument \"%s\"", arg.c_str());
		return false;
	}

	Common::UString::iterator start = arg.begin();
	++start;

	Common::UString value;
	if (*start == '-') {
		// Long option

		++start;

		Common::UString::iterator e = arg.findFirst('=');
		if (e != arg.end()) {
			key = arg.substr(start, e++);
			value = arg.substr(e, arg.end());
		} else
			key = arg.substr(start, arg.end());

	} else {
		// Short option

		key   = convertShortToLongOption(*start++);
		value = arg.substr(start, arg.end());
	}

	if (key.empty()) {
		warning("Unrecognized command line argument \"%s\"", arg.c_str());
		return false;
	}

	if (value.empty())
		return true;

	if (!setOption(key, value))
		return false;

	return true;
}
Пример #2
0
static bool parseOption(const char *arg, Common::UString &key) {
	if (arg[1] == '\0') {
		warning("Unrecognized command line argument \"%s\"", arg);
		return false;
	}

	Common::UString value;
	const char *start = arg + 1;
	if (*start == '-') {
		// Long option

		start++;

		const char *e = strchr(start, '=');
		if (e) {
			key = Common::UString(start, e - start);
			value = e + 1;
		} else
			key = start;

	} else {
		// Short option

		key   = convertShortToLongOption(*start);
		value = start + 1;
	}

	if (key.empty()) {
		warning("Unrecognized command line argument \"%s\"", arg);
		return false;
	}

	if (value.empty())
		return true;

	if (!setOption(key, value))
		return false;

	return true;
}