-/**
-Removes any duplicate entries from a list, leaving only the first one. The
-order of other elements is preserved. O(n²) efficiency.
-*/
-void BuildInfo::unique(StringList &l)
-{
- StringList l2;
- for(StringList::iterator i=l.begin(); i!=l.end(); ++i)
- if(find(l2.begin(), l2.end(), *i)==l2.end())
- l2.push_back(*i);
- swap(l, l2);
+ for(StringList::iterator i=warnings.begin(); i!=warnings.end(); ++i)
+ {
+ bool flag = i->compare(0, 3, "no-");
+
+ string warn = (flag ? *i : i->substr(3));
+ string no_warn = "no-"+warn;
+
+ for(StringList::iterator j=i; j!=warnings.end();)
+ {
+ if(j!=i && (*j==warn || *j==no_warn))
+ {
+ flag = (*j==warn);
+ j = warnings.erase(j);
+ }
+ else
+ ++j;
+ }
+
+ *i = (flag ? warn : no_warn);
+ }