diff options
Diffstat (limited to 'src')
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; } /* |
