-" source /home/miekg/.vim/syntax/ldns.vim
" Vim syntax file
" Language: C libdns
" Maintainer: miekg
syn keyword ldnsType ldns_header_type
syn keyword ldnsType ldns_packet_type
syn keyword ldnsType t_rrset
+syn keyword ldnsType true
+syn keyword ldnsType false
+
+" ldns/rr.h
syn keyword ldnsConstant TYPE_A
syn keyword ldnsConstant TYPE_NS
syn keyword ldnsConstant TYPE_MD
syn keyword ldnsConstant MAXLABELLEN
syn keyword ldnsConstant MAXDOMAINLEN
+
+syn keyword ldnsMacro QHEADERSZ
+syn keyword ldnsMacro RD_MASK
+syn keyword ldnsMacro RD_SHIFT
+syn keyword ldnsMacro RD
+syn keyword ldnsMacro RD_SET
+syn keyword ldnsMacro RD_CLR
+syn keyword ldnsMacro TC_MASK
+syn keyword ldnsMacro TC_SHIFT
+syn keyword ldnsMacro TC
+syn keyword ldnsMacro TC_SET
+syn keyword ldnsMacro TC_CLR
+syn keyword ldnsMacro AA_MASK
+syn keyword ldnsMacro AA_SHIFT
+syn keyword ldnsMacro AA
+syn keyword ldnsMacro AA_SET
+syn keyword ldnsMacro AA_CLR
+syn keyword ldnsMacro OPCODE_MASK
+syn keyword ldnsMacro OPCODE_SHIFT
+syn keyword ldnsMacro OPCODE
+syn keyword ldnsMacro OPCODE_SET
+syn keyword ldnsMacro QR_MASK
+syn keyword ldnsMacro QR_SHIFT
+syn keyword ldnsMacro QR
+syn keyword ldnsMacro QR_SET
+syn keyword ldnsMacro QR_CLR
+syn keyword ldnsMacro RCODE_MASK
+syn keyword ldnsMacro RCODE_SHIFT
+syn keyword ldnsMacro RCODE
+syn keyword ldnsMacro RCODE_SET
+syn keyword ldnsMacro CD_MASK
+syn keyword ldnsMacro CD_SHIFT
+syn keyword ldnsMacro CD
+syn keyword ldnsMacro CD_SET
+syn keyword ldnsMacro CD_CLR
+syn keyword ldnsMacro AD_MASK
+syn keyword ldnsMacro AD_SHIFT
+syn keyword ldnsMacro AD
+syn keyword ldnsMacro AD_SET
+syn keyword ldnsMacro AD_CLR
+syn keyword ldnsMacro Z_MASK
+syn keyword ldnsMacro Z_SHIFT
+syn keyword ldnsMacro Z
+syn keyword ldnsMacro Z_SET
+syn keyword ldnsMacro Z_CLR
+syn keyword ldnsMacro RA_MASK
+syn keyword ldnsMacro RA_SHIFT
+syn keyword ldnsMacro RA
+syn keyword ldnsMacro RA_SET
+syn keyword ldnsMacro RA_CLR
+syn keyword ldnsMacro ID
+syn keyword ldnsMacro QDCOUNT_OFF
+syn keyword ldnsMacro QDCOUNT
+syn keyword ldnsMacro ANCOUNT_OFF
+syn keyword ldnsMacro ANCOUNT
+syn keyword ldnsMacro NSCOUNT_OFF
+syn keyword ldnsMacro NSCOUNT
+syn keyword ldnsMacro ARCOUNT_OFF
+syn keyword ldnsMacro ARCOUNT
+
" Default highlighting
command -nargs=+ HiLink hi def link <args>
HiLink ldnsType Type
#include <ldns/rdata.h>
#include "util.h"
+#include "error.h"
/* Access functions
* do this as functions to get type checking
/* empty */
}
+/**
+ * remove \DDD, \[space] and other escapes from the input
+ * See RFC 1035, section 5.1
+ * Return the lenght of the string or a negative error
+ * code
+ */
+ldns_t_status
+_ldns_octet(char *word)
+{
+ char *s; char *p;
+ unsigned int length = 0;
+
+ for (s = p = word; *s != '\0'; s++,p++) {
+ switch (*s) {
+ case '.':
+ if (s[1] == '.') {
+ fprintf(stderr,"Empty label");
+ return EEMPTY_LABEL;
+ }
+ *p = *s;
+ length++;
+ break;
+ case '\\':
+ if ('0' <= s[1] && s[1] <= '9' &&
+ '0' <= s[2] && s[2] <= '9' &&
+ '0' <= s[3] && s[3] <= '9')
+ {
+ /* \DDD seen */
+ int val = ((s[1] - '0') * 100 +
+ (s[2] - '0') * 10 + (s[3] - '0'));
+
+ if (0 <= val && val <= 255) {
+ /* this also handles \0 */
+ s += 3;
+ *p = val;
+ length++;
+ } else {
+ fprintf(stderr,"ASCII \\DDD overflow");
+ }
+ } else {
+ /* an espaced character, like \<space> ?
+ * remove the '\' keep the rest */
+ *p = *++s;
+ length++;
+ }
+ break;
+ case '\"':
+ /* non quoted " Is either first or the last character in
+ * the string */
+
+ *p = *++s; /* skip it */
+ length++;
+ /* I'm not sure if this is needed in libdns... MG */
+ if ( *s == '\0' ) {
+ /* ok, it was the last one */
+ *p = '\0'; return length;
+ }
+ break;
+ default:
+ *p = *s;
+ length++;
+ break;
+ }
+ }
+ *p = '\0';
+ return length;
+}