18 SemVer ver{ 0, 0, 0, nullopt };
20 int matched = sscanf(version_str.c_str(),
"%d.%d.%d", &ver.major, &ver.minor, &ver.patch);
22 throw std::invalid_argument(
"[-] (Updater) Invalid version format: " + version_str);
24 size_t rc_pos = version_str.find(
"-rc");
25 if (rc_pos != string::npos) {
26 if (rc_pos + 3 == version_str.size())
28 else if (version_str[rc_pos + 3] ==
'.') {
30 if (sscanf(version_str.c_str() + rc_pos,
"-rc.%d", &rc_num) == 1)
33 throw std::invalid_argument(
"[-] (Updater) Invalid RC format: " + version_str);
36 throw std::invalid_argument(
"[-] (Updater) Invalid RC format: " + version_str);