120 lines
2.9 KiB
C++
120 lines
2.9 KiB
C++
|
// SPDX-FileCopyrightText: 2022 Rachel Powers <508861+Ryex@users.noreply.github.com>
|
||
|
//
|
||
|
// SPDX-License-Identifier: GPL-3.0-only
|
||
|
|
||
|
/*
|
||
|
* Prism Launcher - Minecraft Launcher
|
||
|
* Copyright (C) 2022 Rachel Powers <508861+Ryex@users.noreply.github.com>
|
||
|
*
|
||
|
* This program is free software: you can redistribute it and/or modify
|
||
|
* it under the terms of the GNU General Public License as published by
|
||
|
* the Free Software Foundation, version 3.
|
||
|
*
|
||
|
* This program is distributed in the hope that it will be useful,
|
||
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||
|
* GNU General Public License for more details.
|
||
|
*
|
||
|
* You should have received a copy of the GNU General Public License
|
||
|
* along with this program. If not, see <https://www.gnu.org/licenses/>.
|
||
|
*
|
||
|
*/
|
||
|
|
||
|
#include "FileLink.h"
|
||
|
#include "BuildConfig.h"
|
||
|
|
||
|
|
||
|
#include <iostream>
|
||
|
|
||
|
#include <QAccessible>
|
||
|
#include <QCommandLineParser>
|
||
|
|
||
|
#include <QDebug>
|
||
|
|
||
|
|
||
|
#include <FileSystem.h>
|
||
|
#include <DesktopServices.h>
|
||
|
|
||
|
#include <sys.h>
|
||
|
|
||
|
#if defined Q_OS_WIN32
|
||
|
#ifndef WIN32_LEAN_AND_MEAN
|
||
|
#define WIN32_LEAN_AND_MEAN
|
||
|
#endif
|
||
|
#include <windows.h>
|
||
|
#include <stdio.h>
|
||
|
#endif
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
FileLinkApp::FileLinkApp(int &argc, char **argv) : QCoreApplication(argc, argv)
|
||
|
{
|
||
|
#if defined Q_OS_WIN32
|
||
|
// attach the parent console
|
||
|
if(AttachConsole(ATTACH_PARENT_PROCESS))
|
||
|
{
|
||
|
// if attach succeeds, reopen and sync all the i/o
|
||
|
if(freopen("CON", "w", stdout))
|
||
|
{
|
||
|
std::cout.sync_with_stdio();
|
||
|
}
|
||
|
if(freopen("CON", "w", stderr))
|
||
|
{
|
||
|
std::cerr.sync_with_stdio();
|
||
|
}
|
||
|
if(freopen("CON", "r", stdin))
|
||
|
{
|
||
|
std::cin.sync_with_stdio();
|
||
|
}
|
||
|
auto out = GetStdHandle (STD_OUTPUT_HANDLE);
|
||
|
DWORD written;
|
||
|
const char * endline = "\n";
|
||
|
WriteConsole(out, endline, strlen(endline), &written, NULL);
|
||
|
consoleAttached = true;
|
||
|
}
|
||
|
#endif
|
||
|
setOrganizationName(BuildConfig.LAUNCHER_NAME);
|
||
|
setOrganizationDomain(BuildConfig.LAUNCHER_DOMAIN);
|
||
|
setApplicationName(BuildConfig.LAUNCHER_NAME + "FileLink");
|
||
|
setApplicationVersion(BuildConfig.printableVersionString() + "\n" + BuildConfig.GIT_COMMIT);
|
||
|
|
||
|
// Commandline parsing
|
||
|
QCommandLineParser parser;
|
||
|
parser.setApplicationDescription(QObject::tr("a batch MKLINK program for windows to be useed with prismlauncher"));
|
||
|
|
||
|
parser.addOptions({
|
||
|
|
||
|
});
|
||
|
parser.addHelpOption();
|
||
|
parser.addVersionOption();
|
||
|
|
||
|
parser.process(arguments());
|
||
|
|
||
|
qDebug() << "link program launched";
|
||
|
|
||
|
}
|
||
|
|
||
|
|
||
|
FileLinkApp::~FileLinkApp()
|
||
|
{
|
||
|
qDebug() << "link program shutting down";
|
||
|
// Shut down logger by setting the logger function to nothing
|
||
|
qInstallMessageHandler(nullptr);
|
||
|
|
||
|
#if defined Q_OS_WIN32
|
||
|
// Detach from Windows console
|
||
|
if(consoleAttached)
|
||
|
{
|
||
|
fclose(stdout);
|
||
|
fclose(stdin);
|
||
|
fclose(stderr);
|
||
|
FreeConsole();
|
||
|
}
|
||
|
#endif
|
||
|
}
|
||
|
|
||
|
|
||
|
|
||
|
|