0001-Don-t-send-exec-output-by-default.patch
src/client/clientuserinputhandler.cpp | ||
---|---|---|
60 | 60 |
for(int i = 0; i < clist.count(); i++) { |
61 | 61 |
QString cmd = clist.at(i).second.section(' ', 0, 0).remove(0, 1).toUpper(); |
62 | 62 |
if(cmd == "EXEC") |
63 |
handleExec(clist.at(i).first, clist.at(i).second.section(' ', 1)); |
|
63 |
handleExec(clist.at(i).first, clist.at(i).second.section(' ', 1).trimmed());
|
|
64 | 64 |
else |
65 | 65 |
emit sendInput(clist.at(i).first, clist.at(i).second); |
66 | 66 |
} |
67 | 67 |
} |
68 | 68 | |
69 |
void ClientUserInputHandler::handleExec(const BufferInfo &bufferInfo, const QString &execString) { |
|
69 |
void ClientUserInputHandler::handleExec(const BufferInfo &bufferInfo, const QString &execString_) { |
|
70 |
QString execString = execString_; |
|
71 |
bool sendOutput = false; |
|
72 |
if(execString.startsWith("-o ")) { |
|
73 |
execString.remove(0, 3); |
|
74 |
sendOutput = true; |
|
75 |
} |
|
70 | 76 |
ExecWrapper *exec = new ExecWrapper(this); // gets suicidal when it's done |
71 |
exec->start(bufferInfo, execString); |
|
77 |
exec->start(bufferInfo, execString, sendOutput);
|
|
72 | 78 |
} |
src/client/execwrapper.cpp | ||
---|---|---|
26 | 26 |
#include "messagemodel.h" |
27 | 27 |
#include "quassel.h" |
28 | 28 | |
29 |
ExecWrapper::ExecWrapper(QObject* parent) : QObject(parent) { |
|
29 |
ExecWrapper::ExecWrapper(QObject* parent) |
|
30 |
: QObject(parent), |
|
31 |
_sendOutput(true) |
|
32 |
{ |
|
30 | 33 |
connect(&_process, SIGNAL(readyReadStandardOutput()), SLOT(processReadStdout())); |
31 | 34 |
connect(&_process, SIGNAL(readyReadStandardError()), SLOT(processReadStderr())); |
32 | 35 |
connect(&_process, SIGNAL(finished(int, QProcess::ExitStatus)), SLOT(processFinished(int, QProcess::ExitStatus))); |
... | ... | |
36 | 39 |
connect(this, SIGNAL(error(QString)), SLOT(postStderr(QString))); |
37 | 40 |
} |
38 | 41 | |
39 |
void ExecWrapper::start(const BufferInfo &info, const QString &command) { |
|
42 |
void ExecWrapper::start(const BufferInfo &info, const QString &command, bool sendOutput) {
|
|
40 | 43 |
_bufferInfo = info; |
44 |
_sendOutput = sendOutput; |
|
41 | 45 |
QString params; |
42 | 46 | |
43 | 47 |
QRegExp rx("^\\s*(\\S+)(\\s+(.*))?$"); |
... | ... | |
68 | 72 |
} |
69 | 73 | |
70 | 74 |
void ExecWrapper::postStdout(const QString &msg) { |
71 |
if(_bufferInfo.isValid()) |
|
72 |
Client::userInput(_bufferInfo, msg); |
|
75 |
if(_bufferInfo.isValid()) { |
|
76 |
if(_sendOutput) |
|
77 |
Client::userInput(_bufferInfo, msg); |
|
78 |
else |
|
79 |
Client::messageModel()->insertMessage(_bufferInfo, Message::Info, msg); |
|
80 |
} |
|
73 | 81 |
} |
74 | 82 | |
75 | 83 |
void ExecWrapper::postStderr(const QString &msg) { |
76 | 84 |
if(_bufferInfo.isValid()) |
77 |
Client::messageModel()->insertErrorMessage(_bufferInfo, msg);
|
|
85 |
Client::messageModel()->insertMessage(_bufferInfo, Message::Error, msg);
|
|
78 | 86 |
} |
79 | 87 | |
80 | 88 |
void ExecWrapper::processFinished(int exitCode, QProcess::ExitStatus status) { |
src/client/execwrapper.h | ||
---|---|---|
32 | 32 |
ExecWrapper(QObject *parent = 0); |
33 | 33 | |
34 | 34 |
public slots: |
35 |
void start(const BufferInfo &info, const QString &command); |
|
35 |
void start(const BufferInfo &info, const QString &command, bool sendOutput = true);
|
|
36 | 36 | |
37 | 37 |
signals: |
38 | 38 |
void error(const QString &errorMsg); |
... | ... | |
53 | 53 |
QString _scriptName; |
54 | 54 |
QString _stdoutBuffer; |
55 | 55 |
QString _stderrBuffer; |
56 |
bool _sendOutput; |
|
56 | 57 |
}; |
57 | 58 | |
58 | 59 |
#endif |
src/client/messagemodel.cpp | ||
---|---|---|
70 | 70 |
return false; |
71 | 71 |
} |
72 | 72 | |
73 |
void MessageModel::insertMessage(BufferInfo bufferInfo, Message::Type type, const QString &string) { |
|
74 |
Message msg(bufferInfo, type, string); |
|
75 |
if(!messagesIsEmpty()) |
|
76 |
msg.setMsgId(lastMessageItem()->msgId()); |
|
77 |
else |
|
78 |
msg.setMsgId(0); |
|
79 | ||
80 |
int idx = messageCount(); |
|
81 |
beginInsertRows(QModelIndex(), idx, idx); |
|
82 |
insertMessage__(idx, msg); |
|
83 |
endInsertRows(); |
|
84 |
} |
|
85 | ||
73 | 86 |
bool MessageModel::insertMessage(const Message &msg, bool fakeMsg) { |
74 | 87 |
MsgId id = msg.msgId(); |
75 | 88 |
int idx = indexForId(id); |
... | ... | |
348 | 361 |
_nextDayChange = _nextDayChange.addSecs(86400); |
349 | 362 |
} |
350 | 363 | |
351 |
void MessageModel::insertErrorMessage(BufferInfo bufferInfo, const QString &errorString) { |
|
352 |
int idx = messageCount(); |
|
353 |
beginInsertRows(QModelIndex(), idx, idx); |
|
354 |
Message msg(bufferInfo, Message::Error, errorString); |
|
355 |
if(!messagesIsEmpty()) |
|
356 |
msg.setMsgId(messageItemAt(idx-1)->msgId()); |
|
357 |
else |
|
358 |
msg.setMsgId(0); |
|
359 |
insertMessage__(idx, msg); |
|
360 |
endInsertRows(); |
|
361 |
} |
|
362 | ||
363 | 364 |
void MessageModel::requestBacklog(BufferId bufferId) { |
364 | 365 |
if(_messagesWaiting.contains(bufferId)) |
365 | 366 |
return; |
src/client/messagemodel.h | ||
---|---|---|
75 | 75 |
void requestBacklog(BufferId bufferId); |
76 | 76 |
void messagesReceived(BufferId bufferId, int count); |
77 | 77 |
void buffersPermanentlyMerged(BufferId bufferId1, BufferId bufferId2); |
78 |
void insertErrorMessage(BufferInfo bufferInfo, const QString &errorString);
|
|
78 |
void insertMessage(BufferInfo bufferInfo, Message::Type type, const QString &string);
|
|
79 | 79 | |
80 | 80 |
protected: |
81 | 81 |
// virtual MessageModelItem *createMessageModelItem(const Message &) = 0; |
src/common/aliasmanager.cpp | ||
---|---|---|
97 | 97 | |
98 | 98 |
#ifdef Q_OS_LINUX |
99 | 99 |
// let's add aliases for scripts that only run on linux |
100 |
aliases << Alias("inxi", "/exec inxi $0") |
|
101 |
<< Alias("sysinfo", "/exec inxi -d"); |
|
100 |
aliases << Alias("inxi", "/exec -o inxi $0")
|
|
101 |
<< Alias("sysinfo", "/exec -o inxi -d");
|
|
102 | 102 |
#endif |
103 | 103 | |
104 | 104 |
return aliases; |
105 |
- |