summaryrefslogtreecommitdiffstats
path: root/depends/util/src
diff options
context:
space:
mode:
Diffstat (limited to 'depends/util/src')
-rw-r--r--depends/util/src/cmdutils.cpp486
-rw-r--r--depends/util/src/modutils.cpp141
-rw-r--r--depends/util/src/pathutils.cpp268
-rw-r--r--depends/util/src/userutils.cpp126
4 files changed, 0 insertions, 1021 deletions
diff --git a/depends/util/src/cmdutils.cpp b/depends/util/src/cmdutils.cpp
deleted file mode 100644
index ab4e6229..00000000
--- a/depends/util/src/cmdutils.cpp
+++ /dev/null
@@ -1,486 +0,0 @@
-/* Copyright 2013-2015 MultiMC Contributors
- *
- * Authors: Orochimarufan <orochimarufan.x3@gmail.com>
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-#include "include/cmdutils.h"
-
-/**
- * @file libutil/src/cmdutils.cpp
- */
-
-namespace Util
-{
-namespace Commandline
-{
-
-// commandline splitter
-QStringList splitArgs(QString args)
-{
- QStringList argv;
- QString current;
- bool escape = false;
- QChar inquotes;
- for (int i = 0; i < args.length(); i++)
- {
- QChar cchar = args.at(i);
-
- // \ escaped
- if (escape)
- {
- current += cchar;
- escape = false;
- // in "quotes"
- }
- else if (!inquotes.isNull())
- {
- if (cchar == 0x5C)
- escape = true;
- else if (cchar == inquotes)
- inquotes = 0;
- else
- current += cchar;
- // otherwise
- }
- else
- {
- if (cchar == 0x20)
- {
- if (!current.isEmpty())
- {
- argv << current;
- current.clear();
- }
- }
- else if (cchar == 0x22 || cchar == 0x27)
- inquotes = cchar;
- else
- current += cchar;
- }
- }
- if (!current.isEmpty())
- argv << current;
- return argv;
-}
-
-Parser::Parser(FlagStyle::Enum flagStyle, ArgumentStyle::Enum argStyle)
-{
- m_flagStyle = flagStyle;
- m_argStyle = argStyle;
-}
-
-// styles setter/getter
-void Parser::setArgumentStyle(ArgumentStyle::Enum style)
-{
- m_argStyle = style;
-}
-ArgumentStyle::Enum Parser::argumentStyle()
-{
- return m_argStyle;
-}
-
-void Parser::setFlagStyle(FlagStyle::Enum style)
-{
- m_flagStyle = style;
-}
-FlagStyle::Enum Parser::flagStyle()
-{
- return m_flagStyle;
-}
-
-// setup methods
-void Parser::addSwitch(QString name, bool def)
-{
- if (m_params.contains(name))
- throw "Name not unique";
-
- OptionDef *param = new OptionDef;
- param->type = otSwitch;
- param->name = name;
- param->metavar = QString("<%1>").arg(name);
- param->def = def;
-
- m_options[name] = param;
- m_params[name] = (CommonDef *)param;
- m_optionList.append(param);
-}
-
-void Parser::addOption(QString name, QVariant def)
-{
- if (m_params.contains(name))
- throw "Name not unique";
-
- OptionDef *param = new OptionDef;
- param->type = otOption;
- param->name = name;
- param->metavar = QString("<%1>").arg(name);
- param->def = def;
-
- m_options[name] = param;
- m_params[name] = (CommonDef *)param;
- m_optionList.append(param);
-}
-
-void Parser::addArgument(QString name, bool required, QVariant def)
-{
- if (m_params.contains(name))
- throw "Name not unique";
-
- PositionalDef *param = new PositionalDef;
- param->name = name;
- param->def = def;
- param->required = required;
- param->metavar = name;
-
- m_positionals.append(param);
- m_params[name] = (CommonDef *)param;
-}
-
-void Parser::addDocumentation(QString name, QString doc, QString metavar)
-{
- if (!m_params.contains(name))
- throw "Name does not exist";
-
- CommonDef *param = m_params[name];
- param->doc = doc;
- if (!metavar.isNull())
- param->metavar = metavar;
-}
-
-void Parser::addShortOpt(QString name, QChar flag)
-{
- if (!m_params.contains(name))
- throw "Name does not exist";
- if (!m_options.contains(name))
- throw "Name is not an Option or Swtich";
-
- OptionDef *param = m_options[name];
- m_flags[flag] = param;
- param->flag = flag;
-}
-
-// help methods
-QString Parser::compileHelp(QString progName, int helpIndent, bool useFlags)
-{
- QStringList help;
- help << compileUsage(progName, useFlags) << "\r\n";
-
- // positionals
- if (!m_positionals.isEmpty())
- {
- help << "\r\n";
- help << "Positional arguments:\r\n";
- QListIterator<PositionalDef *> it2(m_positionals);
- while (it2.hasNext())
- {
- PositionalDef *param = it2.next();
- help << " " << param->metavar;
- help << " " << QString(helpIndent - param->metavar.length() - 1, ' ');
- help << param->doc << "\r\n";
- }
- }
-
- // Options
- if (!m_optionList.isEmpty())
- {
- help << "\r\n";
- QString optPrefix, flagPrefix;
- getPrefix(optPrefix, flagPrefix);
-
- help << "Options & Switches:\r\n";
- QListIterator<OptionDef *> it(m_optionList);
- while (it.hasNext())
- {
- OptionDef *option = it.next();
- help << " ";
- int nameLength = optPrefix.length() + option->name.length();
- if (!option->flag.isNull())
- {
- nameLength += 3 + flagPrefix.length();
- help << flagPrefix << option->flag << ", ";
- }
- help << optPrefix << option->name;
- if (option->type == otOption)
- {
- QString arg = QString("%1%2").arg(
- ((m_argStyle == ArgumentStyle::Equals) ? "=" : " "), option->metavar);
- nameLength += arg.length();
- help << arg;
- }
- help << " " << QString(helpIndent - nameLength - 1, ' ');
- help << option->doc << "\r\n";
- }
- }
-
- return help.join("");
-}
-
-QString Parser::compileUsage(QString progName, bool useFlags)
-{
- QStringList usage;
- usage << "Usage: " << progName;
-
- QString optPrefix, flagPrefix;
- getPrefix(optPrefix, flagPrefix);
-
- // options
- QListIterator<OptionDef *> it(m_optionList);
- while (it.hasNext())
- {
- OptionDef *option = it.next();
- usage << " [";
- if (!option->flag.isNull() && useFlags)
- usage << flagPrefix << option->flag;
- else
- usage << optPrefix << option->name;
- if (option->type == otOption)
- usage << ((m_argStyle == ArgumentStyle::Equals) ? "=" : " ") << option->metavar;
- usage << "]";
- }
-
- // arguments
- QListIterator<PositionalDef *> it2(m_positionals);
- while (it2.hasNext())
- {
- PositionalDef *param = it2.next();
- usage << " " << (param->required ? "<" : "[");
- usage << param->metavar;
- usage << (param->required ? ">" : "]");
- }
-
- return usage.join("");
-}
-
-// parsing
-QHash<QString, QVariant> Parser::parse(QStringList argv)
-{
- QHash<QString, QVariant> map;
-
- QStringListIterator it(argv);
- QString programName = it.next();
-
- QString optionPrefix;
- QString flagPrefix;
- QListIterator<PositionalDef *> positionals(m_positionals);
- QStringList expecting;
-
- getPrefix(optionPrefix, flagPrefix);
-
- while (it.hasNext())
- {
- QString arg = it.next();
-
- if (!expecting.isEmpty())
- // we were expecting an argument
- {
- QString name = expecting.first();
-/*
- if (map.contains(name))
- throw ParsingError(
- QString("Option %2%1 was given multiple times").arg(name, optionPrefix));
-*/
- map[name] = QVariant(arg);
-
- expecting.removeFirst();
- continue;
- }
-
- if (arg.startsWith(optionPrefix))
- // we have an option
- {
- // qDebug("Found option %s", qPrintable(arg));
-
- QString name = arg.mid(optionPrefix.length());
- QString equals;
-
- if ((m_argStyle == ArgumentStyle::Equals ||
- m_argStyle == ArgumentStyle::SpaceAndEquals) &&
- name.contains("="))
- {
- int i = name.indexOf("=");
- equals = name.mid(i + 1);
- name = name.left(i);
- }
-
- if (m_options.contains(name))
- {
- /*
- if (map.contains(name))
- throw ParsingError(QString("Option %2%1 was given multiple times")
- .arg(name, optionPrefix));
-*/
- OptionDef *option = m_options[name];
- if (option->type == otSwitch)
- map[name] = true;
- else // if (option->type == otOption)
- {
- if (m_argStyle == ArgumentStyle::Space)
- expecting.append(name);
- else if (!equals.isNull())
- map[name] = equals;
- else if (m_argStyle == ArgumentStyle::SpaceAndEquals)
- expecting.append(name);
- else
- throw ParsingError(QString("Option %2%1 reqires an argument.")
- .arg(name, optionPrefix));
- }
-
- continue;
- }
-
- throw ParsingError(QString("Unknown Option %2%1").arg(name, optionPrefix));
- }
-
- if (arg.startsWith(flagPrefix))
- // we have (a) flag(s)
- {
- // qDebug("Found flags %s", qPrintable(arg));
-
- QString flags = arg.mid(flagPrefix.length());
- QString equals;
-
- if ((m_argStyle == ArgumentStyle::Equals ||
- m_argStyle == ArgumentStyle::SpaceAndEquals) &&
- flags.contains("="))
- {
- int i = flags.indexOf("=");
- equals = flags.mid(i + 1);
- flags = flags.left(i);
- }
-
- for (int i = 0; i < flags.length(); i++)
- {
- QChar flag = flags.at(i);
-
- if (!m_flags.contains(flag))
- throw ParsingError(QString("Unknown flag %2%1").arg(flag, flagPrefix));
-
- OptionDef *option = m_flags[flag];
-/*
- if (map.contains(option->name))
- throw ParsingError(QString("Option %2%1 was given multiple times")
- .arg(option->name, optionPrefix));
-*/
- if (option->type == otSwitch)
- map[option->name] = true;
- else // if (option->type == otOption)
- {
- if (m_argStyle == ArgumentStyle::Space)
- expecting.append(option->name);
- else if (!equals.isNull())
- if (i == flags.length() - 1)
- map[option->name] = equals;
- else
- throw ParsingError(QString("Flag %4%2 of Argument-requiring Option "
- "%1 not last flag in %4%3")
- .arg(option->name, flag, flags, flagPrefix));
- else if (m_argStyle == ArgumentStyle::SpaceAndEquals)
- expecting.append(option->name);
- else
- throw ParsingError(QString("Option %1 reqires an argument. (flag %3%2)")
- .arg(option->name, flag, flagPrefix));
- }
- }
-
- continue;
- }
-
- // must be a positional argument
- if (!positionals.hasNext())
- throw ParsingError(QString("Don't know what to do with '%1'").arg(arg));
-
- PositionalDef *param = positionals.next();
-
- map[param->name] = arg;
- }
-
- // check if we're missing something
- if (!expecting.isEmpty())
- throw ParsingError(QString("Was still expecting arguments for %2%1").arg(
- expecting.join(QString(", ") + optionPrefix), optionPrefix));
-
- while (positionals.hasNext())
- {
- PositionalDef *param = positionals.next();
- if (param->required)
- throw ParsingError(
- QString("Missing required positional argument '%1'").arg(param->name));
- else
- map[param->name] = param->def;
- }
-
- // fill out gaps
- QListIterator<OptionDef *> iter(m_optionList);
- while (iter.hasNext())
- {
- OptionDef *option = iter.next();
- if (!map.contains(option->name))
- map[option->name] = option->def;
- }
-
- return map;
-}
-
-// clear defs
-void Parser::clear()
-{
- m_flags.clear();
- m_params.clear();
- m_options.clear();
-
- QMutableListIterator<OptionDef *> it(m_optionList);
- while (it.hasNext())
- {
- OptionDef *option = it.next();
- it.remove();
- delete option;
- }
-
- QMutableListIterator<PositionalDef *> it2(m_positionals);
- while (it2.hasNext())
- {
- PositionalDef *arg = it2.next();
- it2.remove();
- delete arg;
- }
-}
-
-// Destructor
-Parser::~Parser()
-{
- clear();
-}
-
-// getPrefix
-void Parser::getPrefix(QString &opt, QString &flag)
-{
- if (m_flagStyle == FlagStyle::Windows)
- opt = flag = "/";
- else if (m_flagStyle == FlagStyle::Unix)
- opt = flag = "-";
- // else if (m_flagStyle == FlagStyle::GNU)
- else
- {
- opt = "--";
- flag = "-";
- }
-}
-
-// ParsingError
-ParsingError::ParsingError(const QString &what) : std::runtime_error(what.toStdString())
-{
-}
-}
-}
diff --git a/depends/util/src/modutils.cpp b/depends/util/src/modutils.cpp
deleted file mode 100644
index 5f89eacd..00000000
--- a/depends/util/src/modutils.cpp
+++ /dev/null
@@ -1,141 +0,0 @@
-#include "include/modutils.h"
-
-#include <QStringList>
-#include <QUrl>
-#include <QRegularExpression>
-#include <QRegularExpressionMatch>
-
-Util::Version::Version(const QString &str) : m_string(str)
-{
- parse();
-}
-
-bool Util::Version::operator<(const Version &other) const
-{
- const int size = qMax(m_sections.size(), other.m_sections.size());
- for (int i = 0; i < size; ++i)
- {
- const Section sec1 = (i >= m_sections.size()) ? Section("0") : m_sections.at(i);
- const Section sec2 =
- (i >= other.m_sections.size()) ? Section("0") : other.m_sections.at(i);
- if (sec1 != sec2)
- {
- return sec1 < sec2;
- }
- }
-
- return false;
-}
-bool Util::Version::operator<=(const Util::Version &other) const
-{
- return *this < other || *this == other;
-}
-bool Util::Version::operator>(const Version &other) const
-{
- const int size = qMax(m_sections.size(), other.m_sections.size());
- for (int i = 0; i < size; ++i)
- {
- const Section sec1 = (i >= m_sections.size()) ? Section("0") : m_sections.at(i);
- const Section sec2 =
- (i >= other.m_sections.size()) ? Section("0") : other.m_sections.at(i);
- if (sec1 != sec2)
- {
- return sec1 > sec2;
- }
- }
-
- return false;
-}
-bool Util::Version::operator>=(const Version &other) const
-{
- return *this > other || *this == other;
-}
-bool Util::Version::operator==(const Version &other) const
-{
- const int size = qMax(m_sections.size(), other.m_sections.size());
- for (int i = 0; i < size; ++i)
- {
- const Section sec1 = (i >= m_sections.size()) ? Section("0") : m_sections.at(i);
- const Section sec2 =
- (i >= other.m_sections.size()) ? Section("0") : other.m_sections.at(i);
- if (sec1 != sec2)
- {
- return false;
- }
- }
-
- return true;
-}
-bool Util::Version::operator!=(const Version &other) const
-{
- return !operator==(other);
-}
-
-void Util::Version::parse()
-{
- m_sections.clear();
-
- QStringList parts = m_string.split('.');
-
- for (const auto part : parts)
- {
- m_sections.append(Section(part));
- }
-}
-
-bool Util::versionIsInInterval(const QString &version, const QString &interval)
-{
- return versionIsInInterval(Util::Version(version), interval);
-}
-bool Util::versionIsInInterval(const Version &version, const QString &interval)
-{
- if (interval.isEmpty() || version.toString() == interval)
- {
- return true;
- }
-
- // Interval notation is used
- QRegularExpression exp(
- "(?<start>[\\[\\]\\(\\)])(?<bottom>.*?)(,(?<top>.*?))?(?<end>[\\[\\]\\(\\)]),?");
- QRegularExpressionMatch match = exp.match(interval);
- if (match.hasMatch())
- {
- const QChar start = match.captured("start").at(0);
- const QChar end = match.captured("end").at(0);
- const QString bottom = match.captured("bottom");
- const QString top = match.captured("top");
-
- // check if in range (bottom)
- if (!bottom.isEmpty())
- {
- const auto bottomVersion = Util::Version(bottom);
- if ((start == '[') && !(version >= bottomVersion))
- {
- return false;
- }
- else if ((start == '(') && !(version > bottomVersion))
- {
- return false;
- }
- }
-
- // check if in range (top)
- if (!top.isEmpty())
- {
- const auto topVersion = Util::Version(top);
- if ((end == ']') && !(version <= topVersion))
- {
- return false;
- }
- else if ((end == ')') && !(version < topVersion))
- {
- return false;
- }
- }
-
- return true;
- }
-
- return false;
-}
-
diff --git a/depends/util/src/pathutils.cpp b/depends/util/src/pathutils.cpp
deleted file mode 100644
index af1843ba..00000000
--- a/depends/util/src/pathutils.cpp
+++ /dev/null
@@ -1,268 +0,0 @@
-/* Copyright 2013-2015 MultiMC Contributors
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-#include "include/pathutils.h"
-
-#include <QFileInfo>
-#include <QDir>
-#include <QDesktopServices>
-#include <QUrl>
-#include <QDebug>
-
-QString PathCombine(QString path1, QString path2)
-{
- if(!path1.size())
- return path2;
- if(!path2.size())
- return path1;
- return QDir::cleanPath(path1 + QDir::separator() + path2);
-}
-
-QString PathCombine(QString path1, QString path2, QString path3)
-{
- return PathCombine(PathCombine(path1, path2), path3);
-}
-
-QString AbsolutePath(QString path)
-{
- return QFileInfo(path).absolutePath();
-}
-
-QString ResolveExecutable(QString path)
-{
- if (path.isEmpty())
- {
- return QString();
- }
- if(!path.contains('/'))
- {
- path = QStandardPaths::findExecutable(path);
- }
- QFileInfo pathInfo(path);
- if(!pathInfo.exists() || !pathInfo.isExecutable())
- {
- return QString();
- }
- return pathInfo.absoluteFilePath();
-}
-
-/**
- * Normalize path
- *
- * Any paths inside the current directory will be normalized to relative paths (to current)
- * Other paths will be made absolute
- */
-QString NormalizePath(QString path)
-{
- QDir a = QDir::currentPath();
- QString currentAbsolute = a.absolutePath();
-
- QDir b(path);
- QString newAbsolute = b.absolutePath();
-
- if (newAbsolute.startsWith(currentAbsolute))
- {
- return a.relativeFilePath(newAbsolute);
- }
- else
- {
- return newAbsolute;
- }
-}
-
-QString badFilenameChars = "\"\\/?<>:*|!";
-
-QString RemoveInvalidFilenameChars(QString string, QChar replaceWith)
-{
- for (int i = 0; i < string.length(); i++)
- {
- if (badFilenameChars.contains(string[i]))
- {
- string[i] = replaceWith;
- }
- }
- return string;
-}
-
-QString DirNameFromString(QString string, QString inDir)
-{
- int num = 0;
- QString baseName = RemoveInvalidFilenameChars(string, '-');
- QString dirName;
- do
- {
- if(num == 0)
- {
- dirName = baseName;
- }
- else
- {
- dirName = baseName + QString::number(num);;
- }
-
- // If it's over 9000
- if (num > 9000)
- return "";
- num++;
- } while (QFileInfo(PathCombine(inDir, dirName)).exists());
- return dirName;
-}
-
-bool ensureFilePathExists(QString filenamepath)
-{
- QFileInfo a(filenamepath);
- QDir dir;
- QString ensuredPath = a.path();
- bool success = dir.mkpath(ensuredPath);
- return success;
-}
-
-bool ensureFolderPathExists(QString foldernamepath)
-{
- QFileInfo a(foldernamepath);
- QDir dir;
- QString ensuredPath = a.filePath();
- bool success = dir.mkpath(ensuredPath);
- return success;
-}
-
-bool copyPath(const QString &src, const QString &dst, bool follow_symlinks)
-{
- //NOTE always deep copy on windows. the alternatives are too messy.
- #if defined Q_OS_WIN32
- follow_symlinks = true;
- #endif
-
- QDir dir(src);
- if (!dir.exists())
- return false;
- if (!ensureFolderPathExists(dst))
- return false;
-
- bool OK = true;
-
- qDebug() << "Looking at " << dir.absolutePath();
- foreach(QString f, dir.entryList(QDir::Files | QDir::Dirs | QDir::NoDotAndDotDot | QDir::Hidden | QDir::System))
- {
- QString inner_src = src + QDir::separator() + f;
- QString inner_dst = dst + QDir::separator() + f;
- qDebug() << f << "translates to"<< inner_src << "to" << inner_dst;
- QFileInfo fileInfo(inner_src);
- if(!follow_symlinks && fileInfo.isSymLink())
- {
- qDebug() << "creating symlink" << inner_src << " - " << inner_dst;
- OK &= QFile::link(fileInfo.symLinkTarget(),inner_dst);
- }
- else if (fileInfo.isDir())
- {
- qDebug() << "recursing" << inner_src << " - " << inner_dst;
- OK &= copyPath(inner_src, inner_dst, follow_symlinks);
- }
- else if (fileInfo.isFile())
- {
- qDebug() << "copying file" << inner_src << " - " << inner_dst;
- OK &= QFile::copy(inner_src, inner_dst);
- }
- else
- {
- OK = false;
- qCritical() << "Copy ERROR: Unknown filesystem object:" << inner_src;
- }
- }
- return OK;
-}
-#if defined Q_OS_WIN32
-#include <windows.h>
-#include <string>
-#endif
-bool deletePath(QString path)
-{
- bool OK = true;
- QDir dir(path);
-
- if (!dir.exists())
- {
- return OK;
- }
- auto allEntries = dir.entryInfoList(QDir::NoDotAndDotDot | QDir::System | QDir::Hidden |
- QDir::AllDirs | QDir::Files,
- QDir::DirsFirst);
-
- for(QFileInfo info: allEntries)
- {
-#if defined Q_OS_WIN32
- QString nativePath = QDir::toNativeSeparators(info.absoluteFilePath());
- auto wString = nativePath.toStdWString();
- DWORD dwAttrs = GetFileAttributesW(wString.c_str());
- // Windows: check for junctions, reparse points and other nasty things of that sort
- if(dwAttrs & FILE_ATTRIBUTE_REPARSE_POINT)
- {
- if (info.isFile())
- {
- OK &= QFile::remove(info.absoluteFilePath());
- }
- else if (info.isDir())
- {
- OK &= dir.rmdir(info.absoluteFilePath());
- }
- }
-#else
- // We do not trust Qt with reparse points, but do trust it with unix symlinks.
- if(info.isSymLink())
- {
- OK &= QFile::remove(info.absoluteFilePath());
- }
-#endif
- else if (info.isDir())
- {
- OK &= deletePath(info.absoluteFilePath());
- }
- else if (info.isFile())
- {
- OK &= QFile::remove(info.absoluteFilePath());
- }
- else
- {
- OK = false;
- qCritical() << "Delete ERROR: Unknown filesystem object:" << info.absoluteFilePath();
- }
- }
- OK &= dir.rmdir(dir.absolutePath());
- return OK;
-}
-
-void openDirInDefaultProgram(QString path, bool ensureExists)
-{
- QDir parentPath;
- QDir dir(path);
- if (!dir.exists())
- {
- parentPath.mkpath(dir.absolutePath());
- }
- QDesktopServices::openUrl(QUrl::fromLocalFile(dir.absolutePath()));
-}
-
-void openFileInDefaultProgram(QString filename)
-{
- QDesktopServices::openUrl(QUrl::fromLocalFile(filename));
-}
-
-// Does the directory path contain any '!'? If yes, return true, otherwise false.
-// (This is a problem for Java)
-bool checkProblemticPathJava(QDir folder)
-{
- QString pathfoldername = folder.absolutePath();
- return pathfoldername.contains("!", Qt::CaseInsensitive);
-}
diff --git a/depends/util/src/userutils.cpp b/depends/util/src/userutils.cpp
deleted file mode 100644
index a26af5af..00000000
--- a/depends/util/src/userutils.cpp
+++ /dev/null
@@ -1,126 +0,0 @@
-#include "include/userutils.h"
-
-#include <QStandardPaths>
-#include <QFile>
-#include <QTextStream>
-
-#include "include/osutils.h"
-#include "include/pathutils.h"
-
-// Win32 crap
-#if WINDOWS
-
-#include <windows.h>
-#include <winnls.h>
-#include <shobjidl.h>
-#include <objbase.h>
-#include <objidl.h>
-#include <shlguid.h>
-#include <shlobj.h>
-
-bool called_coinit = false;
-
-HRESULT CreateLink(LPCSTR linkPath, LPCSTR targetPath, LPCSTR args)
-{
- HRESULT hres;
-
- if (!called_coinit)
- {
- hres = CoInitialize(NULL);
- called_coinit = true;
-
- if (!SUCCEEDED(hres))
- {
- qWarning("Failed to initialize COM. Error 0x%08X", hres);
- return hres;
- }
- }
-
- IShellLink *link;
- hres = CoCreateInstance(CLSID_ShellLink, NULL, CLSCTX_INPROC_SERVER, IID_IShellLink,
- (LPVOID *)&link);
-
- if (SUCCEEDED(hres))
- {
- IPersistFile *persistFile;
-
- link->SetPath(targetPath);
- link->SetArguments(args);
-
- hres = link->QueryInterface(IID_IPersistFile, (LPVOID *)&persistFile);
- if (SUCCEEDED(hres))
- {
- WCHAR wstr[MAX_PATH];
-
- MultiByteToWideChar(CP_ACP, 0, linkPath, -1, wstr, MAX_PATH);
-
- hres = persistFile->Save(wstr, TRUE);
- persistFile->Release();
- }
- link->Release();
- }
- return hres;
-}
-
-#endif
-
-QString Util::getDesktopDir()
-{
- return QStandardPaths::writableLocation(QStandardPaths::DesktopLocation);
-}
-
-// Cross-platform Shortcut creation
-bool Util::createShortCut(QString location, QString dest, QStringList args, QString name,
- QString icon)
-{
-#if LINUX
- location = PathCombine(location, name + ".desktop");
-
- QFile f(location);
- f.open(QIODevice::WriteOnly | QIODevice::Text);
- QTextStream stream(&f);
-
- QString argstring;
- if (!args.empty())
- argstring = " '" + args.join("' '") + "'";
-
- stream << "[Desktop Entry]"
- << "\n";
- stream << "Type=Application"
- << "\n";
- stream << "TryExec=" << dest.toLocal8Bit() << "\n";
- stream << "Exec=" << dest.toLocal8Bit() << argstring.toLocal8Bit() << "\n";
- stream << "Name=" << name.toLocal8Bit() << "\n";
- stream << "Icon=" << icon.toLocal8Bit() << "\n";
-
- stream.flush();
- f.close();
-
- f.setPermissions(f.permissions() | QFileDevice::ExeOwner | QFileDevice::ExeGroup |
- QFileDevice::ExeOther);
-
- return true;
-#elif WINDOWS
- // TODO: Fix
- // QFile file(PathCombine(location, name + ".lnk"));
- // WCHAR *file_w;
- // WCHAR *dest_w;
- // WCHAR *args_w;
- // file.fileName().toWCharArray(file_w);
- // dest.toWCharArray(dest_w);
-
- // QString argStr;
- // for (int i = 0; i < args.count(); i++)
- // {
- // argStr.append(args[i]);
- // argStr.append(" ");
- // }
- // argStr.toWCharArray(args_w);
-
- // return SUCCEEDED(CreateLink(file_w, dest_w, args_w));
- return false;
-#else
- qWarning("Desktop Shortcuts not supported on your platform!");
- return false;
-#endif
-}