aboutsummaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/kvirc/kvs/kvi_kvs_eventtriggers.h112
-rw-r--r--src/kvirc/kvs/kvi_kvs_variant.cpp25
-rw-r--r--src/kvirc/kvs/kvi_kvs_variant.h15
-rw-r--r--src/kvirc/kvs/kvi_kvs_variantlist.h2
-rw-r--r--src/kvirc/ui/kvi_ircview_events.cpp16
-rw-r--r--src/modules/http/httpfiletransfer.cpp6
6 files changed, 100 insertions, 76 deletions
diff --git a/src/kvirc/kvs/kvi_kvs_eventtriggers.h b/src/kvirc/kvs/kvi_kvs_eventtriggers.h
index f26c09d1a..58d033bf9 100644
--- a/src/kvirc/kvs/kvi_kvs_eventtriggers.h
+++ b/src/kvirc/kvs/kvi_kvs_eventtriggers.h
@@ -66,7 +66,7 @@
if(KviKvsEventManager::instance()->hasAppHandlers(__idx)) \
{ \
KviKvsVariantList _vLocalParamList( \
- new KviKvsVariant(__param1) \
+ new KviKvsVariant(__param1, true) \
); \
KviKvsEventManager::instance()->trigger(__idx,__wnd,&_vLocalParamList); \
}
@@ -75,8 +75,8 @@
if(KviKvsEventManager::instance()->hasAppHandlers(__idx)) \
{ \
KviKvsVariantList _vLocalParamList( \
- new KviKvsVariant(__param1), \
- new KviKvsVariant(__param2) \
+ new KviKvsVariant(__param1, true), \
+ new KviKvsVariant(__param2, true) \
); \
KviKvsEventManager::instance()->trigger(__idx,__wnd,&_vLocalParamList); \
}
@@ -85,9 +85,9 @@
if(KviKvsEventManager::instance()->hasAppHandlers(__idx)) \
{ \
KviKvsVariantList _vLocalParamList( \
- new KviKvsVariant(__param1), \
- new KviKvsVariant(__param2), \
- new KviKvsVariant(__param3) \
+ new KviKvsVariant(__param1, true), \
+ new KviKvsVariant(__param2, true), \
+ new KviKvsVariant(__param3, true) \
); \
KviKvsEventManager::instance()->trigger(__idx,__wnd,&_vLocalParamList); \
}
@@ -96,10 +96,10 @@
if(KviKvsEventManager::instance()->hasAppHandlers(__idx)) \
{ \
KviKvsVariantList _vLocalParamList( \
- new KviKvsVariant(__param1), \
- new KviKvsVariant(__param2), \
- new KviKvsVariant(__param3), \
- new KviKvsVariant(__param4) \
+ new KviKvsVariant(__param1, true), \
+ new KviKvsVariant(__param2, true), \
+ new KviKvsVariant(__param3, true), \
+ new KviKvsVariant(__param4, true) \
); \
KviKvsEventManager::instance()->trigger(__idx,__wnd,&_vLocalParamList); \
}
@@ -108,11 +108,11 @@
if(KviKvsEventManager::instance()->hasAppHandlers(__idx)) \
{ \
KviKvsVariantList _vLocalParamList( \
- new KviKvsVariant(__param1), \
- new KviKvsVariant(__param2), \
- new KviKvsVariant(__param3), \
- new KviKvsVariant(__param4), \
- new KviKvsVariant(__param5) \
+ new KviKvsVariant(__param1, true), \
+ new KviKvsVariant(__param2, true), \
+ new KviKvsVariant(__param3, true), \
+ new KviKvsVariant(__param4, true), \
+ new KviKvsVariant(__param5, true) \
); \
KviKvsEventManager::instance()->trigger(__idx,__wnd,&_vLocalParamList); \
}
@@ -121,12 +121,12 @@
if(KviKvsEventManager::instance()->hasAppHandlers(__idx)) \
{ \
KviKvsVariantList _vLocalParamList( \
- new KviKvsVariant(__param1), \
- new KviKvsVariant(__param2), \
- new KviKvsVariant(__param3), \
- new KviKvsVariant(__param4), \
- new KviKvsVariant(__param5), \
- new KviKvsVariant(__param6) \
+ new KviKvsVariant(__param1, true), \
+ new KviKvsVariant(__param2, true), \
+ new KviKvsVariant(__param3, true), \
+ new KviKvsVariant(__param4, true), \
+ new KviKvsVariant(__param5, true), \
+ new KviKvsVariant(__param6, true) \
); \
KviKvsEventManager::instance()->trigger(__idx,__wnd,&_vLocalParamList); \
}
@@ -135,13 +135,13 @@
if(KviKvsEventManager::instance()->hasAppHandlers(__idx)) \
{ \
KviKvsVariantList _vLocalParamList( \
- new KviKvsVariant(__param1), \
- new KviKvsVariant(__param2), \
- new KviKvsVariant(__param3), \
- new KviKvsVariant(__param4), \
- new KviKvsVariant(__param5), \
- new KviKvsVariant(__param6), \
- new KviKvsVariant(__param7) \
+ new KviKvsVariant(__param1, true), \
+ new KviKvsVariant(__param2, true), \
+ new KviKvsVariant(__param3, true), \
+ new KviKvsVariant(__param4, true), \
+ new KviKvsVariant(__param5, true), \
+ new KviKvsVariant(__param6, true), \
+ new KviKvsVariant(__param7, true) \
); \
KviKvsEventManager::instance()->trigger(__idx,__wnd,&_vLocalParamList); \
}
@@ -168,7 +168,7 @@
__idx, \
__wnd, \
new KviKvsVariantList( \
- new KviKvsVariant(__param1) \
+ new KviKvsVariant(__param1, true) \
) \
) \
: \
@@ -183,8 +183,8 @@
__idx, \
__wnd, \
new KviKvsVariantList( \
- new KviKvsVariant(__param1), \
- new KviKvsVariant(__param2) \
+ new KviKvsVariant(__param1, true), \
+ new KviKvsVariant(__param2, true) \
) \
) \
: \
@@ -199,9 +199,9 @@
__idx, \
__wnd, \
new KviKvsVariantList( \
- new KviKvsVariant(__param1), \
- new KviKvsVariant(__param2), \
- new KviKvsVariant(__param3) \
+ new KviKvsVariant(__param1, true), \
+ new KviKvsVariant(__param2, true), \
+ new KviKvsVariant(__param3, true) \
) \
) \
: \
@@ -216,10 +216,10 @@
__idx, \
__wnd, \
new KviKvsVariantList( \
- new KviKvsVariant(__param1), \
- new KviKvsVariant(__param2), \
- new KviKvsVariant(__param3), \
- new KviKvsVariant(__param4) \
+ new KviKvsVariant(__param1, true), \
+ new KviKvsVariant(__param2, true), \
+ new KviKvsVariant(__param3, true), \
+ new KviKvsVariant(__param4, true) \
) \
) \
: \
@@ -234,11 +234,11 @@
__idx, \
__wnd, \
new KviKvsVariantList( \
- new KviKvsVariant(__param1), \
- new KviKvsVariant(__param2), \
- new KviKvsVariant(__param3), \
- new KviKvsVariant(__param4), \
- new KviKvsVariant(__param5) \
+ new KviKvsVariant(__param1, true), \
+ new KviKvsVariant(__param2, true), \
+ new KviKvsVariant(__param3, true), \
+ new KviKvsVariant(__param4, true), \
+ new KviKvsVariant(__param5, true) \
) \
) \
: \
@@ -253,12 +253,12 @@
__idx, \
__wnd, \
new KviKvsVariantList( \
- new KviKvsVariant(__param1), \
- new KviKvsVariant(__param2), \
- new KviKvsVariant(__param3), \
- new KviKvsVariant(__param4), \
- new KviKvsVariant(__param5), \
- new KviKvsVariant(__param6) \
+ new KviKvsVariant(__param1, true), \
+ new KviKvsVariant(__param2, true), \
+ new KviKvsVariant(__param3, true), \
+ new KviKvsVariant(__param4, true), \
+ new KviKvsVariant(__param5, true), \
+ new KviKvsVariant(__param6, true) \
) \
) \
: \
@@ -273,13 +273,13 @@
__idx, \
__wnd, \
new KviKvsVariantList( \
- new KviKvsVariant(__param1), \
- new KviKvsVariant(__param2), \
- new KviKvsVariant(__param3), \
- new KviKvsVariant(__param4), \
- new KviKvsVariant(__param5), \
- new KviKvsVariant(__param6), \
- new KviKvsVariant(__param7) \
+ new KviKvsVariant(__param1, true), \
+ new KviKvsVariant(__param2, true), \
+ new KviKvsVariant(__param3, true), \
+ new KviKvsVariant(__param4, true), \
+ new KviKvsVariant(__param5, true), \
+ new KviKvsVariant(__param6, true), \
+ new KviKvsVariant(__param7, true) \
) \
) \
: \
diff --git a/src/kvirc/kvs/kvi_kvs_variant.cpp b/src/kvirc/kvs/kvi_kvs_variant.cpp
index 9979eb190..aed89c5eb 100644
--- a/src/kvirc/kvs/kvi_kvs_variant.cpp
+++ b/src/kvirc/kvs/kvi_kvs_variant.cpp
@@ -36,28 +36,31 @@ KviKvsVariant::KviKvsVariant()
m_pData = 0;
}
-KviKvsVariant::KviKvsVariant(QString * pString)
+KviKvsVariant::KviKvsVariant(QString * pString, bool bEscape)
{
m_pData = new KviKvsVariantData;
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);
}
-KviKvsVariant::KviKvsVariant(const QString &szString)
+KviKvsVariant::KviKvsVariant(const QString &szString, bool bEscape)
{
m_pData = new KviKvsVariantData;
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);
}
-KviKvsVariant::KviKvsVariant(const char * szString)
+KviKvsVariant::KviKvsVariant(const char * szString, bool bEscape)
{
m_pData = new KviKvsVariantData;
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);
}
KviKvsVariant::KviKvsVariant(KviKvsArray * pArray)
@@ -101,7 +104,7 @@ KviKvsVariant::KviKvsVariant(bool bBoolean)
m_pData->m_u.bBoolean = bBoolean;
}
-KviKvsVariant::KviKvsVariant(kvs_int_t iInteger)
+KviKvsVariant::KviKvsVariant(kvs_int_t iInteger, bool)
{
m_pData = new KviKvsVariantData;
m_pData->m_eType = KviKvsVariantData::Integer;
@@ -1619,3 +1622,17 @@ 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("%","\\%");
+ szData->replace("(","\\(");
+ 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 99298b729..937d5047b 100644
--- a/src/kvirc/kvs/kvi_kvs_variant.h
+++ b/src/kvirc/kvs/kvi_kvs_variant.h
@@ -91,13 +91,13 @@ class KVIRC_API KviKvsVariant : public KviHeapObject
friend class KviKvsVariantComparison;
public:
KviKvsVariant();
- KviKvsVariant(kvs_int_t iInteger);
+ KviKvsVariant(kvs_int_t iInteger, bool bEscape=false);
KviKvsVariant(kvs_real_t dReal);
KviKvsVariant(kvs_real_t * pReal);
KviKvsVariant(bool bBoolean);
- KviKvsVariant(const QString &szString);
- KviKvsVariant(const char * szString); // without this gcc chooses the conversion (const char *)->(void *) instead of (const char *)->(QString) and obviously calls the wrong constructor
- KviKvsVariant(QString * pString);
+ KviKvsVariant(const QString &szString, bool bEscape=false);
+ KviKvsVariant(const char * szString, bool bEscape=false); // without this gcc chooses the conversion (const char *)->(void *) instead of (const char *)->(QString) and obviously calls the wrong constructor
+ KviKvsVariant(QString * pString, bool bEscape=false);
KviKvsVariant(KviKvsArray * pArray);
KviKvsVariant(KviKvsHash * pHash);
KviKvsVariant(kvs_hobject_t hObject);
@@ -199,6 +199,13 @@ 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/kvs/kvi_kvs_variantlist.h b/src/kvirc/kvs/kvi_kvs_variantlist.h
index ceecaeb21..26510c513 100644
--- a/src/kvirc/kvs/kvi_kvs_variantlist.h
+++ b/src/kvirc/kvs/kvi_kvs_variantlist.h
@@ -58,7 +58,7 @@ public:
void clear(){ m_pList->clear(); };
- void append(const QString &szParam){ m_pList->append(new KviKvsVariant(szParam)); };
+ void append(const QString &szParam, bool bEscape=false){ m_pList->append(new KviKvsVariant(szParam, bEscape)); };
void append(kvs_int_t iInteger){ m_pList->append(new KviKvsVariant(iInteger)); };
void append(kvs_real_t dReal){ m_pList->append(new KviKvsVariant(dReal)); };
void append(bool bBoolean){ m_pList->append(new KviKvsVariant(bBoolean)); };
diff --git a/src/kvirc/ui/kvi_ircview_events.cpp b/src/kvirc/ui/kvi_ircview_events.cpp
index d249da4ab..8aa27bba4 100644
--- a/src/kvirc/ui/kvi_ircview_events.cpp
+++ b/src/kvirc/ui/kvi_ircview_events.cpp
@@ -143,10 +143,10 @@ void KviIrcView::mouseDoubleClickEvent(QMouseEvent *e)
szCmd.remove(0,1);
KviKvsVariantList * pParams = new KviKvsVariantList();
- if(!szCmd.isEmpty()) pParams->append(szCmd);
- else pParams->append(linkText);
- pParams->append(linkText);
- pParams->append(szCmd);
+ if(!szCmd.isEmpty()) pParams->append(szCmd, true);
+ else pParams->append(linkText, true);
+ pParams->append(linkText, true);
+ pParams->append(szCmd, true);
switch(linkCmd[0].unicode())
@@ -347,10 +347,10 @@ void KviIrcView::mouseRealPressEvent(QMouseEvent *e)
szCmd.remove(0,1);
KviKvsVariantList * pParams = new KviKvsVariantList();
- if(!szCmd.isEmpty()) pParams->append(szCmd);
- else pParams->append(linkText);
- pParams->append(linkText);
- pParams->append(szCmd);
+ if(!szCmd.isEmpty()) pParams->append(szCmd, true);
+ else pParams->append(linkText, true);
+ pParams->append(linkText, true);
+ pParams->append(szCmd, true);
if(!(e->modifiers() & Qt::ControlModifier))//(e->button() & Qt::RightButton) && (
diff --git a/src/modules/http/httpfiletransfer.cpp b/src/modules/http/httpfiletransfer.cpp
index 6ad900741..5205c42e2 100644
--- a/src/modules/http/httpfiletransfer.cpp
+++ b/src/modules/http/httpfiletransfer.cpp
@@ -419,9 +419,9 @@ void KviHttpFileTransfer::transferTerminated(bool bSuccess)
m_tTransferEndTime = kvi_unixTime();
KviKvsVariantList vParams;
- vParams.append(new KviKvsVariant(bSuccess));
- vParams.append(new KviKvsVariant(m_pHttpRequest->url().url()));
- vParams.append(new KviKvsVariant(m_pHttpRequest->fileName()));
+ vParams.append(bSuccess);
+ vParams.append(new KviKvsVariant(m_pHttpRequest->url().url(), true));
+ vParams.append(new KviKvsVariant(m_pHttpRequest->fileName(), true));
vParams.append(new KviKvsVariant(m_vMagicIdentifier));
if(m_szCompletionCallback.isNull())