2022-10-12 14:30:24 +02:00
|
|
|
// Copyright (C) 2022 The Qt Company Ltd.
|
2022-12-21 10:12:09 +01:00
|
|
|
// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only WITH Qt-GPL-exception-1.0
|
2022-10-12 14:30:24 +02:00
|
|
|
|
|
|
|
|
#include <app/app_version.h>
|
2022-11-22 15:21:45 +01:00
|
|
|
|
2022-10-12 14:30:24 +02:00
|
|
|
#include <QString>
|
2022-11-22 15:21:45 +01:00
|
|
|
#include <QThread>
|
2022-10-12 14:30:24 +02:00
|
|
|
|
|
|
|
|
#ifdef Q_OS_WIN
|
|
|
|
|
#include <crtdbg.h>
|
|
|
|
|
#include <cstdlib>
|
|
|
|
|
#endif
|
|
|
|
|
|
|
|
|
|
const char CRASH_OPTION[] = "-crash";
|
|
|
|
|
const char RETURN_OPTION[] = "-return";
|
2022-11-22 15:21:45 +01:00
|
|
|
const char SLEEP_OPTION[] = "-sleep";
|
2022-10-12 14:30:24 +02:00
|
|
|
|
|
|
|
|
int main(int argc, char **argv)
|
|
|
|
|
{
|
|
|
|
|
#ifdef Q_OS_WIN
|
|
|
|
|
// avoid crash reporter dialog
|
|
|
|
|
_set_error_mode(_OUT_TO_STDERR);
|
|
|
|
|
_CrtSetReportMode(_CRT_ERROR, _CRTDBG_MODE_DEBUG);
|
|
|
|
|
#endif
|
|
|
|
|
|
|
|
|
|
if (argc > 1) {
|
|
|
|
|
const auto arg = QString::fromLocal8Bit(argv[1]);
|
|
|
|
|
if (arg == CRASH_OPTION) {
|
|
|
|
|
qFatal("The application has crashed purposefully!");
|
|
|
|
|
return 1;
|
|
|
|
|
}
|
|
|
|
|
if (arg == RETURN_OPTION) {
|
|
|
|
|
if (argc > 2) {
|
|
|
|
|
const auto retString = QString::fromLocal8Bit(argv[2]);
|
|
|
|
|
bool ok = false;
|
|
|
|
|
const int retVal = retString.toInt(&ok);
|
|
|
|
|
if (ok)
|
|
|
|
|
return retVal;
|
|
|
|
|
// not an int return value
|
|
|
|
|
return 1;
|
|
|
|
|
}
|
|
|
|
|
// lacking return value
|
|
|
|
|
return 1;
|
|
|
|
|
}
|
2022-11-22 15:21:45 +01:00
|
|
|
if (arg == SLEEP_OPTION) {
|
|
|
|
|
if (argc > 2) {
|
2023-02-01 00:01:46 +01:00
|
|
|
const auto msecsString = QString::fromLocal8Bit(argv[2]);
|
2022-11-22 15:21:45 +01:00
|
|
|
bool ok = false;
|
2023-02-01 00:01:46 +01:00
|
|
|
const int msecsVal = msecsString.toInt(&ok);
|
2022-11-22 15:21:45 +01:00
|
|
|
if (ok) {
|
2023-02-01 00:01:46 +01:00
|
|
|
QThread::msleep(msecsVal);
|
2022-11-22 15:21:45 +01:00
|
|
|
return 0;
|
|
|
|
|
}
|
|
|
|
|
// not an int return value
|
|
|
|
|
return 1;
|
|
|
|
|
}
|
|
|
|
|
// lacking return value
|
|
|
|
|
return 1;
|
|
|
|
|
}
|
2022-10-12 14:30:24 +02:00
|
|
|
}
|
|
|
|
|
// not recognized option
|
|
|
|
|
return 1;
|
|
|
|
|
}
|