diff options
Diffstat (limited to 'staging/hostlist/filterlist.cpp')
-rw-r--r-- | staging/hostlist/filterlist.cpp | 20 |
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; +} + |