if (strlen(value) < 0)
return false;
- if (!parseIndices(value, &indices)) {
+ if (!parseIndices(value, &indices, true)) {
vlog.error(_("Invalid configuration specified for %s"), name);
return false;
}
int v = strtol(number.c_str(), NULL, 0);
- if (v <= 0) {
- vlog.error(_("The given monitor index(%s) is too small to be valid"), number.c_str());
+ if (v <= 0)
return false;
- }
- if (v > INT_MAX) {
- vlog.error(_("The given monitor index (%s) is too large to be valid"), number.c_str());
+ if (v > INT_MAX)
return false;
- }
indices->insert(v-1);
return true;
}
-bool MonitorIndicesParameter::parseIndices(const char* value, std::set<int> *indices)
+bool MonitorIndicesParameter::parseIndices(const char* value,
+ std::set<int> *indices,
+ bool complain)
{
char d;
std::string current;
current.push_back(d);
else if (d == ',') {
if (!parseNumber(current, indices)) {
- vlog.error(_("Invalid monitor index '%s'"), current.c_str());
+ if (complain)
+ vlog.error(_("Invalid monitor index '%s'"),
+ current.c_str());
return false;
}
current.clear();
} else {
- vlog.error(_("Unexpected character '%c'"), d);
+ if (complain)
+ vlog.error(_("Unexpected character '%c'"), d);
return false;
}
}
return true;
// Parsing anything we have left.
- if (!parseNumber(current, indices))
+ if (!parseNumber(current, indices)) {
+ if (complain)
+ vlog.error(_("Invalid monitor index '%s'"),
+ current.c_str());
return false;
+ }
return true;
}
int fltkIndex;
} Monitor;
- bool parseIndices(const char* value, std::set<int> *indices);
+ bool parseIndices(const char* value, std::set<int> *indices,
+ bool complain=false);
std::vector<MonitorIndicesParameter::Monitor> fetchMonitors();
static int compare(const void*, const void*);
};