Skip to content

Commit 9188249

Browse files
author
Rainer Keller
committed
Parse additional config files
Some runtime settings need to be applied to the environment. Additional config files may be located in /tmp/b2qt/appcontroller.config.d or /var/lib/b2qt/appcontroller.config.d Task-number: QTEE-931 Change-Id: Id6c8c5695e6ca74351c7f81a66aa9a75a948792a Reviewed-by: Ulf Hermann <[email protected]>
1 parent 53ea608 commit 9188249

File tree

2 files changed

+39
-21
lines changed

2 files changed

+39
-21
lines changed

main.cpp

Lines changed: 38 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@
2020
#include "portlist.h"
2121
#include "perfprocesshandler.h"
2222
#include <QCoreApplication>
23+
#include <QDir>
2324
#include <QTcpServer>
2425
#include <QProcess>
2526
#include <errno.h>
@@ -160,21 +161,13 @@ static int findFirstFreePort(Utils::PortList &range)
160161
return openServer(&s, range);
161162
}
162163

163-
static Config parseConfigFile()
164+
static bool parseConfigFile(Config *config, const QString &fileName)
164165
{
165-
Config config;
166-
config.base = config.platform = QLatin1String("unknown");
167-
config.debugInterface = Config::LocalDebugInterface;
168-
169-
#ifdef Q_OS_ANDROID
170-
QFile f("/system/bin/appcontroller.conf");
171-
#else
172-
QFile f("/etc/appcontroller.conf");
173-
#endif
166+
QFile f(fileName);
174167

175168
if (!f.open(QFile::ReadOnly)) {
176-
fprintf(stderr, "Could not read config file.\n");
177-
return config;
169+
fprintf(stderr, "Could not read config file: %s\n", qPrintable(fileName));
170+
return false;
178171
}
179172

180173
while (!f.atEnd()) {
@@ -185,27 +178,44 @@ static Config parseConfigFile()
185178
if (index < 2) {
186179
// ignore
187180
} else
188-
config.env[sub.left(index)] = sub.mid(index+1);
181+
config->env[sub.left(index)] = sub.mid(index+1);
189182
} else if (line.startsWith("append=")) {
190-
config.args += line.mid(7).simplified();
183+
config->args += line.mid(7).simplified();
191184
} else if (line.startsWith("base=")) {
192-
config.base = line.mid(5).simplified();
185+
config->base = line.mid(5).simplified();
193186
} else if (line.startsWith("platform=")) {
194-
config.platform = line.mid(9).simplified();
187+
config->platform = line.mid(9).simplified();
195188
} else if (line.startsWith("debugInterface=")) {
196189
const QString value = line.mid(15).simplified();
197190
if (value == "local")
198-
config.debugInterface = Config::LocalDebugInterface;
191+
config->debugInterface = Config::LocalDebugInterface;
199192
else if (value == "public")
200-
config.debugInterface = Config::PublicDebugInterface;
193+
config->debugInterface = Config::PublicDebugInterface;
201194
else
202195
qWarning() << "Unkonwn value for debuginterface:" << value;
203196
}
204197
}
205198
f.close();
206-
return config;
199+
return true;
207200
}
208201

202+
static bool parseConfigFileDirectory(Config *config, const QString &dirName)
203+
{
204+
QDir d(dirName);
205+
if (d.exists()) {
206+
foreach (const QString &fileName, d.entryList(QDir::Files)) {
207+
const QString file(d.absoluteFilePath(fileName));
208+
209+
if (!parseConfigFile(config, file)) {
210+
fprintf(stderr, "Failed to parse config file: %s\n", qPrintable(file));
211+
return false;
212+
}
213+
}
214+
}
215+
return true;
216+
}
217+
218+
209219
static bool removeDefault()
210220
{
211221
if (QFile::exists(B2QT_PREFIX)) {
@@ -283,7 +293,15 @@ int main(int argc, char **argv)
283293
return 1;
284294
}
285295

286-
Config config = parseConfigFile();
296+
Config config;
297+
if (!parseConfigFile(&config, "/etc/appcontroller.conf")) {
298+
fprintf(stderr, "Failed to parse config file.\n");
299+
return 1;
300+
}
301+
302+
// Parse temporary config files
303+
parseConfigFileDirectory(&config, "/var/lib/b2qt/appcontroller.conf.d");
304+
parseConfigFileDirectory(&config, "/tmp/b2qt/appcontroller.conf.d");
287305

288306
while (!args.isEmpty()) {
289307
const QString arg(args.takeFirst());

process.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -37,7 +37,7 @@ struct Config {
3737
PublicDebugInterface
3838
};
3939

40-
Config() : flags(0) { }
40+
Config() : platform("unknown"), flags(0), debugInterface(LocalDebugInterface) { }
4141

4242
QString base;
4343
QString platform;

0 commit comments

Comments
 (0)