improve getting-root-for-poor-gnomies-stuff a little as per pinotreeian

request, but not too much as per thiagian endorsement.

svn path=/trunk/extragear/sysadmin/partitionmanager/; revision=1053337
This commit is contained in:
Volker Lanz 2009-11-23 21:23:28 +00:00
parent d994440466
commit 414f396d43
1 changed files with 11 additions and 13 deletions

View File

@ -54,20 +54,18 @@ void unblockSigChild()
static QString suCommand()
{
QString rval = KStandardDirs().locate("exe", "kdesu");
KStandardDirs d;
const char* candidates[] = { "kdesu", "kdesudo", "gksudo", "gksu" };
QString rval;
if (rval.isEmpty() || !QFileInfo(rval).isExecutable())
rval = KStandardDirs().locate("exe", "kdesudo");
// is it even possible to install kdelibs without kdesu? well, won't hurt and you never
// know what distros and packagers do...
if (rval.isEmpty() || !QFileInfo(rval).isExecutable())
rval = KStandardDirs().locate("exe", "gksudo");
if (rval.isEmpty() || !QFileInfo(rval).isExecutable())
rval = KStandardDirs().locate("exe", "gksu");
for (quint32 i = 0; i < sizeof(candidates) / sizeof(candidates[0]); i++)
{
rval = d.locate("exe", candidates[i]);
if (QFileInfo(rval).isExecutable())
return rval;
}
return QFileInfo(rval).isExecutable() ? rval : QString();
return QString();
}
bool checkPermissions()
@ -85,7 +83,7 @@ bool checkPermissions()
if (!args.isEmpty())
args.removeFirst();
// arguments to partition manager must be _one_ argument to kdesu(do)
// arguments to partition manager must be _one_ argument to (kde|gk)su(do)
const QString suArgs = qApp->applicationFilePath() + args.join(" ") + " --dontsu";
if (QProcess::execute(suCommand(), QStringList() << suArgs) == 0)
return false;