72 lines
1.9 KiB
C++
72 lines
1.9 KiB
C++
/* ----------------------------------------------------------------------
|
|
LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator
|
|
https://www.lammps.org/, Sandia National Laboratories
|
|
LAMMPS development team: developers@lammps.org
|
|
|
|
Copyright (2003) Sandia Corporation. Under the terms of Contract
|
|
DE-AC04-94AL85000 with Sandia Corporation, the U.S. Government retains
|
|
certain rights in this software. This software is distributed under
|
|
the GNU General Public License.
|
|
|
|
See the README file in the top-level LAMMPS directory.
|
|
------------------------------------------------------------------------- */
|
|
|
|
#include "helpers.h"
|
|
|
|
#include <QFile>
|
|
#include <QFileInfo>
|
|
#include <QProcess>
|
|
#include <QStringList>
|
|
|
|
// duplicate string, STL version
|
|
char *mystrdup(const std::string &text)
|
|
{
|
|
auto *tmp = new char[text.size() + 1];
|
|
memcpy(tmp, text.c_str(), text.size() + 1);
|
|
return tmp;
|
|
}
|
|
|
|
// duplicate string, pointer version
|
|
char *mystrdup(const char *text)
|
|
{
|
|
return mystrdup(std::string(text));
|
|
}
|
|
|
|
// duplicate string, Qt version
|
|
char *mystrdup(const QString &text)
|
|
{
|
|
return mystrdup(text.toStdString());
|
|
}
|
|
|
|
// find if executable is in path
|
|
// https://stackoverflow.com/a/51041497
|
|
|
|
bool has_exe(const QString &exe)
|
|
{
|
|
QProcess findProcess;
|
|
QStringList arguments;
|
|
arguments << exe;
|
|
#if defined(_WIN32)
|
|
findProcess.start("where", arguments);
|
|
#else
|
|
findProcess.start("which", arguments);
|
|
#endif
|
|
findProcess.setReadChannel(QProcess::ProcessChannel::StandardOutput);
|
|
|
|
if (!findProcess.waitForFinished()) return false; // Not found or which does not work
|
|
|
|
QString retStr(findProcess.readAll());
|
|
retStr = retStr.trimmed();
|
|
|
|
QFile file(retStr);
|
|
QFileInfo check_file(file);
|
|
if (check_file.exists() && check_file.isFile())
|
|
return true; // Found!
|
|
else
|
|
return false; // Not found!
|
|
}
|
|
|
|
// Local Variables:
|
|
// c-basic-offset: 4
|
|
// End:
|