diff options
-rw-r--r-- | include/hashcomp.h | 11 | ||||
-rw-r--r-- | src/hashcomp.cpp | 9 |
2 files changed, 14 insertions, 6 deletions
diff --git a/include/hashcomp.h b/include/hashcomp.h index b4652642b..32d155e30 100644 --- a/include/hashcomp.h +++ b/include/hashcomp.h @@ -19,6 +19,17 @@ #include "inspircd_config.h" +/** + * This file contains classes and templates that deal + * with the comparison and hashing of 'irc strings'. + * An 'irc string' is a string which compares in a + * case insensitive manner, and as per RFC 1459 will + * treat [ identical to {, ] identical to }, and \ + * as identical to |. Our hashing functions are designed + * to accept std::string and compare/hash them in an irc + * type way, irc::string is a seperate class type currently. + */ + #ifdef GCC3 #include <ext/hash_map> #else diff --git a/src/hashcomp.cpp b/src/hashcomp.cpp index ca7394baa..96811715d 100644 --- a/src/hashcomp.cpp +++ b/src/hashcomp.cpp @@ -82,12 +82,9 @@ size_t nspace::hash<string>::operator()(const string &s) const bool irc::StrHashComp::operator()(const std::string& s1, const std::string& s2) const { - char a[MAXBUF],b[MAXBUF]; - strlcpy(a,s1.c_str(),MAXBUF); - strlcpy(b,s2.c_str(),MAXBUF); - strlower(a); - strlower(b); - return (strcasecmp(a,b) == 0); + irc::string a = s1.c_str(); + irc::string b = s2.c_str(); + return (a == b); } bool irc::InAddr_HashComp::operator()(const in_addr &s1, const in_addr &s2) const |