Try to read system-wide ini files first if running as root

This commit is contained in:
Benjamin Jemlich 2012-01-14 22:41:33 +01:00
parent 6289931994
commit 7300338ca0
3 changed files with 30 additions and 0 deletions

View File

@ -320,3 +320,29 @@ void UnixMurmur::finalcap() {
cap_free(c);
#endif
}
const QString UnixMurmur::trySystemIniFiles(const QString& fname) {
QString file = fname;
if (!file.isEmpty())
return file;
#if defined(Q_OS_LINUX)
if (!bRoot)
return file;
QStringList inipaths;
inipaths << QLatin1String("/usr/local/etc/mumble-server.ini");
inipaths << QLatin1String("/usr/local/etc/murmur.ini");
inipaths << QLatin1String("/etc/mumble-server.ini");
inipaths << QLatin1String("/etc/murmur.ini");
foreach(const QString &f, inipaths) {
QFileInfo fi(f);
if (fi.exists() && fi.isReadable()) {
file = fi.absoluteFilePath();
break;
}
}
#endif
return file;
}

View File

@ -69,6 +69,7 @@ class UnixMurmur : public QObject {
void setuid();
void initialcap();
void finalcap();
const QString trySystemIniFiles(const QString& fname);
UnixMurmur();
~UnixMurmur();

View File

@ -282,6 +282,9 @@ int main(int argc, char **argv) {
}
}
#ifdef Q_OS_UNIX
inifile = unixhandler.trySystemIniFiles(inifile);
#endif
Meta::mp.read(inifile);