aboutsummaryrefslogtreecommitdiff
path: root/staging/hostlist/filterlist.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'staging/hostlist/filterlist.cpp')
-rw-r--r--staging/hostlist/filterlist.cpp20
1 files changed, 20 insertions, 0 deletions
diff --git a/staging/hostlist/filterlist.cpp b/staging/hostlist/filterlist.cpp
index 483ba7d..42be349 100644
--- a/staging/hostlist/filterlist.cpp
+++ b/staging/hostlist/filterlist.cpp
@@ -27,3 +27,23 @@ std::map<Filterlist::DomainHash, Filterlist::Rule> Filterlist::parseRule(const Q
}
return r;
}
+
+bool Filterlist::load(QIODevice &from)
+{
+ if(!from.isReadable() || !from.isTextModeEnabled()) {
+ return false;
+ }
+
+ while(from.bytesAvailable() > 0) {
+ const auto line = from.readLine(512).trimmed();
+ if(!line.isEmpty() && line.at(0) != '#') {
+ auto r = parseRule(line);
+ if(!r.empty()) {
+ qDebug("merging in %lu rules", r.size());
+ rules.merge(r);
+ }
+ }
+ }
+ return true;
+}
+