aboutsummaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/kvilib/CMakeLists.txt1
-rw-r--r--src/kvilib/config/kvi_debug.h100
-rw-r--r--src/kvilib/core/kvi_memmove.cpp44
-rw-r--r--src/kvilib/core/kvi_pointerhashtable.h27
-rw-r--r--src/kvilib/core/kvi_qstring.cpp32
-rw-r--r--src/kvilib/core/kvi_qstring.h52
-rw-r--r--src/kvilib/core/kvi_string.cpp172
-rw-r--r--src/kvilib/core/kvi_string.h2
-rw-r--r--src/kvilib/ext/kvi_databuffer.cpp8
-rw-r--r--src/kvilib/ext/kvi_debugcontext.cpp70
-rw-r--r--src/kvilib/ext/kvi_debugcontext.h49
-rw-r--r--src/kvilib/ext/kvi_mediatype.cpp12
-rw-r--r--src/kvilib/ext/kvi_regchan.cpp107
-rw-r--r--src/kvilib/ext/kvi_regchan.h62
-rw-r--r--src/kvilib/ext/kvi_regusersdb.cpp2
-rw-r--r--src/kvilib/irc/kvi_ircmask.cpp4
-rw-r--r--src/kvilib/system/kvi_stdarg.h9
-rw-r--r--src/kvirc/kernel/kvi_ircconnection.cpp3
-rw-r--r--src/kvirc/kernel/kvi_ircconnectiontargetresolver.cpp6
-rw-r--r--src/kvirc/kernel/kvi_irccontext.cpp6
-rw-r--r--src/kvirc/kernel/kvi_irclink.cpp10
-rw-r--r--src/kvirc/kernel/kvi_ircsocket.cpp19
-rw-r--r--src/kvirc/kernel/kvi_notifylist.cpp2
-rw-r--r--src/kvirc/kvs/kvi_kvs_object.cpp4
-rw-r--r--src/kvirc/ui/kvi_console.cpp2
-rw-r--r--src/kvirc/ui/kvi_console.h2
-rw-r--r--src/kvirc/ui/kvi_frame.cpp2
-rw-r--r--src/kvirc/ui/kvi_input_editor.cpp4
-rw-r--r--src/kvirc/ui/kvi_ircview.cpp2
-rw-r--r--src/kvirc/ui/kvi_ircview_events.cpp2
-rw-r--r--src/kvirc/ui/kvi_ircview_gettextline.cpp2
-rw-r--r--src/kvirc/ui/kvi_mdichild.cpp6
-rw-r--r--src/kvirc/ui/kvi_userlistview.cpp2
-rw-r--r--src/kvirc/ui/kvi_windowlist.cpp2
-rw-r--r--src/modules/channelsjoin/channelsjoinwindow.cpp9
-rw-r--r--src/modules/dcc/chat.cpp12
-rw-r--r--src/modules/dcc/libkvidcc.cpp4
-rw-r--r--src/modules/dcc/thread.cpp6
-rw-r--r--src/modules/dcc/video.cpp8
-rw-r--r--src/modules/eventeditor/eventeditor.cpp14
-rw-r--r--src/modules/links/linkswindow.cpp2
-rw-r--r--src/modules/popupeditor/popupeditor.cpp4
-rw-r--r--src/modules/raweditor/raweditor.cpp14
-rw-r--r--src/modules/regchan/libkviregchan.cpp101
-rw-r--r--src/modules/spaste/libkvispaste.cpp39
45 files changed, 724 insertions, 318 deletions
diff --git a/src/kvilib/CMakeLists.txt b/src/kvilib/CMakeLists.txt
index 74e8333a3..77db1bb55 100644
--- a/src/kvilib/CMakeLists.txt
+++ b/src/kvilib/CMakeLists.txt
@@ -68,6 +68,7 @@ SET(kvilib_SRCS
ext/kvi_crypt.cpp
ext/kvi_databuffer.cpp
ext/kvi_dbusadaptor.cpp
+ ext/kvi_debugcontext.cpp
ext/kvi_garbage.cpp
ext/kvi_mediatype.cpp
ext/kvi_miscutils.cpp
diff --git a/src/kvilib/config/kvi_debug.h b/src/kvilib/config/kvi_debug.h
index 7f1d0121e..615087464 100644
--- a/src/kvilib/config/kvi_debug.h
+++ b/src/kvilib/config/kvi_debug.h
@@ -27,6 +27,8 @@
#include <QtGlobal>
+#include "kvi_sysconfig.h"
+
/**
* \file kvi_debug.h
* \author Szymon Stefanek
@@ -34,6 +36,8 @@
* You can enable ALL the debugging output by uncommenting the line that defines _KVI_DEBUG_CHECK_RANGE_
*/
+#if 0
+
//=============================================================================
//
// You can enable ALL the debugging output by uncommenting the next line
@@ -44,17 +48,16 @@
/**
* \brief Debug macros
*
-* \def __range_valid Assert that ensures that its parameter is true
+* \def KVI_ASSERT Assert that ensures that its parameter is true
* \def __range_invalid Assert that ensures that its parameter is false
* \def __ASSERT Assert that ensures that its parameter is true; enabled only if _KVI_DEBUG_or __KVI_DEBUG__ is defined
*/
-
#ifdef _KVI_DEBUG_CHECK_RANGE_
- #define __range_valid(_expr) if(!(_expr))debug("[kvirc]: ASSERT FAILED: \"%s\" is false in %s (%d)",#_expr,__FILE__,__LINE__)
+ #define KVI_ASSERT(_expr) if(!(_expr))debug("[kvirc]: ASSERT FAILED: \"%s\" is false in %s (%d)",#_expr,__FILE__,__LINE__)
#define __range_invalid(_expr) if(_expr)debug("[kvirc]: ASSERT FAILED: \"%s\" is true in %s (%d)",#_expr,__FILE__,__LINE__)
#else
- #define __range_valid(_expr)
+ #define KVI_ASSERT(_expr)
#define __range_invalid(_expr)
#endif
@@ -64,4 +67,93 @@
#define __ASSERT(_expr)
#endif
+#endif
+
+
+#include <stdlib.h> // abort
+
+#ifdef __GNUC__
+
+ #define kvi_debug(fmt,arg...) qDebug(fmt,##arg)
+ #define kvi_warning(fmt,arg...) qWarning(fmt,##arg)
+ #define kvi_fatal(fmt,arg...) do { qFatal(fmt,##arg); abort(); } while(0)
+ #define KVI_PRETTY_FUNCTION __PRETTY_FUNCTION__
+
+#else //!__GNUC__
+
+ // assume MSVC
+
+ #define kvi_debug(fmt,...) qDebug(fmt,__VA_ARGS__)
+ #define kvi_warning(fmt,...) qWarning(fmt,__VA_ARGS__)
+ #define kvi_fatal(fmt,...) do { qFatal(fmt,__VA_ARGS__); abort(); } while(0)
+ #define KVI_PRETTY_FUNCTION __FUNCTION__
+
+#endif //!__GNUC__
+
+
+#ifdef COMPILE_DEBUG_MODE
+
+ #define KVI_ASSERT(__condition__) \
+ do { \
+ if(!(__condition__)) \
+ qFatal("[ASSERT FAILED] (" # __condition__ ") in %s at %s:%u",KVI_PRETTY_FUNCTION,__FILE__,__LINE__); \
+ } while(0)
+
+ #define KVI_ASSERT_MSG(__condition__,__message__) \
+ do { \
+ if(!(__condition__)) \
+ { \
+ qFatal("[ASSERT FAILED] (" # __condition__ ") in %s at %s:%u",KVI_PRETTY_FUNCTION,__FILE__,__LINE__); \
+ qFatal("[ASSERT FAILED] " __message__); \
+ } \
+ } while(0)
+
+ #include "kvi_debugcontext.h"
+
+ #define KVI_TRACE_HACK_TOKENPASTE_2(x,y) x ## y
+ #define KVI_TRACE_HACK_TOKENPASTE_1(x,y) KVI_TRACE_HACK_TOKENPASTE_2(x,y)
+
+ #ifdef __GNUC__
+ #define KVI_TRACE_FUNCTION \
+ KviDebugContext KVI_TRACE_HACK_TOKENPASTE_1(ctx,__LINE__)(__PRETTY_FUNCTION__)
+
+ #define KVI_TRACE_BLOCK(_szBlockDescription) \
+ KviDebugContext KVI_TRACE_HACK_TOKENPASTE_1(ctx,__LINE__)("%s - %s",__PRETTY_FUNCTION__,_szBlockDescription)
+
+ #define KVI_TRACE(_szFmt,arg...) KviDebugContext::trace(_szFmt,##arg)
+
+ #else
+ #define KVI_TRACE_FUNCTION \
+ KviDebugContext KVI_TRACE_HACK_TOKENPASTE_1(ctx,__LINE__)(__FUNCTION__)
+
+ #define KVI_TRACE_BLOCK(_szBlockDescription) \
+ KviDebugContext KVI_TRACE_HACK_TOKENPASTE_1(ctx,__LINE__)("%s - %s",__FUNCTION__,_szBlockDescription)
+
+ #define KVI_TRACE(_szFmt,...) KviDebugContext::trace(_szFmt,__VA_ARGS__)
+
+ #endif
+
+#else //!COMPILE_DEBUG_MODE
+
+ #define KVI_ASSERT(__condition__) do { } while(0)
+ #define KVI_ASSERT_MSG(__condition__,__message__) do { } while(0)
+
+ #define KVI_TRACE_FUNCTION \
+ do { } while(0)
+
+ #define KVI_TRACE_BLOCK(_szBlockDescription) \
+ do { } while(0)
+
+ #ifdef __GNUC__
+ #define KVI_TRACE(_szFmt,arg...) do { } while(0)
+ #else
+ #define KVI_TRACE(_szFmt,...) do { } while(0)
+ #endif
+
+#endif //!COMPILE_DEBUG_MODE
+
+
+
+
+
#endif //_KVI_DEBUG_H_
diff --git a/src/kvilib/core/kvi_memmove.cpp b/src/kvilib/core/kvi_memmove.cpp
index 0049eb61d..6c72f1542 100644
--- a/src/kvilib/core/kvi_memmove.cpp
+++ b/src/kvilib/core/kvi_memmove.cpp
@@ -38,9 +38,9 @@
void *kvi_memmove(void * dst_ptr,const void *src_ptr,int len)
{
- __range_valid(dst_ptr);
- __range_valid(src_ptr);
- __range_valid(len >= 0);
+ KVI_ASSERT(dst_ptr);
+ KVI_ASSERT(src_ptr);
+ KVI_ASSERT(len >= 0);
// Save pointer registers
asm(" pushl %esi"); // save %esi
asm(" pushl %edi"); // save %edi
@@ -99,9 +99,9 @@
void *kvi_memmoveodd(void * dst_ptr,const void *src_ptr,int len)
{
- __range_valid(dst_ptr);
- __range_valid(src_ptr);
- __range_valid(len >= 0);
+ KVI_ASSERT(dst_ptr);
+ KVI_ASSERT(src_ptr);
+ KVI_ASSERT(len >= 0);
// Save pointer registers
asm(" pushl %esi"); // save %esi
asm(" pushl %edi"); // save %edi
@@ -170,9 +170,9 @@
void *kvi_memmove(void *dst_ptr,const void *src_ptr,int len)
{
- __range_valid(dst_ptr);
- __range_valid(src_ptr);
- __range_valid(len >= 0);
+ KVI_ASSERT(dst_ptr);
+ KVI_ASSERT(src_ptr);
+ KVI_ASSERT(len >= 0);
register char *dst;
register const char *src;
if(dst_ptr > src_ptr){
@@ -189,10 +189,10 @@
void *kvi_memmoveodd(void *dst_ptr,const void *src_ptr,int len)
{
- __range_valid(dst_ptr);
- __range_valid(src_ptr);
- __range_valid(len >= 0);
- __range_valid((len & 1) == 0);
+ KVI_ASSERT(dst_ptr);
+ KVI_ASSERT(src_ptr);
+ KVI_ASSERT(len >= 0);
+ KVI_ASSERT((len & 1) == 0);
register short *dst;
register const short *src;
if(dst_ptr > src_ptr){
@@ -217,9 +217,9 @@
void kvi_fastmove(void *dst_ptr,const void *src_ptr,int len)
{
- __range_valid(dst_ptr);
- __range_valid(src_ptr);
- __range_valid(len >= 0);
+ KVI_ASSERT(dst_ptr);
+ KVI_ASSERT(src_ptr);
+ KVI_ASSERT(len >= 0);
register const char *src = (const char *)src_ptr;
register char *dst = (char *)dst_ptr;
while(len--)*dst++ = *src++;
@@ -227,10 +227,10 @@
void kvi_fastmoveodd(void *dst_ptr,const void *src_ptr,int len)
{
- __range_valid(dst_ptr);
- __range_valid(src_ptr);
- __range_valid(len >= 0);
- __range_valid((len & 1) == 0);
+ KVI_ASSERT(dst_ptr);
+ KVI_ASSERT(src_ptr);
+ KVI_ASSERT(len >= 0);
+ KVI_ASSERT((len & 1) == 0);
register const short *src = (const short *)src_ptr;
register short *dst = (short *)dst_ptr;
while(len > 0){
@@ -243,8 +243,8 @@
void kvi_memset(void *dst_ptr,char c,int len)
{
- __range_valid(dst_ptr);
- __range_valid(len >= 0);
+ KVI_ASSERT(dst_ptr);
+ KVI_ASSERT(len >= 0);
register char *dst = (char *)dst_ptr;
while(len--)*dst++ = c;
}
diff --git a/src/kvilib/core/kvi_pointerhashtable.h b/src/kvilib/core/kvi_pointerhashtable.h
index acf053942..8cf20710a 100644
--- a/src/kvilib/core/kvi_pointerhashtable.h
+++ b/src/kvilib/core/kvi_pointerhashtable.h
@@ -36,6 +36,7 @@
#include "kvi_qstring.h"
#include "kvi_malloc.h"
#include "kvi_memmove.h"
+#include "kvi_debug.h"
#include <ctype.h>
@@ -620,18 +621,26 @@ public:
{
for(unsigned int i=0;i<m_uSize;i++)
{
+ if(!m_pDataArray[i])
+ continue;
+
+ while(KviPointerHashTableEntry<Key,T> * e = m_pDataArray[i]->takeFirst())
+ {
+ kvi_hash_key_destroy(e->hKey,m_bDeepCopyKeys);
+
+ if(m_bAutoDelete)
+ delete ((T *)(e->pData));
+
+ delete e;
+
+ if(!m_pDataArray[i])
+ break; // emptied in the meantime
+ }
+
if(m_pDataArray[i])
{
- for(KviPointerHashTableEntry<Key,T> * e = m_pDataArray[i]->first();e;e = m_pDataArray[i]->next())
- {
- kvi_hash_key_destroy(e->hKey,m_bDeepCopyKeys);
- if(m_bAutoDelete)
- delete ((T *)(e->pData));
- }
- KviPointerList<KviPointerHashTableEntry<Key,T> > * pList = m_pDataArray[i];
- //delete m_pDataArray[i];
+ delete m_pDataArray[i];
m_pDataArray[i] = 0;
- delete pList;
}
}
m_uCount = 0;
diff --git a/src/kvilib/core/kvi_qstring.cpp b/src/kvilib/core/kvi_qstring.cpp
index 25b6613d2..0035d1e65 100644
--- a/src/kvilib/core/kvi_qstring.cpp
+++ b/src/kvilib/core/kvi_qstring.cpp
@@ -1219,6 +1219,38 @@ namespace KviQString
szSrc.remove(0,bIncluded ? iIdx + szFind.length() : iIdx);
}
+ QString leftToFirst(QString & szSrc, const QChar & c, bool bIncluded, bool bReturnFullStringIfNotFound)
+ {
+ int iIdx = szSrc.indexOf(c);
+ if(iIdx == -1)
+ return bReturnFullStringIfNotFound ? szSrc : QString();
+ return szSrc.left(bIncluded ? iIdx + 1 : iIdx);
+ }
+
+ QString leftToFirst(QString & szSrc, const QString & szFind, bool bIncluded, bool bReturnFullStringIfNotFound)
+ {
+ int iIdx = szSrc.indexOf(szFind);
+ if(iIdx == -1)
+ return bReturnFullStringIfNotFound ? szSrc : QString();
+ return szSrc.left(bIncluded ? iIdx + 1 : iIdx);
+ }
+
+ QString leftToLast(QString & szSrc, const QChar & c, bool bIncluded, bool bReturnFullStringIfNotFound)
+ {
+ int iIdx = szSrc.lastIndexOf(c);
+ if(iIdx == -1)
+ return bReturnFullStringIfNotFound ? szSrc : QString();
+ return szSrc.left(bIncluded ? iIdx + 1 : iIdx);
+ }
+
+ QString leftToLast(QString & szSrc, const QString & szFind, bool bIncluded, bool bReturnFullStringIfNotFound)
+ {
+ int iIdx = szSrc.lastIndexOf(szFind);
+ if(iIdx == -1)
+ return bReturnFullStringIfNotFound ? szSrc : QString();
+ return szSrc.left(bIncluded ? iIdx + 1 : iIdx);
+ }
+
QString upperISO88591(const QString & szSrc)
{
const QChar * pC = nullTerminatedArray(szSrc);
diff --git a/src/kvilib/core/kvi_qstring.h b/src/kvilib/core/kvi_qstring.h
index ef1e33254..29ce05bfd 100644
--- a/src/kvilib/core/kvi_qstring.h
+++ b/src/kvilib/core/kvi_qstring.h
@@ -517,6 +517,58 @@ namespace KviQString
extern KVILIB_API void cutToLast(QString & szSrc, const QString & szFind, bool bIncluded = true, bool bClearIfNotFound = false);
/**
+ * \brief Returns the string up to the the first occurrence of the given char
+ *
+ * If the char is not found, the string is returned as it is.
+ * \param szSrc The source string
+ * \param c The char to search for
+ * \param bIncluded Wheter to include the given char in the returned string
+ * \param bReturnFullStringIfNotFound True if we want the function to return the whole string if the char isn't found and
+ * false if we want the function to return an empty string in this case.
+ * \return void
+ */
+ extern KVILIB_API QString leftToFirst(QString & szSrc, const QChar & c, bool bIncluded = true, bool bReturnFullStringIfNotFound = true);
+
+ /**
+ * \brief Returns the string up to the first occurrence of the given string
+ *
+ * If the char is not found, the string is returned as it is.
+ * \param szSrc The source string
+ * \param szFind The string to search for
+ * \param bIncluded Wheter to include the given string in the returned string
+ * \param bReturnFullStringIfNotFound True if we want the function to return the whole string if the string isn't found and
+ * false if we want the function to return an empty string in this case.
+ * \return void
+ */
+ extern KVILIB_API QString leftToFirst(QString & szSrc, const QString & szFind, bool bIncluded = true, bool bReturnFullStringIfNotFound = true);
+
+ /**
+ * \brief Returns the string up to the last occurrence of the given char
+ *
+ * If the char is not found, the string is returned as it is.
+ * \param szSrc The source string
+ * \param c The char to search for
+ * \param bIncluded Wheter to include the given char in the returned string
+ * \param bReturnFullStringIfNotFound True if we want the function to return the whole string if the char isn't found and
+ * false if we want the function to return an empty string in this case.
+ * \return void
+ */
+ extern KVILIB_API QString leftToLast(QString & szSrc, const QChar & c, bool bIncluded = true, bool bReturnFullStringIfNotFound = true);
+
+ /**
+ * \brief Returns the string up to the last occurrence of the given string
+ *
+ * If the char is not found, the string is returned as it is.
+ * \param szSrc The source string
+ * \param szFind The string to search for
+ * \param bIncluded Wheter to include the given string in the returned string
+ * \param bReturnFullStringIfNotFound True if we want the function to return the whole string if the string isn't found and
+ * false if we want the function to return an empty string in this case.
+ * \return void
+ */
+ extern KVILIB_API QString leftToLast(QString & szSrc, const QString & szFind, bool bIncluded = true, bool bReturnFullStringIfNotFound = true);
+
+ /**
* \brief Returns an ISO-8859-1 upper case string
* \param szSrc The source string
* \return QString
diff --git a/src/kvilib/core/kvi_string.cpp b/src/kvilib/core/kvi_string.cpp
index bd3c851bd..a7d2f6d39 100644
--- a/src/kvilib/core/kvi_string.cpp
+++ b/src/kvilib/core/kvi_string.cpp
@@ -22,9 +22,6 @@
//
//=============================================================================
-
-
-#define _KVI_DEBUG_CHECK_RANGE_
#include "kvi_debug.h"
#define _KVI_STRING_CPP_
@@ -633,7 +630,7 @@ bool kvi_matchWildExprWithTerminator(register const char *m1,register const char
const char * kvi_extractToken(KviStr &str,const char *aux_ptr,char sep)
{
- __range_valid(aux_ptr);
+ KVI_ASSERT(aux_ptr);
while(*aux_ptr && (*aux_ptr == sep))aux_ptr++;
const char *p=aux_ptr;
while(*p && (*p != sep))p++;
@@ -647,7 +644,7 @@ const char * kvi_extractToken(KviStr &str,const char *aux_ptr,char sep)
const char * kvi_extractUpTo(KviStr &str,const char *aux_ptr,char sep)
{
- __range_valid(aux_ptr);
+ KVI_ASSERT(aux_ptr);
const char *p=aux_ptr;
while(*p && (*p != sep))p++;
str.m_len=p-aux_ptr;
@@ -659,9 +656,9 @@ const char * kvi_extractUpTo(KviStr &str,const char *aux_ptr,char sep)
int kvi_vsnprintf(char *buffer,int len,const char *fmt,kvi_va_list list)
{
- __range_valid(fmt);
- __range_valid(buffer);
- __range_valid(len > 0); //printing 0 characters is senseless
+ KVI_ASSERT(fmt);
+ KVI_ASSERT(buffer);
+ KVI_ASSERT(len > 0); //printing 0 characters is senseless
register char *p;
char *argString;
@@ -777,8 +774,8 @@ int kvi_vsnprintf(char *buffer,int len,const char *fmt,kvi_va_list list)
int kvi_irc_vsnprintf(char *buffer,const char *fmt,kvi_va_list list,bool *bTruncated)
{
- __range_valid(fmt);
- __range_valid(buffer);
+ KVI_ASSERT(fmt);
+ KVI_ASSERT(buffer);
if( !( buffer && fmt) ) return false;
register char *p;
char *argString;
@@ -872,12 +869,12 @@ int kvi_irc_vsnprintf(char *buffer,const char *fmt,kvi_va_list list,bool *bTrunc
}
}
//succesfull finish
- __range_valid(len >= 2);
+ KVI_ASSERT(len >= 2);
*p++ = '\r';
*p = '\n';
return ((p-buffer)+1);
truncate:
- __range_valid(len >= 2);
+ KVI_ASSERT(len >= 2);
*bTruncated = true;
*p++ = '\r';
*p = '\n';
@@ -888,8 +885,8 @@ truncate:
bool kvi_strEqualCS(const char *str1,const char *str2)
{
- __range_valid(str1);
- __range_valid(str2);
+ KVI_ASSERT(str1);
+ KVI_ASSERT(str2);
if( !( str1 && str2 ) ) return false;
register unsigned char *s1 = (unsigned char *)str1;
register unsigned char *s2 = (unsigned char *)str2;
@@ -899,9 +896,9 @@ bool kvi_strEqualCS(const char *str1,const char *str2)
bool kvi_strEqualCSN(const char *str1,const char *str2,int len)
{
- __range_valid(str1);
- __range_valid(str2);
- __range_valid(len >= 0);
+ KVI_ASSERT(str1);
+ KVI_ASSERT(str2);
+ KVI_ASSERT(len >= 0);
if( !( str1 && str2 && (len >= 0) ) ) return false;
register unsigned char *s1 = (unsigned char *)str1;
register unsigned char *s2 = (unsigned char *)str2;
@@ -913,9 +910,9 @@ bool kvi_strEqualCSN(const char *str1,const char *str2,int len)
bool kvi_strEqualCIN(const char *str1,const char *str2,int len)
{
- __range_valid(str1);
- __range_valid(str2);
- __range_valid(len >= 0);
+ KVI_ASSERT(str1);
+ KVI_ASSERT(str2);
+ KVI_ASSERT(len >= 0);
if( !( str1 && str2 && (len >= 0) ) ) return false;
register unsigned char *s1 = (unsigned char *)str1;
register unsigned char *s2 = (unsigned char *)str2;
@@ -925,8 +922,8 @@ bool kvi_strEqualCIN(const char *str1,const char *str2,int len)
bool kvi_strEqualCI(const char *str1,const char *str2)
{
- __range_valid(str1);
- __range_valid(str2);
+ KVI_ASSERT(str1);
+ KVI_ASSERT(str2);
if( !( str1 && str2) ) return false;
register unsigned char *s1 = (unsigned char *)str1;
register unsigned char *s2 = (unsigned char *)str2;
@@ -941,8 +938,8 @@ bool kvi_strEqualCI(const char *str1,const char *str2)
int kvi_strcmpCI(const char *str1,const char *str2)
{
//abcd abce
- __range_valid(str1);
- __range_valid(str2);
+ KVI_ASSERT(str1);
+ KVI_ASSERT(str2);
if( !( str1 && str2) ) return false;
register unsigned char *s1 = (unsigned char *)str1;
register unsigned char *s2 = (unsigned char *)str2;
@@ -960,8 +957,8 @@ int kvi_strcmpCI(const char *str1,const char *str2)
//int kvi_strcmpCIN(const char *str1,const char *str2,int len)
//{
// //abcd abce
-// __range_valid(str1);
-// __range_valid(str2);
+// KVI_ASSERT(str1);
+// KVI_ASSERT(str2);
// register unsigned char *s1 = (unsigned char *)str1;
// register unsigned char *s2 = (unsigned char *)str2;
// int diff;
@@ -977,8 +974,8 @@ int kvi_strcmpCI(const char *str1,const char *str2)
int kvi_strcmpCS(const char *str1,const char *str2)
{
//abcd abce
- __range_valid(str1);
- __range_valid(str2);
+ KVI_ASSERT(str1);
+ KVI_ASSERT(str2);
if( !( str1 && str2) ) return false;
register unsigned char *s1 = (unsigned char *)str1;
register unsigned char *s2 = (unsigned char *)str2;
@@ -989,8 +986,8 @@ int kvi_strcmpCS(const char *str1,const char *str2)
int kvi_strMatchRevCS(const char *str1, const char *str2, int index)
{
- __range_valid(str1);
- __range_valid(str2);
+ KVI_ASSERT(str1);
+ KVI_ASSERT(str2);
if( !( str1 && str2) ) return false;
register char *s1=(char *)str1;
register char *s2=(char *)str2;
@@ -1056,9 +1053,9 @@ KviStr::KviStr(const QByteArray &str)
KviStr::KviStr(const char *str,int len)
{
- __range_valid(str);
- //__range_valid(len <= ((int)strlen(str))); <-- we trust the user here (and a strlen() call may run AFTER len if data is not null terminated)
- __range_valid(len >= 0);
+ KVI_ASSERT(str);
+ //KVI_ASSERT(len <= ((int)strlen(str))); <-- we trust the user here (and a strlen() call may run AFTER len if data is not null terminated)
+ KVI_ASSERT(len >= 0);
m_len = len;
m_ptr = (char *)kvi_malloc(m_len+1);
kvi_fastmove(m_ptr,str,m_len);
@@ -1067,9 +1064,9 @@ KviStr::KviStr(const char *str,int len)
KviStr::KviStr(const char *bg,const char *end)
{
- __range_valid(bg);
- __range_valid(end);
- __range_valid(bg <= end);
+ KVI_ASSERT(bg);
+ KVI_ASSERT(end);
+ KVI_ASSERT(bg <= end);
m_len = end-bg;
m_ptr = (char *)kvi_malloc(m_len +1);
kvi_fastmove(m_ptr,bg,m_len);
@@ -1108,7 +1105,7 @@ KviStr::KviStr(KviFormatConstructorTag,const char *fmt,...)
KviStr::KviStr(const KviStr &str)
{
- __range_valid(str.m_ptr);
+ KVI_ASSERT(str.m_ptr);
m_len = str.m_len;
m_ptr = (char *)kvi_malloc(m_len+1);
kvi_fastmove(m_ptr,str.m_ptr,m_len+1);
@@ -1131,7 +1128,7 @@ KviStr::KviStr(const QString &str)
KviStr::KviStr(char c,int fillLen)
{
- __range_valid(fillLen >= 0);
+ KVI_ASSERT(fillLen >= 0);
m_len = fillLen;
m_ptr = (char *)kvi_malloc(m_len+1);
register char *p=m_ptr;
@@ -1179,7 +1176,7 @@ KviStr::~KviStr()
void KviStr::setLength(int iLen)
{
- __range_valid(iLen >= 0);
+ KVI_ASSERT(iLen >= 0);
m_len = iLen;
m_ptr = (char *)kvi_realloc(m_ptr,m_len+1);
*(m_ptr + m_len) = '\0';
@@ -1187,8 +1184,8 @@ void KviStr::setLength(int iLen)
KviStr & KviStr::operator=(const KviStr &str)
{
- __range_valid(str.m_ptr);
- __range_valid(str.m_ptr != m_ptr);
+ KVI_ASSERT(str.m_ptr);
+ KVI_ASSERT(str.m_ptr != m_ptr);
m_len = str.m_len;
m_ptr = (char *)kvi_realloc(m_ptr,m_len+1);
kvi_fastmove(m_ptr,str.m_ptr,m_len+1);
@@ -1206,7 +1203,7 @@ KviStr & KviStr::operator=(const QByteArray &str)
KviStr & KviStr::operator=(const char *str)
{
- //__range_valid(str);
+ //KVI_ASSERT(str);
if(str){
m_len = (int)strlen(str);
m_ptr = (char *)kvi_realloc(m_ptr,m_len+1);
@@ -1242,7 +1239,7 @@ static char hexdigits[16] = { '0','1','2','3','4','5','6','7','8','9','a','b','c
void KviStr::bufferToHex(const char *buffer,int len)
{
- __range_valid(buffer);
+ KVI_ASSERT(buffer);
m_len = (len * 2);
m_ptr = (char *)kvi_realloc(m_ptr,m_len + 1);
char * aux = m_ptr;
@@ -1523,7 +1520,7 @@ void KviStr::append(char c)
void KviStr::append(const KviStr &str)
{
- __range_valid(str.m_ptr);
+ KVI_ASSERT(str.m_ptr);
m_ptr = (char *)kvi_realloc(m_ptr,m_len+str.m_len+1);
kvi_fastmove((m_ptr+m_len),str.m_ptr,str.m_len+1);
m_len += str.m_len;
@@ -1549,9 +1546,9 @@ void KviStr::append(const QString &str)
void KviStr::append(const char *str,int len)
{
- __range_valid(str);
-// __range_valid(len <= ((int)strlen(str)));
- __range_valid(len >= 0);
+ KVI_ASSERT(str);
+// KVI_ASSERT(len <= ((int)strlen(str)));
+ KVI_ASSERT(len >= 0);
m_ptr = (char *)kvi_realloc(m_ptr,m_len+len+1);
kvi_fastmove((m_ptr+m_len),str,len);
m_len += len;
@@ -1592,9 +1589,9 @@ void KviStr::append(KviFormatConstructorTag ,const char *fmt,...)
void KviStr::extractFromString(const char *begin,const char *end)
{
- __range_valid(begin);
- __range_valid(end);
- __range_valid(end >= begin);
+ KVI_ASSERT(begin);
+ KVI_ASSERT(end);
+ KVI_ASSERT(end >= begin);
m_len = end-begin;
m_ptr = (char *)kvi_realloc(m_ptr,m_len+1);
kvi_fastmove(m_ptr,begin,m_len);
@@ -1603,8 +1600,8 @@ void KviStr::extractFromString(const char *begin,const char *end)
void KviStr::prepend(const KviStr &str)
{
- __range_valid(str.m_ptr);
- __range_valid(str.m_ptr != m_ptr);
+ KVI_ASSERT(str.m_ptr);
+ KVI_ASSERT(str.m_ptr != m_ptr);
m_ptr = (char *)kvi_realloc(m_ptr,m_len+str.m_len+1);
kvi_memmove((m_ptr+str.m_len),m_ptr,m_len+1); //move self
kvi_fastmove(m_ptr,str.m_ptr,str.m_len);
@@ -1623,9 +1620,9 @@ void KviStr::prepend(const char *str)
void KviStr::prepend(const char *str,int len)
{
- __range_valid(str);
- __range_valid(len <= ((int)strlen(str)));
- __range_valid(len >= 0);
+ KVI_ASSERT(str);
+ KVI_ASSERT(len <= ((int)strlen(str)));
+ KVI_ASSERT(len >= 0);
m_ptr = (char *)kvi_realloc(m_ptr,m_len+len+1);
kvi_memmove((m_ptr+len),m_ptr,m_len+1); //move self
kvi_fastmove(m_ptr,str,len);
@@ -1799,8 +1796,8 @@ KviStr KviStr::right(int maxLen) const
KviStr KviStr::middle(int idx,int maxLen) const
{
- __range_valid(maxLen >= 0);
- __range_valid(idx >= 0);
+ KVI_ASSERT(maxLen >= 0);
+ KVI_ASSERT(idx >= 0);
if((maxLen <= 0) || (idx < 0)){ //max len negative...invalid params
KviStr ret;
return ret;
@@ -1917,7 +1914,7 @@ void KviStr::joinFromArray(KviStr ** strings,const char * sep,bool bLastSep)
KviStr & KviStr::insert(int idx,const char *data)
{
- __range_valid(data);
+ KVI_ASSERT(data);
if(idx <= m_len){
int len = (int)strlen(data);
m_ptr = (char *)kvi_realloc(m_ptr,m_len+len+1);
@@ -2179,7 +2176,7 @@ int KviStr::occurences(char c,bool caseS) const
int KviStr::occurences(const char *str,bool caseS) const
{
- __range_valid(str);
+ KVI_ASSERT(str);
register char *p = m_ptr;
int cnt=0;
int len = (int)strlen(str);
@@ -2225,7 +2222,7 @@ bool KviStr::contains(char c,bool caseS) const
bool KviStr::contains(const char *str,bool caseS) const
{
- __range_valid(str);
+ KVI_ASSERT(str);
register char *p = m_ptr;
int len = (int)strlen(str);
if(caseS)
@@ -2470,7 +2467,7 @@ long KviStr::toLongExt(bool *bOk,int base)
KviStr & KviStr::cutLeft(int len)
{
- __range_valid(len >= 0);
+ KVI_ASSERT(len >= 0);
if(len <= m_len){
m_len -= len;
kvi_memmove(m_ptr,m_ptr+len,m_len+1);
@@ -2485,7 +2482,7 @@ KviStr & KviStr::cutLeft(int len)
KviStr & KviStr::cutRight(int len)
{
- __range_valid(len >= 0);
+ KVI_ASSERT(len >= 0);
if(len <= m_len){
m_len -= len;
m_ptr = (char *)kvi_realloc(m_ptr,m_len+1);
@@ -2500,8 +2497,8 @@ KviStr & KviStr::cutRight(int len)
KviStr & KviStr::cut(int idx,int len)
{
- __range_valid(idx >= 0);
- __range_valid(len >= 0);
+ KVI_ASSERT(idx >= 0);
+ KVI_ASSERT(len >= 0);
if(idx < m_len){
// idx = 3 len = 3 m_len = 10
// 0123456789
@@ -2594,7 +2591,7 @@ KviStr & KviStr::cutFromLast(const char *c,bool bIncluded)
KviStr & KviStr::setLen(int len)
{
- __range_valid(len >= 0);
+ KVI_ASSERT(len >= 0);
m_ptr = (char *)kvi_realloc(m_ptr,len+1);
*(m_ptr+len)='\0';
m_len = len;
@@ -2613,7 +2610,7 @@ KviStr & KviStr::stripLeftWhiteSpace()
KviStr & KviStr::stripLeft(char c)
{
- __range_valid(c != '\0');
+ KVI_ASSERT(c != '\0');
register char *p=m_ptr;
while(*p == c)p++;
m_len -= (p-m_ptr);
@@ -2624,8 +2621,8 @@ KviStr & KviStr::stripLeft(char c)
bool KviStr::getToken(KviStr & str,char sep)
{
- __range_valid(str.m_ptr);
- __range_valid(str.m_ptr != m_ptr);
+ KVI_ASSERT(str.m_ptr);
+ KVI_ASSERT(str.m_ptr != m_ptr);
register char *p=m_ptr;
//skip to the end
while(*p && (*p != sep))p++;
@@ -2643,8 +2640,8 @@ bool KviStr::getToken(KviStr & str,char sep)
bool KviStr::getLine(KviStr &str)
{
- __range_valid(str.m_ptr);
- __range_valid(str.m_ptr != m_ptr);
+ KVI_ASSERT(str.m_ptr);
+ KVI_ASSERT(str.m_ptr != m_ptr);
if(m_len == 0)return false;
register char *p=m_ptr;
//skip to the end
@@ -2671,6 +2668,37 @@ KviStr KviStr::getToken(char sep)
return ret;
}
+KviStr & KviStr::vsprintf(const char *fmt,kvi_va_list list)
+{
+ kvi_va_list save;
+ kvi_va_copy(save,list);
+
+ m_ptr=(char *)kvi_realloc(m_ptr,256);
+ //First try
+ //print...with max 256 chars
+ m_len=kvi_vsnprintf(m_ptr,256,fmt,list);
+
+ //check if we failed
+ if(m_len < 0)
+ {
+ //yes , failed....
+ int dummy=256;
+ do { //we failed , so retry with 256 more chars
+ dummy+=256;
+ //realloc
+ m_ptr=(char *)kvi_realloc(m_ptr,dummy);
+ //print...
+ kvi_va_copy(list,save);
+ m_len=kvi_vsnprintf(m_ptr,dummy,fmt,list);
+ } while (m_len < 0);
+ }
+ //done...
+ //now m_len is the length of the written string not including the terminator...
+ //perfect! :)
+ m_ptr=(char *)kvi_realloc(m_ptr,m_len+1);
+ return (*this);
+}
+
KviStr & KviStr::sprintf(const char *fmt,...)
{
m_ptr=(char *)kvi_realloc(m_ptr,256);
@@ -2787,7 +2815,7 @@ int KviStr::findFirstIdx(const char *str,bool caseS) const
// a position in QString() does not map to the position in the char array
// since a single UNICODE char may use one or more bytes...
- __range_valid(str);
+ KVI_ASSERT(str);
register char *p=m_ptr;
int len = (int)strlen(str);
if(caseS){
@@ -2832,7 +2860,7 @@ int KviStr::findLastIdx(const char *str,bool caseS) const
// return QString(m_ptr).findRev(QString(str),-1,caseS);
- __range_valid(str);
+ KVI_ASSERT(str);
//Calc the len of the searched string
int len = (int)strlen(str);
//Too long ?
diff --git a/src/kvilib/core/kvi_string.h b/src/kvilib/core/kvi_string.h
index 381c97927..ae166ce54 100644
--- a/src/kvilib/core/kvi_string.h
+++ b/src/kvilib/core/kvi_string.h
@@ -229,6 +229,8 @@ public:
// Safe sprintf. This one will never write past the end of the string
// It can handle only %s %d %u and %c format flags.
KviStr & sprintf(const char *fmt,...);
+
+ KviStr & vsprintf(const char *fmt,kvi_va_list list);
// append functions
void append(const KviStr &str);
diff --git a/src/kvilib/ext/kvi_databuffer.cpp b/src/kvilib/ext/kvi_databuffer.cpp
index a381c9872..3c2f4b605 100644
--- a/src/kvilib/ext/kvi_databuffer.cpp
+++ b/src/kvilib/ext/kvi_databuffer.cpp
@@ -35,7 +35,7 @@
KviDataBuffer::KviDataBuffer(int uSize,const unsigned char * data)
{
- __range_valid(uSize > 0);
+ KVI_ASSERT(uSize > 0);
m_uSize = uSize;
m_pData = (unsigned char *)kvi_malloc(sizeof(unsigned char) * uSize);
if(data)kvi_memmove(m_pData,data,uSize);
@@ -51,7 +51,7 @@ KviDataBuffer::~KviDataBuffer()
{
if(m_pData)
{
- __range_valid(m_uSize);
+ KVI_ASSERT(m_uSize);
kvi_free(m_pData);
}
}
@@ -100,7 +100,7 @@ int KviDataBuffer::find(unsigned char c)
void KviDataBuffer::remove(int uSize)
{
- __range_valid((uSize <= m_uSize) && (uSize > 0));
+ KVI_ASSERT((uSize <= m_uSize) && (uSize > 0));
m_uSize -= uSize;
@@ -116,7 +116,7 @@ void KviDataBuffer::remove(int uSize)
void KviDataBuffer::resize(int uSize)
{
- __range_valid(uSize >= 0);
+ KVI_ASSERT(uSize >= 0);
if(uSize > 0)
{
m_pData = (unsigned char *)kvi_realloc(m_pData,uSize * sizeof(unsigned char));
diff --git a/src/kvilib/ext/kvi_debugcontext.cpp b/src/kvilib/ext/kvi_debugcontext.cpp
new file mode 100644
index 000000000..160057f2b
--- /dev/null
+++ b/src/kvilib/ext/kvi_debugcontext.cpp
@@ -0,0 +1,70 @@
+//=============================================================================
+//
+// File : kvi_debugcontext.cpp
+// Creation date : Tue 13 Jul 2010 23:27:23
+// Project : KVIrc Irc client
+// Author : Szymon Stefanek <pragma at kvirc dot net>
+//
+//=============================================================================
+
+#include "kvi_debugcontext.h"
+
+#include "kvi_stdarg.h"
+#include "kvi_string.h"
+#include "kvi_debug.h"
+
+
+static KviStr g_szIndentPrefix;
+
+KviDebugContext::KviDebugContext(const char * szContext,...)
+{
+ kvi_va_list list;
+ kvi_va_start(list,szContext);
+
+ m_szContext.vsprintf(szContext,list);
+
+ kvi_va_end(list);
+
+ static KviStr szEnterMark = ">> %s";
+
+ KviStr szPrefix = g_szIndentPrefix;
+ szPrefix.append(szEnterMark);
+
+ qDebug(szPrefix.ptr(),m_szContext.ptr());
+
+ g_szIndentPrefix.append(" ");
+}
+
+
+KviDebugContext::~KviDebugContext()
+{
+ KVI_ASSERT(g_szIndentPrefix.len() >= 2);
+
+ g_szIndentPrefix.cutRight(2);
+
+ static KviStr szExitMark = "<< %s";
+
+ KviStr szPrefix = g_szIndentPrefix;
+ szPrefix.append(szExitMark);
+
+ qDebug(szPrefix.ptr(),m_szContext.ptr());
+}
+
+void KviDebugContext::trace(const char * szFmt,...)
+{
+ kvi_va_list list;
+ kvi_va_start(list,szFmt);
+
+ KviStr szOut;
+ szOut.vsprintf(szFmt,list);
+
+ kvi_va_end(list);
+
+ static KviStr szEnterMark = "-- %s";
+
+ KviStr szPrefix = g_szIndentPrefix;
+ szPrefix.append(szEnterMark);
+
+ qDebug(szPrefix.ptr(),szOut.ptr());
+}
+
diff --git a/src/kvilib/ext/kvi_debugcontext.h b/src/kvilib/ext/kvi_debugcontext.h
new file mode 100644
index 000000000..c5692bd4b
--- /dev/null
+++ b/src/kvilib/ext/kvi_debugcontext.h
@@ -0,0 +1,49 @@
+#ifndef _kvi_debugcontext_h_
+#define _kvi_debugcontext_h_
+//=============================================================================
+//
+// File : kvi_debugcontext.h
+// Creation date : Tue 13 Jul 2010 23:27:23
+// Project : KVIrc Irc client
+// Author : Szymon Stefanek <pragma at kvirc dot net>
+//
+//=============================================================================
+
+#include "kvi_settings.h"
+#include "kvi_string.h"
+
+///
+/// \class KviDebugContext
+/// \brief The KviDebugContext class
+///
+/// This class...
+///
+class KVILIB_API KviDebugContext
+{
+public:
+
+ ///
+ /// Creates an instance of KviDebugContext
+ ///
+ KviDebugContext(const char * szContext,...);
+
+ ///
+ /// Destroys the instance of KviDebugContext
+ /// and frees all the relevant resources
+ ///
+ ~KviDebugContext();
+
+public:
+ static void trace(const char * szFmt,...);
+
+private:
+ KviStr m_szContext;
+
+private:
+ KviDebugContext(const KviDebugContext &){};
+ const KviDebugContext & operator = (const KviDebugContext &){ return *this; };
+
+}; // class KviDebugContext
+
+
+#endif //!_kvi_debugcontext_h_
diff --git a/src/kvilib/ext/kvi_mediatype.cpp b/src/kvilib/ext/kvi_mediatype.cpp
index 4b29a930b..da0140a2c 100644
--- a/src/kvilib/ext/kvi_mediatype.cpp
+++ b/src/kvilib/ext/kvi_mediatype.cpp
@@ -89,7 +89,7 @@ KviMediaManager::~KviMediaManager()
KviMediaType * KviMediaManager::findMediaTypeByIanaType(const char * ianaType)
{
- __range_valid(locked());
+ KVI_ASSERT(locked());
for(KviMediaType * mt = m_pMediaTypeList->first();mt;mt = m_pMediaTypeList->next())
{
if(kvi_strEqualCI(mt->szIanaType.ptr(),ianaType))return mt;
@@ -100,7 +100,7 @@ KviMediaType * KviMediaManager::findMediaTypeByIanaType(const char * ianaType)
KviMediaType * KviMediaManager::findMediaTypeByFileMask(const char * filemask)
{
- __range_valid(locked());
+ KVI_ASSERT(locked());
for(KviMediaType * mt = m_pMediaTypeList->first();mt;mt = m_pMediaTypeList->next())
{
// FIXME: #warning "Should this be case sensitive ?"
@@ -125,7 +125,7 @@ void KviMediaManager::copyMediaType(KviMediaType * dst,KviMediaType * src)
void KviMediaManager::insertMediaType(KviMediaType * m)
{
- __range_valid(locked());
+ KVI_ASSERT(locked());
int iWildCount = m->szFileMask.occurences('*');
int iNonWildCount = m->szFileMask.len() - iWildCount;
@@ -236,7 +236,7 @@ void KviMediaManager::insertMediaType(KviMediaType * m)
KviMediaType * KviMediaManager::findMediaType(const char * filename,bool bCheckMagic)
{
// FIXME: This should be ported at least to QString....
- __range_valid(locked());
+ KVI_ASSERT(locked());
KviStr szFullPath = filename;
if(!KviFileUtils::isAbsolutePath(szFullPath.ptr()))
@@ -455,7 +455,7 @@ static KviDefaultMediaType g_defMediaTypes[]=
void KviMediaManager::load(const QString &filename)
{
- __range_valid(locked());
+ KVI_ASSERT(locked());
KviConfig cfg(filename,KviConfig::Read);
cfg.setGroup("MediaTypes");
@@ -500,7 +500,7 @@ void KviMediaManager::load(const QString &filename)
void KviMediaManager::save(const QString &filename)
{
- __range_valid(locked());
+ KVI_ASSERT(locked());
KviConfig cfg(filename,KviConfig::Write);
cfg.clear();
diff --git a/src/kvilib/ext/kvi_regchan.cpp b/src/kvilib/ext/kvi_regchan.cpp
index 6f45dd398..6f764d199 100644
--- a/src/kvilib/ext/kvi_regchan.cpp
+++ b/src/kvilib/ext/kvi_regchan.cpp
@@ -26,13 +26,13 @@
#include "kvi_regchan.h"
#include "kvi_config.h"
#include "kvi_qstring.h"
+#include "kvi_debug.h"
-KviRegisteredChannel::KviRegisteredChannel(const KviStr &name,const KviStr &netmask)
+KviRegisteredChannel::KviRegisteredChannel(const QString &name,const QString &netmask)
{
m_szName = name;
m_szNetMask = netmask;
- m_pPropertyDict = new KviPointerHashTable<const char *,KviStr>(7,false,true);
- m_pPropertyDict->setAutoDelete(true);
+ m_pPropertyDict = new QHash<QString,QString>();
}
KviRegisteredChannel::~KviRegisteredChannel()
@@ -44,31 +44,35 @@ KviRegisteredChannel::~KviRegisteredChannel()
KviRegisteredChannelDataBase::KviRegisteredChannelDataBase()
{
- m_pChannelDict = new KviPointerHashTable<const char *,KviRegisteredChannelList>(17,false,true);
- m_pChannelDict->setAutoDelete(true);
+ m_pChannelDict = new QHash<QString,KviRegisteredChannelList *>();
}
KviRegisteredChannelDataBase::~KviRegisteredChannelDataBase()
{
+ qDeleteAll(*m_pChannelDict);
delete m_pChannelDict;
}
void KviRegisteredChannelDataBase::load(const QString &filename)
{
KviConfig cfg(filename,KviConfig::Read);
+
+ qDeleteAll(*m_pChannelDict);
m_pChannelDict->clear();
+
KviConfigIterator it(*(cfg.dict()));
+
while(KviConfigGroup * d = it.current())
{
- KviStr szMask = it.currentKey();
- KviStr szChan = szMask.leftToLast('@');
- szMask.cutToLast('@');
+ QString szMask = it.currentKey();
+ QString szChan = KviQString::leftToLast(szMask,QChar('@'),false);
+ KviQString::cutToLast(szMask,QChar('@'),true);
KviRegisteredChannel * c = new KviRegisteredChannel(szChan,szMask);
add(c);
KviConfigGroupIterator sit(*d);
while(QString * s = sit.current())
{
- c->setProperty(KviQString::toUtf8(sit.currentKey()).data(),new KviStr(*s));
+ c->setProperty(sit.currentKey(),*s);
++sit;
}
++it;
@@ -81,50 +85,61 @@ void KviRegisteredChannelDataBase::save(const QString &filename)
cfg.clear();
cfg.preserveEmptyGroups(true);
- KviPointerHashTableIterator<const char *,KviRegisteredChannelList> it(*m_pChannelDict);
- while(KviRegisteredChannelList * l = it.current())
+ for(QHash<QString,KviRegisteredChannelList *>::Iterator it = m_pChannelDict->begin();it != m_pChannelDict->end();++it)
{
+ KviRegisteredChannelList * l = it.value();
+ KVI_ASSERT(l);
+
for(KviRegisteredChannel * c = l->first();c;c = l->next())
{
- KviStr szGrp(KviStr::Format,"%s@%s",c->name().ptr(),c->netMask().ptr());
- cfg.setGroup(szGrp.ptr());
- KviPointerHashTableIterator<const char *,KviStr> pit(*(c->propertyDict()));
- while(KviStr * s = pit.current())
- {
- cfg.writeEntry(pit.currentKey(),s->ptr());
- ++pit;
- }
+ QString szGroup = QString::fromUtf8("%1@%2").arg(c->name(),c->netMask());
+ cfg.setGroup(szGroup);
+
+ QHash<QString,QString> * pPropertyDict = c->propertyDict();
+ KVI_ASSERT(pPropertyDict);
+
+ for(QHash<QString,QString>::Iterator it2 = pPropertyDict->begin();it2 != pPropertyDict->end();++it2)
+ cfg.writeEntry(it2.key(),it2.value());
}
- ++it;
}
}
-KviRegisteredChannel * KviRegisteredChannelDataBase::find(const char * name,const char * net)
+KviRegisteredChannel * KviRegisteredChannelDataBase::find(const QString &name,const QString &net)
{
- KviRegisteredChannelList * l = m_pChannelDict->find(name);
- if(!l)return 0;
+ KviRegisteredChannelList * l = m_pChannelDict->value(name);
+
+ if(!l)
+ return 0;
+
for(KviRegisteredChannel * c = l->first();c;c = l->next())
{
- if(kvi_matchString(c->netMask().ptr(),net))return c;
+ if(KviQString::matchWildExpressions(c->netMask(),net))
+ return c;
}
return 0;
}
-KviRegisteredChannel * KviRegisteredChannelDataBase::findExact(const char * name,const char * netmask)
+KviRegisteredChannel * KviRegisteredChannelDataBase::findExact(const QString &name,const QString &netmask)
{
- KviRegisteredChannelList * l = m_pChannelDict->find(name);
- if(!l)return 0;
+ KviRegisteredChannelList * l = m_pChannelDict->value(name);
+
+ if(!l)
+ return 0;
+
for(KviRegisteredChannel * c = l->first();c;c = l->next())
{
- if(kvi_strEqualCI(c->netMask().ptr(),netmask))return c;
+ if(KviQString::equalCI(c->netMask(),netmask))
+ return c;
}
+
return 0;
}
void KviRegisteredChannelDataBase::remove(KviRegisteredChannel * c)
{
- KviRegisteredChannelList * l = m_pChannelDict->find(c->name().ptr());
+ KVI_TRACE_FUNCTION;
+ KviRegisteredChannelList * l = m_pChannelDict->value(c->name());
if(!l)return;
for(KviRegisteredChannel * ch = l->first();ch;ch = l->next())
{
@@ -132,7 +147,8 @@ void KviRegisteredChannelDataBase::remove(KviRegisteredChannel * c)
{
if(l->count() <= 1)
{
- m_pChannelDict->remove(c->name().ptr());
+ m_pChannelDict->remove(c->name());
+ delete l; // will kill the channel too
} else {
l->removeRef(c);
}
@@ -144,31 +160,38 @@ void KviRegisteredChannelDataBase::remove(KviRegisteredChannel * c)
void KviRegisteredChannelDataBase::add(KviRegisteredChannel * c)
{
- KviRegisteredChannel * old = findExact(c->name().ptr(),c->netMask().ptr());
+ KviRegisteredChannel * old = findExact(c->name(),c->netMask());
+
if(old)
{
- KviPointerHashTableIterator<const char *,KviStr> pit(*(old->propertyDict()));
- while(KviStr *s = pit.current())
+ // merge properties
+ QHash<QString,QString> * pPropertyDict = old->propertyDict();
+ KVI_ASSERT(pPropertyDict);
+
+ for(QHash<QString,QString>::Iterator it = pPropertyDict->begin();it != pPropertyDict->end();++it)
{
- if(!c->property(pit.currentKey()))
- c->setProperty(pit.currentKey(),new KviStr(*s));
- ++pit;
+ if(!c->property(it.key()).isEmpty())
+ c->setProperty(it.key(),it.value());
}
+
remove(old);
}
- KviRegisteredChannelList * l = m_pChannelDict->find(c->name().ptr());
+
+ KviRegisteredChannelList * l = m_pChannelDict->value(c->name());
if(!l)
{
- l = new KviRegisteredChannelList;
+ l = new KviRegisteredChannelList();
l->setAutoDelete(true);
- m_pChannelDict->insert(c->name().ptr(),l);
+ m_pChannelDict->insert(c->name(),l);
}
+
// insert where there are less wildcards
- int o = c->netMask().occurences('*');
+ int o = c->netMask().count(QChar('*'));
+
int idx = 0;
for(KviRegisteredChannel * rc = l->first();rc;rc = l->next())
{
- if(rc->netMask().occurences('*') > o)
+ if(rc->netMask().count(QChar('*')) > o)
{
// the existing has more wildcards , insert here!
l->insert(idx,c);
@@ -176,5 +199,7 @@ void KviRegisteredChannelDataBase::add(KviRegisteredChannel * c)
}
idx++;
}
+
l->append(c);
}
+
diff --git a/src/kvilib/ext/kvi_regchan.h b/src/kvilib/ext/kvi_regchan.h
index bb280524d..523b3997b 100644
--- a/src/kvilib/ext/kvi_regchan.h
+++ b/src/kvilib/ext/kvi_regchan.h
@@ -28,26 +28,49 @@
#include "kvi_heapobject.h"
#include "kvi_string.h"
#include "kvi_pointerlist.h"
-#include "kvi_pointerhashtable.h"
+
+#include <QHash>
class KVILIB_API KviRegisteredChannel : public KviHeapObject
{
friend class KviRegisteredChannelDataBase;
public:
- KviRegisteredChannel(const KviStr &name,const KviStr &netmask);
+ KviRegisteredChannel(const QString &name,const QString &netmask);
~KviRegisteredChannel();
protected:
- KviStr m_szName;
- KviStr m_szNetMask;
- KviPointerHashTable<const char *,KviStr> * m_pPropertyDict;
+ QString m_szName;
+ QString m_szNetMask;
+ QHash<QString,QString> * m_pPropertyDict;
public:
- KviPointerHashTable<const char *,KviStr> * propertyDict(){ return m_pPropertyDict; };
- const KviStr & name(){ return m_szName; };
- const KviStr & netMask(){ return m_szNetMask; };
- KviStr * property(const char * name){ return m_pPropertyDict->find(name); };
- // val must be allocated with NEW!
- void setProperty(const char * name,KviStr * val){ m_pPropertyDict->replace(name,val); };
- void removeProperty(const char * name){ m_pPropertyDict->remove(name); };
+ QHash<QString,QString> * propertyDict()
+ {
+ return m_pPropertyDict;
+ }
+
+ const QString & name()
+ {
+ return m_szName;
+ }
+
+ const QString & netMask()
+ {
+ return m_szNetMask;
+ }
+
+ QString property(const QString &name)
+ {
+ return m_pPropertyDict->value(name);
+ }
+
+ void setProperty(const QString &name,const QString &val)
+ {
+ m_pPropertyDict->insert(name,val);
+ }
+
+ void removeProperty(const QString &name)
+ {
+ m_pPropertyDict->remove(name);
+ }
};
typedef KVILIB_API_TYPEDEF KviPointerList<KviRegisteredChannel> KviRegisteredChannelList;
@@ -58,13 +81,20 @@ public:
KviRegisteredChannelDataBase();
~KviRegisteredChannelDataBase();
protected:
- KviPointerHashTable<const char *,KviRegisteredChannelList> * m_pChannelDict;
+ QHash<QString,KviRegisteredChannelList *> * m_pChannelDict;
public:
- KviPointerHashTable<const char *,KviRegisteredChannelList> * channelDict(){ return m_pChannelDict; };
- KviRegisteredChannel * find(const char * name,const char * net);
- KviRegisteredChannel * findExact(const char * name,const char * netmask);
+ QHash<QString,KviRegisteredChannelList *> * channelDict()
+ {
+ return m_pChannelDict;
+ }
+
+ KviRegisteredChannel * find(const QString &name,const QString &net);
+
+ KviRegisteredChannel * findExact(const QString &name,const QString &netmask);
+
void remove(KviRegisteredChannel * c);
void add(KviRegisteredChannel * c);
+
void load(const QString &filename);
void save(const QString &filename);
};
diff --git a/src/kvilib/ext/kvi_regusersdb.cpp b/src/kvilib/ext/kvi_regusersdb.cpp
index 83b19243f..af7906be3 100644
--- a/src/kvilib/ext/kvi_regusersdb.cpp
+++ b/src/kvilib/ext/kvi_regusersdb.cpp
@@ -373,7 +373,7 @@ static void append_mask_to_list(KviRegisteredMaskList *l,KviRegisteredUser *u,Kv
KviRegisteredUser * KviRegisteredUserDataBase::addMask(KviRegisteredUser * u,KviIrcMask * mask)
{
if(!u || !mask) return 0;
- __range_valid(u == m_pUserDict->find(u->name()));
+ KVI_ASSERT(u == m_pUserDict->find(u->name()));
KviRegisteredMaskList * l;
if(mask->hasWildNick())
diff --git a/src/kvilib/irc/kvi_ircmask.cpp b/src/kvilib/irc/kvi_ircmask.cpp
index d00cc3c01..3a34078af 100644
--- a/src/kvilib/irc/kvi_ircmask.cpp
+++ b/src/kvilib/irc/kvi_ircmask.cpp
@@ -94,7 +94,7 @@
/*
const char * KviIrcMask::setMask(const char *szMask,char c)
{
- __range_valid(szMask);
+ KVI_ASSERT(szMask);
//nick!username@host.top
//0123456789
register const char *p=szMask;
@@ -150,7 +150,7 @@ const char * KviIrcMask::setMask(const char *szMask,char c)
const char * KviIrcMask::setUserhostMask(const char *szMask)
{
- __range_valid(szMask);
+ KVI_ASSERT(szMask);
//nick[*]=<+!->username@host.top
//0123456789
register const char *p=szMask;
diff --git a/src/kvilib/system/kvi_stdarg.h b/src/kvilib/system/kvi_stdarg.h
index 7dadb8b92..b038b34f7 100644
--- a/src/kvilib/system/kvi_stdarg.h
+++ b/src/kvilib/system/kvi_stdarg.h
@@ -57,9 +57,18 @@
#else
#define kvi_va_start_by_reference va_start
#endif
+
#define kvi_va_arg va_arg
#define kvi_va_end va_end
+#ifdef va_copy
+ #define kvi_va_copy(a,b) va_copy(a,b)
+#elif defined(__va_copy)
+ #define kvi_va_copy(a,b) __va_copy(a,b)
+#else
+ #define kvi_va_copy(a,b) ((a) = (b))
+#endif
+
#endif //_KVI_STDARG_H_
diff --git a/src/kvirc/kernel/kvi_ircconnection.cpp b/src/kvirc/kernel/kvi_ircconnection.cpp
index 16f4632b7..57046a4d6 100644
--- a/src/kvirc/kernel/kvi_ircconnection.cpp
+++ b/src/kvirc/kernel/kvi_ircconnection.cpp
@@ -812,7 +812,7 @@ bool KviIrcConnection::sendData(const char * pcBuffer, int iBuflen)
void KviIrcConnection::delayedStartNotifyList()
{
- __range_invalid(m_pNotifyListTimer);
+ KVI_ASSERT(!m_pNotifyListTimer);
if(m_pNotifyListTimer)
delete m_pNotifyListTimer;
@@ -1373,7 +1373,6 @@ void KviIrcConnection::nickChange(const QString & szNewNick)
bool KviIrcConnection::changeUserMode(char cMode, bool bSet)
{
- __range_valid(m_pConnectionInfo);
if(bSet)
{
if(m_pUserInfo->hasUserMode(cMode))
diff --git a/src/kvirc/kernel/kvi_ircconnectiontargetresolver.cpp b/src/kvirc/kernel/kvi_ircconnectiontargetresolver.cpp
index 66f048ff4..06b7207a3 100644
--- a/src/kvirc/kernel/kvi_ircconnectiontargetresolver.cpp
+++ b/src/kvirc/kernel/kvi_ircconnectiontargetresolver.cpp
@@ -46,8 +46,6 @@
#include "kvi_ircconnectiontarget.h"
#include "kvi_ircsocket.h"
#include "kvi_error.h"
-
-#define __KVI_DEBUG__
#include "kvi_debug.h"
#include <stdlib.h>
@@ -121,7 +119,7 @@ void KviIrcConnectionTargetResolver::cleanup()
void KviIrcConnectionTargetResolver::start(KviIrcConnectionTarget * t)
{
- __ASSERT(m_eState == Idle);
+ KVI_ASSERT(m_eState == Idle);
m_eState = Running;
@@ -576,7 +574,7 @@ void KviIrcConnectionTargetResolver::haveServerIp()
void KviIrcConnectionTargetResolver::terminate(Status s,int iLastError)
{
- __ASSERT(m_eState != Terminated);
+ KVI_ASSERT(m_eState != Terminated);
cleanup(); // do a cleanup anyway
m_eState = Terminated;
m_eStatus = s;
diff --git a/src/kvirc/kernel/kvi_irccontext.cpp b/src/kvirc/kernel/kvi_irccontext.cpp
index e8a80d374..242ec388c 100644
--- a/src/kvirc/kernel/kvi_irccontext.cpp
+++ b/src/kvirc/kernel/kvi_irccontext.cpp
@@ -206,7 +206,7 @@ KviChannel * KviIrcContext::findDeadChannel(const QString &name)
if(!m_pDeadChannels)return 0;
for(KviChannel * c = m_pDeadChannels->first();c;c = m_pDeadChannels->next())
{
- __range_valid(c->isDeadChan());
+ KVI_ASSERT(c->isDeadChan());
if(KviQString::equalCI(name,c->windowName()))return c;
}
return 0;
@@ -217,7 +217,7 @@ KviQuery * KviIrcContext::findDeadQuery(const QString &name)
if(!m_pDeadQueries)return 0;
for(KviQuery * c = m_pDeadQueries->first();c;c = m_pDeadQueries->next())
{
- __range_valid(c->isDeadQuery());
+ KVI_ASSERT(c->isDeadQuery());
if(KviQString::equalCI(name,c->windowName()))return c;
}
return 0;
@@ -901,7 +901,7 @@ void KviIrcContext::terminateConnectionRequest(bool bForce, const QString & szQu
break;
default:
// should never end here!
- __ASSERT(false);
+ KVI_ASSERT(false);
break;
}
}
diff --git a/src/kvirc/kernel/kvi_irclink.cpp b/src/kvirc/kernel/kvi_irclink.cpp
index 464589748..88ff1e1ca 100644
--- a/src/kvirc/kernel/kvi_irclink.cpp
+++ b/src/kvirc/kernel/kvi_irclink.cpp
@@ -45,8 +45,6 @@
#include "kvi_ircconnectiontargetresolver.h"
#include "kvi_ircsocket.h"
#include "kvi_databuffer.h"
-
-#define __KVI_DEBUG__
#include "kvi_debug.h"
#include <QTimer>
@@ -241,7 +239,7 @@ void KviIrcLink::processData(char * buffer, int iLen)
//check for previous unterminated data
if(m_uReadBufferLen > 0)
{
- __range_valid(m_pReadBuffer);
+ KVI_ASSERT(m_pReadBuffer);
cMessageBuffer = (char *)kvi_realloc(cMessageBuffer,iBufLen + m_uReadBufferLen + 1);
kvi_memmove(cMessageBuffer,m_pReadBuffer,m_uReadBufferLen);
kvi_memmove((void *)(cMessageBuffer + m_uReadBufferLen),cBeginOfCurData,iBufLen);
@@ -250,7 +248,7 @@ void KviIrcLink::processData(char * buffer, int iLen)
kvi_free(m_pReadBuffer);
m_pReadBuffer = 0;
} else {
- __range_invalid(m_pReadBuffer);
+ KVI_ASSERT(!m_pReadBuffer);
cMessageBuffer = (char *)kvi_realloc(cMessageBuffer,iBufLen + 1);
kvi_memmove(cMessageBuffer,cBeginOfCurData,iBufLen);
*(cMessageBuffer + iBufLen) = '\0';
@@ -302,13 +300,13 @@ void KviIrcLink::processData(char * buffer, int iLen)
if(m_uReadBufferLen > 0)
{
//and there was more stuff saved... (really slow connection)
- __range_valid(m_pReadBuffer);
+ KVI_ASSERT(m_pReadBuffer);
m_pReadBuffer =(char *)kvi_realloc(m_pReadBuffer,m_uReadBufferLen + iBufLen);
kvi_memmove((void *)(m_pReadBuffer+m_uReadBufferLen),cBeginOfCurData,iBufLen);
m_uReadBufferLen += iBufLen;
} else {
//
- __range_invalid(m_pReadBuffer);
+ KVI_ASSERT(!m_pReadBuffer);
m_uReadBufferLen = iBufLen;
m_pReadBuffer =(char *)kvi_malloc(m_uReadBufferLen);
kvi_memmove(m_pReadBuffer,cBeginOfCurData,m_uReadBufferLen);
diff --git a/src/kvirc/kernel/kvi_ircsocket.cpp b/src/kvirc/kernel/kvi_ircsocket.cpp
index 14e77e84a..a0939b4f0 100644
--- a/src/kvirc/kernel/kvi_ircsocket.cpp
+++ b/src/kvirc/kernel/kvi_ircsocket.cpp
@@ -1294,7 +1294,7 @@ void KviIrcSocket::raiseSSLError()
void KviIrcSocket::doSSLHandshake(int)
{
#ifdef COMPILE_SSL_SUPPORT
- __range_valid(m_pSSL);
+ KVI_ASSERT(m_pSSL);
if(m_pRsn)
{
@@ -1526,7 +1526,7 @@ void KviIrcSocket::processData(char * buffer,int)
bufLen = p - beginOfCurData;
//check for previous unterminated data
if(m_uReadBufferLen > 0){
- __range_valid(m_pReadBuffer);
+ KVI_ASSERT(m_pReadBuffer);
messageBuffer = (char *)kvi_realloc(messageBuffer,bufLen + m_uReadBufferLen + 1);
kvi_memmove(messageBuffer,m_pReadBuffer,m_uReadBufferLen);
kvi_memmove((void *)(messageBuffer + m_uReadBufferLen),beginOfCurData,bufLen);
@@ -1587,7 +1587,7 @@ void KviIrcSocket::processData(char * buffer,int)
bufLen = p - beginOfCurData;
if(m_uReadBufferLen > 0){
//and there was more stuff saved... (really slow connection)
- __range_valid(m_pReadBuffer);
+ KVI_ASSERT(m_pReadBuffer);
m_pReadBuffer =(char *)kvi_realloc(m_pReadBuffer,m_uReadBufferLen + bufLen);
kvi_memmove((void *)(m_pReadBuffer+m_uReadBufferLen),beginOfCurData,bufLen);
m_uReadBufferLen += bufLen;
@@ -1627,7 +1627,7 @@ void KviIrcSocket::abort()
void KviIrcSocket::handleInvalidSocketRead(int iReadLength)
{
- __range_valid(iReadLength <= 0);
+ KVI_ASSERT(iReadLength <= 0);
if(iReadLength == 0)
{
raiseError(KviError_remoteEndClosedConnection);
@@ -1652,9 +1652,8 @@ void KviIrcSocket::handleInvalidSocketRead(int iReadLength)
void KviIrcSocket::queue_insertMessage(KviIrcSocketMsgEntry * pMsg)
{
- __range_valid(pMsg);
- __range_valid(pMsg->data_ptr);
- __range_valid(pMsg->data_len);
+ KVI_ASSERT(pMsg);
+
pMsg->next_ptr = 0;
if(m_pSendQueueHead)
@@ -1678,8 +1677,8 @@ void KviIrcSocket::free_msgEntry(KviIrcSocketMsgEntry * e)
bool KviIrcSocket::queue_removeMessage()
{
- __range_valid(m_pSendQueueTail);
- __range_valid(m_pSendQueueHead);
+ KVI_ASSERT(m_pSendQueueTail);
+ KVI_ASSERT(m_pSendQueueHead);
if(m_pSendQueueHead->pData)
delete m_pSendQueueHead->pData;
@@ -1708,7 +1707,7 @@ void KviIrcSocket::flushSendQueue()
m_pFlushTimer->stop();
// Ok...have something to send...
- __range_valid(m_state != Idle);
+ KVI_ASSERT(m_state != Idle);
struct timeval curTime;
diff --git a/src/kvirc/kernel/kvi_notifylist.cpp b/src/kvirc/kernel/kvi_notifylist.cpp
index ec7ae1641..08b30099b 100644
--- a/src/kvirc/kernel/kvi_notifylist.cpp
+++ b/src/kvirc/kernel/kvi_notifylist.cpp
@@ -960,7 +960,7 @@ void KviStupidNotifyListManager::sendIsOn()
{
m_szLastIsOnMsg = "";
QString * nick = m_pNickList->at(m_iNextNickToCheck);
- __range_valid(nick);
+ KVI_ASSERT(nick);
int i = 0;
while(nick && ((nick->length() + 5 + m_szLastIsOnMsg.length()) < 510))
diff --git a/src/kvirc/kvs/kvi_kvs_object.cpp b/src/kvirc/kvs/kvi_kvs_object.cpp
index f411479ab..d54dd42d8 100644
--- a/src/kvirc/kvs/kvi_kvs_object.cpp
+++ b/src/kvirc/kvs/kvi_kvs_object.cpp
@@ -800,10 +800,10 @@ bool KviKvsObject::disconnectSignal(const QString &sigName,KviKvsObjectConnectio
{
if(!m_pSignalDict)return false;
KviKvsObjectConnectionList * l = m_pSignalDict->find(sigName);
- //__range_valid(l);
+ //KVI_ASSERT(l);
if(!l)return false;
pConnection->pTargetObject->unregisterConnection(pConnection);
- //__range_valid(l->findRef(pConnection) > -1);
+ //KVI_ASSERT(l->findRef(pConnection) > -1);
l->removeRef(pConnection);
if(l->isEmpty())m_pSignalDict->remove(sigName);
if(m_pSignalDict->isEmpty())
diff --git a/src/kvirc/ui/kvi_console.cpp b/src/kvirc/ui/kvi_console.cpp
index e6db5117c..c4db4f598 100644
--- a/src/kvirc/ui/kvi_console.cpp
+++ b/src/kvirc/ui/kvi_console.cpp
@@ -692,7 +692,7 @@ void KviConsole::outputPrivmsg(KviWindow *wnd,
{
// FIXME: #warning "THIS IS USED BY WINDOWS THAT ARE NOT BOUND TO THIS IRC CONTEXT"
// FIXME: #warning "REMEMBER IT IN ESCAPE COMMANDS"
- // __range_valid(wnd);
+ // KVI_ASSERT(wnd);
bool bIsChan = (wnd->type() == KVI_WINDOW_TYPE_CHANNEL);
bool bIsNotice = ((type == KVI_OUT_CHANNELNOTICE)||(type == KVI_OUT_CHANNELNOTICECRYPTED) \
diff --git a/src/kvirc/ui/kvi_console.h b/src/kvirc/ui/kvi_console.h
index 2b19b7859..f5a699b65 100644
--- a/src/kvirc/ui/kvi_console.h
+++ b/src/kvirc/ui/kvi_console.h
@@ -229,7 +229,7 @@ inline int KviConsole::selectedCount()
inline bool KviConsole::isIPv6Connection()
{
- __range_valid(connection());
+ KVI_ASSERT(connection());
return connection()->target()->server()->isIPv6();
}
diff --git a/src/kvirc/ui/kvi_frame.cpp b/src/kvirc/ui/kvi_frame.cpp
index a2be5b98a..aa4a428b9 100644
--- a/src/kvirc/ui/kvi_frame.cpp
+++ b/src/kvirc/ui/kvi_frame.cpp
@@ -614,7 +614,7 @@ KviConsole * KviFrame::firstConsole()
{
if(wnd->type() == KVI_WINDOW_TYPE_CONSOLE)return (KviConsole *)wnd;
}
- __range_valid(false);
+ KVI_ASSERT(false);
return 0; //should newer be here!.. but sometimes we are ?
}
diff --git a/src/kvirc/ui/kvi_input_editor.cpp b/src/kvirc/ui/kvi_input_editor.cpp
index dc2dd91c9..8b88f9bd2 100644
--- a/src/kvirc/ui/kvi_input_editor.cpp
+++ b/src/kvirc/ui/kvi_input_editor.cpp
@@ -1154,7 +1154,7 @@ void KviInputEditor::returnPressed(bool)
if(g_pColorWindow->isVisible())
g_pColorWindow->hide();
- __range_valid(KVI_INPUT_MAX_LOCAL_HISTORY_ENTRIES > 1); //ABSOLUTELY NEEDED, if not, pHist will be destroyed...
+ KVI_ASSERT(KVI_INPUT_MAX_LOCAL_HISTORY_ENTRIES > 1); //ABSOLUTELY NEEDED, if not, pHist will be destroyed...
if(m_pHistory->count() > KVI_INPUT_MAX_LOCAL_HISTORY_ENTRIES)m_pHistory->removeLast();
m_iCurHistoryIdx = -1;
@@ -2259,7 +2259,7 @@ void KviInputEditor::sendPlain()
m_pHistory->insert(0,new QString(szBuffer));
}
- __range_valid(KVI_INPUT_MAX_LOCAL_HISTORY_ENTRIES > 1); //ABSOLUTELY NEEDED, if not, pHist will be destroyed...
+ KVI_ASSERT(KVI_INPUT_MAX_LOCAL_HISTORY_ENTRIES > 1); //ABSOLUTELY NEEDED, if not, pHist will be destroyed...
if(m_pHistory->count() > KVI_INPUT_MAX_LOCAL_HISTORY_ENTRIES)m_pHistory->removeLast();
m_iCurHistoryIdx = -1;
diff --git a/src/kvirc/ui/kvi_ircview.cpp b/src/kvirc/ui/kvi_ircview.cpp
index 32852e43f..d90286789 100644
--- a/src/kvirc/ui/kvi_ircview.cpp
+++ b/src/kvirc/ui/kvi_ircview.cpp
@@ -697,7 +697,7 @@ void KviIrcView::appendLine(KviIrcViewLine *ptr,bool bRepaint)
if(m_pScrollBar->value() > 0)
{
m_iLastScrollBarValue--;
- __range_valid(m_iLastScrollBarValue >= 0);
+ KVI_ASSERT(m_iLastScrollBarValue >= 0);
m_pScrollBar->triggerAction(QAbstractSlider::SliderSingleStepSub);
} // else will stay in sync
m_bSkipScrollBarRepaint = false;
diff --git a/src/kvirc/ui/kvi_ircview_events.cpp b/src/kvirc/ui/kvi_ircview_events.cpp
index fdce5eabc..7a7f09786 100644
--- a/src/kvirc/ui/kvi_ircview_events.cpp
+++ b/src/kvirc/ui/kvi_ircview_events.cpp
@@ -1115,7 +1115,7 @@ bool KviIrcView::event(QEvent *e)
{
if(e->type() == QEvent::User)
{
- __range_valid(m_bPostedPaintEventPending);
+ KVI_ASSERT(m_bPostedPaintEventPending);
if(m_iUnprocessedPaintEventRequests)
repaint();
// else we just had a pointEvent that did the job
diff --git a/src/kvirc/ui/kvi_ircview_gettextline.cpp b/src/kvirc/ui/kvi_ircview_gettextline.cpp
index 042abe21f..577843843 100644
--- a/src/kvirc/ui/kvi_ircview_gettextline.cpp
+++ b/src/kvirc/ui/kvi_ircview_gettextline.cpp
@@ -1088,7 +1088,7 @@ void KviIrcView::appendText(int iMsgType,const kvi_wchar_t *data_ptr,int iFlags)
{
//appends a text string to the buffer list
//splits the lines
- __range_valid(data_ptr);
+ KVI_ASSERT(data_ptr);
m_pLastLinkUnderMouse = 0;
if(!KVI_OPTION_BOOL(KviOption_boolStripControlCodesInLogs))
diff --git a/src/kvirc/ui/kvi_mdichild.cpp b/src/kvirc/ui/kvi_mdichild.cpp
index 9b2bcb74f..a2e987375 100644
--- a/src/kvirc/ui/kvi_mdichild.cpp
+++ b/src/kvirc/ui/kvi_mdichild.cpp
@@ -227,8 +227,8 @@ void KviMdiChild::moveEvent(QMoveEvent *e)
void KviMdiChild::setClient(QWidget * w)
{
- __range_valid(m_pClient==0);
- __range_valid(w!=0);
+ KVI_ASSERT(m_pClient==0);
+ KVI_ASSERT(w!=0);
m_pClient = w;
setWidget(w);
@@ -246,7 +246,7 @@ void KviMdiChild::setClient(QWidget * w)
void KviMdiChild::unsetClient()
{
- __range_valid(m_pClient!=0);
+ KVI_ASSERT(m_pClient!=0);
if(!m_pClient)return;
setWidget(0);
m_pClient = 0;
diff --git a/src/kvirc/ui/kvi_userlistview.cpp b/src/kvirc/ui/kvi_userlistview.cpp
index 285ef9b55..69fd93064 100644
--- a/src/kvirc/ui/kvi_userlistview.cpp
+++ b/src/kvirc/ui/kvi_userlistview.cpp
@@ -1255,7 +1255,7 @@ bool KviUserListView::nickChange(const QString & szOldNick, const QString & szNe
KviIrcUserEntry::Gender gender = pEntry->m_pGlobalData->gender();
bool bBot = pEntry->m_pGlobalData->isBot();
part(szOldNick);
- __range_invalid(m_pEntryDict->find(szOldNick));
+ KVI_ASSERT(!m_pEntryDict->find(szOldNick));
pEntry = join(szNewNick,szUser,szHost,iFlags);
pEntry->m_pGlobalData->setGender(gender);
diff --git a/src/kvirc/ui/kvi_windowlist.cpp b/src/kvirc/ui/kvi_windowlist.cpp
index 2f91bc768..75a480a3f 100644
--- a/src/kvirc/ui/kvi_windowlist.cpp
+++ b/src/kvirc/ui/kvi_windowlist.cpp
@@ -567,7 +567,7 @@ void KviClassicWindowList::insertButton(KviWindowListButton * b)
if(!(btn->kviWindow()->console()) && b->kviWindow()->console())
{
// this must be a new console...insert before the contextless windows
- __range_valid(b->kviWindow()->console() == b->kviWindow());
+ KVI_ASSERT(b->kviWindow()->console() == b->kviWindow());
m_pButtonList->insert(idx,b);
return;
} else idx++; // wrong irc contet...go on searching
diff --git a/src/modules/channelsjoin/channelsjoinwindow.cpp b/src/modules/channelsjoin/channelsjoinwindow.cpp
index cc1317513..1dee30d49 100644
--- a/src/modules/channelsjoin/channelsjoinwindow.cpp
+++ b/src/modules/channelsjoin/channelsjoinwindow.cpp
@@ -33,9 +33,9 @@
#include "kvi_console.h"
#include "kvi_regchan.h"
#include "kvi_kvs_script.h"
-#include <QTreeWidget>
#include "kvi_tal_groupbox.h"
+#include <QTreeWidget>
#include <QLabel>
#include <QLineEdit>
#include <QLayout>
@@ -168,14 +168,13 @@ void KviChannelsJoinWindow::fillListView()
par->setText(0,__tr2qs("Registered Channels"));
par->setExpanded(true);
- KviPointerHashTable<const char *,KviRegisteredChannelList> * d = g_pRegisteredChannelDataBase->channelDict();
+ QHash<QString,KviRegisteredChannelList *> * d = g_pRegisteredChannelDataBase->channelDict();
if(d)
{
- KviPointerHashTableIterator<const char *,KviRegisteredChannelList> it(*d);
- while(it.current())
+ for(QHash<QString,KviRegisteredChannelList *>::Iterator it = d->begin();it != d->end();++it)
{
QTreeWidgetItem * chld = new QTreeWidgetItem(par);
- chld->setText(0,it.currentKey());
+ chld->setText(0,it.key());
chld->setIcon(0,*(g_pIconManager->getSmallIcon(KVI_SMALLICON_CHANNEL)));
++it;
}
diff --git a/src/modules/dcc/chat.cpp b/src/modules/dcc/chat.cpp
index 02e897a04..1ed7cd0d8 100644
--- a/src/modules/dcc/chat.cpp
+++ b/src/modules/dcc/chat.cpp
@@ -31,8 +31,6 @@
#include "dialogs.h"
#endif
-#define _KVI_DEBUG_CHECK_RANGE_
-
#include "kvi_debug.h"
#include "kvi_options.h"
#include "kvi_input.h"
@@ -684,7 +682,7 @@ void KviDccChatThread::run()
if(!handleInvalidSocketRead(readLen))
{
if(data.iLen)handleIncomingData(&data,true); // critical
- __range_invalid(data.iLen);
+ KVI_ASSERT(!data.iLen);
break; // error
}
}
@@ -712,8 +710,8 @@ out_of_the_loop:
bool KviDccChatThread::handleIncomingData(KviDccThreadIncomingData * data,bool bCritical)
{
- __range_valid(data->iLen);
- __range_valid(data->buffer);
+ KVI_ASSERT(data->iLen);
+ KVI_ASSERT(data->buffer);
char * aux = data->buffer;
char * end = data->buffer + data->iLen;
while(aux != end)
@@ -733,7 +731,7 @@ bool KviDccChatThread::handleIncomingData(KviDccThreadIncomingData * data,bool b
// so len += 1; --> new data->iLen -= len;
data->iLen -= (len + 1);
// debug("iLen now = %d",data->iLen);
- __range_valid(data->iLen >= 0);
+ KVI_ASSERT(data->iLen >= 0);
if(data->iLen > 0)
{
// memmove the remaining part to the beginning
@@ -744,7 +742,7 @@ bool KviDccChatThread::handleIncomingData(KviDccThreadIncomingData * data,bool b
aux = data->buffer;
} else {
// no more data in the buffer
- __range_valid(data->iLen == 0);
+ KVI_ASSERT(data->iLen == 0);
kvi_free(data->buffer);
data->buffer = end = aux = 0;
}
diff --git a/src/modules/dcc/libkvidcc.cpp b/src/modules/dcc/libkvidcc.cpp
index 5f252728c..9520c48dc 100644
--- a/src/modules/dcc/libkvidcc.cpp
+++ b/src/modules/dcc/libkvidcc.cpp
@@ -94,7 +94,7 @@ static bool dcc_kvs_parse_default_parameters(KviDccDescriptor * d,KviKvsModuleCo
} else d->setConsole(c->window()->frame()->firstConsole());
}
- __range_valid(d->console());
+ KVI_ASSERT(d->console());
if(!d->console()->isConnected())
{
@@ -1284,7 +1284,7 @@ static bool dcc_module_cmd_canvas(KviModule *m,KviCommand *c)
else d->console() = c->window()->frame()->firstConsole();
}
- __range_valid(d->console());
+ KVI_ASSERT(d->console());
if(!d->console()->isConnected())
{
diff --git a/src/modules/dcc/thread.cpp b/src/modules/dcc/thread.cpp
index bee9d374c..d89f8422e 100644
--- a/src/modules/dcc/thread.cpp
+++ b/src/modules/dcc/thread.cpp
@@ -22,8 +22,6 @@
//
//=============================================================================
-#define _KVI_DEBUG_CHECK_RANGE_
-
#include "thread.h"
#include "kvi_debug.h"
@@ -57,7 +55,7 @@ KviDccThread::~KviDccThread()
m_pSSL = 0;
#endif
if(m_fd != KVI_INVALID_SOCKET)kvi_socket_close(m_fd);
- __range_invalid(m_pMutex->locked());
+ KVI_ASSERT(!m_pMutex->locked());
delete m_pMutex;
}
@@ -71,7 +69,7 @@ void KviDccThread::setSSL(KviSSL * s)
bool KviDccThread::handleInvalidSocketRead(int readLen)
{
- __range_valid(readLen < 1);
+ KVI_ASSERT(readLen < 1);
if(readLen == 0)
{
// connection closed
diff --git a/src/modules/dcc/video.cpp b/src/modules/dcc/video.cpp
index e2232ee18..7d6bd6833 100644
--- a/src/modules/dcc/video.cpp
+++ b/src/modules/dcc/video.cpp
@@ -241,8 +241,8 @@ bool KviDccVideoThread::textStep()
bool KviDccVideoThread::handleIncomingData(KviDccThreadIncomingData * data,bool bCritical)
{
// qDebug("KviDccVideoThread::handleIncomingData");
- __range_valid(data->iLen);
- __range_valid(data->buffer);
+ KVI_ASSERT(data->iLen);
+ KVI_ASSERT(data->buffer);
char * aux = data->buffer;
char * end = data->buffer + data->iLen;
while(aux != end)
@@ -262,7 +262,7 @@ bool KviDccVideoThread::handleIncomingData(KviDccThreadIncomingData * data,bool
// so len += 1; --> new data->iLen -= len;
data->iLen -= (len + 1);
// debug("iLen now = %d",data->iLen);
- __range_valid(data->iLen >= 0);
+ KVI_ASSERT(data->iLen >= 0);
if(data->iLen > 0)
{
// memmove the remaining part to the beginning
@@ -273,7 +273,7 @@ bool KviDccVideoThread::handleIncomingData(KviDccThreadIncomingData * data,bool
aux = data->buffer;
} else {
// no more data in the buffer
- __range_valid(data->iLen == 0);
+ KVI_ASSERT(data->iLen == 0);
kvi_free(data->buffer);
data->buffer = end = aux = 0;
}
diff --git a/src/modules/eventeditor/eventeditor.cpp b/src/modules/eventeditor/eventeditor.cpp
index 472f974ab..605e844e4 100644
--- a/src/modules/eventeditor/eventeditor.cpp
+++ b/src/modules/eventeditor/eventeditor.cpp
@@ -183,7 +183,7 @@ void KviEventEditorTreeWidget::mousePressEvent (QMouseEvent *e)
void KviEventEditor::itemPressed(QTreeWidgetItem *it,const QPoint &pnt)
{
- __range_valid(m_bOneTimeSetupDone);
+ KVI_ASSERT(m_bOneTimeSetupDone);
if(it)
{
@@ -221,7 +221,7 @@ void KviEventEditor::itemPressed(QTreeWidgetItem *it,const QPoint &pnt)
void KviEventEditor::getUniqueHandlerName(KviEventTreeWidgetItem *it,QString &buffer)
{
- __range_valid(m_bOneTimeSetupDone);
+ KVI_ASSERT(m_bOneTimeSetupDone);
QString newName = buffer;
if(newName.isEmpty())newName = __tr2qs_ctx("unnamed","editor");
@@ -251,7 +251,7 @@ void KviEventEditor::getUniqueHandlerName(KviEventTreeWidgetItem *it,QString &bu
void KviEventEditor::addHandlerForCurrentEvent()
{
- __range_valid(m_pOneTimeSetupDone);
+ KVI_ASSERT(m_bOneTimeSetupDone);
if(!m_pTreeWidget->selectedItems().isEmpty())
{
@@ -273,7 +273,7 @@ void KviEventEditor::addHandlerForCurrentEvent()
void KviEventEditor::removeCurrentHandler()
{
- __range_valid(m_pOneTimeSetupDone);
+ KVI_ASSERT(m_bOneTimeSetupDone);
if(m_pLastEditedItem)
{
QTreeWidgetItem * it = m_pLastEditedItem;
@@ -294,7 +294,7 @@ void KviEventEditor::removeCurrentHandler()
void KviEventEditor::toggleCurrentHandlerEnabled()
{
- __range_valid(m_pOneTimeSetupDone);
+ KVI_ASSERT(m_bOneTimeSetupDone);
if(m_pLastEditedItem)
{
m_pLastEditedItem->setEnabled(!(m_pLastEditedItem->m_bEnabled));
@@ -340,7 +340,7 @@ void KviEventEditor::commit()
void KviEventEditor::saveLastEditedItem()
{
- __range_valid(m_bOneTimeSetupDone);
+ KVI_ASSERT(m_bOneTimeSetupDone);
if(!m_pLastEditedItem)return;
((KviEventHandlerTreeWidgetItem *)m_pLastEditedItem)->setCursorPosition(m_pEditor->getCursor());
QString buffer = m_pNameEditor->text();
@@ -360,7 +360,7 @@ void KviEventEditor::saveLastEditedItem()
void KviEventEditor::currentItemChanged(QTreeWidgetItem * it,QTreeWidgetItem *)
{
- __range_valid(m_bOneTimeSetupDone);
+ KVI_ASSERT(m_bOneTimeSetupDone);
saveLastEditedItem();
if(!it)
diff --git a/src/modules/links/linkswindow.cpp b/src/modules/links/linkswindow.cpp
index bb4c545d3..eaf40beda 100644
--- a/src/modules/links/linkswindow.cpp
+++ b/src/modules/links/linkswindow.cpp
@@ -312,7 +312,7 @@ void KviLinksWindow::endOfLinks()
QTreeWidgetItem * KviLinksWindow::insertLink(KviLink *l)
{
- __range_valid(l->hops > 0);
+ KVI_ASSERT(l->hops > 0);
QTreeWidgetItem * i = getItemByHost(l->parent.ptr(),0);
QTreeWidgetItem * it = 0;
if(!i)
diff --git a/src/modules/popupeditor/popupeditor.cpp b/src/modules/popupeditor/popupeditor.cpp
index 95be5f0fc..d6e33d62a 100644
--- a/src/modules/popupeditor/popupeditor.cpp
+++ b/src/modules/popupeditor/popupeditor.cpp
@@ -1069,7 +1069,7 @@ void KviPopupEditor::oneTimeSetup()
void KviPopupEditor::customContextMenuRequested(const QPoint &pos)
{
QTreeWidgetItem *it=m_pTreeWidget->itemAt(pos);
- __range_valid(m_bOneTimeSetupDone);
+ KVI_ASSERT(m_bOneTimeSetupDone);
if(it)
{
@@ -1266,7 +1266,7 @@ void KviPopupEditor::commit()
void KviPopupEditor::getUniquePopupName(KviMenuTreeWidgetItem *item,QString &buffer)
{
- __range_valid(m_bOneTimeSetupDone);
+ KVI_ASSERT(m_bOneTimeSetupDone);
if(buffer.isEmpty())buffer = __tr2qs_ctx("unnamed","editor");
QString newName = buffer;
diff --git a/src/modules/raweditor/raweditor.cpp b/src/modules/raweditor/raweditor.cpp
index 005fa9989..c6e842e19 100644
--- a/src/modules/raweditor/raweditor.cpp
+++ b/src/modules/raweditor/raweditor.cpp
@@ -144,7 +144,7 @@ void KviRawEditor::customContextMenuRequested(const QPoint &pos)
{
QTreeWidgetItem *it;
it=(QTreeWidgetItem *)m_pTreeWidget->itemAt(pos);
- __range_valid(m_bOneTimeSetupDone);
+ KVI_ASSERT(m_bOneTimeSetupDone);
m_pContextPopup->clear();
if(it)
{
@@ -185,7 +185,7 @@ void KviRawEditor::customContextMenuRequested(const QPoint &pos)
void KviRawEditor::getUniqueHandlerName(KviRawTreeWidgetItem *it,QString &buffer)
{
- __range_valid(m_bOneTimeSetupDone);
+ KVI_ASSERT(m_bOneTimeSetupDone);
QString newName = buffer;
if(newName.isEmpty())newName = __tr2qs_ctx("unnamed","editor");
@@ -247,7 +247,7 @@ add_handler:
void KviRawEditor::addHandlerForCurrentRaw()
{
- __range_valid(m_pOneTimeSetupDone);
+ KVI_ASSERT(m_bOneTimeSetupDone);
KviRawTreeWidgetItem * it = (KviRawTreeWidgetItem *) m_pTreeWidget->currentItem();
if(it)
@@ -268,7 +268,7 @@ void KviRawEditor::addHandlerForCurrentRaw()
void KviRawEditor::removeCurrentHandler()
{
- __range_valid(m_pOneTimeSetupDone);
+ KVI_ASSERT(m_bOneTimeSetupDone);
if(m_pLastEditedItem)
{
QTreeWidgetItem * it = m_pLastEditedItem;
@@ -283,7 +283,7 @@ void KviRawEditor::removeCurrentHandler()
void KviRawEditor::toggleCurrentHandlerEnabled()
{
- __range_valid(m_pOneTimeSetupDone);
+ KVI_ASSERT(m_bOneTimeSetupDone);
if(m_pLastEditedItem)
{
m_pLastEditedItem->m_bEnabled = !(m_pLastEditedItem->m_bEnabled);
@@ -329,7 +329,7 @@ void KviRawEditor::commit()
void KviRawEditor::saveLastEditedItem()
{
- __range_valid(m_bOneTimeSetupDone);
+ KVI_ASSERT(m_bOneTimeSetupDone);
if(!m_pLastEditedItem)return;
QString buffer = m_pNameEditor->text();
@@ -349,7 +349,7 @@ void KviRawEditor::saveLastEditedItem()
void KviRawEditor::currentItemChanged(QTreeWidgetItem * it,QTreeWidgetItem *)
{
- __range_valid(m_bOneTimeSetupDone);
+ KVI_ASSERT(m_bOneTimeSetupDone);
saveLastEditedItem();
if(it->parent())
{
diff --git a/src/modules/regchan/libkviregchan.cpp b/src/modules/regchan/libkviregchan.cpp
index 44e0989c8..d4adea0b8 100644
--- a/src/modules/regchan/libkviregchan.cpp
+++ b/src/modules/regchan/libkviregchan.cpp
@@ -29,7 +29,7 @@
#include "kvi_out.h"
#include "kvi_mirccntrl.h"
#include "kvi_window.h"
-
+#include "kvi_debug.h"
// kvi_app.cpp
extern KVIRC_API KviRegisteredChannelDataBase * g_pRegisteredChannelDataBase;
@@ -71,7 +71,8 @@ static bool regchan_kvs_cmd_add(KviKvsModuleCommandCall * c)
KVSM_PARAMETER("channel name",KVS_PT_NONEMPTYSTRING,0,szChan)
KVSM_PARAMETER("netmask",KVS_PT_STRING,KVS_PF_OPTIONAL,szNetmask)
KVSM_PARAMETERS_END(c)
- if(szNetmask.isEmpty())szNetmask="*";
+ if(szNetmask.isEmpty())
+ szNetmask="*";
g_pRegisteredChannelDataBase->add(new KviRegisteredChannel(szChan,szNetmask));
return true;
}
@@ -111,13 +112,16 @@ static bool regchan_kvs_cmd_remove(KviKvsModuleCommandCall * c)
KVSM_PARAMETER("network",KVS_PT_NONEMPTYSTRING,0,szNetwork)
KVSM_PARAMETERS_END(c)
KviRegisteredChannel * ch;
- if(c->hasSwitch('e',"exactly"))ch = g_pRegisteredChannelDataBase->findExact(szChan.toUtf8().data(),szNetwork.toUtf8().data());
- else ch = g_pRegisteredChannelDataBase->find(szChan.toUtf8().data(),szNetwork.toUtf8().data());
+ if(c->hasSwitch('e',"exactly"))
+ ch = g_pRegisteredChannelDataBase->findExact(szChan,szNetwork);
+ else
+ ch = g_pRegisteredChannelDataBase->find(szChan,szNetwork);
if(ch)
{
g_pRegisteredChannelDataBase->remove(ch);
} else {
- if(!c->hasSwitch('q',"quiet"))c->warning(__tr2qs_ctx("No such channel/netmask entry in the database","register"));
+ if(!c->hasSwitch('q',"quiet"))
+ c->warning(__tr2qs_ctx("No such channel/netmask entry in the database","register"));
}
return true;
}
@@ -163,18 +167,21 @@ static bool regchan_kvs_cmd_setProperty(KviKvsModuleCommandCall * c)
KVSM_PARAMETER("value",KVS_PT_STRING,0,szValue)
KVSM_PARAMETERS_END(c)
KviRegisteredChannel * ch;
- if(c->hasSwitch('e',"exactly"))ch = g_pRegisteredChannelDataBase->findExact(szChan.toUtf8().data(),szNetwork.toUtf8().data());
- else ch = g_pRegisteredChannelDataBase->find(szChan.toUtf8().data(),szNetwork.toUtf8().data());
+ if(c->hasSwitch('e',"exactly"))
+ ch = g_pRegisteredChannelDataBase->findExact(szChan,szNetwork);
+ else
+ ch = g_pRegisteredChannelDataBase->find(szChan,szNetwork);
if(ch)
{
if(!szValue.isEmpty())
{
- ch->setProperty(szProperty.toUtf8().data(),new KviStr(szValue));
+ ch->setProperty(szProperty,szValue);
} else {
- ch->removeProperty(szProperty.toUtf8().data());
+ ch->removeProperty(szProperty);
}
} else {
- if(!c->hasSwitch('q',"quiet")) c->warning(__tr2qs_ctx("No such channel/netmask entry in the database","register"));
+ if(!c->hasSwitch('q',"quiet"))
+ c->warning(__tr2qs_ctx("No such channel/netmask entry in the database","register"));
}
return true;
}
@@ -198,19 +205,31 @@ static bool regchan_kvs_cmd_showlist(KviKvsModuleCommandCall * c)
int tot = 0;
- KviPointerHashTableIterator<const char *,KviRegisteredChannelList> it(*(g_pRegisteredChannelDataBase->channelDict()));
- while(KviRegisteredChannelList * l = it.current())
+ QHash<QString,KviRegisteredChannelList *>::Iterator it;
+ for(it = g_pRegisteredChannelDataBase->channelDict()->begin();it != g_pRegisteredChannelDataBase->channelDict()->end();++it)
{
+ KviRegisteredChannelList * l = it.value();
+ KVI_ASSERT(l);
+
for(KviRegisteredChannel * ch = l->first();ch;ch = l->next())
{
tot++;
- c->window()->output(KVI_OUT_SYSTEMMESSAGE,__tr2qs_ctx("Channel: %c%s@%s","register"),
- KVI_TEXT_BOLD,ch->name().ptr(),ch->netMask().ptr());
- KviPointerHashTableIterator<const char *,KviStr> pit(*(ch->propertyDict()));
- while(KviStr * s = pit.current())
+ c->window()->outputNoFmt(
+ KVI_OUT_SYSTEMMESSAGE,
+ __tr2qs_ctx("Channel: %1%2@%3","register")
+ .arg(QChar(KVI_TEXT_BOLD))
+ .arg(ch->name())
+ .arg(ch->netMask())
+ );
+
+ for(QHash<QString,QString>::Iterator it2 = ch->propertyDict()->begin();it2 != ch->propertyDict()->end();++it2)
{
- c->window()->output(KVI_OUT_SYSTEMMESSAGE,__tr2qs_ctx(" Property: %s=%s","register"),pit.currentKey(),s->ptr());
- ++pit;
+ c->window()->outputNoFmt(
+ KVI_OUT_SYSTEMMESSAGE,
+ __tr2qs_ctx(" Property: %1=%2","register")
+ .arg(it2.key())
+ .arg(it2.value())
+ );
}
}
++it;
@@ -250,32 +269,29 @@ static bool regchan_kvs_fnc_list(KviKvsModuleFunctionCall * c)
KVSM_PARAMETERS_END(c)
KviKvsArray* pArray = new KviKvsArray();
-// KviKvsArray* pArrayCN = new KviKvsArray();
-// pArrayCN->set(0,new KviKvsVariant(QString("")));
-// pArrayCN->set(1,new KviKvsVariant(QString("")));
+
int aid=0;
- if(szChan.isEmpty())szChan="*";
- if(szNetmask.isEmpty())szNetmask="*";
+ if(szChan.isEmpty())
+ szChan="*";
+ if(szNetmask.isEmpty())
+ szNetmask="*";
- KviPointerHashTable<const char *,KviRegisteredChannelList> * d = g_pRegisteredChannelDataBase->channelDict();
- KviPointerHashTableIterator<const char *,KviRegisteredChannelList> it(*d);
- while(KviRegisteredChannelList * l = it.current())
+ QHash<QString,KviRegisteredChannelList *>::Iterator it;
+ for(it = g_pRegisteredChannelDataBase->channelDict()->begin();it != g_pRegisteredChannelDataBase->channelDict()->end();++it)
{
+ KviRegisteredChannelList * l = it.value();
+ KVI_ASSERT(l);
+
for(KviRegisteredChannel * ch = l->first();ch;ch = l->next())
- if(KviQString::matchWildExpressions(ch->name().ptr(),szChan) &&
- KviQString::matchWildExpressions(ch->netMask().ptr(),szNetmask))
{
-// FIXME: WE NEED TO RETURN AN ARRAY OF 2-ELEMENT ARRAYS (chan name, netmask)
- pArray->set(aid,new KviKvsVariant(QString(ch->name()+"@"+ch->netMask())));
-// pArray->set(aid,new KviKvsVariant(QString(ch->name()));
-// pArrayCN->set(0,new KviKvsVariant(QString(ch->name())));
-// pArrayCN->set(1,new KviKvsVariant(QString(ch->netMask())));
-// pArray->set(aid,new KviKvsVariant(pArrayCN));
- aid++;
+ if(KviQString::matchWildExpressions(ch->name(),szChan) && KviQString::matchWildExpressions(ch->netMask(),szNetmask))
+ {
+ pArray->set(aid,new KviKvsVariant(QString::fromUtf8("%1@%2").arg(ch->name(),ch->netMask())));
+ aid++;
+ }
}
- ++it;
}
c->returnValue()->setArray(pArray);
return true;
@@ -310,12 +326,13 @@ static bool regchan_kvs_fnc_property(KviKvsModuleFunctionCall * c)
KVSM_PARAMETER("network",KVS_PT_STRING,0,szNetwork)
KVSM_PARAMETER("property name",KVS_PT_NONEMPTYSTRING,0,szPropertyName)
KVSM_PARAMETERS_END(c)
- KviRegisteredChannel * ch = g_pRegisteredChannelDataBase->find(szChan.toUtf8().data(),szNetwork.toUtf8().data());
+ KviRegisteredChannel * ch = g_pRegisteredChannelDataBase->find(szChan,szNetwork);
if(ch)
{
- KviStr * p = ch->property(szPropertyName.toUtf8().data());
- if(p)c->returnValue()->setString(p->ptr());
- } //else c->warning(__tr("User %s not found"),parms->safeFirstParam());
+ QString szProp = ch->property(szPropertyName);
+ if(!szProp.isEmpty())
+ c->returnValue()->setString(szProp);
+ }
return true;
}
/*
@@ -348,7 +365,7 @@ static bool regchan_kvs_fnc_match(KviKvsModuleFunctionCall * c)
KVSM_PARAMETER("channel name",KVS_PT_STRING,0,szChan)
KVSM_PARAMETER("network",KVS_PT_STRING,0,szNetwork)
KVSM_PARAMETERS_END(c)
- KviRegisteredChannel * ch = g_pRegisteredChannelDataBase->find(szChan.toUtf8().data(),szNetwork.toUtf8().data());
+ KviRegisteredChannel * ch = g_pRegisteredChannelDataBase->find(szChan,szNetwork);
c->returnValue()->setBoolean(ch);
return true;
}
@@ -384,7 +401,7 @@ static bool regchan_kvs_fnc_find(KviKvsModuleFunctionCall * c)
KVSM_PARAMETER("channel name",KVS_PT_STRING,0,szChan)
KVSM_PARAMETER("netmask",KVS_PT_STRING,0,szNetmask)
KVSM_PARAMETERS_END(c)
- KviRegisteredChannel * ch = g_pRegisteredChannelDataBase->find(szChan.toUtf8().data(),szNetmask.toUtf8().data());
+ KviRegisteredChannel * ch = g_pRegisteredChannelDataBase->find(szChan,szNetmask);
c->returnValue()->setBoolean(ch);
return true;
}
diff --git a/src/modules/spaste/libkvispaste.cpp b/src/modules/spaste/libkvispaste.cpp
index 81b1a7b2e..5049167b6 100644
--- a/src/modules/spaste/libkvispaste.cpp
+++ b/src/modules/spaste/libkvispaste.cpp
@@ -206,34 +206,35 @@ static bool spaste_kvs_cmd_stop(KviKvsModuleCommandCall * c)
{
while(g_pControllerList->first()) delete g_pControllerList->first();
return true;
- } else {
- KviPointerListIterator<SPasteController> it(*g_pControllerList);
- SPasteController *item;
+ }
- if(!iId) //Delete all spaste's from the current window
+ KviPointerListIterator<SPasteController> it(*g_pControllerList);
+ SPasteController *item;
+
+ if(!iId) //Delete all spaste's from the current window
+ {
+ if((c->window()->type() != KVI_WINDOW_TYPE_CHANNEL) && (c->window()->type() != KVI_WINDOW_TYPE_QUERY) && (c->window()->type() != KVI_WINDOW_TYPE_DCCCHAT))
{
- if((c->window()->type() != KVI_WINDOW_TYPE_CHANNEL) && (c->window()->type() != KVI_WINDOW_TYPE_QUERY) && (c->window()->type() != KVI_WINDOW_TYPE_DCCCHAT))
- {
- QString szWinId = c->window()->id();
- c->warning(__tr2qs("The specified window (%Q) is not a channel/query/dcc"),&szWinId);
- return false;
- } else {
- while( (item = it.current()) != 0)
- {
- ++it;
- if(KviQString::equalCS(item->window()->id(),c->window()->id()))delete item;
- }
- }
+ QString szWinId = c->window()->id();
+ c->warning(__tr2qs("The specified window (%Q) is not a channel/query/dcc"),&szWinId);
+ return false;
} else {
- //Delete the spaste with the given id
while( (item = it.current()) != 0)
{
++it;
- if(item->getId() == iId)delete item;
+ if(KviQString::equalCS(item->window()->id(),c->window()->id()))delete item;
}
}
- return true;
+ } else {
+ //Delete the spaste with the given id
+ while( (item = it.current()) != 0)
+ {
+ ++it;
+ if(item->getId() == (kvs_int_t)iId)
+ delete item;
+ }
}
+ return true;
}
/*