MCPcopy Create free account
hub / github.com/PolyMC/PolyMC / read_legacy_release

Method read_legacy_release

libraries/systeminfo/src/distroutils.cpp:250–297  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

248}
249
250Sys::DistributionInfo Sys::read_legacy_release()
251{
252 struct checkEntry
253 {
254 QString file;
255 std::function<QString(const QString &)> extract_distro;
256 std::function<QString(const QString &)> extract_version;
257 };
258 QList<checkEntry> checks =
259 {
260 {"/etc/arch-release", [](const QString &){ return "arch";}, [](const QString &){ return "rolling";}},
261 {"/etc/slackware-version", &Sys::_extract_distribution, &Sys::_extract_version},
262 {QString(), &Sys::_extract_distribution, &Sys::_extract_version},
263 {"/etc/debian_version", [](const QString &){ return "debian";}, [](const QString & x){ return x;}},
264 };
265 for(auto & check: checks)
266 {
267 QStringList files;
268 if(check.file.isNull())
269 {
270 QDir etcDir("/etc");
271 etcDir.setNameFilters({"*-release"});
272 etcDir.setFilter(QDir::Files | QDir::NoDot | QDir::NoDotDot | QDir::Readable | QDir::Hidden);
273 files = etcDir.entryList();
274 }
275 else
276 {
277 files.append(check.file);
278 }
279 for (auto file : files)
280 {
281 QFile relfile(file);
282 if(!relfile.open(QIODevice::ReadOnly | QIODevice::Text))
283 continue;
284 QString contents = QString::fromUtf8(relfile.readLine()).trimmed();
285 QString dist = check.extract_distro(contents);
286 QString vers = check.extract_version(contents);
287 if(!dist.isEmpty())
288 {
289 Sys::DistributionInfo out;
290 out.distributionName = dist;
291 out.distributionVersion = vers;
292 return out;
293 }
294 }
295 }
296 return Sys::DistributionInfo();
297}
298

Callers

nothing calls this directly

Calls 6

QStringClass · 0.85
DistributionInfoClass · 0.85
appendMethod · 0.80
openMethod · 0.80
isEmptyMethod · 0.80
setFilterMethod · 0.45

Tested by

no test coverage detected