diff options
Diffstat (limited to 'src')
| -rw-r--r-- | src/kvirc/kvs/kvi_kvs_eventtriggers.h | 112 | ||||
| -rw-r--r-- | src/kvirc/kvs/kvi_kvs_variant.cpp | 25 | ||||
| -rw-r--r-- | src/kvirc/kvs/kvi_kvs_variant.h | 15 | ||||
| -rw-r--r-- | src/kvirc/kvs/kvi_kvs_variantlist.h | 2 | ||||
| -rw-r--r-- | src/kvirc/ui/kvi_ircview_events.cpp | 16 | ||||
| -rw-r--r-- | src/modules/http/httpfiletransfer.cpp | 6 |
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()) |
