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; }
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; }