<table><tr><td style="">adridg created this revision.<br />adridg added a reviewer: sitter.<br />Herald added a project: Frameworks.<br />Herald added a subscriber: kde-frameworks-devel.<br />adridg requested review of this revision.
</td><a style="text-decoration: none; padding: 4px 8px; margin: 0 8px 8px; float: right; color: #464C5C; font-weight: bold; border-radius: 3px; background-color: #F7F7F9; background-image: linear-gradient(to bottom,#fff,#f1f0f1); display: inline-block; border: 1px solid rgba(71,87,120,.2);" href="https://phabricator.kde.org/D21305">View Revision</a></tr></table><br /><div><strong>REVISION SUMMARY</strong><div><ul class="remarkup-list">
<li class="remarkup-list-item">After much hemming and hawing we ended up with /usr/local/etc/os-release, which isn't one of the standard paths (according to freedesktop.org) so in spite of us <strong>having</strong> the file, not all software that looks for it will find it. Patch in the correct path.</li>
<li class="remarkup-list-item">Patching in the correct path in the original code inserted #ifdefs that interact really badly with the existing code-layout.</li>
<li class="remarkup-list-item">Switch to iterating over a constant list; with Clang and -O3 this yields slightly smaller code compared to the original. This code is also much easier to #ifdef for specific needs (e.g. for NetBSD and OpenBSD).</li>
</ul></div></div><br /><div><strong>TEST PLAN</strong><div><ul class="remarkup-list">
<li class="remarkup-list-item">Included in downstream packaging.</li>
<li class="remarkup-list-item">Test for functionality: <tt style="background: #ebebeb; font-size: 13px;">`</tt></li>
</ul>

<p>#include <kosrelease.h><br />
#include <QDebug></p>

<p>static void derp(const QString& s)<br />
{</p>

<div class="remarkup-code-block" style="margin: 12px 0;" data-code-lang="text" data-sigil="remarkup-code-block"><pre class="remarkup-code" style="font: 11px/15px "Menlo", "Consolas", "Monaco", monospace; padding: 12px; margin: 0; background: rgba(71, 87, 120, 0.08);">qDebug() << s;

KOSRelease r(s);
qDebug() << "  name" << r.name() 
    << "\n  version" << r.version();</pre></div>

<p>}</p>

<p>int main(int argc, char **argv)<br />
{</p>

<div class="remarkup-code-block" style="margin: 12px 0;" data-code-lang="text" data-sigil="remarkup-code-block"><pre class="remarkup-code" style="font: 11px/15px "Menlo", "Consolas", "Monaco", monospace; padding: 12px; margin: 0; background: rgba(71, 87, 120, 0.08);">derp(QString());
derp("/usr/local/etc/os-release");

return 0;</pre></div>

<p>}</p>

<div class="remarkup-code-block" style="margin: 12px 0;" data-code-lang="text" data-sigil="remarkup-code-block"><pre class="remarkup-code" style="font: 11px/15px "Menlo", "Consolas", "Monaco", monospace; padding: 12px; margin: 0; background: rgba(71, 87, 120, 0.08);">- Test for code size:</pre></div>

<p>#include <QtCore/QFile><br />
#include <QtCore/QString></p>

<p>QString defaultFilePath()<br />
{<br />
#ifdef ONE</p>

<div class="remarkup-code-block" style="margin: 12px 0;" data-code-lang="text" data-sigil="remarkup-code-block"><pre class="remarkup-code" style="font: 11px/15px "Menlo", "Consolas", "Monaco", monospace; padding: 12px; margin: 0; background: rgba(71, 87, 120, 0.08);">if (QFile::exists(QStringLiteral("/etc/os-release"))) {
    return QStringLiteral("/etc/os-release");
} else if (QFile::exists(QStringLiteral("/usr/lib/os-release"))) {
    return QStringLiteral("/usr/lib/os-release");
} else {
    return QString();
}</pre></div>

<p>#endif<br />
#ifdef TWO</p>

<div class="remarkup-code-block" style="margin: 12px 0;" data-code-lang="text" data-sigil="remarkup-code-block"><pre class="remarkup-code" style="font: 11px/15px "Menlo", "Consolas", "Monaco", monospace; padding: 12px; margin: 0; background: rgba(71, 87, 120, 0.08);">for (const auto& path : { 
    QStringLiteral("/etc/os-release"),
    QStringLiteral("/usr/lib/os-release")
    }) {
    if (QFile::exists(path)) {
        return path;
    }
}
return QString();</pre></div>

<p>#endif<br />
}</p>

<div class="remarkup-code-block" style="margin: 12px 0;" data-code-lang="text" data-sigil="remarkup-code-block"><pre class="remarkup-code" style="font: 11px/15px "Menlo", "Consolas", "Monaco", monospace; padding: 12px; margin: 0; background: rgba(71, 87, 120, 0.08);"></pre></div></div></div><br /><div><strong>REPOSITORY</strong><div><div>R244 KCoreAddons</div></div></div><br /><div><strong>BRANCH</strong><div><div>master</div></div></div><br /><div><strong>REVISION DETAIL</strong><div><a href="https://phabricator.kde.org/D21305">https://phabricator.kde.org/D21305</a></div></div><br /><div><strong>AFFECTED FILES</strong><div><div>src/lib/util/kosrelease.cpp</div></div></div><br /><div><strong>To: </strong>adridg, sitter<br /><strong>Cc: </strong>kde-frameworks-devel, michaelh, ngraham, bruns<br /></div>