#include "dnswriter.hh"
#include <boost/lexical_cast.hpp>
#include <boost/algorithm/string.hpp>
+#include <boost/format.hpp>
#include "namespaces.hh"
static string txtEscape(const string &name)
{
string ret;
+ char ebuf[5];
- for(string::const_iterator i=name.begin();i!=name.end();++i)
+ for(string::const_iterator i=name.begin();i!=name.end();++i) {
if(*i=='\n') { // XXX FIXME this should do a way better job!
ret += "\\010";
}
+ else if((unsigned char) *i > 127) {
+ snprintf(ebuf, sizeof(ebuf), "\\%03u", (unsigned char)*i);
+ ret += ebuf;
+ }
else if(*i=='"' || *i=='\\'){
ret += '\\';
ret += *i;
}
else
ret += *i;
+ }
return ret;
}
--- /dev/null
+#!/bin/sh
+cleandig aland.test.com TXT
+
--- /dev/null
+TXT record with 8-bit (UTF-8) content.
--- /dev/null
+0 aland.test.com. IN TXT 3600 "\195\133LAND ISLANDS"
+Rcode: 0, RD: 0, QR: 1, TC: 0, AA: 1, opcode: 0
+Reply to question for qname='aland.test.com.', qtype=TXT
*.test.test.com. 86400 IN NSEC sub.test.test.com. CNAME RRSIG NSEC
_double._tcp.dc.test.com. 86400 IN NSEC _ldap._tcp.dc.test.com. SRV RRSIG NSEC
_ldap._tcp.dc.test.com. 86400 IN NSEC enum.test.com. SRV RRSIG NSEC
-_underscore.test.com. 86400 IN NSEC blah.test.com. TXT RRSIG NSEC
+_underscore.test.com. 86400 IN NSEC aland.test.com. TXT RRSIG NSEC
+aland.test.com. 86400 IN NSEC blah.test.com. TXT RRSIG NSEC
b.c.test.com. 86400 IN NSEC *.a.b.c.test.com. A RRSIG NSEC
blah.test.com. 86400 IN NSEC b.c.test.com. NS RRSIG NSEC
counter.test.com. 86400 IN NSEC _double._tcp.dc.test.com. A RRSIG NSEC
_underscore IN TXT "underscores are terrible"
b.c IN A 5.6.7.8
*.a.b.c IN A 8.7.6.5
+aland IN TXT "\195\133LAND ISLANDS"