aboutsummaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/kvilib/core/kvi_qstring.cpp26
-rw-r--r--src/kvilib/core/kvi_qstring.h15
-rw-r--r--src/kvirc/kernel/kvi_coreactions.cpp4
-rw-r--r--src/kvirc/kernel/kvi_ircconnection.cpp4
-rw-r--r--src/kvirc/kernel/kvi_irccontext.cpp7
-rw-r--r--src/kvirc/kernel/kvi_userinput.cpp16
-rw-r--r--src/kvirc/kvs/kvi_kvs_corefunctions_af.cpp4
-rw-r--r--src/kvirc/kvs/kvi_kvs_coresimplecommands_af.cpp3
-rw-r--r--src/kvirc/kvs/kvi_kvs_coresimplecommands_gl.cpp1
-rw-r--r--src/kvirc/kvs/kvi_kvs_variant.cpp15
-rw-r--r--src/kvirc/kvs/kvi_kvs_variant.h7
-rw-r--r--src/kvirc/sparser/kvi_sp_ctcp.cpp5
-rw-r--r--src/kvirc/sparser/kvi_sp_literal.cpp3
-rw-r--r--src/kvirc/ui/kvi_channel.cpp3
-rw-r--r--src/kvirc/ui/kvi_input_editor.cpp25
-rw-r--r--src/kvirc/ui/kvi_userlistview.cpp2
-rw-r--r--src/modules/addon/addonfunctions.cpp13
-rw-r--r--src/modules/addon/managementdialog.cpp1
-rw-r--r--src/modules/avatar/libkviavatar.cpp8
-rw-r--r--src/modules/channelsjoin/channelsjoinwindow.cpp5
-rw-r--r--src/modules/classeditor/classeditor.cpp3
-rw-r--r--src/modules/dcc/send.cpp15
-rw-r--r--src/modules/url/libkviurl.cpp15
23 files changed, 112 insertions, 88 deletions
diff --git a/src/kvilib/core/kvi_qstring.cpp b/src/kvilib/core/kvi_qstring.cpp
index ca3c346ce..c3fc00577 100644
--- a/src/kvilib/core/kvi_qstring.cpp
+++ b/src/kvilib/core/kvi_qstring.cpp
@@ -1337,4 +1337,30 @@ namespace KviQString
pcBuffer++;
}
}
+
+ void escapeKvs(QString * szData, uint uFlags)
+ {
+ // escape any $;\%
+ szData->replace("\\","\\\\");
+ szData->replace("\"","\\\"");
+ szData->replace(";","\\;");
+ if(!(uFlags & PermitFunctions))
+ szData->replace("$","\\$");
+ if(!(uFlags & PermitVariables))
+ szData->replace("%","\\%");
+ if(!(uFlags & PermitMultiLine))
+ {
+ szData->replace("\r"," ");
+ szData->replace("\n"," ");
+ }
+ if(uFlags & EscapeSpace)
+ szData->replace(" ","\\ ");
+
+ /*
+ szData->replace("(","\\(");
+ szData->replace(")","\\)");
+ szData->replace("-","\\-");
+ szData->replace("+","\\+");
+ */
+ }
}
diff --git a/src/kvilib/core/kvi_qstring.h b/src/kvilib/core/kvi_qstring.h
index 29ce05bfd..2ad7511cd 100644
--- a/src/kvilib/core/kvi_qstring.h
+++ b/src/kvilib/core/kvi_qstring.h
@@ -46,6 +46,14 @@
*/
namespace KviQString
{
+ enum EscapeKvsFlags
+ {
+ EscapeSpace = 0x1,
+ PermitVariables = 0x2,
+ PermitFunctions = 0x4,
+ PermitMultiLine = 0x8
+ };
+
/**
* \brief A global empty string (note that this is ALSO NULL under Qt 3.x)
*/
@@ -830,6 +838,13 @@ namespace KviQString
return szNumber.toULongLong(bOk);
#endif
}
+
+ /**
+ * \brief Escapes any kvs special character from a string
+ * \param szData The string to escape
+ * \return void
+ */
+ extern KVILIB_API void escapeKvs(QString * szData, uint uFlags = 0);
}
#endif //_KVI_QSTRING_H_
diff --git a/src/kvirc/kernel/kvi_coreactions.cpp b/src/kvirc/kernel/kvi_coreactions.cpp
index 9010df36b..f5e174fa6 100644
--- a/src/kvirc/kernel/kvi_coreactions.cpp
+++ b/src/kvirc/kernel/kvi_coreactions.cpp
@@ -957,8 +957,10 @@ void KviChangeUserModeAction::popupActivated(int id)
if(idx < text.length())
{
QChar m = text[idx];
+ QString szNick = c->connection()->userInfo()->nickName();
+ KviQString::escapeKvs(&szNick);
QString command = "mode ";
- command.append(c->connection()->userInfo()->nickName());
+ command.append(szNick);
command.append(c->connection()->userInfo()->hasUserMode(m) ? " -" : " +");
command.append(m);
KviKvsScript::run(command,c);
diff --git a/src/kvirc/kernel/kvi_ircconnection.cpp b/src/kvirc/kernel/kvi_ircconnection.cpp
index fb9e95ab0..c2156047b 100644
--- a/src/kvirc/kernel/kvi_ircconnection.cpp
+++ b/src/kvirc/kernel/kvi_ircconnection.cpp
@@ -1125,9 +1125,7 @@ void KviIrcConnection::useRealName(const QString &szRealName)
if(!szRealNameBuffer.isEmpty())
{
- szRealNameBuffer.replace(";","\\;");
- szRealNameBuffer.replace("\n"," ");
- szRealNameBuffer.replace("\r"," ");
+ KviQString::escapeKvs(&szRealNameBuffer, KviQString::PermitVariables | KviQString::PermitFunctions);
KviKvsVariant vRet;
if(KviKvsScript::evaluate(szRealNameBuffer,console(),0,&vRet))
diff --git a/src/kvirc/kernel/kvi_irccontext.cpp b/src/kvirc/kernel/kvi_irccontext.cpp
index e8b48404a..8cbc9be49 100644
--- a/src/kvirc/kernel/kvi_irccontext.cpp
+++ b/src/kvirc/kernel/kvi_irccontext.cpp
@@ -870,10 +870,9 @@ void KviIrcContext::terminateConnectionRequest(bool bForce, const QString & szQu
{
KVS_TRIGGER_EVENT_0(KviEvent_OnDisconnectRequest,m_pConsole);
QString szQuit = szQuitMsg;
- if(szQuit.isEmpty())szQuit = KVI_OPTION_STRING(KviOption_stringQuitMessage);
- szQuit.replace(";","\\;");
- szQuit.replace("\n"," ");
- szQuit.replace("\r"," ");
+ if(szQuit.isEmpty())
+ szQuit = KVI_OPTION_STRING(KviOption_stringQuitMessage);
+ KviQString::escapeKvs(&szQuit, KviQString::PermitVariables | KviQString::PermitFunctions);
QString buffer;
KviKvsVariant ret;
if(KviKvsScript::evaluate(szQuit,console(),0,&ret))
diff --git a/src/kvirc/kernel/kvi_userinput.cpp b/src/kvirc/kernel/kvi_userinput.cpp
index 52fa5d94e..e1fbef7b8 100644
--- a/src/kvirc/kernel/kvi_userinput.cpp
+++ b/src/kvirc/kernel/kvi_userinput.cpp
@@ -83,7 +83,7 @@ namespace KviUserInput
static QString szUserFriendlyCommandlineContext(__tr2qs("commandline::userfriendly"));
QString szCmd = szData;
- escapeString(szCmd);
+ KviQString::escapeKvs(&szCmd);
KviKvsScript kvs(szContext.isEmpty() ? szUserFriendlyCommandlineContext : szContext,szCmd);
return (kvs.run(pWindow,0,0) != KviKvsScript::Error);
@@ -153,18 +153,4 @@ namespace KviUserInput
}
}
}
-
- void escapeString(QString & szData)
- {
- // escape any -$;\%(
- szData.replace("\\","\\\\");
- szData.replace("\"","\\\"");
- szData.replace("$","\\$");
- szData.replace("%","\\%");
- szData.replace("(","\\(");
- szData.replace(")","\\)");
- szData.replace(";","\\;");
- szData.replace("-","\\-");
- szData.replace("+","\\+");
- }
};
diff --git a/src/kvirc/kvs/kvi_kvs_corefunctions_af.cpp b/src/kvirc/kvs/kvi_kvs_corefunctions_af.cpp
index ba0ccb564..f14101c2c 100644
--- a/src/kvirc/kvs/kvi_kvs_corefunctions_af.cpp
+++ b/src/kvirc/kvs/kvi_kvs_corefunctions_af.cpp
@@ -39,7 +39,7 @@
#include "kvi_ircuserdb.h"
#include "kvi_frame.h"
#include "kvi_statusbar.h"
-#include "kvi_userinput.h"
+#include "kvi_qstring.h"
#include "kvi_sslmaster.h"
#include "kvi_options.h"
@@ -1183,7 +1183,7 @@ namespace KviKvsCoreFunctions
KVSCF_PARAMETER("text",KVS_PT_NONEMPTYSTRING,0,szData)
KVSCF_PARAMETERS_END
- KviUserInput::escapeString(szData);
+ KviQString::escapeKvs(&szData);
KVSCF_pRetBuffer->setString(szData);
return true;
diff --git a/src/kvirc/kvs/kvi_kvs_coresimplecommands_af.cpp b/src/kvirc/kvs/kvi_kvs_coresimplecommands_af.cpp
index d94f19626..3a26b8aab 100644
--- a/src/kvirc/kvs/kvi_kvs_coresimplecommands_af.cpp
+++ b/src/kvirc/kvs/kvi_kvs_coresimplecommands_af.cpp
@@ -941,6 +941,7 @@ namespace KviKvsCoreSimpleCommands
if(KVSCSC_pSwitches->find('d',"deep"))szSwitches.append("-d ");
if(KVSCSC_pSwitches->find('q',"quiet"))szSwitches.append("-q ");
+ KviQString::escapeKvs(&szParams);
KviKvsScript s("delpopupitem","popup.delitem " + szSwitches + szParams);
s.run(KVSCSC_pContext->window());
return true;
@@ -1358,7 +1359,7 @@ namespace KviKvsCoreSimpleCommands
try to eval the string built by concatenating "echo" and the result of [fnc]$channel.name[/fnc]
inside a channel named "#test;quit" (yes, that's a valid channel name) you'll obtain
a disconnection as a side effect. To avoid this you need to use [fnc]$escape[/fnc]() around
- [fnc]$channel.name[/fnc].
+ [fnc]$chan.name[/fnc].
@examples:
[example]
[comment]# evaluate a variable command[/comment]
diff --git a/src/kvirc/kvs/kvi_kvs_coresimplecommands_gl.cpp b/src/kvirc/kvs/kvi_kvs_coresimplecommands_gl.cpp
index f21c3de4d..2fc74720b 100644
--- a/src/kvirc/kvs/kvi_kvs_coresimplecommands_gl.cpp
+++ b/src/kvirc/kvs/kvi_kvs_coresimplecommands_gl.cpp
@@ -158,6 +158,7 @@ namespace KviKvsCoreSimpleCommands
if(szParams.endsWith("()"))
szParams.chop(2);
+ KviQString::escapeKvs(&szParams);
KviKvsScript s("help","help.open " + szSwitches + szParams);
s.run(KVSCSC_pContext->window());
diff --git a/src/kvirc/kvs/kvi_kvs_variant.cpp b/src/kvirc/kvs/kvi_kvs_variant.cpp
index bf4882e15..fc5d4f52d 100644
--- a/src/kvirc/kvs/kvi_kvs_variant.cpp
+++ b/src/kvirc/kvs/kvi_kvs_variant.cpp
@@ -42,7 +42,7 @@ KviKvsVariant::KviKvsVariant(QString * pString, bool bEscape)
m_pData->m_eType = KviKvsVariantData::String;
m_pData->m_uRefs = 1;
m_pData->m_u.pString = pString;
- if(bEscape) escapeString(m_pData->m_u.pString);
+ if(bEscape) KviQString::escapeKvs(m_pData->m_u.pString);
}
KviKvsVariant::KviKvsVariant(const QString &szString, bool bEscape)
@@ -51,7 +51,7 @@ KviKvsVariant::KviKvsVariant(const QString &szString, bool bEscape)
m_pData->m_eType = KviKvsVariantData::String;
m_pData->m_uRefs = 1;
m_pData->m_u.pString = new QString(szString);
- if(bEscape) escapeString(m_pData->m_u.pString);
+ if(bEscape) KviQString::escapeKvs(m_pData->m_u.pString);
}
KviKvsVariant::KviKvsVariant(const char * szString, bool bEscape)
@@ -60,7 +60,7 @@ KviKvsVariant::KviKvsVariant(const char * szString, bool bEscape)
m_pData->m_eType = KviKvsVariantData::String;
m_pData->m_uRefs = 1;
m_pData->m_u.pString = new QString(QString::fromUtf8(szString));
- if(bEscape) escapeString(m_pData->m_u.pString);
+ if(bEscape) KviQString::escapeKvs(m_pData->m_u.pString);
}
KviKvsVariant::KviKvsVariant(KviKvsArray * pArray)
@@ -1621,13 +1621,4 @@ int KviKvsVariant::compare(const KviKvsVariant * pOther,bool bPreferNumeric) con
}
return CMP_THISGREATER; // should never happen
-}
-
-void KviKvsVariant::escapeString(QString * szData)
-{
- // escape any \$%;
- szData->replace("\\","\\\\");
- szData->replace("\"","\\\"");
- szData->replace("$","\\$");
- szData->replace(";","\\;");
} \ No newline at end of file
diff --git a/src/kvirc/kvs/kvi_kvs_variant.h b/src/kvirc/kvs/kvi_kvs_variant.h
index 937d5047b..e82851266 100644
--- a/src/kvirc/kvs/kvi_kvs_variant.h
+++ b/src/kvirc/kvs/kvi_kvs_variant.h
@@ -199,13 +199,6 @@ private:
static KviKvsVariant* unserializeRealOrInteger(const QChar** aux);
static KviKvsVariant* unserializeReal(const QChar** aux,QString& data);
static KviKvsVariant* unserializeInteger(const QChar** aux,QString& data);
-
- /**
- * \brief Escapes any kvs special character from a string
- * \param szData The string to escape
- * \return void
- */
- static void escapeString(QString * szData);
};
#include "kvi_kvs_array.h"
diff --git a/src/kvirc/sparser/kvi_sp_ctcp.cpp b/src/kvirc/sparser/kvi_sp_ctcp.cpp
index 326bab9c3..2b67e0fac 100644
--- a/src/kvirc/sparser/kvi_sp_ctcp.cpp
+++ b/src/kvirc/sparser/kvi_sp_ctcp.cpp
@@ -1647,16 +1647,15 @@ void KviServerParser::parseCtcpReplyAvatar(KviCtcpMessage *msg)
QString szLocalFile = szRemoteFile;
g_pIconManager->urlToCachedFileName(szLocalFile);
g_pApp->getLocalKvircDirectory(szLocalFilePath,KviApp::Avatars,szLocalFile);
- szLocalFilePath.replace('\\',"\\\\"); // <-- this is especially for windows
+ KviQString::escapeKvs(&szLocalFilePath, KviQString::EscapeSpace);
QString szCommand = "http.get -w=nm ";
unsigned int uMaxSize = KVI_OPTION_UINT(KviOption_uintMaximumRequestedAvatarSize);
if(uMaxSize > 0)KviQString::appendFormatted(szCommand,"-m=%u ",uMaxSize);
szRemoteFile = szRemoteFile.replace(";","%3B");
szRemoteFile = szRemoteFile.replace("\"","%22");
szCommand += "\""+szRemoteFile+"\"";
- szCommand += " \"";
+ szCommand += " ";
szCommand += szLocalFilePath;
- szCommand += "\"";
if(KviKvsScript::run(szCommand,msg->msg->console()))
{
diff --git a/src/kvirc/sparser/kvi_sp_literal.cpp b/src/kvirc/sparser/kvi_sp_literal.cpp
index 166e6c510..b401aafd5 100644
--- a/src/kvirc/sparser/kvi_sp_literal.cpp
+++ b/src/kvirc/sparser/kvi_sp_literal.cpp
@@ -571,7 +571,8 @@ void KviServerParser::parseLiteralKick(KviIrcMessage *msg)
if(KVS_TRIGGER_EVENT_4_HALTED(KviEvent_OnMeKick,chan,
szNick,szUser,szHost,szKickMsg))
msg->setHaltOutput();
- if(!KVI_OPTION_STRING(KviOption_stringOnMeKickedSound).isEmpty()) KviKvsScript::run("snd.play $0",0,new KviKvsVariantList(new KviKvsVariant(KVI_OPTION_STRING(KviOption_stringOnMeKickedSound))));
+ if(!KVI_OPTION_STRING(KviOption_stringOnMeKickedSound).isEmpty())
+ KviKvsScript::run("snd.play $0",0,new KviKvsVariantList(new KviKvsVariant(KVI_OPTION_STRING(KviOption_stringOnMeKickedSound))));
QString szPass = chan->hasChannelMode('k') ? chan->channelModeParam('k') : "";
diff --git a/src/kvirc/ui/kvi_channel.cpp b/src/kvirc/ui/kvi_channel.cpp
index 6257c8adb..ea7e50bac 100644
--- a/src/kvirc/ui/kvi_channel.cpp
+++ b/src/kvirc/ui/kvi_channel.cpp
@@ -1620,8 +1620,7 @@ void KviChannel::closeEvent(QCloseEvent * e)
if(connection())
{
QString szTmp = KVI_OPTION_STRING(KviOption_stringPartMessage);
- szTmp.replace(";","\\;");
- szTmp.replace("\n"," ");
+ KviQString::escapeKvs(&szTmp, KviQString::PermitVariables | KviQString::PermitFunctions);
KviKvsVariant vRet;
if(KviKvsScript::evaluate(szTmp,this,0,&vRet))
diff --git a/src/kvirc/ui/kvi_input_editor.cpp b/src/kvirc/ui/kvi_input_editor.cpp
index 6f7d8d67d..c503c819d 100644
--- a/src/kvirc/ui/kvi_input_editor.cpp
+++ b/src/kvirc/ui/kvi_input_editor.cpp
@@ -39,6 +39,7 @@
#include "kvi_mdimanager.h"
#include "kvi_mirccntrl.h"
#include "kvi_options.h"
+#include "kvi_qstring.h"
#include "kvi_out.h"
#include "kvi_tal_popupmenu.h"
#include "kvi_texticonwin.h"
@@ -190,8 +191,8 @@ void KviInputEditor::dropEvent(QDropEvent * e)
if(szPath.endsWith(KVI_FILEEXTENSION_SCRIPT,Qt::CaseInsensitive))
{
//script, parse it
- szPath.prepend("PARSE \"");
- szPath.append("\"");
+ KviQString::escapeKvs(&szPath, KviQString::EscapeSpace);
+ szPath.prepend("PARSE ");
if(m_pKviWindow)
KviKvsScript::run(szPath,m_pKviWindow);
} else {
@@ -1029,11 +1030,11 @@ void KviInputEditor::stopPasteSlow()
void KviInputEditor::pasteFile()
{
QString szTmp = QFileDialog::getOpenFileName(this,"Choose a file","","");
- if(szTmp != "")
+ if(!szTmp.isEmpty())
{
- szTmp.replace("\"", "\\\"");
- QString szTmp2 = QString("spaste.file \"%1\"").arg(szTmp);
- KviKvsScript::run(szTmp2,g_pActiveWindow);
+ KviQString::escapeKvs(&szTmp, KviQString::EscapeSpace);
+ szTmp.prepend("spaste.file ");
+ KviKvsScript::run(szTmp, g_pActiveWindow);
m_bSpSlowFlag = true;
}
}
@@ -1437,16 +1438,10 @@ void KviInputEditor::getWordBeforeCursor(QString & szBuffer, bool * bIsFirstWord
void KviInputEditor::completionEscapeUnsafeToken(QString &szToken)
{
- szToken.replace("\\","\\\\");
- szToken.replace(";","\\;");
- szToken.replace("$","\\$");
- szToken.replace("%","\\%");
- szToken.replace("\"","\\\"");
- szToken.replace(" ","\\ ");
+ if(!((KviInput *)(m_pInputParent))->isUserFriendly())
+ KviQString::escapeKvs(&szToken, KviQString::EscapeSpace);
}
-
-
void KviInputEditor::completion(bool bShift)
{
// FIXME: Spaces in directory completion can mess everything completely
@@ -1587,7 +1582,7 @@ void KviInputEditor::completion(bool bShift)
}
}
- if(bInCommand)
+ if(bInCommand && !bIsCommand)
{
// escape crazy things like Nick\nquit
completionEscapeUnsafeToken(szMatch);
diff --git a/src/kvirc/ui/kvi_userlistview.cpp b/src/kvirc/ui/kvi_userlistview.cpp
index dca490b77..cd7392d56 100644
--- a/src/kvirc/ui/kvi_userlistview.cpp
+++ b/src/kvirc/ui/kvi_userlistview.cpp
@@ -294,7 +294,7 @@ void KviUserListView::emitRightClick()
QString szNicks;
appendSelectedNicknames(szNicks);
KviKvsVariantList vList;
- vList.append(szNicks, true);
+ vList.append(szNicks);
KviKvsEventManager::instance()->trigger(iEv,m_pKviWindow,&vList);
} else {
g_pApp->checkSuggestRestoreDefaultScript();
diff --git a/src/modules/addon/addonfunctions.cpp b/src/modules/addon/addonfunctions.cpp
index f9248e977..7efd047e1 100644
--- a/src/modules/addon/addonfunctions.cpp
+++ b/src/modules/addon/addonfunctions.cpp
@@ -229,17 +229,8 @@ namespace KviAddonFunctions
}
// Now we have all stuff in ~/.config/KVIrc/tmp/$rand
- if(!
- KviKvsScript::run(
- QString::fromAscii("parse \"%1/install.kvs\"")
- .arg(
- szUnpackPath
- .replace("\\","\\\\")
- .replace("\"","\\\"")
- ),
- g_pActiveWindow
- )
- )
+ KviQString::escapeKvs(&szUnpackPath, KviQString::EscapeSpace);
+ if(!KviKvsScript::run(QString::fromAscii("parse %1/install.kvs").arg(szUnpackPath), g_pActiveWindow))
{
// Parsing the script failed
// However, the user should already be notified via normal script output.
diff --git a/src/modules/addon/managementdialog.cpp b/src/modules/addon/managementdialog.cpp
index fa3e31dd0..bab866c2b 100644
--- a/src/modules/addon/managementdialog.cpp
+++ b/src/modules/addon/managementdialog.cpp
@@ -267,6 +267,7 @@ void KviScriptManagementDialog::uninstallScript()
void KviScriptManagementDialog::getMoreScripts()
{
+ // If change this introducing not-fixed text, remember to escape this using KviQString::escapeKvs()!
KviKvsScript::run("openurl http://www.kvirc.net/?id=addons&version=" KVI_VERSION "." KVI_SOURCES_DATE,g_pActiveWindow);
}
diff --git a/src/modules/avatar/libkviavatar.cpp b/src/modules/avatar/libkviavatar.cpp
index 578d009b5..d7b46ea48 100644
--- a/src/modules/avatar/libkviavatar.cpp
+++ b/src/modules/avatar/libkviavatar.cpp
@@ -128,8 +128,8 @@ void KviAsyncAvatarSelectionDialog::okClicked()
if(!m_szAvatarName.isEmpty())
{
QString tmp = m_szAvatarName;
- tmp.replace("\\","\\\\",Qt::CaseInsensitive);
- QString szBuffer=QString("avatar.set \"%1\"").arg(tmp);
+ KviQString::escapeKvs(&tmp, KviQString::EscapeSpace);
+ QString szBuffer=QString("avatar.set %1").arg(tmp);
KviKvsScript::run(szBuffer,m_pConnection->console());
}
@@ -237,8 +237,8 @@ static bool avatar_kvs_cmd_set(KviKvsModuleCommandCall * c)
g_pIconManager->urlToCachedFileName(szLocalFile);
g_pApp->getLocalKvircDirectory(szLocalFilePath,KviApp::Avatars,szLocalFile);
- szLocalFilePath.replace("\\","\\\\",Qt::CaseInsensitive);
-
+ KviQString::escapeKvs(&szAvatar);
+ KviQString::escapeKvs(&szLocalFilePath);
QString szCommand = "http.get -w=nm ";
szCommand += szAvatar;
szCommand += " ";
diff --git a/src/modules/channelsjoin/channelsjoinwindow.cpp b/src/modules/channelsjoin/channelsjoinwindow.cpp
index 0b5919c85..eeef183fa 100644
--- a/src/modules/channelsjoin/channelsjoinwindow.cpp
+++ b/src/modules/channelsjoin/channelsjoinwindow.cpp
@@ -29,6 +29,7 @@
#include "kvi_selectors.h"
#include "kvi_app.h"
#include "kvi_string.h"
+#include "kvi_qstring.h"
#include "kvi_iconmanager.h"
#include "kvi_console.h"
#include "kvi_regchan.h"
@@ -301,6 +302,9 @@ void KviChannelsJoinWindow::joinClicked()
if(szTmp.isEmpty())
return;
+ KviQString::escapeKvs(&szTmp);
+ KviQString::escapeKvs(&szPass);
+
QString szCmd = "join ";
szCmd += szTmp;
szCmd += " ";
@@ -327,6 +331,7 @@ void KviChannelsJoinWindow::regClicked()
if(szTmp.isEmpty())
return;
+ KviQString::escapeKvs(&szTmp);
QString szCmd = "regchan.add ";
szCmd += szTmp;
diff --git a/src/modules/classeditor/classeditor.cpp b/src/modules/classeditor/classeditor.cpp
index 662b018a0..48d750dfa 100644
--- a/src/modules/classeditor/classeditor.cpp
+++ b/src/modules/classeditor/classeditor.cpp
@@ -1559,6 +1559,9 @@ void KviClassEditor::newClass()
return;
KviClassEditorTreeWidgetItem * pItem = newItem(szClassName,KviClassEditorTreeWidgetItem::Class);
+ KviQString::escapeKvs(&szClassName, KviQString::EscapeSpace);
+ KviQString::escapeKvs(&szinheritsClassName, KviQString::EscapeSpace);
+
QString szClass = "class\(";
szClass += szClassName + "," + szinheritsClassName;
szClass += "){}\n";
diff --git a/src/modules/dcc/send.cpp b/src/modules/dcc/send.cpp
index 4d2c1a10a..8d9c495c5 100644
--- a/src/modules/dcc/send.cpp
+++ b/src/modules/dcc/send.cpp
@@ -1238,7 +1238,10 @@ void KviDccFileTransfer::retryDCC()
QString szRemoteNick = m_pDescriptor->remoteNick();
QString szFileName = m_pDescriptor->localFileName();
QString szId = m_pDescriptor->idString();
- QString szCommand = "dcc.send -r=$console($dcc.irccontext(" + szId + ")) " + szRemoteNick + " " + "\"" + szFileName + "\"";
+ KviQString::escapeKvs(&szRemoteNick, KviQString::EscapeSpace);
+ KviQString::escapeKvs(&szFileName, KviQString::EscapeSpace);
+
+ QString szCommand = "dcc.send -r=$console($dcc.irccontext(" + szId + ")) " + szRemoteNick + " " + szFileName;
KviKvsScript::run(szCommand,g_pActiveWindow);
}
@@ -1248,7 +1251,10 @@ void KviDccFileTransfer::retryTDCC()
QString szRemoteNick = m_pDescriptor->remoteNick();
QString szFileName = m_pDescriptor->localFileName();
QString szId = m_pDescriptor->idString();
- QString szCommand = "dcc.send -r=$console($dcc.irccontext(" + szId + ")) -t " + szRemoteNick + " " + "\"" + szFileName + "\"";
+ KviQString::escapeKvs(&szRemoteNick, KviQString::EscapeSpace);
+ KviQString::escapeKvs(&szFileName, KviQString::EscapeSpace);
+
+ QString szCommand = "dcc.send -r=$console($dcc.irccontext(" + szId + ")) -t " + szRemoteNick + " " + szFileName;
KviKvsScript::run(szCommand,g_pActiveWindow);
}
@@ -1258,7 +1264,10 @@ void KviDccFileTransfer::retryRevDCC()
QString szRemoteNick = m_pDescriptor->remoteNick();
QString szFileName = m_pDescriptor->localFileName();
QString szId = m_pDescriptor->idString();
- QString szCommand = "dcc.rsend -z -r=$console($dcc.irccontext(" + szId + ")) " + szRemoteNick + " " + "\"" + szFileName + "\"";
+ KviQString::escapeKvs(&szRemoteNick, KviQString::EscapeSpace);
+ KviQString::escapeKvs(&szFileName, KviQString::EscapeSpace);
+
+ QString szCommand = "dcc.rsend -z -r=$console($dcc.irccontext(" + szId + ")) " + szRemoteNick + " " + szFileName;
KviKvsScript::run(szCommand,g_pActiveWindow);
}
diff --git a/src/modules/url/libkviurl.cpp b/src/modules/url/libkviurl.cpp
index 5c6b1ef5d..e1bbdec03 100644
--- a/src/modules/url/libkviurl.cpp
+++ b/src/modules/url/libkviurl.cpp
@@ -39,6 +39,7 @@
#include "kvi_tal_popupmenu.h"
#include "kvi_window.h"
#include "kvi_options.h"
+#include "kvi_qstring.h"
#include "kvi_out.h"
#include <QFileDialog>
@@ -307,7 +308,9 @@ void UrlDialog::findtext()
void UrlDialog::dblclk_url(QTreeWidgetItem *item, int)
{
QString cmd="openurl ";
- cmd.append(item->text(0));
+ QString szUrl = item->text(0);
+ KviQString::escapeKvs(&szUrl);
+ cmd.append(szUrl);
KviKvsScript::run(cmd,this);
}
@@ -344,12 +347,18 @@ void UrlDialog::contextMenu(const QPoint &point)
void UrlDialog::sayToWin(QAction * act)
{
KviWindow *wnd = g_pApp->findWindowByCaption(act->text());
- QString say=QString("PRIVMSG %1 %2").arg(wnd->windowName(), m_szUrl);
if(wnd)
{
+ QString szUrl = m_szUrl;
+ QString szWindow = wnd->windowName();
+ KviQString::escapeKvs(&szUrl);
+ KviQString::escapeKvs(&szWindow);
+ QString say=QString("PRIVMSG %1 %2").arg(szWindow, szUrl);
KviKvsScript::run(say,wnd);
g_pFrame->setActiveWindow(wnd);
- } else QMessageBox::warning(0,__tr2qs("Warning - KVIrc"),__tr2qs("Window not found."),QMessageBox::Ok,QMessageBox::NoButton,QMessageBox::NoButton);
+ } else {
+ QMessageBox::warning(0,__tr2qs("Warning - KVIrc"),__tr2qs("Window not found."),QMessageBox::Ok,QMessageBox::NoButton,QMessageBox::NoButton);
+ }
}
QPixmap *UrlDialog::myIconPtr()