<table><tr><td style="">dfaure accepted this revision.<br />dfaure added a comment.<br />This revision is now accepted and ready to land.
</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/D6829" rel="noreferrer">View Revision</a></tr></table><br /><div><div><p>Oh I see, sorry for the bug in operator bool() in my suggested code. It reads strange that operator bool() returns true on failure, but .... yeah it's the most common use case for this class. Make sure to add a comment in that class docu, it's surely going to surprise someone some day, just like it just surprised me despite me writing the pseudo-code for it ;)<br />
Something like this...</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);">/**
* PrivilegeOperationReturnValue encapsulates the return value from execWithElevatedPrivilege() in a convenient way.
* Warning, this class will cast to a bool that is false on success and true on failure. This unusual solution allows to write
* kioslave code like this:
if (!dir.rmdir(itemPath)) {
if (auto ret = execWithElevatedPrivilege(RMDIR, itemPath)) {
if (!ret.wasCanceled()) {
error(KIO::ERR_CANNOT_DELETE, itemPath);
}
return false;
}
}
// directory successfully removed, continue with the next operation
*/</pre></div></div></div><br /><div><strong>BRANCH</strong><div><div>second</div></div></div><br /><div><strong>REVISION DETAIL</strong><div><a href="https://phabricator.kde.org/D6829" rel="noreferrer">https://phabricator.kde.org/D6829</a></div></div><br /><div><strong>To: </strong>chinmoyr, dfaure, Frameworks<br /><strong>Cc: </strong>Frameworks<br /></div>