NOTE: For now, everything MUST be . terminated, otherwise it is an error
*/
-inline char dns2_tolower(char c)
+inline unsigned char dns2_tolower(unsigned char c)
{
if(c>='A' && c<='Z')
return c+('a'-'A');
{
return std::lexicographical_compare(d_storage.rbegin(), d_storage.rend(),
rhs.d_storage.rbegin(), rhs.d_storage.rend(),
- [](const char& a, const char& b) {
+ [](const unsigned char& a, const unsigned char& b) {
return dns2_tolower(a) < dns2_tolower(b);
}); // note that this is case insensitive, including on the label lengths
}
d_storage.c_str() + ourpos[ourcount] + 1 + *(d_storage.c_str() + ourpos[ourcount]),
rhs.d_storage.c_str() + rhspos[rhscount] + 1,
rhs.d_storage.c_str() + rhspos[rhscount] + 1 + *(rhs.d_storage.c_str() + rhspos[rhscount]),
- [](const char& a, const char& b) {
+ [](const unsigned char& a, const unsigned char& b) {
return dns2_tolower(a) < dns2_tolower(b);
});
rhs.d_storage.c_str() + rhspos[rhscount] + 1 + *(rhs.d_storage.c_str() + rhspos[rhscount]),
d_storage.c_str() + ourpos[ourcount] + 1,
d_storage.c_str() + ourpos[ourcount] + 1 + *(d_storage.c_str() + ourpos[ourcount]),
- [](const char& a, const char& b) {
+ [](const unsigned char& a, const unsigned char& b) {
return dns2_tolower(a) < dns2_tolower(b);
});
// cout<<"Reverse: "<<res<<endl;
return c==' ' || c=='\t' || c=='\r' || c=='\n';
}
-inline char dns_tolower(char c)
+inline unsigned char dns_tolower(unsigned char c)
{
if(c>='A' && c<='Z')
c+='a'-'A';
return c;
}
-inline char dns_toupper(char c)
+inline unsigned char dns_toupper(unsigned char c)
{
if(c>='a' && c<='z')
c+='A'-'a';
string reply(upper);
if(!upper.empty()) {
unsigned int i, limit= ( unsigned int ) reply.length();
- char c;
+ unsigned char c;
for(i = 0; i < limit ; i++) {
c = dns_tolower(upper[i]);
if(c != upper[i])
vector<DNSName> vec;
for(const std::string& a : {"bert.com.", "alpha.nl.", "articles.xxx.",
"Aleph1.powerdns.com.", "ZOMG.powerdns.com.", "aaa.XXX.", "yyy.XXX.",
- "test.powerdns.com."}) {
+ "test.powerdns.com.", "\\128.com"}) {
vec.push_back(DNSName(a));
}
sort(vec.begin(), vec.end(), CanonDNSNameCompare());
for(const auto& a: {"bert.com.", "Aleph1.powerdns.com.",
"test.powerdns.com.",
"ZOMG.powerdns.com.",
+ "\\128.com.",
"alpha.nl.",
"aaa.XXX.",
"articles.xxx.",