diff options
author | Samuli Piippo <samuli.piippo@qt.io> | 2019-08-27 10:07:44 +0300 |
---|---|---|
committer | Samuli Piippo <samuli.piippo@qt.io> | 2019-08-28 09:49:43 +0000 |
commit | 474fa4b7aee62e704158d213d9e67eba74c69401 (patch) | |
tree | b4e83bb9c73b3f2bb5b87aaa0a8482a486b0da0c | |
parent | 5ab7fdbf0845c40418272bafa565295511055d3b (diff) |
Add option "environmentFile=..." that can be point to a separate
file containing environment variables in ENV=VALUE pairs, which
is normally used in /etc/default/ config files.
Change-Id: If21d6c260d93f1ada309eb4e917b30e9c2daa877
Reviewed-by: Kari Oikarinen <kari.oikarinen@qt.io>
-rw-r--r-- | main.cpp | 23 | ||||
-rw-r--r-- | process.h | 1 |
2 files changed, 24 insertions, 0 deletions
@@ -195,6 +195,25 @@ static int findFirstFreePort(Utils::PortList &range) return openServer(&s, range); } +bool readEnvs(Config *config) +{ + QFile f(config->envFile); + if (!f.open(QFile::ReadOnly)) { + fprintf(stderr, "Could not read environment file: %s\n", qPrintable(config->envFile)); + return false; + } + + while (!f.atEnd()) { + const auto line = f.readLine().simplified(); + if (!line.startsWith("#")) { + const auto index = line.indexOf('='); + config->env[line.left(index)] = line.mid(index + 1); + } + } + f.close(); + return true; +} + bool parseConfigFile(Config *config, const QString &fileName) { QFile f(fileName); @@ -227,6 +246,8 @@ bool parseConfigFile(Config *config, const QString &fileName) config->debugInterface = Config::PublicDebugInterface; else qWarning() << "Unkonwn value for debuginterface:" << value; + } else if (line.startsWith("environmentFile=")) { + config->envFile = line.mid(16).simplified(); } } f.close(); @@ -349,6 +370,8 @@ int main(int argc, char **argv) Config config; if (!parseConfigFile(&config, "/etc/appcontroller.conf")) fprintf(stderr, "Failed to parse config file.\n"); + if (!config.envFile.isEmpty()) + readEnvs(&config); while (!args.isEmpty()) { const QString arg(args.takeFirst()); @@ -42,6 +42,7 @@ struct Config { QMap<QString,QString> env; QStringList args; DebugInterface debugInterface; + QString envFile; }; class Process : public QObject |