Proper Linux command line parsing

This commit is contained in:
David Rowe 2020-06-17 08:55:54 +12:00
parent 350b5f217e
commit ab4ff1e7aa

View file

@ -18,7 +18,6 @@
#include <QtGui/QInputMethodEvent> #include <QtGui/QInputMethodEvent>
#include <QtQuick/QQuickWindow> #include <QtQuick/QQuickWindow>
#include <PathUtils.h>
#include <OffscreenUi.h> #include <OffscreenUi.h>
#include <controllers/Pose.h> #include <controllers/Pose.h>
#include <NumericalConstants.h> #include <NumericalConstants.h>
@ -408,14 +407,22 @@ void showMinSpecWarning() {
qFatal("Unable to create overlay"); qFatal("Unable to create overlay");
} }
// Needed here for PathUtils
#ifdef Q_OS_LINUX #ifdef Q_OS_LINUX
//char cmdline[4096]; QFile cmdlineFile("/proc/self/cmdline");
//FILE* fp = fopen("/proc/self/cmdline", "r"); if (!cmdlineFile.open(QIODevice::ReadOnly)) {
//fgets(cmdline, sizeof cmdline, fp); qFatal("Unable to open /proc/self/cmdline");
//fclose(fp); }
//int __argc = 1;
//char* __argv[1] = { cmdline }; auto contents = cmdlineFile.readAll();
auto arguments = contents.split('\0');
arguments.pop_back(); // Last element is empty.
cmdlineFile.close();
int __argc = arguments.count();
char** __argv = new char* [__argc];
for (int i = 0; i < __argc; i++) {
__argv[i] = arguments[i].data();
}
#endif #endif
QCoreApplication miniApp(__argc, __argv); QCoreApplication miniApp(__argc, __argv);