25#include <QCoreApplication>
39 klfDbg(
"is_binary_file: file doesn't exist directly, path search gave "<<
fn) ;
42 if (!
fpeek.open(QIODevice::ReadOnly)) {
43 klfDbg(
"fn="<<
fn<<
", Can't peek into file "<<
fn<<
"!") ;
50 if ((
int)
line[
j] >= 127 || (
int)
line[
j] <= 0) {
52 <<
" on line "<<
n<<
", column "<<
j) ;
57 klfDbg(
"fn="<<
fn<<
", file seems to be ascii based on the first few lines") ;
62const static QString script_extra_paths =
QString(
"C:\\Python27;C:\\Python*");
63const static QString exe_suffix =
".exe";
64#elif defined(Q_OS_MAC)
65const static QString script_extra_paths =
66 "/usr/bin:/bin:/usr/local/bin:/usr/sbin:/sbin:/usr/local/sbin"
67 "/usr/local/opt/*/bin:/opt/local/bin:"
69 "/Library/TeX/texbin:/usr/texbin";
70const static QString exe_suffix =
"";
72const static QString script_extra_paths =
73 "/usr/bin:/bin:/usr/local/bin:/usr/sbin:/sbin:/usr/local/sbin";
74const static QString exe_suffix =
"";
100 mProcessAppEvents =
true;
109void KLFBlockProcess::ourProcGotOurStdinData()
113void KLFBlockProcess::ourProcExited()
123 return detectInterpreterPath(
"python");
124 }
else if (
ext ==
"sh") {
125 return detectInterpreterPath(
"bash");
126 }
else if (
ext ==
"rb") {
127 return detectInterpreterPath(
"ruby");
152 if (!is_binary_file(
cmd[0])) {
175 klfDbg(
"Can't wait for started! Error="<<
error()) ;
184 if (mProcessAppEvents) {
186 while (_runstatus == 0) {
188 klfDbg(
"events processed, maybe more?") ;
192 klfDbg(
"Can't wait for finished!");
196 klfDbg(
"Process should have finished now.");
198 if (_runstatus < 0) {
199 klfDbg(
"some error occurred, _runstatus="<<_runstatus) ;
KLFBlockProcess(QObject *parent=0)
bool startProcess(QStringList cmd, QByteArray stdindata, QStringList env=QStringList())
virtual QString getInterpreterPath(const QString &ext)
The interpter path to use for the given extension.
Defines the KLFBlockProcess class.
#define KLF_DEBUG_BLOCK(msg)
#define KLF_ASSERT_CONDITION(expr, msg, failaction)
#define klfDbg(streamableItems)
KLF_EXPORT QString klfSearchPath(const QString &programName, const QString &extra_path)
void processEvents(QEventLoop::ProcessEventsFlags flags)
qint64 write(const char *data, qint64 maxSize)
iterator erase(iterator pos)
QMetaObject::Connection connect(const QObject *sender, const char *signal, const QObject *receiver, const char *method, Qt::ConnectionType type)
QStringList environment() const
void finished(int exitCode)
void setEnvironment(const QStringList &environment)
QProcess::ProcessError error() const
void start(const QString &program, const QStringList &arguments, OpenMode mode)
bool waitForFinished(int msecs)
bool waitForStarted(int msecs)
QThread * currentThread()